자연어 처리 기술의 또 다른 혁명 - ChatGPT 시대 우리는 무엇을 해야하는가 -
1. ChatGPT의 빛과 어둠
1) 마이크로소프트 빌게이츠 "ChatGPT는 인터넷, PC정도로 중요한 발견이다"
2) 만들어진지 5일만에 100만 유저 달성
3) 이탈리아, ChatGPT의 개인정보 유출문제로 차단
4) 일론머스크, "멈출 수 없는 AI 레이스를 6개월만 쉬어가자"
5) 구글에 "ChatGPT"가 무엇인지 검색하면, 너무 많은 검색 결과를 주지만
ChatGPT한테 물어보면 검색 + 요약 + 설명을 깔끔하게 한번에 해
6) 하지만 아주 간단한 설명도 틀리게 말하는 경우가 많다
2. ChatGPT 이전의 시대
1) RNN - 자연어 처리 모델의 시초
1997년 개발 이후 2010년대까지 꾸준히 사용
한번에 한 단어만 모델에 넣을 수 있어서 병렬화가 불가능하여 학습시간이 매우 오래걸린다는 단점
LSTM, GRU등 다양한 Variant로 단점을 극복하고자 시도
2) Transformer - 자연어 처리의 역사를 바꾸다
병렬화가 불가능하다는 RNN의 단점을 무너뜨리다
Large Language Model(LLM) 시대의 시초
병렬화를 가능하게 하는 Self-Attention 모듈을 사용
attention은 단어와 단어 사이 관계를 숫자로 표현할 수 있음
self - attention은 입력으로 들어오는 모든 단어들끼리의 attention을 한번에 계산하는 기법
들어오는 모든 단어들 사이 attention을 한번에 계산하면서 훈련 시간은 감소하면서도 오히려 성능은 향상되는 결과
transformer의 등장으로 사람들은 모델을 학습시킬 수 있는 여건을 갖추게 되었다
3) 기존의 언어 모델 학습 방법
기존의 모델 학습방법은 (문제, 정답) 데이터셋을 최대한 많이 만들어서 학습
아래와 같이 (나는 행복해, 긍정), (나는 그저 그래, 중립), (나는 슬퍼, 부정) 같은 모든 (문제, 정답) pair를 만들어
모델에 학습시킴
하지만 고품질의 정답이 있는 데이터를 다량으로 만들기 어려운 문제
왜냐하면? 사람이 전부 직접 만들어야하니까
attention을 통해 모델을 굉장히 많이 학습시킬 수 있는 여건을 마련했지만, 많이 학습시킬 데이터를 어떻게 만들어야할까?
정답이 있는 데이터를 다량으로 만들기 어렵다면, 정답이 없는 데이터에서 무언가를 배우게 만들수는 없나?
"정답이 있는 소량의 데이터로 모델을 학습시키기 전에, 정답이 없는 다량의 데이터로 언어를 잘 이해시키자"
그러면 정답이 없는 다량의 데이터는 어디에 있는가? 인터넷에 존재하더라
4) pretraining - finetuning
정답이 없는 다량의 데이터로 언어를 잘 이해시키는 것이 pretraining
pretraining은 다량의 언어를 학습하며, 언어 그 자체를 이해하는 것을 목적으로함
정답이 있는 소량의 데이터로 모델을 학습시키는 것이 finetuning
pretraining으로 언어를 이해한 모델에 사람이 만든 고품질의 데이터로 특정 task를 잘 풀수 있도록 학습시킴
여기서 다량이라는 건 GPT는 책 7000권 수준의 학습, GPT - 3는 단어 5000억개 수준으로 학습했다고함
5) BERT vs. GPT
pretraining은 BERT, GPT의 2가지 방법으로 나뉘었다
BERT의 pretraining 방법은 Masked Language Model
문장의 단어중 일부를 지우고, 모델에게 지운 단어를 복원하도록 학습시키는 기법
인터넷에서 얻은 수많은 언어에서 일부를 랜덤하게 지우기만 하면 되니까, 굳이 사람이 데이터를 만들 필요가 없게됨
GPT의 pretraining 기법은 Causal Language model
주어진 문장에서, 바로 다음 단어를 생성하도록 학습시키는 기법
"My name is Sylvain"이라는 문장에서, My가 들어오면 name을 생성하도록 하고,
name이 들어오면 is를 생성하도록 하고, is가 들어오면 Sylvain을 생성하도록 하고...
두 기법을 통해, 인터넷에 있는 수많은 언어를 통해 굳이 데이터를 힘들게 만들지 않더라도 pretraining을 시켜서
모델이 언어를 이해하도록 만들 수 있게 되었다
지금까지도 유효하며 굉장히 많은 성능 향상을 이루게 되었다
BERT,GPT 이후 언어 모델의 연구 방향은 모델의 구조와 학습 방식을 개선하는 방향으로 나뉘었다
6) 모델의 구조와 학습 방식을 개선
BERT의 variant로 RobERTa, SpanBERT, ELECTRA 등 많은 모델들이 등장
모델의 구조와 학습 방식을 개선하는 방향
7) OpenAI - 모델을 키우자
모델을 일단 키우고 데이터를 많이 사용한다면 무슨 일이라도 일어날 것이다
GPT-2 , GPT-3 등
GPT - 117 million, GPT-2 - 1.5 billion, GPT-3 - 175 billion
인간의 뉴런이 1000억개(100billion)정도
이렇게 모델을 키우다보면, 모델의 성능이 향상되는 것은 당연했고
fine-tuning 뿐만 아니라 Few-shot 성능이 상승한다
8) Few shot과 Zero shot
pretraining - finetuning 과정에서는 finetuning을 위해 데이터를 만드는 과정이 필요하며,
만든 데이터를 모델에 학습시키는 과정이 여전히 필요하다
그런데 모델을 계속 키우다보니까, pretraining만으로도 처음 보는 문제에 대해 정답을 맞추기 시작함
그냥 pretraining만 무작정 시켰을 뿐인데, "나는 그저 그래"의 감정을 예측해달라고 하니까 "중립이에요"라고 대답을 해주기 시작
zero-shot은 문제의 설명만 주고 예제 없이 문제를 풀게한다
예) "카리나는 너무 예뻐"라는 문장을 영어로 번역해줘
one-shot은 문제의 설명과 예제를 하나만 주고 문제를 풀게 한다
예) "태연은 예뻐"를 영어로 하면 "Taeyeon is beautiful"
그렇다면 "카리나는 너무 예뻐"라는 문장을 영어로 번역해줘
few-shot은 문제의 설명과 예제를 몇개만 주고 문제를 풀게 한다
예) "태연은 예뻐"를 영어로 하면 "Taeyeon is beautiful"
"신세경은 우아해"를 영어로 하면 "Shin Sekyung is elegant"
그렇다면 "카리나는 아름다워"라는 문장을 영어로 번역해줘
모델을 무작정 키우니 GPT-2, GPT-3에서 Zero-shot으로도 좋은 성능을 보이며 가능성을 내보였다
9) 모델을 무작정 키우니 생기는 문제점
GPT-3가 생성해내는 답변이 믿을 수 없으며, 유해하고 도움이 되지 않는다.
사용자의 목적에 맞는 답변을 내놓지 못한다.
어떻게 하면 사용자의 목적에 맞는 답변을 내놓을 수 있을까?
3. ChatGPT의 시대
1) InstructGPT
"Training language models to follow instructions with human feedback"이라는 논문에서 제시
Reinforcement Learning with Human Feedback(RLHF)라는 방법을 통해 학습
핵심 아이디어는 "다양한 prompt에 대해 알맞은 정답을 사람이 직접 만들고 이를 통해 모델을 강화학습"시키는 알고리즘
1-1) step1(GPT-3.5의 훈련을 위한 데이터를 구축)
사람이 직접 다양한 prompt에 대해 알맞은 답변을 만들고 이를 통해 GPT-3.5를 finetuning
1-2) step2(GPT-3.5의 평가를 위한 데이터를 구축)
사람이 모델의 다양한 답변에 대해 순위를 매긴 데이터셋을 만들고 이를 통해 GPT-3.5의 답변을 평가하는 모델을 finetuning
1-3) step3
임의의 prompt가 들어올때, step1의 모델이 답변을 생성하고 step2의 모델이 답변을 평가하며, 평가된 결과를 바탕으로 step1의 모델을 다시 학습시킨다
그러면 step1이 다시 답변을 생성하며 step2가 다시 평가하고, 이런식으로 상호작용하며 강화학습하게 된다.
이렇게 사람의 손길을 거쳐 만든 1.3B의 InstructGPT가
175B의 GPT-3보다 사람의 사용성 측면에서 더욱 좋은 평가를 받게됨
2) ChatGPT
InstructGPT가 Chat을 목적으로 진화한 모델
학습방법에는 변화가 없으며 오직 데이터만이 다르다
InstructGPT는 한쌍의 (prompt,answer)로 GPT-3.5를 finetuning함
ChatGPT는 사람이 chatting을 할 수 있도록, 단순한 (prompt,answer)보다 데이터를 대화 형식으로 구축함
학습방법은 위에서 소개한 RLHF 방법으로 동일하게 생성 - 평가 - 재생성 - 재평가 -... 강화학습 방식
2022년 11월 세상에 공개되고 그 파급력은 어마어마하며 2024년 10억달러를 벌 것으로 예측중
3) ChatGPT 사용방법
web에서 무료로 사용가능(너무 많이 쓰면 잠시 차단당함)
https://openai.com/blog/chatgpt
Try Chatgpt 들어가면, 채팅치듯이 대화하며 사용
혹은 다음과 같이 API 키를 발급받고 코드로 사용가능하다.
API 키를 발급받고 사용하기 위해서는 결제를 해야함
"""
input: title, words, writer
output: review, star point
"""
@app.post("/fast/reviews/gpt")
async def create_review(data:Dict[Any,Any]):
# {작가}의 {제목} 책을 읽고 {키워드}를 키워드로 해서 서평을 {char} 자 이내로 써줘.
#unpack data
title = data["title"]
words = data["keyword"]
writer = data["writer"]
length = np.random.choice(REVIEWLENGTH)
curse_recognition = detect_curse(words)
if curse_recognition == 1:
return {"review":'', "star":0, "respond":2}
# message 구성
m = f"너는 {writer}의 {title}이라는 책을 읽은 사람이야. 너에 대한 자기소개는 하지 말고 {words}를 키워드로 해서 서평, 키워드라는 말을 쓰지 말고 서평을 {length}자 이내로 써줘"
#chatgpt request
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": m}
]
)
#chatgpt response
response = completion.choices[0].message['content']
#predicted star point
star = predict_star_point(response)
return {"review":response, "star":star, "respond":1}
4) prompt engineering
chatgpt를 더 잘 사용하고 싶다면?
좋은 prompt를 넣으면 좋은 답변이 나오게 된다
요구사항을 단순히 "라이덴 쇼군이 뭐야?"라고 적는 것보다
더욱 구체적으로 적으면 "원신의 라이덴 쇼군이 뭐야?"라고 하면
좋은 답이 나올 가능성이 높다
그리고 예시와 함께 적어주면 더 좋다.
원하는 답변이 나오지 않는다면 추가로 요청하면 좋다.
예를 들어 자기소개를 계속 하니까 자기소개는 하지말라고 적고, 무슨 책을 읽은 사람인지 예시도 구체적으로 적어줌
"너는 히가시노 게이고의 편지라는 책을 읽은 사람이야. 너에 대한 자기소개는 하지 말고 ~"
그리고 영어 데이터를 주로 사용해서, 한국어 능력이 떨어져서 영어로 질문하면 좋은 답변을 받을 가능성이 높다.
이렇게 prompt가 중요하다는 것을 보여주는게 가이드라인도 구축되고 있으면서
https://github.com/dair-ai/Prompt-Engineering-Guide
프롬프트를 사고 파는 곳도 있는 정도
5) chatgpt 주의사항
사실이 아닌 답을 내놓을 수 있다
chatgpt는 검색엔진이 아니다.
세상의 정보를 찾아서 취합하는 것이 아니라, 본인이 학습할 당시의 정보를 기억하고 그것을 바탕으로 답변을 내놓는다.
그리고 2021년 까지의 데이터를 학습했기 때문에 최신정보에 취약하다.
한번에 chatgpt에 넣을 수 있는 단어가 많지 않아 장기기억이 불가능하다
몇주전, 몇달전에 했던 대화를 기억하지는 못함
그리고 아직까지 한국어 능력이 부족함
4. ChatGPT 이후
1) LLM을 직접 학습할 수 있는 Big Tech들은 내재화를 시도
구글 바드는 나온지 며칠만에 ChatGPT보다 별로라며 혹평 후에 잠시 중단되긴 했지만..
LLM 주권 경쟁이 어떻게 될지 지켜보는 것은 흥미로운 포인트
2) Microsoft의 BingChat
Microsoft는 OpenAI에 몇십조짜리 투자를 하면서, 가장 먼저 OpenAI의 모델을 사용할 수 있는 권리를 획득
Microsoft의 검색엔진 Bing에 ChatGPT를 결합
세상에 많은 데이터가 모여있는 검색엔진과
엄청나게 많은 데이터를 바탕으로 학습하여, 사용자가 원하는 정답을 요약하고 내놓는 ChatGPT를 결합하니
ChatGPT의 최신성, 신뢰성 문제를 상당부분 완화시킴
와 근데 진짜 답변 품질부터 다른데?
3) Copilot
ChatGPT와 Microsoft 365 제품들을 결합한 형태의 AI 비서
아직 못쓰는것 같은데?? 아닌가
아무튼 쿼리를 주면 자동으로 워드 ppt 등을 만들어주는 그런 느
4) big tech가 아니라면..?
모든 기업이 LLM을 내재화하는 것은 현실적으로 매우 어렵다
GPU라는 자원도 없으며 비용도 없고, 대신 이미 잘하는 LLM이 API로 많이 나와있음
그래서 이미 나와있는 LLM을 바탕으로 누구보다 빠르게 사용자에게 가치를 제공하는 것을 목표로 한다
5) 사회적 이슈
ChatGPT를 허용해야할 것인가?
허용한다면 어디까지 허용해야하나?
도입하더라도, 잘못된 답을 내놓는 경우가 많아 혼란을 주는 경우도 많다
ChatGPT가 생성한 글을 잡아내면 어떨까?
ChatGPT를 만든 OpenAI에서 만든 Text classifier로 분류해보더라도 26%의 정확도로 잡아낼 수 있을 정도로,
인간이 쓴 글과 ChatGPT가 쓴 글은 차이가 없는 정도
https://platform.openai.com/ai-text-classifier
6) GPT-4, OpenAI의 끝나지 않는 질주
사회적 이슈가 가기도 전에, OpenAI가 2023년 3월 27일 GPT-4로 업그레이드 된 모델을 공개
GPT-3.5에 비해 많은 성능 향상
그보다 더 중요한 점은...
Text만을 입력으로 받을 수 있던 기존의 모델과는 다르게 이미지를 입력으로 받을 수 있는 multi-modal
그리고 한번에 처리가능한 prompt 토큰의 길이가 4000토큰에서 32000토큰으로 증가(책 반권 분량 수준)
chatgpt의 기억력이 그만큼 증가했다는 소리
7) 그 이후는..?
이미 GPT-5 학습이 시도중이며, 12월 말 공개 예정이라는 소문이 들리는 정도
음성 인식, 비언어적 표현, 3D, 4D등
지금 LLM은 비용이 많이 드는데 경제성을 많이 고려한 소형 LLM인 sLLM이 급부상
8) LLM의 한계점
1. 높은 비용
OpenAI가 ChatGPT 운영하는데 하루에 1억 들 정도..?
훈련, 추론을 위해 GPU를 많이 사용하며 전력 문제, 환경 문제 심각
2. Hallucination
사실이 아니거나, 질문과 관련 없는 답변을 생성
3. Ethics & bias
성별, 종교, 인종 등등에 편향된 답변 생성
데이터가 편향되어 있다보니, 편향된 데이터에서 학습한 모델은 편향된 답변을 생성하기 마련
9) 우리가 대해야할 자세
이런 한계가 있음에도 불구하고 성능은 점점 좋아지는데.. 우리는 무엇을 해야하는가
거대한 LLM의 파도가 오고 있으며, 이미 온 것이나 마찬가지
기술의 발전은 앞으로도 계속 이루어지며 파도에 올라타기 위해 계속해서 쏟아져 나올 기술을 빠르게 써보며
무엇이 잘되고 무엇이 안되고, 그러면 나는 무엇을 해야하는지에 대한 지속적인 고민이 필요
-----------------------------------------------------------------------------------------------------------------------------------------------------
ChatGPT는 인간을 위한 도구일 뿐이다
"ChatGPT's ability to generate human-like text allows it to assist with a wide range of tasks that involve language processing, making it a valuable tool for businesses, researchers, and individuals alike."
By ChatGPT
'딥러닝 > 딥러닝 기초' 카테고리의 다른 글
컴퓨터로 sound data를 표현하는 방법들에 대하여(Fourier transform, spectrogram, melspectrogram, MFCC) (0) | 2023.07.05 |
---|---|
Nearest neighbor search vs. t-sne를 이용한 차원 축소 기법 (0) | 2023.06.18 |
validation set의 필요성 이해하기 재활 (0) | 2023.05.05 |
앙상블(ensemble) 기본 개념 제대로 이해하기 (0) | 2023.05.05 |
pretrained model & transfer learning에 대해 제대로 이해하기 (0) | 2023.05.04 |