NLP 16

Day 52. Training Multi-Billion Parameter LM

이번에는 조금 색다른 분야입니다. 언어 모델이 계속해서 커지면서, 이를 단순히 학습시키는 것조차 큰 문제가 되었습니다. 매우 큰 모델의 대명사인 GPT-3는 트랜스포머 디코더의 단 하나 레이어의 역전파를 계산하는 데에도 메모리 크기가 부족합니다. 이러한 거대 모델들이 어떻게 학습되었는지 알아보고, 우리가 사용해왔던 GPU가 가지는 특징 및 Multi-GPU의 활용 방법에 대해 알아봅시다. 최근 language model들은 데이터 크기와 모델 크기 모두를 늘리는 것이 추세였다. 이전에는 파라미터의 수가 그렇게 크지 않았지만, 모델의 크기가 크면 커질수록 성능이 좋아지는 것 때문에 GPT-3가 최종적으로 나오게 되었다. 175 billion 하지만, GPT-3 같이 너무 큰 모델은 학습시키는 것이 문제이다..

Day 51. Machine Translation

자연어처리 분야에서 가장 큰 시장 규모와 연구 커뮤니티를 가진 기계번역에 대해서 알아봅시다. 기계번역은 언어학자들이 주도한 statistical machine translation(SMT)부터 최근의 neural machine translation(NMT)까지 눈부신 발전을 거듭했습니다. 병렬언어 말뭉치를 기반으로 하는 supervised NMT부터 단일언어 말뭉치를 기반으로 하는 unsupervised NMT를 알아봅니다. 그리고, 여전히 존재하고 있는 번역 task의 어려움에 대해서 알아봅시다. 기계번역이 성능을 어떻게 높였으며, 어떻게 진행되었는지를 알아보자. Machine translation은 인공지능이 다루는 task 중 손에 꼽을 정도로 어려운 편에 속한다. 하지만, 어려움에 비해서 활용도가..

Day 50. Text Generation

자연어처리 기술 적용 분야인 자연어 생성(text generation) 관련 내용입니다. 무엇이 text generation인가? text generation은 텍스트 생성하는 것이다. 지금까지 해온 것은 NLI(자연어 이해)이다. 문장을 받았을 때, pos, neg를 classification하는 것 등을 말한다. NLG는 문장 자체를 생성하는 것을 중점에 두고 있다. text generation은 다양한 분야에서 쓰일 수 있다. 챗봇, machine translation, 문장을 자유롭게 생성하는 것, 문장 요약 등에 쓰인다. open-ended generation에 대한 예시는 위와 같다. prompt로 단어 3개를 줄 때, 그 단어들에 대한 하나의 story가 생성되는 것이다. 또 다른 예시는, ..

Day 49. Applications

앞에서 나왔던 내용들은 자연어 이해를 돕는데 근간이 되는 Encoder에 대한 설명으로 주를 이루었습니다. 오늘은, 자연어 처리 분야에서 어떤 방식으로 문제를 정의하고, 이를 해결하는지에 대해 말해봅시다. 오늘은 encoder 기반의 주어진 text를 이해하는 taks들을 살펴볼 것이다. understanding이라는 것은, natural language understanding이라고 하며, NLU라고 불린다. encoder, BERT모델을 어떻게 사용하는지 알아보자. 또한, 각각의 task에 따라서 input과 output이 무엇인지 간단하게 살펴보자. BERT가 있을 때, input의 처음으로는 [CLS] token이 들어가고, 문장의 token들이 들어가게 된다. 이렇게 모델의 input으로 어떠한..

Day 48. GPT

자연어처리 기술 중 가장 각광받고 있는 GPT에 대해서 학습해보자. GPT-3가 나오기 이전에, 이미 OpenAI에서는 GPT-1, GPT-2에 대해 발표를 했었다. 이 모든 모델들을 알아보자 지금까지의 핵심 모델 구조는 크게 BERT와 GPT로 나눌 수 있다. 이 둘은 모두 transformer의 encoder 구조를 사용하고 있다. 이 둘의 차이는 GPT는 pre-training task를 language modeling(다음 단어 예측)을 사용한 것이다. ELMO와는 달리, 오른쪽 단어만을 예측하도록 한 것이지, 왼쪽 단어도 예측하는 것이 아니다. BERT도 language modeling에 기반해서 pre-training한 모델이지만, Maked Language Modeling task를 통해서 ..

Day 47. Transformers

transformer 모델을 쉽게 불러오고 학습시킬 수 있게 하는 라이브러리인 transformers에 대해 알아보도록 하겠습니다. transformers 라이브러리는 NLP분야에서 transformer 기반 모델을 사용하고자 할 때 가장 많이 활용되는 라이브러리이며, 연구자와 실무자 가릴 것 없이 매우 많이 사용하고 있습니다. AI에서 transformer와 bert가 처음 나왔을 때, 모델을 구현하는 코드들이 곳곳에 퍼져있어서 원하는 코드를 찾으려면 많은 시간이 걸렸다. 따라서, 자연어처리 연구자들이 이러한 코드들을 한 번에 모아놓은 library가 huggingface에 존재하는 transformers library이다. transformers는 다양한 nlp 딥러닝 모델들, 그 가중치들을 제공하고..

Day 44. Transformer

오늘은 현재 자연어처리, 비전 분야를 막론하고 가장 많이 사용되고 있는 transformer에 대해서 다시 한번 복습합니다. 'Attention is all you need'로 transformer가 소개된 이후 아주 많은 변형과 대체재들이 등장했지만, transformer block은 여전히 가장 널리 사용되고 있는 deep learning block 중 하나입니다. 현재 아주 많은 연구와 실무에서 사용되고 있는 알고리즘들이 이 transformer architecture를 기반으로 하고 있기 때문에 input부터 output까지 어떤 연산을 거치고, 각 연산에는 어떤 의미가 있는지 알아두는 것이 여러모로 좋을 것이라 생각됩니다. Transformer : Intro Transformer 모델이 처음 제..

Day 43. Tokenization

오늘은 모델이 자연어를 이해할 수 있도록 만들어주는 과정인 Tokenization에 대해 학습할 것이다. Tokenization 이전의 전처리 과정은 자연어 형태에서의 noise를 줄여준다고 하면, Tokenization에서는 문자로 나타내는 단어를 컴퓨터가 이해할 수 있는 형태로 어떻게 바꿀 것인가?를 주로 배우게 된다. Tokenization은 우리가 여태까지 학습했던 내용과는 달리 생소할 수 있지만, NLP에서 가장 중요한 분야 중 하나이다. 다양한 언어의 문자를 간결한 형태로 컴퓨터가 이해할 수 있게 하지 않으면 이후의 모든 과정에서 비효율성이 발생할 수 있기 때문이다. Intro Input을 ' I am a student ' 라는 문장으로 놓는다. 이러한 문장을 전처리과정을 통해 깨끗하게 만들어..

Day 42. Preprocessing

오늘은 자연어 처리 데이터를 전처리 하는 과정을 배워보겠습니다. 전처리하는 파이프라인과 전처리하는 과정에서 활용할 수 있는 모듈을 배우고, 다룬 모듈을 활용해 간단하게 데이터를 크롤링하여 전처리하는 실습을 진행해보겠습니다. text data를 모델이 encode 할 때에는 아래와 같은 파이프라인을 거치게 된다. Normalization -> pre-tokenization -> tokenization -> post-processing 먼저, raw string이 덜 랜덤하고 깨끗해지는 과정을 통틀어 Normalization이라고 말한다. 예를 들면, white space(여백)을 제거하고, 특수기호를 제거하거나, 대소문자가 섞여있을때 하나로 통일해주는 과정이 있다. 이렇게 normalization 과정을 ..

Day 41. RNNs with Attention

오늘은 Attention의 개념을 다뤄보겠습니다. Sequence-to-sequence 구조의 RNN계열 모델에서 attention이 왜 필요한지, 어떻게 적용될 수 있는지 살펴보도록 하겠습니다. Sequence to sequence sequence to sequence model을 보면, 한쪽은 encoder, 다른 한쪽은 decoder라는 부분으로 나뉘어져 있다. 간단하게, encoding은 문장이 들어가는 부분, decoding은 문장이 나오는 부분이라고 생각하자. 이들은 각각 RNN 혹은 LSTM 혹은 GRU를 기반한 구조가 된다. 위 그림은 챗봇의 예제로써, 질문이 들어왔을 때, 그것에 답을 하는 task를 수행하는 것이다. 이 질문은 LSTM에 기반해서 하나씩 입력을 받아 다음 step으로 넘..