Notice
Recent Posts
Recent Comments
Link
관리 메뉴

one by one ◼◻◼◻

[Article 리뷰] Multi Task Learning Objectives for Natural Language Processing 본문

논문리뷰

[Article 리뷰] Multi Task Learning Objectives for Natural Language Processing

JihyunLee 2021. 12. 26. 02:40

이번 주에는 Multi tasking에 관한 review 블로그를 읽어보았습니다.

같은 저자가 만든 review paper 도 있지만, 좀더 접근이 쉬운 블로그 글로 읽고 정리해 보았습니다.

Multi Task Learning 에 대한 정보가 필요해서 구글링하다 찾은 블로그인데 생각보다 엄청 유명한 글이더군요!

버트, 엘모 등 많은 언어모델이 Multi Task Learning을 했다는 점에서 한번쯤 읽어보면 도움이 될 것 같습니다

 

 

review paper : Sebastian Ruder (2017). An Overview of Multi-Task Learning in Deep Neural Networks. arXiv preprint arXiv:1706.05098.

 

blog : https://ruder.io/multi-task/index.html , https://ruder.io/multi-task-learning-nlp/

 

 

Multi Tasking Leraning은 하나의 모델이 다양한 task를 수행하도록 학습하는것을 의미합니다.

주로, 주 task가 있고 나머지 task는 auxilary task 즉 보조의 task 로 쓰이게 됩니다.

 

처음 Multi Tasking Learning(이후 MTL) 개념에 대해 들으면 모델이 배워야 하는게 많으니까 학습의 부담이 되는게 아닌가 싶을 수 있지만, 모델의 파라미터가 충분하면 학습에 부담이 된다기 보다는 더 효과적인 학습이 가능해 지게 됩니다.

 

Two MTL methods for Deep Learning

 

MTL 을 모델로 구현하는 것은 크게 두가지 방법이 있습니다.

Hard paramter sharing

Hard parameter sharing은 하나의 model 파라미터로 여러개의 TASK를 수행하는 것입니다.

흔하게 사용되는 방법이고 overfitting을 줄일 수 있다는 장점이 있습니다.

 

Soft parameter sharing

Soft parameter sharing은 task가 각각의 개별적인 모델 파라미터를 가지는 모델입니다.

이는 L2 Regularize term 과 비슷한 역활을 하게 됩니다.

 

Why doese MTL work?

MTL 이 성능의 향상에 도움이 되는 몇가지 이유가 있습니다.

 

Implicit data augmentation

MTL 은 데이터의 양을 늘려 주는것과 비슷한 역할을 하게 됩니다. 각각의 Task에 대한 data는 노이즈가 존재하게 되지만, task1 에 해당하는 nosie와 task2에 해당하는 noise가 달라지기 때문에 전체적으로는 좋은 데이터가 많아지는 효과를 줍니다.

 

Attention focusing

데이터의 양이 적거나 high dimension이라면 model이 적절한 feature를 찾기 어려울 수 있습니다. MTL은 적절한 feature를 찾는데 도움을 줄 수 있습니다.(이거는 이유가 안나왔네요! 아무래도 Implicit data augmentation의 효과가 있어서 일 것 같습니다)

 

Representation bias

MTL이 특정 task에서 학습하는 representation은 다른 task에게 도움이 될 수 있습니다. 이를 bias 라고 하는데(한국어로는 편향) 일반적으로 bias는 부정적으로 쓰이지만, 여기서는 관련된 task로 부터 얻은 bias이기 때문에 다른 task에게도 유용한 bias가 됩니다.

 

Regularization

마지막으로, 다양한 task로 학습을 하기 때문에 regularizer의 효과가 있습니다.

 

 

어떤 Auxilarary task를 사용할 것인가?

도움이 되는 Auxilrary task는 몇가지 방법으로 구할 수 있습니다.

Related task

가장 classical 한 방법은 관련있는 auxilrary task를 구하는 것입니다. 여기서 관련있는 것이란, 자율운전 분야에서는 도로의 특성을 구별하기 + 핸들 방향 정하기를 같이 학습하고, 얼굴 land mark detection 분야에서는 얼굴방향을 함께 학습시키는 등의 방법을 의미합니다.

 

Adversarial

위 처럼 related task에 대해 라벨된 데이터가 있으면 좋겠지만 없은 경우, 우리가 원하는 것과 opposite한 것을 학습시키는 방법도 있습니다. 이 방법은 오히려 모델을 헷갈리게 하는 방법을 사용해서 원하는 결과를 얻는 방식입니다.

(어디서 읽은 예시인데 정확한 출처가 기억나지 않습니다) 예를들어, 한국의 데이터로 훈련한 자율자동차를 미국 도로에 적용시키려면 적용이 잘 되지 않습니다. 그래서 여기가 한국인지 미국인지 학습하는 데이터를 따로 만든뒤, 이  task에 대해서는 맞는걸 틀리다, 틀린걸 맞는다고 해서 모델을 헷갈리게 하면, 한국이든 미국이든 잘 되는 domain adapted 모델을 만들 수 있다고 합니다.

 

Hints

MTL방법은 모델이 그냥 배우기엔 어려운 task에 힌트를 주는 역할을 할 수 있습니다. 이 예로는 문장 감성분석이 주 task일 때 "감정을 나타내는 단어가 존재하는지?"에 대한 task를 auxilary task로 줄 수 있습니다. 

 

Focusing attention

MTL 방법은 모델이 어디에 더 focus를 해야하는지 알려줄 수 있습니다. 예를들어, 얼굴 인식 분야에서는 얼굴 landmark detection task를 함께 학습시키면, 모델이 얼굴의 landmark에 더 focusing을 해서 얼굴인식 분야의 성능이 더 높아질 수 있습니다.

 

Quantization smoothing

많은 task에서 (low/medium/high)나 (positive/neutral/negative)처럼 구간을 나누어  예측해야하는 경우가 있는데, auxilary task로 (01,2,3,4,5)처럼 좀더 단계가 많은(smoothing한) 예측 task도 같이 두면 좋은 성능을 기대할 수 있습니다.

 

Predicting inputs

보통 feature는 input에서 부터 나오는 것이지만, feature로 부터 input을 예측하게 하는 auxilary task를 추가할 수 있습니다.

 

 

NLP에 적용한 예시 

좀더 자세히, 위 auxilary task들이 어떻게 NLPtask 에 적용될 수 있는지 알아보겠습니다.

 

Machine translation

기계 번역 분야에서는, 서로 다른 번역(영->한, 한->영, 영->중..)을 하나의 모델이 학습하도록 할 수 있습니다. 또한 NER과 POStagging도 도움이 될 수 있습니다.

 

Multilingual tasks

Machine translation과 비슷하게, NER과, POS 그리고 dependency parsing과 document classficiation, discourse segmentation, sequence tagging이 도움이 될 수 있습니다.

 

Language grounding(이미지나 비디오에 캡션달기?)

이 분야에서는 data간의 인과관계를 아는것이 도움이 될 수 있습니다(비디오의 경우). 또한 다음 frame을 예측하는 것도 도움이 될 수 있습니다.

 

Semantic parsing(의미역 파싱. 문장을 의미 단위로 파싱하는것, 형태소 보다 더 큰 단위)

sematic parsing을 여러개 사용해서 다양한 sementic parsing방법을 한번에 익히는 방법들이 많이 수행 되어 왔습니다.

 

Question Answering

QA부분에서는, 중요한 부분이(단락이)어디인지 고르는 auxilary task가 유용하게 작용합니다.

 

 

리뷰 후기

MTL방법을 찾아 보다가 우연히 읽은 깃헙인데 MTL에 대해 잘 정리되 있었고, 연구에 바로 써먹을 수 있게 어떤 task엔 어떤 auxilary가 어울리는지 추천도 해 준 글이라 유용했습니다. 여기서 소개한 것 말고도 다양한 예제들이 더 있는데, 읽어보시면 도움이 될 것 같습니다.🟠

 

 

 

 

 

Comments