-
[2023 Spring NLP Seminar] How to Adapt Your Pretrained Multilingual Model to 1600 Languages (ACL 2021)AI/NLP 2023. 4. 6. 12:51728x90
[2023 Spring NLP Seminar]
How to Adapt Your Pretrained Multilingual Model to 1600 Languages (ACL 2022)이번 분기 NLP Seminar에서는 Multilingual 분야를 파 보기로 했다 ! !
목차
0. 들어가기 전에...
1. Abstract + Introduction
2. Related Works
3. Experiments
4. Results
5. Case Study
6. Limitations
7. Conclusion
8. Reference
0. 들어가기 전에 ...
PMM (Pretrained Multilingual Model) 등장 이전
[General cross-lingual representations]
1. word embedding 차원에서의 cross lingual transfer가 연구되었음
- 294개 monolingual embeddings / Wikipedia 이용 (Joulin et al. (2018))
- 157개 monolingual embeddings / Common Crawl 이용 (Grave et al. (2018))
➡ 병렬 코퍼스를 사용하거나 / unsupervised 방식을 사용하는 방향으로 cross-lingual transfer 적용
2. transformer based models
- monolingual embedding에서 다른 언어로 교차 학습 (Artetxe et al. (2020))
- multilingual embeddings / 위와 반대로 병렬 코퍼스 없이 동시에 학습하는 방식으로 (Ammar et al., 2016; Artetxe and Schwenk, 2019)
대표적인 PMM (Pretrained Multilingual Model)
1. multilingual BERT
- Google에서 발표한 BERT (Devlin et al., 2018)의 다국어 버전 (학습 방법은 동일-NSP, MLM)
- 104개 언어의 위키피디아 코퍼스를 모두 사용하여 pre-training을 진행한 최초의 PMM
- 특히 fine-tuning 시 보지 않았던 언어에 대해 inference를 수행하는 zero-shot cross lingual transfer learning에서도 준수한 성능을 기록
2. XLM
- 15개 언어로 훈련된 PMM
- 위키피디아 코퍼스 사용
- 95k subwords
- MLM의 연장선인 TLM(Translation Language Modeling) 이라는 새로운 언어 모델링 사용
- MLM
- 단일 언어 코퍼스 / unsupervised learning
- BERT와 동일한 방식으로 학습
- 단일 언어를 대상으로 입력 문장 토큰의 15%의 단어를 랜덤으로 선택 후,
- 80%의 단어들은 [MASK]로 변경
- 10%의 단어들은 랜덤으로 단어 변경
- 10%의 단어들은 동일하게
- TLM
- 병렬 말뭉치에서 원본 문장과 번역 문장을 한 입력 데이터에 합쳐서 이용 (같은 의미를 가지는 언어가 다른 두 개의 문장) / supervised learning
- 각 문장의 Position Embedding은 각각 문장 시작점을 ‘0’으로 함
- 병렬 데이터 간 상호 보완적으로 언어모델을 학습해서 Cross-linguality를 증가시킬 수 있다
3. XLM-R
- 100개 언어 지원
- 250k subwords created using SentencePiece tokenization
- XLM이나 mBERT보다 더 큰 규모의 Corpus인 CommonCrawl data 사용 (2.5TB)+ RoBERTa 사용
https://asidefine.tistory.com/201
1. Abstract + Introduction
- Background & Limitations
- Pretrained multilingual models (PMMs)
- [특징] PMM은 타겟 task나 language에 대한 labeled data가 필요없다 ( Cross-lingual transfer를 통해 제로샷 학습을 가능하게 하는 방법이기 때문에 ! )
- [한계] downstream 성능은 pretraining data 시 사용되었던 언어들, 또는 그와 비슷한 언어들에 대해서만 잘 작동함
- pretraining 시에 학습하지 않았던 언어들에 대해서는 제로샷 성능이 거의 랜덤이다
- Zero shot Cross-lingual transfer
- [특징] 위의 문제를 해결하기 위해 여러 방법 대두되었지만,,
- [한계] 이전 연구들 각 316개 언어와 160개 언어를 다루는 Wikipedia 또는 Common Crawl과 같이 비교적 적은 수의 언어에 대해 unlabeled data를 사용하여 평가 ➡ 적용 범위 너무 좁다
- Pretrained multilingual models (PMMs)
➡ 따라서 정말로 low-resource language를 위해 PMM을 활용하고자 한다면, SOTA 방식이 어떻게 하면 더 많은 언어에서 잘 적용될지에 대한 이해 필요하다
- Our Approach
- 1600개의 언어 사용가능한 성경 활용 ! ➡ zero shot 성능 좋아질까 ?
- Zero shot Cross-lingual transfer의 여러 adaption 방식을 실험 ➡ 어떤 방식이 가장 좋을까 ?
- XLM-R + 1) continued pretraining (Chau et al., 2020) / 2) vocabulary extension (Wang et al., 2020) / 3) adapters (Pfeiffer et al., 2020b) 세 가지 방식 실험 !
2. Related Works
- Adaptation Methods에는 아래의 세 가지 방법 있다, 그리고 이 세 방식에 대해서 아래에서 실험 계속할거니 ! 잘 알아두기
- Continued Pretraining
- Vocabulary Extension
- Adapters
Continued Pretraining
- continued pretraining으로는 세 가지 모델
- MLM : 타겟 단일 언어로 된 성경을 통해서
- TLM : 성경에 대해서 병렬 코퍼스 구축
- +{M|T}LM : 타겟 단일 언어로 된 배치 + 병렬 코퍼스로 구축된 배치 번갈아 가며 선택하여 학습
Vocabulary Extension
- 많은 pretrained model은 subword vocabulary를 사용함으로써 out-of-vocabulary 문제를 해결한다
- 그러나 pretraining task와 target task가 다르면, 경우에 따라 도메인별로 단어가 과도하게 쪼개져 성능이 저하될 수 있다
- 새로운 subword token 추가하는 방식 사용 !
- Wang et al. (2020)
- mBERT에서의 vocabulary에서 새로운 subword token들을 추가한 뒤 monolingual corpus로 학습했더니, 그 언어를 학습했든 안했었든 target language에 대한 성능이 올라갔다 !
- Chau et al. (2020)
- vocabulary augmentation를 수행했더니 새로운 임베딩이 더 빠른 속도로 학습되더라 ~
Adapters
- adapter란 transfer learning를 돕기 위한 적은 수의 parameter를 가지는 layer
- Pfeiffer et al. (2020b)의 MAD-X
- language adapter와 task adapter로 이뤄짐
- 과정
- model의 가중치는 freeze한 후 MLM 사용해서 각 언어에 대해 invertible adapters와 language adapters를 학습
- 그런 다음, 영어 전용 adapter를 task adapter와 함꼐 사용해서 english labeled data를 학습
- zero-shot transfer의 경우, invertible adapter와 language adapter를 대상 언어에 대해 훈련된 adapter로 바꾼 후 evaluate
ChatGPT 가라사대 Mad-X란 ...
"Mad-X: An Adapter-Based Framework for Multi-Task Cross-Lingual Transfer" 논문에서 제안된 모델 구조는 다중 언어 간 전이 학습을 수행하는 어댑터 기반 프레임워크입니다.
이 모델은 기존의 사전 학습된 다국어 모델(예: mBERT, XLM-R)을 기반으로 하며, 각 언어에 대한 어댑터를 추가하여 다양한 언어의 multi-task을 처리할 수 있습니다.
이 모델은 다음과 같은 단계로 작동합니다:
1. 기존 사전 학습된 다국어 모델을 불러오고, 각 언어에 대한 어댑터를 추가합니다.
2. 각 언어별로 전이학습을 수행합니다. 이를 위해, 학습 데이터에 대해 해당 언어의 어댑터를 사용하여 모델을 fine-tuning합니다.
3. multi-task 수행을 위해 각 task에 대한 어댑터를 추가합니다.
4. 전이 학습을 수행하면서, 각 언어와 task에 해당하는 어댑터를 사용하여 모델을 fine-tuning합니다.
이러한 방식으로, Mad-X 모델은 다중 언어와 multi-task에 대해 일반화된 모델을 구축할 수 있습니다. 이 모델은 다른 언어와 task에 대해 적은 수의 샘플만 사용하여도 높은 성능을 보이는 것으로 알려져 있습니다.* 더 자세한 모델 설명
- adapter란 ?
- Adapter는 사전 학습된 모델을 다른 작업에 재사용하기 위한 유연하고 경량화된 모듈
- 다른 작업의 정보를 캡슐화하고, 해당 정보를 사전 학습된 모델에 추가하여 새로운 작업에 적용할 수 있음 !
- 이를 통해, 다른 작업에서 파생된 지식을 공유하고 모델 크기를 줄이며, 새로운 작업에 대한 추가적인 학습 데이터가 필요하지 않아도 높은 성능을 보일 수 있다
- Adapter는 일반적으로 모델의 어느 부분에도 적용 가능하며, 입력, 출력 또는 둘 다에 적용될 수 있음
- Adapter는 다른 작업에서 파생된 정보를 공유하는 유연하고 경량화된 모듈이므로, 다양한 언어 및 작업 간에 재사용될 수 있음
- 예를 들어, 언어 모델을 사전 학습하고, 언어 번역, 개체명 인식, 감정 분석 등의 작업...
- 최근에는 Adapter를 개선하여 Invertible Adapter, Universal Adapter와 같은 새로운 유형의 Adapter가 제안됨
- Invertible Adapter는 모델 파라미터를 역함수를 사용하여 역전파 중에 학습하고, 런타임에서 어댑터를 적용할 때에는 해당 파라미터를 역함수를 사용하여 복원
- Universal Adapter는 다양한 작업에 대해 미리 학습된 Adapter를 제공하여 다른 작업에서도 쉽게 재사용할 수 있는 구조를 가지고 있음
ChatGPT 가라사대 adapter란 ...
"Mad-X: An Adapter-Based Framework for Multi-Task Cross-Lingual Transfer" 논문에서 소개된 Invertible Adapter는 모델의 일부분으로, 다양한 언어 및 task 간에 공유할 수 있는 유연한 어댑터를 만들기 위한 기술입니다.
이 어댑터는 모델의 특정 부분에 대한 파라미터를 제공하여, 해당 부분이 다른 언어 및 작업에서 재사용될 수 있도록 합니다. Invertible Adapter는 이러한 파라미터를 역함수를 사용하여 역전파 중에 학습하고, 런타임에서 어댑터를 적용할 때에는 해당 파라미터를 역함수를 사용하여 복원합니다.
이 방식은 다중 언어 및 multi-task에 대한 유연한 모델 구축을 가능케 하며, 추가적인 파라미터를 필요로 하지 않아 모델의 크기를 효율적으로 관리할 수 있습니다. Invertible Adapter는 또한 다양한 task 간에 공유 가능한 유용한 특징을 추출하는 데에도 도움을 줍니다.3. Experiments
실험에 사용한 데이터와 언어, 그리고 3가지 adaptation 방식에 대해 설명함
- Data and Languages
- Unlabeled Data
- Labeled Data
- Language Selection
- PMM Adaptation Methods
- Continued Pretraining
- Vocabulary Extension
- Adapters
Data and Languages
- Unlabeled Data
- Johns Hopkins University Bible Corpus (JHUBC) : 1611개의 언어
- 본 논문에서 고려하는 30개 언어의 경우, 언어당 평균 약 402,000개의 하위 단어 토큰을 가짐
- Labeled Data
- NER : Rahimi et al. (2019)이 만든 일부 데이터
- POS Tagging : Universal Dependencies Project (Nivre et al., 2020)
➡ XLM-R은 subword vocabulary를 사용하기 때문에, 여기에도 적용해준다
- Language Selection
- 실험에 사용할 언어를 선택하기 위해서, downstream task에 test set이 존재하는 언어들 선정
- 그 후 , XLM-R의 pretraining 언어에 해당되는 언어들은 필터링함
PMM Adaptation Methods
- Continued Pretraining
- XLM-R + MLM : 단일 언어 말뭉치 사용해서 훈련
- XLM-R + TLM : 병렬 말뭉치 사용해서 훈련
- XLM-R + MLM / TLM : 타겟 단일 언어로 된 배치 + 병렬 코퍼스로 구축된 배치 번갈아 가며 선택하여 학습
- Vocabulary Extension
- + Extend
- 각 target 언어마다, 최대 vocab 크기가 30,000인 해당 언어의 성경에 대한 SentencePiece (Kudo and Richardson, 2018) tokenizer를 train !
- 중복된 subword 추가되는 것을 방지하기 위해 XLM-R의 모든 하위 단어를 필터링
- 새로운 subword만을 XLM-R의 tokenizer에 추가, random initialization으로 embedding matrix 증가시킴
- MLM 방식으로 훈련
- + Extend
- Adapters
- + Adapter
- MAD-X framework를 그대로 사용한다
- task adapter를 학습시키기 위해 AdapterHub에서 제공하는 target 언어 및 invertible adapters 훈련 !
- 각 task에 대해 단일 task adapter를 학습시키고 모든 언어에 적용
- 그 후 각 언어에 대한 target 언어 및 invertible adapters 훈련!
- + Adapter
4. Results
- 크게 두 가지 task에 대해서 실험 !
- NER
- POS Tagging
NER
- +MLM, +TLM, +{M|T}LM
- 얘네가 가장 간단하지만 가장 좋은 성능을 냈다
- 그리고 모든 스크립트에 대해서 다 성능이 향상되었음
- + Extend 및 + Adapter
- 그냥 XLM-R보다 낮은 f1 score
- 성경의 크기나 도메인이 이 방식의 성능을 나쁘게 했다
- Baseline F1이 낮을수록, adaption method의 downstream 성능 개선 효과가 더 커진다
- Baseline 성능이 제일 안 좋은 언어에 대해선, 모든 방식들이 다 성능을 개선을 했더라 ~
POS Tagging
- NER의 결과와 동일하게, Continued Pretraining(+MLM, +TLM, +{M|T}LM) 방식이 가장 많이 전반적인 성능 향상에 도움이 되었다
- 하지만 POS의 경우에는 모든 adaptation 방식이 성능향상에 도움이 되었다
- 아마 데이터셋이 NER 성능을 향상시키기엔 제한적이고, 도메인에 덜 민감한 task은 POS Tagging에서는 잘 적용되었을 것이라 예상
5. Case Study
야무지게 PMM adaptation method들에 특정 저자원 언어를 골라서 case study도 해보았다
- 목적
- case study를 통해, 도메인의 한계(성경)와 언어의 유사성이 adaptation methods에 미치는 영향을 확인 !
- 데이터
- Section 3~4와 다르게 여기서는 성경 데이터 이외에 대상 언어의 위키피디아 데이터를 비슷한 크기만큼 가져와서 실험
- task
- NER에만 (대상의 도메인을 명확하게 하도록 하기 위해서)
- 언어
- 시릴 문자를 쓰는 저자원 언어 (바슈키르어, 체첸어, 추바시어)를 통해 언어의 유사성 분석
- 세팅 (Section 3~4에서는 B-E == 영어 베이스라인 모델 )
- 저자들은 라벨링된 훈련 데이터의 언어를 영어에서 러시아어로 변경 (B-R == 러시아어 베이스라인 모델)
- 위키피디아 데이터를 사전 훈련 데이터로 사용 (W-E)
- 위키피디아 데이터와 라벨링된 러시아어 데이터를 모두 사용(W-R)
- 특이 사항
- 위키피디아 데이터를 사용하기 때문에 병렬 코퍼스가 필요한 일부 adaptation 방식(TLM / M+TLM)에 대해선 실험 못 했다
그 결과, 아래와 같이 크게 두 가지로 분석해봄
- Effects of the Finetuning Language
- Effects of the Domain Used for Adaptation
Effects of the Finetuning Language
- 바슈키르어, 체첸어, 추바시어에 대해서 좋은 성능 내는지 확인 !
- 러시아어를 소스 언어로 사용하는 것(B-R)이 영어 베이스라인 (B-E) 보다 성능 훨씬 좋음 !!
➡ 즉, 언어의 유사성이 모델 성능에 미치는 영향이 크다는 것을 확인
Effects of the Domain Used for Adaptation
- W-E (영어를 원본 언어로 고정, 사전 훈련 도메인을 성경에서 위키백과로 변경)
- 성경에서 위키피디아 데이터로 바꿨더니 성능 향상 !
- W-R (위키백과와 라벨링된 러시아어 데이터를 함께 사용할 때)
- 성능이 가장 좋았다 !!!!!!
➡ 즉, 성경이 도메인이 제한된 데이터기 때문에 더 포괄적인 데이터인 위키피디아를 썼을 때 더 성능 좋다 ! 확인
6. Limitations
- task selection의 한계
- 본 연구는 POS tagging이랑 NER에만 적용했음 ➡ 추론이 필요하지 않는 low level task다 ...
- XTREME과 같은 벤치마크 데이터셋이 더 높은 수준의 task를 다루지만 40개의 언어밖에 지원하지 않는다는 단점
- 언어적인 측면
- 성경으로부터 1611개의 언어를 얻어냈지만, 그 번역의 질과 양이 각 언어마다 차이가 있을 수 있다
- 그래서 우리의 연구 결과가 완전히 일반화될 순 없을 것임
- (도메인) 편향의 문제
- 이 실험은 PMM (이 논문에서는 XLM-R)을 사용했기 때문에, 그대로 해당 모델의 편향을 답습했을 수밖에 없음
- 또한 성경 데이터 셋을 사용했기 때문에 종교적인 언어로 편향되어 있을 수 있다
7. Conclusion
논문 리뷰
- (설명 부족) 논문을 읽어도 불충분한 설명들이 있어서, 참고문헌을 꼭 읽었어야 됐다 !
- 이 논문만을 읽는 사람 입장에서는 불친절했음
- (case study) 성능 비교만으로 부족할 수 있는 각 방법론의 장단점을 case study를 통해 잘 풀어내려고 했다는 점 굳
- (case study) PMM 및 본 논문의 우려점(도메인 한계, 언어의 유사성)을 고려해서 한 추가 실험 좋았음
- Noisy data / ood data
- speech crosslingual에서도 유사성 있나 ?
개인적 소감
- adapter라는 모듈에 대해 처음 알았다 !
- 본 논문의 Related Works가 multilingual / cross-lingual 연구의 전반적인 흐름을 잘 정리해두어서 도움이 되었음
- 새로운 모델을 제시하는 논문들보다 기존 모델들을 분석하는 논문들이 더 리뷰하기 힘들다 헉헉
- 그래서 2021년 이전 논문들은 ChatGPT한테 요약 부탁하면 아주 잘 해준다 ~
- 그리고 reference들에서 가장 많이 등장했던 연구자를 발견!
- 이 분, multilingual를 주로 연구하고 2022년에만 NAACL 2편, ACL 1편, EMNLP 7편 낸 분이었네염
https://aclanthology.org/people/m/mikel-artetxe/
adapter 관련 repo
https://github.com/Adapter-Hub/adapter-transformers
아래와 같이 다양한 colab notebook으로 adapter를 활용해볼 수 있다 !
cross-lingual 이외에도 generation 등 다양한 분야에도 적용 가능 ~
본 논문에서 사용한 MAD-X는 4번 notebook 참고 !
from transformers import AdapterConfig # Load the language adapters lang_adapter_config = AdapterConfig.load("pfeiffer", reduction_factor=2) model.load_adapter("en/wiki@ukp", config=lang_adapter_config) model.load_adapter("zh/wiki@ukp", config=lang_adapter_config) # Add a new task adapter model.add_adapter("copa") # Add a classification head for our target task model.add_multiple_choice_head("copa", num_choices=2) ... trainer = AdapterTrainer( model=model, args=training_args, train_dataset=train_dataset, ) trainer.train() ... dataset_zh = load_dataset("xcopa", "zh", ignore_verifications=True) dataset_zh = preprocess_dataset(dataset_zh) print(dataset_zh["test"][0])
8. Reference
https://aclanthology.org/2021.acl-long.351/
728x90'AI > NLP' 카테고리의 다른 글