AI 는 어떻게 말을 이해할 수 있을까?

도대체 AI는 어떻게 우리의 말을 이해하는 걸까요? 0과 1로만 생각하는 컴퓨터가 어떻게 "안녕하세요"라는 인사말의 의미를 알고, 우리와 자연스럽게 대화할 수 있는 걸까요?
Aug 20, 2025
AI 는 어떻게 말을 이해할 수 있을까?
 
안녕하세요, 플래드 AI Research Engineer 오태균입니다.
 
  • "AI 번역기부터 ChatGPT까지, 언어를 이해하는 기술의 비밀"
  • "일상 속 AI가 말을 알아듣는 원리"
 
ChatGPT가 등장한 이후, AI 기술은 놀라운 속도로 우리 일상 속으로 파고들었습니다. 이제는 번역기로 외국어를 척척 이해하고, 음성인식으로 스마트폰과 대화하며, 챗봇에게 궁금한 것을 물어보는 것이 너무나 자연스러워졌습니다. AI가 없던 시절이 언제였는지 까마득할 정도로요.
특히 많은 사람들이 "나는 기술을 잘 몰라서..."라며 포기했던 일들을 이제는 AI와 대화만으로 해결할 수 있게 되었습니다. 코딩을 몰라도 웹사이트를 만들고, 디자인 경험이 없어도 멋진 이미지를 만들어내죠.
 
notion image
위와 같은 이미지도, 동화같은 컨셉으로 사진을 만들어 달라고 했을때 쉽게 일러스트를 가질 수 있게 되었습니다.
 
그런데 문득 궁금해집니다. 도대체 AI는 어떻게 우리의 말을 이해하는 걸까요? 0과 1로만 생각하는 컴퓨터가 어떻게 "안녕하세요"라는 인사말의 의미를 알고, 우리와 자연스럽게 대화할 수 있는 걸까요?
오늘은 팀 플래드 AI 탐구하기 제1편으로, 'AI가 사람의 말을 이해하는 놀라운 과정'을 함께 들여다보겠습니다.
 

1. 컴퓨터는 어떻게 단어를 이해할까?


notion image
 
우리가 평소에 하는 말을 '자연어'라고 부릅니다. 한국어, 영어, 일어처럼 사람들이 자연스럽게 사용하는 언어를 말하죠. 이와 반대로 컴퓨터가 이해하는 언어는 0과 1로만 이루어진 기계어입니다.
자연어에서 의미를 담는 가장 작은 단위가 바로 “단어”입니다.
예를 들어볼까요? "사과"라는 단어는 빨갛고 달콤한 과일을 떠올리게 하는 완전한 의미를 가지고 있습니다. 하지만 "사과"를 "사"와 "과"로 나누면 각각은 별다른 의미가 없죠.
또 다른 예로 "컴퓨터"도 마찬가지입니다. 이 단어는 전자기기를 의미하지만, "컴", "퓨", "터"로 나누면 의미가 사라져버립니다. 반면 "학교+버스"처럼 두 단어를 합쳐서 "스쿨버스"라는 새로운 의미를 만들 수도 있고요.
그래서 AI가 우리 언어를 이해하려면, 무엇보다 '단어의 의미'를 정확히 파악하는 것이 첫 번째 관문입니다. 마치 외국어를 배울 때 단어부터 외우는 것처럼 말이에요.
 

1.1. 사람과 컴퓨터의 언어 이해 차이


먼저 사람은 자연어로 소통하지만, 컴퓨터는 그렇지 못합니다. 컴퓨터는 오직 '0'과 '1'로만 정보를 처리할 수 있거든요.
 
"잠깐, 그럼 프로그래밍 언어는 뭔가요? 개발자들이 코딩으로 컴퓨터와 대화하는 것 아닌가요?"라고 생각하실 수도 있습니다.
 
하지만 사실 코딩은 컴퓨터와의 대화가 아닙니다.
 
예를 들어 설명해볼게요. 여러분이 해외여행을 가서 현지인과 대화해야 한다고 상상해보세요. 여러분은 한국어로 "안녕하세요"라고 말하고 싶지만, 상대방은 영어만 알아듣습니다. 이때 번역앱을 사용해서 "Hello"로 바꿔서 전달하죠.
 
코딩도 마찬가지입니다. 개발자가 print("Hello") 같은 명령어를 입력하면, 컴퓨터 내부의 번역 프로그램(컴파일러)이 이를 0과 1의 기계어로 바꿔줄 뿐입니다. 결국 컴퓨터는 여전히 0과 1로만 명령을 받고 있는 거죠.
 
그럼 어떻게 컴퓨터에게 단어의 의미를 알려줄 수 있을까요? 이것이 바로 AI 기술의 핵심 도전과제입니다. "사랑"이라는 단어의 따뜻한 감정을, "비"라는 단어가 주는 촉촉한 이미지를 0과 1만 아는 컴퓨터에게 어떻게 전달할 수 있을까요?
 
 

1.2. 시소러스


notion image
 
가장 먼저 떠올릴 수 있는 방법은 사람이 직접 단어의 뜻을 정의해주는 것입니다. 우리가 모르는 단어가 나오면 사전을 찾아보는 것처럼 말이에요.
 
예를 들어 '표준국어대사전'에서 '자동차'를 찾으면 이렇게 나옵니다:
 
"원동기를 장착하고 그 동력으로 바퀴를 굴려서 철길이나 가설된 선을 따르지 않고 땅 위를 움직이는 차"
 
이런 식으로 모든 단어의 정의를 컴퓨터에 입력해두면, 컴퓨터도 단어의 의미를 이해할 수 있을 것 같죠?
하지만 여기에는 문제가 있습니다. 컴퓨터에게 "자동차는 바퀴로 움직이는 차야"라고 설명하면, 이번엔 "바퀴가 뭐지?", "움직인다는 게 뭐지?"라는 새로운 질문이 생깁니다. 마치 꼬리에 꼬리를 무는 질문처럼요.
 
게다가 사람이 수작업으로 이런 단어 그룹들을 만들어야 한다는 것도 큰 문제였습니다. 왜 그럴까요? 총 3가지 이유가 있습니다.
  1. 첫째, 시대 변화를 따라잡기 어렵습니다. 언어는 살아있어서 계속 변화하거든요. 예를 들어 "짱"이라는 말이 90년대에는 "최고"라는 뜻이었지만, 지금은 잘 쓰지 않죠. 반대로 "갓생"(갓-인생의 줄임말), "MZ세대", "메타버스" 같은 신조어들은 매년 새롭게 등장합니다. 사람이 일일이 이런 변화를 추적해서 사전을 업데이트하는 건 거의 불가능에 가깝습니다.
  1. 둘째, 비용과 시간이 엄청나게 많이 듭니다. 한국어 단어가 얼마나 많은지 아세요? 표준국어대사전에만 50만 개가 넘는 단어가 실려 있습니다. 이 모든 단어들의 관계를 정리하려면 수많은 언어학 전문가들이 몇 년간 매달려야 합니다. 그런데 언어별로, 분야별로 각각 만들어야 한다면? 상상만 해도 어마어마하죠.
  1. 셋째, 단어의 미묘한 차이를 표현하기 어렵습니다. "행복하다"와 "기쁘다"는 비슷하지만 완전히 같지는 않아요. "기쁘다"는 순간적인 감정이고, "행복하다"는 더 지속적인 상태에 가깝죠. 하지만 이런 미묘한 뉘앙스의 차이를 사전에서 어떻게 표현할까요? 같은 그룹에 넣기엔 애매하고, 다른 그룹에 넣기엔 너무 비슷하고...
 
이러한 한계들 때문에 완전히 새로운 접근 방법이 필요했습니다.
 

2. 통계 기반 기법


사람이 일일이 단어를 분류하는 게 한계가 있다면, 다른 방법은 없을까요? 여기서 등장한 것이 바로 통계 기반 방법입니다.
 

2.1. 말뭉치 - 컴퓨터가 배울 교과서


notion image
통계 기반 방법을 이해하기 전에, 먼저 '말뭉치(Corpus)'라는 개념을 알아야 합니다.
말뭉치란 대량의 텍스트 데이터를 말합니다. 단순히 아무 글이나 모은 게 아니라, 자연어 연구를 목적으로 체계적으로 수집한 텍스트들이죠.
예를 들어보면:
  • 신문 기사 100만 개
  • 위키백과의 모든 글
  • 소설, 에세이 등 문학 작품들
  • SNS 게시글과 댓글들
이런 말뭉치가 왜 중요할까요? 사람이 실제로 쓴 문장들이 가득하기 때문입니다.
생각해보세요. 여러분이 "비가 온다"라고 쓸 때와 "비가 내린다"라고 쓸 때, 그 앞뒤 문맥이 조금씩 다르지 않나요? 이런 미묘한 사용 패턴들이 말뭉치에는 수백만 개씩 쌓여 있습니다. 마치 사람들이 어떻게 언어를 사용하는지에 대한 거대한 교과서인 셈이죠. 이러한 말뭉치에는 사람이 알고 있는 자연어에 대한 지식이 포함되어 있는 것이라고 생각할 수 있습니다!
 
통계 기반 방법의 핵심 아이디어는 바로 이겁니다
 
"이 거대한 교과서에서 패턴을 찾아내면, 단어의 의미를 자동으로 알아낼 수 있지 않을까?"
 

2.2. 분포 가설 - “친구를 보면 그 사람을 안다”


notion image
 
통계 기반 방법의 핵심에는 '분포 가설(Distributional Hypothesis)'이라는 아이디어가 있습니다. 이를 한 문장으로 요약하면 다음과 같아요.
 
"단어의 의미는 그 주변에 나타나는 단어들에 의해 결정된다"
 
좀 어렵게 느껴지시나요? 우리가 일상에서 자주 쓰는 말로 바꿔보면 "친구를 보면 그 사람을 안다"와 비슷한 원리입니다.
 
예를 들어 이런 문장들을 보세요:
  1. "강아지가 꼬리를 흔든다"
  1. "나무가 바람에 흔들린다"
  1. "아이가 장난감을 흔든다"
"흔든다"라는 단어 주변에 나타나는 단어들을 보면 - 꼬리, 나무, 장난감 - 모두 움직임과 관련이 있죠?
 
이번엔 다른 예시를 보겠습니다:
  1. "맛있는 사과를 먹었다"
  1. "빨간 사과가 떨어졌다"
  1. "달콤한 사과 주스"
"사과" 주변에는 맛있는, 빨간, 달콤한처럼 음식이나 맛과 관련된 단어들이 주로 나타납니다.
 

2.2.1. 맥락과 윈도우 크기


이때 특정 단어 주변의 단어들을 '맥락(Context)'이라고 부릅니다.
그런데 "주변"이라고 하면 얼마나 주변까지 봐야 할까요? 바로 옆 단어만? 아니면 문장 전체? 이를 정하는 게 '윈도우 크기(Window Size)'입니다.
 
예시를 하나 들어볼게요
notion image
  • "너는 내게 ‘잘 가’ 라고 말했다."라는 문장에서 "잘 가"를 중심으로 보면:
  • 윈도우 크기 1: 내게, 라고 (바로 앞뒤 1개씩)
  • 윈도우 크기 2: 너는, 내게, 라고, 말했다 (앞뒤 2개씩)
 
이렇게 표현할 수 있다는 것입니다.
 

2.2.2. 핵심 아이디어


분포 가설의 놀라운 점은 이겁니다. 단어 자체에는 의미가 없고, 그 단어가 어떤 상황에서 사용되는지가 의미를 만든다는 거예요.
"bank"라는 영어 단어를 생각해보세요. 이 단어만 봐서는 "은행"인지 "강둑"인지 알 수 없죠. 하지만 주변 단어들을 보면 금방 알 수 있습니다:
  • "money", "account"와 함께 나오면 → 은행
  • "river", "water"와 함께 나오면 → 강둑
이런 식으로 컴퓨터가 엄청난 양의 텍스트에서 단어들의 사용 패턴을 분석하면, 자동으로 단어의 의미를 파악할 수 있게 되는 거죠!
 

2.3. 동시발생 행렬 - 단어들의 출석부 만들기


분포 가설을 실제로 활용하려면 어떻게 해야 할까요? 가장 직관적인 방법은 "각 단어 주변에 어떤 단어들이 얼마나 자주 나타나는지 세어보는 것"입니다. 이를 '통계 기반 기법'이라고 부릅니다.
 

2.3.1. 단계별로 알아보기


간단한 예시로 설명해보겠습니다. 다음과 같은 문장이 있다고 가정해봅시다:
"I drink coffee. You drink tea. I like coffee. You like tea."
윈도우 크기를 1로 설정하고(앞뒤 1개 단어씩), 각 단어 주변에 어떤 단어들이 나타나는지 세어보겠습니다:
  • "I" 주변에 나타나는 단어: drink (2번), like (1번)
  • "drink" 주변에 나타나는 단어: I (1번), You (1번), coffee (1번), tea (1번)
  • "coffee" 주변에 나타나는 단어: drink (1번), like (1번)
  • "tea" 주변에 나타나는 단어: drink (1번), like (1번)
 
이 정보를 표로 정리하면 다음과 같습니다:
I
drink
coffee
You
tea
like
I
0
2
0
0
0
1
drink
1
0
1
1
1
0
coffee
0
1
0
0
0
1
You
0
1
0
0
0
1
tea
0
1
0
0
0
1
like
1
0
1
1
1
0
이 표를 ‘동시발생 행렬(Co-occurrence Matrix)'이라고 합니다. 왜 '동시발생'이라고 할까요? 두 단어가 서로 가까운 위치에서 '동시에 발생'하는 횟수를 기록하기 때문입니다.
 

2.4. 단어를 색깔처럼 표현하기 - 분산 표현


notion image
 
여기서 흥미로운 아이디어가 하나 등장합니다.
컴퓨터에서 색깔을 어떻게 표현하는지 아시나요? RGB 방식을 사용해서 빨강(R), 초록(G), 파랑(B) 세 가지 숫자로 모든 색을 나타냅니다.
  • 빨간색: (255, 0, 0)
  • 노란색: (255, 255, 0)
  • 보라색: (128, 0, 128)
 
이렇게 하면 좋은 점이 뭘까요? 색깔들 사이의 유사성을 숫자로 계산할 수 있다는 겁니다. 빨간색(255, 0, 0)과 주황색(255, 165, 0)은 숫자상으로도 비슷하죠?
 
그렇다면 단어도 이런 식으로 표현할 수 있지 않을까요?
  • 사과: (0.2, 0.8, 0.1, 0.9, ...)
  • 바나나: (0.1, 0.7, 0.2, 0.8, ...)
  • 자동차: (0.9, 0.1, 0.8, 0.2, ...)
 
물론 각 숫자가 정확히 무엇을 의미하는지는 우리가 직접 정하지 않습니다. 대신 컴퓨터가 말뭉치를 분석해서 "비슷하게 사용되는 단어들은 비슷한 숫자를 갖도록" 자동으로 만들어내는 거죠.
이렇게 단어를 여러 개의 숫자로 표현하는 방법을 '분산 표현(Distributed Representation)'이라고 부릅니다.
 

2.4.1 벡터로 단어 표현하기


그럼 어떻게 분산 표현을 만들 수 있을까요? 먼저 무작정 모든 등장하는 단어마다 하나씩 출석부를 만들어 보는 겁니다.
 
I
drink
coffee
You
tea
like
I
0
2
0
0
0
1
drink
1
0
1
1
1
0
coffee
0
1
0
0
0
1
You
0
1
0
0
0
1
tea
0
1
0
0
0
1
like
1
0
1
1
1
0
 
이제 각 행을 보면, 그 자체가 해당 단어의 벡터 표현이 됩니다:
  • "coffee"의 벡터: (0, 1, 0, 0, 0, 1)
  • "tea"의 벡터: (0, 1, 0, 0, 0, 1)
 
놀랍게도 "coffee"와 "tea"의 벡터가 완전히 같습니다! 이는 두 단어가 비슷한 맥락에서 사용된다는 뜻이죠. 실제로 둘 다 음료이고, "drink"나 "like"와 함께 쓰이니까요.
 
실제로는 수백만 개의 문장을 분석해서 훨씬 큰 동시발생 행렬을 만듭니다. 그러면 비슷한 의미의 단어들은 비슷한 벡터를 갖게 되고 전혀 다른 의미의 단어들은 완전히 다른 벡터를 갖게 됩니다. 마치 "단어들의 출석부"를 만드는 것과 같습니다. 어떤 단어들끼리 자주 같이 나타나는지를 기록해두는 거죠!
 
이렇게 말뭉치에서 다른 단어와 비교했을때, 등장 횟수를 일일이 표기하는 것이 바로 통계 기반 방법입니다. 하지만 여기에는 치명적인 단점이 있습니다. 세상 모든 단어를 동시 발생 행렬로 만들기에는, 행렬이 너무 커질것 같습니다.
 

2.5. 통계 기반 방법의 치명적 문제


앞서 살펴본 동시발생 행렬 방법은 이론적으로는 완벽해 보입니다. 하지만 실제로 적용하려고 하면 엄청난 벽에 부딪히게 됩니다. 현실의 말뭉치는 우리가 예시로 든 몇 개 단어와는 차원이 다릅니다. 실제 업무에서 사용하는 말뭉치는 어휘가 100만 개를 넘기도 합니다.
100만 개 단어로 동시발생 행렬을 만든다면? 100만 × 100만 크기의 행렬이 나옵니다. 이는 1조 개의 숫자를 저장해야 한다는 뜻이죠.
더 큰 문제는 이 거대한 행렬을 처리하는 데 필요한 SVD(특이값 분해) 계산입니다. 이 계산의 복잡도는 O(n³)인데, 쉽게 말해 단어 수가 10배 늘어나면 계산 시간이 1,000배 늘어난다는 뜻입니다.
 
100만 개 단어? 슈퍼컴퓨터로도 몇 년이 걸릴 수 있습니다.
 

3. 추론 기반 방법의 등장


notion image
 
그래서 사람들은 신경망을 사용한 추론 기반 방법을 개발하기로 했습니다.
추론 기반 방법이란, 대량의 텍스트 데이터에서 단어들 간의 패턴을 학습한 후, 그 학습된 지식을 바탕으로 새로운 문맥에서도 단어의 의미를 추론할 수 있는 방법입니다. 예를 들어 설명해보겠습니다.
 
학습 단계에서 이런 문장들을 본 신경망이 있다고 해봅시다
  • "고양이가 소파에서 잠을 잔다"
  • "강아지가 마당에서 뛰어논다"
  • "새가 하늘을 날아간다"
 
추론 단계에서 신경망이 처음 보는 문장을 만날 때:
  • "토끼가 정원에서 ___한다"
 
신경망은 학습했던 패턴들을 종합해서 "뛰어논다", "놀고 있다" 같은 동물의 행동과 관련된 단어가 올 가능성이 높다고 추론할 수 있습니다. 즉, 단순히 외운 조합이 아니라, 언어의 규칙과 의미를 이해해서 새로운 상황에도 적용할 수 있는 능력을 갖게 되는 것이죠.
이것이 바로 통계 기반 방법과 추론 기반 방법의 핵심적인 차이점입니다.
 
이런 식으로 신경망을 학습 시킨다면, AI는 사람의 단어에 대한 의미를 알 수 있을 것입니다. 어떻게 이러한 추론 기반 방법이 가능할까요? 다음 시간에는 추론 기반 방법에 대한 실습과 단어 임베딩에 대해 배워보겠습니다.
 
 
 
 
 
Share article

플래드