# Limits of natural language based AI-Human interaction > 자연어에 기반한 AI-인간 인터랙션으로 인한 한계에 대해 생각해봤다. AI-인간 상호작용 루프에서의 병목을 일으키는 주요 요인 중 하나다. (다른 하나는 아마도 인간의 게으름) <자연어>에 기반한 [AI-인간 인터랙션](https://wiki.g15e.com/pages/AI-Human%20interaction.txt)으로 인한 한계에 대해 생각해봤다. [AI-인간 상호작용 루프에서의 병목](https://wiki.g15e.com/pages/Bottleneck%20of%20AI-Human%20interaction%20loop.txt)을 일으키는 주요 요인 중 하나다. (다른 하나는 아마도 인간의 게으름) ## 자연어 소통의 기이함 영화에서 로봇끼리 <자연어>로 대화하는 걸 보며 비효율적이라는 생각을 하곤 했다. 자연어는 여분도 많고, 모호하고, 숨쉬는 기관(허파)이랑 맛보는 기관(혀)이랑 소화 기관(이빨) 등을 변용해서 공기를 울려 신호를 보내고 물 속에서 방향 잡던 기관(귀)을 변용해서 공기의 울림을 감지하여 신호를 받는 식의 설계도 참 기이하다. 설계의 기이함이 물리적인 신체 기관에서만 끝날 리는 없다. 언어와 사고는 서로 밀접하게 엮여 있으니 인간의 사고도 다양한 이유에서 비효율적이고 기이할 것이 분명하다. [진화사](https://wiki.g15e.com/pages/Human%20evolutionary%20history.txt)를 살펴보면 이해가 되는 설계지만, 소통 방식을 밑바닥부터 새로 설계한다면 이렇게 하지는 않겠지. 로봇끼리 소통하는 맥락에서 이런 이상한 방식을 쓰는 건 대단히 이상하다. 물론 인간 관찰자의 존재를 생각해보면 장점도 있기는 하겠다. 평문 기반의 프로토콜이 가지는 장점과 유사. ## LLM과 인간 사이의 자연어 소통 그렇다면 인간과 기계 사이의 소통을 자연어로 하는 건 어떨까? [LLM](https://wiki.g15e.com/pages/Large%20language%20model.txt) 덕분에 2년 가까이 체험을 해봤으니 회고를 할 때가 됐다([ChatGPT](https://wiki.g15e.com/pages/ChatGPT.txt)는 <2022년 11월 30일>에 공개되었고 이 글은 <2024년 7월 27일>에 쓰는 중). 일단, 기계랑 대화를 잘 하기 위한 화술을 배워야 했다. 기계 화술을 가르치는 학원도 있고, 기계 화술이 뛰어난 사람을 찾는 회사도 생겼다. 기계 화술을 우리는 [프롬프트 엔지니어링](https://wiki.g15e.com/pages/Prompt%20engineering.txt)이라고 부른다. 화술 학원에서 가르치는 기술을 두 범주로 나눠보면 유익하다. - 범주1은 기계가 인간과 다르기 때문에 인간 화자가 기계 청자를 위해 배우는 화술이다. - 범주2는 청자가 기계이건 인간이건 간에 화자의 의도를 효율적으로 전달하기 위해 필요한 화술이다. 지금은 범주1이 병목인 경우가 종종 있지만 조만간 범주2가 병목이 될테고 앞으로 영원히 그럴 가능성이 있다. ## 병목 개선을 위한 인공 언어 범주2를 병목으로 보고 이걸 개선한다는 건 무슨 뜻일까? 인간-기계의 소통 과정을 나눠보면 모호하지만(예: 단일 LLM이라면 3, 4, 5가 거의 한 덩어리) 대충 이렇다. 1. 인간: 의도를 형성 2. 인간: 의도를 발신 3. 기계: 수신 4. 기계: 계산 5. 기계: 응답을 발신 6. 인간: 수신 7. 인간: 해석 인간이 의도를 형성하고 발신하는 단계(1, 2), 기계의 응답을 수신하고 해석하는 단계(6, 7)가 다 병목이다. 언어와 사고가 밀접히 엮여 있으니 언어를 개선하면 사고도 조금 개선되지 않을까? 즉, 더 개선된 언어로 소통하면 내 의도를 더 날카롭게 다듬고, 소통을 더 명확하게 할 수 있지 않을까? 자연어 소통의 단점을 좀 더 살펴보면 1) 각 단계가 오래 걸리는 문제, 2) 의도가 명확치 않아 소통이 반복되는 문제(예: "아니 내 말은 그게 아니고…"), 3) 그럭저럭 수용할만한 결과가 나오면 만족해버리는 문제(예: "어휴 설명하기 귀찮아. 이만하면 됐지 뭐…") 등이 있다. 인간-인간 소통에서 소통을 명확히 하고 효율을 높이고 싶을 때 뭘 하더라? 형식화를 한다. 대표적 사례는 이공계열 논문. 배우기도 쉽고 쓰기도 쉬운 <형식 언어>를 만들면 제일 좋겠지만 그건 어려우니 하나를 택한다면 배우기는 어렵지만 쓰기는 쉬운 방향을 지향해야. 인간-기계가 소통하기 위한, 배우긴 어렵지만 쓰긴 쉬운 언어. 사고방식에 영향을 주는 언어. 그런 게 뭐가 있더라? 프로그래밍 언어. 어떤 프로그래밍 언어? [파이썬](https://wiki.g15e.com/pages/Python.txt)보다는 [Lean](https://wiki.g15e.com/pages/Lean%20(programming%20language.txt))에 가깝고, <문학적 프로그래밍>마냥 자연어와 형식언어를 쉽게 섞어 쓸 수 있는 무언가. 의식의 흐름대로 쓰다보니 결국 인간-기계 간 소통을 크게 개선하려면 인간의 사고와 언어가 개선되어야하고, 그 방편으로 프로그래밍 언어(혹은 증명 언어)+형식 논리 같은 걸 배우면 좋겠다는 식으로 가버려서 이상해졌지만(망치를 들면 모든 것이 못…), 타당한 방향 중 하나인 것 같다. 이미 이런 흐름의 단편들이 보이기 시작하는데, 일례로 LLM에게 의도를 명확히 전달하는 방법 중 하나로 응답의 타입(또는 스키마)를 정의해서 전달하는 방법이 널리 쓰이고 있다. '타입 정의'와 '명확한 의도 형성' 사이엔 깊은 관련이 있는데 이 얘기는 나중에. 추가로, 어차피 지금 방식의 확률적 생성 모델만으론 한계가 명확하고 전통적 기호 처리 방식(, Symbolic AI)이 엮여야 할텐데(이미 그러고 있고), 이런 흐름을 생각하더라도 (인간-기계 소통의 효율을 극도로 높이는 게 중요한 상황이라면) 인간의 자연어+모호한 사고는 병목이다. ## 관련 자료 - [Reliable Reasoning Beyond Natural Language](https://wiki.g15e.com/pages/Reliable%20Reasoning%20Beyond%20Natural%20Language.txt) (Prolog를 LLM을 위한 정신어로 쓰기) - [LeanTool](https://wiki.g15e.com/pages/LeanTool.txt)