본문 바로가기

NLP 논문 리뷰

Adapter

논문 링크 : https://arxiv.org/pdf/1902.00751.pdf

0. Abstract

fine-tuning은 pretrained model을 이용하는 효과적인 방법입니다.

하지만 많은 downstream task에서 fine-tuning을 통해 새로운 model을 다시 만들어야 해서 비효율적입니다.

그에 대한 해결책으로 해당 논문에서는 Adapter Tuning을 제시합니다.

1. Introduction

1> 각 task별로 model을 더 학습하지 않아보려고 함

→ compact하면서도 extensible한 model을 만들어보려고 함. (가능한 task는 많은데 parameter는 줄려보려고 함)

cf> transfer learning 방식
원래는 feature-based transfer와 fine-tuning이 있다.

feature-base tranfer (ex> pretrained embedding)

  • 원래 parameter에 새로운 함수를 추가해야 하고 (그에 따라 새로운 parameter가 생김)
    fine-tuning
  • 원래 parameter를 약간 수정

2> transfer learning의 일종인 adapter module

transfer learning 방법 중 'adapter module 사용'을 해보려고 함

(fine-tuning도 weight을 어느 정도 공유하여 효율적이지만 adapter가 더 효율적이다.)

3) 관련 있는 학습

1> multi-task learning

adapter-based tuning은 모든 task에 simultaneous 접근을 하는 것은 아니다. (sequential하다는 말이다.)

2> continual learning

adapter-based tuning은 interact하지 않고, shared parameter는 고정되어있다.

결론적으로 adapter는 효율성을 지향한다.

2. Adapter tuning for NLP

(구체적인 방법을 얘기한다.)

0) intro

1> keypoint

  • [1] performance 향상
  • [2] task에 sequential하게 학습
  • [3] task별로 추가하는 parameter가 매우 적다.

2> (bottleneck) adapter module

(fine-tuning은 top layer에 변형을 했다. label과 같은 문제로)

model 전반적으로 parameter를 추가할 수 있다.

원래의 parameter는 그대로 둔다.

새롭게 추가된 parameter는 random initialization

학습할 때에는 원래 parameter는 freeze (그래야 나중에 task별로 share가 가능)

3> 특징 2가지

[1] 적은 parameter

[2] near-identity initialization

(원래 parameter는 그대로 두면서 새로 추가된 parameter만 학습하는 방식)

(3.6에서 추가 설명 예정)

1) Instantiation for Tranformation Networks

1> 전반적인 구조

 

transf

ormer에서 feedforward 이후에 위치

projection : feature size → layer input size

추가로 skip connection도 이루어진다.

그 이후 layer normalization을 진행한다.

2> bottleneck 구조

(d : feature size)

d → m

m → d

그러므로 총 parameter는 (2md + d + m)개이다. (물론 m은 d보다 작아야 한다.)

parameter는 원래 parameter보다 7.5~8.5% 정도만 추가해야 한다.

(만약 새로 추가된 parameter가 0에 가깝게 설정되면 원래 parameter만 남으므로 identity function으로 작용할 수 있다.)

(layer normalization의 parameter는 건드리지 않는 것이 좋다고 합니다.)

3. Experiments

실험 결과 대부분 adapter를 통해 이전보다 더 효율적으로 downstream task를 진행할 수 있었습니다.

1) GLUE benchmark

결과를 보면 BERT-large를 fine-tuning한 경우는 Adapter tuning한 경우에 비해 성능이 근소하게 높습니다.

하지만 Adapter tuning의 경우 trained parameter의 수를 fine-tuning에 비해 급격하게 낮추었습니다.

2) Additional Classification Tasks

다른 classification에서도 fine-tuning을 적용한 것과 adapter tuning을 적용한 것이 성능은 유사하지만 trained parameter를 급격하게 낮추었습니다.