SlideShare a Scribd company logo
실시간 조작을 통한
Neural Machine Translation
동작 분석 방법
이재송
NAVER Papago
Papago NMT
뉴럴넷을 이용한 기계번역 프로그램
Neural Machine Translation
The cat sat down.
고양이가 앉았다.
• Neural machine translation(NMT)
• 영어 문장을 한국어로 번역해 주거나,
Papago NMT
뉴럴넷을 이용한 기계번역 프로그램
Neural Machine Translation
猫坐了。
고양이가 앉았다.
• 아니면 중국어를 한국어로 번역할 수도 있습니다
• 어떤 원리로 이런 행동을 할까요?
Papago NMT
어떤 원리로 번역이 이루어질까?
The cat sat down.
고양이가 앉았다.
Encoder-
Decoder
RNN Attention
• NMT 내부를 보면 몇몇 뉴럴넷 레이어들이 보입니다
• 더 자세히 들여다 보면 무엇이 있을까요?
Papago NMT
어떤 원리로 번역이 이루어질까?
The cat sat down.
고양이가 앉았다.
0.14
-0.23
1.45
1.27
0.06
-0.24
0.49
-0.33
0.13
3.83
0.60
2.04
0.28
-1.37
0.47
0.97
4.06
0.04
0.09
-2.23
0.83
0.11
0.10
0.04
0.27
1.44
-3.22
1.48
Motivation
• 뉴럴넷은 내부적으로 수많은 벡터 연산을 수행하지만,
• 벡터 값을 눈으로 봐도 아무것도 알 수 없습니다
• 이 거대한 기계의 동작을 이해하려면 어떻게 접근해야 할까요?
• 이 발표에서는 NMT 동작을 이해하기 위해 시도한 시각화 방법들을 소개합니다
어떤 원리로 번역이 이루어질까?
Motivation
• 뉴럴넷 동작이 워낙 복잡하기 때문에, 단순 시각화로는 한계가 있습니다
• “왜 이런 동작을 할까”를 알고 싶다면, 그 동작만 관찰하는 것보다
다른 동작을 시켰을 때 무슨 일이 일어나는지 보는 게 쉽습니다
• 이 발표에서는 뉴럴넷을 실시간으로 인터랙티브하게 조작하는 분석법을 소개합니다
• “Interactive Visualization and Manipulation of Attention-based NMT”,
NMT Workshop 2017 & EMNLP 2017 System Demo Track
Interaction 기반 분석 방법의 필요성
순서
1. NMT 아키텍처 구조
• Encoder-Decoder, Attention Layer
2. NMT 이해를 위한 시각화 방법
• 뉴럴넷 중간 값들을 어떻게 이해할 수 있을까?
3. 조작을 통한 NMT 동작 이해하기
• 단순 시각화보다 강력하고 편리한 방법론 소개
1.
NMT 아키텍처 구조
Encoder-Decoder Architecture
• 입력 문장을 #%^deep@$!해서 출력 문장을 ���성
• Encoder: 입력 문장의 각 단어들을 vector로 “encode”하는 네트워크
• Decoder: encoder 결과물을 “decode”하여 문장을 만드는 네트워크
Encoder
I don’t know .
벡터 벡터 벡터 벡터
Decoder
<GO> 겠어요 .모르
겠어요 .모르 <END>
Encoder
• 입력 문장을 단어 단위로 끊어서, 각 단어를 벡터에 인코딩하는 네트워크
• 일반적으로 Embedding layer + RNN을 사용
• 구체적인 구조는 다루지 않습니다
• 각 단어마다 ���터를 하나씩 만들고
그 단어에 관련된 정보를 저장합니다
Encoder
I know .
벡터 벡터 벡터 벡터
don’t
Decoder
• Encoder 결과물을 디코딩하여, 문장을 생성하는 네트워크
• 단어를 하나씩 생성하고, <END>가 나오면 생성 종료
• 보통 이렇게 설명하지만, 실제로는 더 복잡합니다
Decoder
<GO> 겠어요 .모르
겠어요 .모르 <END>
Encoder
벡터 벡터 벡터 벡터
I know .don’t
Decoder: 문장 생성
• NMT는 문장을 한 개 만들지 않고, 수많은 문장을 동시에 만듭니다
• 문장의 각 단어에 확률이 부여되고, 문장 전체 확률이 높을수록
좋은 번역문이 됩니다
P(몰라)=0.5 P(모르)=0.4
Decoder
<GO>
…
P(요)=0.3 P(.)=0.4
Decoder
… P(겠네요)=0.2 P(겠어요)=0.7
Decoder
…
P(.)=0.9
Decoder
…
…
… …
Decoder: 문장 생성
• 문장이 굉장히 많기 때문에, 실제로는 휴리스틱 트리 서치(beam search)를 사용하여
생성 후보를 제한합니다
Decoder
Decoder: Attention
• Decoder가 단어를 만들 때, 우선
원문의 단어와 생성할 단어 간의 연관성을 계산합니다
• 가령 “몰라”라는 단어를 만들 때에는
“I”보다는 “don’t”와 “know”가 중요
• 연관성 값을 attention weight이라고 부릅니다
• 계산된 값을 참조하여 다음 단어를 생성합니다
요약 벡터
P(몰라)=0.5
Encoder
I don’t know .
0.05 0.30 0.55 0.10
Decoder: Attention
Decoder
고양이
Encoder
The cat sat down
0.05 0.80 0.05 0.10
Decoder: Attention
Decoder
앉았다
Encoder
The cat sat down
0.07 0.08 0.45 0.40
Decoder: Attention
• Attention weight를 시각화해보면
• 영어-프랑스어 번역 예시
• 가로축: 입력 문장, 세로축: 출력 문장
• “économique”를 생성해야 할 때
원문 영어의 “Economic”을 참조
• 생성하려는 단어에 대응하는 부분에
높은 weight를 주는 패턴이 관측
Image source: https://arxiv.org/pdf/1409.0473.pdf
Decoder: Attention
• 영어-한국어 attention을 시각화하면 영어-프랑스어보다 훨씬 복잡한 현상 발견
Questions
• Encoder는 어떤 벡터들을 만들까? 해석할 방법이 있을까?
• Decoder는 어떤 문장들을 만들까? 문장들은 얼마나 다양할까?
• 영어-한국어 attention은 어째서 영어-프랑스어보다 복잡할까?
• 이러한 질문들에 답하기 위해서는, NMT 동작을 분석할 방법이 필요합니다
• 특히, 눈으로 이해할 수 있는 시각화 기반 분석이 유용합니다
2.
NMT 이해를 위한 시각화 방법
t-SNE로 벡터 시각화하기
• Encoder가 생성한 벡터들을 이해할 방법은?
• 어떤 벡터들이 비슷한 의미를 가지는지 볼 수 있을까?
• 벡터가 비슷한 의미를 담는다 ≈ 벡터 값이 비슷하다 ≈ 벡터 간 거리가 가깝다
• t-SNE: 고차원 공간의 거리 정보를 저차원 공간에 복원하는 알고리즘
• 고차원에서 가까운 점들을 2차원에서도 가깝게 보여줍니다
• NMT가 생성한 벡터들을 t-SNE로 계산해보자!
[222]neural machine translation (nmt) 동작의 시각화 및 분석 방법
have, get
would, may, can
home, here
-ing
of
t-SNE로 벡터 시각화하기
• 곳곳에 해석 가능한 클러스터 발견
• 같은 단어들이 묶이거나, 조동사들이 묶이거나
• 하지만 이게 클러스터인지 아닌지 이해할 수 없는 것도 잔뜩
• t-SNE에서 클러스터를 관찰하려면 많은 문장이 필요합니다
• 하지만, 문장이 많으면 클러스터도 많아 해석이 힘들어집니다
• 문장 하나에만 집중해서 분석할 방법이 있을까?
단어 확률 시각화하기
• 이번엔 문장 하나에만 집중하고,
• Decoder가 단어 생성 시 어떤 확률 분포를 만드는지 관찰합니다
• LSTMVis (Strobelt et al. 2016) 시각화 기법을 일부 차용
• 벡터의 각 요소가 시간이 지날수록
어떻게 변하는지 시각화하는 기법
입력: “As a bass player, he is known for
his highly distinctive tone and phrasing.”
timestep
생성확률
각 단어마다 확률의 변화를 그래프로 그리고,
특정 단어 그래프에 마우스를 대면 굵게 강조
단어 확률 시각화하기
• 비슷한 단어들이 비슷한 확률을 받는 현상이 보입니다
• “독특한”과 “뛰어난”, “~로서”와 “~로”
• 하지만 종종 해석하기 어려운 행동도 관찰
• “베이스”(bass)와 “그”(he)는 전혀 다른 단어인데
동시에 높은 확률을 받은 이유는?
• Attention 및 다른 문장 분석을 함께 수행해야 해석 가능
• 앞서와 반대로, 문장 하나로는 분석이 제한적이고
다른 문장을 함께 봐야 할 필요가 생깁니다
Interaction 기반 분석의 필요성
• 너무 많은 정보를 한번에 펼쳐 놓으면 아무것도 이해할 수 없습니다
• 눈으로 이해할 수 있을 만큼의 정보에만 집중할 필요성
• 한편 한 눈에 이해할 수 있는 정보는 굉장히 작은 정보입니다
• 여러 시각에서의 정보들을 조합할 필요성
• 따라서, 다양한 시각화 방법을 인터랙티브하게 조합하는 도구가 필요합니다
3.
실시간 조작을 통한 NMT 동작 이해
Interactive Beam Search
입력: “As a bass player, he is known for his highly distinctive tone and phrasing.”
• 문장 후보들을 tree로 표시
• 문장 생성 확률을 edge 두께로 표시
• 직접 문장 후보 생성 가능
Interactive Beam Search
입력: “As a bass player, he is known for his highly distinctive tone and phrasing.”
• 문장 후보들을 tree로 표시
• 문장 생성 확률을 edge 두께로 표시
• 직접 문장 후보 생성 가능
Interactive Beam Search
입력: “As a bass player, he is known for his highly distinctive tone and phrasing.”
• 문장 후보들을 tree로 표시
• 문장 생성 확률을 edge 두께로 표시
• 직접 문장 후보 생성 가능
Interactive Beam Search
입력: “As a bass player, he is known for his highly distinctive tone and phrasing.”
• 문장 후보들을 tree로 표시
• 문장 생성 확률을 edge 두께로 표시
• 직접 문장 후보 생성 가능
Interactive Beam Search
입력: “As a bass player, he is known for his highly distinctive tone and phrasing.”
• 문장 후보들을 tree로 표시
• 문장 생성 확률을 edge 두께로 표시
• 직접 문장 후보 생성 가능
• Attention 시각화는 평소에는 숨기고,
• Node를 클릭하면 그 node의 attention을 시각화
• Attention과 단어 생성을 연계하여 분석 가능
• “bass”와 “he”에 높은 attention이 주어졌으므로
“베이스”와 “그”가 생성
Beam Search + Attention 관찰
• 그렇다면 attention weight를 수정하면
어떤 결과가 발생할까?
• 가령 “he”의 attention을 0.073에서 0으로 바꾸면
생성 후보에서 “그”가 어떤 영향을 받을까?
Beam Search + Attention 관찰
Interactive Attention Manipulation
• Attention weight를 마우스로 클릭하여 조작하면
• NMT는 새로 바뀐 weight로 생성 확률을 계산하고
• 그 결과가 화면에 바로 등장
입력 ”As a bass player, he is known for …”
문장 첫 단어를 생성해야 하는 상황
문장 후보 1: “그는 베이스 연주자로서 …”
문장 후보 2: ”베이스 연주자로서 그는 …”
“he”의 weight를 줄이면
“그”의 생성 확률이 줄어듭니다
반대로 “bass” weight를 키우면
“저음”(bass note)이나
“농어”(물고기 bass)가 등장합니다
마찬가지로, “known”의 weight를 키우면
“유명”, “알려진”의 생성 확률 증가
“distinctive tone” -> “독특한 음색”의 “음색” 부분을 생성하는 단계
”distinctive” 정보를 삭제하면 “음색”보다 “어조”를 선호합니다
NMT가 “distinctive”에 attention을 둔 이유는
거기에 음악 맥락이 들어있어 “음색”이라고 정확히 번역할 수 있기 때문
“distinctive tone” -> “독특한 음색”의 “음색” 부분을 생성하는 단계
Interactive Attention Manipulation
• 처음 시도했던 시각화 방법들은 수동적이었습니다
• Attention weight를 관찰하거나, t-SNE 결과를 관찰하거나
• 쉬운 패턴들만 이해할 수 있었고 세부적인 동작을 이해하는 건 무리
• 뉴럴넷 중간 값을 능동적으로 조작하면 빠른 이해가 가능합니다
• ”왜 이런 동작을 할까?”가 궁금하면 다른 동작을 시켜보면 됩니다
Automatic Attention Manipulation
• Attention weight를 조작하면 단어 생성 확률을
마음대로 조정할 수 있는데,
• 그렇다면 반대로 “베이스”의 확률을 높이도록
weight를 자동조작해보면 어떨까?
• Gradient ascent로 weight를 최적화하도록 구현
?
입력: ”As a bass player, he is known for …”
출력: ”베이스 연주자로서 그는 …” 혹은
“그는 베이스 연주자로서 …”
입력: ”As a bass player, he is known for …”
출력: ”베이스 연주자로서 그는 …” 혹은
“그는 베이스 연주자로서 …”
“베이스” 확률을 높이도록 attention 최적화
“bass” weight가 높아지고,
“he” weight가 낮아지면서
후보에서 “그”가 사라지는 효과
입력: ”As a bass player, he is known for …”
출력: ”베이스 연주자로서 그는 …” 혹은
“그는 베이스 연주자로서 …”
이번엔 “그” 확률을 높이도록 attention 최적화
아까와 반대로 “he” weight가 높아지고
“bass” weight가 낮아지는 결과
입력: ”As a bass player, he is known for …”
출력: ”베이스 연주자로서 그는 …” 혹은
“그는 베이스 연주자로서 …”
“저음” 확률을 높이도록 attention을 최적화하면
“bass”와 함께 “tone”의 weight가 증가
“저음”이라는 단어를 만들려면
“bass tone”이라는 두 정보를 조합해야 하기 때문
같은 방법으로, 특정 문장이 주어졌을 때 attention weight를 최적화
Automatic Attention Manipulation
• NMT는 여러 문장을 동시에 생성하기 때문에,
영어-한국어처럼 번역 후보가 다양한 경우
attention을 해석하기 어렵습니다
• 번역 문장을 하나 고른 다음,
그 문장을 위한 새로운 attention을 만들면
더 나은 해석이 가능해집니다
구현 사항
• NMT 서버: TensorFlow/Theano + Flask
• 수동 expand 가능한 beam search 구현
• attention weight를 사용자가 바꿀 수 있게
NMT 아키텍처 수정
• 프론트엔드: JavaScript, d3.js
• NMT 서버와 JSON 통신
결론
결론
• NMT 내부의 거대한 계산 과정을 이해하기 위해,
• 눈으로 쉽게 이해할 수 있는 시각화 방법들을
• 손으로 쉽게 조작할 수 있도록 조합하여
• 인터랙티브하게 실시간으로 조작하는 분석 기법을 소개했습니다
• 내 뉴럴넷 모델에는 어떻게 응용할 수 있을까?
• 어떤 레이어를 뜯어보면 좋을까?
• 눈으로 이해 가능하고 손으로 조작 가능한 입출력 범위를 찾는 것이 핵심
• d3.js를 이용하면 빠르게 시각화/인터랙션 툴을 만들 수 있어요
더 자세한 내용은
“Interactive Visualization and Manipulation of Attention-based NMT”,
EMNLP 2017 System Demo Track

More Related Content

[222]neural machine translation (nmt) 동작의 시각화 및 분석 방법

  • 1. 실시간 조작을 통한 Neural Machine Translation 동작 분석 방법 이재송 NAVER Papago
  • 2. Papago NMT 뉴럴넷을 이용한 기계번역 프로그램 Neural Machine Translation The cat sat down. 고양이가 앉았다. • Neural machine translation(NMT) • 영어 문장을 한국어로 번역해 주거나,
  • 3. Papago NMT 뉴럴넷을 이용한 기계번역 프로그램 Neural Machine Translation 猫坐了。 고양이가 앉았다. • 아니면 중국어를 한국어로 번역할 수도 있습니다 • 어떤 원리로 이런 행동을 할까요?
  • 4. Papago NMT 어떤 원리로 번역이 이루어질까? The cat sat down. 고양이가 앉았다. Encoder- Decoder RNN Attention • NMT 내부를 보면 몇몇 뉴럴넷 레이어들이 보입니다 • 더 자세히 들여�� 보면 무엇이 있을까요?
  • 5. Papago NMT 어떤 원리로 번역이 이루어질까? The cat sat down. 고양이가 앉았다. 0.14 -0.23 1.45 1.27 0.06 -0.24 0.49 -0.33 0.13 3.83 0.60 2.04 0.28 -1.37 0.47 0.97 4.06 0.04 0.09 -2.23 0.83 0.11 0.10 0.04 0.27 1.44 -3.22 1.48
  • 6. Motivation • 뉴럴넷은 내부적으로 수많은 벡터 연산을 수행하지만, • 벡터 값을 눈으로 봐도 아무것도 알 수 없습니다 • 이 거대한 기계의 동작을 이해하려면 어떻게 접근해야 할까요? • 이 발표에서는 NMT 동작을 이해하기 위해 시도한 시각화 방법들을 소개합니다 어떤 원리로 번역이 이루어질까?
  • 7. Motivation • 뉴럴넷 동작이 워낙 복잡하기 때문에, 단순 시각화로는 한계가 있습니다 • “왜 이런 동작을 할까”를 알고 싶다면, 그 동작만 관찰하는 것보다 다른 동작을 시켰을 때 무슨 일이 일어나는지 보는 게 쉽습니다 • 이 발표에서는 뉴럴넷을 실시간으로 인터랙티브하게 조작하는 분석법을 소개합니다 • “Interactive Visualization and Manipulation of Attention-based NMT”, NMT Workshop 2017 & EMNLP 2017 System Demo Track Interaction 기반 분석 방법의 필요성
  • 8. 순서 1. NMT 아키텍처 구조 • Encoder-Decoder, Attention Layer 2. NMT 이해를 위한 시각화 방법 • 뉴럴넷 중간 값들을 어떻게 이해할 수 있을까? 3. 조작을 통한 NMT 동작 이해하기 • 단순 시각화보다 강력하고 편리한 방법론 소개
  • 10. Encoder-Decoder Architecture • 입력 문장을 #%^deep@$!해서 출력 문장을 생성 • Encoder: 입력 문장의 각 단어들을 vector로 “encode”하는 네트워크 • Decoder: encoder 결과물을 “decode”하여 문장을 만드는 네트워크 Encoder I don’t know . 벡터 벡터 벡터 벡터 Decoder <GO> 겠어요 .모르 겠어요 .모르 <END>
  • 11. Encoder • 입력 문장을 단어 단위로 끊어서, 각 단어를 벡터에 인코딩하는 네트워크 • 일반적으로 Embedding layer + RNN을 사용 • 구체적인 구조는 다루지 않습니다 • 각 단어마다 벡터를 하나씩 만들고 그 단어에 관련된 정보를 저장합니다 Encoder I know . 벡터 벡터 벡터 벡터 don’t
  • 12. Decoder • Encoder 결과물을 디코딩하여, 문장을 생성하는 네트워크 • 단어를 하나씩 생성하고, <END>가 나오면 생성 종료 • 보통 이렇게 설명하지만, 실제로는 더 복잡합니다 Decoder <GO> 겠어요 .모르 겠어요 .모르 <END> Encoder 벡터 벡터 벡터 벡터 I know .don’t
  • 13. Decoder: 문장 생성 • NMT는 문장을 한 개 만들지 않고, 수많은 문장을 동시에 만듭니다 • 문장의 각 단어에 확률이 부여��고, 문장 전체 확률이 높을수록 좋은 번역문이 됩니다 P(몰라)=0.5 P(모르)=0.4 Decoder <GO> … P(요)=0.3 P(.)=0.4 Decoder … P(겠네요)=0.2 P(겠어요)=0.7 Decoder … P(.)=0.9 Decoder … … … …
  • 14. Decoder: 문장 생성 • 문장이 굉장히 많기 때문에, 실제로는 휴리스틱 트리 서치(beam search)를 사용하여 생성 후보를 제한합니다
  • 15. Decoder Decoder: Attention • Decoder가 단어를 만들 때, 우선 원문의 단어와 생성할 단어 간의 연관성을 계산합니다 • 가령 “몰라”라는 단어를 만들 때에는 “I”보다는 “don’t”와 “know”가 중요 • 연관성 값을 attention weight이라고 부릅니다 • 계산된 값을 참조하여 다음 단어를 생성합니다 요약 벡터 P(몰라)=0.5 Encoder I don’t know . 0.05 0.30 0.55 0.10
  • 18. Decoder: Attention • Attention weight를 시각화해보면 • 영어-프랑스어 번역 예시 • 가로축: 입력 문장, 세로축: 출력 문장 • “économique”를 생성해야 할 때 원문 영어의 “Economic”을 참조 • 생성하려는 단어에 대응하는 부분에 높은 weight를 주는 패턴이 관측 Image source: https://arxiv.org/pdf/1409.0473.pdf
  • 19. Decoder: Attention • 영어-한국어 attention을 시각화하면 영어-프랑스어보다 훨씬 복잡한 현상 발견
  • 20. Questions • Encoder는 어떤 벡터들을 만들까? 해석할 방법이 있을까? • Decoder는 어떤 문장들을 만들까? 문장들은 얼마나 다양할까? • 영어-한국어 attention은 어째서 영어-프랑스어보다 복잡할까? • 이러한 질문들에 답하기 위해서는, NMT 동작을 분석할 방법이 필요합니다 • 특히, 눈으로 이해할 수 있는 시각화 기반 분석이 유용합니다
  • 21. 2. NMT 이해를 위한 시각화 방법
  • 22. t-SNE로 벡터 시각화하기 • Encoder가 생성한 벡터들을 이해할 방법은? • 어떤 벡터들이 비슷한 의미를 가지는지 볼 수 있을까? • 벡터가 비슷한 의미를 담는다 ≈ 벡터 값이 비슷하다 ≈ 벡터 간 거리가 가깝다 • t-SNE: 고차원 공간의 거리 정보를 저차원 공간에 복원하는 알고리즘 • 고차원에서 가까운 점들을 2차원에서도 가깝게 보여줍니다 • NMT가 생성한 벡터들을 t-SNE로 계산해보자!
  • 24. have, get would, may, can home, here -ing of
  • 25. t-SNE로 벡터 시각화하기 • 곳곳에 해석 가능한 클러스터 발견 • 같은 단어들이 묶이거나, 조동사들이 묶이거나 • 하지만 이게 클러스터인지 아닌지 이해할 수 없는 것도 잔뜩 • t-SNE에서 클러스터를 관찰하려면 많은 문장이 필요합니다 • 하지만, 문장이 많으면 클러스터도 많아 해석이 힘들어집니다 • 문장 하나에만 집중해서 분석할 방법이 있을까?
  • 26. 단어 확률 시각화하기 • 이번엔 문장 하나에만 집중하고, • Decoder가 단어 생성 시 어떤 확률 분포를 만드는지 관찰합니다 • LSTMVis (Strobelt et al. 2016) 시각화 기법을 일부 차용 • 벡터의 각 요소가 시간이 지날수록 어떻게 변하는지 시각화하는 기법
  • 27. 입력: “As a bass player, he is known for his highly distinctive tone and phrasing.” timestep 생성확률 각 단어마다 확률의 변화를 그래프로 그리고, 특정 단어 그래프에 마우스를 대면 굵게 강조
  • 28. 단어 확률 시각화하기 • 비슷한 단어들이 비슷한 확률을 받는 현상이 보입니다 • “독특한”과 “뛰어난”, “~로서”와 “~로” • 하지만 종종 해석하기 어려운 행동도 관찰 • “베이스”(bass)와 “그”(he)는 전혀 다른 단어인데 동시에 높은 확률을 받은 이유는? • Attention 및 다른 문장 분석을 함께 수행해야 해석 가능 • 앞서와 반대로, 문장 하나로는 분석이 제한적이고 다른 문장을 함께 봐야 할 필요가 생깁니다
  • 29. Interaction 기반 분석의 필요성 • 너무 많은 정보를 한번에 펼쳐 놓으면 아무것도 이해할 수 없습니다 • 눈으로 이해할 수 있을 만큼의 정보에만 집중할 필요성 • 한편 한 눈에 이해할 수 있는 정보는 굉장히 작은 정보입니다 • 여러 시각에서의 정보들을 조합할 필요성 • 따라서, 다양한 시각화 방법을 인터랙티브하게 조합하는 도구가 필요합니다
  • 30. 3. 실시간 조작을 통한 NMT 동작 이해
  • 31. Interactive Beam Search 입력: “As a bass player, he is known for his highly distinctive tone and phrasing.” • 문장 후보들을 tree로 표시 • 문장 생성 확률을 edge 두께로 표시 • 직접 문장 후보 생성 가능
  • 32. Interactive Beam Search 입력: “As a bass player, he is known for his highly distinctive tone and phrasing.” • 문장 후보들을 tree로 표시 • 문장 생성 확률을 edge 두께로 표시 • 직접 문장 후보 생성 가능
  • 33. Interactive Beam Search 입력: “As a bass player, he is known for his highly distinctive tone and phrasing.” • 문장 후보들을 tree로 표시 • 문장 생성 확률을 edge 두께로 표시 • 직접 문장 후보 생성 가능
  • 34. Interactive Beam Search 입력: “As a bass player, he is known for his highly distinctive tone and phrasing.” • 문장 후보들을 tree로 표시 • 문장 생성 확률을 edge 두께로 표시 • 직접 문장 후보 생성 가능
  • 35. Interactive Beam Search 입력: “As a bass player, he is known for his highly distinctive tone and phrasing.” • 문장 후보들을 tree로 표시 • 문장 생성 확률을 edge 두께로 표시 • 직접 문장 후보 생성 가능
  • 36. • Attention 시각화는 평소에는 숨기고, • Node를 클릭하면 그 node의 attention을 시각화 • Attention과 단어 생성을 연계하여 분석 가능 • “bass”와 “he”에 높은 attention이 주어졌으므로 “베이스”와 “그”가 생성 Beam Search + Attention 관찰
  • 37. • 그렇다면 attention weight를 수정하면 어떤 결과가 발생할까? • 가령 “he”의 attention을 0.073에서 0으로 바꾸면 생성 후보에서 “그”가 어떤 영향을 받을까? Beam Search + Attention 관찰
  • 38. Interactive Attention Manipulation • Attention weight를 마우스로 클릭하여 조작하면 • NMT는 새로 바뀐 weight로 생성 확률을 계산하고 • 그 결과가 화면에 바로 등장
  • 39. 입력 ”As a bass player, he is known for …” 문장 첫 단어를 생성해야 하는 상황 문장 후보 1: “그는 베이스 연주자로서 …” 문장 후보 2: ”베이스 연주자로서 그는 …”
  • 40. “he”의 weight를 줄이면 “그”의 생성 확률이 줄어듭니다
  • 41. 반대로 “bass” weight를 키우면 “저음”(bass note)이나 “농어”(물고기 bass)가 등장합니다
  • 42. 마찬가지로, “known”의 weight를 키우면 “유명”, “알려진”의 생성 확률 증가
  • 43. “distinctive tone” -> “독특한 음색”의 “음색” 부분을 생성하는 단계
  • 44. ”distinctive” 정보를 삭제하면 “음색”보다 “어조”를 선호합니다 NMT가 “distinctive”에 attention을 둔 이유는 거기에 음악 맥락이 들어있어 “음색”이라고 정확히 번역할 수 있기 때문 “distinctive tone” -> “독특한 음색”의 “음색” 부분을 생성하는 단계
  • 45. Interactive Attention Manipulation • 처음 시도했던 시각화 방법들은 수동적이었습니다 • Attention weight를 관찰하거나, t-SNE 결과를 관찰하거나 • 쉬운 패턴들만 이해할 수 있었고 세부적인 동작을 이해하는 건 무리 • 뉴럴넷 중간 값을 능동적으로 조작하면 빠른 이해가 가능합니다 • ”왜 이런 동작을 할까?”가 궁금하면 다른 동작을 시켜보면 됩니다
  • 46. Automatic Attention Manipulation • Attention weight를 조작하면 단어 생성 확률을 마음대로 조정할 수 있는데, • 그렇다면 반대로 “베이스”의 확률을 높이도록 weight를 자동조작해보면 어떨까? • Gradient ascent로 weight를 최적화하도록 구현 ?
  • 47. 입력: ”As a bass player, he is known for …” 출력: ”베이스 연주자로서 그는 …” 혹은 “그는 베이스 연주자로서 …”
  • 48. 입력: ”As a bass player, he is known for …” 출력: ”베이스 연주자로서 그는 …” 혹은 “그는 베이스 연주자로서 …” “베이스” 확률을 높이도록 attention 최적화 “bass” weight가 높아지고, “he” weight가 낮아지면서 후보에서 “그”가 사라지는 효과
  • 49. 입력: ”As a bass player, he is known for …” 출력: ”베이스 연주자로서 그는 …” 혹은 “그는 베이스 연주자로서 …” 이번엔 “그” 확률을 높이도록 attention 최적화 아까와 반대로 “he” weight가 높아지고 “bass” weight가 낮아지는 결과
  • 50. 입력: ”As a bass player, he is known for …” 출력: ”베이스 연주자로서 그는 …” 혹은 “그는 베이스 연주자로서 …” “저음” 확률을 높이도록 attention을 최적화하면 “bass”와 함께 “tone”의 weight가 증가 “저음”이라는 단어를 만들려면 “bass tone”이라는 두 정보를 조합해야 하기 때문
  • 51. 같은 방법으로, 특정 문장이 주어졌을 때 attention weight를 최적화
  • 52. Automatic Attention Manipulation • NMT는 여러 문장을 동시에 생성하기 때문에, 영어-한국어처럼 번역 후보가 다양한 경우 attention을 해석하기 어렵습니다 • 번역 문장을 하나 고른 다음, 그 문장을 위한 새로운 attention을 만들면 더 나은 해석이 가능해집니다
  • 53. 구현 사항 • NMT 서버: TensorFlow/Theano + Flask • 수동 expand 가능한 beam search 구현 • attention weight를 사용자가 바꿀 수 있게 NMT 아키텍처 수정 • 프론트엔드: JavaScript, d3.js • NMT 서버와 JSON 통신
  • 55. 결론 • NMT 내부의 거대한 계산 과정을 이해하기 위해, • 눈으로 쉽게 이해할 수 있는 시각화 방법들을 • 손으로 쉽게 조작할 수 있도록 조합하여 • 인터랙티브하게 실시간으로 조작하는 분석 기법을 소개했습니다 • 내 뉴럴넷 모델에는 어떻게 응용할 수 있을까? • 어떤 레이어를 뜯어보면 좋을까? • 눈으로 이해 가능하고 손으로 조작 가능한 입출력 범위를 찾는 것이 핵심 • d3.js를 이용하면 빠르게 시각화/인터랙션 툴을 만들 수 있어요 더 자세한 내용은 “Interactive Visualization and Manipulation of Attention-based NMT”, EMNLP 2017 System Demo Track