요즘 전세계를 흔드는(?) 서비스가 출시되었습니다. 바로 ChatGPT인데요.
이번 포스트에서는 ChatGPT가 무엇인지, 어떤 기능을 어디까지 수행하는지, 원리는 무엇인지에 대해 다뤄볼 예정입니다.
ChatGPT, 좀 더 자세하게는 2018년 GPT-1이 공개된 후 꾸준히 개선되어 최근 2022년 12월 1일에 ChatGPT(= GPT-3.5)로 공개되었습니다. 공개된지 5일 만에 100만 유저가 가입했으며, 최근에 공개된 이 3.5 버전이 개발자뿐만 아니라 비개발자들에게도 화제가 되면서 유명세가 날로 높아지고 있습니다.
실제 사용해보니 지금까지 사용해 왔던 대화형 AI들 중에서 최상위 랭크에 속해있다고 해도 과언이 아닐 정도로 성능이 좋았습니다. 뭐... 그래서 이 글을 작성하게 된 것이긴 합니다.ㅎ
그럼 이제 이러한 ChatGPT가 무엇인지에 대해 짧게 정리해 보겠습니다.
ChatGPT에 대해 알아보는 법은 아주 간단합니다. 더도 말고 덜도 말고, ChatGPT에게 직접 물어보면 됩니다!
ChatGPT는 OpenAI사에서 개발한, 사용자가 질문한 내용에 대한 답변을 제공하는 언어 모델입니다.
대량의 텍스트 데이터를 이용해 학습되었으며 이전에 사용한 단어를 입력하여 문장 내에 위치하게 될 다음 단어를 예측합니다. 학습에 사용된 데이터는 다양한 범위의 주제를 포함하고 있으며, 문법적으로 올바르고 문맥상 자연스러운 텍스트를 생성할 수 있도록 학습되었습니다.
Transformer Model을 기반으로 구성되어 있으며, 이의 Basic한 구조는 Encoder와 Decoder입니다. Encoder는 Input Sequence(= 문장)를 받아 Input 값을 의미하는 Embeddings 또는 숨겨진 표현의 Sequence를 생성합니다. 그다음 Decoder는 Encoder에서 생성한 Embeddings를 Output Sequence(= 답변)를 생성하기 위해 사용합니다.
High Level에서, Encoder와 Decoder는 동일한 Sub Layer들로 구성되며 각 Sub Layer는 Self-Attention 메커니즘과 Feed-Forward Neural Network로 구성되어 있습니다. Self-Attention 메커니즘을 통해 Input Sequence의 다른 부분에 주의를 기울여 Embeddings를 생성할 때 그들의 중요성에 가중치를 줍니다. 그러면 Feed-Forward Network는 Embedding들을 처리하고 최종적으로 Hidden Representation을 생성합니다.
이러한 구조는 End-To-End로 학습됩니다. 즉, 주어진 Input Sequence에서 생성된 Output과 실제 Target Output간의 차이를 최소화하도록 최적화되며, 이전 단어가 주어졌을 때 문장의 다음 단어를 예측하도록 학습되었기에 문법적으로 정확하고 상황에 맞는 텍스트를 생성할 수 있습니다.
ChatGPT가 자신에 대해 꽤나 상세하게 설명하고 있다는 점이 놀랍습니다...;;
솔직히 좀 더 파고들면서 질문하면 공개 가능한 범위내의 내용을 전부 말해줄 것 같습니다...ㅎㄷㄷ
일반적인 분들은 위 설명이 차고 넘칠 것이라고 생각되지만, 좀 만 더 자세히 알아보도록 하겠습니다.
기본적으로는 GPT라는 Model을 통해 개발되었는데 2023년 2월을 기준으로, 1 ~ 3 버전까지 개발되었습니다. 버전이 올라가면서 Parameter의 Size, 학습 데이터의 사이즈가 방대해졌으며, 세부 조정 부분이 조금씩 변화되었습니다. 특히 요번 2월에 오픈된 버전의 경우는 InstructGPT라는 것을 도입하게 됨으로써 압도적인 성능을 보일 수 있었습니다.
또한 Input Sequence들을 기반으로 Output Sequence를 반환하고 이후 다른 Input Sequence가 들어오게 되면 이전 대화들도 다시 Input 되도록 하였기에 이전에 대화가 다음 대화에서도 이어질 수 있습니다.
InstructGPT는 GPT Architecture를 기반으로 하며, 대규모 교육용 텍스트 모음을 통해 튜닝되었습니다. 이 모델은 레시피, 설명서, 튜토리얼과 같은 교육용 콘텐츠를 생성하도록 학습되어 단계별 가이드와 기타 교육 콘텐츠를 생성하는데 매우 적합합니다.
강화 학습을 통해 성능을 향상하게 되는데, HITL(Human-In-The-Loop) 방식을 통해 수행됩니다. HITL 방식은 학습과정에 인간의 직접적인 지도를 받는 것을 의미하며 이때 지도는, 주어진 질문에 대한 답변을 대신 작성하거나 생성된 답변들에 대해 랭킹을 매기는 것으로 수행됩니다.
여담이지만, Data Labeler로써 작업을 진행한 적이 있었는데, 대화 모델을 고도화시키기 위해 앞서 언급한 HITL 방식, AI에게 부여할 질문을 생성하고 해당 질문에 대해 AI가 생성한 답변에 대해 랭킹을 매기고 구체적인 점수와 해당 점수를 부여한 이유에 대해 작성하는 작업을 수행했었습니다. ChatGPT도 이와 같은 작업을 통해 학습된다고 보시면 될 것 같습니다.
다만, ChatGPT의 경우 질문과 답변, 답변에 대한 점수 등의 데이터가 엄청 방대하다는 점이 좋은 성능을 보이는 가장 큰 요인이 아닐까 싶습니다.
이렇게 방대한 데이터를 기본적인 Scraping과 인력을 통해 구축하기에는 한계가 있었을 것입니다. 그렇다면 구체적으로 어떤 데이터를 어떻게 수집했을까요?
우선, ChatGPT에게 물어보았습니다.ㅎㅎ
데이터 수집부터 가공 방법에 대해 구체적인 답변을 반환한다는 점은 놀랍지만, 일반적인 답변을 하고 있긴 합니다.
OpenAI에서는 구체적인 데이터 수집 경로는 공개하고 있지 않기 때문에 정확히 알 수 없지만, OpenAI에서 사용자들에게 제공하는 ChatGPT의 사용법을 보면 대략적으로 추측할 수 있지 않을까 싶습니다.
ChatGPT의 사용법과 관련된 내용은 다음과 같습니다.
Example 부분을 보면 ChatGPT는 Programming, Brainstorming, 간단한 설명/요약, 콘텐츠 생성에 중점을 두고 있습니다.
OpenAI에서는 다양한 API를 제공하고 있습니다. 2023년 2월 기준으로는, Text Completion, Code Completion, Image Generation, Fine-tuning, Embeddings의 API를 제공하고 있군요. ChatGPT의 기능과 유사한 부분이 많이 있습니다. 아마 API를 통해 데이터를 많이 수집할 수 있었지 않을까 싶습니다. 또한 Facebook, Twitter와 연관이 있는 회사다 보니 데이터 수집에 있어서 유리하지 않았을까요...
아무튼 ChatGPT에 관한 조사는 여기서 마무리하고 이제는 본격적으로 ChatGPT를 사용해 보도록 하겠습니다.
우선, Programming적인 부분에 대해 질문해 보았습니다.
이런... 간단한 답변이긴 하지만, 정확히 예시 코드를 보여줍니다. 심지어 코드에 대한 설명도 적어줍니다.
이번엔 수학 문제를 제공해 보겠습니다.
잘 풉니다... 상단 오른쪽 부분은 오차 범위 내 값까지 답이라 정한다면 답이 맞긴 합니다. 그러나 하단의 문제는 답이 틀리긴 했습니다.
ChatGPT의 경우, 수학 분야에 대해서는 약한 편입니다. 이유는 텍스트로 된 학습 데이터를 통해 학습을 하였기 때문에 어떠한 하나의 정확한 답을 요구하는 분야에 대해서는 오답을 낼 가능성이 높은 것으로 판단됩니다. 또한 논리적 사고를 통해 답을 구하는 방식이 아니기에 수학적 능력이 수학자만큼 발전하기에는 한계가 있지 않을까 싶습니다. 그러나 답을 구하는 과정을 제공한다는 점에서 본다면 확실히 성능이 좋다는 것은 부정할 수 없을 것 같습니다.
문장 생성을 요청하면 다음과 같은 결과들을 얻을 수 있었습니다.
작곡을 부탁하였지만, ChatGPT의 능력에 맞게 작사를 수행하였고 급여 미지급에 대한 고소장 작성을 부탁하였더니 그럴싸한 고소장을 작성해 주었습니다.
또한 아래와 같이 "월요일은 재앙이다"라는 소설을 써달라고 부탁하였더니 꽤 긴 내용을 생성해 주었습니다.
전부를 첨부하진 못했지만, Sarah가 엄청 최악의 월요일을 보냈고 그 와중에 실수 때문에 직장에서 해고당했는데 터닝 포인트를 맞게 되어 며칠 뒤 스카우트를 제의받아 취직했다는 내용이었습니다. 요구사항에 부합한, 심지어 납득이 되는, 스토리가 있는 꽤 잘 쓰여진 결과물이었습니다.
기존의 어떠한 내용을 "만약에"라는 가설을 적용하면 어떻게 될지에 대해 질문하거나 이미 주어진 답변을 다른 포맷으로 변경해 달라는 요청을 했을 때, 자연스럽게 대답하는 것을 확인할 수 있습니다.
이외에도 여행일정을 짜주거나, 요리 재료에 따른 레시피를 알려주거나, 어떤 문제에 대한 일반적인 해결 방법에 대해 알려주거나 하는 등의 전반적인 질문에 자연스럽게 답변하는 것을 확인할 수 있었습니다.
추가적으로, ChatGPT의 성능이 놀라워 다음과 같이 한글로 일본어와 영어를 소리 나는 대로 적어서 질문을 해보았습니다.
긴 문장의 경우는 알아듣지 못하지만, 짧고 많이 쓰이는 표현의 경우는 잘 처리되는 것을 확인할 수 있습니다.
이러한 ChatGPT도 한계점이 물론 있습니다.
검색을 통해 자료를 취합해 대답하는 방식은 아니며, 2021년도까지의 데이터를 통해 학습되었고 이후 데이터들은 적용되지 못했기에 최신의 데이터에 대해 질문하면 답변을 하지 못합니다.
그리고 당연한 이야기이긴 하지만, 영어 이외의 언어의 경우 자료가 비교적 빈약하기에 오류나 조금은 빈약한 답변을 내놓는 경우가 꽤 있습니다. 특히 한국어로 질문했는데 영어로 답변하는 것이 그 예입니다.
그러나...........
솔직히 이제껏 사용해 봤던 언어 모델들과는 비교할 수 없을 정도로 실제 생활에서도 너무나 유용하게 사용할 수 있을 정도의 서비스라고 생각합니다.
간단한 잡무나 기초적인 작업, 영감을 얻기 위한 대화 등의 분야에서 충분히 활용될 수 있을 것입니다.
2023년 02월 1일 기준으로, 곧 24시간 더 빠른 접근과 여러 부가 기능을 포함한 ChatGPT Plus를 미국부터 서비스할 예정이라고 합니다. 비용은 월 20달러이고요. 물론 무료 버전은 유지하지만 접속자 수를 제한하는 형태로 서비스를 제공할 예정이라고 합니다. MicroSoft의 투자를 많이 받고 있기에 MS의 검색 엔진인 Bing에 통합될 가능성도 있다고 합니다.
윤리적인 문제, 여러 보안과 사회적 이슈 등의 문제를 어느 정도 해결한다면, 기술의 융합 및 발전 가능성은 무궁무진하기 때문에 일반 사용자들에게 실생활로 다가올 날이 얼마 남지 않은 것 같기도 합니다...ㅎㅎ
곧 GPT-4 버전을 내놓을 것이라고 하는데, 버전 3보다 더 나은 모습은 어떤 모습일까요...ㅎ
이번 포스트는 여기서 마무리하도록 하겠습니다.
글을 쓰면서 다시 한번 느꼈습니다. 이제... 곧 진짜... 밥줄이 끊길 수도 있겠구나...ㅠㅠ
'Technology > Research' 카테고리의 다른 글
[AI] Google Bard 사용 (1) | 2023.05.19 |
---|---|
[AI] Multi Modal에 대한 정의 및 예시 (0) | 2023.01.10 |
[Sound Spleeter] Deep Learning 기반 악기 소리 분리 기술 (0) | 2023.01.05 |
댓글