GPT계열 LLM 모델의 zero-shot 성능을 높인 방법인 instruction-tuning에 대한 논문 내용을 정리하고자 한다(논문링크). 1. Introduction GPT3와 같은 모델들은 few-shot 성능이 (기대보다)뛰어나다는 특징이 있는 반면, zero-shot에 대해서는 성능이 낮다. FLAN은 자연어 instruction과 one-shot example을 데이터셋으로 구성하여 fine-tuning 시켜(Instruction Tuning) unseen task에 대한 zero-sho 성능을 높인 연구이다. FLAN 연구의 intuition은 다음과 같다. LM(Language Model)에 주어지는 입력인 zero-shot prompt(no few-shot example)은 실제 모델..
언어모델로 generation 시 특정 입력에 더 집중된 문장이 생성될 수 있도록 한 모델에 대해 정리하고자 한다(논문링크). 1. Introduction 현재 대부분의 언어모델은 transformer의 attention 메커니즘을 기반으로 하며 corpus만 주어지면 언어적인 특성과 주어진 입력을 잘 반영한 contextualized embedding을 생성할 수 있다. 하지만 입력 컨텍스트의 특정 부분에 집중하고 싶어도 기존의 attention 메커니즘 만으로는 이를 구현하기가 어렵다. 본 연구는 focus vector를 학습하여 이를 해결하고자 하였으며 주요 포인트는 다음과 같다. trainable focus vector의 효과를 탐색함. 이때 기존의 언어모델의 파라미터는 고정시켜 활용할 수 있다...
Transformer 계열의 언어모델에서의 contextualized embedding에 대해 분석한 논문을 정리하고자 한다(논문, 저자 블로그). 1. Introduction 기존의 static word embedding(ex. Word2Vec)은 문맥과 상관없이 단어에 대해 하나의 embedding만을 부여했다. 하지만 transformer 계열 모델들은 문맥을 반영한 embedding을 계산하게 되는데 저자는 문맥에 따라 embedding이 얼마나 차이나는지를 보고자 하였다. 'mouse'라고 하는 단어는 쥐, 컴퓨터기기 두 가지 의미가 있는데 1) 두 의미 각각에 대한 representation이 계산되거나(왼쪽 그림) 2) 아니면 문맥에 따라 매우 다른 representation이 계산(오른쪽 ..
Document 랭킹을 성능 및 서비스 측면에서 고민한 ColBERT 논문에 대해 정리하고자 한다. 1. Introduction BERT 등의 큰 언어모델(LM)은 성능이 우수하나 계산량이 많아 latency가 생긴다. 때문에 query-document pair를 입력을 받아 수십만개의 문서 중 정답이 있을만한 문서를 찾는 문서탐색의 경우 시간이 매우 오래걸린다. ColBERT는 이를 해결하기 위한 방법으로 1) 미리 계산한 문서 임베딩을 저장해두고(pre-computation) 2) query를 입력으로 받아 계산량이 낮은 연산(late interaction)으로 문서탐색을 수행하는 모델이다. 2. ColBERT 모델 1) Architecture ColBERT는 두 개의 encoder와 late in..
효과적인 Sentence embedding을 얻기 위한 SimCSE 논문 내용을 정리하고자 한다. 1. Introduction BERT와 같은 transformer 계열 인코더들은 context를 반영한 문장 임베딩을 잘 뽑는다. SimCSE는 contrastive learning + dropout을 사용하여 인코더를 추가학습해 성능을 향상시켰다. 논문에서는 unsupervised, supervised 내용을 담고 있지만 unsupervised 내용이 더 핵심적이다. 2. Background 1) Contrastive Learning Contrastive Learning은 self-supervised learning의 방법 중 하나로 unlabled data를 활용하되 이를 positive, negati..
LoRa 논문은 큰 언어모델을 fine-tuning하기 위한 여러가지 방법 중 효과가 꽤 괜찮은 방법을 제시했는데 그 내용을 정리하고자 한다. 1. Introduction 매우 큰 언어모델을 만들고 이를 도메인에 맞게 fine-tuning하는 일은 매우 빈번하다. GPT3 계열의 모델은 크기가 매우 크기 때문에 원래의 모델은 freeze 해두고 태스크별로 별도 layer를 두는 방식을 사용한다. 하지만 모델 크기가 매우 크기 때문에 제대로 학습이 안될 수도 있고 inference 속도가 충분하지 않을 수 있다. 논문에서 제시하는 아이디어는 간단하다. 딥러닝 layer에서 hidden dimension의 차원이 아무리 커도 그 공간의 rank는 낮을 수 있다고 생각하는데, 이를 활용하는 것이다. We ta..
GPT3와 같이 매우 큰 언어모델을 서비스 목적에 맞게 fine-tuning하는 것은 비용도 클 뿐더러 성능이 안정적이지 않을 수 있다. 이런 fine-tuning을 효율적으로 하기 위해 p-tuning, LoRA와 같은 방법들이 소개가 되었다. 개인적으로는 p-tuning이 개발기간도 짧고 안정적인 성능향상이 있기 때문에 더 선호하는데 이를 정리해보고자 한다.(논문링크)(공개소스) 1. Introduction 언어모델은 다음과 같이 크게 3종류가 있다. unidirectional LM(a.k.a auto-regressive model): GPT 계열 bidirectional LM: BERT 계열 hybrid LM: XLNet, UniLM GPT 계열의 단점은 NLU 태스크(NLI, AE 등)에서 성능이..
언어모델을 평가하기 위한 하나의 척도인 Perplexity에 대해 정리하고자 한다. 원문 내용을 많이 참고하였다. 1. 언어모델이란? 언어모델(Language Model)은 가능한 단어 시퀀스에 대한 확률을 계산하는 모델이다. 어떤 문장이 주어질 때, 언어모델이 보유한 모든 토큰들에 대해 그 다음에 올 확률을 계산하면 엔지니어가 태스크에 맞게 최대 확률값을 가진 토큰을 1개 이상 사용하여 문장을 완성할 수 있다. 좋은 언어모델은 real 또는 syntactically correct한 문장에 더 높은 화률을 부여하는 모델이다. $n$개의 단어 $(w_{1}, w_{2}, \cdots, w_{n})$로 이루어진 문장 $W$에 대한 확률은 다음과 같이 표현할 수 있다(문장에 대한 확률이라는 말이 조금 어색할 ..
Language Model 등 분류해야할 class 개수가 매우 많을 때 softmax 계산에서 병목 현상이 발생할 수 있다. 이를 개선하기 위한 몇 가지 방법이 있는데 이를 정리하고자 한다. 1. 문제 정의 Huge Class 분류 문제는 크게 두 가지로 나눠볼 수 있다. single class 분류: 수 많은 class들 중 하나로 분류(ex. Language Model) multi class 분류: 수 많은 class들 중 1개 이상으로 분류 논문에 따르면 Huge Class 분류 모델을 학습 시킬 때 softmax 계산 비용이 커지고 성능이 떨어진다고 한다(출처: Effectiveness of Hierarchical Softmax in Large Scale Classification Tasks, ..
핵심포인트 scored-based 평가 방법론이 아닌 ranking-based 평가 방법론 제시 bot-bot conversation을 활용 0. Abstract 대화시스템(챗봇)의 기술은 계속 발전해나가고 있으나, 효율적이고 안정적인 평가 방법이 부재하다. Accuracy 기반의 측도들이 존재하나, 이러한 값들은 인간의 평가와 연관도가 낮다고 알려져 있다. 또한 기존의 평가 방법론은 인간-챗봇 대화를 통해 챗봇을 평가했었으며, 이는 비용이 클 뿐만 아니라 매우 비효율적이다. 본 연구에서는 Spot The Bot이라는 평가 방법론을 제시한다. Spot The Bot은 기존의 인간-챗봇 대화평가에서 챗봇-챗봇 대화 내역을 사용한다. 평가자는 대화 내역을 보고 해당 발화자가 챗봇인지 아닌지만을 평가하며, 최..
본 연구는 수 많은 딥러닝 모델들이 결과로 주는 confidence score를 조정하는 연구이다. Confidence score는 모델의 최종 layer에서의 sigmoid 또는 softmax 값을 의미하며, $[0,1]$ 값을 가진다. 논문의 주요 contribution은 다음과 같다. 딥러닝 모델이 커지면서 over-confident하게 되는 현상을 발견 perfect calibration을 정의하고, 이를 근사하기 위한 metric 정의 calibration 방법 비교 실험 논문의 주요 내용은 다음과 같다. 1. Introduction 모델의 예측값에 대한 confidence를 같이 제공하는 것은 모델의 성능 뿐만 아니라 신뢰도에 많은 영향을 준다. 현대의 neural network는 과거에 비해..
문서분류 task와 관련해서 진행한 내용을 정리하고자 한다. 0. Task 정의 Task는 다음과 같았다. Long Document: 길이가 긴 문서 상황에서 효과적인 모델 찾기 Class Imbalance: class 분포가 극도로 불균형한 상황에서의 성능향상 기법 1) Long Document PoC에서 다루었던 문서의 길이는 매우 긴편이었다. mecab 기준 평균 2,500 token이 넘었으며 길면 20,000 token도 넘는 문서가 있었다. 2) Class Imbalance 다루었던 문서는 총 4개의 label이 있었으며 label별 class들의 분포가 매우 불균형한 데이터였다. 1. Long Document에 대한 효과적인 모델 찾기 첫번째 task를 위해서 총 3가지 모델을 비교하였다. ..
nn.Linear()등으로 정의한 파라미터 접근은 parameters(), named_parameterss()으로 가능하다. 정확히는 layer가 모두 nn.Module()을 상속받으므로 Module에 정의되어 있는 parameter 접근 방법을 사용하면 된다. 1. torch.nn.Module.parameters() parameters()는 layer 이름을 제외한 parameter값에 대한 iterator를 준다. layer = torch.nn.Linear(10,3) layer >> Linear(in_features=10, out_features=3, bias=True) for p in layer.parameters(): print(p) >> Parameter containing: tensor([[-..
2018년도에 자연어 처리와 관련해서 중요한 개념을 소개한 논문이 여러개 발표되었다. 그 중 하나인 ULMfiT에 대해 간단히 정리하고자 한다. 논문은 여기서 확인할 수 있다. 핵심 정리: general transfer learning을 위한 pre-training + fine-tuning 방법론 제안 1. Introduction NLP에서도 transfer learning이 연구되고 있다. 이 중 inductive transfer의 경우 pre-trained된 word ebmedding을 모델의 첫 layer에 고정시켜두는 경우가 많다(e.g. Word2Vec). 하지만 대부분의 Language Model은 작은 데이터셋에 overfit하며, classifer를 붙여서 fine-tuning이 일어나는 ..
2018년도에 자연어 처리와 관련해서 중요한 개념을 소개한 논문이 여러개 발표되었다. 그 중 하나인 ELMo에 대해 간단히 정리하고자 한다. 논문은 여기서 확인할 수 있다. 핵심 개념: contextualized word representaion 0. Abstract 자연어를 token 단위로 임베딩하는 많은 방법들 중 Word2Vec, BoW 등이 유행하였다. 이중 Word2Vec은 단어들 간의 co-occurence 정보를 반영하는 방법을 통해 '주변 단어의 정보'를 활용하는 개념을 적용하였다. 하지만 어떤 token의 임베딩이 문맥과 의미와 관계 없이 동일하다는 단점이 있었다. 때문에 동음이의어를 처리할 때 문제가 발생한다. ELMo 논문에서는 이러한 한계점을 탈피하는 '문맥 정보를 반영한 임베딩'..