ChatGPT는 2021년 11월 30일에 출시되었다. 2023년 12월 중순을 넘기고 있는 시점을 기준으로 출시된지 만2년이 넘었지만, 이미 전세계에 크나큰 충격과 영향을 주었다. 이미 인공지능의 발전에 대해서는 2016년 알파고가 이세돌을 이기면서 많은 사람들이 알게되었지만, 그것을 더 실감나게 해준 것은 바로 ChatGPT 였을 것이다. 왜냐하면, 일반 대중이 인공지능을 실제로 사용할 수 있게끔 서비스를 시작해 제대로 사람들의 삶에 안착시켰던게 ChatGPT이기 때문이다. 그런 점에서 openAI가 한 일은 인공지능 분야의 발전에 있어서 큰 기여라고 할 수 있을 것이다.
그런데 많은 사람들이 ChatGPT를 사용은 하지만 실제로 어떻게 이 인공지능 모델이 우리가 원하는 답변을 주는지 이해하는 경우는 드물 것이다. 오늘의 포스팅에서는 그 원리에 대해서 간략하게 설명하고, 어떤 방식으로 ChatGPT와 상호작용을 해야 더 정확하고, 효율적으로 할 수 있는지 글을 써보도록 하겠다.
ChatGPT의 원리
GPT의 원리를 간략하게 설명하겠다. ChatGPT는 GPT라고 하는 생성형모델(Generative Model)에 그 기반을 두고 있다. OpenAI가 처음으로 GPT 모델을 선보였을 때 냈던 paper 링크를 첨부한다. 물론 지금은 출시 이후로 paper를 업데이트하긴 했는데, 여기서 GPT의 원리를 설명하고 있다. 시간이 남는 사람은 한번 읽어보자.
https://arxiv.org/abs/2005.14165
Language Models are Few-Shot Learners
Recent work has demonstrated substantial gains on many NLP tasks and benchmarks by pre-training on a large corpus of text followed by fine-tuning on a specific task. While typically task-agnostic in architecture, this method still requires task-specific fi
arxiv.org
긴 설명을 생략하고 간단히 얘기하면, ChatGPT는 attention이라고 하는 매커니즘을 갖고 있고, 이 매커니즘을 겹겹이 쌓아놓은 디코더라는 구조 속에서 한 문장 혹은 단어들이 주어졌을 때 다음에 올 단어(토큰이 더 정확한 표현이겠지만, 이해를 돕기 위해 단어라고 표현하겠음)를 예측하는 형태로 무수히 많은 훈련을 거치게 된다. -끝-
정말 빈약한 설명이지만, 골자는 다음 단어(토큰) 예측. 여기서 내가 말하는 예측은 다음 단어 생성과도 같은 말이다. 순차적으로 계속 예측을 해나간다면 이게 바로 문장 생성이 된다. 여기서 이 글을 읽으면서 '이게 된다고?' 싶을 수 있다. 신기하게도, 이게 된다! 하지만 몇가지 제약이 있는데, 바로 1. 정말 무수히 많은 데이터, 2. 많은 파라미터 수가 전제돼야 한다. 파라미터란 인공지능이 갖고 있는 일종의 매개변수라고 생각하면 되는데, 쉽게 말해 어떤 예측을 하기 위해서 모델을 조정을 해놔야 하는데, 그 조정에 해당하는 숫자들이라고 생각하면 된다. ChatGPT는 정말 무수히 많은 대화 데이터를 학습해서 만들어진 모델이라고 생각하면 된다.
내가 너무 간단하게 설명한 것도 맞지만, 이 설명이 틀린 것도 아니다. 컴퓨터 과학자들도 정확히 왜 이 ChatGPT가 잘 작동하는지 모른다. 정말이다! 하지만, 아직 ChatGPT와 같은 Large Language Model이 나온지도 1년 정도 밖에 되지 않았기 때문에 앞으로 많은 과학자들이 그 원리를 더 잘 설명하는 논문들을 낼 것이다.
ChatGPT 사용법
ChatGPT 사용방법에 대해서 말하는 것은 조금 위험하고도, 바보스러운 일이다. 왜냐하면, 사용자는 자신이 원하는대로 사용하면 되기 때문이다. 규칙은 없다. 다만, 내가 여기서 얘기하려고 하는 것은 ChatGPT의 원리가 이해된 상태에서 우리가 하고자 하는 일을 ChatGPT에게 대신 시키고자 할 때, 모델이 더 잘 알아듣고 작동하게끔 하는 방법이 따로 있다는 것이다.
이제 그렇다면 그 방법에 대해서 얘기해보자. 더 자세한 얘기는 Prompt Engineering이라는 내용을 살펴보자. 찾아보니 https://www.promptingguide.ai/ 와 같은 링크도 있는 것 같다.
다음 단어를 예측하게 만들자
먼저, ChatGPT의 내부에서 항상 작동하는 것은 다음 단어 예측이다. 그 원리를 바탕으로 우리가 하고자 하는 것을 연결하는 일을 해내면 된다. 예를 들어보겠다. 만일 포맷을 변경해야 하는 파일이 있다고 해보자.
{"name" : "apple", "age" : 15, "phone-number" : 0266} 이것을 {"apple": {"age" 15, "phone-number":0266}}의 형식으로 바꾼다고 할때, 다음과 같은 작업을 해줘보자.
Input : {"name" : "apple", "age" : 15, "phone-number" : 0266}
Output : {"apple": {"age" 15, "phone-number":0266}}
Input : {또다른 예시}
Output :
그러면 신기하게도 ChatGPT가 Output의 내용을 채워서 반환해준다. 이렇게 예시를 위에서 주게 되면 ChatGPT는 위의 내용을 입력받은 것 때문에 기존에 좀더 random하게 행동하는 것을 제한하게 되고 좀더 우리가 원하는 바에 알맞게 답변을 반환해준다. 이것은 반복적인 행정작업을 해야 하는 경우에 굉장히 유용한 기술이 될 수 있다. 위의 문제는 단순히 코딩을 해서도 쉽게 해결할 수도 있긴하지만, 코딩을 못하는 사람으로서는 오히려 위의 방법이 편할 수도 있다.
미리 상황이나 행동방식을 설정시키자.
이 부분에 대해서는 아직도 여러가지로 연구 결과들이 나오고 있는 것 같다. 하지만, 몇가지 연구 결과들에 따르면 ChatGPT에게 어떤 특정 사람의 흉내를 내도록 부탁하고 나서 일을 수행시키면 그와 비슷한 결과를 낸다는 것이다. 예를 들어서, ChatGPT에게 10년간 병원에서 근무한 전문의를 모방하게 하고나서 질병이나 의학적 설명을 하라고 하면, 보통의 설명보다 더 잘 한다는 것이다. (물론 여러가지로 의견이 분분하기도 하다). 모방하고자 하는 직업군을 먼저 얘기해주고 결과값을 받아내보는 것은 어떨까?
Chain-of-Thought(COT)을 이용해보자.
https://arxiv.org/abs/2201.11903
Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
We explore how generating a chain of thought -- a series of intermediate reasoning steps -- significantly improves the ability of large language models to perform complex reasoning. In particular, we show how such reasoning abilities emerge naturally in su
arxiv.org
위의 연구 논문을 바탕으로 제시된 내용인데, 조금 흥미로운 결과들이 있다. 바로 ChatGPT와 상호작용할 때, 단순히 답변을 물어보는 것보다, 여러가지 논리적인 순서들에 따라 물어가면 더 정확한 답변을 준다는 것이다. 예를 들어서 ChatGPT에게 USMLE(미국의사시험) 문제에 대한 답변을 요구할 때, 단순히 답변을 달라고 요구하면 부정확한 답을 내놓기도 하는데, COT 방식을 이용하면, 올바른 답변을 낸다는 것이다. 이런 점은 참 인간이랑 비슷한 것 같다.
위의 이미지에서 보는 것처럼, COT는 어떤 식으로 사고가 이루어졌는지 보여주는 것을 의미한다. 이런 예시가 오히려 ChatGPT가 더 올바른 정답을 내도록 도왔다는 것이다.
그렇다면 COT를 하는 가장 간단한 방식은 다음과 같은 글을 끝에 붙이는 것일수도 있다.
--글, 질문, 요구사항
자, 이제 차근차근 설명하면서 문제를 풀어봐
이 경우에는 예시를 주지 않았지만, 논리적인 사고의 순서에 따라 설명하도록 유도하는 것으로 볼 수도 있다.
결론
지금까지 ChatGPT의 원리 및 사용법에 대해서 조금 가볍지만 좋은 정보들을 알아보았다. 이제부터 당신이 갖고 있는 문제를 ChatGPT에게 해결해달라고 할 때, 위의 방법들을 사용해보는 것은 어떨까?
'deep learning(딥러닝)' 카테고리의 다른 글
인공신경망 (0) | 2021.10.28 |
---|