paper-review

Data2Vec Review

Self supervied learning은 사람이 만든 정답 없이 데이터 자체(self)에서 만들어진 정답(supervised)으로 학습하는 방법이고, 현재 여러 모달리티(이미지, 텍스트, 음성 등)에서 잘 동작하고 있는 아이디어이다. 지금까지 방법론들은 특정 모달리티에 집중하였기 때문에, 각 모달리티별로 학습 방법(objective, algorithm 등)이 다르다. 이를 더 일반적인 방법으로 확장하기 위해 data2vec이라는 self supervised learning 방법을 제안하는 data2vec: A General Framework for Self-supervised Learning in Speech, Vision and Language을 리뷰한다.

9 min read

Vision Transformer Review

Transformer 구조와 self-supervised learning(pretrian -> finetune) 학습법은 여러 NLP 테스크들에서 표준으로 자리잡고 있음. 이러한 성공에 힘입어, 최근에는 Vision 테스크들 에서도 Transformer 구조를 적용 하려는 시도들이 많이 이루어지고 있음. 이번 글에서는 별도의 Convolution 연산 없이, Transformer 구조 만으로 이미지 인식 문제를 풀고자 했던 “An Image Is Worth 16X16 Words:Transformers for Image Recognition at Scale”를 리뷰함.

7 min read

schuBERT Review

BERT기반의 모델들(XLNet, ALBERT 등)은 여러 NLP 테스크에서 좋은 성능을 보여주고 있지만, 이들 각각은 거대한 파라메터들로 구성되어 있습니다. 그래서 리더보드에 등록되어있는 크기의 모델들(일반적으로 Base/Large 모델들)은 서비스에 바로 적용하기에 무리가 있습니다. (BERT의 경우 이를 위해 더 작은 크기의 모델을 공개했습니다.) 최근에는 이를 해결하기위해 다양한 경량화 방법들이 연구되어지고 있는데요, 크게 Knowledge Distillation, Pruning, Quantization 3가지 종류의 방법으로 나눌 수 있습니다. 이번 포스트에서는 새로운 Pruning 방법을 이용하여 BERT 경량화를 진행한 “schuBERT: Optimizing Elements of BERT(ACL 2020)”를 리뷰하겠습니다.

11 min read

UniLM Review

Pre-trained LM은 많은 양의 데이터로 부터 컨텍스트를 반영한 representation을 학습합니다. 이를 통해 NLU-BERT, RoBERTa, NLG-GPT 와 같이 각각의 downstream 테스크에서 좋은 성능을 보여주고 있습니다. 이번 포스트에서는 NLU와 NLG를 함께 pre-train하여 하나의 pre-trained 모델이 각 테스크에 “모두” fine-tuning될 수 있는 방법인 “Unified pre-trained Language Model(UniLM)”를 제시한 논문 “Unified Language Model Pre-training for Natural Language Understanding and Generation (NeurIPS 2019)”를 리뷰하려고 합니다.

7 min read

Transformers for Learning Dialogue Review

이번 글에서는 “Transformers to Learn Hierarchical Contexts in Multiparty Dialogue for Span-based Question Answering”을 리뷰합니다. Transformer 기반의 컨텍스트를 반영한 임베딩을 만드는 접근법들(BERT, RoBERTa, XLNet 등)은 QA의 SOTA를 갱신해왔습니다. 하지만 일반적인 도메인에서 학습된 모델들로 대화를 잘 표현하기는 어렵고, 주어진 대화에 대한 QA 테스크에서 저조한 성능을 보입니다. 이 원인으로 두 가지를 꼽을 수 있습니다. 1) 대화들은 구어체인 반면에 대부분의 모델들은 격식이 갖춰진 문어체로 학습되었습니다. 2) 한 명의 저자가 관련이 있는 토픽에 관해쓴 wiki나 뉴스 기사와 같은 글과 달리 대화는 다른 주제와 각자의 방식을 가진 여려명의 화자들의 발화로 구성됩니다. 따라서 단순히 합치는 방법(concat)을 통해 보다는 내부적으로 서로 연결되어있는 방식의 표현법이 필요합니다. 본 논문에서는 이를 해결하기 위해 멀티파티(여러 명의 화자) 대화에서 “컨텍스트를 더 잘 이해할 수 있는” 토큰과 발화의 계층적 임베딩을 학습하는 Transformer를 제안합니다.

8 min read

XLNet Review

지난 포스트에서 “Transformer-XL”에 대한 리뷰를 진행했었는데요. Language Modeling 테스크에서 장기 의존성 능력을 높이기 위해, Transformer의 제한된 컨텍스트 길이를 recurrence한 구조로 늘려주는 방법이였습니다. 이번 포스트에서는 해당 논문의 후속으로 제안된 “XLNet: Generalized Autoregressive Pretraining for Language Understanding”을 리뷰하려고 합니다. 많은 양의 코퍼스로 Language Modeling에 대한 Pre-training을 진행하고 특정 테스크로 Fine-tuning을 진행하는 방법은 BERT 이후로 NLP 문제를 풀기위한 정석과 같은 방법이 되었습니다. XLNet에서는 BERT와 같이 Masked Language Modeling을 objective로 하는 Autoencoder(AE) 방식과 GPT와 같이 Auto-Regressive(AR) Language Modeling을 objective로 하는 방식의 장점을 유지하면서 단점을 보완하는 새로운 학습 방식을 제안합니다. 또한 Transformer-XL의 recurrence 알고리즘도 함께 적용하여 BERT를 능가하는 성능을 달성합니다. 약 9개월 전에 XLNet 리뷰를 팀블로그에 작성 했는데, 최근에 논문이 업데이트 되어 다시 한 번 공부하면서 글을 작성합니다.

16 min read

Transformer-XL Review

이번 글에서는 ACL 2019에서 발표된 “Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context”를 리뷰하려고 합니다. 본 논문은 기존의 Transformer 구조를 이용한 고정된 길이(Fixed-Length) Language Model의 한계점을 지적하고 더 긴 의존성을 이용할 수 있는 새로운 방법을 제시합니다. 또한 다양한 NLU 테스크들에서 SOTA성능을 보이고 있는 XLNet과 동일한 저자들이 작성하였고, Transformer-XL의 많은 부분을 XLNet에서 이용하고 있습니다.

13 min read

DialogueRNN Review

“Emotion Recognition in Conversation(ERC)”는 대화 내 발화들의 감정을 인식하는 문제입니다. 이 문제는 대화의 히스토리 혹은 쓰레드 형태의 소셜 미디어(유투브, 트위터, 페이스북 등)에서 의견 추출(Opinion mining) 등에서 응용가능성으로 인해, 최근에 많이 주목받고 있습니다. 본 포스트에서는 “화자”, “컨텍스트 발화”, “이전 발화의 감정”의 3가지 요소를 집중적으로 모델링하여 ERC문제를 풀고자 했던 “DialogueRNN: An Attentive RNN for Emotion Detection in Conversations”를 리뷰합니다.

9 min read

Masked Hierarchical Transformer Review

대화는 문어체(위키피디아, 책 등)와 많은 차이점을 갖고 있습니다. 자주 사용되는 어휘, 어투 등 각 발화의 형태적인 차이뿐만 아니라, 두 명 이상의 화자가 서로 상호작용을 함으로써 생기는 구조에서도 큰 차이가 있습니다. 이전 포스트들에서 살펴봤듯이, Transformer 구조 기반의 Self-supervised learning(BERT) 방식의 학습법이 대부분 NLP 테스크들의 최고 성능(State-of-the-art)를 달성했습니다. 하지만 이러한 방식들은 주로 문어체 데이터로 pre-training이 이루어 졌기 때문에 대화에 바로 적용하기 힘듭니다. 이를 위해 다양한 방법이 제시되었는데요, 본 포스트에서는 pre-trained BERT를 이용하여 대화의 구조를 모델링 하고자 한 “Who Did They Respond to? Conversation Structure Modeling Using Masked Hierarchical Transformer”(AAAI 2020) 를 리뷰하려고 합니다.

8 min read

Graph Convolutional Networks Review

이번 EMNLP 2019에서 Graph Neural Network(GNN) 튜토리얼 세션이 진행되었습니다. 그 중 가장 처음으로 소개되었던 Semi-Supervised Classification with Graph Convolutional Network(ICLR 2017)을 살펴보고자 합니다. 본 논문에서는 아래 그림과 같이 그래프와 그래프의 몇몇 노드들에 주어진 레이블을 이용하여 나머지 노드들의 레이블을 예측하는 그래프 노드의 semi-supervised classification 문제를 풀고자 합니다.

6 min read

MT-DNN Review

이번 글에서는 “Multi-Task Deep Neural Networks for Natural Language Understanding”(GLUE 밴치마크 87.6/6등)를 리뷰하려고 합니다. Microsoft Research에서 연구 되었고, 본 논문에서는 BERT구조 기반의 인코더와 Multitask-learning을 동시에 적용하는 방법을 시도했습니다. 결과적으로 Multitask-learning을 통해 서로 다른 테스크를 동시에 optimize 함으로써 언어의 지식을 공유할 수 있다는 것을 증명했습니다.

9 min read

RoBERTa Review

이번 글에서는 “RoBERTa: A Robustly Optimized BERT Pretraining Approach”를(GLUE 벤치마크 88.5/4등)리뷰하려고 합니다. Self-Supervised 기반의 학습 방식은 Pre-training에서 많은 시간/리소스가 소요되기 때문에 BERT 및 이후 접근법들을 엄밀하게 비교하기 힘들고, 어떤 Hyper Parameter가 결과에 많은 영향을 미쳤는지 검증하기 힘듭니다. 본 논문에서는 여러 실험을 통해 데이터의 양 및 Key-Hyperparameter의 영향을 분석합니다.

10 min read

StructBert Review

이번 글에서는 Alibaba Group에서 연구한 “StructBERT: Incorporating Language Structures into Pre-training for Deep Langauge Understanding”를 리뷰하려고 힙니다. 본 논문은 현재 ALBERT에 이어 GLUE 벤치마크 리더보드에서 89.0(2위)의 점수를 얻고 있습니다. 언어의 유창함은 단어와 문장의 순서에 의해 결정되는데, 본 논문에서는 sequential modeling은 “순서”에 대해 주목했습니다. BERT pre-training 단계에서 문장 내부와 문장들 사이 순서의 구조적 정보를 학습할 수 있는 새로운 전략을 제시합니다.

8 min read

ALBERT Review

BERT를 시작으로 NLP의 Imagenet이라 불리며 Self-supervised Learning 방법이 대부분의 NLP task들에서 SOTA(State-of-the-art) 성능을 보여주고 있습니다. 최근에는 BERT의 한계점/문제점들을 분석&해결하여 더 높은 성능을 가지는 모델 및 학습방법들이 연구되고 있습니다. 이번 글에서는 현재(10월 13일기준) Natural Language Understanding의 대표적인 벤치마크인 GLUE(General Language Understanding Evaluation) 리더보드에서 종합 89.4의 점수를 기록하면서 1등을 하고 있는 “ALBERT: A Lite BERT for self-supervised learning of language representations”를 리뷰하려고 합니다. (ICLR 2020 Under review paper)

12 min read

BERT Review

Language model로 pre-training한 후에 특정 테스크에 적용하는 방법은 상당한 효과를 보여주었습니다. 이를 위해서는 두 가지 전략이 주로 이용됩니다. 첫 번째는 pre-training에서 얻어진 representation을 피쳐로 이용하여 특정 테스크의 모델을 학습하는 방법입니다. 즉 두 모델이 분리되어 있는 ELMo가 해당합니다. 두 번째는 pre-training에서 얻어진 모델을 그대로 이용해서(혹은 일부를 추가/변경해서) 특정 테스크의 데이터로 추가 학습(fine-tuning)하는 방법입니다. 즉 일종의 Transfer learning이라고 볼 수 있고 GPT-1, ULMFit 등이 해당합니다. 이번 포스트에서는 후자의 범위에 속하는 새로운 학습법을 제시한 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding를 리뷰합니다.

11 min read
Back to Top ↑

dev

Tensorflow-text로 Sentencepiece 토크나이저 이용하기

이번 포스트에서는 tensorflow-text, tf_sentencepiece 모듈을 이용하여 학습 코드 상에서 토크나이징을 진행하고, 결과 모델을 export하는 과정까지의 경험을 기록한다. tensorflow-text는 텍스트 전처리 과정의 연산들을 Tensorflow 그래프 상에포함할 수 있도록 해주고, tf-sentencepiece는 자연어 처리에서 자주 이용되는 Sentencepiece 토크나이저를 tensorflow-text 토크나이저 형식에 맞춰 쉽게 이용할 수 있도록 해준다.

8 min read

Google Cloud TPU를 이용해서 BERT 학습하기 - (2)

이번 글에서는 TPU를 이용하기 위해 코드레벨에서 어떤 작업들을 수행해야 하는지 알아봅니다. 데이터를 만드는 부분부터, 실제 학습 루프까지 간단한 구현체로 살펴봅니다. Tensorflow2.x 에서는Keras api를 사용하는 것이 공식적으로 권장되면서, 전반적으로 코드 작성이 매우 간편해졌습니다. 또한 학습 환경또한 Strategy 를 이용해 단일 GPU/ 여러 GPU에 걸친 분산 학습 / TPU를 이용한 학습을 간단하게 전환할 수 있습니다. 실제로 TPU학습을 해보면서 참고했던 코드들(ALBERT, BERT, ELECTRA)을 종합하여 유용했던 내용들을 기록합니다.

13 min read

Google Cloud TPU를 이용해서 BERT 학습하기 - (1)

뉴럴넷을 학습하기 위해서 일반적으로 GPU를 이용합니다. 하지만 최근에 많은 양의 데이터를 이용할 뿐만 아니라 엄청난 크기의 모델을 이용하는 연구들이 발표되고 있고, 이들은 GPU로 학습하기에 많은 시간이 소요됩니다. 이를 위해 Google Cloud에서는 TPU(Tensor Processing Unit)라는 연산장치를 제공하고 있고, TPU는 GPU에 비해 엄청난 성능을 보여줍니다. 또한 BERT 등 구글에서 공개한 많은 모델들은 이를 이용하여 학습되었습니다. TPU 자체에 대한 자세한 내용은 얼마전에 핑퐁팀 블로그의 포스트를 참고하면 더 많은 정보를 얻을 수 있습니다. 이번 포스트부터 3개의 포스트로 나누어 실제로 TPU를 이용해 모델을 학습하면서 경험했던 내용을 기록하려고 합니다.

3 min read

Einsum 사용하기

Torch나 Tensorflow로 짜여진 코드들을 보다보면 einsum() 연산이 포함되어 있는 경우를 볼 수 있습니다. 아주 가끔 보이는 방법이라 보일때마다 해석하는 법을 찾아보고는 했는데, 이번에 살펴보았던 Transformer-XL, XL-Net 구현체(huggingface) 에서는 einsum연산이 자주 등장해서 사용법을 처음부터 정리해보려고 합니다. 이 연산에 대해 잘 설명되어있는 블로그글이 있어, 해당 내용을 많이 참조했습니다.

12 min read
Back to Top ↑

alexa-prize

Sounding Board Review

이전 글에서 Alexa Prize에 대해 간단하게 살펴봤는데, 이 글에서는 Socialbot challenge 2017의 우승작 Sounding Board – University of Washington’s Alexa Prize Submission을 리뷰해보려고 합니다. 현재 많은 챗봇들은 대화를 통해 특정 도메인의 문제(영화 추천/예매 봇 등)를 해결하기 위한 task-oriented 문제를 풀고 있습니다. 이 경우 대화의 범위(주제)가 좁혀짐으로써 비교적 잘 정의된 방법론들이 존재합니다. 이에 비해 open-domain 대화 시스템이란 “도메인이 열려있는”, 즉 주제에 제한이 없는 대화를 다루는 시스템이기 때문에 해당 접근법들로 풀기에는 여러 한계를 갖고 있습니다. Alexa prize는 소셜봇이 유저와 다양한 주제에 대해 대화를 진행하는 첼린지 이기 때문에 어느 정도 open-domain의 성격을 갖고 있습니다. 하지만 주제의 큰 영역들이 사전에 정해져 있고, 기존의 Alexa 시스템 자체가 특정 기능을 수행하는 목적을 갖고 있기 때문에, 완전히 open-domain 환경이라고는 볼 수 없습니다. 이에 따라 Sounding Board 팀은 task-oriented 문제로 해결하되 컨텐츠(정보)와 유저의 흥미를 집중적으로 고려하여 대답을 생성하는 접근법을 시도했습니다. 크게 Sounding Board 라는 소셜봇을 만들 때 고려된 디자인 철학과, 전체적인 구조와 상세 모듈들, 저자들의 분석에 대해 살펴봅니다.

19 min read

Alexa Prize 둘러보기

“사람과 기계가 상호작용하는 방식은 변곡점에 있고, 대화형 인공지능은 변화의 중심에 있다.” Alexa Prize Socialbot Grand Challenge는 매년 Amazon에서 대학(원)생을 대상으로 개최하는 socialbot을 만드는 챌린지입니다. 2017년부터 매년 진행되고 있으며, 현재 2019년 챌린지가 진행되고 있습니다. 이번 포스트에서는 대회가 어떻게 진행되고, 어떤 목표를 달성하고, 평가하는지 살펴보겠습니다.

4 min read
Back to Top ↑

career

2020년 상반기 회고

상반기를 되돌아 보고 하반기 계획을 세워보기. 2020년 상반기를 간단하게 되짚어보면, 2월말-3월까지 훈련소를 다녀오는 계획이 잡혀있었고, 1-2월은 진행하던 프로젝트의 마무리를 진행했다. 4-5월은 일과 이직준비를 병행, 6월은 기존의 일들을 마무리, 7월은 새로운 회사에서 적응을 하고있는 중이다. 쉴틈없이 빠르게 지나간 반년이였다. 2020년 시작 당시에 세웠던 목표들을 얼마나 달성했고, 어떤 부분들이 부족했는지 정리하고 남은 2020년의 목표를 다시 세워보자!

4 min read

Machine Learning Engineer 이직 후기

Machine Learning Engineer라는 역할로 지난 1년 4개월 정도를 근무했고, 동일한 역할로 타 회사로 이직하게 되었습니다. 이번 포스트에서는 이직 준비를 하면서 겪었던 경험들과 그에 대한 개인적인 느낌을 기록하려고 합니다.

7 min read
Back to Top ↑

다짐글

글또 4기 다짐글

“글 쓰는 또라이가 세상을 바꾼다!” 모임 이름이 너무나도 강렬해 자연스럽게 지원했고, 글또 4기에 참여하게 되었습니다. 평소에 글을 많이 써보진 않았지만, 많은 사람들과 협업을 진행하면서 글을 잘 쓰는 것에 관심이 생겼습니다. 이번 기회를 통해 제가 한층 더 성장할 수 있었으면 좋겠습니다. :)

2 min read
Back to Top ↑