기계는 심리상담을 이해할 수 있을까
총 세 편의 글에 걸쳐서, 이번 NAACL 2019에서 발표한 "Conversation Model Fine-Tuning for Classifying Client Utterances in Counseling Dialogues"을 다룹니다. 논문의 내용은 "https://www.aclweb.org/anthology/N19-1148" 에서 확인하실 수 있습니다.
세 번째 글에서는 논문 후반부의 내용과 프로젝트 후기를 다룹니다. 논문에 포함되지 못한 구체적인 설명이 추가되고, 일부 내용을 의역합니다.
모델의 구성 및 학습
(방향성) 내담자 유목이 태깅된 상담 대화록은 총 100개였습니다. 이는 일반적인 인공신경망 모형 기반 분류기를 처음부터 학습(from scratch)하기에 한참 모자란 양이었습니다. 태깅 작업 과정은 전문상담사의 많은 노력을 동반하는데, 여기에 소요되는 비용의 한계가 있었습니다. 따라서 모델 개발의 방향성을 정할 때, 이러한 제약조건을 고려해야할 필요가 있었습니다.
즉, 더 많은 대화록을 태깅하는 대신, 상대적으로 적은 수의 데이터로도 준수한 성능을 낼 수 있는 언어 모델 기반 전이학습에 주목하게 되었습니다. 대표적인 예로는 ELMo와 ULMFiT이 있고, 이러한 접근법을 풀고자 하는 과제에 맞추어 모델을 디자인하게 되었습니다. 언어 모델을 기반으로 하는 기계학습 모델들이 준수한 성능을 보이는 이유는, 레이블된 데이터뿐만 아니라, 비지도 학습을 이용하여 레이블이 없는 데이터까지 학습에 활용하기 때문입니다. 즉, 대량의 코퍼스를 활용하여 특정 언어의 일반적인 패턴을 먼저 학습하고 이를 활용하기 때문입니다.
이 프로젝트에서 활용할 수 있었던 데이터는 1) 유목이 태깅된 상담 대화록뿐만 아니라, 2) 레이블링 되지 않은 상담 대화록, 3) 일반 한국어 코퍼스입니다. 이러한 데이터를 모두 활용하는 모델의 개요는 아래와 같습니다.
(모델 개요) 이 모델은 대화 모델 조정학습(conversation model fine-tuning, ConvMFiT) 으로 이름을 붙이게 되었습니다. 이 모델은 기학습된 대화 모델을 튜닝하여 분류기로 만든 것입니다. 크게 두 부분으로 구성되는데, 아래 부분은 기학습된 대화 모델(pre-trained conversation model), 위 부분은 분류 과제 수행을 위한 분류 레이어(task-specific layers)입니다. 대화 모델은 두 개의 언어 모델로 구성됩니다. 하나는 상담자의 언어 모델(Counselor's LM), 나머지는 내담자의 언어 모델(Client's LM)입니다. 내담자의 언어 모델은 상담자의 발화 맥락에 영향을 받는다고 가정하면, 상담자-내담자 대화 모델은 두 개의 언어 모델의 조합이라고 볼 수 있습니다. 아래 부분의 대화 모델은 이와 같은 가정을 반영합니다.
구체적으로, 대화 모델은 기학습된 내담자 언어 모델, 상담자의 언어 모델, 그리고 Seq2Seq 레이어로 구성됩니다. Seq2Seq 레이어는 내담자의 언어 모델과 상담자의 언어 모델 간의 관련성(dependency)를 학습합니다. 그리고 이 대화 모델 위에 다시 Seq2Seq 레이어와 주의(attention) 레이어가 추가되고, 마지막으로 분류를 위한 Softmax 레이어가 추가됩니다. 여기서 주의 레이어는 모델이 텍스트에 어떤 부분에 주목하는지 단서를 얻기 위해 추가되었습니다. (* 주의(attention) 레이어가 인공신경망의 해석가능성에 별 도움이 되지 않는다는 연구가 NAACL 2019에 발표되어, 이 레이어와 관련된 설명은 여기서부터 제외합니다.)
이 모델은 기존 ULMFiT의 확장이라고 볼 수 있습니다. ULMFiT은 문서 분류를 위해 하나의 언어 모델을 사용하는 반면, 이 모델은 대화와 관련이 있는 두 개의 언어 모델을 별도로 구성하고, 두 모델 간의 관련성을 학습하는 레이어를 추가하여 간단한 Seq2Seq 기반 대화 모델을 학습한 다음, 기학습된 대화 모델에서 분류기를 만들게 됩니다. 이러한 접근법은, 기학습된 언어 모델을 활용하여 Seq2Seq 기반 기계 번역 과제를 성공적으로 수행한 기존 연구에서 착안하였습니다. 이제부터 모델의 각 구성 요소를 조금 더 자세하게 기술합니다.
(모델: 임베딩 레이어) 한국어 어휘 임베딩을 사용합니다. 여기에서 일반 한국어 코퍼스가 활용됩니다. 어휘 임베딩 학습에는 한국어 위키피디아, 한국어 온라인 뉴스, 세종 코퍼스가 사용되었습니다. 전체 코퍼스는 약 1억 개의 단어로 구성됩니다. 학습된 임베딩을 활용해 대화록에 등장한 모든 단어를 어휘 임베딩으로 바꿀 수 있습니다. 한국어 어휘 임베딩은 FastText에 기반하기 때문에, 상담 대화록에 나타난, 임베딩 사전에 없는 단어(out-of-vocabulary)에 대한 임베딩 또한 생성할 수 있습니다.
(모델: 언어 모델) 다음으로 상담자 및 내담자의 언어 모델을 별도로 학습합니다. 여기에서 레이블링되지 않은 모든 상담 대화록이 활용되었습니다. 두 언어 모델은 동일한 구조를 갖지만, 상담자의 언어 모델은 대화록에서 추출한 모든 상담자의 대화를 통해 학습되며, 내담자의 언어 모델은 나머지 (내담자의 대화)를 통해 학습된다는 차이점이 있습니다. 각 언어 모델은 3개의 LSTM 레이어를 갖습니다. 학습이 끝난 뒤, 다음 단어를 예측하기 위해 사용되었던 Softmax 레이어는 제거되고, 나머지 부분이 다음 단계에 사용됩니다.
(모델: 대화 모델) 앞선 단계에서 학습된 상담자 및 내담자의 언어 모델을 조합합니다. 각 언어 모델 위에 Seq2Seq 레이어(각 2개의 LSTM)가 추가되고, 이제 이 대화 모델은 주어진 상담자의 발화를 보고 내담자의 발화가 무엇이었는지를 예측하는 대화 모델로써 학습됩니다. 즉, 상담자의 언어 모델이 인코더(encoder), 내담자의 언어 모델이 디코더(decoder)의 일부로써 기능한다고 이해할 수 있습니다. 이 대화 모델은 학습 시, 모델이 내담자의 대화를 제대로 예측했는지를 측정하는 Cross-Entropy Loss 뿐만 아니라, 각 언어 모델의 Cross-Entropy Loss까지 함께 최소화하게 됩니다. 각 언어 모델의 Cross-Entropy Loss는 Regularizer로 기능합니다. 대화 모델이 학습이 끝나면, 내담자의 발화를 생성하기 위해 사용된 Softmax 레이어를 제거하고 나머지 부분이 다음 단계에 사용됩니다.
(모델: 분류 레이어) 기학습된 대화 모델 위에 Seq2Seq 레이어와 주의(attention) 레이어, Softmax 레이어가 추가됩니다. 분류 레이어의 복잡도는 풀고자 하는 분류 과제의 난이도에 따라 조정될 수 있습니다. 이 연구에서는 Seq2Seq 레이어로 각 2개의 LSTM이 사용되었습니다.
(모델의 학습) 정리하면, 본 모델은 다양한 종류의 데이터를 기반으로 전이학습을 효과적으로 수행하기 위해 여러 학습 단계를 거치게 됩니다. 1) 먼저, 어휘 임베딩이 학습되고, 2) 이를 기반으로 상담자/내담자의 언어 모델이 학습됩니다. 3) 그리고 이를 활용한 대화 모델이 학습되고, 4) 마지막으로 분류 레이어가 학습됩니다. 특히, 마지막 분류 레이어를 학습하는 과정에서, 모델이 기존에 학습한 내용을 잊어버리지 않도록 ULMFiT과 같이 Gradual Unfreezing 기법이 사용됩니다. 이는 처음부터 모든 레이어를 한 번에 학습하는 것이 아니라, 최상위(분류) 레이어와 가까운 레이어부터 순차적으로 학습하는 것입니다. 즉, 학습 초반에는 기학습된 대화 모델 부분은 가중치(weight)를 갱신(update)하지 않습니다.
모델을 학습하는 과정이 다소 복잡하지만, 이러한 방식의 장점은 앞으로 상담 대화록을 기반으로 또다른 분류 과제를 수행하고자 할 때, 4)단계만 수행하면 된다는 것입니다. 즉, 언어 모델 및 대화 모델을 학습하는 시간은 매우 오래 걸리지만, 이렇게 일반적인 언어 모델 및 대화 모델을 학습한 뒤에는 이를 조정(fine-tuning)하여 다양한 과제를 하고자 할 때 편리하게 활용할 수 있는 도구가 됩니다.
실험 결과
본 연구가 제시한 모델의 성능을 다양한 분류기의 성능과 비교한 결과는 아래 표와 같습니다.
예상했던 대로, 한국어 코퍼스 혹은 레이블링 되지 않은 상담 대화록을 활용하지 않고 오직 레이블링된 대화록만을 활용하여 모델을 학습할 경우, 분류기 성능이 다소 낮은 것을 볼 수 있습니다. (1) Random Forest, (2) SVM, (3) CNN, (4) RNN이 이와 같은 경우에 해당합니다. (5) ULMFiT은 내담자의 언어 모델만을 활용하여 분류기를 학습한 것인데, 앞선 모델들 보다는 성능이 나은 것을 볼 수 있습니다. 그러나 (1) ~ (5)는 내담자의 반응을 분류하기 위해 내담자의 언어만을 고려할 뿐, 대화의 맥락(상담자의 언어)를 고려하지 않습니다.
(6) Seq2Seq과 (7) HRED는 인공신경망 기반 대화 생성 모델로 사용된 모델입니다. 즉, 이 모델들은 대화의 맥락(상담자의 언어)을 고려합니다. 당연하게도, 대화의 맥락을 고려하면 분류기의 성능이 다시 한 번 증가합니다. 그러나 (6)과 (7)은 기학습된 대화 모델이 아니고, 오직 레이블링된 대화 데이터만을 활용하여 학습된 모델입니다. (8) ConvMFiT 은 본 연구가 제시한 모델로, 기학습된 대화 모델을 조정(fine-tuning)하여 분류기를 학습하면, UMLFiT의 장점을 살리면서 대화의 맥락을 고려할 수 있기 때문에, 가장 높은 분류기 성능을 달성하게 됩니다. 성능의 향상은 특히 대화록 내에서 상대적으로 등장 빈도가 떨어지는 유목(1. 사실적 정보 및 4. 심리적 변화)에서 두드러지는데, 이는 전이학습 기반 모델이 갖는 장점 중 하나입니다.
정리하면, 이 연구는 텍스트 기반 심리상담 대화록에서 나타난 내담자의 반응을 유목화하고, 관련 데이터를 구축한 다음, 이를 학습할 수 있는 기계학습 모델을 제안하고 성능을 검증했습니다. 이러한 연구 진행 방향성의 배경에는 이러한 유목이 상담자가 유용하게 활용할 수 있는 정보이길 바랬고, 이를 위해서 전문상담사의 질적 연구방법론을 이용한 유목화 과정이 필요했습니다. 모델이 보여준 성능은 기존 모델을 그대로 적용한 것보다는 나은 수준임에도 불구하고 절대적인 수준에서 다소 개선이 필요하여, 현실적으로 기능할 수 있기까지는 다양한 추가 작업이 필요할 것으로 예상됩니다.
마치며
하지만, 안타깝게도, 주어진 데이터, 시간, 비용 및 현실적 제약조건을 고려할 때, 이러한 추가 작업이 이루어지기는 어려울 것으로 예상합니다. 이 연구가 완성되고 NAACL 제출 및 리뷰를 기다리는 동안, Google AI Language 팀은 BERT를 공개했고, 이 글이 완성되는 동안 CMU/Google Brain이 XLnet을 공개했습니다. 이러한 모델을 새롭게 적용해보는 것이 추가적인 성능 향상을 가져올 수 있겠지만, 이 프로젝트는 여기서 마무리 되었습니다.
이러한 전산심리학 프로젝트가 유의미한 결과를 내려면 활발한 의사소통이 가장 중요한 것 같습니다. 기계학습 모델을 다양한 영역에 적용하려면, 연구자, 개발자, 상담자(도메인 전문가)간의 유연한 의사소통이 필수적입니다. 심리학과 전산학의 거리는 너무 멀어서, 프로젝트 진행에 필요한 다양한 의사결정 과정에서 서로의 차이를 이해하는데 시간이 분명 필요하고, 이러한 결과를 어떻게 활용할 것인지에 대한 이슈 또한 많은 고민이 필요합니다. 이러한 노력들은 비록 8페이지 제한이 걸린 논문 안에 들어갈 수는 없었지만, 프로젝트가 완성되기까지 가장 중요했던 요소였습니다.
전산심리학 주제는 아직 심리학 혹은 전산학 두 분야 중 어디에도 완전히 속하지 못하고, 변두리 어딘가에 머물러 있습니다. 주요 NLP 학회(NAACL, ACL, EMNLP)에서도 자주 등장하는 주제가 아닐뿐더러, 이 학회에서 열리는 Clpsych(심리학 + 자연어처리) 워크샵 또한 아직 규모가 작은 편입니다. 그리고 대부분의 심리학 학회/저널들은 주요 심리학 연구방법론으로써 인정된 방법이 아닌 기계학습과 같은 타 분야의 방법론을 적용한 연구들에 대해서 다소 배타적입니다.
그럼에도 불구하고, 심리치료가 필요한 사람들이 관련 서비스에 좀 더 쉽게 접근하고, 내담자에게 좀 더 나은 서비스를 제공하며, 상담자가 쓰기 편리한 치료 서비스를 디자인하기 위해서는 이러한 효율적인 기술적 해결책이 필수적이라고 생각합니다. 이 프로젝트는 여기서 마무리 되었지만, 앞으로 텍스트 기반의 멘탈 헬스케어 프로그램과 자연어처리 기술의 결합을 시도하는 다양한 프로젝트를 계획하고 있습니다.
이러한 프로젝트에 관심을 갖고 계신 모든 연구자, 개발자, 상담사, 혹은 스타트업 분들까지 다양한 분들의 연락을 기다리고 있습니다. 관련 연구/개발 프로젝트 협업 혹은 합류 제안은 sungjoon.park@kaist.ac.kr로 보내주세요. :)