728x90

기존 모델의 다국적 언어를 지원하기 위한 한계

오늘 공부할 것은 언어에 구애받지 않는 BERT 기반 문장 임베딩(Language-Agnostic BERT Sentence Embedding)에 대한 내용입니다. 다국어 임베딩 모델은 같은 임베딩 공간에 다른 언어들을 인코딩시키기에 강력한 도구입니다. 이는 텍스트 분류, 클러스터링 또는 언어 이해 등 다양한 태스크에 쓰일 수 있습니다.
이전 방법론들은(LASER나 m~USE) 서로 다른 언어들 간의 문장 임베딩 일관성을 향상시키기 위해 한 문장에서 다른 언어의 한 문장으로 매핑시키는 방법을 씁니다. 이들은 밀접하게 연관된 표현들을 얻기 위해 번역 쌍을 학습 데이터로 쓰는 번역 순위 태스크(translation ranking tasks)같은 곳에 적용될 때 종종 연관된 이중 언어 모델(en-xx)에 비해 고자원의 언어(en)에서 성능이 안 좋아집니다. 모델 케파의 한계와 저자원 언어의 질나쁜 학습 데이터 때문에, 좋은 성능으로 수많은 언어들을 지원하도록 다국어 모델을 확장시키기가 어렵습니다.

MLM pre-training의 제안과 여전한 한계

언어 모델을 개선하기 위해서 MLM pre-training 기법들(BERT, ALBERT, RoBERTa)이 제안되었습니다. 이는 단일 언어 텍스트만 필요하기 때문에 다양한 언어들과 다양한 언어 처리 태스크에서 좋은 성능을 냈습니다. 또한, MLM pre-taining은 MLM 학습에 연결된 번역 쌍을 포함하거나(translation language modeling (TLM)) 단순하게 여러 언어들의 사전 학습 데이터를 도입하여 다국어 환경으로 확장할 수 있었습니다. 이런 MLM이나 TLM 학습으로 학습된 표현법들은 (문장 단위에 목표가 아닌)태스크에 맞게 fine-tuning하는데 도움이 되었지만 번역 태스크에 중요한 문장 임베딩을 바로 만들 수는 없다는 한계점이 있었습니다.
이전 연구에서, 번역 순위 태스크를 이용해 다국어 문장 임베딩 공간을 학습하여, 주어진 소스 언어 문장에서 타겟 언어들의 문장 모음에 대해 (잘 된 것에 따라)순위를 매기는 방식입니다. 이는 공유하는 트랜스포머 인코더를 가지는 듀얼 인코더 구조가 되는데 이는 다중 병렬 텍스트 검색 태스크에서 좋은 성능을 내게 되었습니다. 그러나, 이 모델은 모델의 용량, 어휘의 범위, 학습 데이터 퀄리티 등으로 인해 이중 언어 모델이 여러언어를 지원하도록 확장할 때 문제가 생겼습니다.

다국어 BERT 임베딩 모델

본 연구에서는 LaBSE라는 다국어 BERT 임베딩 모델을 만들었습니다. 이는 109개의 언어들에 대해 언어에 구애받지 않는 교차 언어 문장 임베딩 생성을 만드는 데 도움이됩니다.

기본적으로 듀얼 인코더 구조로 소스와 타겟 문서는 공유된 임베딩 네트워크에 각각 인코딩됩니다. 번역 순위 태스크가 적용되면 서로를 의역하는 텍스트들은 비슷한 표현법들을 가지도록 만듭니다. 트랜스포머 임베딩 네트워크는 MLM이나 TSM 태스크에 의해 학습된 BERT 체크포인트에 의해 초기화됩니다. 모델은 MLM및 TLM 사전 학습을 사용하여 170억개의 단일 언어 문장과 60억개의 이중 문장 쌍으로 학습을 하였고, 학습 때 데이터가 없었던 저자원의 언어에서도 효과적인 성능을 보였습니다.

텍스트 검색 테스크 실험 및 결과 분석

다국어 텍스트 검색 태스크에 대해서 Tatoeba corpus를 이용해 실험하였습니다. 30개의 언어가 학습데이터에 해당 언어가 존재하지 않았습니다. 모델은 주어진 문장에 대해 consine distance를 계산하여 비슷한 문장을 알아냅니다. 기존 benchmark들이 커버했던 것에 따라 그룹을 4가지(14개, 36개, 86개, 전체(112개))로 나누었습니다. 많이 커버하는 14개의 언어들에 대해서는 m~USE 와 LASER, LaBSE 모두 좋은 결과를 냈습니다. 커버하는 언어가 많아질수록 정확도는 낮아졌지만 LaBSE가 더 완만하게 낮아졌습니다. m~USE는 14개 이상 커버가 안 되는 것을 확인할 수 있었습니다. 30개 이상의 학습 데이터에 없는 언어들에도 적용 가능하다는 것을 확인하였습니다.

Model 14 36 82 All
m~USE (transformer ver) 93.9 - - -
LASER 95.3 84.4 75.9 65.5
LaBSE 95.3 95.0 87.3 83.7

본 연구는 웹 스케일의 병렬적 텍스트에 대해 마이닝 하는 데도 쓰일 수 있다고 합니다. 본 연구에서는 병렬적 텍스트 추출을 위해 대규모 코퍼스인 CommonCrawl에 LaBSE를 적용하여 엄청난 양의 중국어와 독일어 문장을 처리합니다. 각 중국어와 독일어 문장 쌍은 LaBSE모델을 기반으로 인코딩되고 인코딩된 임베딩은 인코딩된 77억개의 영어 문장들 중에서 잠재적인 번역 후보를 찼아 대략적으로 가까운 문장을 찾는 알고리즘을 통해 고차원의 문장 임베딩에서 비교적 빨리 찾을 수 있습니다. 이를 통해 많은 수의 영어-중국어, 영어-독일어 잠재 번역 후보들을 찾을 수 있었습니다. 이는 고품질의 병렬 데이터로 훈련된 현재의 최고 모델과 크게 차이나지 않았습니다.

728x90
728x90

NLP 분야의 모델 소개와 한계점

NLP 분야에서 state-of-the-art의 방법의 하나인 텍스트-텍스트 전이 트랜스포머(Exploring Transfer Learning with T5: the Text-To-Text Transfer Transformer)에 대한 내용입니다. 최근 NLP 태스크에서 전이학습이 유용하게 쓰입니다.

전이학습은 레이블 되어 있지 않은 풍부한 텍스트 데이터에서 self-supervised 태스크(언어 모델링이나 누락된 단어 채우기)를 미리 학습하여(Pre-training) 모델을 만듭니다. 그리고 적은 레이블된 텍스트 데이터를 이용하여 모델을 튜닝(fine-tuning)합니다. NLP 기반의 전이학습 방법은 지속적으로 나오고 있는데( GPT, ULMFiT, ELMo, BERT, XLNet, RoBERTa, ALBERT, Reformer, MT-DNN) 이 분야에서는 어떤 개선 사항이 중요하고, 얼마나 효과가 있는지에 대해 평가하기가 힘듭니다.
기존 BERT 기반의 모델들은 태스크 별로 출력 형태가 다르게 되어 있습니다. 기존 데이터셋에는 퀄리티 이슈나 데이터의 다양성에 대한 이슈가 존재합니다.

통합된 텍스트 입력-텍스트 출력으로 NLP 태스크를 처리하는 T5

전이 학습 방법들의 효과에 대한 대규모의 실증적인 조사를 하고, 이 결과를 반영하여 T5(the Text-To-Text Transfer Transformer)라는 새로운 모델을 구축했습니다.

T5는 BERT 기반의 모델들(출력값이 클래스명이거나 입력값의 일부)과 달리 통합된 텍스트 입력-텍스트 출력으로 NLP 태스크를 처리됩니다. 이러한 특성으로 어떤 NLP 태스크에 대해서도 같은 모델, loss 함수, 그리고 하이퍼파라미터를 쓸 수 있습니다.
지난 NLP 전이 학습 기반의 방법들을 조사해본 결과 다음과 같은 인사이트들을 얻을 수 있었습니다.
1. 모델의 구조 방면에서, "인코더-디코더" 모델이 "디코더만" 사용하는 모델보다 결과가 좋습니다.
2. 사전 학습 목표의 방면에서, 누락된 빈칸 채우기 목표가 가장 좋은 결과를 가져왔고 계산 비용이 가장 중요한 요소였습니다.
3. 레이블되지 않은 데이터셋 방면에서, 같은 도메인 내의 데이터에서 학습하는 것은 효과가 좋지만 적은 데이터셋을 이용하여 사전 학습을 하는 것은 과적합을 초래했습니다.
4. 학습 전략 방면에서, 멀티 태스크 학습 방법이 사전 학습 후 튜닝 방법과 견주어볼만했습니다.. 하지만, 각 태스크에 대해 모델이 얼마나 자주 학습해야 할 자기가고려돼야 한다는 것입니다.

5. 그 외에도 스케일 방면에서, 고정된 계산 능력치에서 모델 쿠기, 학습 시간 등을 비교해 보았습니다.(더 자세한 사항은 페이퍼 참고)

그리고 미리 학습(pre-training) 하는 데 도움이 될 수 있도록 새로운 오픈소스형 데이터 셋 Colossal Clean Crawled Corpus (C4)를 만들었습니다. 기존 데이터 셋 이슈 해결을 위해 C4라는 퀄리티, 다양성, 방대함을 모두 만족시키는 데이터 셋을 구축하였습니다. Common Crawl 을 기반으로 데이터를 좋은 퀄리티로 정제했습니다.

Q&A와 빈칸에 텍스트 채우기 태스크에 대한 실험 결과와 궁금점

C4 데이터셋과 T5 모델을 결합한 결과 다양한 태스크에 도입될 수 있고 현재까지 나온 모델들과 비교하여도 성능이 뛰어남을 보였습니다. 이 포스팅에서는 두 가지 태스크에 대해 예시를 들었습니다.
1. 외부 참고자료없이 Q&A(Closed-Book Question Answering) - SQuAD 데이터셋 이용하기: Pre-training 때 배운 파라미터에 저장된 지식만을 가지고 답해야 하는 태스크입니다.
중간중간 단어들에 대해 마스크(M)를 씌우고 그 마스크 씌우 곳에 들어갈 단어들이 출력값으로 나오도록 Pre-training 합니다.

"President Franklin <M> born <M> January 1882." <-> T5 <-> "D. Roosevelt was <M> in"

Fine-tuning시에는 따로 지식 학습 없이 Q&A 가능합니다.

"When was Franklin D.Roosevelt born?"->T5-> 1882

결과적으로 34.5%~50.1% 정도의 정확도 결과를 보였습니다.

2. 빈칸에 텍스트 채우기 : 이 태스크에서는 사용자가 요청하는 수에 맞춰서 알맞은 단어들을 생성합니다. Pre-training은 위와 비슷하게 하고, fine-tuning시에 다음과 같이 태스크에 맞게 학습합니다. 빈칸 대신 숫자로 채웠습니다.
따라서 모델 입력값이 다음과 같다면

I like to eat peanut butter and _4_ sandwiches

출력값은

jelly, which is what makes good

이 나올 수 있도록 학습했다는 것입니다.

자세한 T5 구현 방법을 보려면 페이퍼 참고하시면 됩니다. 태스크를 넘나들어서 적용할 수 있다는 아이디어가 놀라웠고 입력과 출력의 포맷에서 자유로울 수 있는 점이 가장 장점인 것 같습니다. 어디까지 적용할 수 있을 지도 상상해 봐야겠습니다. 결국에는 Pre-training의 데이터 셋이 얼마나 잘 구성되어 있고 지식이 얼마나 많은 지에 따라 성능이 크게 차이 날 것 같습니다. 한국어로 이런 데이터 셋을 모을 수 있을지 궁금증이 생깁니다.

728x90

'NLP' 카테고리의 다른 글

PEGASUS, 추상적인 텍스트 요약 모델  (0) 2020.06.10
728x90

컴퓨터 비전에서 대규모 pre-training 탐색의 필요성

 오늘 공부할 내용은 컴퓨터 비전을 위한 대규모 pre-training 탐색 기법(Open-Sourcing BiT: Exploring Large-Scale Pre-training for Computer Vision)에 대한 내용입니다. Label 하는 것에 노동력이 많이 들어 Computer Vision(CV)에서도 ImageNet 같은 대용량의 데이터로 미리 pre-training 한 다음 specific 한 task에 학습된 feature들을 사용하는 것이 도움이 될 수 있습니다. 하지만, CV에서 specific 한 새로운 task에 적용하는 것은 성능을 떨어트릴 수 있습니다. 이를 위해 적절한 normalization layer를 선택하고 학습 데이터의 양에 따라 구조적인 수용력이 늘어나는 기법이 필요합니다.

Pre-training 방법

 Pre-training을 위해 ILSVRC-2012< ImageNet-21k < JFT 데이터 셋 사용하였습니다. 그리고 더 pre-training이 잘 되기 위한 방안 탐색했습니다.

①데이터 셋들을 단순한 ResNet을 사용해서 학습했는데, 결과적으로 데이터양이 많아질수록 학습 모델(ResNet)의 수용력이 커져야 (정확도) 성능이  잘 나옴을 발견했습니다.
② 같은 계산 비용과 학습 시간에는 데이터 셋이 클수록 정확도가 안 좋지만, 계산 비용을 높이고 학습 시간을 길게 주면 데이터 셋이 크더라도 점점 정확도가 높아짐을 알 수 있습니다.

③ batch normalization(BN, activitaion들을 normalization 해서 학습을 안정화하는 layer)을 group normalization(GN)으로 바꾸면 성능이 좋아집니다. ⓐ BN의 state는 pre-training 단계와 transfer 단계 사이에서 조절해야 하지만 GN는 stateless, ⓑ BN은 배치 레벨 상의 통계를 이용하나, 이는 대형 모델에서 소형 디바이스 크기의 배치 크기에서는 신뢰할 수 없게 됩니다. GN는 이를 이용하지 않아 괜찮고, weight standaedization(WS)까지 이용하면 더욱 성능에 좋아지는 것을 확인할 수 있습니다. 결론적으로 GN+ WS를 사용하면 큰 데이터 셋에서도 보다 잘 학습이 됩니다.

 

Transfer learning 방법

 아주 적은 양의 데이터 셋을 적용하여 BERT 방법을 써보았습니다. 사진의 하이레벨 특성을 가지고 하이퍼 파라미터를 선택할 수 있도록 "BiT-HyperRule"을 적용합니다. 많은 양의 데이터 셋을 가지고 수용력이 큰 모델을 가지고 pre-training을 하면 fine-tuning 시에도 더 좋은 성능이 나옴을 알 수 있습니다. 따라서 JFT 데이터 셋을 가지고 R152x4 모델을 러닝 했을 때 가장 성능이 좋습니다. 실제 환경에서 생성된 적은 양의 데이터 셋에도 잘 작동됨을 알 수 있습니다.

연구에 대한 의견

 Novelty는 Pre-training 시에 GN+WS를 도입하여 stateless 화하고, transfer learning 시에 "BiT-HyperRule"을 적용하여 대규모 학습 시에도 잘 작동하며 여러 도메인에 적용할 수 있도록 하였습니다. 결국은 데이터양이 많고 모델의 크기가 클수록 작동을 잘 한다는 것인데, 데이터의 양이 클수록 잘 되는 것은 당연해 보였는데 학습 시간이 길 필요성이 있다는 점이 흥미로웠습니다. 모델의 수용력이 클수록 정말 잘 되는 것인지, 아니면 어느 지점에서는 성능이 수렴이 되는 것인지 궁금해졌습니다. BERT가 NLP에서 굉장히 연구가 많이 되고 있는데 CV에서도 발전하고 있는 것을 보니(BigTransfer (BiT): State-of-the-art transfer learning for computer vision), 다른 분야에서는 어느 정도로 발전이 되고 있는지 한 번 찾아봐야겠다는 생각이 들었습니다. 참고로, tensorflow에 튜토리얼이 엄청 친절하게 되어 있어서 연습해 보는 데 좋은 것 같습니다.

 

728x90

+ Recent posts