[NAACL 2024] Emotion-Anchored Contrastive Learning Framework for Emotion Recognition in Conversation

안녕하세요! 이번에도 ERC 논문입니다. 그런데 멀티모달 논문이 아닌 NLP 논문인데요. 감정 인식 논문을 읽다보면 항상 나오는 ‘유사한 감정은 어떻게 구별할까’에 대한 문제를 주제 있게 다룬 방법론이라 흥미가 돋았고, 아주 따끈따끈한 방법론이다 더욱 읽어보고 싶어 리뷰를 작성하게 되었습니다. 그럼 리뷰 시작합니다!

<Introduction>

Emotion Recognition in Conversation (ERC)는 대화에서 각 발화의 감정을 구분하는 것을 목표로 합니다. ERC task에서 여러 도전 과제가 있는데, context에 따라 비슷한 문장이 전혀 다른 감정을 나타낼 수 있다는 것입니다. 또한 동시에 유사한 감정이 포함된 대화 text를 구별하는 것도 매우 어렵습니다.

Figure 1은 남성과 여성간의 채팅 example입니다. happy와 excited는 비슷한 context에서 자주 발생하기 때문에 단순한 기계는 이를 분류하는 것이 어려운데요. 이를 위해서 모델은 context에 따라 다양한 감정을 정확하게 구분할 수 있어야 합니다.

따라서 ERC는 모델 설계와 representation learning 이라는 두 가지 라인에서 구별 가능한 발화 representaion을 얻기 위해 다양한 방법을 사용하였는데요. 모델 설계의 대표적인 것으로 DialogueRNN이 있습니다. DialogueRNN에 간단히 언급하면 과거의 대화를 추적하는 반복적인 모듈을 사용하여 감정을 예측합니다. representation learning의 대표로는 SPCL로 class imbalance 문제를 완화하여 성능을 향상시켰습니다.

Figure 2를 통해 SPCL을 평가하기 위해 confusion matrix를 확인할 수 있습니다. 결과를 보시면, happy와 excited와 같은 유사한 감정이 서로 잘못 분류되는 경우가 많다는 것을 확인할 수 있습니다. 이는 SPCL이 여전히 유사한 감정을 효과적으로 구분하는데 어려움이 있다는 것을 말해줍니다.

본 논문에서는 이러한 문제를 해결하기 위해 새로운 Emotion-Anchored Contrastive Learning framework (EACL)을 제안하였습니다. EACL은 text emotion label을 활용하여 감정적으로 의미가 풍부한 representation인 anchor를 생성합니다. anchor로 사용되는 이러한 representation은 representaion space에서 유사한 감정 간의 구분을 명시적으로 확실히 해주는데요. 구체적으로는 해당 emotion anchor가 representation space에서 균일하게 분포하도록 유도하는 loss를 도입하여 수행합니다. 이를 통해 균일하게 분포된 emotion anchor는 유사한 감정을 가진 발화 representation이 더 큰 차이를 학습하도록 유도하여 변별력을 향상시킵니다. 여기에 emotion anchor의 위치를 더욱 좋게 가져가기 위해서 emotion anchor의 decision boundaries를 이동하여 간단하면서도 효과적으로 성능을 달성할 수 있는 two stage를 제안합니다.

이를 최종적으로 정리하면 아래와 같은 contribution을 가집니다.

  • 새로운 emotion-anchored contrastive learning framework를 제안함
  • 처음으로 ERC 모델링에 label semantic 정보를 도입하여 감정 유사성 문제를 명시적으로 완화한 최초의 방법론임.
  • SOTA 달성..!

<Method>

<Problem Definition>

먼저, ERC task에서 데이터셋은 어떤 형식으로 구성되어 있는지 입력이 어떻게 되는지, 무엇을 목표로 하는지에 대해서 간단히 소개드리겠습니다. 대화는 일련의 발화 {$u_1, u_2, u_3, …, u_n$}로 주어집니다. 각 발화 $u_t$는 대화 화자 중 한명인 $s_j$로 표시되는데요. 대화에는 {$s_1, s_2, …, s_m$}로 표시되는 m(m≥2)명의 화자가 있습니다. 감정 label E와 대화 context {$(u_1, s_{u_1}), (u_2, s_{u_2}), …, (u_t, s_{u_t})$ 집합이 주어지면 ERC task는 현재 발화 $u_t$에 대한 감정 $e_t$를 예측하는 것을 목표로 합니다.

<Model Overview>

본 논문의 저자가 제안한 모델의 오버뷰를 간단히 소개드리겠습니다. Figure 3를 통해서 모델 구성이 어떻게 되어 있는지 간략하게 확인할 수 있습니다. 본 논문에서는 인코딩을 수행할 때 prompt learning 패러다임을 사용하여 인코딩합니다. 학습 과정은 2단계로 구성됩니다.

첫 번째 단계에서는, representation learning으로 emotion anchor를 통해 보다 특징적인 representation을 학습하는 것을 목표로 합니다. 구체적으로 semantic한 정보가 포함된 anchor를 contrastive learning framework에 통합하고 이를 활용하여 발화 representation이 학습될 수 있도록 합니다. 그래서 본 논문에서는 이것을 통해서 (1) 동일한 감정을 가진 발화를 해당 anchor에 더 가까이 가져오고 다른 감정을 가진 발화를 더 멀리 밀어내는 것, (2) hyperspace에서 anchor의 분폰를 보다 균일하게 만들어서 서로 다른 감정을 더 잘 분류하는 것을 목표로 합니다.

두 번째 단계에서는, anchor adaption이라고 하며 anchor를 약간 조정하여 분류 성능을 향상시키는 것을 목표로 하는데요. 첫 번째 단계의 anchor는 모델이 발화의 개별적 representation을 학습하는데 도움이 될 수는 있지만, 분리된 emotion anchor는 다음 감정 인식을 위한 발화 representation의 각 category에서 대표적인 position에 위치하지 않을 수 있다고 합니다. 따라서 두 번째 단계에서는 emotion anchor의 position을 약간 조정하여 더 나은 분류 성능을 위해 decision boundaries를 이동하도록 설계합니다. 이 단계에서는 Figure 3에서와 같이 language model의 parameter를 freeze하고 emotion anchor만 finetuning합니다. 마지막으로 EACL은 발화 representation과 가장 유사한 emotion anchor를 매칭하여 감정을 예측합니다.

<Prompt Context Encoding>

본 논문에서는 사전 학습된 language model을 사용하는데요, prompt tuning을 사용하여 분류를 mask language modeling으로 변경합니다. 효과적인 prompt template는 사전 학습 단계에서 lanugage model이 학습한 대규모 semantic information에 따라 downstream task를 조정하여 downstream task에서 model의 성능을 향상시킵니다.

발화 $u_t$의 감정을 예측하기 위해 time step t이전의 발화 k개를 context로 삼아 $e_t$를 예측합니다. language model에 대한 입력은 다음과 같이 주어집니다.

여기서 prompt P=”For utterance $u_t$, speaker $s_t$ feels [mask]”로 주어집니다. 여기서 [mask]의 마지막 hidden state를 발화 representation으로 사용합니다.

<Stage One: Representation Learning>

여기서는 앞에서 설명드린 오버뷰에 작성했던 1 단계에 대해서 설명드리겠습니다.

<Utterance Representation Learning>

여기서는 각 개별 발화에 대해 식별 가능한 representation을 가지는 것입니다. 이를 위해 label encoding을 사용하여 emotion anchor를 만들고 이를 contrastive learning framework에 통합하여 사용합니다.

sample batch $X = {x_1, x_2, …, x_b} \in \mathbb{R}^{b\times{l}}$가 주어진다고 해봅시다. 여기서 b, l는 각각 batch 크기와 입력의 최대 길이 입니다. X를 사전학습된 language model에 입력하여 마지막 hiddn state Z = Encoder(X)를 얻습니다. 그런 다음 문장 끝에 있는 [mask] token의 hidden state를 발화 $u_t$의 representataion으로 사용합니다. 마지막으로 MLP layer를 통해 발화 representation을 얻습니다.

여기서 $R={r_1, r_2, …., r_b}$이고, $R\in \mathbb{R}^{b\times{d}}$ 입니다. d는 encoder의 차원을 의미합니다.

마찬가지로 text emotion label을 language model의 입력으로 사용하여 모든 emotion에 대해 emotion anchor E = ${e_1, e_2, …, e_s}$를 얻습니다.

여기서 $A\in \mathbb{R}^{s\times{d}}$이고, 각 행이 emotion anchor를 나타냅니다. s는 감정의 수를 의미합니다. 또한 안정적인 anchor representation을 위해서 학습 과정에서 $Z_a$는 고정되어 있습니다.

또한 본 논문에서는 더 나은 representation learning을 위해 emotion label의 semantics를 활용하는 emotion-anchored contrastive learning을 제안합니다. 보다 구체적으로, 각 mini batch에서 V={$v_1, v_2, …, v_{b+s}$} = $R∪A$로 하고, $V_i^+$는 발화 $r_i$와 동일한 label을 가진 발화 또는 anchor representation의 집합 중 자신을 제외한 나머지 발화를 나타냅니다. 마지막으로 emotion-anchaored contrastive learning loss는 다음과 같습니다.

여기서 $|V_i^+|는 positive example의 수를 의미합니다. 타우는 contrastive loss의 하이퍼파라미터, $sim$은 similarity function을 의미하는데 본 논문에서는 cosine similarity를 사용했다고 합니다.

식(4)에서 representation간 상호작용을 utterance-utterance, anchors-utterance, anchors-anchors로 나눌 수 있는데요. label이 같은 representation은 서로 더 가까워지고 label이 다른 representation은 더 멀어집니다. utterance-utterance 상호작용은 기존의 contrastive learning과 유사하며, anchors-utterance 상호작용은 anchor-guided utterance representation learning의 과정을 나타냅니다. anchors-anchors 상호 작용은 서로 다른 감정을 더 잘 구분할 수 있도록 합니다.

또한 본 논문에서는 최근 연구에서 cross-entropy loss와 contrastive learning을 결합하면 langugae model을 더욱 번별력 있게 만들 수 있다는 연구 결과가 있다는 것을 기반으로 cross-entropy loss를 추가하여 representation learning을 개선하였습니다. 또한 마지막에는 분류를 위한 lienear mapping을 추가하였습니다.

<Emotion Anchor Learning>

위의 방법을 이용하여 representation 간의 상호작용 즉, 앞에서 언급한 3가지 유형의 상호작용을 구현했음에도 불구하고, 가장 유사한 emotion anchor 사이의 거리를 명시적으로 분산시키기에는 불충분한데요. 이러한 similarity 문제를 해결하기 위해 anchor angle loss를 제안하였습니다. 이 loss는 emotion anchor가 contrastive space내에서 자신과 가장 유사한 emotion anchor사이의 angle를 최대화하기하도록 insentive 제공하기 위해 제안되었습니다.

$a_i$는 i번째 emotion anchor representation을 의미합니다.

$L_{Ag}$는 모든 emotion anchor 간의 최대 pairwise cosine similarity를 최소화 하는 것을 목표로 합니다. 이는 최소 pairwise angle을 최대화 하는 것과 같습니다. emotion anchor가 분산되어 있을 수록 emotion을 인식하는 능력이 향상됩니다.

앞에서 언급한 모든 구성 요소를 결합하면 전체 loss는 식(8)과 같이 cross-entropy, anchor angle loss, contrastive loss의 가중 평균으로 구성됩니다.

여기서 람다는 loss term간의 균형을 맞추기 위한 하이퍼파라미터 입니다.

<Stage Two : Emotion Anchor Adaptation>

첫 번째 단계에서는 emotion label에서 생성된 emotion anchor를 사용하여 발화 representation이 서로 다른 감정 cluster로 수렴되도록 하였습니다. 이러한 emotion anchor는 각 감정을 대표하는 역할을 하고, 발화 representation을 위한 효과적인 nearest-neighbor classifier 역할을 할 수 있습니다. 그러나 첫 번째 단계에서 학습된 emotion anchor는 발화 representation의 각 category에서 가장 대표적인 position에 위치하지 않을 수 있는데요. 이러한 경우, emotion anchor의 분류 능력을 약화시키게 됩니다. 그래서 본 논문에서는 발화 representation과 emotion anchor간의 alignment를 보장하기 위해 emotion anchor를 적은 수의 epoch으로 학습하여 decision boundaries를 이동하도록 조정하는 단계를 가집니다.

좀 더 구체적으로 설명드리도록 하겠습니다. language model의 파라미터는 freeze하고 Figure 3의 오른쪽에 해당하는 stage one $a_i$의 학습 가능한 파라미터에 해당하는 emotion anchor를 만듭니다. representation learning과 일관성을 유지하기 위해 emotion anchor를 조정할 때도 여전히 동일한 유사도 측정값을 사용합니다.

emotion anchor adaptation의 loss function은 아래와 같습니다.

여기서 $c_{ij}$는 i번째 발화의 representation $r_i$와 j 번째 emotion anchor $a_j$간의 조정된 cosine similarity를 의미합니다. 타우는 stage one에서 사용된 하이퍼파라미터 입니다.

<Emotion Prediction>

자 그러면 이제 inference를 해봅시다. inference 단계에서는 각 발화 representation을 가장 가까운 emotion anchor와 일치시켜 emotion label을 예측합니다.

<Experiments>

<Dataset>

데이터셋의 경우, ERC에서 정말 많이 사용하는 IEMOCAP, MELD 그리고 ERC in NLP에서 흔히 사용하는 EmoryNLP를 사용하였습니다. 제 리뷰를 많이 읽으신 분들은 매우 친숙하실 IEMOCAP, MELD 데이터셋에대해서는 잠시 생략하고 처음 접하는 EmoryNLP에 대해서 간략히 소개드리고자 합니다. EmoryNLP는 MELD와 같이 TV show Friends를 가공하여 만든 데이터셋인데 MELD와 다른 점은 구성된 감정이 다릅니다. MELD의 경우, surprise, neutral, anger, sadness, disgusting, joy, fear 이렇게 7감정으로 구성되어 있다면, EmoryNLP의 경우, joyful, sad, powerful, mad, neutral, scared, peaceful로 구성되어 있습니다. 감정의 갯수는 같지만 구성이 약간 다릅니다.

Table 1을 통해 데이터셋의 통계를 확인할 수 있습니다. MELD와 EmoryNLP의 데이터셋 샘플 수를 보면 IEMOCAP에 비해서 약 2배 이상은 많은 것을 확인할 수 있습니다. 특히 MELD와 IEMOCAP과 데이터셋 샘플 수는 아주 많이 차이가 나네요

Table 2를 통해서 EACL 방법의 성능을 확인할 수 있습니다. 여기서 리포팅된 성능은 weighted-average F1 score를 의미합니다. 성능을 확인해보면 EACL이 모든 데이터셋에서 SOTA를 달성한 것을 확인할 수 있습니다. 매우 대단하네요.

결과를 보면 sequence 기반 방법이 graph 기반 방법보다 전반적으로 성능이 더 우수하다는 것을 알 수 있는데요, graph 기반 모델과 비교했을 때 EACL은 3개의 벤치마크에서 추가적인 지식 없이 최신 graph 방법론인 DAG-ERC 보다 2.38%, 3.57%, 1.22%의 큰 폭으로 성능이 향상된 것을 확인할 수 있습니다.

Table 3은 벤치마크 데이터셋에 대한 fine-grained performance를 보여주는데요. 모든 벤치마크 데이터셋에서 대부분의 emotion category에서 EACL이 contrastive learning 방법론 중 하나인 SPCL+CL보다 성능이 뛰어난 것을 확인할 수 있습니다.

Table 4를 통해 ablation study를 확인할 수 있습니다. one stage 단계에서 구성 요소의 효과를 검증하기 위해 서로 다른 emotion anchor angle이 균일하도록 유도하는 $L_{Ag}$를 제거했을 때의 성능은 Table 4의 2번째 줄을 통해서 확인할 수 있는데, $L_{Ag}$를 제거했을 때 성능이 하락하는 것을 확인할 수 있습니다. 이는 emotion anchor learning이 발화 representation을 분리하는데 도움이 된다는 것을 나타냅니다. 또한 $L_{CE}$를 제거하면 성능이 떨어지는 것을 볼 수 있는데, 이는 supervised learning이 language model의fine-tuning에 도움이 된다는 것을 보여줍니다.

또한, 표의 4번째 줄을 통해서 emotion anchor를 상속하는 것이 중요하다는 것을 확인할 수 있는데요. 학습된 emotion anchor가 더 강력한 representation을 보이는 것을 보여줍니다. 또한 anchor adaptation을 제거하거나 각 emotion category에 대한 학습 representaion의 중심을 emotion anchor로 삼을 경우 성능이 크게 떨어지는 것을 확인할 수 있습니다. 이를 통해 emotion anchor의 부적절한 위치가 성능을 떨어뜨린 다는 것을 확인할 수 있고 second stage가 중요한 역할을 하는 것을 확인할 수 있습니다.


이렇게 마무리해보겠습니다. 사실 본 논문을 봤을 떄 엄청 나게 뭔가를 제안한 느낌은 아닌데 깔끔하게 감정간의 유사성을 분리하고 이를 증명해낸 느낌이 들었습니다. 확실히 성능으로도 본 논문이 좋다는 것을 아주 깔끔하게 증명했죠. 이를 멀티모달로 확장해서 가져가봐도 좋을 것 같다는 생각이 드네요. 지금까지 읽어주셔서 감사합니다.

Author: 김 주연

8 thoughts on “[NAACL 2024] Emotion-Anchored Contrastive Learning Framework for Emotion Recognition in Conversation

  1. 좋은 리뷰 감사합니다.

    Introduction에서 감정적으로 의미가 풍부한 representation인 anchor를 생성하고 이 representation은 유사한 감정간의 구분을 명시적으로 한다고 하셨는데, 여기서 감정적으로 의미가 풍부하다는 것은 하나의 감정에 대해 잘 표현한다는 것을 의미하는 것이 맞나요?

    그리고 감정별로 하나의 anchor를 생성하는 것으로 이해하였는데 맞나요?? 그렇다면 anchor를 선정하는 방식은 어떻게 되는 지 궁금합니다.. 아니면 모든 발화는 배치마다 anchor가 되어 representation learning을 수행하는 것인가요??

    마지막으로 실험 결과를 보면 성능이 상당히 좋아보입니다. 그런데 EACL은 3개의 벤치마크에서 추가적인 지식 없이 최신 graph 방법론인 DAG-ERC 보다 2.38%, 3.57%, 1.22%의 큰 폭으로 성능이 향상되었다고 하셨는데, 다른 방법론들에서의 추가적인 지식은 어떤 것인 지 궁금합니다.

    1. 안녕하세요. 댓글 감사합니다!

      1. 네 맞습니다. 감정적인 의미가 풍부하다 -> 그 감정에 대해서 잘 표현할 수 있다고 생각하였습니다.

      2. 네 맞습니다. anchor의 경우, 각 감정을 대표하는 단어 (ex: happy)를 가져갑니다. 배치마다 anchor가 생성이 되는 것은 아닙니다.

      3. 추가적인 지식이라하면, 상식이나 감정사전과 같은 데이터셋 외의 추가 데이터를 의미합니다.

      감사합니다.

  2. 안녕하세요 김주연 연구원님 좋은 리뷰 감사합니다.

    제가 nlp관련 task를 잘 몰라 간단한 질문 드리겠습니다.
    ‘prompt context encoding’ 부분에서 prompt P=”For utterance u t , speaker s t feels [mask]”로 주어지고, [mask]의 마지막 hidden state를 발화 representation으로 사용한다고 하셨는데, ‘mask의 hidden state’라는 것이 어떤 것을 의미하는 건가요? 단순히 prompt 문장을 단어 단위로 rnn에 입력했을 때 마지막 단어에 해당하는 [mask]의 hidden state를 의미하는 것인가요?

    그리고 anchor란 text emotion label을 language model에 입력한 결과가 emotion anchor라고 설명해 주셨는데 해당 값은 어떤 의미인지 궁금합니다. 각 감정이 feature space 상에서 위치하는 곳이라고 이해하면 될까요?

    1. 안녕하세요. 댓글 감사합니다!

      1. 본 논문에서는 transformer 계열의 language 모델을 사용하여서 representation을 추출하는데, 각 단어의 벡터가 layer를 통과하게 됩니다. 그 과정에서 [mask]라는 단어의 벡터가 layer를 통과했을 때 나오는 값을 hidden state라고 표현했다고 생각했습니다.

      2. anchor의 값이 의미하는 바는 각 감정의 대표값이라고 생각하시면 좋을 것 같습니다. 각 감정에 해당하는 anchor가 feature space에 대표로서 존재하면 새로운 값이 들어왔을 때 대표값과 얼마나 차이나는지를 이용하여 감정을 구별할 수 있게 됩니다.

      감사합니다

  3. 안녕하세요 주연님 좋은 리뷰 감사합니다.

    emotional anchor learning에서 anchor angel loss가 자신과 가장 유사한 emotional anchor 사이의 angle을 최대화하기 위하여 제안되었다고 언급해주셨는데 angle을 최대화한다는 것이 180도 즉 반대를 바라보게 한다는 것을 의미하는 건가요? 그리고 가장 유사한 emotional anchor를 멀리하는 것이 왜 representation 간의 상호작용을 분산시키는 건지 궁금합니다.
    감사합니다.

    1. 안녕하세요. 댓글 감사합니다!

      1. loss 설계 상 angle을 최대화 한다는 것이 반대를 바라보게 한다는 것으로 이해하셔도 좋을 것 같습니다. 근데 주의할 점은 감정이 2개만 있는 것이 아니라 여러개 존재하는 것이기 때문에 반대로만 이동하면 무조건 각도가 최대화가 된다는 것은 아닌 것 같습니다.

      2. emotion anchor끼리 상호작용을 한다는 것은 anchor간의 미치는 영향력이 크다는 것으로 이해할 수 있는데 이를 멀리해야 감정 구분이 쉬워지기 때문에 anchor간 거리를 멀리하여 anchor 간 영향력이 적어지도록 합니다.

      감사합니다.

  4. 안녕하새요 좋은 리뷰 감사합니다.

    이번 주 세미나를 듣고 본 리뷰를 다시 읽으면서 든 생각인데, 물론 주연님께서 마지막에 텍스트만 활용하는 본 연구를 멀티모달 분야로 확장시켜본다고 하셔서 별로 유의미하진 않을 것 같습니다만 궁금하여 여쭤봅니다.

    영상이나 비디오 분야에서는 멀티모달 LLM을 활용해 영상으로부터 캡션을 추출하고 이 텍스트의 임베딩을 학습의 보조 정보로 활용하는 논문들이 많은데요, 자연어 처리 분야에는 텍스트를 기반으로 영상을 생성하고 여기서부터 시각적 임베딩을 보조로 활용하는 연구는 이루어지고있지 않나요? 요즘 비전쪽에서는 제 연구분야를 포함해 다양한 task가 foundation model의 힘을 빌려 성능을 올리는것에 대해 굉장히 긍정적이라는것이 느껴져 여쭤보았습니다.

    1. 안녕하세요. 댓글 감사합니다!

      ‘1) 자연어 처리 분야에서 텍스트를 기반으로 영상 생성, 2) 생성된 영상을 가지고 활용하여 연구’로 정리해서 생각했을 때 1 -> 2를 통시에 수행하는 연구는 제가 팔로업을 못한걸지도 모르지만 활발하게 연구되고 있는지는 모르겠습니다.

      +) 다시 생각해보니 키워드를 몰라 팔로업이 안되고 있는거 같아서 확실하게 답변 드리기는 힘들거 같네요ㅜ 조금더 공부해봐야겠습니다.

      감사합니다.

Leave a Reply