일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 밑바닥부터 시작하는 딥러닝
- student t분포
- 머신러닝
- 오래간만에 글쓰네
- 파이썬 pandas
- 자연어 처리
- 감성분석
- 다층 퍼셉트론
- 최소자승법
- Pandas
- 코사인 유사도
- 가설검정
- 결정계수
- 기초통계
- 모두의 딥러닝
- 군집화
- 차원축소
- F분포
- word2vec
- numpy
- 은준아 화이팅
- 텍스트 분류
- 기술통계학
- 회귀분석
- 구글 BERT의 정석
- 텐서플로2와 머신러닝으로 시작하는 자연어처리
- rnn
- 밑바닥부터 시작하는 딥러닝2
- 히스토그램
- Django
- Today
- Total
데이터 한 그릇
다른 언어에 BERT 적용하기 본문
BERT 를 영어가 아닌 다른 언어에 적용할 수 있을까?
M-BERT(multilingual - BERT) 는 영어 이외의 다른 언어에서도 표현을 계산한다.
- multilingual - BERT 이해하기
- multilingual - BERT 의 다국어 특징
- XLM
- XLM - R 이해하기
- 언어별 BERT
M-BERT 이해하기
BERT는 본래 영어 텍스트만 사용 가능하다.
프랑스어나 스페인어는 어떻게 해야할까? M-BERT 사용한다.
M-BERT 로 영어를 포함한 다른 언어들의 표현을 얻을 수 있다.
본래의 BERT 는 영어 위키피디아와 토론토 책 말뭉치를 가지고 MSM, NSP 로 학습되었다.
M-BERT 는 영어 위키피디아뿐 아니라 104개 언어의 위키피디아 텍스트로 학습되었다.
어떤 언어는 특정 언어보다 자료의 수가 더 적을 수 있다. 예를 들어서 스와힐리어에 비해서 영어는 더 많은 자료를 가지고 있다.
만일 이 데이터 셋으로 학습을 시키면 과적합(Overfitting) 문제가 발생할 수 있다.
이 issue 를 해결하기 위해서 샘플링 방법을 사용해야 한다.
자료가 많은 언어를 언더 샘플링(undersampling) 하고 자료가 적은 언어를 오버샘플링(oversampling) 한다.
M-BERT 는 104개 언어의 위키피디아 텍스트를 사용해 학습했으므로 여러 언어의 구문 구조도 파악한다.
104개 언어에 걸쳐 모두 11만 개의 워드 피스로 구성된다.
BERT모델을 학습시킨 것과 동일한 방식으로 학습시켰다.
사전 학습된 M-BERT 모델은 구글에서 오픈 소스로 공개했다.
- BERT-base, multilingual- cased (대소문자 구분)
- BERT-base, multilingual- uncased(소문자만)
두 모델 모두 12개의 인코더 레이어, 768의 은닉 크기로 구성. 총 1억 1천만 개의 변수로 이루어져 있음.
NLI 태스크 평가로 알아보는 M-BERT 평가하기
NLI 태스크에 M-BERT 를 파인 튜닝하고 평가를 해보자.
NLI 태스크는 전제와 가설을 비교해서 레이블을 판단하는 건데 레이블의 종류는 함의(진실), 모순(거짓), 미결정(중립) 이다.
NLI 태스크를 위한 데이터 셋
- 스탠포드 자연어 추론(일반적) - SNLI
- 교차 언어 자연어 추론 (M-BERT 에서 사용) - XNLI
- 멀티 장르 자연어 추론 - MultiNLI, SNLI 와 유사한 말뭉치로 이루어져 있다.
XNLI 데이터셋은 MultiNLI 를 확장한 데이터셋이다.
데이터셋 이해를 했으니 다음으로 M-BERT 평가법을 살펴보자.
사전 학습된 M-BERT 를 XNLI 데이터셋을 이용해서 NLI 태스크에 맞춰 파인 튜닝한다.
제로샷(Zero - shot)
제로샷은 영어로 만들어진 학습셋으로 NLI 태스크에 맞춰 M-BERT 를 파인 튜닝한다.
그리고 테스트 셋을 이용해서 각 나라의 언어로 모델을 평가한다.
**모델을 영어에만 파인 튜닝하고 다른 언어로는 파인 튜닝하지 않았기 때문에 제로샷이라고 부른다.**
이 방법은 M-BERT 의 교차 언어 능력을 이해하는데 도움이 된다.
- 파인 튜닝 : 영어 학습셋으로만, NLI 태스크에 맞춰서
- 평가 : 모든 언어 테스트셋으로 평가
번역 - 테스트
번역 - 테스트(TRANSLATE - TEST)
영어 학습 데이터셋을 이용해서 NLI 태스크에 맞춰서 BERT 모델을 파인 튜닝하고 영어로 번역된 테스트셋에서 평가한다.
- 파인 튜닝 : 영어 학습셋
- 평가 : 영어로 번역된 테스트셋
번역 - 학습
학습셋을 본래 영어인데 다른 언어로 번역된 데이터 셋을 이용한다.
파인 튜닝에 번역된 학습셋을 사용하고 평가에는 모든 언어로 구성된 테스트셋을 이용한다.
- 파인 튜닝 : 영어에서 다른 언어로 번역된 학습셋
- 평가 : 모든 언어 테스트셋
번역-학습-모두
학습셋을 영어에서 모든 다른 언어로 번역.
학습셋은 영어에서 모든 다른 언어로 번역한다.
학습셋 번역된 문장 쌍.
학습셋으로 M-BERT 파인 튜닝. 테스트셋에 포함된 모든 언어로 모형을 평가한다.
- 파인 튜닝 : 영어에서 모든 다른 언어로 번역된 학습셋
- 평가 : 모든 언어 테스트셋
ZERO 샷을 포함한 다양한 방법들이 다국어에서 성능이 좋다.
어떻게 그럴 수 있는지 살펴보자
M-BERT 는 다국어 표현이 어떻게 가능한가?
어휘 중복 효과
M-BERT 의 다국어 지식 전이가 어휘 중복에 영향을 받는지 알아본다.
M-BERT 모델은 하나의 언어로 파인 튜닝하고 다른 언어에서 파인 튜닝된 M-BERT 모델을 사용할 수 있다. (ZERO샷)
그런데 M-BERT 의 ZERO샷 지식 전이는 어떻게 이루어질까?/
가설을 세워보자. ZERO샷 지식 전이가 가능한 이유가 언어 간에 중복되는 어휘 때문이라고 해보자.
그러면 M-BERT의 정확도는 어휘가 많이 중복되는 언어에 크게 영향을 받을 것이다. (만일 영어와 독일어가 중복되는 어휘가 많다면 이 둘에 관한 M-BERT 모델의 정확도는 높은 것이다.)
실험을 통해서 살펴보자.
하나의 언어로 M-BERT를 파인튜닝하고 다른 언어로 평가한다.
파인 튜닝 언어로 워드피스 토큰을 E_train 으로 표시하고 평가 언어로 워드피스 토큰을 E_eval 로 표시한다.
파인 튜닝 및 평가 언어 간에 겹치는 워드피스 토큰을 다음과 같이 계산할 수 있다.
overlap = |E_train (교집합) E_eval | / |E_train U E_eval|
먼저 하나의 언어로 파인 튜닝한 다음에 다른 16개 언어로 평가해서 각각의 F1 점수를 얻는다.
그러면 어휘 중복이 적은 경우에도 F1점수가 높게 나오는 걸 확인할 수 있는데 이를 통해서 어휘 중복이 많은 것과 무관하게 제로샷 성능이 잘 나온닥 이야기 할 수 있다.
따라서 가설을 틀린 것을 간주할 수 있다.
오히려 M-BERT 가 다른 언어와의 관계성을 고려해 일반화를 잘 하는 것이라고 말할 수 있다.
(모델이 단순 어휘를 암기하는 것이 아니라 다국어 표현을 더 깊게 학습한다는 것을 의미한다.)
스크립트에 대한 일반화
이제 M-BERT 가 서로 다른 언어에도 일반화해 적용할 수 있는지 살펴보자.
먼저 태스크를 정해보자. 태소 분석(Pos tagging) 태스크를 한다고 가정한다.
우르두어를 이용해 형태소 분석을 위해 M-BERT를 파인 튜닝한다 그 이후 다른 언어로 파인 튜닝된 M-BERT를 평가한다.
예를 들어서 우르두어를 이용해 M-BERT 를 파인 튜닝하고(형태소 분석 태스크에 맞추어) 그 이후 힌디어로 파인 튜닝된 M-BERT를 평가한다.
우르두어는 아랍어 스크립트를 따르고, 힌디어는 데바가라리어 스크립트를 따르는데, 우르두어 텍스트에서 형태소 분석을 위해 파인튜닝된 M-BERT는 힌디어 텍스트에 91%의 정확도를 보인다.
이는 M-BERT가 여러 스크립트들을 일반화할 수 있음을 보여준다.
하지만 영어 - 일본어는 잘 번역이 되지 않는다. 이는 **유형학적 유사성** 때문이다.
(M-BERT가 일부 언어 쌍에서는 일반화가 잘 되지만 모든 언어에서 적용되지는 않는다.)
유형학적 특징에 대한 일반화
만일 형태소 분석에 맞추어 영어 텍스트를 파인 튜닝하고 일본어로 평가하게 되면, 주어, 동사, 목적어 순서가 다르기 때문에 정확도가 낮아진다.
그러나 불가리어에 적용하면 정확도가 높아진다.
(단어 순서가 지식 전이에 중요한 역할을 한다.)
정리하면 M-BERT 제로샷 전이는 단어 순서가 동일한 언어에서 더 잘 적용한다.
즉, M-BERT의 일반화 능력은 언어 간의 유형학적 유사성에 따라 달라진다고 할 수 있다.
언어 유사성의 효과
M-BERT 제로샷 전이는 파인 튜닝 및 평가 언어 간에 언어 구조가 유사할 때 잘 수행된다.
코드 스위칭과 음차의 효과
M-BERT가 코드 스위칭과 음차를 처리하는 방법
코드 스위칭
대화에서 서로 다른 언어를 혼합하거나 교대로 사용하는 것을 코드 스위칭(code switching) 이라고 한다.
"I like 단무지"
음차
나는 sci-fi 영화를 좋아해의 한국말을 모두 영어 발음 소리로 적는다.
"I like danmuji"
(맞나? ㅋㅋ)
코드 스위칭과 음차의 M-BERT
- 음차 : 영어랑 힌디어가 코드 스위칭되어서 적혀 있는데, 힌디어를 영어 발음을대로 영어로 적어놓음.
- 코드 스위칭 : 힌드어와 영어를 섞어 적어둠
음차된 힌디어/영어 말뭉치 => 영어를 기준으로 적고 힌디어를 영어 발음으로 적은 것
단일 언어 힌디어 + 영어 말뭉치
위의 두 개의 데이터를 이용해서 형태소 분석 태스크로 M-BERT 로 파인 튜닝 한다.
여기서 음차된 말뭉치를 파인 튜닝한 것과 단일 언어 힌디어 + 영어 말뭉치로 파인 튜닝한 것간의 정확도 차이를 비교한다.
음차된 말뭉치의 정확도는 85.64%
단일 언어 정확도는 50.41 %가 된다.
다음으로 M-BERT 코드 스위칭 처리 방법 살펴본다.
코드 스위칭된 말뭉치에서 직접 파인 튜닝한 것과 단일 언어 힌디어 + 영어 말뭉치에서 M-BERT를 파인 튜닝했을 때의 정확도를 비교
M-BERT 정리
- M-BERT 의 일반화 가능성은 어휘 중복에 의존 X
- M-BERT의 일반화 가능성은 유형학 및 언어 유사성에 따라 다르다.
- M-BERT는 코드 스위칭 텍스트를 처리할 수 있지만 음차 테스트는 처리할 수 없다.
XLM
다국어 목표로 BERT 모델을 사전 학습 시키는 방법을 알아본다.
다국어 목표를 가지고 학습된 BERT를 교차 언어 모델(Cross-linguage model, XLM) 이라고 한다.
XLM 은 M-BERT보다 다국어 표현 학습을 할 때 성능이 더 뛰어나다.
(당연하게 XLM은 제로샷으로 하는 경우, 한 언어로 사전학습하고 다른 언어로 성가를 평가하기 때문이다.)
XLM에서 사전 학습에 사용되는 데이터 셋은 단일 언어 및 병렬 데이터 셋이다.
병렬 데이터 셋은 언어 쌍의 텍스트로 구성된다.(2개의 다른 언어로 된 동일한 텍스트)
예를 들어서 어떤 의미 X가 있으면 이 X를 동일하게 표현한 영어 문장과 프랑스어 문장이 동시에 있다.
이 병렬 데이터셋을 교차 언어 데이터셋이라고 부른다.
단일 언어 데이터셋 from 위키피디아
병렬 데이터셋 from 다국어 유엔 만뭉치, 개방형 병렬 말뭉치 및 IIT 봄베이 말뭉치.
XLM 은 바이트 쌍 인코딩(BPE) 을 사용한다.
사전 학습 전략
- 인과 언어 모델링(CLM)
- 마스크 언어 모델링(MLM)
- 번역 언어 모델링(TLM)
CLM
**인과 언어 모델링(CLM)** 은 가장 간단한 사전 학습.
주어진 이전 단어셋에서 현재 단어의 확률을 예측하는 것이다.
(이전 단계가 현재 단어의 확률을 예측하는 것.)
MLM
마스크 언어 모델링 태스크에서 토큰의 15%를 무작위로 마스킹하고 마스큰된 토큰을 예측하도록 모델을 학습 (80 - 10 - 10) 규칙 적용.
- 80% 는 토큰(단어) 을 토큰으로 교체한다.
- 10%는 임의의 토큰
- 나머지 10%는 변경 X
이는 기존 BERT의 MLM 사전 학습과 동일해 보인다. 하지만 몇 가지 차이가 있다.
- BERT에서는 문장 쌍에서 몇 개의 토큰을 무작위로 마스킹하고 BERT에 입력했다. XLM에서는 꼭 문장 쌍을 제공할 필요가 없다.
- 빈번한 단어와 회귀한 단어의 균형을 맞추기 위해서 가중치를 sqrt(1/빈도수) 로 해 다항분포에 따라 토큰을 샘플링한다.
MLM목적의 XLM 모델은 입력값이 들어오면 토큰 임베딩, 위치 임베딩 그리고 **언어 임베딩**을 거치게 된다. 언어 임베딩은 언어를 나타내는데 사용된다.
또한 BERT는 문장 쌍으로 입력값이 들어왔던 반면에, [/s] 로 구분된 임의의 문장을 제공한다.
TLM
번역 언어 모델링(translation language modeling)(TLM)은 또 다른 사전 학습 전략 (MLM 과 다른)
CLM (이전 단어에서 현재 단어 확률을 예측) 과 MLM(마스킹 언어 모델링) 에서는 단일 언어 데이터에 대해 모델을 학습한다.
하지만 TLM 에서는 서로 다른 두 언어로서 동일한 텍스트로 구성된 병렬 교차 언어 데이터를 이용해서 모델을 학습한다. (어떤 의미 X에 대해서 A,B 언어가 표현한 것)
TLM도 MLM과 유사하게 마스킹된 단어를 예측하는 방향으로 학습한다. 그러나 임의의 문장을 입력하는 게 아니라 교차 언어 표현을 학습시키기 위해 병렬 문장을 입력한다.(A,B 언어로 어떤 의미 X에 대해서 표현한 데이터 셋)
TLM 입력값은 교차 언어 데이터이다. 예를 들어서 나는 학생입니다. 라는 한국어와 I am a student 라는 영어 문장이 /s 로 연결되어 입력된다. 그리고 무작위로 masking 하게되고 masking 된 토큰을 예측하는 방향으로 사전 학습이 진행된다.
TLM 또한 입력값이 토큰 임베딩, 위치 임베딩, 언어 임베딩을 거치게 된다.
이때 위치 임베딩은 언어간 다른 두 문장에 다르게 각각 적용된다. 예를 들어서 "나는 학생입니다." 에 0,1,2,3 이 붙었으면 "i am a student" 에 다시 0 1 2..로 인덱스가 새로 붙게 된다.
또한 언어 임베딩은 서로 다른 언어를 나타내는데 사용된다.
마스킹된 토큰을 토큰 주변의 콘텍스트를 통해서 예측하게 되는데 이때, 영어 문장에서 토큰의 콘텍스트 뿐만 아니라 한국 토큰의 콘텍스트 또한 사용할 수 있다.
이를 통해서 교차 언어 표현을 정렬(align) 할 수 있다.
지금까지 살펴본 바로 XLM 은 3가지 사전 학습 방법을 사용하는데 바로, CLM, MLM, TLM 이다.
XLM 사전 학습
- CLM 사용
- MLM 사용
- TLM 과 결합해 MLM 사용
CLM, MLM 을 사용해서 XLM 사전 학습을 시키는 경우 단일 언어 데이터셋을 사용한다.
TLM의 경우 병렬 데이터셋을 사용한다. (같은 의미를 지니고 있는 두 개의 다른 언어 쌍 데이터 셋)
사전 학습 방식에 MLM,TLM 을 사용하는 경우 MLM과 TLM으로 목적 함수를 변경한다.
XLM 성능 평가
영어 NLI 데이터셋에서 XLM 을 파인 튜닝 후 서로 다른 15개의 XNLI 로 평가.
XLM(MLM) 은 MLM 만으로 학습한 모델
XLM(MLM + TLM) 은 MLM과 TLM 으로 학습한 모델
XLM이 M-BERT보다 성능이 더 좋다.
XLM 또한 트랜스포머 라이브러리에서 사전 학습된 모델을 사용할 수 있다.
다음으로 -R(XLM-R) 이라는 또 다른 다국어 모델을 알아볼 예정.
XLM - R 이해하기
XLM에서 몇 가지 보완해서 성능 향상을 만든 게 XLM-R.
XLM-R 은 XLM-RoBERTa 로 교차 언어 표현 학습을 위한 최신 기술이다.
XLM은 MLM에서 단일 언어 데이테 셋을 사용했고 TLM에서는 교차 병렬 데이터 셋을 이용했는데, 자료가 적은 데이터셋에서는 병렬 데이터 셋을 구하기가 힘들다.
따라서 XLM-R은 MLM 으로만 모델을 사전 학습시키고 TLM은 사용하지 않는다. 즉, XLM-R 은 단일 언어 데이터 셋만 필요하다.
굉장히 많은 데이터 셋을 이용한다.
XLM-R은 커먼 크롤 데이터셋에서 별도 레이블이 없는 100개의 언어 텍스트를 필터링해 얻음.
데이터 셋에서 비중이 적은 언어의 경우 샘플링을 통해 비중을 늘림.
이 데이터 셋을 이용해서 MLM으로 사전 학습한다.
XLM-R은 다음 두 가지 구성으로 학습
- 12개의 인코더 레이어, 12개의 어텐션 헤드 및 768 은닉 크기
- 24개의 인코더 레이어, 16개의 어텐션 헤드 및 1024 은닉 크기
사전 학습 후 XLM과 마찬 가지로 다운스트림 태스크에 맞춰서 파인 튜닝할 수 있다.
XLM-R 은 M-BERT와 XLM보다 더 뛰어난 성능을 보인다.
연구원들은 영어 NLI 데이터 셋에서 XLM-R을 파인 튜닝하고 15개의 서로 다른 XNLI 데이터셋으로 평가했다.
성능 비교 결과 XLM-R 이 XLM과 M-BERT보다 더 좋게 나타났다.
언어별 BERT
M-BERT에서 여러 언어 대신 특정 단일 언어만 이용해 BERT를 학습.
우린 프랑스어에 대해서만 먼저 알아보자.
왠만해서는 M-BERT의 성능보다 뛰어나다.
(나머지 단어들의 사전 학습 방식은 각각 다르지만 필요할 때 책을 찾아서 참조해도 무방하다고 생각)
- 프랑스어 FlauBERT
- 스페인어 BETO
- 네덜란드어 BERTje
- 독일어 BERT
- 중국어 BERT
- 일본어 BERT
- 핀란드어 FinBERT
- 이탈리아어 UmBERTo
- 포르투칼어 BERTTimbay
- 러시아어 RuBERT
프랑스어 FlauBERT
FlauBERT 는 프랑스어를 이해하기 위한 사전 학습 모델
데이터 셋은 위키피디아, 도서, 내부 크롤링 등등을 사용했다.
전처리 과정에서 토큰화를 할 때, **Moses 토크나이저**를 사용해 데이터를 전처리하고 토큰화했다.
Moses 토크나이저는 url, 날짜 등을 포함한 특수 토큰을 보존한다.
전처리 및 토큰화 후에 BPE를 이용해서 어휘를 만든다.
FlauBERT 는 50,000 개의 토큰으로 구성된 어휘로 만들어져 있다.
FlauBERT 는 사전 학습할 때 MLM만 수행한다.
그리고 정적 마스킹 대신에 동적 마스킹만 사용한다.
FlauBERT-base, FlauBERT-large가 일반적으로 사용된다.
BERT 모델과 마찬가지로 FlauBERT 또한 사전 학습된 모델을 가져와서 태스크에 맞추어 파인 튜닝할 수 있다.
마치며
M-BERT는 BERT 와 마찬가지로 교차 언어의 고려 없이 사전 학습되었으며 다운스트림 태스크에 맞춰 여러 언어로 일반화된 표현을 생성할 수 있었다.
M-BERT의 일반화 가능성(제로샷같은거 )이 어휘 중복에 있지 않고 유형 및 언어 유사성에 의존한다.
그리고 코드 스위칭 텍스트를 처리할 수 있지만 음차 텍스트는 처리할 수 없다.(사실 그 이유에 대해서는 정확하게 이해하지 못했다..)
그리고 M-BERT 말고 다른 모델 XLM을 살펴봤고, XLM은 교차 언어 모델을 고려해서 학습시켰다.
MLM과 TLM을 이용해서 사전 학습 시켰고, TLM은 MLM과 비슷한 방식이지만 TLM은 교차 언어 데이터 세트를 사용하고 MLM은 단일 언어 데이터 셋을 사용한다.
RoBERTa 아키텍처를 사용하는 교차 언어 모델 -R을 살펴봤는데, XLM-R은 MLM만으로만 학습하고 2.5TB 분량의 텍스트가 포함된 커먼 크롤 데이터셋을 사용한다.
(데이터 크기 무지하게 크다.)
그리고 마지막으로 프랑스어 ~등등 각 언어에 맞게 학습된 단일 언어 BERT들을 살펴봤다. 왠만해서는 M-BERT보다 성능이 더 좋다.
이제 다음 장에서는 sentence-BERT를 이용해서 문장의 표현을 계산하는 법을 살펴볼 것이다.
'NLP > 구글 BERT의 정석' 카테고리의 다른 글
텍스트 요약을 위한 BERTSUM 탐색 (0) | 2022.02.17 |
---|---|
BERT 파생 모델 2 : 지식 증류 기반 (0) | 2022.02.16 |
BERT 파생 모델 (0) | 2022.02.15 |
BERT 활용하기 (0) | 2022.02.10 |
BERT 이해하기 (0) | 2022.02.09 |