2018년 12월 17일 월요일

논문 설명 - ELMo : Deep contextualized word representations

Deep contextualized word representations (NAACL 2018)
ELMo : Embedding from Language Model


논문 링크 : https://arxiv.org/abs/1802.05365

요약 : 

기존의 Word2Vec, Glove 등에 비해 context 정보를 반영하는 향상된 Pre-training 방법 제시.
여러 층의 Bidirectional LSTM을 이용해 Language Modeling을 하며, 이 때 만들어진 hidden state들을 적절히 조합해 새로운 word representation을 만들어낸다.
새로운 representation을 여러 NLP Task들을 위한 Network의 입력 단에 concatenate(예를 들어 [Word2vec;ELMo]) 하면 여러 NLP Task들의 SOTA를 뛰어넘을 수 있다.


1. 서론

이 논문은 Syntatic, Semantic(문법적, 의미적) 정보를 잘 반영하며, 동음이의어 같은 문맥 정보를 잘 반영하는 word representation을 얻을 수 있는 pre-training 방법을 제시한다. ELMo를 통해 문장 내의 다른 단어들의 정보(context)를 반영하는 representation을 얻을 수 있다. 기존의 방법들과는 다르게 Top level의 LSTM 정보만을 이용하지 않고, 각 level의 hidden state들을 조합해서 새로운 단어 representation을 만들어 낸다.

2. 모델 구조 및 설명

Pre training을 위한 모델의 구조는 Jozefowicz et al.의 CNN-BIG-LSTM 구조를 사용했다고 한다. 이 모델의 구조는, LSTM timestep에 각 단어의 vector representation을 입력할 때, character-level CNN을 이용하며, 2 층의 LSTM Layer를 쓰는 구조이다. 그리고 LSTM과 LSTM의 사이에 projection layer가 들어가 있다.

2-1. Pre-training 단계

모델의 구조는 아래의 그림과 같다.
원본 출처 : http://hugrypiggykim.com/2018/06/08/elmo-deep-contextualized-word-representations/

Input의 형태는 character 기반 CNN으로 embedding한 vector를 사용한다.
구조는 아래 그림과 같다. 사용된 필터의 개수가 word embedding vector의 사이즈가 된다. (Elmo 논문에서 character의 embedding 사이즈를 얼마로 했는지는 찾지 못했다.)

LSTM과 LSTM 있는 projection layer란 개념은 Long Short-Term Memory Recurrent Neural Network Architectures for Large Scale Acoustic Modeling 이란 논문에서 나왔다. Parameter로 쓰이는 matrix의 크기를 줄일 수 있다는 효과가 있는 것 같다.

위의 예시처럼 LSTM의 output인 크기 4096 vector를 projection layer 없이 다음 LSTM의 입력으로 쓴다고 하면 4096*4096의 matrix가 필요하다.
하지만 중간에 512 차원의 projection layer를 넣으면 4096*512 matrix가 2개 필요하고(LSTM =>projection, projection=>LSTM), 결과적으로 4096*1024 만큼의 parameter 수를 갖게 되어 그만큼 크기를 줄일 수 있다.

이렇게 만들어진 projection vector를 output layer로 넘기게 되며, 이 때도 4096*D(output layer size)가 아닌 512*D 만큼의 matrix를 쓰면 되므로, 파라미터의 수를 줄일 수 있다.

학습 방법은 평범한 language modeling과 같다.

Loss function의 윗줄은 forward LSTM을 이용한 language modeling으로, t1 ~ tk-1까지의 단어들로 tk에 올 단어를 예측하기 위한 학습이다. 아랫줄은 backward로 tN에서부터 tk+1까지의 단어들로 tk에 올 단어를 예측하기 위한 학습이다.

위의 Loss function을 이용하여 pre-training을 하고 나면, 실제 task를 수행할 때 Elmo representation을 사용할 준비가 끝난다.

2-2. Elmo의 사용

이제 sentence classification, sentiment analysis 등의 task에 Elmo representation을 사용할 차례다. 사용하는 방법은 아래와 같다.

어떤 Task의 input sentence에 "is"란 단어가 있고, 이 단어에 대한 representation을 얻는다고 생각해보자. Rk의 구성 요소들을 살펴보면, xk은 LSTM의 입력으로 사용된 단어의 representation을 의미하고, h=>1, h<=1, h=>2, h<=2 는 각 LSTM의 projection layer에서 얻어진 forward, backward 방향의 representation을 의미한다.

여기서 Elmo가 context를 반영하는 word representation을 구해낸다는 것을 알 수 있다. Elmo의 구조를 나타내는 첫번째 이미지에 사용된 문장을 예로 들면, "small cat is"란 문장을 입력했을 때 얻어지는 "is"에 대한 projection vector들은 "My contribution is ..."을 입력했을 때 얻어지는 "is"에 대한 projection vector들과 다르다. "is" 전까지 입력된 단어들이 달라 LSTM과 projection layer가 다른 값을 갖기 때문이다. 

이렇게 얻은 ELMo representation은 실제 task를 위한 모델의 입력 벡터에 concatenate 되어 사용된다.

기본적으로 Input word embedding에 concatenate되지만, output vector에도 concatenate하면 좋은 결과를 내는 task도 있다고 한다.

위와 같이 각 단어에 대한 ELMo representation을 얻을 때는 ELMo 모델의 weight들을 고정시킨다.

3. 실험 결과



결과가 좋았다고 한다..........


위의 표는 Glove를 통해 얻은 "play"에 대한 벡터와 ELMo를 통해 얻은 "play"에 대한 벡터를 비교한 표이다. Glove는 단어의 representation이 고정되어 있기 때문에 play처럼 여러 뜻을 갖고 있는 단어의 경우 여러 의미를 단어 representation에 담기 어렵다.

하지만 biLM(ELMo)의 경우, LSTM의 이전 step에 입력된 단어에 따라 현재 단어에 해당되는 projection vector들이 변하기 때문에 context에 따라 얻어지는 "play"에 대한 벡터가 다르다. 첫번째 source 문장을 통해 얻어진 "play"의 벡터는 운동 경기에 대한 의미를 나타내어야 하는데, 오른쪽 nearest neighbor를 구해봤을 때 두 "play"의 의미가 비슷하다는 것을 알 수 있다. 반면 두번째 source 문장은 연극에 대한 의미를 반영하는 것을 볼 수 있다.

이 외에도 첫번째 projection layer를 통해 얻어진 벡터들은 주로 syntatic한 의미를 내포하고 있으며, 두번째 layer를 통해 얻어진 벡터들은 좀 더 semantic한 특징을 잡아낸다고 한다.

2018년 12월 11일 화요일

스탠포드 프로젝트 페이지

Stanford의 cs224n : Natural language processing for deep learning 을 듣는 학생들이 한 기말 프로젝트들을 모아 놓은 사이트가 있다.
http://web.stanford.edu/class/cs224n/reports.html

물론 학술대회나 저널에 실린 것보다는 퀄리티가 떨어지겠지만 그래도 좋은 아이디어를 얻을 수 있을 것 같다.

2018년 11월 17일 토요일

20181117 일기

1. 잘 해야겠다.
스포츠 뉴스에서 여자 축구 경기 결과에 대한 뉴스를 보내줬다.
문득, "저 사람들에게 선수들에게 축구는 어떤 의미일까"란 생각이 들었다.
그리고 이어서, 선수들이 축구에 최선을 다하고 있든지, 즐기고 있든지 나는 여자 축구에 별 관심이 없다는 사실이 좀 안타깝게 느껴졌다.
여자 축구를 보면서 이런 생각을 했다는 게 좀 웃길 수 있다.
그동안 내가 너무 즐기는 거에 대해 중점을 뒀던 것 같다는 생각이 들었다.
실제로 재밌기도 하고. 근데 즐기고 있다고 안주하면 안 되겠다고 생각했다.
결론적으로, 잘 해야겠다 라는 생각이 들었다.
(아이유 느낌?ㅋㅋ)

2. 소중한 것
문득 소중하게 느껴지는 것들이 별로 없다는 생각이 들었다.
왜 그럴까 이유를 생각해봤다.
그랬더니, 내가 준 게 별로 없어서 그런가 하는 생각이 들었다.

3. 당연하게 여겨지는 것들
언젠가부터 놀랄 일이 없어졌다는 느낌을 받았다.
누군가가 뭔가를 해서, 열심히 해서, 우연히 겹쳐서, 자연 법칙에 의해서, 결국 무언가가 일어나게 했으니 이런 일이 일어났다는 생각이 굳어졌다.

핑계겠지만 코딩하다 보니 (내가...) 딱 하라고 한 일만 하는 컴터를 봐서 그런 거 같다ㅋㅋㅋ
생각보다 더 잘하는 경우가 없다.
좀 알아서 잘 해주면 감동받을 텐데.
근데 나는 멍청한 컴터에 지능을 심고 있다니

4. 교회에서 보는 행복한 모습
(우리) 같은 교회 사람들이 교회에서 행복하고 즐거운 표정으로 있는 걸 본 기억이 별로 없는 것 같다...
기분 탓인가? 앞으로 좀 유심히 봐야겠다.
와야 되지 않으면 안 오는 곳.

2018년 10월 28일 일요일

Machine Learning, AI Researcher, Engineer 면접 질문, 구직 과정 정리

주요 회사들의 Machine Learning, AI Researcher, Engineer 포지션에 지원하면서 겪게 된 일들을 정리해 보려고 합니다.

0. 참고용으로 쓰는 저의 상태
한양대 컴공 석사 졸
논문 1편, 산학 프로젝트 1개, 개인연구 1개

1. 서류 전형
서류 전형은 이력서를 그렇게 공들여 쓴 게 아님에도 불구하고 다 합격했습니다.

2. 코딩 테스트
보통 Codility를 통해서 봅니다.
Programmers 쓰는 곳도 있긴 합니다.
난이도는 그렇게 어렵지 않았습니다.
특히 Codility 테스트는 삼성전자 코딩 테스트 통과할 정도면 대부분 합격할 것 같고, Programmers에는 어려운 문제가 한 개 정도 있었습니다.
그런데 코딩 테스트에서 모든 문제를 100% 다 맞추지 못해도 합격시켜주는 것 같습니다.
Codility를 통해 한 군데 코딩 테스트를 볼 때 1번 문제가 SQL 문제여서 당황(SQL 잘 못해서... 나중에 공부함 ㅋㅋ) + 오기(웬지 될 거 같은 쓸데 없는 자신감?) 때문에 결국 1번 문제는 풀지도 못하고, 2번문제 풀고, 3번 코딩하다 끝났는데(핵심 로직은 거의 다 쓴 듯) 합격시켜주더라고요.
당연히 떨어진 줄 알았는데...
SQL 문제는 이 때 처음이자 마지막으로 봤습니다.

어떤 데는 추가적으로 논문 구현 코딩 테스트를 요구하기도 합니다.

3. 1차 면접
면접 질문은 보통 4가지 정도로 나눌 수 있을 것 같습니다.
질문 외에 포트폴리오나, 제시하는 논문에 대한 ppt 발표를 시키는 곳도 있습니다.

3-1. 포트폴리오에 대한 질문
어떤 연구를 했는지에 대해 기본적으로 질문합니다.
연구 내용에 대해 당연히 잘 설명해야겠죠.
하지만 중요한 건, 왜 이 문제를 풀기로 했고, 왜 그런 방법을 선택했냐? 라는 질문에 대답을 잘 해야 할 것입니다.
사실 연구가 끝난 시점에서 대학원에서 교수님이 시키는 일을 그냥 했다던지 하면 첫번째 질문에 대해서는 크게 할 말은 없겠지만 그래도 포장?을 잘 해야겠죠.
두번째 질문도 그 당위성을 잘 설명해야할 것입니다.
그래야 앞으로 회사에 들어가서도 올바른 방향으로 연구 개발을 할 것이라 생각을 하겠죠.

3-2. 지식에 대한 질문
확률 통계, 선형대수, 머신 러닝, 딥러닝 모델 등의 개념을 알고 있는지 물어봅니다.
이건 그냥 키워드, 단어 형식으로 정리하겠습니다.
Likelihood란?
Maximum Likelihood estimation과 Maximum A Posteriori estimation의 차이?
Logistic Regression이란?
Linear Regression이란? 푸는 방법 2가지 - 선형대수적 방법, Gradient Descent

SVD란?
SVD의 차원 죽소에 쓰이는 3가지 방법?
Bayesian Rule?
SVM이란?
Conditional Random Field가 뭔지?
Hidden Markov Model?

KL divergence?
Validation set과 Test set을 나누는 이유?
Generative model과 Discriminative model의 차이?
Bayesian Inference?

Dropout?
Normalization 아는 것?
Dilated CNN?
Attention이란?
Memory Network?
Transformer?
Self Attention을 활용한 다른 논문들을 아는지?
인상 깊었던 논문?
최근 읽은 Gan 논문?
Highway network?
Elmo?
World model?


3-3. 문제를 주고 답하게 하는 질문
음... 이건 좀 공개적으로 적기 힘들 것 같습니다^^

3-4. 이력 자체, 인성에 대한 질문
왜 지원했는지? (게임 회사의 경우 왜 게임 회사에 지원했는지를 거의 물어봤던 것 같습니다. + 어떤 게임 좋아하는지, 인공지능을 게임에 어떻게 응용할 수 있을까)
어떤 일을 하고 싶은지?
연구와 개발 어느 쪽에 더 맞는지?
시키는 일을 하고 싶은지, 원하는 일을 찾아서 하는지?
논문 쓰면서 힘들었던 점?
논문 구현은 얼마나 해 봤는지?
왜 Tensorflow를 썼는지(vs PyTorch, Caffe 등)
현재 나와 있는 챗봇, 인공지능 스피커를 쓰고 느낀 점, 개선점?
갈등이 있을 때 어떻게 대처할 것인지?
협업한 경험?
개발 잘 하는지? (질문의 의도가 뭔지.... ㅋㅋㅋ)

2018년 9월 26일 수요일

What is relation extraction? Application, Description


Relation extraction plays an important role in extracting structured information from unstructured sources such as raw text. For example, interactions between drugs, understanding scene, relationships among people.
http://deepdive.stanford.edu/relation_extraction

TAC KBP SF - Text Analysis Conference Knowledge Base Population Slot Filling
by US National Institute of Standards and Technology
goal of KBP : populating knowledge bases from unstructured text.
slot filling : to search the document collection to fill in values for specific attributes("slots") for specific entities.

2018년 9월 25일 화요일

Recent Relation Extraction Papers

ACL 2018

A Walk-based Model on Entity Graphs for Relation Extraction
ACE 2005

DSGAN: Generative Adversarial Training for Distant Supervision Relation Extraction

Robust Distant Supervision Relation Extraction via Deep Reinforcement Learning


EMNLP 2018

Extracting Entities and Relations with Joint Minimum Risk Training
ACE 2005

Multi-Level Structured Self-Attentions for Distantly Supervised Relation Extraction
distant supervision

Hierarchical Relation Extraction with Coarse-to-Fine Grained Attention

Large-scale Exploration of Neural Relation Classification Architectures

Neural Relation Extraction via Inner-Sentence Noise Reduction and Transfer Learning

Multi-Task Identification of Entities, Relations, and Coreference for Scientific Knowledge Graph Construction

RESIDE: Improving Distantly-Supervised Neural Relation Extraction using Side Information

Graph Convolution over Pruned Dependency Trees Improves Relation Extraction
SEMEVAL 2010, TACRED


EMNLP 2017

Adversarial Training for Relation Extraction
NYT

A Soft-label Method for Noise-tolerant Distantly Supervised Relation Extraction
Distant supervision, Freebase, P@N

Position-aware Attention and Supervised Data Improve Slot Filling
TACRED


==================================================
Position-aware Self-attention with Relative Positional Encodings for Slot Filling