이전 글 까지 2가지 종류의 언어 모델을 언급했었습니다. 전통적인 방식의 언어 모델인 이전 단어들을 통해 다음 단어를 예측하는 Auto-regressive Model과 앞과 뒤 단어들을 통해 Masked 된 빈칸을 예측하는 MLM 방식의 Autoencoding Model이었습니다. 이 Model들은 Transformer의 Decoder만을 활용하거나, Encoder만을 활용하는 것이었습니다. 이번 글은 Encoder와 Decoder를 모두 활용하면서 NLG와 NLU Task를 전부 가능케 하는 PLM인 BART(Bidirectional and Auto-Regressive Transformers, 2018)를 소개하고자 합니다. 1. Pretrain - Encoder, Decoder 모두 사용하여 사전학습..
BERT를 Robust 하게 최적화하는 방법에 대해서 논의해보려고 합니다. 정말 사랑받는 모델인 BERT이지만, 학습하는데 많은 시간과 돈이 들었는데, 정말 hyperparameter가 잘 최적화가 되었는가에 대한 의문으로부터 출발합니다. 1. RoBERTa vs BERT - BERT보다 10배 이상 더 많은 데이터를 더 오래오래 학습시켰습니다. - 안그래도 말 많은 NSP task, 불필요하다고 판단하여 제거를 하였습니다. - 모든 샘플들에 대해 Max sequence length를 512로 맞춰서 구성하였습니다. 길게 길게 입력을 주었습니다. - 기존 BERT에서는 Pretrain 데이터에 대해서 masking을 정적으로 해놓고 들어가는데(한번 빈칸 뚫고 그냥 쭈욱 진행했다는 점), RoBERTa는 ..
PLM계열의 Auto-Encoder 계열, 가장 많이 쓰이고 활용되고 있는 BERT 차례입니다. 이전에 글 쓴 GPT 계열은 단방향(Uni-directional) 언어 모델이기 때문에, 문장 앞까지만 보고 추측하는 것이기 때문에 문장 전체에 대한 이해가 부족합니다. 마치 한국어는 끝까지 들어봐야 한다라는 말이 있듯이 BERT 계열은 Bi-directional 언어 모델이기 때문에 Fine-Tuning 단계에서 꽤 많은 성능을 올릴 수 있습니다. 0. BERT와 이전 모델의 차이점 - BERT : Performance가 검증된 트랜스포머 블록을 사용 + 모델의 속성이 양방향을 지향하는 점에 있습니다. - GPT는 왼쪽에서 오른쪽으로 한 방향(uni-direction)으로만 보는 아키텍처(언어모델) 입니다...
이전 시간에는 Language Model과 Tokenization(BPE Algorithm)에 대해서 다루었습니다. 본격적으로 PLM을 하나씩 언급해볼 예정입니다. 먼저 PLM의 유형들이 어떤 것이 있는지 알아보면 다음과 같습니다. 1. PLM의 유형 - Autoregressive models : Open AI의 GPT와 같이 NLG Task에 강점이 있는 모델을 뜻하며, Transformer의 Decoder만을 이용해 LM을 구성합니다. - Autoencoder models : 가장 많이 활용되며, 구글의 BERT와 같이 NLU Task(CLS, NER 등)에 강점이 있는 모델이며, Transformer의 Encoder를 통해 LM을 구성합니다. Bi-directional LM이 구현 가능하며 MLM,..
NLP에서 데이터를 모델에 바로 집어넣는 것이 아닌 tokenization을 반드시 거쳐주어야 합니다. 문장 속 단어들은 여러 단어가 결합되어 나타나기 때문에, 반드시 이 것을 나누어서 컴퓨터가 더 이해하기 쉽게 작업을 거쳐주어야 합니다. 기호(괄호, 따옴표, 마침표 등)을 나누는 것은 기본이고 NLP에서 난이도가 최상위권인 한국어 같은 경우에는, Mecab과 같은 형태소 분석기를 활용하여 어미와 접사를 분리를 해주는 것이 일반적인 것으로 알려져 있습니다. 왜 이 작업이 필수인 이유는 가장 NLP 하면서 스트레스를 많이 받게 되는 OoV(Out of Vocabulary) 문제이기 때문입니다. 1. OoV(Out of Vocabulary) - 여러 단어가 결합되어 있을 때, 이를 나누지 않으면 Corpus..
저번 시간 Transformer에 대해 다루었습니다. 조금 더 기초로 돌아가보는 시간 가지겠습니다. NLP에서 가장 근간이 되는 것은 단연 Language Model 입니다. 매우 간단하게 설명하면 토익 Part 5와 같다고 생각하시면 되는데 다음의 빈칸에 알맞은 단어를 고르면 됩니다. 우리 인간은 상당히 많은 말을 일상에서 주고받기 때문에 자연스럽게 단어와 단어사이에 무슨 단어가 들어가야할 지, 어떤 단어가 들어가야 좋은지 학습이 매우 잘 되어 있습니다. 빈칸에 들어갈 확률이 어느게 높은지 잘 학습이 되어있다는 뜻입니다. 언어모델은 위처럼 쉽게 설명하면 그렇지만 수학적으로는 "문장의 확률 분포"를 나타낸 모델이라고 정의할 수 있습니다. 이전 단어들이 주어졌을 때 다음 단어의 확률을 예측하거나, 문장의 ..
저번 시간에 Attention에 대해 다루었습니다. 솔직히 제일 처음에 Transformer를 공부할 때 이해가 되질 않았던 기억이 있습니다. 또한 논문 'Attention is all you need'도 초보자가 읽기에 너무 힘들었던 기억이 납니다. 여러 글(Jay alammar의 블로그와 ratsgo님의 블로그)과 유튜브 영상 등을 보고 구현을 하다 보니 이해가 되었고 이를 간단히 정리하고자 합니다. Transformer는 Attention 연산을 통해 정보의 encoding과 decoding을 해결합니다. RNN은 구조상 순서의 정보가 반영이 되어있지만 Attention은 그렇지 않아 순서의 사상을 반영해야하기 때문에 Positional Encoding을 사용하여 반영합니다. Positional E..
Natural Language Generation은 auto-regressive task로 접근합니다. 즉, Language Model은 주어진 단어들을 바탕으로 다음 단어를 예측하는 형태이고 가장 기본이 되는 것이 Sequence to Sequence(seq2seq) 입니다. Sequence to Sequence는 3개의 서브 모듈 Encoder, Decoder, Generator로 구성이 되어있습니다. Encoder는 문장 하나를 context vector로 압축하는 역할, Decoder는 context vector를 conditional 하게 받는 조건부 LM입니다. Generator는 Decoder의 매 Time step별 hidden state를 softmax를 통해 multinoulli dis..
이전 글 Word Embedding에서 동시에 출현하는 단어들이 비슷한 Embedding을 갖도록 학습이 되는 것이 목표라고 이야기를 했었습니다. 하지만 Pre-trained 된 Embedding 벡터를 활용하여 썼을 때 end-to-end 방식보다 성능이 떨어진다고 언급했었습니다. Skip-gram과 같은 Word Embedding 방식들은 단어들이 바뀌다고 해서 문장의 Word Embedding값들이 바뀌는 것이 아닙니다. 해당 Corpus 내의 데이터 셋 내에서는 Global 하게 고정된 것입니다. 정말 간단하게 이야기하면 '배'라는 단어는 3가지 뜻을 가질 수 있습니다. 과일의 배, 바다에 떠다니는 배, 사람 신체의 배 이렇게 동음이의어처럼 이런 경우들은 전부 고정된 임베딩 벡터라는 것이 큰 문제..
1. Motivation Context Window에 단어가 동시에 나타나는 단어일수록 비슷한 단어를 가진다는 가정에서 출발을 합니다. 따라서 비슷한 단어는 비슷한 벡터 값을 가져야 합니다. 대표적인 방법으로는 Skip-gram이 있습니다. 주변 단어들을 맞추려고 하는 것이 큰 Goal이라고 할 수 있습니다. 문장의 문맥에 따라 정해지는 것이 아니고 Context Window 사이즈에 따라 Embedding의 성격이 바뀔 수 있음을 유의하셔야 합니다. 2. Basic Tactics 기본적인 개념은 상당히 AutoEncoder와 비슷합니다. y를 성공적으로 예측하기 위해 필요한 정보를 선택하며 압축을 합니다. 주변 단어를 예측하도록 하는 과정에서 적절한 단어의 Embedding을 구할 수 있습니다. 3. ..