지난 4년간의 고찰과 생각들
올해 ChatGPT를 사용한지, 햇수로 4년차가 되었다. 4년간 천지가 개벽할 수준의 인공지능의 발전이 있었으나, 멀리서 보면 '기술의 최첨단에 서있는 그들만의 호들갑', 가까이서 보면 '진정한 혁신'인 듯하다. 실제로 산업혁명이 인류 삶에 가져온 그 다음 큰 것(The next big thing)이라고 하기엔 아직 이르고, 그렇다고 인터넷(닷컴 버블)만보다도 못한 장난감이라고 하기엔 너무 크다. 본 게시글에서는 AI와 인간의 상호작용, 폭넓게는 정보가 오고가는 과정에서, 내가 원하는 바를 AI에게 전달하는 과정으로서 프롬프팅을 탐구한다. 내가 이제껏 시도했던 방법들을 두가지 유형으로 분류하고, 그 방법들이 공통으로 머금은 철학들을 활용하여 프롬프팅이란 무엇인지 나름대로 정의해 보고자 한다.
정보가 움직이면?
정보는 움직이는 과정에서 그 의미를 잃는다. 정보가 바보처럼 움직이며 주머니에 넣은 세부사항을 흘리는 것은 아니다. 하지만 정보가 일단 움직이게 되면, 그 이후 부터는 그 정보가 있었던 맥락과 독립적으로 흐르게 되고, 우리는 같은 기호를 보고도 다른 것을 연상하게 되는 것이다. 마치 이런 상황과 같다.
전언(前言) : 저 시험을 이번에 잘 본거 같아요.
정보 : 잘했다!
전언(前言) : 저 시험을 이번에 못 본거 같아요.
정보 : 잘-했다!
정보, 잘했다!는 우리가 흔히 맥락에 따라 인간의 말뜻이 아 다르고 어 다를수 있음을 제시하는 상황으로 애용되지만, 그 보다도 중요한 것은, 정보 잘했다! 또한 발화과정에서 동일한 맥락을 가질 수 없음이다. 시험을 잘 보았을 경우의 '잘했다!'는 표현은 칭찬의 표시로서 적절한 어조가 뒤따르겠지만, 시험을 못봤을 때 '잘했다!'는 '잘-했다!'와 같이 잘을 강조하기 위한 새로운 비언어적 표지가 등장한다. 결론적으로 맥락에 따라 말뜻이 다르다고 선언하는 것은 맥락이 정보의 의미를 규정하는 유일한 단위가 아니라고 주장하는 것이다. 오히려 전언(前言)과 같은 맥락적 정보는 새로운 정보를 해석하기 위한 인식의 틀로서 기능한다.그렇다면 맥락이란 무엇인가? 실제로 언어의 톱니바퀴 속에서 어떻게 맞물려 돌아가는가?
맥락의 이상한 수레바퀴
"맥락은 이상한 수레바퀴다. 열심히 돌아가지만, 한번 회전할때마다 자신을 복제한다. 복제품은 원본을 가리키지만, 이내 스스로 회전해 자신의 복제품을 다시 만든다." 이 설명은 맥락의 정수를 담고있다. 맥락이 회전하는 것은 표기되거나 발화되어 새로운 뇌에 담기는 것, 능동적으로 맥락을 담아내려는 모든 시도를 포함한다. 한번 회전한 맥락은 동일한 원본의 이종(異種)이 아니다. 오히려 원본을 가리키는, 약간의 다름을 가진 자식에 가깝다. 그 자식 또한 회전하며, 자식의 자식, 자식의 자식의 자식...을 만들어 나간다. 이쯤되면 타당한 의문이 떠오른다. 맥락이 분화하며 만드는 자식이 가진 조금의 변화는 누적되어 원본을 알아볼 수 없을정도로 커진다. 맥락의 연속성을 보장하는 특징은 무엇인가?
맥락이 열심히 회전하여 자신의 자식을 만드는 동안, 맥락은 관계성을 생산한다. 맥락이 어떤 다른 부속을 만들었다면, 과정에 참여한 주체들은 맥락 A가 맥락 O의 자식임을 안다. 그리고 그 주체가 과정에 참여한 맥락을 아는 또다른 주체는 과정에 참여한 주체가 소멸해도 맥락A-O로 이어지는것임을 안다. 결국 맥락은 관계성에 의해 연속성을 보장받으며, 주체들이 그 사실을 사이좋게 나눠품음으로서 보험체계를 구축했다는 표현이 정확할 것이다. 하지만 이것은 인간사회의 맥락과 그 활용에 해당한다.
인공지능의 두 얼굴
인공지능은 인간사회의 특성 중에서도 교사-학생 모델을 국소적으로 모방한다. 실제 인간사회에서는 모든 정보의 생산과 소비가 비교적 균일하게 발생하지만, 인공지능은 정보를 학습과 추론이라는 두 구간으로 나누고, 이 때 생산과 소비의 발생비율은 극도로 불균형하다. 학습기에 AI는 학생이 된다. 모든 정보를 닥치는 대로 빨아들인다. 하지만 추론기에는 AI는 마치 모든 것을 머금은 만물박사처럼 여겨진다. 학습과 추론이라는 두 극단적인 시기에서 맥락은 고정되어 있다. 다음 상황을 보자.
[AI의 기억공간]
A는 미국의 17대 대통령 -[강한 연결] - A'는 대한민국의 5대 대통령
[느슨한 연결]
A는 미국의 17대 대통령 -[느슨한 연결] - B는 대한민국의 5대 총리
사용자의 질문 : 대표적인 대통령에는 누가 있어?
인공지능의 대답 : 대표적인 대통령에는 A와 A'가 있습니다. A는 미국의 제 17대 대통령으로서 직무를 수행하였고, A'는 ...
학습은 AI의 기억공간을 다음 도식과 같은 연결의 강도와 함께 사실들로 채워넣는 행위다. 반면 추론은 학습기에 형성해 놓은 강도를 반영하여 대답을 생성하는 행위다. 이 과정 어디에서도 맥락은 고정되어 있다. 맥락이 고정되어 있다는 것은 A가 미국의 17대 대통령이 아닌, K의 아버지로 기술되기 위해서는 다른 대상을 참조해야 함을 뜻한다. 마치 다음과 같은 구조다.
[AI의 기억공간 : 고정된 맥락]
A는 미국의 17대 대통령 -[강한 연결] - A'는 대한민국의 5대 대통령
[느슨한 연결]
A는 미국의 17대 대통령 -[느슨한 연결] - K는 미국의 17대 대통령의 아들
[강한 연결]
A는 K의 아버지
반면 인간의 두뇌는 K를 거론할 때 미국의 17대 대통령이 참조됨을 보장하지 않는다. 철저히 연결 강도에 따라 좌우된다. 대통령으로서의 인식이 강한 사람일 경우, 대통령을 대부분의 경우에서 연상하겠지만, 그 사람이 아버지를 연상케 하는 기타 행보를 보였음을 알고 있다면 확률은 '보장'과는 거리가 멀어진다. 이러한 괴리가 발생하는 이유는 인간은 동시의 복수의 개념을 표상할 수 있기 때문이다. 인간은 인공지능처럼 K의 아버지라는 개념을 연상하기 위해 17대 대통령이라는 중간다리를 반드시 거쳐야 하지 않는다. A는 K의 아버지라는 사실을 함축한 연결과, A의 직업이라는 연결이 직렬화(Serialization)되어있지 않다는 뜻이다.
결국 인간은 정보를 독립적으로 처리하고 다룰 수 있지만, 현대 언어모델은 무언가와 반드시 연관지어야만 한다. 그래야 불러올 수 있으며, 토큰으로 표상될 수 있다.
맥락적 프롬프팅 : 관계를 연상하기
프롬프팅을 한다는 것은 단순히 내가 하고자 하는 일을 모종의 스킬과 방법들을 통해 더 잘 설명하는것이라 할 수도 있다. 하지만 지금까지 설명한 내용에 의하면 AI에게 정보만 주는 것이 아닌 맥락을 함께 제공함으로서, 더 효율적인 지식의 호출을 촉진하는 것으로 볼 수도 있다. 잘한 프롬프팅은 인공지능의 잠재력을 전부 남김없이 다 쓴다. 상술한 내용이 프롬프팅 기법에 어떻게 적용될 수 있는지 탐구해 보자.
만약 인공지능과 대화를 통해 새로운 팝업스토어 컨셉 기획안을 작성한다고 해보자. 단순히 컨셉 기획을 단문(單文)으로 요청한다면, 인공지능은 입력에 관한 가장 전형적인 연결고리를 모델 내부에서 활성화 시켜 대답한다. 비슷비슷한, 고만고만한 내용이 나오는 이유다. 하지만 새로운 아이디어는 멀어 보이는 두 지식을 연결할 때 나온다는 점을 유념하고 프롬프팅을 한다면 이렇게 할수도 있다 :
팝업스토어의 컨셉으로 적절한 단어를 명사,동사,형용사로 종류별 100개 제시해 달라고 요청한다.
100개의 단어를 무작위로 섞어 '[형용사]한 [명사]가 [동사]한다'는 형식으로 묶여달라고 요청한다.
요청한 결과로 산출된 문장을 보고 떠오르는 컨셉기획안 100가지를 써달라고 요청한다.
다음 세 단계를 거치게 된다면, 더 독특한 아이디어들이 나올 가능성이 높다. 앞서 언급한 인공지능이 사용하는 직렬적 특성을 마구 뒤섞어 놓았기 때문이다. 이전에는 순조롭게, 순차적으로, 비교적 변동 없이 토큰이 뽑혀나왔다면, 이 세 단계를 수행하는 과정에서 인공지능은 더 많은 지식과 범주 간의 지식을 잇고, 참조해내야 한다. 여젼히 직렬적이지만, 그 특성을 깨지 않으면서도 인간처럼 연상하게 만든 셈이다. 이 방법은 단순히 정의된 명칭인 '브레인 스토밍'을 AI에게 시킨것이라고 볼 수 있으나, 이론적 토대에는 직렬적 성질을 유지하면서도 인간처럼 사고하게 해야 한다는 동기가 숨어있다.
일반화 프롬프팅 : 여러 구슬을 하나의 실로 꿰기
여러 사실을 연결하는 이전의 방법론은 다분히 원자적이다. 개별 낱말을 개념으로 간주하고, 연결짓다가 탁월한 하나를 건지고 나면, 나머진 전부 버린다. 마치 강가의 모래에서 사금을 추출하듯, '하나만 걸려라'하는 심정으로 많은 규모의 연결짓기가 필요하다. 반면 일반화 프롬프팅은 반대다. 여러 사실을 하나로 꿰는 하나의 일반법칙을 도출하도록 인공지능에게 요구한다. 이 방법은 더 난해하다. 여러 사실을 하나로 포괄하는 일반법칙이란 뭔가? 여러 사실을 집합적으로 포함하면 되는가? 시기적으로 일치하면 되는가? 참으로 어려운 사안이다. 따라서 여러 사실을 토대로 일반화 법칙을 도출하는 것은 근사함수를 구한다는 관점으로 접근해야 한다.
가장 쉬운 방법 : 통계적 유의성
근사함수를 구한다는 관점으로 접근하는 가장 쉬운 방법은 '진짜 근사함수를 구하는 것'이다. 근사함수를 구하기 위해 상황을 통계적 언어로 정의하는 것이 필요하다. 마치 다음과 같은 상황에 A가 취한 행동들 처럼 말이다.
[상황]
A는 소매체인 업체 주식 H에 투자할지 결정하기 위해 주가에 가장 영향을 미치는 변수들을 찾아내려고 한다.
[A가 취한 행동들]
주식 H에 영향을 줄만한 변수들을 고른다.
구한 변수의 모음중 가장 신뢰성이 높은 변수 하나를 고른다.
이 방법은 주식 H라는 실을 꿰기 위한 구슬들을 모으는 과정과, 하나의 실로 묶어내는 과정 모두를 보여주고 있다. 이 방법은 앞서 맥락적 프롬프팅에서 논의한 '단문형 요청'에 가깝다. 매우 자명한 결과의 당연한 결론을 다시 검증하는 것에 가깝다. 실제로 주식 H에 영향을 주는 변수들은 금리수준, 통화량(M2), GDP등 누구나 알만한 변수들이며, 그것을 통계적 검정과정을 통해 수치를 산출하여도 예상한 대로 높은 수준의 유의성을 보일 것이다. 하지만 이 변수들을 우리가 원한것은 아니다. 우리는 더 새롭고, 참신하며, 기발하고, 누구도 생각지 못한 변수들을 원한다. 마치 다음 사례처럼 말이다.
[상황]
A는 소매체인 업체의 주식 H의 주가에 선행하는 가장 효과적인 변수를 찾아내려고 한다.
[A가 취한 행동들]
소매체인 업체가 지점으로 있는 지역의 점포를 모두 목록화 한다.
점포의 실적발표에 해당하는 회계연도 구간 내의 위성사진을 모두 내려받는다.
위성사진 내에 관측된 차량과 유동인구를 통해 매출을 추정한다.
어떤가? 주식 H가격을 예측하는 데 있어 가장 필요한 자료들은 금리, 성장율 수준등이 존재하지만, 이는 후행데이터 일 뿐이다. 결국 남들이 생각지 못한 결론으로 논의를 이끌기 위해서는 '선제성'으로 정의되는 것을 이끌어 내야 한다.
선제성이란, 단순히 모델이 사용자에게 먼저 제안하는 것을 의미하지 않는다. 모델이 이상치를 탐지하고 스스로 의문을 가져 탐구하도록 촉진하는 것이다. 모든 지표를 고른 비중으로 넣고, 지표간의 상관관계를 모델이 스스로 실험해볼 수 있는 환경을 마련하는 프롬프팅이 중요하다. 원하는 결론을 얻기 위해 관련있는 데이터만 넣어서는 일반화 프롬프팅을 효과적으로 해내기 어렵다. 또한 모델이 이상치를 탐지하기 위한 사고의 틀을 작성하는 능력이 필요하다. 모델이 스스로 '이것은 비정상의 범주이다.', '다른 변수를 모색해보아야 한다'와 같은 판단 기준을 세울 수 있도록 고양하는 지침들이다.
가장 어려운 방법 : 설명가능성을 타진하기
가장 어려운 방법은 설명가능성을 타진하는 것이다. A를 B로 설명가능하다는 것이 무엇인가? 무언가 설명 가능하다는 것은, 새로운 개념의 새로움을 전면으로 부정하는 행위다. 기존의 개념을 조합하여 새로운 것을 기술할 수 있을 때, 우리는 비로소 그것을 '설명 가능하다'고 말한다. 일반화 프롬프팅의 가장 어려운 방법은 설명가능성을 검사하여 통과한 모든 변수들로 새로운 관점을 형성하는 것이다.
설명가능성을 모두 보장하는 변수 집합을 모았더라도, 변수집합으로 새로운 것을 기술할 수 있다고 하더라도, 그 변수들을 어떻게 배치하여 관점을 완성할지는 다른 문제다. 상상해 보자. 당신이 한 그릇의 수프를 만들고 있다. 재료는 다양하다 – 당근, 감자, 고기, 그리고 예상치 못한 향신료 하나. 이 수프를 '맛있는 수프'로 설명하려면, 각 재료가 어떻게 조화를 이루는지 말해야 한다. 하지만 만약 그 향신료가 기존 재료들과 전혀 맞지 않는다면? 예를 들어, 초콜릿을 넣었다고 가정하자. 이제 이 수프는 '초콜릿 향이 나는 야채 수프'가 되지만, 정말로 설명 가능할까? 여기서 핵심은, 설명가능성은 단순한 나열로 변수집합을 완성했다고 충족되는 것이 아니라, 재료 간의 상호작용이 예측 가능한 결과를 낳는지에 달려 있다. 만약 초콜릿이 당근의 단맛을 증폭시키며 예상치 못한 조화를 이룬다면, 그것은 설명 가능하다. 하지만 만약 그 조합이 맛의 혼란만 초래한다면, 우리는 '설명 불가능'이라고 선언하고, 그 향신료를 버리거나 재배치해야 한다.
이 사고실험에서 사람들이 잘 자각하지 못하는 사실 하나를 드러내 보자. 우리는 보통 설명가능성을 '논리적 일관성'으로 착각하지만, 실제로는 그것이 '감각적 예측 가능성'에 뿌리를 두고 있다는 점이다. 마치 눈에 보이지 않는 중력이 물체를 끌어당기듯, 설명이란 우리의 인지적 중력장 안에서만 작동한다. 초콜릿 수프가 설명 불가능한 이유는 논리가 아니라, 우리의 미각 경험(기존 맥락)이 그 조합을 예측하지 못하기 때문이다. 이 비유를 프롬프팅에 적용하면, AI에게 여러 사실을 제시할 때, 단순히 '이 변수들을 연결해 일반법칙을 도출해'라고 지시하는 대신, 이 변수들이 기존 지식과 어떻게 상호작용하며 예측 가능한 결과를 낳는지 확인해야 한다. 그래야 AI는 직렬적 사고의 한계를 넘어, 인간처럼 '예상치 못한 조화'를 탐지할 수 있다.
이 방법의 난이도는 여기서 비롯된다. 변수 집합을 모으는 데 그치지 않고, 그 집합이 형성하는 관점을 '설명 가능성의 중력장' 안에서 테스트해야 하기 때문이다. 예를 들어, 앞서 주식 H의 주가 예측에서 위성사진을 통해 유동인구를 추정하는 아이디어를 떠올려 보자. 이 변수(위성사진 데이터)는 금리나 GDP 같은 기존 변수들과 조합될 때, 설명 가능할까? 그렇다. 왜냐하면 유동인구는 매출의 직접적 지표로, 주가의 선행성을 예측할 수 있는 감각적(데이터적) 예측을 제공하기 때문이다. 하지만 만약 무작위한 변수를 추가한다면, 예를 들어 '점포 근처의 새 떼 이동 패턴'을 넣는다면? 이는 설명 불가능해진다. 새 떼가 매출에 미치는 영향은 우리의 인지적 중력장 밖에서 떠돌기 때문이다. 따라서 프롬프팅 시, AI에게 '이 변수들이 기존 지식과 맞물려 예측 가능한 결과를 내는지, 아니면 중력장을 벗어나는지 판단해'라고 지시하면, 모델은 스스로 이상치를 걸러내고, 진정한 일반화를 이룰 수 있다.
또한, 이 논리를 위해 우리는 '부재(不在)의 증명'이라는 조금은 역설적인 방법론을 도입해야 한다. 설명가능성은 보통 '무언가가 있음'을 증명하는 과정이라고 생각하기 쉽다. A가 B의 원인임을 밝히는 것이 설명이라고 믿는 것이다. 하지만 진정한 통찰은, 당연히 있어야 할 것이 '없음'을 인지할 때, 혹은 없다고 생각한 것이 '있음'을 깨달았을 때 발생한다.
사람들이 흔히 착각하는 물리적 사실 하나를 비유로 들어보자. 우리는 지금 의자에 앉아 엉덩이에 전해지는 묵직한 압력을 느끼며 "아, 중력이 나를 당기고 있구나"라고 생각한다. 하지만 우리가 느끼는 감각은 중력이 아니다. 중력은 우리 몸의 모든 입자를 동시에 당기기 때문에, 만약 바닥이 꺼져 자유낙하를 하게 된다면 우리는 아무런 힘도 느끼지 못하는 '무중력' 상태(실제로는 중력만 작용하는 상태)를 경험한다. 우리가 느끼는 묵직함의 실체는 중력이 아니라, 중력에 저항하여 우리를 떠받치는 의자의 반발력이다.
우리는 평생을 '중력을 느낀다'고 착각하며 살아가지만, 실제로는 '중력에 대한 저항'만을 감각할 뿐이다. 인공지능도 마찬가지다. 모델은 거대한 데이터의 중력 속에 있다. 우리가 일반적인 질문을 던지면(의자에 가만히 앉아 있으면), 모델은 학습된 데이터가 떠받치는 '수직항력'의 답만 내놓는다. 즉, 가장 안전하고 확률적으로 높은, 저항이 강한 답변이다.
설명가능성을 타진하는 가장 어려운 프롬프팅은, 인공지능 밑에 놓인 이 의자를 치워버리는 작업이다. 데이터의 지지대 없이 논리의 중력만으로 자유낙하하며 스스로 궤적을 그리게 만들어야 한다. 당신이 인공지능에게 '어둠'을 설명하게 한다고 가정해보자. 보통의 프롬프트는 "어둠은 빛의 부재이며..."로 시작하는 사전적 정의를 끌어온다. 하지만 당신은 이렇게 요구한다.
빛이라는 단어를 단 한 번도 사용하지 말고, 오직 '소리'와 '촉각'에 관한 개념만을 사용하여 '어둠'을 묘사해. 그리고 그 묘사를 통해 읽는 이가 이것이 '어둠'임을 단번에 알아차리게 하되, 그 논리적 연결고리가 시각적 정보 없이도 완결성을 갖춰야 해.
이 과정은 모델이 생각보다 많이 고민하도록 한다. 시각적 개념(빛)과 어둠의 강력한 연결(직렬화된 맥락)을 강제로 끊어버렸기 때문이다. 모델은 이제 '고요함의 무게'나 '차가운 공기의 밀도' 같은, 평소라면 후순위로 미뤄뒀을 감각적 데이터들을 주섬주섬 꺼내어 '어둠'이라는 빈칸을 메우기 위해 필사적으로 재조립한다. 이때 발생하는 문장들은 기존의 "어둠은 깜깜하다"는 진부한 텍스트와는 궤를 달리한다. 설명할 수 없는 것을 설명하기 위해, 모델은 비로소 은유(Metaphor)를 '흉내' 내는 것이 아니라 은유를 '생성'하게 된다.
결국 프롬프팅의 정점은, AI에게 정보를 주입하는 것이 아니라, AI가 의지하고 있는 '당연한 전제'를 박탈함으로써, 그 공백을 메우기 위해 자신의 잠재 공간(Latent Space) 구석에 처박혀 있던 희소한 확률의 단어들을 끄집어내도록 강제하는, 동시에 우리의 감각으로 납득 할 수 있는 세계관에 지식이 머물수 있도록 하는, '결핍의 설계'에 있다.