Opening
★ 기존의 LSTM과 비교해서 BERT가 어떤 점에서 다른지 함께 토론해 봅시다.
[예시 답안]
1. BERT(Pre-training of Deep Bidirectional Transformers for Language Understanding)란?
- 구글에서 개발한 NLP(자연어 처리) Pre-trained(사전 훈련) 기술이며, 특정 분야에 국한된 기술이 아니라 모든 자연어 처리 분야에서 좋은 성능을 내는 범용 Language Model입니다. 11개 이상의 자연어처리 과제에서 BERT가 최첨단 성능을 발휘한다고 하지만 그 이유는 잘 알려져 있지 않다고 합니다. 하지만 BERT는 지금까지 자연어 처리에 활용하였던 앙상블 모델보다 더 좋은 성능을 내고 있어서 많은 관심을 받고 있는 언어 모델입니다.
2. BERT와 다른 언어 모델은 어떤 점에서 다른가?
- BERT를 사용하지 않은 일반 모델의 프로세스 : 분류를 원하는 데이터 → LSTM, CNN 등의 머신러닝 모델 → 분류
- BERT를 사용한 모델링 프로세스 : 관련 대량 코퍼스 → BERT → 분류를 원하는 데이터 → LSTM, CNN 등의 머신러닝 모델 → 분류 : 대량의 코퍼스를 Encoder가 임베딩 하고(언어 모델링), 이를 전이 학습시키고 파인 튜닝하고 Task를 수행합니다.(NLP Task)
3. Pre-trained(사전 훈련) 된 언어 임베딩은 어떤 점에서 유용한가?
- 대량 코퍼스로 BERT 언어 모델을 적용하고, BERT 언어모델 출력에 추가적인 모델(RNN, CNN 등의 머신러닝 모델)을 쌓아 원하는 Task를 수행할 수 있습니다. 이때, 추가적인 모델을 복잡한 CNN, LSTM, Attention을 쌓지 않고 간단한 DNN 모델만 쌓아도 Task 성능이 잘 나온다고 알려져 있고, DNN을 이용하였을 때와 CNN 등 과 같은 복잡한 모델을 이용하였을 때의 성능 차이가 거의 없다고 알려져 있습니다. 이렇게 누구나 사용할 수 있는 Pre-trained 고성능을 내는 언어 모델이 바로 BERT입니다. 정말 편리하고, 구글에게 감사할 수밖에 없겠네요!
- BERT는 총 3.3억 단어(8억 단어의 BookCorpus 데이터와 25억 단어의 Wikipedia 데이터)의 거대한 말뭉치를 이용하여 학습합니다. 거대한 말뭉치를 MLM, NSP 모델 적용을 위해 스스로 라벨을 만들고 수행하므로 준지도 학습(Semi-supervised) 학습이라고 한다. Wikipedia와 BookCorpus를 정제하기 위해 list, table, header를 제거하였습니다. 그리고 문장의 순서를 고려해야 하므로 문단 단위로 분리하였고 많은 데이터 정제 작업을 수행하였습니다.
- 처음에 BERT라는 모델을 접하였을 때, 단지 LSTM, CNN, 앙상블 모델로 개체명 인식, 텍스트 분류 등의 과제를 시행하는 것과 같은 모델인 줄 알았지만 BERT는 '사전 훈련 언어 모델'입니다. 특정 과제를 수행하기 위한 모델의 성능은, 데이터가 충분히 많다면 Embedding이 큰 영향을 미칩니다. 단어의 의미를 잘 표현하는 벡터로 표현하는 Embedding 된 단어들이 훈련과정에서 당연히 좋은 성능을 내겠죠?
- 즉, 이 임베딩 과정에서 BERT를 사용하는 것이고, BERT는 특정 과제를 하기 전 사전 훈련 Embedding을 통해 특정 과제의 성능을 더 좋게 할 수 있는 언어 모델입니다.
[BERT] BERT에 대해 쉽게 알아보기1 - BERT는 무엇인가, 동작 구조
Check-up 항목
★ BERT(Pre-training of Deep Bidirectional Transformers for Language Understanding)라는 이름이 궁금하지 않으세요? 왜 "Deep Bidirectional Transformers"라고 했을까요? BERT는 Transformer의 Encoder 부분만 사용하고 Decoder 부분은 사용하지 않았습니다. 어떻게 학습시킬 수 있었는지 노드에 설명되어 있는, Mask LM(Language Model), NSP(Next Sentence Prediction) 부분에 대해서 좀 더 공부해보고 이해한 부분을 함께 토론해 봅시다.
[예시 답안]
: BERT pre-training의 새로운 방법론은 크게 2가지로 나눌 수 있습니다. 하나는 Masked Language Model(MLM), 또 다른 하나는 Next Sentence Prediction(NSP)이다.
- 기존 방법론들의 한계 : ELMo, OpenAI GPT는 일반적인 language model을 사용하였습니다. 일반적인 language model이란, 앞의 n 개의 단어를 가지고 뒤의 단어를 예측하는 모델을 세우는 것입니다(n-gram). 하지만 이는 필연적으로 unidirectional 할 수밖에 없고, 이러한 단점을 극복하기 위해 ELMo에서는 Bi-LSTM으로 양방향성을 가지려고 노력하지만, 굉장히 shallow한 양방향성 (단방향 concat 단방향)만을 가질 수 밖에 없었습니다.
- Masked Language Model(MLM) : MLM은 input에서 무작위 하게 몇 개의 token을 mask 시킵니다. 그리고 이를 Transformer 구조에 넣어서 주변 단어의 context만을 보고 mask 된 단어를 예측하는 모델입니다. OpenAI GPT도 Transformer 구조를 사용하지만, 앞의 단어들만 보고 뒷 단어를 예측하는 Transformer decoder구조를 사용합니다. 이와 달리 BERT에서는 input 전체와 mask된 token을 한 번에 Transformer encoder에 넣고 원래 token 값을 예측하므로 "Deep Bidirectional Transformers"하다고 할 수 있습니다.
- Next Sentence Prediction(NSP) : 두 문장을 pre-training시에 같이 넣어줘서 두 문장이 이어지는 문장인지 아닌지 맞추는 것입니다. pre-training시에는 50:50 비율로 실제로 이어지는 두 문장과 랜덤 하게 추출된 두 문장을 넣어줘서 BERT가 맞추게 시킵니다. 이러한 task는 실제 Natural Language Inference와 같은 task를 수행할 때 도움이 됩니다.
Closing
★ 프로젝트를 돌려보면, BERT 모델의 한계가 눈에 띌 것입니다. 이를 해결하기 위한 후속 연구에는 어떤 것들이 있는지 살펴보고 본인이라면 어떻게 해결하고 싶은지 함께 토론해봅시다.
[예시 답안]
- BERT의 성능 개선 폭에 한계 : MLM 방식에 적응한 BERT가 일부 문장이 비어있지 않은 단어 시퀀스 데이터 훈련에 제대로 적응하지 못할 것이라 본 거죠. 여러 단어를 동시에 예측할 때 해당 단어 간 상관관계를 고려하지 않는 점도 지적됐습니다. ‘[MASK] [MASK] is a large city in the U.S’라는 문장을 예로 들어보겠습니다. 빈칸에 들어갈 단어로 (New, York) 또는 (Los, Angeles)를 직관적으로 예측하는 사람과는 달리, [MASK]를 독립적으로 예측하는 BERT는 (New, Angeles)라는 틀린 값을 내놓을 수 있습니다.
- XLNet : 이런 한계를 극복하고자 XLNet은 앞뒤 문맥을 동시에 고려하는 양방향 언어 모델과 예측 단어 간 상관관계를 고려하는 순방향 모델의 장점을 합쳤습니다. 다만 모델이 지나치게 복잡하고, 앞서 언급한 문제가 모델 성능에 미치는 영향에 대한 명확한 근거가 제시되지 않았다는 이유로 업계 내에서는 상대적으로는 덜 사용되는 것으로 분석됩니다.
- RoBERTa : RoBERTa(A Robustly Optimized BERT)는 BERT보다 성능을 한 단계 업그레이드한 버전입니다. 모델 크기가 클수록 성능을 높일 수 있다는 판단 하에 훈련 데이터의 양(13GB→160GB)과 학습 횟수(125,000회→500,000회), 배치 크기(256→8,192), 사전 크기(32,000→50,000) 등을 대폭 늘리는 전략을 취했습니다. BERT의 NSP 과제는 훈련에서 제외했습니다. 실제 의도했던 문장 간 연관 관계를 배운다기보다는, 단순히 두 문장이 같은 문맥을 따르는지를 판단하는 쪽에 가까워 학습 효과가 불분명하다고 봤기 때문입니다.
- ALBERT(A Lite BERT) : ALBERT(A Lite BERT)는 이름 그대로 BERT보다 가벼운 모델입니다. 모델 매개변수 수를 줄여 같은 구조의 모델에서의 메모리 사용량을 줄이고 학습 속도를 높였습니다. 우선 각 단어를 저차원의 임베딩 벡터로 먼저 표현하고 나서 이를 다시 모델 은닉층의 차원 수만큼 확장하고, 또한 Transformer 인코더 블록 간 매개변수를 공유하도록 했습니다. 그 결과, ALBERT(large)는 BERT(large)와 비교했을 때 매개변수 수는 1/18(3억 3,400만 개→1,800만 개)로 줄어들고 GLUE 성능을 일정 수준 유지하면서(85.2→82.4) 학습 속도를 1.7배 높였습니다. 뿐만 아니라 BERT의 NSP 대신 두 문장의 연관 관계를 예측하는 과제인 문장 순서 예측(sentence order prediction, SOP)을 훈련해 성능을 더 높였습니다.
- T5 : T5는 한 모델로 모든 문제를 풀면서도 모델의 규모를 역대급으로 키우겠다는 사고의 집약체라고 볼 수 있습니다. NLU 벤치마크인 GLUE와 SQuAD 등에 포함된 다양한 자연어 이해 과제를 사전 훈련했습니다. 여기에 사용한 정제 텍스트 데이터만 700GB(RoBERTa의 4.4배), 모델 매개변수는 110억 개(RoBERTa의 32배)에 달하는 규모입니다. 빈칸 하나의 예측값이 다른 빈칸 예측에 영향을 주지 않는 BERT의 한계를 극복하고자 seq2seq 구조의 MLM을 적용했습니다. 그 결과, T5는 SuperGLUE에서 인간과 비슷한 성능을 달성했습니다.
2018-2020 NLU 연구 동향을 소개합니다 - 카카오브레인
참고자료
'성장하기' 카테고리의 다른 글
[서평] 잘 팔리는 브랜드의 법칙 (2) | 2021.03.22 |
---|---|
[E-20] 난 스케치를 할테니 너는 채색을 하거라 (0) | 2021.03.18 |
[E-18] 문자를 읽을 수 있는 딥러닝 (0) | 2021.03.11 |
[E-17] 다음에 볼 영화 예측하기 (0) | 2021.03.09 |
[E-16] 흐린 사진을 선명하게 (0) | 2021.03.04 |
댓글