관심 있는 NLP 논문을 읽어보고 간단히 정리했습니다.
혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 🙇♂️
[Google, Stanford University]
- 모델이 태스크를 이해할 때 참고할 instruction 또는 natural language가 없는 경우, input-label mapping을 정보로 이용하는 Symbol Tuning을 제안
- unseen in-context learning tasks에 대한 성능이 뛰어나고 underspecified prompts에 더욱 robust하게 됨
- 학습하지 않았던 algorithmic reasoning task에 뛰어난 성능 & flipped-labels 태스크 수행 능력이 복구됨
출처 : https://arxiv.org/abs/2305.08298
1. Introduction
LLM의 능력을 평가하는 중요한 태스크 중 하나는 추론(reasoning)입니다.
언어 모델의 추론 능력은 모델의 크기가 기하급수적으로 증가하면서 '갑자기' 나타났다(emergent ability)고 여겨지기도 하는데요,
특히나 주어진 prompt를 '이해'하고 답변을 낼 수 있는 것으로 보이는 In-context Learning 능력이 크게 주목을 받게 되었죠.
물론 여러 예시를 포함하는 few-shot prompt가 언어 모델의 성능을 비약적으로 향상시켜주는 비결이라는 것은 사실이지만, 언어 모델은 여전히 '프롬프트에 지나치게 민감하다'는 문제점이 있습니다.
결국 각자의 상황에서 최적의 프롬프트가 무엇인지 탐색하는 과정이 필수처럼 여겨지기도 하죠. (prompt engineering)
이에 대처하는 여러 방법론이 있겠습니다만 본 논문에서는 기존과 다른, 하지만 굉장히 간단한 fine-tuning 기법, symbol tuning을 소개합니다.
기존에는 fine-tuning, 그중에서도 instruction tuning이라고 한다면 말 그대로 instruction을 포함하는 학습 방식을 썼습니다.
언어 모델이 학습하고자 하는 태스크가 무엇인지 instruction에 잘 명시되어 있고, 또 이에 대한 label도 태스크와 관련성이 높았죠.
그러나 여기서는 언어 모델이 이해해야 하는 instruction과 label이 없어서 모델이 주어지는 context에 '온전히 집중'하여 태스크를 파악하도록 합니다.
즉, 언어 모델의 진정한 추론 능력을 향상시킬 수 있도록 학습 데이터를 구성하겠다는 뜻입니다.
이렇게 함으로써 학습 당시 보지 못했던 데이터들에 대해서도 (unseen data) 뛰어난 처리 능력을 보유할 수 있게 되었다고 주장합니다.
뿐만 아니라 추론 능력을 바탕으로 알고리즘 문제도 잘 풀어낼 수 있게 된다고 합니다.
자세한 내용은 다음 장에서 알아보도록 하겠습니다.
2. Symbol Tuning
Symbol Tuning 컨셉을 잘 보여주는 이미지입니다.
왼쪽의 Instruction Tuning과 비교하면 Instruction이 아예 없습니다.
첫 번째 예시에는 'This movie is great', 두 번째 예시에는 'Worst film I've ever seen'이 텍스트로 주어집니다.
오른쪽 Symbol Tuning에서는 이 텍스트를 어떻게 처리하라는 설명이 없음에도 불구하고 Foo, Bar 라는 임의의 label과 matching 해야 하는 상황입니다.
원래 의미는 각각 Positive와 Negative이지만 달라진 것에 대한 설명이 없고, 여기서의 패턴을 바탕으로 주어지는 텍스트에 대한 추론을 이어나가는 것이 핵심입니다.
이런 과정을 간단히 생각해보면 '언어 모델의 눈치를 키워주는 학습 방식'이라고도 볼 수 있을 것 같습니다.
예를 들어 사람끼리 게임을 하고 있다고 가정해 보겠습니다.
첫 번째 사람이 아이폰을 보면서 말합니다, '갤럭시!'
두 번째 사람이 윈도우를 보면서 외칩니다, '맥 OS!'
세 번째 사람이 남자를 보면서 말합니다, '여자!'
마지막 사람 앞에는 강아지 한 마리가 있습니다.
마지막 사람이 말해야 하는 단어는 무엇일까요?
강아지의 반대말이 어디 있냐, 고 생각할 수도 있겠지만 대부분은 '고양이'를 떠올릴 수 있었을 겁니다.
이렇게 우리가 무슨 특정한 일을 하고 있다고 서로 알리지 않더라도 눈치를 통해, 다른 사람들의 행동 양식을 보고 파악을 할수도 있다는 것이죠.
반대로 생각해 보면 instruction도 없고 label도 실제 태스크와 무관한 것을 제시한다면 정말로 패턴을 빠르게 익혀 답하는 것 외에는 방법이 없는 셈입니다.
실험을 할 때는 네 가지 상황으로 나누어 결과를 비교했습니다.
Instruction이 명확히 존재할 때와 그렇지 않을 때, 그리고 Label이 이와 관련성이 있을 때와 그렇지 않을 때입니다.
이미지에서 가장 왼쪽이 일반적인 instruction tuning에 해당하고, 가장 오른쪽이 위의 예시 상황과 동일합니다.
개념적으로 더 특별한 건 없습니다.
다만 어떤 식으로 label을 정했고 또 example을 만들었는지에 대해서는 확인해 볼 가치가 있겠죠.
3. Experimental Setup
symbol tuning에 사용된 22개 데이터셋으로, 전부 HuggingFace에서 publicly-available NLP 데이터셋입니다.
symbol tuning은 임의의 label로 기존 label을 대체해야 하므로 분류 태스크의 데이터셋만 사용했다고 합니다.
균형 있는 학습을 위해 각 데이터셋에서 최대 25k 개 examples을 무작위로 선정합니다.
위 데이터셋들을 사용하여 만든 학습/평가용 데이터셋의 구성은 아래와 같습니다.
임의의 글자(토큰)를 label로 크게 세 종류로 사용한 것을 알 수 있습니다.
1-4 자릿수의 숫자, 1-3개 글자의 조합, 단어 리스트 중 무작위 10,000개.
재밌는 것은 평가용 데이터셋은 학습용과 구성이 크게 다르다는 점입니다.
그래서 숫자의 자릿수, 글자 조합을 구성하는 글자의 개수 등을 다르게 정했습니다.
그리고 일반적인 학습/평가 데이터셋 사이즈의 구성이 아니라는 점도 눈에 띄는 것 같습니다.
(1:9 비율..? 보통은 반대를 쓸 텐데요)
실험에 사용된 모델은 Flan-PaLM-8/62/540B 입니다.
여기서 왜 instruction-tuned 모델을 사용했는지에 대한 설명이 제시되어 있는데 무척 흥미롭습니다.
일반적으로 base 모델에 instruction tuning을 하기 위해서는 꽤나 많은 양의 고품질 데이터가 필요한 것으로 알려져 있습니다.
그러나 본 논문에서 하고자 하는 것은 없던 instruction following 능력을 만들어주는 것이 아니므로 해당 과정이 불필요하다고 언급합니다.
오히려 instruction tuning을 통해 획득한 모델의 능력을 저해하지 않는 선에서 적은 양의 데이터로 학습을 진행할 수 있다고 말합니다.
모델, TPU, optimizer 등에 관한 세부 스펙은 논문에 있으니(3.3 Models & Finetuning Procedure) 자세한 내용이 궁금하신 분들은 참고해 보셔도 좋을 것 같습니다.
4. Experiment Results
4.1. Symbol-Tuned Models are Better In-Context Learners
위에서 언급한 것처럼 symbol tuning은 모델이 in-context 상황에 집중할 수밖에 없는 상황에서 특히 좋은 성과를 거둘 수 있습니다.
위 실험 결과 중 눈에 띄는 것은 크게 두 가지인 것 같습니다.
1) 모델의 크기가 유의미하게 커야 합니다.
8B 사이즈의 모델은 일부 상황에서 성능이 하락하는 모습을 보여줬습니다.
안 그래도 relevant labels와 task instructions이 주어지는 상황에서는 symbol tuning의 기대효과가 크지 않은데, 모델의 크기가 작으면 오히려 성능이 떨어집니다.
모델에게 불필요한 컨텍스트 유추를 하게 만드는 것이 원인이 아닐까 추측할 수 있습니다.
2) 결국 Relevant labels, Task instructions가 있을 때의 정확도가 더 높습니다.
향상폭만 놓고 보면 당연히 본 연구에서 contribution으로 생각하는 영역에서 진가를 발휘하게 됩니다만, 절대적인 수치가 높지는 않습니다.
원래 높은 점수에서 더 높은 점수를 달성하기가 어렵다는 점을 생각해 보면 당연한 결과인 것도 같습니다.
5등급에서 3등급 가는 것보다는 3등급에서 1등급 가는 게 어렵다는 뜻이죠..
그래서 이걸 잘했다고 볼 수 있는지는 약간 의문입니다.
4.2. Symbol Tuning Improves Algorithmic Reasoning
오히려 확실하다고 느껴진 것은 symbol tuning이 알고리즘 문제를 더 잘 풀게 해 준다는 점입니다.
각각의 태스크에 대해서 저도 정확히 알지는 못하지만 확실히 symbol tuning을 적용한 모델의 추론 능력이 향상되었음이 명확히 드러나느 것 같습니다.
재밌는 것은 그 효과가 작은 모델에서 더 극적으로 나타났다는 점이기도 하고요.
4.3. Symbol-Tuned Models Can Override Priors Via Flipped Labels
선행 연구에 따르면 pretrained language model(PLM)은 instruction tuning을 거치면서 in-context에 나타난 flipped labels를 이해하는 능력을 잃게 됩니다.
예를 들어 label이 long인 경우 short으로 답변하게 하고, label이 cool인 경우 hot으로 답변하게 하는 태스크 등을 말합니다.
positive ↔ negative 교환을 생각하면 쉬울 것 같습니다.
이게 PLM에게는 어렵지 않은 태스크인 것으로 알려져 있습니다.
그런데 context(눈치)를 이해하는 능력을 크게 향상해 주는 symbol tuning 이후에는 instruction tuning을 거치며 상실되었던 이 능력이 복구되는 경향성이 나타났다고 합니다.
그래프 상에서는 회색과 진한 파란색이 뛰어난 성능을 보이고 있고, 연한 파란색은 성능이 저조하다는 것을 알 수 있습니다.
심지어 특정 태스크에서는 거의 100점에 달하기도 하고, base model의 성능이 가장 뛰어난 경우도 있습니다.
여기까지가 메인 실험의 결과들을 정리한 내용입니다.
5. Ablation Study
5.1. Number of Tuning Steps
위에서 언급한 것처럼 본 연구에서는 불필요한 학습 과정/데이터를 포함하지 않기 위해 instruction tuned 모델을 사용했습니다.
그래서 실제로는 얼마만큼의 학습 과정이 요구되는지 확인한 결과입니다.
그래프에서 볼 수 있는 것처럼 웬만해서는 1k~2k 스텝 정도 학습을 하면 모델이 충분한 성능을 갖추게 됩니다.
그 이후에는 학습을 더 한다고 해서 성능이 무조건 향상되는 것도 아닙니다.
5.2. Mixing Instruction-Tuning Data
작은 사이즈의 모델은 symbol-tuning data에 쉽게 over-fitting 되는 경향성이 파악되었다고 합니다.
이를 방지하기 위해서 일반적인 instruction-tuning data를 학습 과정에 포함한 실험 결과를 제시합니다.'
가장 작은 8B 사이즈 모델의 경우 전체 학습 데이터의 16%를 symbol-tuning 데이터로 구성하고, 나머지는 instruction tuning 데이터로 구성한 것의 효과가 좋았습니다.
최적이었다고는 볼 수 없으나 대부분의 상황에서 좋은 결과를 가져다준 수치입니다.
이를 보면 생각보다 많지 않은 양의 데이터로도 symbol-tuning의 효과를 볼 수 있다는 걸 알 수 있습니다.
하지만 flipped labels 태스크의 경우, symbol tuning data의 비중을 높일수록 이를 더 잘 처리할 수 있게 되었다고 합니다.
5.3. Number of Tuning Datasets
본 연구에서 강조하고 있는 특징 중 하나는 학습 중 마주치지 못했던 유형의 데이터에 대한 robustness라고 할 수 있습니다.
이를 보장하기 위해서 다양한 데이터셋을 활용하는 것이 효과적이었음을 실험을 통해 제시하고 있습니다.
마찬가지로 모델 사이즈에 따라 큰 차이를 보이고 있긴 합니다만, 데이터셋의 종류가 다양할수록 모델 성능 향상에 도움이 된다는 걸 알 수 있습니다.
6. Conclusion
핵심적인 내용들을 요약하면 다음과 같습니다.
- task instruction, relevant labels가 부족한 상황에서 symbol tuning의 효과가 극적이다.
- symbol tuning은 NLP 데이터셋 중에서 분류 데이터만 사용했고, label을 임의의 토큰(단어) 등으로 대체하여 사용하는 방식이다.
- 학습 효과는 사이즈가 어느 정도 큰 모델에서 나타난다.
- symbol tuned 모델은 reasoning 능력이 향상되어 flipped labels, algorithmic reasoning 문제를 잘 풀게 된다.
- 깡 instruction tuning에 비해 훨씬 적은 양의 데이터만으로도 학습 효과를 볼 수 있다.
- 학습 때 접하지 못했던 데이터들에 강건하다는 장점을 지닌 학습 기법이다.
마지막으로 개인적인 감상입니다.
- 저자들이 밝힌 instruction tuned 모델을 사용한 이유가 진짜일까?
- 기본적으로는 PLM에 symbol-tuning을 적용해서 얻는 것이 적을 거라고 예상됩니다.
원래 언어 모델이 instruction following 능력을 갖추게 만들기 위해서는 꽤 많은 양의 데이터가 필요합니다.
그리고 주로 다양한 종류의 데이터를 고품질로 수집하여 학습에 사용해야 한다고 알려져 있습니다.
만약 symbol-tuning에 사용하는 형태의 데이터셋만으로 PLM을 학습하게 된다면 지나치게 over-fitting 될 것으로 예상됩니다. - 언어 모델이 특정 태스크에 집중하도록 만드는 것 자체는 문제라고 볼 순 없는 것 같습니다.
그러나 본 연구는 언어 모델의 reasoning 능력을 향상시키는 색다른 방식, 그리고 학습 외 데이터에 대해 강건하도록 만드는 학습 방식을 제시하고 있기 때문에 언어 모델의 기존 능력 저하를 막고자 했던 것 같습니다.
다시 말하자면 여러 태스크에 대해 두루 잘하는 LLM의 특징을 다 날려먹게 되면 의미가 없는 연구가 될 가능성이 높았던 것이죠. - 실제로 언어 모델을(작은 사이즈일지라도) 사용하는 대부분의 사람들은 Base 모델보다 Instruct 모델을 사용하여 태스크를 수행합니다.
이유는 너무나도 단순한 게 성능이 뛰어나기 때문입니다.
보통은 챗봇 형태의 모델을 만들고자 하는 시도가 많고 이는 Question & Answering 형태로 이뤄집니다.
그런데 PLM(base)은 그런 단순히 next token prediction만 수행했기 때문에 이런 것들이 전혀 불가능합니다. - 만약에 진정한 의미의 추론 능력 향상을 도모했다면 추론 태스크로 대표적인 MWPS 등에 대해서는 왜 실험하지 않았는지 의문을 제시할 수 있을 것 같습니다.
algorithmic 태스크도 분명 의미가 있지만 학습할 때와 완전히 다르면서도 언어 모델의 추론 능력을 파악하는 시도가 필요하지 않았을까 싶습니다.
- 기본적으로는 PLM에 symbol-tuning을 적용해서 얻는 것이 적을 거라고 예상됩니다.