글 수 94

챗봇에 딥러닝 학습을 적용하기 어려운 이유

조회 수 3743 추천 수 0 2018.03.23 05:37:48


알파고와 이세돌과의 대결 이후 인공지능, 특히 딥러닝에 대한 관심이 아주 높아졌습니다. 구글, 페이스북, MS, IBM 같은 글로벌 기업뿐만 아니라 국내에서도 네이버, 카카오 등 여러 업체들이 차세대 성장동력으로 인공지능에 집중하고 있습니다.

 

보통 대부분의 사람들은 챗봇도 딥러닝을 통해 스스로 학습할 수 있다고 생각합니다. 기존에 출시된 많은 챗봇들이 그런 기능을 강조하기도 합니다. 하지만 실제로는 사진을 분류하거나 바둑을 학습하는 것보다 훨씬 어려운 문제점들이 많이 있습니다.

 

진화론적으로도 우리 뇌에서 시각과 언어가 발달한 시기는 큰 차이가 있습니다. 최초로 생명체가 눈을 통해 주변 환경을 인식하게 된 것은 5억년전 캄브리아기 시대였습니다. 그러나 언어를 사용해 서로 복잡한 의사소통을 할 수 있게 된 것은 불과 몇 만년밖에 되지 않았습니다. 그만큼 컴퓨터에서도 언어를 구현하는 것이 시각보다 훨씬 더 힘든 일이라는 것을 예상할 수 있습니다.

 

 

 

일반적인 딥러닝 기법

 

Cover.jpg

 

CNN 같은 딥러닝 방식은 내부적으로는 복잡하지만 실제 입력과 출력은 매우 간단합니다. 단지 사진이 주어지면 그것이 어떤 종류인지 분류하는게 전부입니다. 

 

 

 

alphago-in-depth-66-638.jpg

 

알파고의 경우 지도학습뿐 아니라 스스로 대전하면서 배우는 강화학습을 사용하였습니다. 하지만 입력은 바둑판에 놓여있는 돌들의 상태이고 출력 역시 이번에 놓을 돌의 위치로 361개에 불과합니다.

 

이에 반해서 챗봇에서 사용되는 입력과 출력은 자연어로 된 문장이기 때문에 그 범위가 엄청나게 넓다는 것이 가장 큰 문제입니다. 또한 그 밖에 언어를 처리하기 위해 고려해야 할 다양한 사항들이 존재합니다.

 

 

 

챗봇 구현의 복잡성

 

< 문맥 >

 

61a1486c85670d492d6cb2b2cb2c9999.png

 

대화를 할때 현재 문장만으로는 의미를 파악하기 어려운 경우가 많습니다. 그래서 이전에 했던 말을 고려해서 전체적인 문맥을 이해하고 있어야 합니다. 딥러닝 RNN의 경우 이런 연속적인 관계를 처리할 수 있습니다. 하지만 문장 사이의 거리가 멀어질 수록 학습이 힘들다는 단점이 있습니다.

 

 

 

< 기억 >

 

d5c7cf824aed240fa2f6dfe4f0237602.png

 

사용자가 했던 말이나 행동을 기억하고 이를 고려해서 대답을 할 필요가 있습니다. 이런 개인화를 수행하는데 아직 딥러닝 기술을 적용하기가 어렵습니다.

 

사용자의 정보를 변수로 변환하고 그 데이터를 딥러닝으로 학습하여 대답을 선택하는데 활용할 수는 있습니다. 하지만 그 중간 과정을 모두 개발자가 일일이 처리를 하는 거지, 딥러닝을 통해 문장에서 바로 학습이 가능하지는 않습니다.

 

 

 

< 문장 생성 >

 

1_Ismhi-muID5ooWf3ZIQFFg.png

 

흔히 대화 데이터만 있으면 쉽게 문장을 학습할 수 있을 거라고 생각합니다. 물론 위와 같이 Seq2Seq 모델은 바로 '문장 -> 문장'으로 학습이 가능합니다. 하지만 일상적인 잡담이 아니라 목적이 있는 대화를 할 때는 이런 방식은 크게 도움이 되지 않습니다.

 

예를 들어, '불고기피자의 가격이 얼마야?'하는 질문에 '불고기피자의 가격은 15,000원 입니다.'라는 문장을 학습할 수 있습니다. 하지만 가격이 수시로 변할 지도 모르기 때문에 보통은 DB에서 정보를 조회하고 그 값을 대답에 사용해야 합니다.

 

이를 위해 '불고기피자의 가격은 <불고기피자가격>입니다.'와 같이 기호를 넣어서 학습시킬 수 있습니다. 하지만 기호를 다시 적절한 수치로 변환하는 과정이 따로 필요합니다.

 

또한 상용 챗봇을 개발할 때는 대답에 올바른 문장만을 사용할 필요가 있습니다. Seq2Seq 모델은 정확히 어떤 문장이 나올지 예측하기가 힘들고 문법적인 오류가 발생할 수도 있기 때문에 실제로 적용하기에 문제가 있습니다.

 

 

 

< 대화 흐름 >

 

7566900101d42568e1b866fe5675e77e.png

 

챗봇은 단순히 한 번씩 대화를 주고받고 끝나는 것이 아닙니다. 위와 같이 피자를 주문한다고 할때 피자종류 결정, 연락처 입력, 결제, 취소 등 연속적인 과정이 필요합니다. 이런 대화의 흐름을 학습으로 처리한다는 것이 현재로서는 아주 어려운 문제입니다. 

 

 

 

현재 딥러닝 챗봇 기술의 한계

 

지금 보통 딥러닝을 챗봇에 사용한다고 하면 입력 문장이 어떤 의도를 가지고 있는지 분류하는 정도입니다. 기존에 사용하던 규칙기반의 방식보다는 문장의 의미를 보다 정확히 구분할 수 있습니다. 하지만 이것만 가지고는 자연스러운 대화가 가능한 챗봇을 구현하는데 부족한 점이 많습니다.

 

c71dba5afe06380af969706d296d07b5.jpg

 

[ Char-CNN 개요 - 출처 : Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용 ]

 

 

 

언론을 보면 많은 챗봇들이 대화를 할수록 스스로 학습하면서 더욱 똑똑해진다고 광고를 하기도 합니다. 물론 아주 틀린 말은 아닙니다. 대화 기록을 보고 문장의 의도를 파악하는데 도움이 되는 데이터를 추가할 수 있기 때문입니다.

 

하지만 인공지능이 그 과정을 자동으로 수행하기는 힘듭니다. 사람이 일일이 적합한 문장을 찾고 거기에 맞는 의도를 지정해 주어야 합니다. 그리고 단순히 문장의 의미만 잘 이해한다고 지능적인 챗봇이 되는 것은 아닙니다. 대화의 흐름을 유지하고 적절하게 이끌어가는 능력이 더욱 중요합니다.

 

앞으로 자연어처리나 챗봇에 딥러닝이 계속 적용되고 그 기술도 지속적으로 발전할 것입니다. 그러나 사람과 같이 대화를 하는 인공지능을 개발하는 것은 당분간 힘들지 않을까 생각됩니다. 만약 그게 가능해진다면 인간이 하는 거의 모든 일들이 인공지능으로 자동화가 될지도 모르겠습니다.

 

 

 

< 챗봇 개발자 모임 >

- 페이스북 그룹에 가입하시면 챗봇에 대한 최신 정보를 쉽게 받으실 수 있습니다.

https://www.facebook.com/groups/ChatbotDevKR/

List of Articles
제목 글쓴이 날짜 조회 수
문장 입력 이진분류 모델 레시피 - 영화평점 학습 [3] 깊은바다 2018-04-04 394
잡담봇 삽질기 - 문봇에서 딥러닝 Seq2Seq로 문장 생성 깊은바다 2018-03-25 664
챗봇에 딥러닝 학습을 적용하기 어려운 이유 file 깊은바다 2018-03-23 3743
RNN과 Torch로 발라드곡 작사하기 깊은바다 2018-03-23 341
딥러닝을 사용한 감성분석기 개발 깊은바다 2018-02-22 1285
한국어 자연어처리를 위한 딥러닝 깊은바다 2018-02-14 2526
딥러닝을 사용한 챗봇 개발방법 정리 file 깊은바다 2018-02-03 15432
구글 딥러닝 자연어 처리 오픈소스 SyntaxNet file 깊은바다 2017-12-28 2300
쉽게 씌어진 Word2Vec [2] 깊은바다 2017-12-25 915
딥러닝 기반 자연어처리 기법의 최근 연구 동향 [2] 깊은바다 2017-12-17 826
문장을 학습하는 딥러닝 RNN의 Seq2Seq 모델 설명 file 깊은바다 2017-09-15 6168
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용 깊은바다 2017-08-25 1920
End-To-End Memory Networks - 자연어 질문에 대답하는 모델 [2] 깊은바다 2017-08-21 774
딥러닝 RNN으로 구현한 챗봇 깊은바다 2017-08-01 6171
추론이 가능한 딥러닝인 Relational Networks [2] 깊은바다 2017-06-11 2566