본문 바로가기
Natural Language Processing/CS224U NLU

Stanford CS224U Natural Language Understanding 강의요약 - XCS224U: NLU I Contextual Word Representations, Part 8, 9,10: Seq2Seq, Distillation, Warp-up I Spring 2023

by 187cm 2023. 9. 3.
반응형

이전 강의 - XCS224U: NLU I Intro & Evolution of Natural Language Understanding, Part. 1 I Spring 2023

이전 강의 - XCS224U: NLU I Course Overview, Part. 2 I Spring 2023

이전 강의 - XCS224U: NLU I Contextual Word Representations, Part. 1: Guiding ideas I Spring 2023

이전 강의 - XCS224U: NLU I Contextual Word Representations, Part. 2: The Transformer I Spring 2023

이전 강의 - XCS224U: NLU I Contextual Word Representations, Part. 3: Positional Encoding I Spring 2023

이전 강의 - XCS224U: NLU I Contextual Word Representations, Part. 4: GPT I Spring 2023

이전 강의 - XCS224U: NLU I Contextual Word Representations, Part. 5,6,7: BERT, RoBERTa, ELECTRA I Spring 2023

 

강의영상1 : https://www.youtube.com/watch?v=yqV_YfBBtK0&list=PLoROMvodv4rOwvldxftJTmoR3kRcWkJBp&index=12

강의영상2 : https://www.youtube.com/watch?v=yqV_YfBBtK0&list=PLoROMvodv4rOwvldxftJTmoR3kRcWkJBp&index=13

강의영상3 : https://www.youtube.com/watch?v=yqV_YfBBtK0&list=PLoROMvodv4rOwvldxftJTmoR3kRcWkJBp&index=14

강의자료 : https://web.stanford.edu/class/cs224u/slides/cs224u-contextualreps-2023-handout.pdf 

 

참고자료 [Seq2Seq 논문 정리 링크]

 

논문 읽기[S2S] - Sequence to Sequence Learning with Neural Networks

Abstract - DNN은 레이블된 학습 데이터 셋을 쓸 때 성능이 좋음. 하지만 Sequence to sequence를 mapping 하는데 사용 불가능 - 고정된 차원 벡터의 Input LSTM(Encoder), Output을 출력하는 또 다른 LSTM(Decoder)로 구

187cm.tistory.com


이번 시간에는 sequence to sequence 줄여서 seq2seq 강의를 요약해보려고 한다. 아주 오래전 논문을 읽고, 정리해둔 기억이 있어서 그 링크도 첨부하도록 하겠다. 필요하신 분은 읽고 와도 좋지만 그렇게 추천하진 않는다.

- 먼저 seq2seq 구조가 쓰이는 task들을 위에 나열했다. 주로 입력 문장(sequence)를 넣어서, 출력 또한 입력 문장(sequence)로 구성되는 구조를 seq2seq구조라고 한다. 조금 더 포괄적으로 말하자면 이런 구조를 만들기 위해 대표적으로 Encoder-Decoder 구조를 사용하는 것을 의미한다.


From the RNN era

- 우선 기존의 RNN based model은 [A,B,C,D] 라는 문장을 순서대로 넣은 다음, [BOS] 토큰을 시작으로 입력을 넣어 [X,Y,Z,<eos>] 라는 문장을 순서대로 만들어냈다. 

- 또한 Attention layer가 추가된 RNN 모델은, 오른쪽과 같이 Attention layer를 모델 위에 얹어서 [X,Y,Z,<eos>]라는 답을 만들어 낸다. 

- 그리고 현대의 Transformer 모델은 이전 세대의 Attention-RNN모델에서 Recurrent mechanism만 제거하여 윗 부분의 Attention만 가지고 Attention-block을 쌓아서 Transformer를 완성시켰다. 

- Encoder-Decoder 구조에서는, fully encoded된 Encoder와, Decoder에서는 미래를 볼 수 없기에 과거&현재를 바탕으로 미래를 예측하는 것을 볼 수 있다.

- Encoder-Decoder 모델구조 뿐 아니라, 우리의 Language Model은 Transformer를 기반으로 해서, 왼쪽의 Decoder가 계속 이어지는 형태의 구조를 만들 수도 있다.

- 그리고 Encoder에서는 Fully encoded되는 것 처럼 PrefixLM에서는 Language Model에서 Encoding 부분만 fully encoded 리를 해서 구조를 만들 수 있다.

- Encoder-Decoder의 변형 모델으로 강력한 성능을 가져온 T5는, 광범위한 task를 가지고 supervised/unsupervised learning을 수행한다. 설명이 부족하기에 내가 추가적으로 찾아보았다.

- Text-to-Text Transfer Transformer 라는 이름을 가진 T5는 모든 task에서 성능을 더 잘 내기 위해 만들어졌다.

- 모델 구조 또한 기본 Vanila Encoder-Decoder형태의 Transformer이다. 

- pre-trained dataset으로 직접 web crawl Extracted text를 사용했다. 

- 그리고 우리의 T5모델은 위에서 왼쪽의 Encoder-Decoder형태를 사용했을 때 더 성능이 높았다.

- BART는 BERT + GPT의 결합형태이다. Encoder는 Standard BERT를, Decoder는 Standard GPT이다.

- corrupted 된 token을 넣어서 우측과 같은 형태를 만드는 작업을 pre-train에서 진행하며, Fine-tuning 단계로 classification을 넣는다면, uncorrupted token을 넣어서 Decoder의 마지막 부분을 classification에 활용한다.

- Seq2Seq은 동일하다.


- Distillation은 효율적인 모델을 만들기 위해서 반드시 필요한 방법론이다.

- 첫날에 보여준 이 그림을 보면 모델이 엄청 커지다가 요근래 들어서 다시 작아지기 시작했다. 그 이유는 큰 모델을 작은 모델로 distillate하기 시작했기 때문이다. 따라서 우리는 더욱 효율적으로 모델을 구축할 수 있게 되었다.

- 왼쪽 위와 같이 크고, 학습하는데 오래걸리는 Teacher model이 있다고 할 때, 우리의 목표는 우리가 가지고있는 자원이 적기에 이 작은 모델에 효율적으로 학습한 내용을 넣어주는 것이다. (Distillation)

- 따라서 우리는 우측과 같이 출력을 Teacher Model과 유사하게 따라가게끔 만들 수 있으며, 혹은 내부의 표현을 따라가도록 만들 수 있다. 

- Distillation의 objectives는, 0. 원래 데이터에 대해서 가장 낮은 loss 혹은 가장 정확한 예측을 하는 모델을 만드는 것이다.

- 그러기 위해 1. Teacher's output labels를 따라가게끔 학습하는 방법이다. 이 방법을 통해 무거운 Teacher model은 validation/test를 수행하는 것과 유사하며, student모델만 학습시킨다. 이 과정을 통해 Teacher 모델은 regularizer처럼 행동한다. Student model은 어려운 학습 데이터에 대해 teacher model의 insight를 얻을 수 있으며, 때로는 Teacher model이 틀리더라도, 일반화의 관점으로는 더욱 좋은 성능을 낼 것이다. 

2. Teacher's output score까지 따라하는 방법. 이 것은 기존의 방법론보다 조금 더 무거운 방법론이지만, purely behavioral distillation이라고 하여 특정 Hidden state에 의존하는 것이 아닌, teacher model의 행동, 즉 출력 분포를 student  모델이 따라하고자 하는 것.

3. final output state를 consine loss를 통해 비교함으로써 정답, 행동을 가지고 teacher와 student가 가까워지길 바라는 것이 아닌, 이번엔 Hidden state에 의존하여 특정 특성, 패턴까지 학습하기를 원하는 것이다.

4. 4번은 embedding space를 모방하려고 한다고 보면 좋을 것 같다. embedding space를 모방함으로써 비슷한 의미를 가진 패턴, 의미를 더 잘 학습할 수 있게 된다.

5. 5번은 teacher의 입력이 변했을 때, student또한 그 변화를 유사하게 따라가도록 만드는 방법론이다. 

또한 이 Distillation을 모델을 훈련시키는 관점에서 볼 때,

1. Standard: Teacher는 얼리고, student만 update 시키는 방법 사용.
2. Multi-teacher: 두 개의 다른 teacher를 사용해서 동시에 학습 시키는 것으로 같은 task뿐 아니라 다른 task를 동시에 적용할 수도 있다.

3. Co-distillation: online distillation이라고도 불리는데, teacher/student를 동시에 학습시키는 것이다. 하지만 이 작업은 매우 비용이 많이든다.

4. self-distillation: 말 그대로 자기 자신에 대해서 update를 하는 방식인데, teacher와 student가 같은 모델이라고 생각하면 좋다.

- Distillation을 통해 BERT의 성능을 높인 논문들이다.


- 그리고 마지막 10강의 Warp-up은 교수님께서 시간이 없어서 설명하지 못한 내용들이다. 

- 우선 TransformerXL, XLNet, DeBERTa 와 같은 내용들이 있고, 설명은 우측과 같다.

- 앞서서 설명한 BERT의 한계점과, 이를 해결하기 위해 노력했던 논문들이다.

- 그리고 우측은 Pre-training data로 유명한 데이터들이다.

- 현재 LLM 모델의 추세이다. 

반응형