SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

코로나19로 인해 변화된 우리 시대의 데이터 트랜드
코로나19로 인해 변화된 우리 시대의 데이터 트랜드코로나19로 인해 변화된 우리 시대의 데이터 트랜드
코로나19로 인해 변화된 우리 시대의 데이터 트랜드Yongho Ha
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장Dylan Ko
 
[261] 실시간 추천엔진 머신한대에 구겨넣기
[261] 실시간 추천엔진 머신한대에 구겨넣기[261] 실시간 추천엔진 머신한대에 구겨넣기
[261] 실시간 추천엔진 머신한대에 구겨넣기NAVER D2
 
성장을 좋아하는 사람이, 성장하고 싶은 사람에게
성장을 좋아하는 사람이, 성장하고 싶은 사람에게성장을 좋아하는 사람이, 성장하고 싶은 사람에게
성장을 좋아하는 사람이, 성장하고 싶은 사람에게Seongyun Byeon
 
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)Jaikwang Lee
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유Hyojun Jeon
 
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지Changje Jeong
 
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기CONNECT FOUNDATION
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)Hyojun Jeon
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)Heungsub Lee
 
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례Hwanhee Kim
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?흥배 최
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
 
MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용흥배 최
 
Elasticsearch勉強会#39 LT 20201217
Elasticsearch勉強会#39 LT 20201217Elasticsearch勉強会#39 LT 20201217
Elasticsearch勉強会#39 LT 20201217Tetsuya Sodo
 
로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법Jeongsang Baek
 
인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템NAVER D2
 
AI 연구자를 위한 클린코드 - GDG DevFest Seoul 2019
AI 연구자를 위한 클린코드 - GDG DevFest Seoul 2019AI 연구자를 위한 클린코드 - GDG DevFest Seoul 2019
AI 연구자를 위한 클린코드 - GDG DevFest Seoul 2019Kenneth Ceyer
 
프리토타이핑 - 완벽한 우리의 아이디어, 시장에서 바로 테스트하기
프리토타이핑 - 완벽한 우리의 아이디어,  시장에서 바로 테스트하기프리토타이핑 - 완벽한 우리의 아이디어,  시장에서 바로 테스트하기
프리토타이핑 - 완벽한 우리의 아이디어, 시장에서 바로 테스트하기Hyun-Tae Hwang
 
어떻게 하면 데이터 사이언티스트가 될 수 있나요?
어떻게 하면 데이터 사이언티스트가 될 수 있나요?어떻게 하면 데이터 사이언티스트가 될 수 있나요?
어떻게 하면 데이터 사이언티스트가 될 수 있나요?Yongho Ha
 

Tendances (20)

코로나19로 인해 변화된 우리 시대의 데이터 트랜드
코로나19로 인해 변화된 우리 시대의 데이터 트랜드코로나19로 인해 변화된 우리 시대의 데이터 트랜드
코로나19로 인해 변화된 우리 시대의 데이터 트랜드
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
 
[261] 실시간 추천엔진 머신한대에 구겨넣기
[261] 실시간 추천엔진 머신한대에 구겨넣기[261] 실시간 추천엔진 머신한대에 구겨넣기
[261] 실시간 추천엔진 머신한대에 구겨넣기
 
성장을 좋아하는 사람이, 성장하고 싶은 사람에게
성장을 좋아하는 사람이, 성장하고 싶은 사람에게성장을 좋아하는 사람이, 성장하고 싶은 사람에게
성장을 좋아하는 사람이, 성장하고 싶은 사람에게
 
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
 
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
 
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
 
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
 
MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용
 
Elasticsearch勉強会#39 LT 20201217
Elasticsearch勉強会#39 LT 20201217Elasticsearch勉強会#39 LT 20201217
Elasticsearch勉強会#39 LT 20201217
 
로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법
 
인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템
 
AI 연구자를 위한 클린코드 - GDG DevFest Seoul 2019
AI 연구자를 위한 클린코드 - GDG DevFest Seoul 2019AI 연구자를 위한 클린코드 - GDG DevFest Seoul 2019
AI 연구자를 위한 클린코드 - GDG DevFest Seoul 2019
 
프리토타이핑 - 완벽한 우리의 아이디어, 시장에서 바로 테스트하기
프리토타이핑 - 완벽한 우리의 아이디어,  시장에서 바로 테스트하기프리토타이핑 - 완벽한 우리의 아이디어,  시장에서 바로 테스트하기
프리토타이핑 - 완벽한 우리의 아이디어, 시장에서 바로 테스트하기
 
어떻게 하면 데이터 사이언티스트가 될 수 있나요?
어떻게 하면 데이터 사이언티스트가 될 수 있나요?어떻게 하면 데이터 사이언티스트가 될 수 있나요?
어떻게 하면 데이터 사이언티스트가 될 수 있나요?
 

En vedette

[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
 
[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
 
웨일브라우저 성능 및 메모리 최적화
웨일브라우저 성능 및 메모리 최적화웨일브라우저 성능 및 메모리 최적화
웨일브라우저 성능 및 메모리 최적화NAVER D2
 

En vedette (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 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼
 
[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]네이버 검색 사용자를 만족시켜라! 의도파악과 의미검색
 
웨일브라우저 성능 및 메모리 최적화
웨일브라우저 성능 및 메모리 최적화웨일브라우저 성능 및 메모리 최적화
웨일브라우저 성능 및 메모리 최적화
 

Plus de 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
 

Plus de 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인가?
 

Dernier

도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'Hyundai Motor Group
 
[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and AdoptionSeung-chan Baeg
 
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
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
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
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Wonjun Hwang
 
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
 

Dernier (7)

도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
 
[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption
 
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
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
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)
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
 
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 ...
 

[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