지난번 글에서는 ChatGPT의 기술적인 원리를 나름대로 짚어보았다. 이를 요약하자면, ChatGPT는 다음 토큰 예측을 통해서 담화 형태를 가진 텍스트를 완성시켜 준다. 또한 맥락-내 학습을 통해 추가적인 학습 없이도 사용자의 적절한 프롬프팅(텍스트 입력)만으로 새로운 과제에 대한 수행능력을 구성해 낼 수 있다.
이번에는 사용자의 입장에서 경험적으로 파악한 특징들을 나열하고, 그것들이 앞서 이야기한 기술적 원리들과 어떻게 연관되는지에 대해서도 느낌을 가져보기로 한다. 그 다음으로는 주요 한계점에 대해서 논의한다.
먼저 아래의 서술들은 질문-답변 형태의 거대언어모델들이 앞으로 갖게 될 일반적인 특징들이라고 보기는 조심스러우며, 일단은 현재 단계의 ChatGPT가 가지는 특징들이라고 보는 것이 옳겠다.
다만 ChatGPT는 언어 생성 자체의 성능은 매우 높으면서도, 사실관계 답변이나 수량적 지식 처리 등의 특정한 목적에 맞추기보다는 격식있는 언어 일반을 재현하는 듯하다. 또한 사용자와 잘 align되는 특성, 조금 더 좁게 말하면 편향되거나 노골적으로 유해한 대화를 피하는 것에는 신경을 많이 썼다. 이러한 safety에는 물론 많은 노력과 커스텀이 들어간 것이지만, 어떻게 보면 신뢰할 수 있는 작동을 위한 최소 요건이라고도 할 수 있다. 이를 감안하면 ChatGPT는 거대언어모델의 기본원리를 비교적 충실하게 reflect하는 것으로 보이며, 그러므로 비슷한 원리로 작동하는 언어모델들의 '바닐라' 상태에 가깝다고 보인다.
('바닐라'란 기본을 만족하되 추가적인 커스텀을 가하지 않은 상태를 일컫는 용어로, 바닐라 아이스크림이 '기본 맛'으로 여겨지는 데서 유래했다고 한다. 링크: https://en.wikipedia.org/wiki/Vanilla_software)
이를 종합해서 ChatGPT를 인간에 비유하자면 우호적이고 빠르고 성실한, 그러면서도 창의적인 조수에 가깝다고 보인다. 다만 수많은 부문을 '글로만 배웠'다 보니 인간에 비해 많은 한계점도 보여준다. 하나하나 살펴보자.
첫번째로 다룰 특징인 조리있음은 말 그대로 매우 빠른 시간 내에 조리있고(coherent) 잘 조직화된 (organized) 텍스트를 만들어내는 능력을 말한다. 이것은 '논리적'인 것과는 묘하게 다르며, 내용의 논리성보다는 글의 스타일에 대한 것을 의미한다. 필자가 부족한 영어실력으로 덕지덕지 쓴 입력을 넣어도, 말하고자 하는 내용만 확실하다면 그것을 알아듣고 상당히 프로페셔널한 학술적 스타일로 바꾸어주며, 그것을 바탕으로 생산적인 결과를 출력한다. 이는 수많은 예시들로부터 이미 명백하기에 예시는 따로 첨부하지 않기로 한다.
또한 원하는 조건을 프롬프팅을 통해 하나하나 추가하면, 그것을 모두 반영해서 잘 수정된 결과를 준다. 통째로 새롭게 할 필요가 없고 dialogue를 반복해가며 마음에 들지 않는 부분을 점진적으로 고칠 수 있다는 뜻이다. 지시에 사용되는 표현의 일관성을 유지하면서, 변화시켜야 할 사항과 보존시켜야 할 사항을 확실하게 밝혀준다면, 불만을 원하는 만큼 해소하고 충분히 좋은 결과를 얻을 수 있다. 물론 확률적 생성이기 때문에, 일부분만 바꾸고 싶은데 글 전체가 바뀌어 버리는 경우가 없지는 않다. 그런 경우에는 나머지를 그대로 놔두고 오직 그 부분만 바꾸라고 말하면 사과와 함께 다시 잘 해 주기도 한다.
따라서 사용자 입장에서는 원하는 점을 정확하게 표현하는 능력이 중요할 것으로 보인다. 여기서 정확성이라는 것은 꼭 형식적/문법적으로 조리있고 깔끔해야 한다는 게 아니라, 격식없는 언어로라라도, 예시를 동원해서라도, 그렇지만 분명한 논리적 지시사항이 있게끔 어떻게든 표현을 해내면 된다. 특히 예시의 동원은 많은 도움이 된다.
논리적 상상력
두번째로 다룰 논리적 상상력은, 기발한 은유를 동원해서 세계의 어떤 단면을 짚어내는 종류의 상상력이 아니라, 대상들의 잘 알려진 기능과 특징에 논리적으로 입각해서 창의적인 작업을 하는 종류의 상상력을 말한다. 이러한 작업의 예시는 구체적으로 보자면 서로 다른 두 대상 혹은 영역을 창의적으로 연결하기, 주어진 조건에 부합하는 설정 및 캐릭터를 만들기, 조건에 부합하는 이야기의 스켈레톤을 만들기 등이 있다.
이것들을 단적으로 보여주는 샘플들을 첨부한다. 첫번째는 서로 다른 두 대상을 연결하는 작업에 관한 것이다. 임의로 고른 두 식재료 (닭가슴살과 젤리) 의 질감을 내삽(interpolation)하는, 즉 그 둘의 중간 정도의 식감을 갖는 식재료를 제안해 달라고 해 보았다.
만약에 감각에 직접 와닿는 질감보다는 이산적인 기능이 중요한 과제를 창의적으로 수행하게 하면 훨씬 더 괜찮을 것이다. 예컨대 지금 내 앞에는 '컴퓨터'와 '커피'가 있다. 만약에 이 둘을 내삽하는 물체 혹은 개념을 제안해 달라고 하면, 보통은 이게 무슨 말인가 하겠지만 ChatGPT는 각각의 특성을 적극적으로 탐색하고 반영하여 새로운 물체와 그 이름까지 제안해 준다.
.
SF 속에 등장하는 전형적 시간여행 상황들이 어떤 것이 있는지 등은 유저가 전혀 알려주지 않았고, ChatGPT가 방대한 데이터들 중에 어떠한 상황을 고를지 스스로 정한 것이다. 해당 상황들에 대해 대략적으로 어떤 모습의 시제를 원하는지는 매 단계 세심히 알려주었다.
- 먼저 will, might, been, being 등 기존의 시제 표현 단어들을 조합해서 SF 속 시간여행 상황을 표현하게 한다.
- 그 다음에는 낯선 느낌을 주기 위해 morpheme들을 조금씩만 왜곡하도록 했다. 아래에서, 아마 have를 변형한 것으로 보이는 hab 등이 그 흔적이다.
- 마지막으로 랜덤하게 왜곡하는 것이 아니라, 시간과 관련이 있는 기존 단어들 (chrono-, tempo-, reverse 등) 을 부분부분 따 와서 집어넣도록 했다.
(3) had been rev being pp.: 과거의 사건을 현재 순간에 겪고 있는 것을 나타냄
(5) will be over being: 미래의 사건을 예측하며 그것을 현재에 겪고 있는 것을 나타냄
맨 처음에는 시제의 이름과, 문장속에서의 시제의 표현을 구분하지 못하길래 그 구분을 열심히 알려주고 나서 진행했다. 필자가 부족한 영어실력으로 대략 지시한 뒤에 이해했는지 물어보면, 이해한 바를 논리적으로 정확하게 얘기해주므로, 이러한 종류의 과제에서 상당히 믿을만하다.
.
.
2019년경 각 인터넷 커뮤니티에서는 인공지능이 배트맨과 조커에 대해 만든 짧은 스토리와, 그것을 바탕으로 사람이 그린 그래픽 노블이 화제가 된 적이 있다. 이것은 나름의 스토리를 가지고 있지만 어딘가 부조리하고, 상상력을 불러일으키는 기이한 메타포들 (주로 우연에 의해 생성되었을), 그리고 조커다운 나쁜 농담을 포함하고 있다.
다음으로 지적하고 싶은 점은 그럴듯한 내용의 예측이라는 특징으로부터 창발하는, 강박적 우호성이다. 여기서 우호성이라고 하는 것은, toxic하거나 aggressive한 답변을 피한다는 것과는 다른 얘기이다. ChatGPT는 사실이든 아니든, 그 대화 내에서 전제되어야 하는 사실을 프롬프팅을 통해 알려주면 그에 대해 반대하기보다는 철저히 동의 하에 진행한다. 이것은 사실관계 오류를 걸러내지 못하는 한계라고 볼 수도 있지만, 앞선 포스팅에서 서술한 기본 원리를 생각해봤을 때 사실 제 할 일을 한 것뿐이며, 창의성이라는 면에서는 잘 활용하면 대단한 것일 수 있다.
ChatGPT의 특성: 종합 및 기타 노하우
한편 앞에서는 조리있는 스타일이 가장 큰 특징 중 하나라고 하였는데, 사실은 데이터가 워낙 많고 capability가 워낙 좋다 보니, 프롬프팅을 잘 해서 조리있지 않은 스타일로 써 달라고 하는 것도 가능하다. 예를 들어서, ChatGPT에게 멀쩡한 일상적 문장을 말하다가 갑자기 중간에 말이 끊기고 고장나는 것처럼 연기해 달라고 프롬프팅해 보았다.
그런데 조리있지 않은 스타일 혹은 높은 수준의 우연을 강제하다 보면, 때로는 ChatGPT 내부에서 임베딩을 통해 창발한 의미 공간, 혹은 음소 공간의 기하적(?) 구조가 드러나는 것처럼 보일 때도 있다. 주로 가짜 언어를 만들어 달라고 하거나, 아니면 한국어와 관련된 무언가를 해 달라고 프롬프팅할 때에 그런 현상이 많이 일어난다. 이는 다음 포스트에서 예시를 포함하여 다루기로 한다.
주요 한계
여기서부터는 ChatGPT의 주요 한계점을 다룬다. 이미 널리 지적된 사실관계 오류 문제를 가장 먼저 언급하지 않을 수 없다. 잘 알려졌다시피 ChatGPT는 매우 태연하고 조리있게 잘못된 사실을 말한다 (한국어에서 더 많이 그런 것 같기도 하다). 사실 구글 Bard의 제임스웹 망원경 실수 사건이 개인적으로 굉장히 아쉬웠던 것은, ChatGPT도 동일한 실수를 자주 한다는 것을 감안하면 이것은 기술적 실패라기보다는 퍼포먼스 실패에 가깝다고 느껴져서 그렇다. 즉 Bard 시연을 할 때 올바른 문제 정의를 전제하기만 했더라도, 이러한 종류의 거짓 정보 출력이 과연 커다란 실패로 간주되기는 했을지 의문이다.
ChatGPT도 이처럼 여러가지 부문에 대한 지식을 ‘글로만 배웠다’고 생각할 수 있다. 위의 요리 예시도 마찬가지다. 정보의 바다인 인터넷에서조차 텍스트로 일일이 누가 설명해두는 경우가 많이 없는, 그러나 그것이 부재했을때 모르고 있다는 티가 확실히 나는 암묵적인 부분들 말이다.
예컨대 일련의 지극히 일상적인 문장들을 생성하되, 해당 문장들이 어떠한 특정한 구조를 갖는다고 하고 싶다. 예컨대, 어떤 글에서 처음에는 밝은 날씨에서 나올 법한 문장들이 나오다가, 나중으로 갈수록 흐리고 나쁜 날씨에서 나올 법한 문장들이 생성되게 하여 모종의 문학성을 갖추고 싶다고 하자. 그럴 때 ChatGPT는 어려운 길을 택하지 않고, 아주 쉬운 길을 택한다. 아예 날씨에 대한 이야기를 명시적으로 언급하는 문장들을 생성하는 것이다.
이런 것들은 사실은 사람한테도 한번에 설명하기는 약간 어려운 얘기인데, 나는 이것을 내용이 형식에 이끌린다고 표현하겠다. 다만 대략적인 스케치를 주고 이렇게 하라고 알려준 뒤, 예시에 이끌리지 말라고 명시하고, 그것을 이해했는지 물어본 다음에 다시 하라고 하면 조금 더 잘 되기는 한다. 이런 것 역시 바로 기초적인 prompt engineering 노하우일 것이다. 그래도 여전히, 이것을 해결하는 것은 유난히 어렵다.




