[AI 이야기]


-인공 신경망에 언어 데이터 넣어 …문장을 토크 단위로 자르고 벡터·매트릭스로 변화
[Hello AI] ‘짱구야, ○○에 대해 알려줘’… AI 스피커는 어떻게 인간 언어를 이해할까
[한경비즈니스 칼럼=이주열 LG CNS AI빅데이터연구소장, 김명지 AI빅데이터연구소 책임] 옛날의 인류는 정보 교환을 위해 사람과 사람의 의사소통에 의존할 수밖에 없었다. 문자가 생긴 뒤로는 정보를 기록할 수 있게 됐고 사람들은 궁금한 것을 책 등의 기록물을 보고 해결할 수 있었다. 요즈음 Z세대라고 불리는 초등학교 저학년 정도인 아이들은 컴퓨터보다 모바일 기기에 더 익숙하다. 이들은 질문이 생기면 인공지능(AI) 스피커에 음성으로 물어본다(짱구야~ ○○에 대해 알려줘~). AI 스피커에게 물어본다면 컴퓨터나 모바일 기기를 켜 자판을 치고 검색할 필요도 없이 바로 대화로 답변을 얻을 수 있다. AI 스피커는 우리가 무엇을 궁금해 하는지 어떻게 인식하고 답변해 줄까.
[Hello AI] ‘짱구야, ○○에 대해 알려줘’… AI 스피커는 어떻게 인간 언어를 이해할까
자연어 이해(NLU)
자연어 이해 또는 자연어 처리(NLP : Natural Language Processing)는 말 그대로 자연어를 이해하거나 처리하는 기능에 대한 것인데, 그 주체는 ‘기계’다. 기계가 자연어를 이해한다는 것은 어떤 것일까. 용어를 하나씩 뜯어보기로 하자.


‘자연어(Natural Language)’는 사람들이 일상적으로 쓰는 언어로, 우리가 쓰는 한국어·영어·중국어·일본어 등이 있다. 자연어는 기원을 찾기 힘들며 자연 발생한다는 특징이 있다. 반대되는 개념으로 인공어(Constructed Language)가 있다. 인공어는 의도와 목적에 따라 인공적으로 만든 언어로, 프로그래밍 언어와 같은 기계어라든가 전 세계 공용 언어 사용을 위해 만들어진 에스페란토 등이 이에 해당한다.


‘언어(Language)’라는 데이터 타입은 말하고 듣는 음성과 쓰고 읽는 문자로 이뤄져 있다. 예를 들어 영화 ‘아이언맨’을 친구에게 설명한다고 가정해 보자. 친구는 영화의 내용을 전혀 모르기 때문에 주어진 설명으로만 내용을 상상할 수 있다.


“억만장자 천재 발명가인 토니 스타크가 심장에 치명적인 상처를 입은 자신의 목숨을 지키며 아이언맨 강화 슈트를 제작한다. 세계를 지킬 과학의 결정체인 아이언맨은 범죄와 싸워 나간다.”


친구는 한 줄짜리 줄거리만으로 내용을 상상할 수 있을까. 아마 과학의 결정체인 강화 슈트라는 게 무엇인지부터 혼란을 겪을 것이다. 어쩌면 ‘슈트’라는 말로부터 턱시도 같은 의상을 생각할 수도 있다. 하지만 영화 포스터나 스틸 컷을 보여줄 수 있다면 어떨까. 더 나아가 아예 영화를 보여줄 수 있다면 설명할 수고도 줄어들고 친구도 훨씬 더 깊게 이해할 수 있다.


백 번 듣는 것보다 한 번 보는 것이 낫다는 말도 있다. 영화라는 다차원 데이터(동영상)는 많은 정보를 포함할 수 있다. 반면 텍스트로 표현된 언어 데이터는 많은 정보를 굉장히 함축해 인코딩한 자료라는 특징이 있다.
[Hello AI] ‘짱구야, ○○에 대해 알려줘’… AI 스피커는 어떻게 인간 언어를 이해할까
‘이해(Understanding)’한다는 것은 처리한다는 것보다 한 단계 더 높은 수준을 요구한다. 처리는 기계적으로 규칙을 따라 얼마든지 수행할 수 있지만 이해는 맥락 내용에 대한 파악을 전제로 한다. 보통은 자연어 처리(NLP)나 자연어 이해(NLU)라는 용어를 거의 구분 없이 사용하고 있지만 엄밀히 나누자면 자연어 처리에 해당하는 부분은 언어의 형식이나 구문론과 관련된 기능들로, 문장을 형태소 단위로 쪼갠다든지(POS), 구문 분석을 수행한다든지 하는 기능이 그 예다. 반면 자연어 이해는 문장 내 표현된 감성을 인식하는 감성 분류라든지, 문서 내 중요한 부분을 캐치하는 요약 등의 기능을 포함한다.


기계가 언어를 이해기 위해서는 일단 언어를 인식해야 하는데 딥러닝을 적용하려면 인공 신경망에 언어 데이터를 넣어 모델을 학습시켜야 한다. 하지만 인공 신경망에 데이터를 적용하려면 데이터의 생김새가 인공 뉴런이 계산(가중합이나 비선형 함수 적용)할 수 있는 형태여야 한다.
[Hello AI] ‘짱구야, ○○에 대해 알려줘’… AI 스피커는 어떻게 인간 언어를 이해할까
기계에 사람의 언어를 인식시키려면


텍스트로 된 언어는 계산 가능한 형태가 돼야만 인공 신경망으로 학습될 수 있다. 즉, 텍스트 데이터는 실수로 이뤄진 벡터나 매트릭스 등의 타입으로 변환돼야 한다. 이러한 다차원의 실수 데이터를 텐서(Tensor)라고 부른다. 이미지 데이터는 픽셀 값을 2차원 또는 3차원의 텐서로 만들어 인공 신경망에 태울 수 있다. 언어도 텐서로 바꿔 인식시킬 수 있다. 예를 들어 간단한 문장 하나를 예로 들어 보자.


토크나이징(Tokenizing) : 한 덩이로 돼 있는 문장을 인공 신경망에 인식시키기 위해서는 세부 단위로 쪼개는 작업이 필요하다. 이를 토크나이징 또는 파싱이라고 하며 이 쪼개진 단위를 토큰(token)이라고 부른다. 어떻게 쪼개면 좋을지는 언어의 특징과 수행하고자 하는 태스크와 데이터의 특징에 따라 달라진다.


일반적으로 한국어는 교착어라는 언어 특성상 문장을 형태소 단위로 자르거나 음절 단위로 자른다.


워드 임베딩(word embedding) : 한 덩이의 문장이 토큰들로 쪼개졌다면 이 토큰들을 인공 신경망이 계산할 수 있도록 벡터로 바꿔 줘야 하는데 이를 워드 임베딩이라고 부른다. 워드 임베딩 기법에는 여러 가지가 있지만 딥러닝에서는 사람의 언어 습득 과정과 유사한 워드 임베딩 학습 과정을 활용한다. 사람은 언어를 배울 때 사전을 찾아가면서 모든 단어의 정확한 의미를 습득하지 않는다. 비슷한 문맥에서 비슷한 위치에 등장하는 단어끼리는 유사한 의미를 가진다는 것을 알게 되니 문장 내 어떤 단어의 의미를 만일 모른다고 해도 앞뒤 문맥이나 여러 예문을 보면 그 뜻을 대강 유추할 수 있다. 대표적인 알고리즘으로는 CBOW나 SKIPGRAM이 있다.


두 방식 모두 단어(토큰)를 특정 길이를 가진 임의 벡터로 만들어 주는데 많은 문장을 학습시키면 시킬수록 더 좋은 품질의 벡터가 나온다.


텍스트를 벡터로 바꾼 뒤라면 인공 신경망을 어떻게 구성하느냐에 따라 다양한 태스크를 수행할 수 있다.

문장·문서 분류(Sentence·Document Classification) : 입력받은 텍스트를 지정된 K개의 클래스(또는 카테고리) 중 하나로 분류하는 과제다. 인터넷 사용자 리뷰를 감성분석(긍·부정)하거나 사용자의 발화문을 챗봇이 처리할 수 있는 기능 중 하나로 매핑하는 의도 분류 등에 쓰일 수 있다.
[본 기사는 한경비즈니스 제 1298호(2020.10.12 ~ 2020.10.18) 기사입니다.]

[본 기사는 한경비즈니스 제 1298호(2020.10.12 ~ 2020.10.18) 기사입니다.]