Haru's 개발 블로그

[NLP] ResNet / BERT / InstructGPT에 관하여? 본문

머신러닝 & 딥러닝/NLP(자연어 처리)

[NLP] ResNet / BERT / InstructGPT에 관하여?

Haru_29 2023. 8. 26. 22:28

ResNet

DNN은 Layer가 깊어질수록 성능이 향상 되는 특징을 가졌습니다. 하지만 layer가 깊어지면 grdiant vanishing문제가 심해지기 때문에 ResNet은 이를 해결하기 위해 Skip connection 기법을 사용했습니다. 그래서 100층이 넘는 깊은 구조가 가능해졌습니다. 그리고 ReLU를 non-inear function을 사용한 것도 gradiant vanishing 문제를 개선시킵니다. 추가적으로 ResNet은 주로 Residual Block으로 구성되어 있습니다. Residual Block은 입력과 출력 사이에 잔차(Residual)를 학습하는 부분으로, 이전 층의 출력과 새로운 특징을 더하거나 합치는 방식으로 동작합니다.

ResNet을 학습시킬때는 이미지를 224 X 224 X 3으로 resizing해서 넣게 됩니다. ResNet은 image task의 backbone network으로 사용되므로 head만 변경해서 다양한 작업을 학습시킬수 있습니다. 예를 들어 처음 공개될 때는 ImageNet을 학습시켰기때문에 head는 multi-classification에 맞도록 FFNN으로 구성했고 loss는 CR을 사용했습니다.

 

BERT

BERT는 트랜스포머를 이용하여 구현되었으며, 대용량의 데이터를 직접 학습시키기 위해서는 매우 많은 자원과 시간이 필요하지만 BERT 모델은 기본적으로 대량의 단어 임베딩 등에 대해 사전 학습이 되어 있는 모델을 제공하기 때문에 상대적으로 적은 자원만으로도 충분히 자연어 처리의 여러 일을 수행할 수 있습니다. BERT가 높은 성능을 얻을 수 있었던 것은, 레이블이 없는 방대한 데이터로 사전 훈련된 모델을 가지고, 레이블이 있는 다른 작업(Task)에서 추가 훈련과 함께 하이퍼파라미터를 재조정하여 이 모델을 사용하면 성능이 높게 나오는 기존의 사례들을 참고하는 파인 튜닝(Fine-tuning)을 하였기 때문입니다.

BERT의 기본 구조는 트랜스포머의 인코더를 쌓아올린 구조입니다. BERT는 단어보다 더 작은 단위로 쪼개는 서브워드 토크나이저를 사용합니다. BERT가 사용한 토크나이저는 WordPiece 토크나이저로 바이트 페어 인코딩(Byte Pair Encoding, BPE)의 유사 알고리즘입니다. BERT는 ELMo나 GPT-1과 마찬가지로 문맥을 반영한 임베딩(Contextual Embedding)을 사용하고 있습니다. BERT의 핵심 트랜스포머에서는 사인 함수와 코사인 함수를 사용하여 위치에 따라 다른 값을 가지는 행렬을 만들어 이를 다른 단어 벡터들과 더하는 방법인 포지셔널 인코딩을 사용합니다. 추가로 BERT는 세그먼트 임베딩이라는 1개의 임베딩 층을 더 사용합니다. 결론적으로 BERT는 실질적인 입력이 되는 워드 임베딩인 WordPiece Embedding, 위치 정보를 학습하기 위한 임베딩 Position Embedding, 두 개의 문장을 구분하기 위한 임베딩인 Segment Embedding이 사용됩니다.

기본적으로 Base버전 기준으로 트랜스포머 인코더를 12번 쌓은 것이므로 내부적으로 각 층마다 멀티 헤드 셀프 어텐션과 포지션 와이즈 피드 포워드 신경망을 수행하고 있습니다.

BERT의 Pre-training으로 마스크드 언어 모델(Masked Language Model, MLM)와 다음 문장 예측(Next Sentence Prediction, NSP)이 사용됩니다. 마스크드 언어 모델은 사전 훈련을 위해서 인공 신경망의 입력으로 들어가는 입력 텍스트의 15%의 단어를 랜덤으로 마스킹(Masking)합니다. 그리고 인공 신경망에게 이 가려진 단어들을(Masked words) 예측하도록 합니다. 이를 통하여 BERT는 양방향성의 특징을 가집니다. 다음 문장 예측은 두 개의 문장을 준 후에 이 문장이 이어지는 문장인지 아닌지를 맞추는 방식으로 훈련시킵니다. 다음 문장 예측(Next Sentence Prediction, NSP)은 두 개의 문장을 준 후에 이 문장이 이어지는 문장인지 아닌지를 맞추는 방식으로 훈련시킵니다. 이를 위해서 50:50 비율로 실제 이어지는 두 개의 문장과 랜덤으로 이어붙인 두 개의 문장을 주고 훈련시킵니다. BERT가 언어 모델 외에도 다음 문장 예측이라는 태스크를 학습하는 이유는 BERT가 풀고자 하는 태스크 중에서는 QA(Question Answering)나 NLI(Natural Language Inference)와 같이 두 문장의 관계를 이해하는 것이 중요한 태스크들이 있기 때문입니다.

BERT를 파인 튜닝(Fine-tuning)하는데 여러 케이스가 있는데 그 중 질의 응답(Question Answering)예시를 들어 보겠습니다. BERT로 QA를 풀기 위해서 질문과 본문이라는 두 개의 텍스트의 쌍을 입력합니다. 이 태스크의 대표적인 데이터셋으로 SQuAD(Stanford Question Answering Dataset) v1.1이 있습니다. 이 데이터셋을 푸는 방법은 질문과 본문을 입력받으면, 본문의 일부분을 추출해서 질문에 답변하는 것입니다.

 
별개로 Word2Vec와 GloVe에 대해서도 알아보도록 하겠습니다.
 
Word2Vec

Word2Vec은 단어 임베딩의 선구자적인 기법 중 하나로, 단어들 간의 의미적 관계를 포착하도록 벡터를 학습합니다. CBOW(Continuous Bag of Words)와 Skip-gram이라는 두 가지 모델로 구성되며, 주변 단어들을 활용하여 중심 단어를 예측하거나 중심 단어를 활용하여 주변 단어들을 예측합니다. 이러한 학습을 통해 단어의 의미적 유사성을 잘 포착한 임베딩을 얻을 수 있습니다.

GloVe (Global Vectors for Word Representation)

GloVe는 전체 텍스트 데이터의 통계 정보를 활용하여 단어 간의 의미 관계를 학습하는 기법입니다. 이 기법은 Word2Vec과 비슷하게 단어 간의 동시 등장 행렬을 사용하여 임베딩을 학습하는데, 전체적인 통계적 패턴을 활용하여 단어들을 임베딩합니다.
 
 
 
 
 

InstructGPT

GPT-3는 별도의 학습 없이 프롬프트를 통해 자연어 태스크를 수행하는 등의 뛰어난 성능을 보여주었지만, 사실이 아니거나 편향적이고 해로운 결과를 생성하기도 하였습니다. 이유로는 GPT-3가 거대한 인터넷 코퍼스의 다음 단어를 예측하는 방식으로 학습을 하였고 사용자가 원하는 테스크를 안전하게 수행하는 방식으로 학습하지 않았기 때문입니다. 이를 해결하기 위해서 인간의 피드백 즉, 특정 그룹의 사람들의 명시된 선호도에 맞춰 강화 학습을 사용하여 GPT-3을 fine-tuning하여 광범위한 종류의 명령을 따르도록 하는 것을 InstructGPT이라고 합니다. InstructGPT는 3단계의 방법론을 따르는데 첫번째로는 시연 데이터를 수집하고 지도방식으로 모델을 학습합니다. 두번째로 비교 데이터를 모으고 보상 모델을 학습니다. 세번째로 강화학습을 활용하여 보상 모델로 학습데이터를 재사용하는 PPO 알고리즘을 사용하여 모델을 최적화합니다.

InstructGPT의 장점

  1. 명확한 설명이 없어도 프롬프트를 통해 내재적으로 정의된 태스크를 이해
  2. GPT-3에 비해 사용자의 의도를 더 잘 이해
  3. 175B GPT-3에 비해 훨씬 적은 파라미터 (1.3B)
  4. GPT-3에 비해 사실이 아니거나(untruthful), 편향적이거나(biased), 해로운(toxic) 결과를 덜 생성
  5. 학술적인 자연어처리 데이터셋을 활용해 설명을 따르도록 학습한 FLAN이나 T0 대비 현실성 있는 (practical) 상황에서 유리

InstructGPT의 한계

  1. GPT-3 대비 안전성이 높아졌으나, 여전히 해롭거나 편향된 결과를 생성하거나, 없는 사실을 만들어내고, 성적이고 폭력적인 결과를 생성하기도 함
  2. 사용자의 설명을 따를 수 있도록 모델을 학습하였기 때문에, 사용자가 어떠한 설명을 사용하느냐에 따라 오용될 여지 존재
  3. 평균적인 사용자의 선호에 맞추는 것은 바람직하지 않음
Comments