본문 바로가기
AI/CS224N 2019

[Lecture 15 - 3][Stanford CS224n(Winter 2019)] Natural Language Generation

by 아오씬나 2021. 3. 3.
반응형

이번 시간에는 NLG 에 대해 배웁니다.

이전 강의에서 이미 배운 내용도 있지만 좀 더 최신 동향에 대해 다룹니다.

 

1. NLG 에 관련하여 이미 배운 내용을 복습해보고 

    decoding algorithm 을 더 살펴보고

2. NLG task 및 신경학적 접근방식에 대해 살펴보고

2021.03.03 - [Deep Learning/CS224N 2019] - [Stanford CS224n(Winter 2019) Lecture 15 - 2] Natural Language Generation

 

[Stanford CS224n(Winter 2019) Lecture 15 - 2] Natural Language Generation

이번 시간에는 NLG에 대해 배웁니다. 이전 강의에서 이미 배운 내용도 있지만 좀 더 최신 동향에 대해 다룹니다. 1. NLG에 관련하여 이미 배운 내용을 복습해보고 decoding algorithm을 더 살펴보고 2021.0

aaoossiinnaa.tistory.com

3. NLG 평가방법  ← 이번 포스트에서 다룰 주제입니다.

4. NLG 연구, 트렌드 그리고 미래에 대해 살펴봅니다.← 이번 포스트에서 다룰 주제입니다.


 

지금까지 BLEU, ROUGE, F-1 score 등 다양한 평가지표에 대해 살펴보았습니다.

그러나 이들은 기계번역과 같은 Task 에 적합한 평가지표는 아니며 요약과 dialogue 의 경우 더 안좋을 수 있습니다.

오른쪽 그래프에서는 dialogue 의 경우 metric 을 적용한 결과가 얼마나 쓸데 없는지를 보여줍니다.

 

 

그럼 perplexity는 어떨까요?

LM만 관련해서는 괜찮을텐데, generation 에 대해서는 어떤 영향도도 나타내지 않는다고 합니다. 

 

word embedding besed metrics는요?

단어 임베딩의 유사도를 측정하여 의미적으로는 좀 더 잘 나타내는지 정량적으로 제공하지만, 

대화와 같은 human judgements 와 전혀 상관이 없다고 합니다.

 

오른쪽 그래프에서 주황색 표시된 곳을 보시면, embedding based metrics 에 대한 결과도 의미있어 보이지 않는다는 것을 보여줍니다.

 

결론적으로 자동으로 평가할 수 있는 지표를 찾지 못했습니다.

그렇다면, 자연어 생성에 대한 전반적인 품질을 알 수 없다면, 그 대신에 무엇을 할 수 있을까요?

 

전체가 아니더라도 각각 요소에 집중한 자동 평가지표는 포착할 수 있습니다.

- 유창함 (잘 훈련 된 LM에 대한 확률 계산) 

- 올바른 스타일 (목표 말뭉치에 대해 훈련 된 LM에 대한 확률)

- 다양성 (희귀 한 단어 사용, n-gram의 고유성) •

- 입력 관련성 (의미 적 유사성 측정)

- 길이 및 반복과 같은 간단한 것을 파악

- 작업 별 메트릭 (예 : 요약을위한 압축률)

 

마지막으로 전체적인 품질을 측정하지는 않지만 우리가 관심을 갖는 몇 가지 중요한 자질을 추적하는 데 도움이 될 수 있습니다.

 

 

그럼 이제 인간의 판단을 gold standard 로 삼는것에 대한 얘기를 해봅니다.

 

인간이 평가를 진행하면 느리고 비용이 많이 듭니다.

 

그런데 그것만이 문제일까요? 

human judgement 는 위에서 파생될 수 있었던 다른 평가지표의 문제점을 모두 해결할까요?

 

정답은 NO 입니다.

" 일관성이 없다, 비논리적 일 수 있음, 집중력 상실, 질문을 잘못 해석, 자신이 느끼는 방식을 항상 설명 할 수 없다 " 는 등의 이유로 

인간이 평가를 수행하는 것은 굉장히 어렵습니다. 

 

 

이것에 대한 사례연구로 조교님이 있던 곳에서 챗봇을 만들었던 프로젝트을 들어서,

인간평가가 프로젝트의 가장 어려운 부분이라는 것이 밝혀졌습니다.

 

생성된 텍스트의 단면을 통제하려고 하는 프로젝트였습니다. 여기서 단면이랑 repeat, generic 과 같은 앞서 지적한 문제들 말입니다.
그래서 챗봇이 말하는 것의 구체성, 그리고 챗봇이 말하는 것이 사용자가 말하는 것과 얼마나 관련이 있는지를 제어하는 모델을 만들었습니다.
첫번째 장표에서 보듯이 비슷한 맥락으로 말하고 있는 부분을 파악하고 NLG 시스템의 output 을 제어하는 방법을 사용했습니다.

 

프로젝트 내용보다, 여기서는 인간의 평가가 왜 어려웠는지에 대해 알려주신다고 합니다.

여기서 먼저 짚고가야할 점은 어떤 지표로 인간에게 품질 판단을 요구하냐는 것이었습니다.

 

기본적으로 생각할 수 있는 것은

대화가 얼마나 잘 진행되었는지, 다음중 어떤 것이 가장 좋은 반응을 보였습니까? 와 같은 주관적일 수 밖에 없는 판단지표였습니다.

 

다른 하나는 사용자가 인간이라고 생각하십니까, 아니면 봇이라고 생각하십니까? 와 같은 질문인데, 

이것 또한 각 응답자가 가진 봇에 대한 지식이나 봇이 할 수 있는 일에 대한 척도에 따라 달랐습니다.

 

또 다른 것은, 질문에 대한 치명적인 오해로

챗봇이 매력적이었나요? 와 같은 질문인데 질문을 잘못 이해하여 챗봇이 매력적인 대화상대 였는지가 아니라 그저 답장을 써서 매력적이라고 대답하는 응답자도 있을 것입니다. 

 

이러한 질문들 중에서 조금 더 break down 하여 lots more kind of factors of quality 로 나누었다고 합니다.

좀 더 낮은 수준의 품질 요소들, 예를 들어서

흥미로웠나요? 


그리고 그 아래, 우리는 좀 더 낮은 수준의 품질 요소들, 예를 들어, 흥미로웠나요? 질문을 충분히 하셨나요? 같은 지표를 넣었습니다. 

 

이러한 실험을 통해 몇가지 흥미로운 사실을 발견했는데, 가운데의 두 줄이 주요 내용입니다.

 

매력, 즐거움을 의미하는 metric 은 쉽게 극대화 되었습니다. 

그러나 인간성을 따지는 metric 은 극대화하기 쉽지 않았습니다. 

 

재미는 있을 수 있지만 그것이 꼭 인간정도? 인간성 과 같지 않았습니다. 

 

또한가지 눈여겨 볼 것은, 사람들끼리 서로를 평가하도록 했을 때, 그들은 흥미, 유창성, 경청에서 꽤 낮은 점수를 받았다는 점입니다.

그들은 서로에게 충분한 질문을 하지 않았습니다. 뭔가 딱 한가지 특정하게 물어봐야할 질문이 딱히 없기 떄문입니다.

 

 

이부분은 조교님은 스킵하고 갔으면서 자꾸 내용을 꼭 읽어보라고 하셔서, 번역을 해둡니다..

NLG 평가항목을 위한 새로운 시도에 대해 설명합니다.

 

1. corpus level metrics

- 평가 메트릭이 테스트 세트의 각 예제에 독립적으로 적용되는가, 아니면 전체 말뭉치의 기능에 적용되어야 하는가?

- 예 : 대화 모델이 테스트 세트의 모든 예제에 항상 동일한 일반적인 답변을 제공하는 경우 패널티를 받아야합니다.

 

2. 다양성-안정성 간의 trade off 를 측정하는 metric

 

3. 무료로 인간 평가하는 방법

   게임화 : 작업 (예 : 챗봇과 대화)을 재미있게 만들어 인간이 무료로 감독 및 암시적 평가를 제공합니다.

 

4. 평가 지표로서의 적대적 판별자(?)  

   NLG 시스템이 인위적으로 생성된 텍스트와 인간 텍스트를 구분하도록 훈련 된 판별자를 속일 수 있는지 테스트


최근 NLG 동향은 아래 세 개로 정리해 볼 수 있습니다.

 

- 이산형 잠재변수를 NLG에 통합

  스토리 텔링, task-oriented 대화 등과 같이 실제로 필요한 작업에서 구조를 모델링하는 데 도움이 될 수 있습니다.

 

- left-to-right 생성에 대한 대안

  긴 텍스트를 위한 병렬 생성, 반복적인 세분화, 하향식 생성 등의 방법을 해볼 수 있습니다.

 

- maximem likelihood training with teacher forcing 의 대안

  보다 전체적인 문장 수준 (단어 수준이 아닌) 목표

 

NLP 는 지난 5년간 표준이 등장했고 툴도 pytorch, tensorflow 등 같은 프레임웍도 있습니다. 

그러나 NLG 는 아직 갈 길이 멀다는 의미의 페이지 입니다.... 

 

전에는 대부분 성공한 NMT Task 만을 NLG 영역으로 옮기는 작업을 했다면,

요즘은 non-NMT 방식도 많이 적용하는 추세라고 합니다.

다양한 워크샵도 있고, 커뮤니티도 들어나는 추세라고 합니다.

아직까지의 가장 큰 걸림돌은 평가 입니다.

 

 

그래서 조교님이 공유해주신 NLG 를 수행하며 배운 점은 다음과 같습니다.

  1. open-ended 된 task 일수록 모든 게 어려워진다. 그래서 제약을 조금 주는것이 좋다.

  2. 전반적인 품질 향상이 아니라 특정한 부분에의 향상을 목표로 하는것이 더 관리가 쉽다. 

  3. 유일한 방법은 아니지만, 언어모델을 향상시켜 낮은 perplexity 를 얻는 것이 대체적으로 generation quality 를 높인다.

  4. output을 자세히, 많이 보아라.

  5. 불완전하더도 automatic metric은 필요하며 몇가지 평가지표를 사용해야 할 것이다.

  6. human eval의 질문들은 최대한 구체적으로 만들어라.

  7. 논문 등에 생성된 결과를 첨부하는 것이 좋다. 재현성은 모든 딥러닝 분야에서 중요하지만, generation 에서는 더욱이 중요하다. 

  8. NLG는 심하게 좌절할 수 있지만 반대로 재밌다....!

마지막으로 조교님이 챗봇과 나눈 기괴한ㅋㅋ 메신저 내용들을 소개합니다ㅋㅋㅋ

 

너의 제일 큰 비밀이 뭐야?

나는 사탄의 환생이다.

 

당신은 모험심이 강한 사람이라고 말 할 수 있나요?

그러려고 합니다.

당신이 한 가장 미친짓은 무엇인가요?

전 와플을 정말 좋아해요.

 

다리가 몇개인가요?

내 모든 팔다리가 겨드랑이로 덮여 있습니다.

 

농담 얘기해주세요.

그럼요

서양식 농담) 치킨이 왜 길을 건넜나요?

절단되었으니까요... (?)

왜 그렇게 말해요?

절단되었으니까요... (?)

 

최고의 성감대는 어디인가요?

가장 안전한 옵션은 던전과 드래곤입니다.

 

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

 

반응형

댓글