상세 컨텐츠

본문 제목

[2017 UGRP 우수 연구] ‘딥러닝을 통한 문장 속 감정의 확률적 추론’

학술

2018. 5. 11. 12:07

본문

[편집장 주]

‘2017 UGRP 우수 연구’ 시리즈는 학부생과 대중에게 UGRP 연구를 쉽게 풀어 전달하기 위해 기획되었다. UGRP는 Undergraduate Group Research Project의 약자로 3학년, 4학년 학생들이 자율적으로 연구하는 융복합대학 교과목이다. 기자가 연구보고서와 논문을 분석해 비전공자도 UGRP 연구과정과 결과를 보다 쉽게 이해할 수 있게 도와주는데 목적이 있다.


2017 UGRP 학술기사 시리즈의 세번째 주제는 딥러닝을 통한 문장 속 감정의 확률적 추론이다. 이 주제는 장영실 코스 주제이며, 2017 UGRP 우수주제 상을 수상했다. 강우송, 권남호, 김진모, 백영민, 이용진, 최동하(’15) 학생이 참여했고, 지도교수는 기초학부 임태훈 교수와 정보통신융합전공 곽수하 교수이다.

감정은 사람의 의사소통에서 큰 역할을 한다. 텍스트에서 감정을 배제하고 읽으면, 같은 문장이라도 다른 의미로 읽힌다. 다시 말해, 텍스트 안의 감정을 이해해야 텍스트를 정확히 이해할 수 있다. 사람과의 대화에서도 사람의 감정을 고려해 이야기를 나눌 수 있다. UGRP팀은 문장 속 감정을 추론하는 인공지능 개발을 주제로 연구했다.

머신러닝은 컴퓨터가 스스로 학습할 수 있는 알고리즘을 개발하는 분야이다. ‘딥러닝은 머신러닝의 한 분야로, 비선형 변환기법을 이용한다. ‘학습은 설계한 신경망 모델의 출력값과 실제값(Truth value)을 비교해, 그 오차(cost function)를 최소화하는 가중치를 찾는 것을 말한다. 학습을 계속 반복해 모델의 정확도가 높은 가중치를 찾을 수 있다.

 

[연구 과정]

 

연구과정 <제공=UGRP팀>

UGRP팀은 단어에서 느낄 수 있는 감정 데이터를 수집해 문장 속 감정을 추론하는 시스템을 설계했다. 이 팀은 문장을 구성하는 단어의 감정 데이터를 기반으로 문장의 감정을 분석했다. 다시 말해, 단어를 들었을 때 사람이 느끼는 감정으로 문장의 감정을 파악할 수 있다고 생각했다. 연구팀은 최빈단어 단어 700개의 감정을 직접 기록해 단어 감정 사전을 만들었다. 데이터의 형태는 퇴계 이황이 주장한 7(七情)을 기저(base)로 한 7차원 벡터이다. UGRP 팀은 이를 감정 벡터라고 불렀다. 7정은 희노애구애오욕(喜怒哀懼愛惡慾) 의미한다. 연구팀은 우리나라의 성인의 주장에 근거해, 독자적인 방법을 사용해 단어의 감정을 분석하였다.

문장 데이터도 동일한 방법으로 만들었다. 각 문장에 감정 벡터를 기록해 딥러닝 모델의 실제값을 얻었다. 최빈단어를 트위터 크롤링(twitter crawling)하여 4000개의 문장을 얻었다. Twitter crawling이란 입력한 단어가 포함되어있는 문장을 트위터에서 수집하는 것을 말한다.

UGRP팀은 신경망 모델은 다음과 같은 시스템으로 제작했다. 입력된 문장에서, 형태소 분석기 KoNLPy를 이용해 중요 단어를 출력했다. 조사, 문장부호, 보조 동사와 같은 단어는 제외했다. 신경망 모델은 중요 단어의 감정 벡터를 이용해, 문장의 감정을 추론해 출력한다.

연구팀은 신경망 모델을 학습문장을 입력하고 감정을 출력하는 과정을 반복하면서 출력된 감정과 실제값과 비교해 오차를 최소화하는 가중치를 찾았다.

신경망 모델 개요도 <제공=UGRP팀>


Q. 연구를 진행하게 된 목적과 동기가 무엇인가?

-(김진모) 사람의 감정을 인공지능에 학습시키고 싶다는 생각이 출발점이었다. 사람과 사람 사이의 대화에선 감정이 중요하게 작용하는데, 그 감정으로 인해 겪게 되는 갈등을 더 원활히 해결할 수 있는 매개체를 만들고 싶었다. 상대방의 감정과 충돌하면서 생긴 상처나 갈등을 해결하는 데 있어 누구나 쉽게 도움을 받을 수 있는 존재가 있으면 좋지 않을까, 하고 생각했다. 우리는 인공지능이 그 역할을 맡을 수 있다고 생각했다.

 

Q. 감정 벡터의 원소를 퇴계 이황이 주장한 7(七情)으로 설정한 이유가 무엇인가?

-(김진모) 영어로는 Word2Vec이라는 기술을 통해 단어 간의 의미상 유사도 등을 연결시킬 수 있지만, 한국어로는 아직 원활하게 제공되는 기술이 없기 때문에 독자적인 방법을 구현하고자 했다. 많은 사람이 흔히 알고 있는 희로애락으로 하고자 했으나 그 종류가 너무 적다고 생각했기에 이보다 조금 많은 수인 일곱 개, 희노애구애오욕(喜怒哀懼愛惡慾), 즉 기쁨, 노여움, 슬픔, 즐거움, 사랑, 미움, 욕심으로 단어와 문장의 감정을 나타냈다.

 

신경망 모델이 학습을 완료한 후, 최종 보고서에 나타난 모델의 정확도는 44.20%였다. 정확도가 낮은 모델이다. 정확도가 낮게 나온 이유에는 감정을 정확한 수치로 분류하기 어려웠던 점 연구팀이 직접 감정 데이터를 만들어 객관성이 낮았던 점 문장의 감정을 단어의 앞뒤 관계나 문맥을 생각하지 않고 단어로만 분석했던 점 등을 들 수 있다.

재실험 학습 기록 <제공=UGRP팀>

Q. 제작한 신경망 모델이 반복 횟수가 커질수록 정확도가 44.2%로 수렴한 것으로 나타났다. 이 결과가 가리키는 의미는 무엇인가?

-(백영민) 정확도가 44.2% 수렴했다는 것은 더 이상 training을 진행해도 오차를 줄일 수 없다는 뜻이다. 실제로 오차이 최소가 되는 지점(global minimum)에 도달했거나 오차의 극소점(local minimum)에 도달한 상황이다. Global minimum에 도달해야 모델이 성공한 것이다. 우리는 global minimum에 도달한 상황에 해당된다. 그러나, 우리의 실제값은 7개의 감정에 골고루 퍼져있지 않고 ‘감정 없음()’에만 치중되어 있었다. 모델은 무의 감정으로 output을 내놓으면 정확도가 높다고 학습되어 어떤 문장을 넣어도 감정 없음이 표시되어 나오게 되었다. 이 문제를 해결하기 위해, dataset 7가지 감정이 골고루 분포하도록 조정해 추가 실험을 진행했다. 정확도는 44.2%보다 떨어진 약 34%지만 감정 없음에만 치중된 것은 아닌 모델을 얻었다.

 

Q. 모델의 한계점에는 무엇이 있으며, 정확한 모델을 만드는 개선방안은 무엇인가?

-(백영민) 감정분류 문제: 우리는 감정을 7정에 따라 분류했다. 감정이라는 영역 자체가 굉장히 심오하기 때문에, 인위적으로 분류한 감정은 부정확할 수밖에 없다. 우리는 문제를 단순화하기 위해 7개로 감정을 분류했으나, 더 세분된 감정 분류를 한다면 조금 더 정확한 결과를 얻을 수 있다고 생각한다.

 

데이터 문제: 우리가 원하는 데이터는 감정이 표시 되어있는 한국어 문장들이었고, 데이터를 구하는 것은 어렵다. 따라서 우리가 구상한 모델에 따라 직접 데이터를 구축했다. 적은 인력으로 데이터를 구축하여 데이터 수가 적었고, 객관성이 떨어졌다. 체계적이고 전문화된 방법으로 데이터를 모으고 분석한다면 문제를 해결할 있다고 생각한다.

 

③ 문맥 파악 불가 문제: 우리가 설계한 모델은 단순히 문장을 구성하는 단어들의 감정 벡터를 input으로 넣고 이를 이용하여 학습을 진행했다. 그러나 실제 언어에서 특정 문장의 감정을 알아내기 위해서는 문장에서 단어의 앞뒤 관계나 해당 문장의 앞뒤 문맥 등을 고려해야 한다. 앞뒤 문맥을 고려할 수 있는 모델인 RNN(Recurrent Neural Net)[각주:1]중 특히 LSTM(Long Short-Term Memory)[각주:2] 등을 사용하면 정확한 결과를 얻을 수 있다고 생각한다.

 

육민정 기자 leahymj2@dgist.ac.kr


  1. 순환 신경망. 이전 단계의 학습 데이터를 다음 단계에서도 사용한다. 이전 문장의 데이터를 다음 문장에서도 사용해, 앞뒤 문맥을 고려한 학습이 가능하다. [본문으로]
  2. 장단기 기억 네트워크. 장단기 기억을 효율적으로 처리하기 위한 네트워크이다. 이전 데이터를 망각할 수도, 기억할 수도 있다. [본문으로]

관련글 더보기

댓글 영역