논문 링크: https://arxiv.org/abs/2107.07567 Beyond Goldfish Memory: Long-Term Open-Domain Conversation Despite recent improvements in open-domain dialogue models, state of the art models are trained and evaluated on short conversations with little context. In contrast, the long-term conversation setting has hardly been studied. In this work we collect and r arxiv.org Abstract 현재 SOTA 모델들은 context가 거..
논문 링크: https://arxiv.org/abs/2107.07566 Internet-Augmented Dialogue Generation The largest store of continually updating knowledge on our planet can be accessed via internet search. In this work we study giving access to this information to conversational agents. Large language models, even though they store an impressive amount of k arxiv.org Abstract 기존의 문제점 대화 응답을 생성할 때, 사실을 환각(hallucinate)하는..
Greedy Decoding 해당 시점에서 확률이 제일 높은 것 하나만 선택. 입력이 동일할 경우 매번 같은 문장이 나옴 파라미터: do_sample=False Beam Search 확률이 높은 토큰을 k개씩 선택. 각 beam에서 k개씩 선택하고, 또 새로 생성된 값들 중 누적 확률이 가장 높은 k개만 선택하는 방식 어떤 beam에서 가 나오면 해당 beam은 최종 선택 후보가 되며, 해당 beam은 k개 중에서 빠짐 이에 따라 k개를 채우기 위해 상위 k+1번째였던 값이 그 자리를 채움 이 과정은 가 나온 beam이 k개가 될 때까지 진행 그 후 k개의 후보 중 누적 확률이 가장 높은 beam을 선택 입력이 동일할 경우 매번 같은 문장이 나옴 파라미터: do_sample=False, num_beams..
Huggingface의 transformers에서 generate() 함수에 쓰이는 파라미터들이 어떤 역할을 하는지 알아본다. 전체 코드는 해당 링크로부터 확인할 수 있다. Huggingface 관련 문서 do_sample True -> 랜덤하게 샘플링 (ex: Top-k Sampling, Top-p Sampling) False -> 높은 확률의 토큰을 선택 (ex: Greedy Decoding, Beam Search) early_stopping Batch당 최소 num_beams개의 문장이 완료되면 Beam Search를 종료 num_beams Beam Search 사이즈. Beam Search에서 확률이 높은 토큰 k개씩 선택하는데, 이 k 값을 의미함 보통 5~10으로 설정 temperature T..
[Encoder] - Multi-Head Attention 우선 이건 Self-Attention이다. 이 그림을 이해해보자. Q : 영향을 받을 단어 K : 영향을 주는 단어 V : 영향에 대한 가중치 참고한 블로그의 표현을 빌려, 위와 같이 Q, K, V의 역할을 이해하면 된다. Self-Attention이기 때문에 Query, Key, Value는 입력 문장의 단어 벡터에 해당한다. Multi-Head Attention은 Attention은 병렬로 여러 개 수행하는 것이다. (한번의 Attention을 하는 것보다 여러 번의 Attention을 병렬로 수행하는 것이 성능이 더 좋기 때문이라고 한다) Attention Head 수가 h라고 할 때, W^Q, W^K, W^V를 랜덤하게 h쌍 만든다. 그리..
numpy 라이브러리만을 이용해 Neural Network를 직접 구현한다. Hidden layer는 1개만 사용할 것이다. (Hidden layer 수가 많을수록 성능이 좋아지는 경향이 있으나 연산량이 많아지고 이해하기 좀 더 복잡하기 때문에 일단 1개만 사용) MNIST 분류 문제를 풀기 위해 Input layer, Hidden layer, Output layer의 노드 수는 각각 784, 100, 10으로 설정한다. Input 노드 수가 784인 이유는 MNIST 이미지 크기가 28x28 (=784) 이기 때문이다. Output 노드 수가 10인 이유는 정답 레이블이 0~9까지 총 10개이기 때문이다. Hidden 노드 수는 딱 정해져 있는 값은 아니고 자신이 선택하면 되는데, MNIST 분류 문제..
모델 학습 과정에서의 Loss를 그래프로 시각화하기 위해, Tensorboard를 이용하는 방법을 알아본다. 참조1 : seongkyun.github.io/others/2019/05/11/pytorch_tensorboard/ 참조2 : sensibilityit.tistory.com/512 참조한 블로그들이다. 이 포스팅에서는 핵심만 간략하게 설명할 것이니 자세한 설명이 필요하다면 위 블로그에서 확인하면 된다 :) 1. Tensorboard 설치하기 !pip install tensorboardX tensorflow도 설치되어 있어야한다고 한다. 2. 모듈 임포트 및 객체 생성 from tensorboardX import SummaryWriter summary = SummaryWriter() 3. loss ..
Fashion-MNIST 모델은 keras, tensorflow, pytorch 등 다양한 환경에서 간편하게 다운받을 수 있다. 하지만 내가 필요한 것은 Fashion-MNIST 모델이 아닌 이미지였다. 옷의 모양을 학습시키기 위한 데이터가 필요했는데, Fashion-MNIST의 이미지들은 배경이 제거되고 옷의 정면만 나오도록 처리된 깔끔한 이미지이며 grayscale이기 때문에 옷의 무늬나 색상과 같은 특징을 학습하기보단 옷의 모양을 학습하기에 적합할 것 같다는 생각이었다. 이곳저곳 검색해봤지만 모델 형태로만 존재하고 이미지의 형태로는 따로 존재하지 않는 것 같아서, csv 파일을 찾아 직접 이미지로 변환하는 과정을 수행했다. dacon.io/competitions/open/235594/data/ [이..