https://arxiv.org/abs/2005.14165
2024.09.09 - [[Deep daiv.]/[Deep daiv.] NLP] - [Deep daiv.] NLP, WIL - 9. ELMo and GPT (1)
2024.11.13 - [[Deep daiv.]/[Deep daiv.] NLP] - [Deep daiv.] NLP, WIL - 9. ELMo and GPT (2)
Abstract.
최근의 연구는 사전학습을 한 후 fine-tuning을 통해 각각의 task에 맞게 학습시키는 것이 좋다는 것을 증명해오고 있습니다. 하지만 여전히 fine-tuning단계에서 labeled data가 많이 필요하다는 점은 변하지 않습니다.
fine-tuning의 이유는 labeled data의 필요성을 줄이기 위함이었고, fine-tuning의 성능은 증명되어왔지만, 이것과는 별개로 labeled data가 필요하다는 점은 바뀌지 않았음을 말합니다.
반면에 인간은 몇개의 예시만을 이용해서 어떤 task든지 수행할 수 있습니다. 그리고 이 점이 최근의 NLP가 도전해야하는 과제입니다. 제시된 논문에 따르면 모델의 크기를 키우고 few-shot example을 주면 특정한 task에 맞게 fine-tuning을 한 model보다 더 좋은 성능을 보임을 알 수 있습니다.
즉, GPT-3는 fine-tuning없이 few-shot만을 이용합니다. 하지만 제시된 논문의 저자는 few-shot이 통하지 않는 데이터셋들 또한 발견했습니다. 이는 추론이 필요한 영역입니다.
fine-tuning은 model자체를 (굳이 full parameter tuning이 아니더라도)task에 맞게 수정하는 것이기 때문에, task에 대한 깊은 이해를 요구하는 추론의 영역에서는 비교적 우수한 성능을 보이지만, few-shot과 같은 몇개의 예시 데이터만을 이용해서 task에 대한 깊은 이해를 요구하는 것은 무리가 있음을 보여줍니다.
Introduction.
(NLP model의 역사를 읊어주고...)
다음과 같은 문제점들을 해결하기 위해 저자는 이 논문을 발표했습니다:
- 현실적인 이유에서, 매 새로운 NLP task마다 labeled data를 찾고, 만들기는 현실적으로 어려움이 많습니다. 반대로 새로운 task가 나오면 그것에 맞는 few-shot example만을 이용하면 그 task에 맞게 model을 사용할 수 있다는 점은 모델의 일반화의 측면에서 매우 유리할 것입니다.
- 사전학습 후 fine-tuning을 하는 방법은 out-of-distribution에 잘 대처하지 못한다는 점에서 문제가 있을 수 있습니다. 해당 방법은 사전학습 중에 대량의 지식을 흡수하지만, fine-tuning을 통해 아주 작은 task분포에 대해 마지막으로 학습합니다. 그렇기 때문에 해당 task와 관련이 없는 영역에 대해서는 성능이 좋지 않은, 일반화 성능이 떨어지는 모습을 보입니다. 이는 특정한 task에 대해서만 성능을 평가하는 benchmark test에서의 model의 점수가 사람에 비해 과대평가 되었을 수 있다는 점을 시사합니다.
- 사람의 경우는 일반화 성능이 뛰어나 다른 task에서도 좋은 결과를 보이지만, fine-tuning된 모델의 경우는 task specific하기 때문에 그 task에 대해서만 좋은 성능을 보입니다. 이때 이 둘을 그냥 benchmark test의 결과로만 비교하는 것은 사람에게는 너무 가혹할 수 있음을 보여줍니다.
- 사람들은 대부분의 NLP task를 수행하기 위해서는 model이 fine-tuning에 필요한 정도의 labeled data가 필요하지 않습니다. 간단한 지시사항, 이를테면 "이 문장이 긍정적인 감성을 담고 있는지, 부정적인 감성을 담고 있는지 말해보세요."와 같은 문장만으로도 해당 task를 훌륭히 소화할 수 있습니다. NLP model은 이런 유연성을 가져야합니다.
- 저는 이 점이 새로웠는데, 사람이 이런 방식을 통해서 NLP task를 다룬다고 해서, 그 방법을 그대로 NLP model에 적용한다는 점이 얼마나 NLP model이 사람과 비슷해졌고, 비슷해지려고 하는지를 반증한다고 생각합니다.
이러한 문제들을 해결하기 위해 제시된 논문은 meta-learning, in-context learning을 제시합니다. 해당 model은 학습시간에는 다양한 스킬과 패턴을 배우고 (fine-tuning을 통해 언어에 대한 기본적인 이해를 한다), 추론 시간에는 빠르게 주어진 task에 적응함을 전제합니다 (추론 시간에는 모델에게 context, 즉 간단한 지시사항과 예시를 주어서 task에 빠른 적응을 유도).
이는 자연어 명령과 몇개의 예시로 다음에 무엇이 오는지를 model에게 예측하라고 시키는 것입니다.
또한 최근의 트랜드는 모델의 크기입니다. 트랜스포머를 통해 모델의 사이즈를 키울 수 있었고, 모델의 사이즈와 모델의 성능이 비례한다는 사실이 알려졌습니다. 이를 증명하기 위해 제시된 논문에서는 모델의 크기와 in-context learning의 효율을 동시에 보여줍니다.
제시된 모델을 통해서 24개의 NLP 데이터셋에 대해 3가지 조건 하에 모델 성능을 측정합니다:
- FS(few-shot): 모델의 context window에 넣을 수 있을 만큼 많은 예제를 넣는 방법 (일반적으로 10 ~ 100개).
- 1S(one-shot): 모델에 하나의 예제만을 넣는 방법
- 0S(zero-shot): 예제는 사용하지 않고, task에 대한 설명이나 지시사항만을 넣어주는 방법
Figure1.2를 통해 다음 3가지 사실을 알 수 있습니다:
- task에 대한 설명을 넣어주는 것이 더 낫다.
- 모델의 context window에 넣을 수 있을 만큼 예제를 넣는 것이 유리하다.
- 큰 모델일수록 in-context 정보를 더 잘 활용한다.
이는 이해나 추론을 요구하는 task를 제외한 다른 task들에서 굉장히 좋은 성능을 보였고, 특히 뉴스 기사 생성 task에서는 사람과 구분이 안 갈 정도의 성능을 보였습니다.
이때 data contamination또한 발견했는데, 이는 모델의 크기를 키우고 많은 양의 사전학습 데이터를 사용하면서 benchmark test data를 모델이 사전학습 단계에서 학습해버리는 것을 말합니다. Common Crawl과 같은 방법을 사용해서 무분별하게 데이터를 학습시키다보니 발생했고, 이는 benchmark score의 과대평가를 만들기 때문에 data cleaning방법을 사용했지만, 여전히 오염의 우려가 있음을 밝혔습니다.
Approach.
기본적인 사전학습 접근법 (모델, 데이터, 훈련 기법, 목적 함수)은 대부분 GPT-2와 비슷합니다. 모델의 크기를 키우고 ,데이터 양과 다양성을 증가시키며 훈련 기간을 늘렸습니다. In-context 학습법도 GPT-2와 비슷하지만, 세부적인 방법론을 다음과 같이 나눴습니다:
- FT(fine-tuning): NLP에서 가장 보편적인 방법으로, 사전 학습된 모델의 weight를 다운스트림 task에 대해 fine tune하는 것입니다. 보통 수천 개의 task specific labeled data를 필요로 합니다. 이 방법은 성능 향상에는 도움이 되지만, 앞서 말했듯, 데이터의 부족이 문제가 될 수 있습니다. 또한 OOD문제를 해결하지 않는다면 benchmark score가 과대평가 유무도 문제가 될 수 있습니다.
- FS(few-shot): 모델은 예시 문장들을 보지만, FT와 달리 weight의 update는 일어나지 않습니다. K(10 ~ 100)개의 예제를 주고, 추론하려는 example의 결과를 완성하도록 하는 접근법입니다. 하지만 대부분의 모델에서 few-shot의 성능은 fine-tuning의 결과를 따라가지 못합니다.
- 1S(one-shot): FS와 세팅은 같으나, 하나의 예제만을 예시로 줍니다.
- 0S(zero-shot): task에 대한 예시는 주지 않고, task를 설명하는 자연어 문구만을 줍니다. 이 방법은 엄청 편리할 뿐만 아니라 잠재적으로 robust한, data에 편향을 줄여줄 수 있는 방법입니다. 하지만 이는 사람에게도 굉장히 어려운 조건이기 때문이 model에게는 어려울 수 있습니다.
Model and Architectures
GPT-2와 똑같은 모델을 사용합니다.
하지만, 트랜스포머 레이어의 attention 패턴에 대해서는 dense (원래 attention)와 locally banded sparse attention을 번갈아 사용합니다. 이는 GPT-3의 파라미터의 수가 너무 많기 때문에 계산의 효율성을 위한 어쩔 수 없는 선택이었습니다.
https://judy-son.tistory.com/5
https://arxiv.org/abs/2406.16747
(모델의 hyperparameter와 training dataset에 대한 설명이 이어짐...)
Results.
다음의 그림은 스케일에 따른 8개의 모델에 대한 훈련 곡선입니다. 이 그래프에서는 십만 개의 파라미터만을 가진 극잔적으로 작은 6개의 모델 결과도 보여줍니다. 기존 연구에서도 드러났듯, language modeling성능은 계산을 효율적으로 사용할 경우 모델이 커짐에 power-law에 따라 좋아졌습니다. 하지만 모델의 크기가 매우 커졌을 경우 power-law에서 조금 벗어나 더 향상되는 모습을 보였습니다.
Q. Data Contamination
GPT-3 사전학습 중 벤치마크 태스크를 외워버렸을 위험은 없는가.
GPT-3가 학습한 사전학습 데이터는 인터넷에서 얻은 다량의 데이터이기 때문에, 밴치마크 태스크 셋이 있는 예제를 이미 봐버렸을 가능성이 있습니다. 이렇게 넷 스케일 데이터를 사용함에 따라 발생할 수 있는 테스트 셋 오염 현상을 발견하는 것은 SOTA를 달성하는 것 이외에 중요한 연구분야이기도 합니다.
사전학습 과정에 테스트 셋이 유출된 영향을 평가하기 위해, 각각의 벤치마크에 대해 사전학습 데이터와 13-gram으로 오버랩되는 데이터를 삭제하는 "clean"버젼의 테스트 셋을 만들어 보수적으로 모델을 평가했을 때, 유의미한 증거는 발견되지 않았습니다.
저의 생각에는 모델이 사전학습 단계에서 벤치마크 태스크를 봤다고, 학습했다고 해서 그 내용을 "외우"는것이 아닌 model에 "흡수"되는 것이기 때문에 큰 차이가 없을것이라 판단합니다. 만약 사전학습 단계에서본 데이터들 하나하나가 결과수준에서 크게 작용했다면, 오히려 해당 벤치마크가 아닌 다른 데이터들에 의한 방해효과가 더 클 수도 있습니다.
Q. 한계
성능적 한계
생성에 있어서의 동어반복
in-context learning이 효율적인 task가 제한적
모델의 구조/ 알고리즘적 한계
autoregressive언어 모델 말고 양방향 구조와 같은 모델은 문장에 대한 이해도가 단방향 모델보다 더 좋기 때문에, 이해나 추론을 요구하는 task에서는 낮은 성능을 기록했을 수 있음
목적함수
self-supervised 목적함수를 사용하는 것과 task
현재의 목적함수는 모든 토큰을 동일한 가중치로 보지만 (autoregressive한 모델이기 때문에), 어떤 토큰을 예측하는지에 따라서 토큰별 중요도를 다르게 가져가는 방법론도 생각해볼만 함
few-shot setting
few-shot을 통해 model이 task를 이해하는 것인지,
few-shot의 패턴을 외우는 것인지 모름
부록
https://littlefoxdiary.tistory.com/44
'[Deep daiv.] > [Deep daiv.] NLP' 카테고리의 다른 글
[Deep daiv.] NLP, 논문 리뷰 - Attention is all you need (Transformer) (1) | 2024.11.27 |
---|---|
[Deep Daiv.] NLP, 논문 리뷰 - Bahdanau Attention (1) | 2024.11.17 |
[Deep daiv.] NLP, WIL - 9. ELMo and GPT (2) (0) | 2024.11.13 |
[Deep daiv.] NLP, WIL - 9. ELMo and GPT (1) (1) | 2024.09.09 |
[Deep daiv.] NLP, WIL - 7.1 Seq2seq 실습 (1) | 2024.09.06 |