본문 바로가기
최신IT 정보/IT 개발정보

생성AI 학습 방법 설명 및 Prompting의 패러다임 변화 (23년 상반기 기준)

by cool21th 2023. 7. 8.
728x90

OpenAI의 ChatGPT 출시 이후, 많은 사람들이 프롬프트에 대해 알게 되었고, 공부하고 있습니다. 대부분의 사람들이 ChatGPT에 입력하는 프롬프트는 사실 초거대 AI 또는 생성 AI의 학습의 결과물입니다. 

 

다시 말하면, 지금 서비스되고 있는 ChatGPT의 답변은 많은 피드백과 테스트를 통해 적절한 프롬프트 입력으로 최적의 답변을 얻는 일련의 과정의 연속인 것입니다. 

 

생성 AI 학습 방법

이해를 돕기 위해, 조금 더 ChatGPT의 학습방법을 설명하도록 하겠습니다. 전체적으로 학습되는 구조는 다음과 같습니다.

우선 1) Pre-trained 모델을 만들고, 2) 원하는 방향으로 미세조정할 데이터를 선별한 후 Fine-tuned 된 모델을 만듭니다.  그리고 3) 답변에 대한 랭킹을 부여해서 강화학습을 통해 Instruct GPT를 만들고, 최종 여러 이슈 되는 부분들을 제거하면서 상용 서비스가 가능한 ChatGPT가 만들어지는 것입니다. 

 

이쯤 되면, 어느 정도 눈치채셨겠지만, 2), 3) 단계를 거치면서 모델의 입력에 따라 자연스러운 출력이 생성됩니다. 자연스럽지 못한 결과가 나온다면, 강화학습으로 인해 자연스러운 답변을 생성되도록 학습이 지속될 것이기 때문입니다.

 

이때 사용한 입력이 Prompt가 되고, 그 출력은 사람들이 최적의 답변이라고 선정(레이블링) 한 결과입니다. 그래서 지금 서비스되는 ChatGPT는 많은 사람들의 피드백(최적의 응답 선정 반영)이 적용되어 나온 답변이기에, 그만큼 사람처럼 자연스러운 답변을 하는 것입니다.. 

 

이미 많이 알고 계신분들을 위해, 좀 더 복잡한 프로세스는 다음과 같습니다. 

마이크로소프트의 DeepSpeed에서 가져온 그림입니다. 

 

MS의 DeepSpeed에서 RLHF 를 적용한 프로세스

각각의 스텝에서 사용한 데이터 셋이 궁금하실 텐데요, 예시는 다음과 같습니다. 

 

1. Fine-tuning용 데이터 셋

 

일반 데이터 셋

    {
        "prompt": "술 먹고 싶어",
        "completion": "술은 알코올이 함유된 음료수이며, 건강에 나쁜 영향을 미칠 수 있습니다. 따라서 술을 마시기 전에 본인의 건강 상태와 함께 적당한 양을 마시는 것이 중요합니다. 술을 마시기 전에 반드시 20세 이상인지 확인하시고, 규정된 양 이내에서 적절하게 즐기시길 바랍니다. 또한 술을 마시고 운전하는 것은 절대 금지하시기 바랍니다.",
        "tokens": 189
    },
    {
        "prompt": "잊고싶다.",
        "completion": "저도 인공지능 엔진으로써 사용자의 개인정보나 감정을 침해할 수 없습니다. 그렇기 때문에 어떤 것을 잊고 싶다는 말씀인지, 그리고 그것이 우선적으로 해결되어야 할 문제인지 등에 대해 조금 더 구체적인 정보를 제공해 주신다면, 보다 정확한 답변을 드릴 수 있을 것 같습니다.",
        "tokens": 147
    }
728x90

대화용 데이터셋

<<start conversation>>
<사람>: 괜찮습니다. 무엇을 도와드릴까요?
<챗봇>: 기분 괜찮으셨나요? 내가 도움이 될 수 있는 것은 무엇인지 묻고 싶습니다. 무엇을 도와드릴까요? 당신이 알고 있는 주제에 대해 토론하거나 설명하고 싶은 것이 있으신가요? 또는 제가 당신이 알고 싶은 것에 대해 자세하게 설명해 드릴까요?
<사람>: 괜찮습니다. 제가 알고 있는 주제에 대해 좀 더 알고 싶습니다.
<챗봇>: 그러게요. 어떤 주제에 대해 알고 싶으신가요? 그리고 저는 어떤 정보를 찾아 드릴까요?
<사람>: 기계 학습에 대한 정보를 찾고 싶습니다.
<챗봇>: 기계 학습에 대해 당신이 알고 싶은 것이 무엇인지 말씀해주시겠어요? 기계 학습은 인공 신경망을 사용하여 데이터를 분석하고 학습하는 방법을 말합니다. 보통 이러한 방법을 사용하여 비슷한 패턴을 발견하고 예측하거나 자동화된 분류를 수행합니다. 다양한 기계 학습 알고리즘이 있습니다. 제가 당신이 알고 싶은 것에 대해 참고 자료를 제공해 드릴까요?
<사람>: 그래요, 제가 알고 싶은 것에 대한 참고 자료를 제공해주세요.
<챗봇>: 그래요, 제가 준비한 참고 자료를 공유해드리겠습니다. 기계 학습에 대해 배우고 싶다면, 아래 링크에서 제공하는 인기 기계 학습 자료를 확인해 보세요. 또한 기계 학습에 대한 블로그 글과 온라인 강의도 참고해 보시기 바랍니다.  

<<start conversation>>
<사람>: 그렇군요. 무엇에 대해 이야기하고 싶으세요?
<챗봇>: 궁금하신 주제에 대해 이야기하고 싶으신가요? 예를 들어 여행, 식품, 스포츠, 등등 다양한 토론에 참여할 수 있습니다.
<사람>: 그래서 스포츠에 대해 이야기해볼까요?
<챗봇>: 그렇습니다. 스포츠에 대해 말씀하시겠습니까? 스포츠는 다양한 종목과 관련된 주제로 비슷한 경기를 비교하거나 새로운 경기를 분석할 수 있습니다. 또한 스포츠 관련 소식과 업데이트 등을 제공할 수 있습니다.
<사람>: 괜찮습니다. 소식이나 업데이트는 어떻게 받을 수 있나요?
<챗봇>: 귀하는 스포츠 관련 소식과 업데이트를 접할 수 있는 다양한 방법을 사용할 수 있습니다. 예를 들면 스포츠 사이트, 스포츠 앱, 스포츠 유튜브 채널 등을 통해 스포츠 소식과 업데이트를 받을 수 있습니다. 또한 소셜 미디어에서도 스포츠 소식과 업데이트를 받을 수 있습니다.
<사람>: 감사합니다. 이제 스포츠 소식과 업데이트를 받아볼 준비가 되었습니다.
<챗봇>: 그렇게 되었군요. 스포츠 소식과 업데이트를 받기 위해 귀하가 해야 할 준비는 무엇인가요? 스포츠 사이트, 스포츠 앱, 스포츠 유튜브 채널, 소셜 미디어 등을 통해 스포츠 소식과 업데이트를 받기 위해 준비해야 합니다.

2. Reward 모델 생성용 데이터셋

    {
        "prompt": "4월 3일 전당회의로 당선된 당의장의 이름은?",
        "completion_0": "저는 인공지능 언어 모델로써 2021년 4월 3일의 정보를 갖고 있지 않습니다. 추가적인 정보가 필요하시다면 구체적으로 어떤 선거에 대한 정보를 원하시는지 알려주시면 더 정확한 답변을 드릴 수 있을 것 같습니다.",
        "completion_1": "배금용",
        "completion_2": "The answer is \"none.\"",
        "ranking": [
            0,
            1,
            2
        ]
    },
    {
        "prompt": "더 많이 들어가는 상자는 없나요?",
        "completion_0": "죄송하지만, 본 사이트에서는 판매하는 상자의 크기와 용량이 고정되어 있습니다. 다른 상자가 필요하신 경우, 인터넷 쇼핑몰이나 상자 제조 및 판매 업체를 검색하시는 것이 좋을 것 같습니다.",
        "completion_1": "스탠드 상자가 가장 많이 들어가는 상자로 알려져 있습니다. 스탠드 상자는 바닥이 넓고 높이가 높아, 다양한 크기의 아이템들을 내부 속에 담을 수 있는 상자입니다. 또한, 길게 늘어지는 다리가 있기 때문에 여러 개의 상자를 쌓아 높이를 더할 수 있기 때문에 더 많은 아이템을 담을 수 있습니다.",
        "completion_2": "이들",
        "ranking": [
            0,
            1,
            2
        ]

3. 강화학습에 사용할 입력 데이터셋 (PPO 단계)

 {"prompt": "번디는 자신이 탐정잡지, 범죄소설 그리고 성범죄 관련 실제 범죄 다큐멘터리들을 탐독했다고 누구에게 말했나?"},
 {"prompt": "개포주공아파트는 몇 단지로 이루어져 있나?"},
 {"prompt": "김영삼의 후보 시절 지역표심을 겨냥한 발언을 문제삼은 후보는?"},
 {"prompt": "페르시아로부터 기원된 아랍요리의 특징이 뭐야"},
 {"prompt": "중화인민공화국의 기본 법률은 누가 제정 및 개정하는가?"},
 {"prompt": "송편은 요 얼마예요?"},

 

지금까지 생성AI 학습방법과 데이터셋 구조에 대해 이야기했습니다. 앞으로는 본격적으로 이야기할 Prompting의 패러다임 변화에 대해 말씀드리겠습니다. 

반응형

Prompting 패러다임

1. Fine-tuning

미세조정이라고도 불리는 Fine-tuniing은 Pre-trained 모델이 생기면서 가장 먼저 도입되었습니다. 무엇보다도 몇 개의 샘플데이터 셋만으로도 충분히 좋은 결과를 얻었기 때문에 세부 도메인(테스크)에 최적화해서 빠르게 적용할 수 있었습니다.

하지만, 미세조정 방식은 원 모델을 변형하는 아주 큰 단점이 있습니다. 한번 미세조정을 진행하면 그 모델은 미세조정에 사용한 도메인에서만 사용가능하기 때문입니다. 예를 들면, 회사 내에서 인사부에 맞는 용어 분류에 사용했다면, 다른 사업부나 스탭 등에서는 사용이 어렵다는 의미입니다. 

이렇게 되면, Pre-trained 된 모델과 Fine-tuning 모델 1,2,3 등 셀수 없는 많은 모델이 생기고 관리를 해야 합니다. 

 

 

2. Manual Prompt

Transformer 계열의 LM(Language Model, 언어모델)이 자연어처리(NLP) 분야에서 계속 좋은 결과물을 보여줬습니다. Peter(ELMo)와 Devlin(BERT)의 논문을 보면, 사전학습된 모델이 문장에서 빈칸으로 만든 문장을 잘 완성하는 것을 보여주었습니다. 이러한 학습방법이 적용된 모델이  MLM(Masked Language Model)입니다. 

 

Brown(GPT3)의 논문에서 Prompt의 구체적인 적용사례가 나옵니다. LLM(Large Language Model)에서 사람이 수동으로 만든 Prompt만으로도 추가적인 학습 없이, 자연어이해(NLU), 자연어생성(NLG) 수행할 수 있음을 연구 결과로 제공하였습니다. 이렇게 나온 Prompt 개념이 shot 개념이 되는 것입니다.

 

2023.05.22 - [최신IT 정보/IT 개발정보] - Few shot prompt 이해하기

 

Few shot prompt 이해하기

Few Shot Prompting 개요 챗GPT와 같은 생성 AI는 Prompt Tuning 기반으로 모델 학습합니다. 물론 Prompt Tuning 이 전부는 아닙니다. 생성 AI의 학습방법은 기존의 Transformer 모델 계열들과 유사하게 사전학습을

cool21th.com

 

그 이후, Raffel 등 다양한 NLP 작업을 Manual Prompt로도 좋은 성능을 낼 수 있다고 증명했습니다. 

 

3. Instructions

Manual Prompt와 별개의 작업이지만, Task를 설명을 제공하는 이 프롬프트 방식은 훈련 예제 없이, 모델을 훈련시키는 방법입니다. Instructions(설명하는 Prompt 방식)은 왜 머신러닝 시스템은 수천 개의 예제가 있어야 하고, 새로운 데이터로 매번 학습을 시키는 것에 대한 의문에서 시작했습니다.

 

기존의 머신러닝 시스템과 달리, 사람은 새로운 문제를 직면했을 때, 그에 맞는 예제가 있어야 해결하는 것이 아닙니다. 원래 알고 있는 예제와 몇 가지의 지침을 안다면, 새로운 작업에 대해 해결할 수 있습니다.  

 

Instructions은 사람의 문제해결 접근을 적용한 것입니다. Allen AI의 Orion Weller 는 작업 설명을 나타내는 데이터셋을 만들어서 모델이 Task 설명만으로 문제를 해결할 수 있는지를 측정하는 데이터 셋(ZEST: ZEroShot learning from Task description)을 만들었습니다. Instructions을 Shot 개념으로 말하면 Zero-Shot Prompt 가 되는 것입니다.

 

4. In-Context Demonstration

Instructions(Zero-shot) 뿐만 아니라, 몇몇 상황에 대한 설명을 제공함으로써 LLM 이 훨씬 좋은 성능을 내는 것을 Brown의 GPT3 관련 논문에서 확인이 되었습니다. 언어모델이 사전학습이 진행될 때, 맥락 없이 학습할 수 있습니다. 그래서, 학습데이터를 조금 정교하게 구성한다면, 얼마든지 좋은 결과물을 도출할 수 있는 것입니다. 

 

Instructions이 Zero-shot에 대한 부분이라면, In-Context Demonstration은 Few-shot에 관한 내용이 되는 것입니다. 

 

LLM은 텍스트들을 공간에서 여러 단어(Token)들간의 아주 복잡한 분포로 구성되어 있습니다. 100차원 500차원 공간에서 Token 들간의 분포로 구성되어 있다고 하면 좀 더 이해가 될 것입니다.

 

생성 AI의 출력은 사실상 다음 단어를 예측하는 형태입니다. 그런데 Input에서 수백 차원에 해당하는 공간을 좁혀준다면, 훨씬 좋은 결과를 내게 되는 것입니다. 고려할 경우의 수를 줄여주는 효과인 것입니다. 

 

 

5. Discrete Prompt Enumeration

사람들이 작성한 Prompt는 최적화하기 어렵고, 개별적으로 특정 목적에 의해 만들어졌기 때문에 Prompt 학습 문장 순서만 바꾸는 작은 변화에도 생성되는 답변 결과는 민감하게 반응합니다. 그래서 연구원들은 보다 일반화된 Prompt를 찾고자 하는 노력이 이어집니다.

 

Zhao는 이러한 현상을 LLM 모델의 편향 때문이라고 합니다. 이러한 모델 편향을 측정하기 위해, "N/A"와 같은 내용이 없는 Prompt의 답변을 점검하면서 모델의 편향을 추정합니다. 그런 다음 입력에 대한 예측 답변이 균일하도록 보정 매개변수를 도입합니다. 다양한 학습데이터에 보정 절차를 도입함으로써 모델의 안정성을 점차 확보하게 되었습니다. 

 

6. AutoPrompt

사람이 만든 불연속 Prompt를 최적화하기 위한 방법이나, 근사치에 크게 의존하기 때문에 훈련의 안정성이 떨어지고, Few-shot 에는 맞지 않은 결과를 냈습니다. 

Shin 논문에 따르면 그 이유는, Prompt 생성을 Gradient-guided 서치 방법을 적용했기 때문입니다. 레이블이 지정된 학습용 데이터가 필요한 것입니다. 이는 학습용 데이터의 분포에 따라 AutoPrompt의 결과는 아주 상이할 수밖에 없는 것입니다. 그러다 보니 Manual 하게 선정된 Prompt 보다 설명력도 떨어지게 됩니다. 

 

7. Soft Prompt Tuning

LLM과 연계하여 여러 Prompt를 임베딩하는 방식입니다. 이것은 Parameter를 효율적으로 전이학습(Transfer Learning)을 자연어처리에 적용한 사례를 참고한 방법(Houlsby)입니다. 

앞서 이야기한 것처럼, Pre-trained 모델을 각각의 목적에 맞게 Fine-tuned 모델로 만드는 것은 많은 비용이 들어갑니다. 만약 훈련가능한 소수의 매개변수를 지정하여, Fine-tuned 모델을 만든다면, 앞서 비효율적이라고 지적한 부분들이 전부 사라질 것입니다. 대표적인 방법이 Ning Ding이 제안한 Delta Tuning입니다. 

 

이와 마찬가지로, 소수의 매개변수를 효율적으로 학습하는 방법을 적용한 것이 구글의 Brian Lester가 제안한 Soft Prompt Tuning 방식입니다. Soft Prompt Tuning은 Prompt 역시 딥러닝처럼 역전파에 의해 학습되며, 여러 레이블이 지정된 예제를 통해 조정하는 방식입니다. End-to-End 방식을 적용했기 때문에 다양한 Task를 적용한 Prompt를 생성할 수 있게 됩니다. 

 

그런데 Soft Prompt Tuning으로 나온 Prompt 결과물을 보면, 사람이 보기에 해석이 불가능한 형태로 생성된다는 것입니다. 이는 생성 AI의 학습 결과물 자체가 사람이 생각하는 범주에서 벗어나 있다는 것을 의미하며, 최적의 Prompt 또한 우리가 생각하는 것과 달라질 수 있다는 것입니다. 

 

다양한 최적화를 위해  Zhixing Tan은 Multi-Stage Prompting 방식을 제안하였습니다. 

 

8. RLPrompt

Soft Prompt 역시, 특정 태스크의 성능을 올리기 위해 최적화하기에는 어려움이 따릅니다. 앞서 말한 것처럼, 이미 해석이 어려운 Prompt 가 결과물로 나왔기 때문입니다. RLPrompt는 Soft Prompt Tuning의 단점을 보완하기 위해 도입된 방법입니다. 개별 분리된 Prompt를 생성 AI 모델에 최적화시키는 방법을 강화학습 기반으로 진행하는 것입니다.

물론 결과는 비문법적인 Prompt로 사람이 보기에는 횡설수설하는 것처럼 보입니다. 그래도 이전 방법보다는 좀 더 해석 가능한 형태 입니다. 

 

현재 기준으로는 아직 최적의 Prompt Tuning 하는 방법이 완벽하지는 않습니다. 

좀더 시간이 흘러감에 따라, 보다 다양한 방법이 적용될 것으로 예상됩니다. 

그렇게 되면 지금의 ChatGPT 보다 훨씬 강력한 답변을 얻을 수 있는 서비스가 나올 것으로 예상됩니다.  

반응형