SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
Efficient Training of BERT
by Progressively Stacking
huffon
Contents
▪ Abstract
▪ Introduction
▪ Related Work
▪ Method
▪ Experiments
▪ Conclusion and Future Work
Efficient Training of BERT by Progressively Stacking
Abstract
▪ Unsupervised pre-training은 최신 자연어 처리 분야에서 널리 사용되는 기법 (e.g. BERT, GPT-2…)
▪ 적절한 Unsupervised prediction task를 통해 훈련된 DNN은 많은 NLP Task들에서 좋은 성능 보임
▪ 웹 사이트로부터 데이터를 수집해 하나의 언어로 구성된 거대한 데이터셋을 만드는 것은 굉장히 쉬운 일이기 때문에,
우리는 대용량의 모델을 쉽게 훈련시킬 수 있음 (e.g. BERT는 Wikipedia로부터 2,500M+α개의 단어를 긁어와 훈련)
▪ 데이터셋 구하는 것은 OK. 모델을 쌓아 올리는 것도 OK. 문제는 Training efficiency를 늘리는 것 !
After BERT…
▪ 잘 훈련된 BERT model 내 서로 다른 Layer에서 문장의 self-attention 분포를 시각화해본 결과,
대부분의 Layer에서 self-attention은 해당 단어와 인접한 단어, start-of-sentence(CLS) 토큰에 집중되는 것을 확인
▪ 해당 결과에서 영감을 얻어, 얕은 모델의 지식(Training result)을 깊은 모델에 넘겨주는 “stacking algorithm” 고안
▪ 결과를 넘겨주는 것 뿐만 아니라 Progressive하게 얕은 모델을 2배 씩 쌓아(stacking) 올려 나가도록 해보자 !
Abstract
Neighborhood
& [CLS]
Introduction
▪ DNN의 성공 배경으로는 ‘개선된 신경망 아키텍처’와 ‘라벨링 된 수많은 양의 데이터셋’을 꼽을 수 있음
그러나, 모든 데이터에 인간이 직접 라벨링을 다는 작업은 매우 비용이 많이 드는 작업 !
▪ 자연어 처리에서 Unsupervised pre-trained model(like. BERT)을 사용해 Transfer Learning을 하는 것은
라벨링 된 데이터가 충분하지 않을 때 취할 수 있는 가장 효과적인 방법
▪ Wikipedia corpus로 학습된 Word embedding은 문장 분류 / 문장 유사도 Task의 성능을 효과적으로 개선하였고,
Pre-training을 통해 문맥까지 학습하고자 하는 시도(BERT, GPT-2)는 Word embedding 보다 더 효과적이었음
▪ 현재 가장 성능이 좋은 BERT는 Masked Language modeling과 next-sentence prediction task를 통해 훈련됨
▪ 해당 Task들은 인간의 간섭을 필요로 하지 않기에, 투입 가능한 Training data는 수 십 억 개의 토큰이 될 수도 있음
Introduction
▪ 따라서 BERT와 같이 큰 모델을 사용하기 위해서는 훈련 성능의 개선이 필수적이며, 좋은 성능의 Hardware를
사용해야만 BERT의 사용이 가능하다는 것 자체가 해당 모델을 실용적으로 사용하지 못하게 저해하는 요인
▪ 이러한 문제를 해결하기 위해 BERT 모델의 훈련 성능을 향상하기 위한 알고리즘적 접근 방안 고안
▪ 얕은 BERT 모델과 깊은 BERT 모델의 self-attention layer들을 시각화한 결과 다음과 같은 특징을 발견
1) 얕은 모델의 attention은 서로 다른 layer에서 모두 비슷한 분포를 보임
- 첫 번째 분포는 local attention: head가 자신과 인접한 Token들에 attention을 취하는 모습
- 두 번째 분포는 CLS: head가 start-of-sentence token에 attention을 취하는 모습
2) 1번에서 언급한 얕은 모델의 attention 분포가 깊은 모델의 attention 분포에서 비슷하게 나타남
Introduction
“ Shallow model과 Deep model의 attention distribution이 비슷하니,
Shallow model의 training result(trained parameters)를 Deep model에 공유해서 사용할 수 있겠군 ! “
▪ Shallow model A의 훈련을 마친 후 해당 모델 위에 같은 사이즈의 Shallow model B를 쌓아 Deep model로 만든 후,
Shallow model A의 trained parameter를 위에 추가로 쌓은 shallow model B에 copy해 사용하자 !
Related Work: Unsupervised Pre-training in NLP
▪ Word2Vec은 대부분의 SOTA NLP 아키텍처에서 필수적으로 사용되어 온 정석적인 기법이지만,
학습된 word vector가 문맥이 아닌 단어 하나의 의미론적 표현만 포착할 수 있다는 한계를 지님
▪ Pre-trained contextual representations 모델들은 주변 문맥을 고려하며 Word2Vec의 약점을 극복
1) ELMo는 LSTM을 쌓아 올려 Language model을 학습시키는데, LSTM은 단어를 순차적으로 처리하기 때문에
한 지점에서의 hidden state는 이전에 위치한 단어들의 정보까지 포함. 이에 따라 단어의 의미론적 표현 뿐 아니라
문장의 맥락 정보 까지 얻을 수 있게 됨 !
2) BERT는 stacked-LSTM 대신 self-attention을 사용해 Masked language modeling task를 구축하였고,
문장의 맥락 정보를 attention 통해 얻음. 이후 다양한 NLT task에서 SOTA 기록 !
Related Work: Network Training by Knowledge Transfer
▪ 우리가 제시하는 iterative training 방법론은 Knowledge Transfer(“Net2Net”)와 굉장히 유사
▪ Net2Net은 얕은 모델을 가지고 있을 때 어떻게 깊은 모델을 효과적으로 확장해 훈련시킬 수 있을지에 대해 다룸
: 이 때, function-preserving initialization을 제안하는데, 이는 깊은 모델이 얕은 모델과 같은 function을
수행하도록 초기화한 후 optimization method에 의해 차후 훈련되도록 하는 단순한 방법
▪ +) PR-12에서 Net2Net 리뷰한 동영상 참조하면, Knowledge Transfer 개념 이해하는데 좋을 것 ! ( 8분 40초 ~ )
: https://youtu.be/btsZOMsyH_o?t=520
▪ 그러나 Transformer는 굉장히 정교하고 복잡한 구조를 지니고 있어, 해당 기법을 적용하기에 적합하지 않음
: Feed-forward layer를 0에 가깝게 설정하고, self-attention layer를 random하게 초기화하는 것이 Transformer에서의
function-preserving initialization 일텐데 이렇게 하면 self-attention이 전혀 훈련되지 않는 문제 !
Method
▪ BERT 내부 메커니즘을 분석해보기 위해 self-attention layer를 12개 쌓아 올린 12-layer BERT 모델을 훈련
▪ 이후, corpus에서 랜덤하게 한 문장 추출해 서로 다른 layer의 head attention 분포를 시각화
1) 다시 말하지만, head가 ‘local attention’과 ‘CLS’ 토큰에 집중하는 분포를 보임
: 이는 하나의 Token을 이해하기 위해 이웃 정보와 시작점(global information)이 중요함을 시사!
2) 이 분포는 Low-level layer들과 High-level layer에서 공통적으로 나타남: ‘훈련을 해도 얼추 비슷하구만 ! ‘
Method
▪ L개의 Layer를 가지는 BERT 모델이 있다면, 우리는 해당 모델을 쌓아 올려 2L Layer BERT를 만들 수 있음
▪ for i <= L 일 때, i번째 layer와 i+L번째 layer의 파라미터를 같게 설정 (e.g. L=3일 때 , 1번 layer와 4번 layer의 파라미터를 맞춤)
▪ 얕은 모델은 대개 깊은 모델보다 빠르게 훈련되므로, 얕은 모델을 쌓아 올리는 것이 깊은 모델을 한 번에 훈련시키는 것
보다 더 빠르게 수행될 것이며, 우리는 해당 기법을 “Progressive stacking “이라 부름
e.g.) L = 12, k = 2
1. 12/4 => ‘3-Layer BERT’ 초기화
2. 3-Layer BERT Training
<반복문 시작>
3. (i=1, k=2) 3-Layer + 3-Layer Stacking
& 6-Layer BERT Training
4. (i=2, k=2) 6-Layer + 6-Layer Stacking
& 12-Layer BERT Training
<반복문 종료>
5. return 12-Layer BERT
Experiments
▪ Wikipedia corpus와 BookCorpus를 사용해 대략 3400M개의 단어를 얻었으며, 이는 BERT와 유사한 수준
▪ Baseline으로 사용하기 위해, 12-layer BERT-base model을 훈련 시킴
400,000번의 Train step을 거쳤으며, 매 step 마다 122,880개의 Token을 batch로 전달
▪ 실험 모델은 3-Layer BERT를 50,000번, 이후 stacking을 거쳐 6-Layer BERT를 70,000번,
마지막 stacking 후, 12-Layer BERT를 280,000번 훈련시켜 총 400,000번의 Train step을 baseline과 맞춤
▪ Optimizer로는 Adam을 사용하였으나, Stacking을 적용하는 모델에는 매 stacking 이후
이전 optimizer state들을 초기화 시켜 주었음
Experiments
▪ 훈련 결과를 비교해보니 실험 모델은 Baseline과
유사한 validation loss를 기록했으며,
이에 더해 훈련 시간은 25% 감소했음
(338 hours vs. 441 hours)
▪ Convolutional network에서 주로 사용되는
Knowledge Transfer 기법 identity와도
비교해보았으나, 유의미한 결과 도출하지는 못함
Experiments
▪ 첫 번째 행: 6-Layer BERT model에서 랜덤하게 뽑은 6개 문장의 head attention 분포 ( 1~6 Layer )
▪ 두 번째 행: 6-Layer + 6-Layer BERT model에서 동일한 6개 문장의 head attention 분포 ( 7~12 Layer )
+) 추가 훈련을 진행하지 않은 상태이기 때문에 Original과 파라미터가 같으며, 그림은 추가적으로 쌓아 올린 6-Layer의 attention 분포
▪ 세 번째 행: 두 번째 행의 12-Layer BERT model을 70,000번 더 학습 시킨 후의 head attention 분포 ( 7~12 Layer, Original과 유사 )
Experiments
▪ 이러한 결과에도 기존 BERT 모델과 같이 NLP Task에서 좋은 성능을 낼 수 있을까라는 의문이 들 수 있음
▪ 이를 증명하기 위해 BERT-base model과 stacking algorithm을 적용한 실험 모델을 NLP Task에 적용해 결과 비교
▪ 실험 모델은 더 적은 시간을 들여 훈련되었음에도 불구하고, 경쟁력 있는 결과를 도출
이는 굉장히 흥미로운데, 같은 Training step을 밟았다 하더라도 우리 모델은 얕은 모델에서의 훈련을 포함하기 때문
▪ 결과적으로 progressive stacking algorithm 을 적용한 모델이 더 빠르게 훈련되었고, 경쟁력 있는 성능까지 달성 !
Conclusion and Future Work
▪ BERT의 훈련 성능을 개선하기 위해 잘 훈련된 BERT 모델의 self-attention의 분포를 시각화해본 결과,
self-attention은 대개 local-attention을 취하거나 CLS(start-of-sentence token)을 취한다는 사실을 알게 되었음
▪ 해당 사실에 힘입어 progressive하게 얕은 모델을 stacking하는 알고리즘을 고안하였고, 결과는 성공적이었음
▪ 이후, 기계번역, 텍스트 요약 등 self-attention layer를 사용하는 다른 어플리케이션에도 우리의 Train algorithm이
적용될 수 있을 것인지에 대한 추가 실험을 진행해볼 것임
+) 이미 훈련된 파라미터를 재사용해 더 큰 모델의 학습을 가속화 시킬 수 있는 더 나은 방안이 있는지도 궁금해짐 !
<EOP>

Contenu connexe

Tendances

딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지deepseaswjh
 
Neural Machine Translation 기반의 영어-일본어 자동번역
Neural Machine Translation 기반의 영어-일본어 자동번역Neural Machine Translation 기반의 영어-일본어 자동번역
Neural Machine Translation 기반의 영어-일본어 자동번역NAVER LABS
 
Machine translation survey vol2
Machine translation survey   vol2Machine translation survey   vol2
Machine translation survey vol2gohyunwoong
 
Bag of Tricks for Image Classification with Convolutional Neural Networks (C...
Bag of Tricks for Image Classification  with Convolutional Neural Networks (C...Bag of Tricks for Image Classification  with Convolutional Neural Networks (C...
Bag of Tricks for Image Classification with Convolutional Neural Networks (C...gohyunwoong
 
CS294-112 Lecture 13
CS294-112 Lecture 13CS294-112 Lecture 13
CS294-112 Lecture 13Gyubin Son
 
문자 단위의 Neural Machine Translation
문자 단위의 Neural Machine Translation문자 단위의 Neural Machine Translation
문자 단위의 Neural Machine TranslationNAVER LABS
 
Denoising auto encoders(d a)
Denoising auto encoders(d a)Denoising auto encoders(d a)
Denoising auto encoders(d a)Tae Young Lee
 
2017 tensor flow dev summit
2017 tensor flow dev summit2017 tensor flow dev summit
2017 tensor flow dev summitTae Young Lee
 
A Beginner's guide to understanding Autoencoder
A Beginner's guide to understanding AutoencoderA Beginner's guide to understanding Autoencoder
A Beginner's guide to understanding AutoencoderLee Seungeun
 
딥러닝 기반의 자연어처리 최근 연구 동향
딥러닝 기반의 자연어처리 최근 연구 동향딥러닝 기반의 자연어처리 최근 연구 동향
딥러닝 기반의 자연어처리 최근 연구 동향LGCNSairesearch
 
[224] backend 개발자의 neural machine translation 개발기 김상경
[224] backend 개발자의 neural machine translation 개발기 김상경[224] backend 개발자의 neural machine translation 개발기 김상경
[224] backend 개발자의 neural machine translation 개발기 김상경NAVER D2
 
DeBERTA : Decoding-Enhanced BERT with Disentangled Attention
DeBERTA : Decoding-Enhanced BERT with Disentangled AttentionDeBERTA : Decoding-Enhanced BERT with Disentangled Attention
DeBERTA : Decoding-Enhanced BERT with Disentangled Attentiontaeseon ryu
 
Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)Tae Young Lee
 
Papago/N2MT 개발이야기
Papago/N2MT 개발이야기Papago/N2MT 개발이야기
Papago/N2MT 개발이야기NAVER D2
 

Tendances (20)

딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지
 
Neural Machine Translation 기반의 영어-일본어 자동번역
Neural Machine Translation 기반의 영어-일본어 자동번역Neural Machine Translation 기반의 영어-일본어 자동번역
Neural Machine Translation 기반의 영어-일본어 자동번역
 
Machine translation survey vol2
Machine translation survey   vol2Machine translation survey   vol2
Machine translation survey vol2
 
GPT-X
GPT-XGPT-X
GPT-X
 
CS294-112 18
CS294-112 18CS294-112 18
CS294-112 18
 
Bag of Tricks for Image Classification with Convolutional Neural Networks (C...
Bag of Tricks for Image Classification  with Convolutional Neural Networks (C...Bag of Tricks for Image Classification  with Convolutional Neural Networks (C...
Bag of Tricks for Image Classification with Convolutional Neural Networks (C...
 
파이썬과 자연어 5 | 딥러닝
파이썬과 자연어 5 | 딥러닝파이썬과 자연어 5 | 딥러닝
파이썬과 자연어 5 | 딥러닝
 
CS294-112 Lecture 13
CS294-112 Lecture 13CS294-112 Lecture 13
CS294-112 Lecture 13
 
문자 단위의 Neural Machine Translation
문자 단위의 Neural Machine Translation문자 단위의 Neural Machine Translation
문자 단위의 Neural Machine Translation
 
Denoising auto encoders(d a)
Denoising auto encoders(d a)Denoising auto encoders(d a)
Denoising auto encoders(d a)
 
2017 tensor flow dev summit
2017 tensor flow dev summit2017 tensor flow dev summit
2017 tensor flow dev summit
 
A Beginner's guide to understanding Autoencoder
A Beginner's guide to understanding AutoencoderA Beginner's guide to understanding Autoencoder
A Beginner's guide to understanding Autoencoder
 
Mt
MtMt
Mt
 
딥러닝 기반의 자연어처리 최근 연구 동향
딥러닝 기반의 자연어처리 최근 연구 동향딥러닝 기반의 자연어처리 최근 연구 동향
딥러닝 기반의 자연어처리 최근 연구 동향
 
[224] backend 개발자의 neural machine translation 개발기 김상경
[224] backend 개발자의 neural machine translation 개발기 김상경[224] backend 개발자의 neural machine translation 개발기 김상경
[224] backend 개발자의 neural machine translation 개발기 김상경
 
메이크챗봇 자연어기초
메이크챗봇 자연어기초메이크챗봇 자연어기초
메이크챗봇 자연어기초
 
DeBERTA : Decoding-Enhanced BERT with Disentangled Attention
DeBERTA : Decoding-Enhanced BERT with Disentangled AttentionDeBERTA : Decoding-Enhanced BERT with Disentangled Attention
DeBERTA : Decoding-Enhanced BERT with Disentangled Attention
 
자연어5 | 1차강의
자연어5 | 1차강의자연어5 | 1차강의
자연어5 | 1차강의
 
Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)
 
Papago/N2MT 개발이야기
Papago/N2MT 개발이야기Papago/N2MT 개발이야기
Papago/N2MT 개발이야기
 

Similaire à Efficient Training of Bert by Progressively Stacking

Improving Language Understanding by Generative Pre-Training
Improving Language Understanding by Generative Pre-TrainingImproving Language Understanding by Generative Pre-Training
Improving Language Understanding by Generative Pre-Trainingpko89403
 
Transfer learning usage
Transfer learning usageTransfer learning usage
Transfer learning usageTae Young Lee
 
(in Korean) about knowledge distillation
(in Korean) about knowledge distillation(in Korean) about knowledge distillation
(in Korean) about knowledge distillationssuser23ed0c
 
MRC recent trend_ppt
MRC recent trend_pptMRC recent trend_ppt
MRC recent trend_pptseungwoo kim
 
NLU Tech Talk with KorBERT
NLU Tech Talk with KorBERTNLU Tech Talk with KorBERT
NLU Tech Talk with KorBERTLGCNSairesearch
 
[Paper Review] What have we achieved on text summarization?
[Paper Review] What have we achieved on text summarization? [Paper Review] What have we achieved on text summarization?
[Paper Review] What have we achieved on text summarization? Hangil Kim
 
JMI Techtalk: 강재욱 - Toward tf.keras from tf.estimator - From TensorFlow 2.0 p...
JMI Techtalk: 강재욱 - Toward tf.keras from tf.estimator - From TensorFlow 2.0 p...JMI Techtalk: 강재욱 - Toward tf.keras from tf.estimator - From TensorFlow 2.0 p...
JMI Techtalk: 강재욱 - Toward tf.keras from tf.estimator - From TensorFlow 2.0 p...Lablup Inc.
 
검색엔진에 적용된 ChatGPT
검색엔진에 적용된 ChatGPT검색엔진에 적용된 ChatGPT
검색엔진에 적용된 ChatGPTTae Young Lee
 
[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿AnselmKim
 
Automated program corrector for programming assignments using Deep Learning
Automated program corrector for programming assignments using Deep LearningAutomated program corrector for programming assignments using Deep Learning
Automated program corrector for programming assignments using Deep LearningSoo Kim
 
GPT-Series.pdf
GPT-Series.pdfGPT-Series.pdf
GPT-Series.pdfKyuri Kim
 
Infra as a model service
Infra as a model serviceInfra as a model service
Infra as a model serviceTae Young Lee
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
 [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Othersjdo
 
랩탑으로 tensorflow 도전하기 - tutorial
랩탑으로 tensorflow 도전하기 - tutorial랩탑으로 tensorflow 도전하기 - tutorial
랩탑으로 tensorflow 도전하기 - tutorialLee Seungeun
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투Ubuntu Korea Community
 
Wide&Deep Learning for Recommender Systems
Wide&Deep Learning for Recommender SystemsWide&Deep Learning for Recommender Systems
Wide&Deep Learning for Recommender Systemskeunbong kwak
 
Dense sparse-dense training for dnn and Other Models
Dense sparse-dense training for dnn and Other ModelsDense sparse-dense training for dnn and Other Models
Dense sparse-dense training for dnn and Other ModelsDong Heon Cho
 
생체 광학 데이터 분석 AI 경진대회 3위 수상작
생체 광학 데이터 분석 AI 경진대회 3위 수상작생체 광학 데이터 분석 AI 경진대회 3위 수상작
생체 광학 데이터 분석 AI 경진대회 3위 수상작DACON AI 데이콘
 

Similaire à Efficient Training of Bert by Progressively Stacking (20)

Improving Language Understanding by Generative Pre-Training
Improving Language Understanding by Generative Pre-TrainingImproving Language Understanding by Generative Pre-Training
Improving Language Understanding by Generative Pre-Training
 
PaLM Paper Review
PaLM Paper ReviewPaLM Paper Review
PaLM Paper Review
 
Transfer learning usage
Transfer learning usageTransfer learning usage
Transfer learning usage
 
(in Korean) about knowledge distillation
(in Korean) about knowledge distillation(in Korean) about knowledge distillation
(in Korean) about knowledge distillation
 
MRC recent trend_ppt
MRC recent trend_pptMRC recent trend_ppt
MRC recent trend_ppt
 
NLU Tech Talk with KorBERT
NLU Tech Talk with KorBERTNLU Tech Talk with KorBERT
NLU Tech Talk with KorBERT
 
[Paper Review] What have we achieved on text summarization?
[Paper Review] What have we achieved on text summarization? [Paper Review] What have we achieved on text summarization?
[Paper Review] What have we achieved on text summarization?
 
JMI Techtalk: 강재욱 - Toward tf.keras from tf.estimator - From TensorFlow 2.0 p...
JMI Techtalk: 강재욱 - Toward tf.keras from tf.estimator - From TensorFlow 2.0 p...JMI Techtalk: 강재욱 - Toward tf.keras from tf.estimator - From TensorFlow 2.0 p...
JMI Techtalk: 강재욱 - Toward tf.keras from tf.estimator - From TensorFlow 2.0 p...
 
검색엔진에 적용된 ChatGPT
검색엔진에 적용된 ChatGPT검색엔진에 적용된 ChatGPT
검색엔진에 적용된 ChatGPT
 
[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿
 
Automated program corrector for programming assignments using Deep Learning
Automated program corrector for programming assignments using Deep LearningAutomated program corrector for programming assignments using Deep Learning
Automated program corrector for programming assignments using Deep Learning
 
GPT-Series.pdf
GPT-Series.pdfGPT-Series.pdf
GPT-Series.pdf
 
Albert
AlbertAlbert
Albert
 
Infra as a model service
Infra as a model serviceInfra as a model service
Infra as a model service
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
 [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
 
랩탑으로 tensorflow 도전하기 - tutorial
랩탑으로 tensorflow 도전하기 - tutorial랩탑으로 tensorflow 도전하기 - tutorial
랩탑으로 tensorflow 도전하기 - tutorial
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투
 
Wide&Deep Learning for Recommender Systems
Wide&Deep Learning for Recommender SystemsWide&Deep Learning for Recommender Systems
Wide&Deep Learning for Recommender Systems
 
Dense sparse-dense training for dnn and Other Models
Dense sparse-dense training for dnn and Other ModelsDense sparse-dense training for dnn and Other Models
Dense sparse-dense training for dnn and Other Models
 
생체 광학 데이터 분석 AI 경진대회 3위 수상작
생체 광학 데이터 분석 AI 경진대회 3위 수상작생체 광학 데이터 분석 AI 경진대회 3위 수상작
생체 광학 데이터 분석 AI 경진대회 3위 수상작
 

Efficient Training of Bert by Progressively Stacking

  • 1. Efficient Training of BERT by Progressively Stacking huffon
  • 2. Contents ▪ Abstract ▪ Introduction ▪ Related Work ▪ Method ▪ Experiments ▪ Conclusion and Future Work
  • 3. Efficient Training of BERT by Progressively Stacking
  • 4. Abstract ▪ Unsupervised pre-training은 최신 자연어 처리 분야에서 널리 사용되는 기법 (e.g. BERT, GPT-2…) ▪ 적절한 Unsupervised prediction task를 통해 훈련된 DNN은 많은 NLP Task들에서 좋은 성능 보임 ▪ 웹 사이트로부터 데이터를 수집해 하나의 언어로 구성된 거대한 데이터셋을 만드는 것은 굉장히 쉬운 일이기 때문에, 우리는 대용량의 모델을 쉽게 훈련시킬 수 있음 (e.g. BERT는 Wikipedia로부터 2,500M+α개의 단어를 긁어와 훈련) ▪ 데이터셋 구하는 것은 OK. 모델을 쌓아 올리는 것도 OK. 문제는 Training efficiency를 늘리는 것 ! After BERT…
  • 5. ▪ 잘 훈련된 BERT model 내 서로 다른 Layer에서 문장의 self-attention 분포를 시각화해본 결과, 대부분의 Layer에서 self-attention은 해당 단어와 인접한 단어, start-of-sentence(CLS) 토큰에 집중되는 것을 확인 ▪ 해당 결과에서 영감을 얻어, 얕은 모델의 지식(Training result)을 깊은 모델에 넘겨주는 “stacking algorithm” 고안 ▪ 결과를 넘겨주는 것 뿐만 아니라 Progressive하게 얕은 모델을 2배 씩 쌓아(stacking) 올려 나가도록 해보자 ! Abstract Neighborhood & [CLS]
  • 6. Introduction ▪ DNN의 성공 배경으로는 ‘개선된 신경망 아키텍처’와 ‘라벨링 된 수많은 양의 데이터셋’을 꼽을 수 있음 그러나, 모든 데이터에 인간이 직접 라벨링을 다는 작업은 매우 비용이 많이 드는 작업 ! ▪ 자연어 처리에서 Unsupervised pre-trained model(like. BERT)을 사용해 Transfer Learning을 하는 것은 라벨링 된 데이터가 충분하지 않을 때 취할 수 있는 가장 효과적인 방법 ▪ Wikipedia corpus로 학습된 Word embedding은 문장 분류 / 문장 유사도 Task의 성능을 효과적으로 개선하였고, Pre-training을 통해 문맥까지 학습하고자 하는 시도(BERT, GPT-2)는 Word embedding 보다 더 효과적이었음 ▪ 현재 가장 성능이 좋은 BERT는 Masked Language modeling과 next-sentence prediction task를 통해 훈련됨 ▪ 해당 Task들은 인간의 간섭을 필요로 하지 않기에, 투입 가능한 Training data는 수 십 억 개의 토큰이 될 수도 있음
  • 7. Introduction ▪ 따라서 BERT와 같이 큰 모델을 사용하기 위해서는 훈련 성능의 개선이 필수적이며, 좋은 성능의 Hardware를 사용해야만 BERT의 사용이 가능하다는 것 자체가 해당 모델을 실용적으로 사용하지 못하게 저해하는 요인 ▪ 이러한 문제를 해결하기 위해 BERT 모델의 훈련 성능을 향상하기 위한 알고리즘적 접근 방안 고안 ▪ 얕은 BERT 모델과 깊은 BERT 모델의 self-attention layer들을 시각화한 결과 다음과 같은 특징을 발견 1) 얕은 모델의 attention은 서로 다른 layer에서 모두 비슷한 분포를 보임 - 첫 번째 분포는 local attention: head가 자신과 인접한 Token들에 attention을 취하는 모습 - 두 번째 분포는 CLS: head가 start-of-sentence token에 attention을 취하는 모습 2) 1번에서 언급한 얕은 모델의 attention 분포가 깊은 모델의 attention 분포에서 비슷하게 나타남
  • 8. Introduction “ Shallow model과 Deep model의 attention distribution이 비슷하니, Shallow model의 training result(trained parameters)를 Deep model에 공유해서 사용할 수 있겠군 ! “ ▪ Shallow model A의 훈련을 마친 후 해당 모델 위에 같은 사이즈의 Shallow model B를 쌓아 Deep model로 만든 후, Shallow model A의 trained parameter를 위에 추가로 쌓은 shallow model B에 copy해 사용하자 !
  • 9. Related Work: Unsupervised Pre-training in NLP ▪ Word2Vec은 대부분의 SOTA NLP 아키텍처에서 필수적으로 사용되어 온 정석적인 기법이지만, 학습된 word vector가 문맥이 아닌 단어 하나의 의미론적 표현만 포착할 수 있다는 한계를 지님 ▪ Pre-trained contextual representations 모델들은 주변 문맥을 고려하며 Word2Vec의 약점을 극복 1) ELMo는 LSTM을 쌓아 올려 Language model을 학습시키는데, LSTM은 단어를 순차적으로 처리하기 때문에 한 지점에서의 hidden state는 이전에 위치한 단어들의 정보까지 포함. 이에 따라 단어의 의미론적 표현 뿐 아니라 문장의 맥락 정보 까지 얻을 수 있게 됨 ! 2) BERT는 stacked-LSTM 대신 self-attention을 사용해 Masked language modeling task를 구축하였고, 문장의 맥락 정보를 attention 통해 얻음. 이후 다양한 NLT task에서 SOTA 기록 !
  • 10. Related Work: Network Training by Knowledge Transfer ▪ 우리가 제시하는 iterative training 방법론은 Knowledge Transfer(“Net2Net”)와 굉장히 유사 ▪ Net2Net은 얕은 모델을 가지고 있을 때 어떻게 깊은 모델을 효과적으로 확장해 훈련시킬 수 있을지에 대해 다룸 : 이 때, function-preserving initialization을 제안하는데, 이는 깊은 모델이 얕은 모델과 같은 function을 수행하도록 초기화한 후 optimization method에 의해 차후 훈련되도록 하는 단순한 방법 ▪ +) PR-12에서 Net2Net 리뷰한 동영상 참조하면, Knowledge Transfer 개념 이해하는데 좋을 것 ! ( 8분 40초 ~ ) : https://youtu.be/btsZOMsyH_o?t=520 ▪ 그러나 Transformer는 굉장히 정교하고 복잡한 구조를 지니고 있어, 해당 기법을 적용하기에 적합하지 않음 : Feed-forward layer를 0에 가깝게 설정하고, self-attention layer를 random하게 초기화하는 것이 Transformer에서의 function-preserving initialization 일텐데 이렇게 하면 self-attention이 전혀 훈련되지 않는 문제 !
  • 11. Method ▪ BERT 내부 메커니즘을 분석해보기 위해 self-attention layer를 12개 쌓아 올린 12-layer BERT 모델을 훈련 ▪ 이후, corpus에서 랜덤하게 한 문장 추출해 서로 다른 layer의 head attention 분포를 시각화 1) 다시 말하지만, head가 ‘local attention’과 ‘CLS’ 토큰에 집중하는 분포를 보임 : 이는 하나의 Token을 이해하기 위해 이웃 정보와 시작점(global information)이 중요함을 시사! 2) 이 분포는 Low-level layer들과 High-level layer에서 공통적으로 나타남: ‘훈련을 해도 얼추 비슷하구만 ! ‘
  • 12. Method ▪ L개의 Layer를 가지는 BERT 모델이 있다면, 우리는 해당 모델을 쌓아 올려 2L Layer BERT를 만들 수 있음 ▪ for i <= L 일 때, i번째 layer와 i+L번째 layer의 파라미터를 같게 설정 (e.g. L=3일 때 , 1번 layer와 4번 layer의 파라미터를 맞춤) ▪ 얕은 모델은 대개 깊은 모델보다 빠르게 훈련되므로, 얕은 모델을 쌓아 올리는 것이 깊은 모델을 한 번에 훈련시키는 것 보다 더 빠르게 수행될 것이며, 우리는 해당 기법을 “Progressive stacking “이라 부름 e.g.) L = 12, k = 2 1. 12/4 => ‘3-Layer BERT’ 초기화 2. 3-Layer BERT Training <반복문 시작> 3. (i=1, k=2) 3-Layer + 3-Layer Stacking & 6-Layer BERT Training 4. (i=2, k=2) 6-Layer + 6-Layer Stacking & 12-Layer BERT Training <반복문 종료> 5. return 12-Layer BERT
  • 13. Experiments ▪ Wikipedia corpus와 BookCorpus를 사용해 대략 3400M개의 단어를 얻었으며, 이는 BERT와 유사한 수준 ▪ Baseline으로 사용하기 위해, 12-layer BERT-base model을 훈련 시킴 400,000번의 Train step을 거쳤으며, 매 step 마다 122,880개의 Token을 batch로 전달 ▪ 실험 모델은 3-Layer BERT를 50,000번, 이후 stacking을 거쳐 6-Layer BERT를 70,000번, 마지막 stacking 후, 12-Layer BERT를 280,000번 훈련시켜 총 400,000번의 Train step을 baseline과 맞춤 ▪ Optimizer로는 Adam을 사용하였으나, Stacking을 적용하는 모델에는 매 stacking 이후 이전 optimizer state들을 초기화 시켜 주었음
  • 14. Experiments ▪ 훈련 결과를 비교해보니 실험 모델은 Baseline과 유사한 validation loss를 기록했으며, 이에 더해 훈련 시간은 25% 감소했음 (338 hours vs. 441 hours) ▪ Convolutional network에서 주로 사용되는 Knowledge Transfer 기법 identity와도 비교해보았으나, 유의미한 결과 도출하지는 못함
  • 15. Experiments ▪ 첫 번째 행: 6-Layer BERT model에서 랜덤하게 뽑은 6개 문장의 head attention 분포 ( 1~6 Layer ) ▪ 두 번째 행: 6-Layer + 6-Layer BERT model에서 동일한 6개 문장의 head attention 분포 ( 7~12 Layer ) +) 추가 훈련을 진행하지 않은 상태이기 때문에 Original과 파라미터가 같으며, 그림은 추가적으로 쌓아 올린 6-Layer의 attention 분포 ▪ 세 번째 행: 두 번째 행의 12-Layer BERT model을 70,000번 더 학습 시킨 후의 head attention 분포 ( 7~12 Layer, Original과 유사 )
  • 16. Experiments ▪ 이러한 결과에도 기존 BERT 모델과 같이 NLP Task에서 좋은 성능을 낼 수 있을까라는 의문이 들 수 있음 ▪ 이를 증명하기 위해 BERT-base model과 stacking algorithm을 적용한 실험 모델을 NLP Task에 적용해 결과 비교 ▪ 실험 모델은 더 적은 시간을 들여 훈련되었음에도 불구하고, 경쟁력 있는 결과를 도출 이는 굉장히 흥미로운데, 같은 Training step을 밟았다 하더라도 우리 모델은 얕은 모델에서의 훈련을 포함하기 때문 ▪ 결과적으로 progressive stacking algorithm 을 적용한 모델이 더 빠르게 훈련되었고, 경쟁력 있는 성능까지 달성 !
  • 17. Conclusion and Future Work ▪ BERT의 훈련 성능을 개선하기 위해 잘 훈련된 BERT 모델의 self-attention의 분포를 시각화해본 결과, self-attention은 대개 local-attention을 취하거나 CLS(start-of-sentence token)을 취한다는 사실을 알게 되었음 ▪ 해당 사실에 힘입어 progressive하게 얕은 모델을 stacking하는 알고리즘을 고안하였고, 결과는 성공적이었음 ▪ 이후, 기계번역, 텍스트 요약 등 self-attention layer를 사용하는 다른 어플리케이션에도 우리의 Train algorithm이 적용될 수 있을 것인지에 대한 추가 실험을 진행해볼 것임 +) 이미 훈련된 파라미터를 재사용해 더 큰 모델의 학습을 가속화 시킬 수 있는 더 나은 방안이 있는지도 궁금해짐 !
  • 18. <EOP>