SlideShare ist ein Scribd-Unternehmen logo
1 von 55
실시간 조작을 통한
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로 계산해보자!
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

Weitere ähnliche Inhalte

Was ist angesagt?

오토인코더의 모든 것
오토인코더의 모든 것오토인코더의 모든 것
오토인코더의 모든 것NAVER Engineering
 
나의 이직 이야기
나의 이직 이야기나의 이직 이야기
나의 이직 이야기종립 이
 
개발자 이승우 이력서 (2016)
개발자 이승우 이력서 (2016)개발자 이승우 이력서 (2016)
개발자 이승우 이력서 (2016)SeungWoo Lee
 
스타트업 데이터분석 - 퍼널분석과 코호트분석
스타트업 데이터분석 - 퍼널분석과 코호트분석스타트업 데이터분석 - 퍼널분석과 코호트분석
스타트업 데이터분석 - 퍼널분석과 코호트분석Seonggwan Lee
 
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)WON JOON YOO
 
Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리Jeong-gyu Kim
 
인프런 - 스타트업 인프랩 시작 사례
인프런 - 스타트업 인프랩 시작 사례인프런 - 스타트업 인프랩 시작 사례
인프런 - 스타트업 인프랩 시작 사례Hyung Lee
 
신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]Yurim Jin
 
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)Seongyun Byeon
 
오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습BJ Jang
 
Data Engineering 101
Data Engineering 101Data Engineering 101
Data Engineering 101DaeMyung Kang
 
파이콘 한국 2019 튜토리얼 - LRP (Part 2)
파이콘 한국 2019 튜토리얼 - LRP (Part 2)파이콘 한국 2019 튜토리얼 - LRP (Part 2)
파이콘 한국 2019 튜토리얼 - LRP (Part 2)XAIC
 
Prometheus in Practice: High Availability with Thanos (DevOpsDays Edinburgh 2...
Prometheus in Practice: High Availability with Thanos (DevOpsDays Edinburgh 2...Prometheus in Practice: High Availability with Thanos (DevOpsDays Edinburgh 2...
Prometheus in Practice: High Availability with Thanos (DevOpsDays Edinburgh 2...Thomas Riley
 
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요Yongho Ha
 
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵NAVER Engineering
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advanceDaeMyung Kang
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Yongho Ha
 
어서 와! 번역은 처음이지?
어서 와! 번역은 처음이지?어서 와! 번역은 처음이지?
어서 와! 번역은 처음이지?복연 이
 
중니어의 고뇌: 1인분 개발자, 다음을 찾아서
중니어의 고뇌: 1인분 개발자, 다음을 찾아서중니어의 고뇌: 1인분 개발자, 다음을 찾아서
중니어의 고뇌: 1인분 개발자, 다음을 찾아서Yurim Jin
 
Git을 조금 더 알아보자!
Git을 조금 더 알아보자!Git을 조금 더 알아보자!
Git을 조금 더 알아보자!Young Kim
 

Was ist angesagt? (20)

오토인코더의 모든 것
오토인코더의 모든 것오토인코더의 모든 것
오토인코더의 모든 것
 
나의 이직 이야기
나의 이직 이야기나의 이직 이야기
나의 이직 이야기
 
개발자 이승우 이력서 (2016)
개발자 이승우 이력서 (2016)개발자 이승우 이력서 (2016)
개발자 이승우 이력서 (2016)
 
스타트업 데이터분석 - 퍼널분석과 코호트분석
스타트업 데이터분석 - 퍼널분석과 코호트분석스타트업 데이터분석 - 퍼널분석과 코호트분석
스타트업 데이터분석 - 퍼널분석과 코호트분석
 
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
 
Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리
 
인프런 - 스타트업 인프랩 시작 사례
인프런 - 스타트업 인프랩 시작 사례인프런 - 스타트업 인프랩 시작 사례
인프런 - 스타트업 인프랩 시작 사례
 
신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]
 
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
 
오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습
 
Data Engineering 101
Data Engineering 101Data Engineering 101
Data Engineering 101
 
파이콘 한국 2019 튜토리얼 - LRP (Part 2)
파이콘 한국 2019 튜토리얼 - LRP (Part 2)파이콘 한국 2019 튜토리얼 - LRP (Part 2)
파이콘 한국 2019 튜토리얼 - LRP (Part 2)
 
Prometheus in Practice: High Availability with Thanos (DevOpsDays Edinburgh 2...
Prometheus in Practice: High Availability with Thanos (DevOpsDays Edinburgh 2...Prometheus in Practice: High Availability with Thanos (DevOpsDays Edinburgh 2...
Prometheus in Practice: High Availability with Thanos (DevOpsDays Edinburgh 2...
 
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
 
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advance
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
 
어서 와! 번역은 처음이지?
어서 와! 번역은 처음이지?어서 와! 번역은 처음이지?
어서 와! 번역은 처음이지?
 
중니어의 고뇌: 1인분 개발자, 다음을 찾아서
중니어의 고뇌: 1인분 개발자, 다음을 찾아서중니어의 고뇌: 1인분 개발자, 다음을 찾아서
중니어의 고뇌: 1인분 개발자, 다음을 찾아서
 
Git을 조금 더 알아보자!
Git을 조금 더 알아보자!Git을 조금 더 알아보자!
Git을 조금 더 알아보자!
 

Andere mochten auch

[221]똑똑한 인공지능 dj 비서 clova music
[221]똑똑한 인공지능 dj 비서 clova music[221]똑똑한 인공지능 dj 비서 clova music
[221]똑똑한 인공지능 dj 비서 clova musicNAVER D2
 
[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼
[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼
[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼NAVER D2
 
인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템NAVER D2
 
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기NAVER D2
 
[241]large scale search with polysemous codes
[241]large scale search with polysemous codes[241]large scale search with polysemous codes
[241]large scale search with polysemous codesNAVER D2
 
[242]open stack neutron dataplane 구현
[242]open stack neutron   dataplane 구현[242]open stack neutron   dataplane 구현
[242]open stack neutron dataplane 구현NAVER D2
 
[212]big models without big data using domain specific deep networks in data-...
[212]big models without big data using domain specific deep networks in data-...[212]big models without big data using domain specific deep networks in data-...
[212]big models without big data using domain specific deep networks in data-...NAVER D2
 
[223]rye, 샤딩을 지원하는 오픈소스 관계형 dbms
[223]rye, 샤딩을 지원하는 오픈소스 관계형 dbms[223]rye, 샤딩을 지원하는 오픈소스 관계형 dbms
[223]rye, 샤딩을 지원하는 오픈소스 관계형 dbmsNAVER D2
 
[234]멀티테넌트 하둡 클러스터 운영 경험기
[234]멀티테넌트 하둡 클러스터 운영 경험기[234]멀티테넌트 하둡 클러스터 운영 경험기
[234]멀티테넌트 하둡 클러스터 운영 경험기NAVER D2
 
[246]reasoning, attention and memory toward differentiable reasoning machines
[246]reasoning, attention and memory   toward differentiable reasoning machines[246]reasoning, attention and memory   toward differentiable reasoning machines
[246]reasoning, attention and memory toward differentiable reasoning machinesNAVER D2
 
[213]building ai to recreate our visual world
[213]building ai to recreate our visual world[213]building ai to recreate our visual world
[213]building ai to recreate our visual worldNAVER D2
 
[215]streetwise machine learning for painless parking
[215]streetwise machine learning for painless parking[215]streetwise machine learning for painless parking
[215]streetwise machine learning for painless parkingNAVER D2
 
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화NAVER D2
 
[213] 의료 ai를 위해 세상에 없는 양질의 data 만드는 도구 제작하기
[213] 의료 ai를 위해 세상에 없는 양질의 data 만드는 도구 제작하기[213] 의료 ai를 위해 세상에 없는 양질의 data 만드는 도구 제작하기
[213] 의료 ai를 위해 세상에 없는 양질의 data 만드는 도구 제작하기NAVER D2
 
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스NAVER D2
 
[232]mist 고성능 iot 스트림 처리 시스템
[232]mist 고성능 iot 스트림 처리 시스템[232]mist 고성능 iot 스트림 처리 시스템
[232]mist 고성능 iot 스트림 처리 시스템NAVER D2
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)NAVER D2
 
유연하고 확장성 있는 빅데이터 처리
유연하고 확장성 있는 빅데이터 처리유연하고 확장성 있는 빅데이터 처리
유연하고 확장성 있는 빅데이터 처리NAVER D2
 
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술NAVER D2
 
[216]네이버 검색 사용자를 만족시켜라! 의도파악과 의미검색
[216]네이버 검색 사용자를 만족시켜라!   의도파악과 의미검색[216]네이버 검색 사용자를 만족시켜라!   의도파악과 의미검색
[216]네이버 검색 사용자를 만족시켜라! 의도파악과 의미검색NAVER D2
 

Andere mochten auch (20)

[221]똑똑한 인공지능 dj 비서 clova music
[221]똑똑한 인공지능 dj 비서 clova music[221]똑똑한 인공지능 dj 비서 clova music
[221]똑똑한 인공지능 dj 비서 clova music
 
[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼
[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼
[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼
 
인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템
 
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
 
[241]large scale search with polysemous codes
[241]large scale search with polysemous codes[241]large scale search with polysemous codes
[241]large scale search with polysemous codes
 
[242]open stack neutron dataplane 구현
[242]open stack neutron   dataplane 구현[242]open stack neutron   dataplane 구현
[242]open stack neutron dataplane 구현
 
[212]big models without big data using domain specific deep networks in data-...
[212]big models without big data using domain specific deep networks in data-...[212]big models without big data using domain specific deep networks in data-...
[212]big models without big data using domain specific deep networks in data-...
 
[223]rye, 샤딩을 지원하는 오픈소스 관계형 dbms
[223]rye, 샤딩을 지원하는 오픈소스 관계형 dbms[223]rye, 샤딩을 지원하는 오픈소스 관계형 dbms
[223]rye, 샤딩을 지원하는 오픈소스 관계형 dbms
 
[234]멀티테넌트 하둡 클러스터 운영 경험기
[234]멀티테넌트 하둡 클러스터 운영 경험기[234]멀티테넌트 하둡 클러스터 운영 경험기
[234]멀티테넌트 하둡 클러스터 운영 경험기
 
[246]reasoning, attention and memory toward differentiable reasoning machines
[246]reasoning, attention and memory   toward differentiable reasoning machines[246]reasoning, attention and memory   toward differentiable reasoning machines
[246]reasoning, attention and memory toward differentiable reasoning machines
 
[213]building ai to recreate our visual world
[213]building ai to recreate our visual world[213]building ai to recreate our visual world
[213]building ai to recreate our visual world
 
[215]streetwise machine learning for painless parking
[215]streetwise machine learning for painless parking[215]streetwise machine learning for painless parking
[215]streetwise machine learning for painless parking
 
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
 
[213] 의료 ai를 위해 세상에 없는 양질의 data 만드는 도구 제작하기
[213] 의료 ai를 위해 세상에 없는 양질의 data 만드는 도구 제작하기[213] 의료 ai를 위해 세상에 없는 양질의 data 만드는 도구 제작하기
[213] 의료 ai를 위해 세상에 없는 양질의 data 만드는 도구 제작하기
 
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
 
[232]mist 고성능 iot 스트림 처리 시스템
[232]mist 고성능 iot 스트림 처리 시스템[232]mist 고성능 iot 스트림 처리 시스템
[232]mist 고성능 iot 스트림 처리 시스템
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)
 
유연하고 확장성 있는 빅데이터 처리
유연하고 확장성 있는 빅데이터 처리유연하고 확장성 있는 빅데이터 처리
유연하고 확장성 있는 빅데이터 처리
 
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
 
[216]네이버 검색 사용자를 만족시켜라! 의도파악과 의미검색
[216]네이버 검색 사용자를 만족시켜라!   의도파악과 의미검색[216]네이버 검색 사용자를 만족시켜라!   의도파악과 의미검색
[216]네이버 검색 사용자를 만족시켜라! 의도파악과 의미검색
 

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

Word 2 Vec Algorithm
Word 2 Vec AlgorithmWord 2 Vec Algorithm
Word 2 Vec AlgorithmHyeongmin Lee
 
딥러닝 기반 자연어 언어모델 BERT
딥러닝 기반 자연어 언어모델 BERT딥러닝 기반 자연어 언어모델 BERT
딥러닝 기반 자연어 언어모델 BERTSeonghyun Kim
 
Natural Language Processing(NLP) - Basic
Natural Language Processing(NLP) - BasicNatural Language Processing(NLP) - Basic
Natural Language Processing(NLP) - BasicKyeongUkJang
 
Open domain dialogue Chatbot(잡담봇 삽질기)
Open domain dialogue Chatbot(잡담봇 삽질기)Open domain dialogue Chatbot(잡담봇 삽질기)
Open domain dialogue Chatbot(잡담봇 삽질기)NAVER Engineering
 
[224] backend 개발자의 neural machine translation 개발기 김상경
[224] backend 개발자의 neural machine translation 개발기 김상경[224] backend 개발자의 neural machine translation 개발기 김상경
[224] backend 개발자의 neural machine translation 개발기 김상경NAVER D2
 
파이썬을 활용한 챗봇 서비스 개발 3일차
파이썬을 활용한 챗봇 서비스 개발 3일차파이썬을 활용한 챗봇 서비스 개발 3일차
파이썬을 활용한 챗봇 서비스 개발 3일차Taekyung Han
 

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

Word 2 Vec Algorithm
Word 2 Vec AlgorithmWord 2 Vec Algorithm
Word 2 Vec Algorithm
 
딥러닝 기반 자연어 언어모델 BERT
딥러닝 기반 자연어 언어모델 BERT딥러닝 기반 자연어 언어모델 BERT
딥러닝 기반 자연어 언어모델 BERT
 
Natural Language Processing(NLP) - Basic
Natural Language Processing(NLP) - BasicNatural Language Processing(NLP) - Basic
Natural Language Processing(NLP) - Basic
 
Open domain dialogue Chatbot(잡담봇 삽질기)
Open domain dialogue Chatbot(잡담봇 삽질기)Open domain dialogue Chatbot(잡담봇 삽질기)
Open domain dialogue Chatbot(잡담봇 삽질기)
 
[224] backend 개발자의 neural machine translation 개발기 김상경
[224] backend 개발자의 neural machine translation 개발기 김상경[224] backend 개발자의 neural machine translation 개발기 김상경
[224] backend 개발자의 neural machine translation 개발기 김상경
 
파이썬을 활용한 챗봇 서비스 개발 3일차
파이썬을 활용한 챗봇 서비스 개발 3일차파이썬을 활용한 챗봇 서비스 개발 3일차
파이썬을 활용한 챗봇 서비스 개발 3일차
 

Mehr von NAVER D2

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다NAVER D2
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...NAVER D2
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기NAVER D2
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발NAVER D2
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈NAVER D2
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&ANAVER D2
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기NAVER D2
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep LearningNAVER D2
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applicationsNAVER D2
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingNAVER D2
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지NAVER D2
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기NAVER D2
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화NAVER D2
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)NAVER D2
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기NAVER D2
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual SearchNAVER D2
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화NAVER D2
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지NAVER D2
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터NAVER D2
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?NAVER D2
 

Mehr von NAVER D2 (20)

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual Search
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?
 

Kürzlich hochgeladen

Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 

Kürzlich hochgeladen (6)

Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 

[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로 계산해보자!
  • 23.
  • 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