시리야 자연 언어 처리가 뭐야
컴퓨터가 인간의 일상적인 언어(자연어)를 이해하고 분석하기 위해 단어를 숫자로 쪼개고 문맥을 파악하는 자연어 처리(NLP) 기술의 진화를 설명한다.
편집부 · 2022년 1월 27일 · 읽는 데 4분
"시리야, 내일 우산 챙겨야 할까?" 우리가 무심코 던진 이 질문에 스마트폰은 1초도 안 되어 "내일 오후에 비가 올 확률이 80%입니다. 우산을 챙기세요"라고 대답한다. 우리에게는 너무나 자연스러운 대화지만, 컴퓨터의 입장에서 인간의 언어(자연어)는 끔찍하게 어렵고 무질서한 엉망진창의 암호 덩어리다. 컴퓨터는 0과 1이라는 차가운 숫자밖에 모른다. "우산 챙겨"라는 말이 '비가 오냐'는 뜻인지 어떻게 알았을까? "배가 아프다"의 '배'가 타는 배인지 먹는 배인지 어떻게 구별할까? 기계가 인간의 애매모호하고 변덕스러운 언어를 쪼개고 분석하여 문맥을 파악하고 대화까지 이어나가는 기적의 인공지능 기술, '자연어 처리(NLP, Natural Language Processing)'가 어떻게 언어의 장벽을 박살 내고 기계에 영혼을 불어넣고 있는지 그 복잡한 수학적 번역의 세계로 들어가 보자.
언어를 숫자로 잘게 썰기, 토큰화
자연어 처리의 첫걸음은 인간의 문장을 기계가 삼킬 수 있게 잘게 썰어내는 '토큰화(Tokenization)' 작업이다. "나는 사과를 먹는다"라는 문장이 들어오면, 컴퓨터는 이것을 [나, 는, 사과, 를, 먹, 는다]처럼 의미를 가진 최소 단위(형태소)로 싹둑싹둑 자른다. 영어는 띄어쓰기만으로 쉽게 잘리지만, 한국어는 조사와 어미가 지독하게 엉겨 붙어 있어 토큰화하기가 세계에서 가장 까다로운 언어 중 하나다. 썰어낸 단어들은 이제 기계가 좋아하는 '숫자'로 번역되어야 한다. 초기의 NLP는 단어들의 목록을 쭉 나열해 놓고 사과에는 1번, 바나나에는 2번 식의 단순한 이름표를 붙였다. 하지만 이런 방식은 "사과와 바나나가 과일이라는 점에서 서로 비슷한 단어"라는 '의미'를 전혀 기계에게 가르쳐주지 못했다.
단어들의 3차원 우주, 워드 임베딩
컴퓨터에게 단어의 뉘앙스를 가르치기 위해 과학자들은 마법 같은 수학 공간을 만들어냈다. 바로 '워드 임베딩(Word Embedding)'이다. 과학자들은 수억 권의 책과 인터넷 글을 인공지능에 먹이로 주며 학습시켰다. 컴퓨터는 텍스트를 쭉 읽다가, "'왕'이라는 단어 주변에는 항상 '권력, 남자, 통치' 같은 단어들이 맴도는구나!"라는 패턴을 파악한다. 컴퓨터는 이 단어들을 숫자로 이루어진 거대한 3차원 좌표 공간(벡터 공간)에 둥둥 띄워 배치한다. 기가 막히게도 '왕'과 '남자'라는 단어의 거리는 아주 가깝게 뭉치고, '왕'에서 '남자'의 방향을 빼고 '여자'의 방향을 더하면 정확히 '여왕'이라는 단어의 위치에 꽂힌다(King - Man + Woman = Queen). 기계가 뜻을 알고 이해한 것이 아니라, 단어들이 같이 쓰이는 통계적 확률(거리와 방향)을 완벽하게 계산해 내어 단어의 '의미'를 숫자의 관계로 매핑해 낸 것이다.
문맥의 마술사, 트랜스포머(Transformer)
단어의 뜻은 알았지만, 문장이 길어지면 컴퓨터는 붕어빵처럼 앞의 내용을 까먹어버린다. "그 소년은... (100단어 뒤)... 그래서 '그'는 화가 났다"라는 문장에서 '그'가 소년이라는 사실을 기계는 추론하지 못했다(RNN의 한계). 2017년 구글은 이를 완벽하게 해결한 미친 논문을 발표한다. 바로 '트랜스포머(Transformer)' 알고리즘의 탄생이다. 트랜스포머는 문장을 앞부터 순서대로 읽지 않는다. 문장 전체를 통째로 훅 집어삼킨 뒤, '어텐션(Attention)'이라는 마법의 공식을 사용해 문장 속의 모든 단어가 서로에게 얼마나 강한 영향을 미치고 있는지(어떤 단어에 주목해야 하는지) 수학적인 거미줄을 미친 듯이 그려낸다. '그'라는 단어가 100단어 앞에 있는 '소년'과 가장 끈끈하게 연결되어 있다는 것을 스스로 깨우쳐 완벽한 문맥과 맥락을 이해하게 된 것이다. 지금 전 세계를 집어삼킨 '챗GPT'의 T가 바로 이 트랜스포머(Generative Pre-trained Transformer)의 약자다.
감정 분석과 챗봇의 르네상스
문맥을 이해한 NLP는 텍스트 뒤에 숨겨진 인간의 '감정'까지 읽어낸다(감정 분석, Sentiment Analysis). 기업들은 이 기술을 이용해 하루에 수십만 건씩 쏟아지는 트위터나 상품 리뷰를 기계에게 읽힌다. 기계는 "배송은 빠른데 포장이 엉망이네요"라는 비꼬는 문장을 완벽하게 긍정과 부정의 점수로 쪼개어 실시간으로 고객의 여론을 파악한다. 콜센터의 챗봇은 분노한 고객의 문장 패턴을 읽어내어 사람 상담원보다 더 부드럽고 정확하게 해결책을 제시하는 공감형 인공지능으로 진화했다. ![빛나는 스마트 스피커와 대화하는 사람, 그리고 홀로그램 말풍선은 혼란스러운 인간의 문장이 수학적 알고리즘에 의해 우아하게 잘리고 분류되는 것을 보여줍니다](https://image.
이어서 읽기