Language Model 이야기 (3) – Small LM의 가능성
프롬프트 엔지니어링(Prompt engineering)과 Small LM의 가능성을 알아봅니다.
*본 연구는 모두의연구소 K-디지털 플랫폼의 지원 받아 작성된 글입니다.
- ⬅️ 이전 글: FunLM-LAB의 Fun한 LM이야기 (2)
시즌1 : ChatGPT의 근본원리를 파헤쳐 보다.
- FunLM LAB 시즌1을 시작하면서
- GPT-3에서 시작된 새로운 패러다임
- InstructGPT, LM과의 대화를 가능하게 하다
- ChatGPT을 탄생시킨 발견, In-context Learning(ICL)
- ICL의 원인에 대한 가설, Double Descent
- Prompt Engineering과 Small LM의 가능성
- FunLM LAB 시즌1을 마치며
5. ICL의 원인에 대한 가설, Double Descent
ICL이란 어떤 것인가에 대해서는 약간이나마 이해할 수 있게 되었습니다만, 여전히 ICL 현상이 생겨날 수 있었던 이유에 대한 명확한 해명을 얻은 것은 아닙니다. 이 질문에 대한 명확한 해답은 아직 없는지도 모릅니다만, OpenAI에서는 이 블로그[링크]를 통해 Double Descent라는 현상에 주목한 바 있습니다. 2019년 12월에 관련 논문이 발표되었으니, GPT-3를 한참 만들고 있던 시점에 발표된 논문이라 GPT-3가 직접 언급되고 있지는 않지만, 실은 GPT-3를 만드는 과정에서의 고민이 담긴 논문이라고 할 수도 있을 것 같습니다.
Double Descent라는 현상은 2018년에 Belkin et al, 2018. Reconciling modern machine learning practice and the bias-variance trade-of [링크] 논문을 통해 처음 알려진 것입니다.
위 그림 (b)는 그간 머신러닝 연구자들에게 통념으로 받아들여진 Bias-Variance Tradeoff 개념에 위배됩니다. 그간의 통념에 따르면, 머신러닝 모델의 파라미터 사이즈를 데이터셋 사이즈에 비해 과도하게 무한정 늘이다 보면 한동안은 test loss가 train loss와 함께 계속 감소하지만, 일정 수준이 넘어가면 오버피팅이 발생해서 train loss가 떨어져도 test loss는 오히려 증가한다는 것이 상식이었습니다. 그런데, Double descent 현상이란 오버피팅이 발생해도 계속 모델 파라미터 사이즈를 늘리면서 계속 학습을 진행하다 보면 증가하던 test loss가 다시 떨어지기 시작하는 현상을 말합니다.
2019년 말, 한참 GPT-3를 만들고 있던 OpenAI의 시점으로 돌아가 봅시다. 당시에는 Language Model의 파라미터 사이즈를 늘려가기 경쟁이 치열했습니다. 지금이야 10B 파라미터를 보고도 별 감흥이 없지만, 구글이 발표한 T5의 11B 모델을 보면서 도대체 어디까지 파라미터 사이즈를 늘릴 셈인가 하고 놀라던 때가 바로 2019년 10월이었던 것을 생각해 보면, 여기서 얼마나 모델 사이즈를 더 늘리면 과연 LM 성능이 얼마나 더 좋아질지 궁금하기도 했겠지요. 하지만 한편으로는 수십억원이나 하는 학습비용을 들여 파라미터 사이즈를 175B로 늘렸는데 Bias-variance Tradeoff에 걸려 오히려 LM 성능이 더 떨어지는 것은 아닌지 하는 우려도 있었을 것입니다. 이때 OpenAI가 발견한 것은, 아니나다를까 큰 모델일수록 더욱 쉽게 double descent 현상이 발견되더라는 점입니다. 처음에는 이게 문제라고 생각했을지도 모르지만, 자세히 살펴보니 Double descent 현상 이후에는 오히려 large model이 더욱 유리한 구간이 있더라는 점입니다. 당시의 OpenAI는 이 현상에 대한 명확한 이유는 설명하지 못했고, 다양한 실험으로 이런 현상이 Universal하다는 점만 밝혀내었습니다.
이러한 Double descent 현상이야말로 ICL이 가능하게 한 핵심 메커니즘이 아닐까 하는 주장은 Anthropic의 연구자들을 통해 제기되었습니다. [링크]
Superposition, Memorization, and Double Descent 이라는 제목의 블로그에서 Double Descent 현상을 Feature Learning 관점에서 분석합니다. 아래 그림은 해당 블로그에서 제시한 것인데, Double Descent 현상 발생 전까지 학습한 feature들은 학습 초기에 경험했던 데이터 패턴에 대한 가설을 반영합니다. 이 가설(feature)은 데이터 패턴이 다양해짐에 따라 점점 다양해지다가, 마침내는 초기의 가설이 무의미해질 만큼 많은 가설집합을 파라미터에 학습하게 됩니다. 이 시점에서 오버피팅이 발생하게 되는데, 이 시점을 넘어 Double descent 현상이 발생하게 되면, 오히려 초기의 많은 feature들 대부분을 버리고 가장 핵심적인 feature를 중심으로 파라미터 재구축이 발생합니다.
이렇게 초기의 feature들을 버리고 재구축하는 과정에서 데이터셋의 가장 대표적인 feature들이 데이터셋을 제너럴하게 해석하는 추상화 능력을 얻게 된다는 점입니다. ICL이란 바로 LM이 텍스트를 해석하는 추상화 능력을 갖추게 되었다는 위 단락의 설명이 기억나시나요? GPT-3 등의 모델이 갖추게 된 언어능력의 본질은 엄청난 pretrain 과정 가운데 언어에 대한 메타인지 능력을 double descent 과정 가운데서 feature learning하게 된 것, 그것이 텍스트의 내용이라는 1차 feature를 오히려 잊어버리고, 텍스트의 메타역할이라는 2차 feature을 얻게 되었을 때 가능하게 된 것이라는 점을 미루어 짐작해 볼 수 있을 것 같습니다.
6. Prompt Engineering과 Small LM의 가능성
지금까지 ChatGPT가 어떻게 만들어지게 되었는지의 원리 위주로 살펴보았습니다. 하지만 결국 OpenAI같은 공룡들만이 다룰 수 있는 100B 넘어가는 LLM(Large Language Model)만이 이런 특별한 능력을 가질 수 있다면, 우리가 할 수 있는 일이란 그저 ChatGPT에 어떻게 prompt를 입력하여 ChatGPT를 효과적으로 사용하는 방법을 연구하는 것 뿐이라는 슬픈 결론에 도달하는 걸까요?
여기서 OpenAI의 InstructGPT 논문을 살펴봅시다. 이 논문 초록에는 아래와 같은 흥미로운 구절이 우리의 눈길을 끕니다.
In human evaluations on our prompt distribution, outputs from the 1.3B parameter InstructGPT model are preferred to outputs from the 175B GPT-3, despite having 100x fewer parameters.
Instruction Learning이란 유저와 LM이 상호작용하는 방법을 학습시키는 거라고 했던가요? 이걸 잘 학습한 (1.3B 정도의) 작은 LM도 큰 LM 못지 않게 똘똘해질 수 있다는 얘깁니다.
여기에 기대를 갖고 작은 스타트업도 뭔가를 해볼 수 있지 않을까요? 때마침 Meta에서는 LLAMA라는 멋진 LM을 오픈소스로 풀어 주었습니다. 그래서 Alpaca, Vicuna 등 ChatGPT에 버금가는 작은(?) LM들이 여럿 나오고 있습니다. 그리고 여러 곳에서 Instruction Dataset을 모아서 공유하면서 이런 움직임을 가속화하고 있습니다.
다양한 사례들을 일일이 언급하는 것은 무리일 것이므로 생략합니다. 하지만 주목해야 할 것은, 유저와 상호작용하는 패턴을 학습하는 것은 꼭 초거대 LM만이 할 수 있는 일은 아니라는 점입니다. 좋은 학습방법을 찾을 수 있다면, ChatGPT처럼 제너럴한 챗봇이 아니라 특정 상황맥락에서 스마트한 Dialogue System을 만드는 것은 ChatGPT의 힘을 빌지 않고도 얼마든지 가능하지 않을까 생각해 봅니다.
7. FunLM LAB 시즌1을 마치며
FunLM LAB 시즌 1은 위 글에서 충분히 담아내지 못할 만큼 재미나고 깊이있는 토론으로 가득했던 시간으로 기억합니다. 위에 정리한 짧은(?) 글은 그 깊이있는 토론의 1회 찍먹 수준에 불과하니까요.
그래서 FunLM LAB 시즌2 를 조만간 개시하겠다는 계획으로 이 글을 마무리하려고 합니다. 아마도 시즌2는 LM으로 구현하는 Agent
를 키워드로 진행하게 될 것 같습니다. ChatGPT를 비롯한 현재의 챗봇들은 어쩔 수 없는 수동성의 한계를 지니고 있습니다. 유저의 입력에 수동적으로 반응하는 것 이상의 무언가를 ChatGPT는 할 수 없습니다. 어떤 주어진 목적에 따라 계획(planning)을 세워 적극적/능동적으로 어떤 전략을 수행해 나가는 주체를 agent라고 부른다면 이런 agent를 어떻게 구현하면 좋을까요?
아마도 AutoGPT 등 최근의 트렌디한 연구결과들이 떠오르실 겁니다. 이외에도 다양한 연구들이 이제는 AGI라는 거창한 타이틀을 표방하면서 진행되고 있습니다. 이런 흥미로운 주제들을 모아 함께 재미난 세미나와 연구들을 함께해 보고 싶지 않으신가요? 곧 시작됩니다. 많은 관심과 참여 기대할께요. 그리고 많은 호응 보내주신다면 시즌1의 멋진 결과물들도 계속 블로그에 올라올지도 모르겠네요.
곧 돌아오겠습니다. Comming Soon!
- 📌 LAB 소개: FunLM-LAB 상세 페이지
- ⬅️ 이전 글: FunLM-LAB의 Fun한 LM이야기 (2)
모두의연구소 Language Model 관련 LAB LIST [🔗바로가기]
- CALM LAB(context-aware language modeing) LAB
- Goal-Oriented Dialogue System을 위한 Context-Aware Language Modeling 대한 연구
- LLM(large language model research) LAB
- Prompt Engineering, Transformer 모델 등 Large Language Model 응용 관련하여 연구 및 논문 작성
- KBLM(Knowledge based language model) LAB
- LM에 knowledge를 추가로 적용하는 방안과 해당 모델을 잘 경량화해서 application level에 활용될 수 있게 하는 방안에 초점을 맞추어 연구 및 개발
- KoAlpaca LAB
- KoAlpaca는 한국어 언어모델의 사용성을 향상시키기 위한 연구와 한국어 Instruct Set 개선을 목표로 하는 프로젝트
- CPLR(ChatGPT prompt learning research) LAB
- 대용량 언어 모델과 Zero Shot, One Shot, Few Shot Learning 기법, 그리고 Prompt Engineering을 활용하여 문서 추천 방식을 개선하고, 새로운 검색 트렌드를 제시
✏️ 필진: 백병인 I 편집자: 신태양