BERT를 가볍게 만드려는 시도 - ALBERT 모델 공부하기

1. introduction

 

A Lite BERT, 가벼워진 BERT

 

그동안 NLP 모델들은 대규모의 parameter를 가지는 괴물 모델로 발전해왔다. 그것이 정말로 좋은가?

 

많은 경우에 메모리 사용량은 한정되어있고 대규모 모델은 학습속도가 매우 느리며 시간도 엄청 필요하다.

 

특별한 방법으로 성능의 큰 하락없이, 오히려 더 좋아지면서 model의 size를 줄이고 학습시간을 빠르게하는 방법을 제시했다.

 

 

2. Factorized embedding parameterization

 

self-attention block은 residual connection을 수행하는데 input과 output을 더해야한다는 점이 특징이다.

 

이것은 input과 output의 size가 동일해야 가능하다.

 

이 output hidden vector의 size가 너무 크면 연산량 증가로 문제

 

너무 작으면 input word의 정보저장공간이 작아지면서 encoding이 제대로 안되는 문제도 있다.

 

layer를 계속 쌓아나간다는 것은 high level에서도 input의 의미론적으로 유의미한 정보를 추출할 수 있어야한다.

 

ALBERT 연구자들은 input word vector들은 서로 독립적으로 embedding된다는 점에 주목했다.

 

high level의 hidden vector들은 sequence의 전체적인 context정보를 담아야하니 많은 공간이 필요하지만

 

첫번째 layer로 들어가는 input word vector의 저장공간은 이에 비해 상대적으로 적은 공간만 있어도 충분할 것이다.

 

factorized embedding parameterization의 직관적인 그림

 

V가 vocab size, H가 hidden size이면 input의 word embedding은 V*H size가 원래 기본

 

그런데 word embedding dimension으로 E를 주어 첫 embedding을 V*E로 만들고 첫 layer에 통과

 

그리고 그 layer 이후 size를 H로 늘려주는 layer를 하나 추가하겠다는 것이다.

 

그러면 여전히 matrix 곱을하면 V*H로 residual connection은 가능하다.

 

Instead of projecting the one-hot vectors directly into the hidden space of size H, we first project them into a lower dimensional embedding space of size E, and then project it to the hidden space.

 

결과는 같은데 실제로 연산량이 줄었을까?

 

V*H로 넣은 경우는 O(VH)지만 V*E로 넣고 E*H를 곱하여 size를 늘리는 연산은 O(VE+EH)이다.

 

This parameter reduction is significant when H>>E

 

H가 E보다 충분히 클때 의미있는 reduction이 일어난다.

 

low rank matrix factorization에 기반했다고???

 

----------------------------------------------------------------------------------------------------------------------

 

3. low rank matrix factorization

 

https://arxiv.org/pdf/1507.00333.pdf  

 

low rank matrix factorization은 주어진 데이터 matrix를 압축하는 표현을 제공하는 중요한 기법인것 같다.

 

 

basic 방법만 하나 살펴보면 주어진 데이터 matrix X와 X보다 차원이 적은 두 행렬 U,V(X의 차원보다 충분히 적은)에 대하여

 

X와 $UV^{T}$의 거리가 최소가 되는 행렬 U,V를 찾는 것이다.

 

거리가 최소면 X랑 $UV^{T}$는 비슷한데, 그래서 X를 차원이 적은 두 행렬 U,V의 곱으로 분해할 수 있다는거지

 

 

실제 계산은 Gradient descent로 찾을 수 있다 뭐 이런 식으로 이야기 하고 있음

 

ALBERT에서는 이 방법을 썼다는 언급은 아예 없는데 충분히 적은 차원을 가진 두 행렬의 곱으로 분해하고 있다는 점에서 그냥 맞는 것 같은데?

 

ALBERT가 제시된 논문 일부

 

latent space로 보낸다는거랑 lower dimensional embedding space of size E랑 동일한 이야기 같은데

 

그냥 저기 Gradient descent로 U,V 찾는 과정이 딥러닝 학습하는 과정이랑 근본적으로 동일한 것 같은데?

 

근데 이제 딥러닝 모형관점에서 살펴보면 X를 U로 만드는 가중치행렬 $W^{U}$를 학습하고

 

V라는 선형변환을 가지는 layer에서 V를 학습하고 아니 그냥 동일한데?

 

 

4. cross layer parameter sharing

 

1개의 self-attention block에서 가지는 parameter는 Q,K,V를 만드는 행렬 $W^{Q}$,$W^{K}$,$W^{V}$ 3개에

 

head수 H를 곱한 3H만큼에 multi head attention 결과로 나온 차원을 줄이는 선형변환행렬 $W^{O}$

 

self-attention block을 쌓아나가면 이러한 parameter들이 block별로 있으며 당연히 block별로 이 parameter들은 다르다.

 

그런데 이제 이 사실에 의심을 가진 것이다.

 

self attention block들의 parameter인 $W^{Q}$,$W^{K}$,$W^{V}\times H$ ,$W^{O}$를 전부 같게하는 shared parameter로 만들어 전체적인 parameter수를 줄여보겠다.

 

연구자들은 3가지 경우를 제시했다.

 

첫번째로 self-attention block의 마지막 Feed Forward Neural Network의 행렬 가중치를 동일하게 하는 방법

 

두번째로 오직 attention block의 가중치 $W^{Q}$,$W^{K}$,$W^{V}\times H$ ,$W^{O}$만을 전부 동일하게 하는 방법

 

마지막으로 1번, 2번을 통합한 모든 가중치를 동일하게 하는 방법

 

 

 

not-shared에 비해 all-shared는 parameter가 압도적으로 줄었는데

 

둘의 성능은 크게 차이나지 않는다

 

 

5. sentence order prediction

 

많은 연구자들이 BERT의 pre-training task인 next sentence prediction이 너무 쉽다는 점을 지적했다.

 

무슨말이냐면 하지 않아도 크게 성능이 떨어지지않고 하더라도 성능 향상에 큰 차이가 없다는 의미임

 

직관적으로 왜 쉬운지 생각해보면 2개의 문장을 임의로 뽑아 <sep>로 구분하여 input을 넣는 방식으로

 

next sentence prediction을 수행하는데 2개의 문장이 서로 상이한 category의 document에서 나왔다고 생각해보자.

 

그러면 그 2개의 문장은 문장을 구성하는 단어의 단순 유사도 측면에서 상이할 가능성이 높다. (정치 문서와 과학 문서에서 사용하는 용어는 차이가 있을것)

 

그래서 model이 단순 유사도만을 보고 next인지 아닌지를 판단한다는 것이다. 단어들이 심하게 차이나면 그냥 next가 아니다라고 판단해버린다.

 

원래 의도는 두 문장의 자연스러운 논리적인 흐름을 이해하는, 미묘한 고차원적인 언어의 흐름을 이해하여 학습하길 바랐는데 그냥 단순한 잡기술로 학습해버린다는 점을 지적한 것이다.

 

그래서 하나의 주제를 가지는 카테고리에서 임의로 서로 인접하는 두 문장 A,B를 뽑아온다.

 

정말로 논리적인 흐름을 파악하는지 알기위해 A,B는 무조건 인접하는데 정답인 순서와 역방향 순서인 A<SEP>B나 B<SEP>A로 input을 준다.

 

참고로 원래 순서에서 역방향으로 만든 sample을 negative sample이라 한다.

 

아무튼 이렇게 주어지는 setting에서 문장의 순서를 예측하는 prediction 문제를 sentence order prediction이라 한다.

 

 

실험표를 보면 NSP(Next Sentence Prediction)를 하는 것과 NSP를 하지 않는 것에 큰 차이가 없다는 점

 

SOP(Sentence Order Prediction)를 했을때 성능이 전체적으로 높다

 

GLUE test 결과 경량화시킨 ALBERT가 오히려 BERT보다 성능이 좋다는 결과를 보였다

 

 

 

참고로 ALBERT중에서도 parameter가 더 큰 1.5m짜리가 성능이 1m에 비해 좋다는 점도 주목할만하다

 

 

TAGS.

Comments