주식 투자자가 알아야 할 가장 기본적이고 중요한 지식을 담아 ‘최소한의 주식 공부’를 연재합니다. 주식이라는 자산의 근본적인 실체에서 시작해, 의사결정의 주요 원칙과 피해야 할 함정에 대해 홍진채 라쿤자산운용 대표가 독자 여러분과 함께 고민합니다. ― 버핏클럽

Getting your Trinity Audio player ready...

지난 두 달간 인공지능을 주제로 글을 썼네요. 오늘은 인공지능을 실제로 투자하는 데 어떻게 이용할 수 있는지 이야기해보겠습니다.

인공지능은 다양한 활용법이 있고 코딩이 익숙한 분들이라면 아주 다양한 일을 할 수 있겠습니다만, 여기서는 순수하게 ‘챗봇’, 즉 대화 상대로서 어떻게 대화를 주고받으면 유익하게 활용할 수 있는지에 집중하겠습니다. 그렇게만 하더라도 효율이 상당히 높아진다고 생각합니다.

트랜스포머 아키텍처 기반 LLM

먼저 주의 사항부터 이야기해보겠습니다. 현시대의 생성형 AI는 ‘트랜스포머’라는 구조를 활용합니다. 이게 뭔지는 챗봇에 물어보면 친절히 잘 알려줄 테니 생략하겠습니다. 이 구조가 가지는 대화 상대로서의 맹점을 짚어보겠습니다.

적당히 그럴싸하게 꿰맞춘다

트랜스포머는 (그 전 세대인 RNN도 마찬가지지만) 학습된 데이터들로부터 높은 확률로 자연스러운 다음 구절을 출력합니다. 이 세계가 어떻게 구성되고 논리적인 관계가 어떻게 되느냐보다는, 지금까지 수십억 인구가 해왔던 대화를 모조리 읽고 A가 이런 질문을 하면 그다음에 B가 이렇게 받는 경우가 많았다는 것을 학습하여 그대로 따라 합니다.

엉뚱한 답변을 했다고 지적하니 “죄송합니다”라면서 다음 대답을 이어나가는 건 죄송하다는 감정을 느껴서가 아니라, “엉뚱한 답변이야”라는 인풋이 들어오면 죄송하다고 대답하고 앞서 한 대답과 다른 방향의 대답을 검토하는 게 자연스러운 학습 패턴이었기 때문입니다.

기능이 점점 더 고도화되어서 실제 논리적인 추론을 하는 것처럼 보이는 단계까지 왔습니다만, 근본은 달라지지 않았습니다.

그래서 챗봇이 하는 어떤 대답도 이 챗봇이 무언가를 ‘안다’라고 생각하기보다는, 이렇게 답변하는 게 현재 이 녀석이 가진 정보 수준에서 가장 ‘그럴싸하다’라고 받아들이는 게 좋습니다.

무언가를 ‘안다’라는 건 어찌 보면 정보와 지식의 존재 여부보다는, 답변을 책임질 수 있는가의 문제 아닌가 싶기도 합니다. 챗봇은 자신의 답변에 아무런 책임을 지지 않습니다. 책임은 답변을 활용하는 사람이 집니다.

모른다는 걸 모른다

챗봇을 써본 사람이라면 ‘환각(hallucination)’ 현상을 한 번 이상은 다들 겪어보았을 겁니다. ‘세종대왕 맥북 사건’ 정도의 환각은 이제 일어나지 않지만, 그래도 매우 그럴싸한 답변임에도 까놓고 보면 허구였던 경우가 많죠.

챗봇은 왜 이런 환각 현상이 일어날까요?

트랜스포머는 비유하자면 지도에서 길을 찾아가는 것과 비슷합니다. ‘질문’이라는 시작점이 있고 ‘답변’이라는 종착점이 있을 때, 질문에서 답변으로 가는 최적 경로를 찾는 게 트랜스포머의 연산입니다. 지도와의 차이는 경로의 한 구간 구간이 실제의 경로라기보다는 질문 토큰의 의미가 무엇인지 구체화하는 과정(KV 연산)이고, 지도의 2~3차원 평면이 아닌 수천만 차원 평면에서 길 찾기를 한다는 것 정도가 있겠습니다. (어려운 얘기니까 그냥 넘어가도 됩니다.)

트랜스포머 LLM은 아웃풋 토큰을 뱉기 전 소프트맥스라는 연산을 합니다. 다음 토큰으로 어떤 토큰이 가장 자연스러울지 확률을 계산하는 함수입니다. 여러 토큰을 놓고 각 토큰의 ‘그럴싸한 정도’를 나열합니다. (흥미로운 건 가장 확률이 높은 토큰만 출력하면 오히려 답변 문장이 이상해진다는 점입니다. 그래서 최상위가 아니라 적당히 상위권에 있는 답을 출력합니다.) 트랜스포머는 소프트맥스 결과에서 상대적으로 상위권에 있는 토큰을 아웃풋으로 뱉을 뿐, 그 아웃풋이 실제 ‘정확한’ 아웃풋인지는 모릅니다. 지도로 비유하자면 답변까지 길을 쭉 찾아가다가 더 이상 답변으로 가는 길이 없을 때, 대충 이렇게 가면 되겠다고 하며 선을 죽 그어버리는 거라고 볼 수 있습니다. 목적지까지 골목길을 좀 더 들어가야 하는데 내비게이션이 대뜸 ‘목적지에 도착했습니다’라고 하는 상황을 한 번씩은 겪어보셨을 겁니다.

트랜스포머는 앞에서 언급한 것처럼 ‘그럴싸한’ 자연스러운 답변을 뱉는 기계입니다. 무엇이 자연스러운지 아닌지를 연산할 뿐, 맞는지 틀렸는지를 연산하지 않습니다.

무언가를 ‘안다’라는 개념이 생각보다 모호했던 것처럼 ‘모른다’라는 개념 또한 생각보다 모호합니다.

그래서 검증이 필요한데, 검증은 구글에 직접 검색하거나 퍼플렉시티를 활용하는 게 좋습니다. 챗GPT, 그록, 제미나이는 그때그때 번갈아 가며 쓰더라도, 퍼플렉시티만큼은 크로스 체크를 위해 계속 써주는 게 좋습니다. 퍼플렉시티는 모든 질문에 대해 검색을 하고 그 결과를 우선 조합해서 대답하도록 설계되었습니다. 이 녀석도 환각이 없지는 않지만, 가장 덜합니다.

(희소한) 고유명사에 약하다

일반명사는 학습 데이터에서 자주 언급되지만, 고유명사는 특정 상황에서만 언급됩니다. 전 세계 텍스트 데이터에서 ‘영업이익’이 등장하는 빈도와 ‘구글의 영업이익’이 등장하는 빈도가 얼마나 다를지 떠올려보면 쉽게 와닿을 겁니다.

학습 과정에서는 문장을 토큰화하고, 각 토큰이 다른 토큰들과 어떤 연관성을 가지는지를 고려해 적절히 배치합니다. 이를 ‘임베딩(embedding)’이라고 하는데, 언어의 지도를 만드는 과정이라고 생각하면 됩니다.

이 과정에서는 자주 등장하는 고유명사라면 일반명사와 비슷하게 다른 토큰들과의 상대적인 거리를 명확하게 인식하여 어느 한 점(벡터)으로 남습니다. 그러나 희소하게 등장하는 고유명사라면 어딘가에 임베드되기는 하겠지만, 그 위치가 실제 인간이 사용하는 언어 세계 안의 위치를 잘 묘사하지 못할 수 있습니다.

그럼에도 LLM은 본인이 모른다는 걸 모르기 때문에 고유명사 관련 질문이 들어오면 대충 아무 말이나 뱉어버립니다. 답변에 고유명사가 들어갈 때도 마찬가지고요. 어떤 내용의 소설이나 영화를 찾아달라고 질문하면 매우 그럴싸한 대답을 내놓지만, 실제로 없는 작품인 경우가 많습니다.

물론 이런 현상도 많이 개선되어 희소한 고유명사를 다루어야 할 때에는 웹을 검색해서 좀 더 구체화한 다음에 대답합니다. 그러니 고유명사가 포함된 대답을 받을 때는 주의를 기울여서 답변의 내용이 좀 이상하다 싶으면 “검색해보고 다시 알려줘”라고 하면 됩니다.

마찬가지로 최신의 뉴스에도 약할 수 있습니다. 현세대의 생성형 인공지능은 학습(언어 지도 작성)과 추론(답변 생성)이 분리되어 있습니다. 실시간 학습이 불가능하진 않은데, 기술적으로나 사회적으로 여러 문제가 있어서 조심스럽게 시도되고 있습니다.

그래서 챗봇의 대답은 기본적으로 학습이 완료된 시점까지 알고 있던 뉴스까지를 바탕으로 합니다. 이 또한 검색을 하면 금방 해결되기 때문에 어떤 질문에 대해서 “그런 사실이 없습니다” 같은 대답을 한다면 “최근에 발생한 사건이야. 검색해보고 다시 대답해줘”라고 하면 됩니다. (봇에게 화낼 필요가 없습니다.)

대화 주제가 한자리를 ‘맴돌면’ 안 된다

챗봇과의 대화는 주제를 깊게 파고 들어가는 게 퀄리티가 좋습니다. 혹은 조금씩 다른 주제로 드리프트하거나요.