전체 글(35)
-
[Python] When we use deque ?
deque는 무엇인가? "deque"는 파이썬의 collections 모듈에 있는 자료구조 중 하나이다. "deque"는 "double-ended queue"의 약자로, 큐(queue)의 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료구조이다. deque는 리스트(list)와 비슷하지만 몇 가지 측면에서 다른데, 주요 특징과 사용 사례는 다음과 같다: 양방향 삽입 및 삭제: "deque"는 양쪽 끝에서 원소의 삽입과 삭제가 빠르게 이루어진다. 이는 큐의 FIFO(First-In-First-Out)와 스택의 LIFO(Last-In-First-Out) 모두를 지원한다. 고정된 크기의 큐: "deque"는 최대 길이(maxlen) 매개변수를 사용하여 큐의 최대 크기를 제한할 수 있다. 큐가 가득 찬 경우에는 새로..
2024.02.18 -
[Python] Talking about DFS , backtracking algorithm
백트래킹(backtracking)이란? : 해를 찾는 도중 해가 아니어서 막히면, 되돌아가서 다시 해를 찾아가는 기법을 말합니다. 최적화 문제와 결정 문제를 푸는 방법이 됩니다. 😀 DFS와 백트래킹 깊이 우선 탐색(DFS) DFS는 가능한 모든 경로(후보)를 탐색한다. 따라서, 불필요할 것 같은 경로를 사전에 차단하거나 하는 등의 행동이 없으므로 경우의 수를 줄이지 못한다. 따라서 N! 가지의 경우의 수를 가진 문제는 DFS로 처리가 불가능하다. 백트래킹(Backtracking) 해를 찾아가는 도중, 지금의 경로가 해가 될 것 같지 않으면 그 경로를 더 이상 가지 않고 되돌아간다. 코딩에서는 반복문의 횟수까지 줄일 수 있으므로 효율적이다. 이것을 가지치기라고 하는데, 불필요한 부분을 쳐내고 최대한 올바..
2024.02.13 -
[Python] baekjoon 7785 : 회사에 있는 사람
How ? 기본적으로 집합 , 맵의 카테고리에 속하는 문제이기 때문에 map을 사용해서 문자열을 처리해야한다는 생각은 하고있었다. 첫번째로 sys를 사용하지않고 그냥 input()을 사용해서 시간초과가 난건가 싶었지만 그건 아니였고, 두번째로 list를 사용하여 append와 remove를 사용하여 사용자의 출근과 퇴근을 처리해주었다. 하지만 이는 시간초과로 이어지게 되었다. 이름을 탐색하고 추가/제거할 때 리스트 전체를 탐색하고 있기 때문이다. 리스트의 크기가 커질수록 이 작업은 선형 시간이 걸리므로 시간이 많이 소요될 수 있다. 그렇기 때문에 딕셔너리를 사용해주도록 하자. 또한 문제를 보면 정렬을 하라고 적혀있다. 딕셔너리의 key를 기준으로 정렬해줄 때는 다음과같은 형식을 사용하도록 하자 sorte..
2024.02.13 -
[Python] Stack and Queue
대표적인 자료구조로는 스택과 큐가 존재한다. 간단하게 말하자면 스택은 Last in , First out 이고 큐는 First in , First out 이라고 할 수 있다. 이를 간단하게 예를들어 설명해보자 스택 ( Stack ) 나중에 넣은 데이터를 먼저빼는 후입선출을 따른다. 예를들면 박스를 쌓는다거나 , 트럭에서 물건을 넣는 상황을 상상해보면 쉽다. 박스를 쌓을 때 박스를 차곡차곡 쌓다가, 뺄 때는 가장 최근에 넣은 것 부터 빼는 구조이다. 당연히 맨 아래것부터 빼는것은 불가능하겠지. 파이썬에서는 기본 리스트에서 append()를 사용하거나 pop() 매서드를 사용하여 구현한다. stack = [] stack.append(1) # stack: [1] stack.append(2) # stack: [..
2024.02.13 -
[Python] 당신이 파이썬 가상환경을 사용해야하는 이유
파이썬을 처음 배우고 로컬에서 그냥 개발을 진행했을 때 가상환경의 필요성을 느끼지 못한다. 하지만 프로젝트를 진행하거나 pip install의 버전관리가 쉽지 않을 때마다 가상환경의 필요성을 느끼곤 한다. 파이썬 가상 환경을 사용해야 하는 이유는 다음과 같다: 1. **프로젝트 간 의존성 분리**: 각각의 프로젝트마다 필요한 라이브러리와 패키지의 버전이 다를 수 있다. 예를 들어 openai 의 버전만 해도 기능에 따라서 버전을 다르게 요구하기도 한다. 가상 환경을 사용하면 각 프로젝트의 의존성을 분리하여 각 프로젝트가 필요로 하는 라이브러리를 독립적으로 관리할 수 있다. 2. **파이썬 버전 관리**: 서로 다른 파이썬 버전이 필요한 경우에도 가상 환경을 사용하여 각 프로젝트마다 필요한 파이썬 버전을 ..
2024.02.05 -
[논문리뷰] Template Controllable keywords-to-text Generation
Template Controllable keywords-to-text Generation Abstract 본 논문은 키워드로부터 텍스트를 생성하는 작업에 대한 새로운 신경 모델을 제안한다. 이 모델은 순서 없는 키워드 집합과 품사(POS) 기반 템플릿 지시사를 입력으로 받는다. 이 프레임워크는 키워드와 템플릿을 먼저 인코딩한 후, 디코더가 인코딩된 키워드와 템플릿에서 유도된 컨텍스트에 주의를 기울여 문장을 생성한다. 모델은 키워드와 POS 기반 템플릿이 완전히 자동 수단을 통해 준비된 대규모 레이블 데이터에서 약한 지도를 활용하여 훈련된다. 다양한 도메인의 공개 테스트 데이터에서의 정성적 및 정량적 성능 분석 결과는 최신 신경 기계 번역 및 제어 가능한 전이 기술을 사용한 베이스라인에 비해 우수함을 나타..
2024.01.16 -
GPT-4 Technical Report Review
우리가 현재 사용하고있는 챗 GPT는 3.5 모델이 기본이다. 하지만 GPT 4 역시 출시되었고 이는 유료버전에만 지원한다. ???: 세종대왕이 맥북프로 던졌다는데? GPT4 는 GPT 3.5에 비해 1. Access to GPT-4, our most capable model 2. Faster response speed 3. Exclusive access to beta features like Browsing, Plugins, and Advanced Data Analysis 을 지원한다고 하는데 무엇이 달라졌길래 그럴까? 먼저 GPT4는 오픈소스가 아니다. open AI는 논문이 아닌 테크니컬 리포트의 형태로만 공개하였다. 정확한 모델의 구조, 파라마터 수 등은 공개하지 않고, High - Level o..
2023.09.11 -
트랜스포머(Transformer) 가 뭘까 - 1
트랜스포머가 뭘까 아니다. 트랜스포머 모델은 Attention is all you need 에서 나온 모델로 기존의 seq2seq의 구조인 인코더-디코더를 따르면서도 attention만으로 구현한 모델이다. 이 모델은 RNN을 사용하지 않고도 인코더-디코드 구조를 설계하였음에도? 번역 성능에서 RNN보다 우수한 성능을 보여준다. 기존의 한계 기존의 seq2seq 모델은 인코더-디코더 구조로 이루어져 있는데, 입력 시퀀스를 하나의 벡터 표현으로 압축하고 디코더는 이 벡터를 통해서 출력 시퀀스를 만들어 낸다. 하지만 이 과정에서 입력 시퀀스를 벡터로 압축하는 과정에서 정보가 일부 손실되는 단점이 있었고, 이를 보정하기 위해 어텐션이 사용된다. 트랜스포머 트랜스포머는 RNN을 사용하지 않지만, 인코더 디코더 ..
2023.09.11 -
Sequence - to - Sequence ( seq2seq )
seq2seq는 번역기에서 대표적으로 사용되는 모델이다. 입력된 시퀀스로부터 다른 도메인의 시퀀스를 출력하는 다양한 분야에서 사용되는 모델이다. 예를들어 챗봇, 기계번역이 그러한 대표적인 예시인데 입력시퀀스와 출력시퀀스를 각각 질문과 대답으로 구성하면 챗봇으로 만들 수 있고, 입력시퀀스와 출력시퀀스를 각각 입력문장과 번역 문장으로 만들면 번역기로 만들 수 있다. 위의 그림은 seq2seq 모델로 만들어진 번역기가 'I am a student'라는 영어 문장을 입력받아서, 'je suis étudiant'라는 프랑스 문장을 출력하는 모습을 보여준다. seq2seq는 크게 인코더와 디코더라는 두 개의 모듈로 구성된다. 인코더는 입력 문장의 모든 단어들을 순차적으로 입력 받은 뒤에 마지막에 이 모든 단어 정보..
2023.09.08 -
Gated Recurrent Unit , GRU ( 게이트 순환 유닛 )
GRU는 LSTM의 장기 의존성 문제에 대한 해결책을 유지하면서도, 은닉 상태를 업데이트 하는 계산을 줄였다. 다시 말해서 성능은 유지하면서 복잡했던 구조를 간소화 시켰다. LSTM에서는 출력, 입력 , 삭제 게이트라는 3개의 게이트가 존재했다. 반면 GRU에서는 업데이트 게이트와 리셋 게이트 두 가지 게이트만이 존재한다. GRU는 LSTM보다 학습속도가 빠르다고 알려져 있는데 , 여러 평가에서는 비슷한 성능을 보인다고 알려져 있다. 기존의 LSTM을 사용하면서 최적의 하이퍼파라미터를 찾은 상태라면 굳이 GRU로 바꾸어 사용 할 필요는 없다. - GRU의 핵심은 아래 두가지다. (1) LSTM의 forget gate와 input gate를 통합하여 하나의 'update gate'를 만든다. (2) Cel..
2023.09.07