GPT fine-tuning - 5. in-context learning

Dongyoung Kim·2023년 3월 4일
3

GPT

목록 보기
6/12
post-thumbnail

🐰 Dongyoung:
GPT3 의 in-context learning 에 대해 설명해줘

🦄 ChatGPT:
GPT-3(Generative Pre-trained Transformer 3)은 기계 학습을 사용하여 사람과 유사한 텍스트를 생성하는 언어 모델입니다. GPT-3의 고유한 기능 중 하나는 컨텍스트 학습을 수행하는 기능입니다. 즉, 주어진 프롬프트나 컨텍스트에서 학습하고 해당 컨텍스트와 관련된 텍스트를 생성할 수 있습니다.

In-context learning은 "프롬프트 엔지니어링"이라는 기술을 통해 이루어집니다. 사용자가 프롬프트를 입력하면 GPT-3는 텍스트를 분석하여 컨텍스트를 이해하고 관련 출력을 생성합니다. 예를 들어, 사용자가 "오늘 기분이 슬프다"라는 프롬프트를 입력하면 GPT-3는 "그 말을 들으니 유감입니다. 제가 도와드릴 일이 있을까요?"와 같은 출력을 생성할 수 있습니다. 이는 GPT-3가 방대한 텍스트 코퍼스에 대해 교육을 받았고 언어와 인간 감정의 뉘앙스를 이해할 수 있기 때문입니다.

맥락 내 학습을 수행할 수 있는 능력을 통해 GPT-3는 관련성이 높고 개인화된 텍스트는 챗봇, 콘텐츠 생성 및 언어 번역과 같은 다양한 응용 프로그램에 유용한 도구가 됩니다. 그러나 GPT-3의 맥락 내 학습은 완벽하지 않으며 여전히 주어진 맥락과 관련이 없거나 부적절한 출력을 생성할 수 있다는 점은 주목할 가치가 있습니다. 따라서 생성된 텍스트를 신중하게 검토하고 편집하여 원하는 품질 및 관련성 기준을 충족하는지 확인하는 것이 중요합니다.

in-context learning 프롬프트의 내용만으로 하고자 하는 task 를 수행하는 작업입니다. 말 그대로 prompt 내 맥락적 의미(in-context)를 모델이 이해하고(learning), 이에 대한 답변을 생성하는것을 의미합니다. 즉 in-context learning 은 pretraining 이나 fine-tuning 처럼 모델의 weight 를 업데이트 하지 않고, 별도의 모델 학습과정이 존재하지 않습니다.

in-context learning

in-context learning 은 주어지는 context, 예시시에 따라 zero-shot, one-shot, few-shot 으로 나눌 수 있습니다

zero-shot learning

zero-shot 은 예시가 없이 task 가 주어졌을때 수행가능한 경우를 의미합니다. GPT 와 같은 언어모델들이 unsupervised learning 을 수행하나, GPT-2 이후부터 task 에 대한 학습이 이루어졌기에 대부분의 nlp task 들은 별도의 in-context learning 없이 zero-shot 으로 수행가능합니다. 번역이나, 요약, 분류등의 task 등이 zero-shot 으로 수행가능한 부분들입니다.

Prompt: 빨간 사과가 영어로 뭐야?

GPT: "Red Apple"

one-shot learning

one-shot 은 하나의 예시를 들어주고 task 를 수행하는경우를 말합니다.

Prompt: 빨간 사과는 red 사과라고 할께.
노란 바나나는?

GPT: 노란 바나나는 "yellow 바나나"입니다.

Few-shot learning

Few-shot learning 은 예시를 여럿주고 task 를 수행하는 경우를 말합니다.

Prompt: 빨간 사과는 red 사과라고 할께,
노란 바나나는 yellow 바나나야,
그럼 노란 사과는?

GPT: 노란 사과는 "yellow 사과"입니다.

one-shot 과 few-shot 의 차이는 예시를 하나 또는 여럿 들어주는것의 차이 입니다. 예시가 적어도 잘 알아듣는다는것은 이미 그 모델이 해당 상황에 대한 인지가 있다고 유추해볼 수 있으며, 예시가 많았을때 잘 할수 있다는것은 문맥적 이해 능력이 좋다고도 볼 수 있겠습니다.

이러한 zero-shot, one-shot. few-shot 에 대한 평가는 GPT-3 논문에서 다양하게 이루어졌습니다. 일부 task 에 대해서는 fine tuning 을 넘어서는 경우도 있고 그렇지 못한 경우들도 있으나, 어찌되었던 잘 작동할 수 있다는 점을 많은 예시와 테스트를 통해 보여주었습니다. (Brown, T. B., Mann, B., Ryder, N., Subbiah, M., Kaplan, J., Dhariwal, P., Neelakantan, A., Shyam, P., Sastry, G., Askell, A., Agarwal, S., Herbert-Voss, A., Krueger, G., Henighan, T., Child, R., Ramesh, A., Ziegler, D. M., Wu, J., Winter, C., … Amodei, D. (2020). Language Models are Few-Shot Learners. Advances in Neural Information Processing Systems, 2020-December. https://doi.org/10.48550/arxiv.2005.14165)

ChatGPT 에 살고있는 우리에게는 이러한 In-context learning 이 그렇게 특별하게 느껴지지 않을지 모르지만, 딥러닝 모델의 생성 방법론, 즉 data-model-output 의 관계를 생각해본다면 정말 신기한 일입니다. 학습되지 않은 내용에 대해 별도의 weight 업데이트 없이 그냥 말한대로 된다니요? pretrain 과정에서 in-context learning 을 하도록 명시적으로 가르처지지도 않았습니다 (unsupervised learning).

이는 마치 사람처럼 행동하는것처럼도 느껴지는데, 사람은 적응성과 유동성, 일반성이 있는 존재로서 in-context learning 이 된다지만 모든게 고정된 모델이 그렇게 행동한다니요. mit news 에서도 이건 미스테리한 일이라고 이야기하고 있습니다 (https://news.mit.edu/2023/large-language-models-in-context-learning-0207).

gpt-3 as a mixture of hidden mrkov models

위 뉴스기사에서는 pretrain 과정에서 여러 작업들에 대한 rank 들이 존재하고 이는 마치 작은 뉴럴넷 모델처럼 작동한다는 식으로 추측하였고, 이를 Hidden Markov Model 의 Bayesian inference로 설명하고자 하는 시도도 있습니다 (Xie, S. M., Raghunathan, A., Liang, P., & Ma, T. (2021). An Explanation of In-context Learning as Implicit Bayesian Inference. https://doi.org/10.48550/arxiv.2111.02080)

GPT 와 같은 거대모델을 HMM 으로 표현하면:

p(o1,...,oT)=θΘp(o1,...,oTθ)p(θ)dθp(o_1,...,o_T) = \int_{\theta \in \Theta} p(o1,...,o_T|\theta)p(\theta)d\theta

여기서 Θ\Theta 는 task 를 푸는 concept 들의 집합이며, oo 는 생성된 토큰, 그리고 이를 구하는 확률 p(o1,...,oT)p(o_1,...,o_T)을 계산하는 방법으로 Bayes' theorem 에 따라 θ\theta의 사전 분포와 o1,...,oTo_1, ..., o_T의 조건부 분포를 결합하여, 전체 θ\theta을 적분하여 전체 데이터의 확률을 계산합니다.

이러한 모델에 대해 inference 는

p(p(노란 사과는 ))
=12p(= \frac{1}{2}p(빨간 사과는 red 사과라고 할께θ1)+12p(|\theta_1)+\frac{1}{2}p(노란 바나나는 yellow 바나나야θ2)|\theta_2)
=="yellow 사과"

정도로 표현해 볼 수 있습니다.

위와 같은 in-context learning 의 과정은 다음의 Maximum Likelihood Estimation (MLE) 수 풀어볼 수 있는데,

arg maxyp(ySn,xtestarg maxypprompt(yxtest)\argmax_y p(y|S_n, x_{test} \rightarrow \argmax_y p_{prompt} (y|x_{test})

여기서 SnS_n 은 In-context 예시이고, xtestx_test가 주어졌을 때, SnS_n을 사용하여 yy가 출력될 확률이 최대가 되도록 하는 yy 값을 찾는 과정으로 MLE 를 통해 구할 수 있습니다.

이게 사실이라고 하면, 예시가 많으면 많을수록 더 많은 bayesian inference 가 일어나고, 이는 prediction 이 더 정확해 질 수 있음을 의미합니다. 즉 우리가 ChatGPT 를 사용할때 많은 예제를 제공해줌으로서 더 정확한 대답을 얻을 수 있다고 이해할 수 있습니다. (Figure 3 의 예시 kk 개수가 늘어남에 따라 그 정확도가 증가합니다). 그리고 one-shot 은 대체로 zero-shot 보다 못하다는 결과도 있습니다 (논문참조).

다만 왜 GPT 가 HMM 으로 표현되어야 하는가? 에 대해서 직접적인 설명은 불가하지만, 간접적으로 ablation study 를 통해 논문에서 보여주고 있습니다 (Figure 4). pretrain 과정에서 하나의 컨셉만 학습한다거나 (하나의 θ\theta만이 존재), pretrain 데이터가 random transition 을 가질때 (HMM 이 되지 않음) In-context learning 이 실패함을 보여줍니다.

결과적으로 GPT-3 와 같은 거대모델은 다양한 언어 테스크가 가능한 Hidden Markov Model 로 간주할 수 있고, 주어진 프롬프트를 추론하는 과정은 일련의 Maximum Likelihood Estimation 과정으로 이해해볼 수 있습니다.

개인적으로 gpt-3 논문을 보고도 few-shot learning, in-context learning 을 이해하지 못했기에 prompt engineering 을 믿지 않았지만, 양질의 실 사례들이 쏟아져나오는걸 보고 도대체 이게 무슨 일인가 하였습니다. 본 논문의 mixture of HMMs 에 대한 접근법을 통해 "추론" 이라는 과정도 하나의 "최적화" 방법이 될수 있다는 발상에 매우 재미있게 읽은 논문이었습니다.

이렇게 되면, 프롬프트를 작성하는 그 과정 자체가 gpt-3 와 같은 모델에 대한 결정론적인 최적화 과정이 되는것으로, 어떻게 "프롬프트" 를 작성하는가가 매우 중요해지게 됩니다. 물론 앞서 p-tuning 등의 transformation 접근법도 알아보았으나 이는 zero-shot 을 가능케 하기 위한 추가적인 내용일뿐 few-shot leaning 에 접근하지는 못합니다 (다만 p-tuning layer 가 커지면 가능할수는 있을것 같네요).

프롬프트의 작성방법, 프롬프트 엔지니어링에 대한 이야기를 하기 앞서, gpt-3 같은 모델이 in-context learning 의 관점에서 prompt 에 어떻게 반응하는가에 대한 연구를 다음 포스트에 이어서 보고자 합니다.

profile
AI professional for science and industry

1개의 댓글

comment-user-thumbnail
2023년 7월 27일

HMM의 베이지안 추론으로 결과를 확인해볼 수 있다는 과정이 정말 흥미롭게 다가왔습니다.
이를 이용한 MLE, 그렇기에 예시가 많을 수록 베이지안 추론이 더 많이 일어나고, one,zero-shot보다 few-shot에서 우수한 성능을 얻을 수 있다는 논리.
너무 재밌게 읽을 수 있었습니다ㅎㅎ 좋은 글 감사합니다!

답글 달기