7월, 2022의 게시물 표시

From In-context learning to RLHF (Feat. ChatGPT)

이미지
TL;DR 거시적인 발전 과정 : In-context Learning -> Instruction Tuning -> RLHF -> RLAIF In-Context Learning은 Large Scale 언어모델을 tuning하지 않고 새로운 task에 적용할 수 있는 직관적인 방법을 제시함 Instruction Tuning은 다양한 task를 Instruction + example의 템플릿으로 캐스팅하여 Implicit하게 multi-task로 tuning하며 결과적으로 Unseen Task를 더 잘 수행함  RLHF는 인간의 선호도라는 애매한 척도를 모델링하는 Reward Model과 강화 학습을 활용하여 언어 모델을 개선하는 방법을 제시함 RLAIF는 Human Labeling Cost를 없애고 RLHF에서 추가적으로 helpfulness와 harmlessness를 모두 개선할 수 있는 자동화된 파이프라인을 제시함  In-Context Learning & Instruction Tuning 오늘은 요즘 핫한 ChatGPT와 관련된 이야기를 하려고 한다. 바로 zero-shot의 가능성을 보여준 In-context Learning의 시작과 그것을 더 개선시킨 Instruction Tuning, 마지막으로 화룡정점을 찍은 Reinforcement Learning From Human Feedback에 대한 내용이다. 이후 Anthropic에서 RLHF를 시스템적으로 개선한 RLAIF라는 방식을 추가적으로 제안하기도 했다.  In-context Learning In-context learning은 GPT3 에서 소개되면서 pretraining-finetuning paradigm의 대안을 제시했다. 언어모델이 충분히 크고(도표에 의하면 6B 이상) 다량의 corpus로 학습했다면 사람의 자연어 instruction을 이해하고 바람직한(의도에 맞는) 텍스트를 생성할 수 있는 능력을 가지고 있다는 것이다. 예를 들어 언어모델을 QA 태스크에 명시적으

Review : Switch Transformer + ST-MOE-32B

이미지
Sparcity in Transformers 트랜스포머의 성능을 개선하는것으로 알려진 내용은 Kaplan et al. 에서 밝힌 세 가지이다. (1) 모델의 파라미터 크기 (2) 데이터 셋의 크기 (3) 계산량(Computational Budget) Switch Transformer의 저자들은 여기에 한 가지 차원을 더 추가하는데, 그것이 example당 FLOPs를 고정한 채로 늘어나는 parameter count를 늘릴 수록 성능이 좋아진다는 것이다. 이 개념과 Switch Transformer를 설명하기 위해서는 먼저 Mixture of Experts라는 개념을 살펴봐야 한다.  Mixture of Experts(MoE) MoE는 Shazeer et al.  에서 소개된 개념으로 Neural Model(간단하게는 FFN)을 expert라고 부를 때 example 별로 적절한 expert에 routing을 해줘서 계산량을 줄이면서도 큰 모델을 만드는 방식이다. 위의 이미지는 RNN 같은 recurrent 구조에 MoE를 적용한 형태인데, Gating Network에서 주어진 샘플 \( x \)가 주어지면 \(n\)개의 expert에 대해서 어디에 할당할지에 대한 확률 분포를 계산하게 된다. 가장 단순한 Softmax Gating 방식은 다음과 같다. $$ G(x) = \textrm{Softmax}(x \cdot W_g)  \\ y = \sum_{i=1}^{n}G(x)_i E_i(x)\quad\textrm{where}\quad E_i = (i\textrm{-th expert})$$ softmax output을 그대로 사용하면 expert가 densely activate 되므로 sparse model의 이점을 누릴 수 없다. 따라서 여기에서 top-k개의 Expert만 사용하는 것이 일반적이다. Shazeer et al.  에서는 적어도 두 개의 expert간 비교가 필요하기 때문에 k 값은 1보다는 커야한다고 주장했지만 Switch Transformer의 저

Review : Unifying Language Learning Paradigms

이미지
MLM과 CLM을 넘어서 최근 스터디에서 T5, BART 등의 Encoder-Decoder 구조를 가진 언어 모델 사전학습을 진행하면서 "사전학습 = mlm or clm" 이라는 공식은 101에 불과하다는 생각을 하게 되었다. 알고 있던 BERT나 GPT는 self-supervision을 통한 pretraining을 제시한 기념비적인 논문들이긴 하지만 더 효과적이고 새로운 방법들이 많이 등장했다. 예를 들어 BART에서는 Text-infilling을 제안했는데 input text를 \( \textrm{span_length}  \sim \textrm{Poisson}(\lambda)\) 인 span으로 전체의 30%를 마스킹한 후에 인코더 인풋으로 넣는다. (학습 자체는 GPT와 같이 uncorrupted input에 대한 next-token-prediction으로 한다는 게 함정.. 그런데도 신기하게 infilling이 된다.) T5는 좀 더 일반적인 방식을 제안하는데 span masking을 하고 해당 masking에 들어갈 부분을 예측하는 것이다. 이 경우 input은 sentinel token이라 불리는 문장 내에서 unique한 토큰으로 (e.g. <extra_id_0>, <extra_id_1>,...) span-masking되고 target은 해당 span을 예측할 수 있도록 sentinel token 뒤에 정답 text가 연속해서 나오는 형태가 된다. 예를 들면, Original : The cute dog walks in the park Input : The <extra_id_0> walks in <extra_id_1> park Target : <extra_id_0> cute dog <extra_id_1> the <extra_id_2> 예시에서 볼 수 있듯이 각 sentinel token은 여러 개의 subword로 구성되어 있을 수 있기 때문에 단순한 iid