On the Effectiveness of Adapter-based Tuning for Pretrained Language Model Adaptation 논문을 읽고,,,

0

논문요약

목록 보기
3/6

NLP과목을 수강하면서 내가 발표하게 된 논문이다. 구현까지 해야하지만 이번 포스팅에서는 이 논문에 대해 요약하면서 어떤 얘기를 하고 싶은지를 적어보려고한다. 해당 논문에 대해 발표하고 세미나를 진행하면서 공격적인 질문을 많이 받았다. 거기에 대해서 내가 명쾌하게 답변을 하지 못해서 조금 아쉬웠던 것 같다.

서론

Paramter Efficient Tuning 논문에서 항상 강조하고 있는 부분이다. PLMs(Pretrained Language Models)을 Fine-Tuning해서 사용하게 되면 각 Downstream Task마다 모델의 모든 파라미터를 업데이트하면서 훈련을 하게 되기 때문에 새로운 weight 집합이 필요하다.


그래서 어댑터를 사용한 학습이 제안되었다. 하지만 어댑터를 이용한 메소드가 기본적으로 PLMs의 파라미터를 고정시키고 어댑터의 파라미터만 업데이트하면서 학습을 진행하므로 파라미터 효율적인 부분에만 초점을 맞추고 있다. 그래서 본 논문에서는 파라미터 효율적인 부분을 제외하고 실제로 어댑터가 모델의 성능을 개선하는데 직접적으로 효과가 있다고 주장하고 있다.

  • Fine-Tuning은 Downstream Task로 훈련을 하게 되면 Pretrained 될 때의 지식을 잊어버리는 망각 이슈가 있다.
  • Fine-Tuning은 이러한 망각 이슈로 인하여 Downstream Task에 과적합되는 문제가 있다.
  • Adapter-based Tuning은 이러한 망각 이슈를 완화함으로써 좀 더 정규화된 학습이 가능하다.

이 주장을 검증하기 위해서 다양한 환경에서 실험을 진행한다. 첫번째는 트레이닝 샘플이 작을때, 두번째는 트레이닝 샘플이 클때, 세번째는 단일 언어 학습, 마지막은 다국어 학습 환경이다.

기본적으로 어댑터는 트랜스포머 레이어에 그림과 같이 삽입된다. 간단한 Neural Network이며 입력 벡터의 차원을 줄였다가 다시 원래대로 만들어주는 간단한 형태로 되어있다. 줄어든 차원은 hidden size라고 부르며 이 사이즈를 조절하는 것이 어댑터의 하이퍼 파라미터가 된다.

어댑터의 아키텍쳐에는 여러 종류가 있는데, 해당 논문에서는 그림과 같은 구조를 사용한다고 한다.

앞서 얘기하였듯이, Adapter-based Tuning이 정규화를 조금 더 잘한다고 하는데 그 근거를 간단하게 설명하자면 다음과 같다.

-> Fine-Tuning이 과적합과 일반화 성능이 떨어지는 문제를 가지고 있는 것은 이전 연구들에서 보여준 바가 있다.

-> 그래서 Fine-Tuning을 할 때 Mixout 메소드를 사용하면 조금 더 좋은 성능을 낼 수 있다.

-> Mixout이 그럼 무엇이냐, 학습을 진행하면서 네트워크에서 랜덤으로 선택된 뉴런들을 초기 모델의 파라미터로 대체하는 것이다.

-> 이말은 즉, 모델이 학습을 진행하면서 파라미터를 업데이트 하는데, 업데이트 되는 가중치들이 초기 모델과 별 차이가 없도록 만드는 것이다.

-> Adapter-based Tuning 역시 마찬가지다. 기존 모델의 파라미터를 아예 고정시켜버리기 때문에 Mixout과 비슷한 효과를 가져올 것이라고 생각한다.

본론

Better Regularized Tuning


그래서 Adapter-based Tuning 및 Fine-Tuning이 학습이 완료된 뒤 기존 모델과 산출하는 표현이 얼마나 달라졌는지를 평가하기 위해서 RSA(Representation Similarity analysis)를 사용한다. 위 그림은 해당 방식에 대해 설명하고 있다. 똑같은 n개의 sample data를 인풋으로 두 개의 모델에 집어넣는다. 그리고 모델에서 산출되는 n개의 output을 추출한다. 그리고 n개의 표현에 대해 서로 간의 유사도를 평가하기 위해 코사인 유사도를 측정하여 n x n 매트릭스를 만든다. 이 매트릭스는 모델마다 만들어지기 때문에 두 개가 생성된다. 이 때, 각 매트릭스의 상삼각행렬을 flat하게 만든 뒤 Pearson Correlation을 계산하는 식으로 RSA Score를 매긴다.

실제로 SST-2 Dataset을 이용해서 FineTuning 모델과 Base 모델과의 유사도를 레이어 별로 비교하여 파란색 선으로 나타냈고,
Adapter-based Tuning 모델과 Base 모델과의 유사도를 레이어 별로 비교하여 노란색 선으로 나타냈다.

  • 레이어가 깊어질수록 Task에 밀접적으로 연관되기 때문에 표현이 많이 변한다.
  • Base모델과 높은 유사도를 보이는 것은 Adapter-based Tuning이다.

따라서 Adapter-based Tuning이 Base 모델의 지식을 어느정도 보존한다고 볼 수 있다. 그러므로 Fine-Tuning보다 과적합이 될 가능성이 적다고 본다. 다시 말해 일반화 능력이 더 좋고, Fine-Tuning보다 정규화된 훈련 과정을 겪는다고 볼 수 있다.

이러한 속성이 모델 성능 개선에 어떻게 도움을 주는지 알기 위해서 단일 언어 적응 훈련, 다국어 적응 훈련, 마지막으로 훈련 안정성과 일반화 능력을 테스트 해본다.

단일 언어


단일 언어 적응에서의 실험 결과는 다음과 같다. 데이터 셋는 TAE라고 부르는 Task Adaptation Evaluation이고 특정 Task에 특화된 Classification Dataset 정도로 알고 있다.
기본적으로 RoBERTa를 base모델로 하여 실험을 진행하였다. 여기서 low-resource는 트레이닝 샘플이 5000개 이하인 벤치마크 세팅을 의미한다. high-resource는 그 이상의 트레이닝 샘플을 가지는 벤치마크이다.
또한 TAPT(Task-Adaptive Pretraining)은 Fine-Tuning 또는 Adapter-based Tuning을 적용하기 전에 해당 Task의 corpus를 이용하여 미리 사전 학습을 진행하는 것을 의미한다.
마지막으로 앞으로 나올 테이블들의 수치와 현재 테이블의 수치는 모두 F1-Score를 나타내고 있다!

  • 결과를 살펴보면 기본적으로 low-resource에서는 Adapter-based Tuning의 성능이 좋은 것을 보여준다.
  • 오른쪽 아래의 그래프는 Training Sample을 작은 수부터 큰 수까지 늘려가면서 성능을 측정한 결과이다. 확실히 Training Sample이 작을 때는 Adpater-based Tuning이 우세하지만 Training Sample이 일정 수 이상으로 커지면 Fine-Tuning에게 따라잡히는 것을 볼 수 있다.


이 실험은 GLUE Benchmark 데이터 셋을 이용하여 실험을 한 결과이며 BERT를 base모델로 사용한다. 1k, 5k 환경으로 나뉘어지는데, low-resource에서의 Adapter-based Tuning이 어느 정도의 성능을 내는지 알아보기 위해서 추가적으로 실험을 진행한 결과이다.
1k는 해당 데이터 셋의 Training Sample에서 1000개만 랜덤으로 선택하여 훈련을 진행한 것을 의미한다. 5k는 마찬가지로 5000개를 랜덤으로 선택하여 훈련을 한 것이다.
adapter에 보면 64 또는 64-256이라는 숫자가 적혀있는데, 이것은 서론에서 얘기하였던 Adapter의 하이퍼 파라미터인 hidden size를 64크기로 고정해서 사용했는지, {64, 128, 256} 중에서 유동적으로 사용했는지를 의미한다.

  • 기본적으로 대부분의 경우에서 Adapter-based Tuning의 성능이 높은 것을 볼 수 있다.


그렇다면 위 두 개의 실험 결과를 가지고 이런 추론을 할 수 있다.

  1. Adpater-based Tuning은 Training Sample이 적은 경우에 Fine-Tuning보다 좋은 성능을 보여준다.
  2. 1번 실험(TAE)가 2번 실험(GLUE Benchmark)보다 Fine-Tuning과 비교하여 성능 개선도가 높은데 이 이유는 TAE가 좀 더 도메인에 특화되어 있기 때문이다. 이 말은 base 모델이 Pretrain 될 때 사용한 corpus와 겹치는 내용이 적다는 것을 의미한다. 이런 도메인에 특화된 데이터셋을 훈련할 때 Fine-Tuning은 쉽게 해당 도메인에 과적합이 될 수 있으나, Adapter-based Tuning은 Fine-Tuning보다는 과적합에 강하다. 이러한 이유는 초반부에 얘기하였듯이, Fine-Tuning의 표현이 base 모델과 차이가 많이 나기 때문이다.

다국어


이제 다음 실험으로 넘어간다. 다국어 적응에서의 성능 평가이다. base 모델은 다국어를 지원하는 XLMR을 사용한다. 여기서 사용된 데이터 셋은 POS, NER, XNLI이며 나와있듯이 Training Sample 수가 5k 이상으로 전부 high-resource이다. row-resource에서의 결과도 알기 위해서 XNLI 데이터 셋으로 부터 5%, 10%, 20%의 Training Sample만 사용하여 훈련한 뒤 성능을 추가로 평하개본다.

  • Adapter-based Tuning이 다국어에서는 high-resource 환경임에도 불구하고 Fine-Tuning보다 높은 성능을 가진다.
  • low-resource에서도 다국어에서는 꾸준히 좋은 성능을 보여준다.

결론 및 분석


마지막 분석 부분에서는 다음의 4가지에 대해 분석하고 있다.

  1. 적절한 Adapter의 Hidden Size
  2. Learning Rate에서의 강함
  3. 과적합과 일반화
  4. Mixout과의 비교


먼저 Adapter의 hidden size를 본다. TAE와 GLUE(1k) 결과를 보면 TAE에서는 고차원의 사이즈 GLUE에서는 결과가 비슷비슷하다.따라서 TAE와 같이 도메인에 특화된 Dataset을 학습하기 위해서는 추가적인 파라미터가 필요하기 때문에 고차원일수록 좋은 성능을 낸다는 것을 알 수 있다.

다음으로 XNLI(full)과 XNLI(5%)를 비교해보면 Training Sample이 많으면 고차원일수록 좋으며, low-resource일 때는 hidden size가 딱히 상관이 없어 보인다.

  • 어댑터의 hidden size가 커진다고 무조건 좋은 성능을 내지는 않는다.
  • 최적의 hidden size는 도메인과 Training Sample의 크기에 영향을 받는다.


Bert-base 모델에 Fine-Tuning과 Adapter-based Tuning을 적용한 결과가 위쪽 4개의 그래프이며,
RoBERTa-base 모델에 Fine-Tuning과 Adapter-based Tuning을 적용한 결과가 아래쪽 4개의 그래프이다.

이 실험은 Learning Rate에 얼마나 민감한지를 알아보기 위함이며, x축 Learning Rate를 점점 크게 만들면서 각 Learning Rate에서 20번씩 성능을 평가하여 box plot 형태로 나타낸 결과이다. 전체적으로 보면 일정 Learning Rate 이상으로 갈 때 파란색 네모가 커진다. 파란색이 Fine-Tuning이며, Learning Rate가 커지면 성능이 들쑥날쑥해지면서 불안정해짐을 알 수 있다.

  • Adpater-based Tuning이 넓은 범위의 Learning Rate에서 안정적이다.


왼쪽의 그래프는 Training Step을 증가시키면서 각 step에서의 evaluation set에 대한 loss값을 나타낸 그래프이다. CoLA와 MRPC 데이터 셋의 경우 사이즈가 작기 때문에 10k step까지만 증가시켜서 실험을 하고, QNLI와 SST-2 데이터 셋의 경우 60k step까지 증가시키면서 실험을 진행한다. eval loss가 커진다는 얘기는 Training set에 대한 loss값이 작아지면서 과적합이 되어간다는 얘기이다. 그리고 이것은 일반화 능력이 떨어진다는 것을 의미한다. 그래프를 보면 Fine-Tuning의 loss그래프는 급격하게 상승세를 보이는 반면 Adapter-based Tuning의 loss그래프는 Fine-Tuning보다는 덜한 상승세를 보인다. 따라서 과적합에 Fine-Tuning보다 강하다는 것을 주장한다.

그리고 오른쪽의 테이블은 evaluation set에 대한 Accuracy이며 각 Training Step에서 측정하여 평균 값과 괄호안에는 가장 높은 값을 적어 놓은 결과이다. Best값은 Fine-Tuning이 높을 때도 있으나, 평균 값은 전부 Adapter-based Tuning이 정확도가 더 높다.

마지막은 Mixoout과의 비교이다. Mixout은 서론에서 설명하였듯이, Network에서 랜덤으로 선택된 뉴런의 파라미터를 초기 모델의 파라미터로 대체하면서 학습을 진행하는 것이다.
본 실험에서는 Dropout 모듈을 전부 다 Mixout 모듈로 대체하고 실험한다고 설명한다. 결과는 오른쪽 테이블에 나온다. 기본적인 Adapter-based Tuning이 Fine-Tuning에 Mixout을 적용한 것보다 결과가 좋다. 그리고 Adapter-based Tuning에 Mixout을 적용하면 성능이 오히려 떨어지는데, 기본적으로 학습 파라미터수가 적은 Adapter-based Tuning에서 파라미터를 기본 모델의 파라미터로 대체하면서 학습하는 방식은 오히려 성능 악화를 야기한다고 볼 수 있다.

소감

영어 발표기도 해서 대본을 써서 스크립트를 읽으면서 발표를 했는데, 다음에는 이런 점을 보완해서 편하게 영어로 발표를 해보고 싶다. 소프트웨어 공학 논문과는 다르게 어떤 결과에서 Adapter 사이즈는 왜 저걸로 사용했는지, 해당 데이터 셋에서는 왜 결과가 조금 낮은지 등의 질문을 받았다. 인공지능 동네에서는 결과에 대한 근거가 조금 부족?하다고 생각되긴 한다. 논리적인 근거를 두기보다는 이렇게 이렇게 해보니 좋더라 식의 분석이라던가 결과를 전부 산출해놓고 결과 위주로 분석을 진행하다보니 저자가 논문을 자기에게 유리한 식으로 썼다고도 생각할 수 있는 것 같았다. 자연어 처리 관련해서 많은 내용을 다루다보니 좀 더 깊이있는 지식을 쌓아가는 시간인 것 같다. 그리고 만약 내가 이 논문의 구현까지 마친다면 어마어마하게 의미있는 시간이 되지 않을까 싶다.

profile
최악의 환경에서 최선을 다하기

0개의 댓글