본문 바로가기
  • CobsLab upgrades your company value by AI technology
자연어 처리 논문

GTRANS-Grouping and Fusing Transformer Layers for Neural Machine Translation

by dmkdmk 2023. 1. 13.

안녕하세요 콥스랩(COBS LAB)입니다.

오늘 소개해 드릴 논문은 ‘GTRANS-Grouping and Fusing Transformer Layers for Neural Machine Translation'입니다.

해당 내용은 유튜브 ‘딥러닝 논문 읽기 모임' 중 ‘GTRANS-Grouping and Fusing Transformer Layers for Neural Machine Translation’ 영상 스크립트를 편집한 내용으로, 영상으로도 확인하실 수 있습니다. (영상링크:https://youtu.be/DgqnbETZNZw)

논문요약부터 간단하게 보여 드리겠습니다.

 

논문은 트랜스포머 모델의 Multi level layer의 어떤 정보들을 활용해서 fusion 방식을 통해서 그 정보를 잘 취합해서 기계 번역 과제에서의 성능을 향상시키는 방법을 제안하는 논문입니다.

 

기존의 문제점을 두 가지로 볼 수 있습니다. 첫 번째로 Vanila 트랜스포머layer depth deep하게 학습시키는 것이 상당히 어려우며 성공하더라도 성능 향상이 크게 되지 않는 문제가 있었습니다. 또한 트랜스포머 모델은 encoder-decoder 모두 Top level representation를 사용하기 때문에 low level에서 어떤 정보들이 잘 활용되지 못한다는 문제가 있습니다.

 

그래서 이런 것들을 해결하기 위해 pre norm residual unit을 사용하던지 low level layer 정보에 더 집중을 한다든지 하는 다양한 연구 시도가 있었습니다. 이런 방식 모두 deep 한 곳에선 성공을 했지만 shallow layer setting에서는 오히려 트랜스포머 Vanila 보다도 성능향상이 낮거나 미미한 정도도 있었습니다.

 

decoder에 어떤 Multi layer attention을 잘 활용하는 연구가 거의 없습니다. 그래서 이 저자들은 전체 encoder decoder layer를 그룹으로 나눠서 그룹마다 어떤 가중치를 두어서 정보를 취합하는 encoder fusion, decoder fusion 방식을 제안합니다.

 

방법론 자체는 꽤나 간단합니다. 저자들이 실험을 bilingual & multilingual Translation setting 그리고 데이터셋 크기에 따라서 high - med - low levelresource에서 어떤 데이터  setting 그리고 모델 크기에 따른 deep shallow setting 모두에서 실험 평가를 했고 기존 연구들보다 일관되게 뛰어난 성능을 보이는 것을 보였습니다.

 

또한 자세한 어느 실습을 통해서 이런 Multi level feature를 활용하는 것이 deep한 모델 그리고 longer sentence에서 어떤 key 역할을 하는 것을 보였으므로 그런 부분 때문에 이 논문을 소개하게 되었습니다.

배경입니다.

 

먼저 설명드릴 내용은 트랜스포머 모델의 layer를 더 deep하게 하는 것입니다. 기계번역 과제에서는 트랜스포머 모델을 사용해서 많은 성능 향상이 있었습니다.

 

트랜스포머 모델은 sequence to sequence 형식의 encoder decoder 형식의 모델입니다. 이런 모델의 layer 수를 더 키우는 것이 일반적으로 다양한 과제에서 성능향상을 만듭니다. 특히나 multilingual translation 예를 들어서 하나의 모델이 한국어에서 영어, 영국에서 프랑스어 이런 식으로 다양한 Multilingual Translation을 가능하게 하기 위해선 각 layer마다 되게 풍부한 표현을 담아낼 수 있어야 되기 때문에 deeplayer가 중요합니다. deep 하게 만들수록 수렴하기가 어려워지며 성능이 오히려 low resource setting에서는 떨어지는 경우도 있습니다.

 

Vanila 트랜스포머를 deep하게 만들려면 몇몇 연구에서는 훈련 자체가 gradient vanishing or exploring 때문에 안 되는 경우도 있다고 보고하고 있습니다.

기존 연구는 또 다른 해결책도 제시 했습니다.

 

트랜스포머 Vanilalayer Normalization을 뒤에서 수렴하는 post norm 방식이라고 보통 얘기합니다. 기존 연구에서 이런 layer Normalization을 뒤에서 하는 방식이 좀 문제가 있다고 주장을 하고 pre norm 방식으로 deep 하게 트랜스포머를 학습하는 데 성공하기도 했습니다.

 

위 그림은 이전 연구에서 가져온 자료입니다. 보시다시피 트랜스포머에서 두 번째 feed forward을 보시면은 입력이 있다고 했을 때 입력이 feed forward 네트워크에 들어가고 그다음에 residual connection에 들어간 다음에 layer Normalization에 들어가게 됩니다.

일반적인 기본 트랜스포머를 보시면 됩니다. 이렇게 되면은 오리지널 인풋이 residual connection을 거치고 layer Normalization이 되기 때문에 우리가 원하는 residual connection에 오리지널 인풋이 들어가는 그런 역할이 최종적으로는 normalize 때는 오리지널 인풋이 들어가게 됩니다.

 

Pre norm을 보시면 인풋에 대해서 먼저 layer norm을 하고, feed forward 하고 residual connection을 수행하기 때문에 우리가 그 residual connection에서 기대하는 것은 오리지널 인풋에 어떤 distribution을 망가트리지 않도록 하는 것을 원하는데 보시다시피 Normalization이 수행되지 않은 오리지널 인풋이 residual connection에 통해 들어가기 때문에 좀 더 robust 한 학습이 가능하다고 얘기를 합니다.

 

실제로 다양한 연구들에서 성능 향상 또는 어떤 안정적인 convergence에 대해서 얘기를 했고 그래서 이 machine Translation에서도 어떤 pre norm을 통해서 deep 한 트랜스포머를 학습시키는 데 성공한 사례가 있었습니다.

그러나 pre norm 방식은 deep한 setting에서는 학습에 성공하지만 shallow setting에서는 오히려 post Norm Vanila 트랜스포머보다 성능이 낮습니다. post norm 방식은 deep 하게 모델을 훈련 하는 것이 실패한다는 것이고 pre norm 방식은 deep하게 가능하기는 하지만 shallow 기준으로는 post Norm보다 성능이 오히려 낮습니다.

 

그래서 저자들은 post Norm 방식을 deep하게 만드는 방법은 없을까에 대해 얘기합니다. 이 부분에 대해서 아시는 분은 아시겠지만 일반적인 자연어처리에서 사용되는 페어식이나 허깅페이스 트랜스포머 이런 것들을 보시면 post Norm이나 pre Norm 방식을 둘 다 사용 가능하도록 구현되어 있는 경우가 많습니다.

 

각 연구마다 그 연구의 어떤 성향이나 목표를 따라서 post Norm을 사용하는 방식도 있고 pre Norm을 사용하는 방식도 있습니다.

 

그러나 대부분의 deep setting 자체는 post Norm 방식이 스탠다드임을 미리 말씀드립니다.

두 번째는 트랜스포머 Vanila가 encoder-decoder 모두 Top layer representation만 사용한다는 것입니다.

 

encoder를 생각해 보시면 last encoder layer representation이 decoder layer의 각각의 layer에서 encoder decoder attention으로 활용됩니다. 

 

Decoder는 최종 logit을 계산할 때 last decoder layer representation만 사용합니다. 그런데 최근 많은 연구들이 다양한 태스크에서 low level이나 아니면 medium level representation을 사용하는 것 또한 도움이 된다고 얘기하고 있습니다.

 

그래서 저자들은 machine Translation에서 이런 Multi layer feature를 어떻게 최대한 많이 활용할 수 있을지에 대해서 얘기합니다.

기존 연구들을 보시면 Deepen the Transformerpre norm residual unit을 사용하고 linear Combination을 통해서 다른 층에 layer 또한 어떻게 활용해보려고 합니다. 이 방식은 같은 layer 수로 놨을 때 post norm보다 성능이 떨어지고 그다음에 decoder에 Multi layer feature를 활용하는 연구들은 거의 없습니다.

 

encoder에서 활용하는 방식들은 꽤나 존재했지만 MLRF라는 방식은 encoder-decoder 모두 low layer 피처를 사용하려고 했지만 shallowdepth에서의 트랜스포머 setting에서 성능향상이 거의 없었습니다.

 

그래서 저자들은 machine Translation 과제에서 deep 한 상태나 shallowsetting 모두 아주 잘 작동하는 machine layer fusion 방식을 제안합니다.

먼저 Multi layer representation fusion입니다.

 

Hidden state가 layer별로 총 아홉 개 존재합니다. 보통 single layer representation라고 얘기하면 sequential 한 어떤 feed forward operation 통해서 first state가 operation을 통해서 forward가 되고 마지막 last layer의 representation이 나온 다음에 이것을 활용하게 됩니다.

 

Multi layer representation라고 한다면 여기서 주장하는 Multi layer representation은 먼저 이렇게 인접한 어떤 layer들의 grouping을 수행합니다. 여기서는 아홉 개를 세 개씩 해서 총 3개의 그룹을 만들었고 이 각 그룹에 대한 representation을 합쳐서 최종적인 어떤 하나의 h9와 같은 사이즈의 Multi layer representation를 만듭니다.

이 저자들이 말하는 이런 방법론을 여기서 Group Transformer 또는 GTrans라고 일컫습니다.

 

이는 2가지 방식이 존재합니다. encoder representation fusion 그리고 decoder representation fusion이 있습니다. 둘 다 전체 각 layer의 스택을 먼저 그룹화를 하고 fusion 한다는 방식은 똑같은데 세부 방식에서 약간의 차이가 존재합니다.

 

먼저 그림으로 간단하게 설명드리면 encoder 보시면은 각 그룹이 나눠져서 두 개씩 해서 총 3개의 그룹이 존재합니다. 그러면 encoder는 각 그룹마다 last layer의 representation만 활용하는 것을 볼 수 있습니다. 각각 그룹의 last layer representation를 활용해서 어떤 fusion 함수를 통해서 최종적으로 representation를 만듭니다. encoder representation는decoder에 encoder decoder representation 서브 layer에서 attention을 수행하게 됩니다.

 

decoder fusion 같은 경우에는 약간 다릅니다. 그룹이 2개로 나눠져 있고 각 그룹마다 세 개씩 있다는 가정하에 보시면 decoder 같은 경우는 각 그룹 내에 전체 layer에 먼저 Fused 피처를 하나 만들어야 합니다. 그러니까 그룹이 두 개라서 Fused 피처가 2개가 나오게 됩니다.

 

이 2개 Fused 피처를 다시 한번 fusion 함수를 통해서 하나로 합쳐서 최종 prediction을 만들어 냅니다.

이거에 대해 수식적으로 말씀드리겠습니다. 먼저 encoder representation fusion입니다.

 

L개 layer를 가지고 있는 encoder가 있다고 치면 어떤 L개의 hidden state를 가지고 있습니다. 이거에 대해서 어떤 fusion function을 써서 fusion representation hf을 만들고 싶어 합니다.

fusion function은 보시다시피 간단한 구조입니다. 

 

어떤 hidden layer representation가 존재하고  layer representation에 대해서 weighted sum을 수행하는 방식으로 진행됩니다. 앞에 있는 layer Normalization을 Normalization을 하기 위해서 필요한 거고 우리가 어떤 representation을 만드는 거기 때문에 이 가중치에 대해서 non linear activation이 sigmoid 함수가 들어가 있습니다. 그다음에 average sum을 하기 위해서 앞에 각 그룹에 대한 Sum + averaging이 들어가 있습니다.

 

특이한 점은 h에 알파가 쓰여 있는데 각 그룹마다 그림에서 보시다시피 representation을 선택을 할 때 그룹 내에서의 가장 마지막 layer를 선택하겠다는 말입니다. 간단하게 말씀드리면 그룹이 n개일 때 n개 그룹에서의 각각의 마지막 layer의 representation를 선택해서 그것들을 다중 합한 결과가 encoder representation fusion 결과입니다.

두 번째로 decoder representation fusion입니다.

 

decoder layer는 encoder decoder attention을 수행하는데 아까 전에 만들었던 Fused encoder representation를 가지고 encoder attention을 수행합니다.

 

decoder 또한 각 layer마다 hidden state가 존재하고 encoder랑 다르게 각 그룹마다 어떤 Fused representation를 구합니다. 구하는 방식은 같습니다.

 

그 구도안에서 각각의 layer에 나오는 representation을 가지고 가중합을 구해서 각 그룹마다의 representation을 만들어냅니다. 그것이 hkdf입니다.

최종적인 probability를 구하기 위해서 아까 전에 만들었던 각각의 logit이 있습니다. hidden state가 그룹별로 있고 각 그룹마다 먼저 logit을 만들어서 softmax를 취해서 각 그룹마다 아웃풋을 확률로 만들어 냅니다. 그리고 그 확률마다 가중합을 마지막으로 한 번 더 진행을 해서 각 그룹마다에 확률을 앙상블 하는 형식이랑 비슷합니다. weighted sum을 통해서 최종확률을 구합니다. 여기서 프사이는 확률로 만들기 위해서 어떤 normalize 하는 스칼라 값이라고 보시면 될 것 같습니다.

최종적으로 이렇게 loss function을 만들어 내게 됩니다.

 

일반적인 훈련 방식이랑 거의 똑같지만 그룹마다 parametrized 된 어떤 loss weight 아까 보여 드렸던 프사이 w가 존재해서 각 그룹마다 gradient propagation이 일어나게 됩니다.

 

이거에 대해서 저자들이 공개한 훈련 코드를 보시면 먼저 두 가지 fusion이 있습니다.

 

첫 번째는 decoder fusion weight이 존재하는데 각 그룹마다 각 그룹에 layer들의 fusion representation를 구하는 겁니다. 그래서 보시다시피 sigmoid 함수를 통해서 activation을 만들어냅니다. 그렇게 해서 x를 구해내고 마지막으로 loss weight이라고 존재하는 게 프사이입니다.

 

프사이가 Normalization 통해서 softmax를 취해서 스칼라 값으로 나오게 되고 그걸 통해서 각 그룹마다 나왔던 확률값에 대해 weighted sum을 취해주면 최종적인 어떤 Probability가 나오게 됩니다.

방법론을 간단하게 정리한 것입니다.

 

encoder representation fusion 같은 경우는 원래 Vanila는 encoder에서 last layer만 사용한다면 각 그룹마다의 마지막을 사용한다고 보시면 될 것 같습니다. 각 그룹마다 얼마나 이 정보를 활용할지는 가중치가 matrix layer에서 훈련하면서 업데이트됩니다.

 

decoder도 거의 동일합니다. decoder도 Vanila는 last decoder layer를 사용했지만 여기서는 각 decoder 그룹에서 나온 정보를 잘 취합해서 만들어집니다. encoder랑 다른 점은 encoder는 라스트 그룹에 layer만 사용한다면 여기선 각 그룹마다 먼저 모든 layer의 정보를 다 취합한 다음의 각 그룹마다 나온 probability를 weighted sum을 통해서 최종 probability를 구한다는 차이점이 있습니다.

 

여기까지가 방법론이었습니다.

방법론 자체는 보시다시피 거의 weighted sum만이 들어가 있어서 상당히 쉬운 편에 속했습니다. 이런 간단한 방식으로도 정말 다양한 그리고 되게 자세하게 분석한 이 결과에서 모든 기존 방식보다 더 좋은 성능을 보였다는 게 중요한 의미를 가집니다. 

 

그래서 실험 setting을 자세하게 보겠습니다. 먼저 데이터셋 같은 경우는 두 가지 setting으로 만들었습니다. 첫 번째가 bilingual setting이고 두 번째가 multilingual setting입니다.

 

bilingual는 어떤 language pair가 존재하고 그 language pair 간의 번역만 집중하는 경우입니다. IWSLT14 보시면 German to English, LDC를 보시면 Chinese to English, WMT14를 보시면 English to German 이런 식입니다. 보통 싱글 direction이 아니라 두 가지 direction을 둘 다 수행하는 경우가 있지만 여기서 싱글 direction으로 수행했다 보시면 되겠습니다. 그리고 데이터셋에 크기 또한 상당히 차이가 많이 나는 것을 볼 수 있습니다.

 

이렇게 다양한 resource setting에서의 실험을 모두 진행해 봤다고 보시면 될 것 같습니다.

 

multilingual setting는 어떤 하나의 모델 가지고 multilingual 하게 기계 번역이 가능한지를 보는 테스트라고 보시면 될 거 같습니다. 그래서 IWSLT17 같은 경우는 5개의 언어쌍, 그리고 OPUS 같은 경우는 94개의 정말 많은 언어쌍을 사용했습니다.

비교 모델은 이전에 기존의 연구들과 그리고 pre Norm residual 방식과 Post Norm residual 방식을 비교를 했습니다. 아쉬운 점은 최근 연구가 부족하다는 점입니다. 연구들의 가장 최신 버전이 2020년 말에 나왔던 논문이라서 그런 부분은 아쉬웠습니다.

 

괜찮았던 점은 각 데이터마다 deepsetting 또는 shallowsetting 모두 실험을 진행해 보았다는 점입니다. 여기 지금 LDC 중국어, 영어 같은 경우에는 setting을 각각 다르게 한 것을 보실 수 있습니다.

 

6-6, 12-12, 12-6 이런 식으로 쓰여 있는 것은 encoder와 decoder의 layer 를 말합니다. 그래서 첫 번째 같은 경우는 6개 encoder layer, 6개 decoder layer, 그다음에는 12개 encoder layer, 12개 decoder layer, 12개의 encoder layer, 6개 decoder layer 이런 식으로 진행했습니다.

 

트랜스포머 base, small, big 이런 것은 나머지 하이퍼 파라미터 setting이 이런 것들을 따랐다고 보시면 될 것 같습니다.

 

다양한 setting 해서 실험을 진행한 것을 볼 수 있습니다.

실험결과입니다.

 

테이블 1, 2, 3가 존재합니다. 이 세 가지는 아까 말씀드렸던 bilingual setting에서의 결과들을 보여주고 모두 BLEU 스코어를 기준으로 진행하고 있습니다. BLEU 스코어만 가지고 진행했지만 여기서 통계적으로 유의한 지도 다 key, vallue값을 확인했습니다.

 

테스트 셋 또한 다양하게 존재하는데 모든 테스트 셋에서 기존 연구들 보다 일관되게 1점 이상의 BLEU 스코어보다 높은 것을 볼 수 있습니다. 그리고 테이블 2를 보시면은 encoder가 6개, decoder가 layer 6개입니다. 6x6경우에 De > EN이나 En > De 둘 다 성능이 1점 이상 성능이 좋은 것을 볼 수 있고 12 x 12에서는 더 deepsetting에서 또한 일관되게 성능 향상을 가져온 것을 볼 수 있습니다.

 

bilingual setting에서 모두 일관되게 여러 언어쌍에서 좋은 성능을 보였습니다.

Multilingual setting입니다.

 

Multilingual setting은 다양한 언어에 대한 이해가 필요하기 때문에 어떤 deep한 setting에서 풍부한 정보를 잘 담아내야 된다는 특징이 있습니다. 그래서 6x6 setting에서 이 다섯 개의 Multilingual Translation setting을 보시면 기존의 모델들보다 최소한 2점 정도 이상의 BLEU 스코어 향상이 있음을 보였습니다. 

 

그리고 이 다섯 개 언어쌍이 아니라 OPUS 100 테스트에서 94개 언어쌍에 대해서 평가를 진행을 했습니다. 이 평가셋은 지금 너무 많은 언어쌍이 있기 때문에 high, medium, low resource 이렇게 세 가지로 나눠서 평가를 진행했습니다.

 

GTrans는 setting에서 XLM-R에 setting 일반 파라미터 weight을 initialize setting으로 잡아서 그걸 이미지로 초기화값으로 잡아서 학습을 진행을 했습니다. 이렇게 했을 때 XLM-R 또한 상당히 competitive 한 모델인데 이 모델보다 더 좋은 성능을 일관되게 보이는 것을 볼 수 있습니다. 그다음에 previous Best System Multilingual setting에서 다른 시스템을 보시면은 그 시스템보다는 훨씬 더 좋은 어떤 일관된 성능 향상을 보였습니다.

 

또한 Low 28을 보시면 high setting보다 resource가 더 적어질수록 BLEU 스코어 향상의 폭이 더 큰 것을 볼 수 있습니다. 그래서 low resource에서도 학습하기 어려운 high feature들을 잘 뽑아내는 것을 볼 수 있었습니다. 

실험 결과를 간단하게 정리하면 bilingual과 Multilingual setting에서 모두 잘했다고 볼 수 있습니다. 특히 low resource setting, Multilingual setting에서도 성능이 상당히 잘 나온 것을 볼 수 있었습니다.

이거 외에도 실험을 추가적으로 상당히 많이 분석을 했습니다. 이 실험 같은 경우는 각 encoder 또는 decoder에서 그 성능향상을 확인하기 위해서 한쪽에 layer 수를 고정시킨 상태에서 나머지 한쪽에 layer 수를 증가시켰을 때 성능 향상의 폭이 얼마나 달라지는지 본 것입니다.

 

첫 번째랑 두 번째는 지금 데이터 setting이 다르다고 보시면 되고 IWSLT 14 같은 경우는 데이터의 수가 적습니다. 12만 개 정도밖에 안 됩니다.

 

그리고 WMT 같은 경우는 한 400만 개 정도 데이터가 있어서 그래도 학습해서 어느 정도 성능이 나오는 정도로 볼 수 있습니다.

 

이 두 setting. low resource setting과 medium resource setting 모두 다 encoder 수를 올리든 decoder 수를 올리든 간에 성능향상이 일관되게 있었고 그리고 medium resource setting에서 보시면은 layer 수를 늘릴수록 low resource setting보다는 훨씬 더 성능 향상의 폭이 컸습니다.

그룹 사이즈로 얼마나 세분하는지에 따른 분류입니다.

 

60개 encoder layer가 있다고 치고 60 x 6이라고 쓰여 있습니다. 그러면 60개의 encoder layer와 6개의 decoder layer가 있는 상태입니다. encoder layer 60개를 그룹핑을 얼마나 세분화해야 하는지 따라 달라지는 겁니다.

 

여기 1은 하나의 그룹에 60개 layer가 다 있는 거니까 encoder layer fusionlast group layer만 사용하므로 1 setting 같은 경우는 Transform Vanila setting과 똑같습니다. encoder가 60개인 아주 deep 한 그냥 트랜스포머 Vanila입니다. 

 

60개 같은 경우는 각 그룹별로 하나의 encoder layer를 가지고 있는 거를 생각하시면 되겠습니다. 보시면 encoder 그룹을 한 개로 했었을 때 Transformer Vanila setting으로 encoder를 아주 deep 하게 쌓았을 때는 학습이 실패하는 것을 볼 수 있습니다. 최소한 4개 그룹 즉, 그룹 하나당 15개 layer 정도로 그룹 fusion을 진행해야 학습이 성공을 했습니다. 그리고 오히려 너무 세분화해서 많은 그룹핑을 해버리면 성능이 살짝 하락함을 볼 수 있습니다. 이거에 대해서 저자들은 low level feature를 너무 쓸데없이 많이 보기 때문이라고 분석했습니다.

 

decoder도 비슷한 방식으로 진행했습니다. encoder는 아까 말씀드렸다시피 그룹에서의 마지막 layer만을 사용하지만 decoder는 그룹에 있는 모든 layer를 사용하기 때문에 encoder처럼 그룹에 따른 큰 문제는 없습니다. 그래서 전반적인 성능의 폭을 보시면 12 x 12 setting에서 decoder의 그룹수를 늘릴수록 성능의 어떤 향상 폭이 있음을 볼 수 있습니다.

 

보시다시피 트랜스포머 Vanila setting일 때보다 12일 때 BLEU 스코어가 1.2 정도로 상당히 많이 차이 나는 것을 볼 수 있습니다.

트랜스포머 setting에서 테스트 셋의 문장을 길이 별로 나눠서 점수를 평가해 보았습니다.

 

트랜스포머 Vanila와 GTrans를 비교해 보았을 때 테스트 셋에서 Lengths 나눠 봤을 때 Vanila와 GTrans의 성능 차이가 Length가 길어질수록 더 심해지는 것을 확인했습니다. 성능차이가 BLEU 스코어 1.4 정도면 어느 정도 유의미한 성능의 차이를 보임을 알 수 있습니다. 그러므로 Longer sentence 같은 경우 데이터에 어떤 distribution 자체가 되게 불안정하고 알기가 어려운데 이런 경우에 group fusion 방식이 더 좋은 성능 향상을 가져다줄 수 있음을 보였다고 봅니다.

 

여기까지는 시각화 도표를 가지고 와서 보여드렸습니다.

마지막으로 encoder는 그룹 내에 마지막 layer만 선택하게 되는데 여기서는 Sparse fusion이라고 얘기하는데 이런 방식이 encoder에서 적절한 방식임을 보였습니다. 그룹 내에 있는 모든 layer를 다 활용할 필요가 없다는 의미입니다. 그리고 encoder는 마지막 layer 몇 개를 잘라내도 deepencoder setting는 성능 향상에 큰 차이가 없음을 보였습니다.

 

 

decoder도 비슷한 방식으로 확인을 해 봤습니다. 이렇게 했었을 때 각 그룹별로 해당 그룹에 정보만 활용했었을 때 last layer 쪽으로 갈수록 성능이 오르는 것을 확인했습니다. 또한 그 학습된 최종 그룹마다 가중치를 보면은 그룹마다 가중치가 마지막 라스트 쪽 그룹에 갈수록 가중치가 더 쏠림을 볼 수 있습니다. 그런데 last decoder layer의 어떤 그룹보다 second last decoder 그룹이 성능이 더 좋았고 학습된 가중치의 가중치 또한 더 높았습니다. 그리고 1-6 전체 그룹을 모두 활용하는 결과가 있었고 위에 있는 그룹들 라스트 쪽 그룹들만 활용하는 결과가 있었는데 그 결과의 성능 차이가 0.1에서 0.4 정도로 크게 차이가 나지 않습니다.

 

decoder의 경우에는 만약에 우리가 추론해서 속도가 중요할 때는 이 low level을 활용을 안 해도 어느 정도 성능이 보장될 수 있다는 것을 여기서 주장하고 있습니다.

decoder에서 또 다른 방식으로 Visualization을 진행했습니다.

 

decoder에 layer별로 또는 그룹별로 학습 가중치가 학습이 진행되는 동안 Weighted sum 할 때 이 W가 어떻게 달라지는지 보였는데 low layer의 어떤 가중치는 높지 않으며 상위 layer로 갈수록 가중치가 커짐을 보였습니다. 그러나 여기서도 가장 마지막 layer 또는 중 상의 layer의 어떤 가중치들이 학습이 진행되면서 점점 더 높아짐을 보였습니다.

 

따라서 기존의 많은 연구들에서 last decoder layer에 어떤 표현만을 사용하는 방식을 선택하고 있는데 이것이 최선이 아닐 수도 있다고 주장하고 있습니다.

 

이거 외에도 inference 스피드나 ensemble 같은 실험 또한 진행했고 여기서 GTrans가 성능이 나쁘지 않다는 것을 보였습니다.

마지막으로 Ablation Study나 아니면 gradient Norm에 변화를 트레이닝 step에서 확인을 했는데 분석을 통해서 GTrans의 어떤 다양한 방법에 그 적절함을 보였다고 보시면 될 것 같습니다.

최종적으로 논문 Summary입니다.

 

이 논문은 트랜스포머 모델의 high level 또는 low level layerMulti level layer들의 representation을 최대한 잘 활용할 수 있는 방법을 제안했다고 보시면 될 것 같습니다. 그래서 이런 방식을 사용하려는 이유가 첫 번째로 트랜스포머의 어떤 layer depth를 키우기 위해서 Multilingual setting 같은 어려운 setting에서 deeplayer를 학습시키기 위해서 GTrans를 제안했다고 볼 수 있습니다.

 

두 번째로 low level의 layer의 representation를 잘 활용하기 위해서 성능 향상을 가져오기 위해서 이런 방식을 제안했다고 보시면 될 것 같습니다. 방법론 자체는 encoder decoder fusion 방식이 각각 존재했고 약간의 차이가 존재했지만 결과적으로 그냥 weighted sum이라고 보시면 될 거 같습니다. 

 

이런 간단한 방법만으로도 이렇게 다양한 setting, 다양한 resource, 다양한 deep 하고 shallow 한 방식에서 모두 기존 연구보다 일관되게 좋은 성능을 보였다는 면에서 이 논문이 가치가 있다고 생각합니다.

댓글