Community

항해 플러스 AI 후기 3주차 WIL

1. 이번 주 목표 * 회사, 개인 일정이 너무 빡빡해 성실하게 임하지 못했던 2주차까지 학습의 진도를 따라잡는 것이 최우선 목표였다. 2. 학습 내용 1. Transfer Learning * data가 부족하거나 충분한 상황에서도 훨씬 빠르게 generalization이 잘되는 모델을 학습하는 방법 💡 자연어 처리 문제들은 어차피 입력이 다 같은 자연어인데, 다른 자연어 처리 문제를 푸는 모델(Pre-trained Model)을 잘 활용하면 data가 적은 자연어 처리 문제도 풀 수 있지 않을까? * 구성요소 * Pre-trained Model: 충분한 data로 학습하여 자연어 이해 능력 자체가 좋은 모델. * Fine-tuning: pre-trained model을 우리가 목표로 하는 자연어 처리 문제에 맞게 학습시키는 방법. 이 때 목표로 하는 자연어 처리 문제를 일반적으로 downstream task라고 부른다. 1.1 Pre-training * Supervised pre-training: 입력과 출력 pair가 충분한 자연어 처리 문제에 대해서 모델을 학습하는 방식. * 학습에 사용되는 데이터가 “정답”을 가지고 있음 * 감정 분석 (긍정/부정), 스팸 메일 분류(스팸/일반) * Unsupervised pre-training: 주어진 text로부터 가상의 label을 생성하여 가상 label을 맞추는 방향으로 모델을 학습하는 방식. * 데이터에 정답이 없음 * 모델이 스스로 데이터 내의 패턴, 구조, 관계를 스스로 찾아감 * 단어 임베딩, 텍스트 카테고리 분석 (비슷한 문서끼리 정렬하는) 2. BERT(Bidirectional Encoder Representations from Transformers) * 2018년 구글에서 발표한 Transformer Encoder Block 을 사용한 NLU 모델 💡 BERT는 un-supervised 방식으로 pre-trained 모델을 학습하는 방식으로, 입력은 자연어이기만 하면 된다. 특별한 label이 필요가 없기 때문에 위키피디아 등의 text를 그대로 긁어와서 사용할 수 있다. * 다음 2가지 loss에 대해 pre-training을 진행한다. 2.1 MLM(Masked Language Model) 💡 문장의 일부분을 지웠을(Masking) 때, 나머지를 보고 맞추는 식으로 모델을 학습하면 자연어 처리율이 올라갈 것 같은데? 1. 특정 token mask: 학습 단계에서 랜덤하게 token들을 [MASK] 라는 special token으로 변경(Masking) 2. Masking한 token 예측: 1에서 masking한 token들을 예측하는 방향으로 모델을 학습. 2.2 NSP(Next Sentence Prediction) * Text가 두 문장으로 이루어져 있을 때, 두 문장이 실제로 이어진 문장인지 아니면 별개의 문장인지 맞추는 식으로 학습. DistillBERT * knowledge distillation이라는 방식을 활용하여 BERT와 비슷한 성능을 내지만 더 빠르고 가볍게 만든 pre-trained Transformer 모델 1. Teacher, student 모델 선정: teacher와 student 모델을 선정함. 일반적으로 teacher 모델은 성능이 좋은 pre-trained 모델, student 모델은 적당히 작게 학습된 모델. 2. Soft label 생성: teacher 모델을 가지고 soft label을 생성함. 예를 들어, MLM에서 label을 mask하기 전 token의 값이 아니라 해당 mask token에 대한 teacher 모델의 예측 값으로 설정한다(teacher 모델의 예측 값은 argmax를 하기 전의 값을 의미). 3. Student 모델 학습: 생성한 soft label을 가지고 student 모델을 학습하면 됨. 💡 DistillBERT는 위와 같은 knowledge distillation을 활용하여 학습하며 더 적은 parameter 수와 inference time으로 BERT와 비슷한 성능을 낸다. 3. GPT(Generative Pre-trained Transformer) * 생성하는 사전학습 트랜스포머(?) * BERT와 비슷한 방식으로 pre-training을 했으나, 약간 다른 next token prediction loss를 사용한다. 3.1 GPT의 next token prediction * 기존 MLM loss: 문장 중간의 token을 masking. * GPT의 next token prediction: 마지막 token을 masking. * 앞의 문장만 보고 예측을 하기 때문에 문장 전체를 가지고 학습할 수 있음. * 따라서 fine-tunning의 난이도와 효율이 굉장히 좋다. 3.2 Token Generative Model * GPT의 text 생성은 다음과 같이 이루어진다. 1. 주어진 문장을 보고 token 생성 1. GPT에 어떤 문장을 입력으로 넣음. 2. next word prediction과 똑같은 과정으로 주어진 문장의 다음 token을 생성할 수 있음. 2. 생성한 token을 주어진 문장에 concat 1. 위의 과정에서 생성된 token을 주어진 문장에 concat함. 2. 그리고 다시 GPT에 입력으로 넣어 token을 생성함. 3. Special token이 나올 때 까지 생성 * 생성하는 방식은 sequence-to-sequence model의 decoder가 text를 생성하는 방식과 동일함. 3.3 Large Language Model * parameter의 수를 폭발적으로 늘려 더 이상 fine-tuning에 의존하지 않을 수 있어졌다. * 대신 파라미터의 수 만큼 많은 컴퓨팅 자원을 필요로 한다. 3.4 Few-shot learning * 어떤 자연어 처리 문제를 풀 때 그 문제의 예시들을 먼저 보여주고, 주어진 문제를 풀리게 하는 것. * train data로 존재하는 입력, 출력의 pair를 그대로 text로 변환하여 넣어주면 마지막에 주어지는 문제를 잘 풀 수 있음. * 이렇게 few-shot learning을 활용하면 train data를 이용한 성능 올리기가 가능하다. 또한 여전히 fine-tuning과 같은 별개의 학습 과정도 필요 없다. 3. 느낀점 * 이번 주차, 재미있었다. * 설명의 개연성이 충분하다고 느껴졌고 실제로 들으면서 음… 이런 느낌인가? 라는 연상도 좀 들었다. * few-shot learning에서는 아 프롬프팅의 원리가 이건가? 싶은 생각이 들었다.

알림

알림이 없습니다