Transfer Learning in NLP

Mr.P L
AIResearch.in.th
Published in
3 min readJun 19, 2020

มีข้อมูลน้อย แต่อยากได้โมเดลดีๆก็ไปเก็บข้อมูลเพิ่ม เอ้ย! ทำ Transfer Learning สิ

เกริ่นก่อน Transfer Learning

ในช่วงไม่กี่ปีที่ผ่านมาวงการ Deep Learning กำลังฮอตมากเพราะมีโมเดลที่เก่งๆมากมายเกิดขึ้นทั้งในฝั่งของ Computer Vision (YOLO,R-CNN,Alexnet, etc.) หรือทางฝั่งของ NLP (BERT,XLNET,GPT-2, etc.)

ยกตัวอย่างเช่น BERT โมเดลที่ต้องใช้ทรัพยากรคอมพิวเตอร์ในการเทรนเป็นจำนวนมากและก็ยังต้องใช้ดาต้าจำนวนมากถ้าอยากจะได้ผลลัพธ์ที่ดี

แต่ว่าในแต่ละ dataset มันก็จะมี domain ต่างกัน ทำให้ได้ผลลัพธ์ที่ต่างกันอีก

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

ซึ่งจะมีบางโมเดลที่อาจจะถูกเทรนด้วย dataset ที่เราอาจจะเอามาประยุกต์กับงานเราแต่ไม่ได้ผลลัพธ์ที่ดีมากเช่น โมเดล A ถูกเทรนบน Dataset บนโดเมน Social Media ทำให้เวลาเราเอามาใช้กับงานของเราบนโดเมนข่าว ซึ่งโดยปกติพวก Supervised Learning จะเป็นโมเดลที่ “domain dependence” นั้นคืออาจจะทำให้ประสิทธิภาพของโมเดลลดลงถ้าเอาไปรันบนโดเมนอื่นๆ[ii]

ซึ่งมีอีกหนึ่งความคิดเกิดขึ้นมาว่า “มันจะดีมากเลยนะ ถ้าเราสามารถเอาโมเดลเก่งๆมาใช้โดเมนอื่นๆได้ ”[iii]

จึงได้เกิดไอเดียการทำ “Transfer learning” ขึ้นมา

ตัวอย่างการทำ Transfer Learning ใน NLP

ตัวอย่างแบบง่ายที่สุดเช่น ปัญหาการทำ sentiment classification กับโดเมนต่างๆ เราต้องการสร้างโมเดลสำหรับ classify รีวิวลูกค้าของสินค้าๆหนึ่ง (negative(N) or positive(P)) เช่น รีวิวกล้องถ่ายรูป แต่การจะสร้างโมเดลเหล่านี้ขึ้นมา เราจะต้องเก็บข้อมูลรีวิวสำหรับสินค้าของเรา และกำกับมัน (N or P) จากนั้นจึงนำข้อมูลไปเทรนกับโมเดลของเรา แต่ว่าถ้าเราจะเอาโมเดลของกล้องถ่ายรูปไปทำนายรีวิวของหม้อหุงข้าว จะทำให้ประสิทธิภาพของโมเดลเราลดลง ถ้าเราอยากให้โมเดลมันดีเหมือนเดิม เราก็ต้องเก็บข้อมูลใหม่อีก (ถ้าอยากให้ดีมากๆก็ต้องเก็บเยอะๆอีก) แต่อย่าลืมว่าการเก็บข้อมูลและการกำกับข้อมูลมันมีราคาของมัน (ทั้งเวลาและทรัพยากร) เพราะฉนั้นถ้าเราอยากจะลดต้นทุนมาหน่อย เราอาจจะใช้เทคนิค Transfer learning จากโดเมนของกล้องมาสู่หม้อหุงข้าวได้นั้นเอง[iv, iii]

อีกสองกรณีที่เหมาะกับการทำ Transfer Learning ได้แก่

  • กรณีที่หนึ่ง: เราไม่มีเครื่องเอาไว้เทรนโมเดล

เราต้องการเทรน BERT ที่เป็นโมเดลขนาดใหญ่ ซึ่งต้องใช้เวลาเทรนนาน[i] แต่คุณไม่มีคอมแรงๆที่เอาไว้เทรนโมเดลพวกนี้ คุณอาจจะลองใช้เทค Large batch training ก็ได้ แต่ Accuracy อาจจะลดลงนิดหน่อย[v] แต่ถ้าคุณต้องการผลลัพธ์ที่ดีที่สุดคุณอาจจะต้องหาเครื่องคอมพิวเตอร์ที่แรงๆมาเทรนโมเดล แต่การที่คุณทำ Transfer learning ก็เท่ากับว่าคุณไม่ได้เริ่มเทรนใหม่ตั้งแต่แรก แค่ transfer มายังโดเมนใหม่ๆ จะทำให้ใช้เวลาได้ลดลง

[https://www.researchgate.net/post/How_we_can_reduce_the_time_which_need_train_the_Convolutional_Neural_Network_CNN]

  • กรณีที่สอง: เรามีข้อมูลน้อย

โดยปกติ Deep Neural Network (DNN) จะใช้ข้อมูลจำนวนมากในการฝึกฝนโมเดลถึงจะให้ผลลัพธ์ที่ดี แต่กรณีนี้เป็นกรณีที่เหมาะสมมากๆกับ Transfer Learning เพราะคุณแค่เอาโมเดลที่เทรนมาแล้ว (pre-trained model) มาทำ Transfer Learning กับข้อมูลอันใหม่ให้ใช้กับงานของคุณ [ix]

เราจึงสรุปได้สั้นๆว่า

Transfer learning คือการย้ายองค์ความรู้จาก Pre-trained โมเดลไปสู่อีกโมเดลหนึ่ง โดยเหมาะกับเวลาที่เรามีต้นทุนน้อยทั้งเวลาและข้อมูล และอีกทั้งการทำ transfer learning จะสามารถให้ผลลัพธ์ได้ดีกว่า Pre-trained โมเดลได้อีกด้วย[vi, ix] แม้คุณจะมีข้อมูลเยอะแล้ว การทำ Transfer Learning บน Pre-trained มาใช้กับงานของเราก็ยังให้ผลลัพธ์ที่ดีอีกด้วย

Transfer learning ไม่ใช่แค่ Adapt domain แต่รวมถึงการ Cross-lingual (Cross-Lingual transfer learning or CLTL)

ปกติเวลาเราจะสร้าง Model พวก Deep Learning จะต้องใช้ข้อมูลจำนวนมาก แต่ทว่าในบางภาษาก็ไม่มีข้อมูลมากขนาดนั้น (Low Resource Language)

CLTL จึงออกแบบมาเพื่อให้เราสร้าง Language Model จากการนำภาษาอื่นๆมาใช้ในภาษาตัวเองได้ ซึ่งไม่ได้จำกัดแค่ภาษาเดียว Input อาจจะเป็นหลายภาษาก็ได้ (Multi-Lingual Transfer Learning) เช่น การเอาภาษาอังกฤษ,เยอรมันและฝรั่งเศส (Source Language) มาเพื่อช่วยบูทภาษาที่เราต้องการอย่างเช่นภาษาจีน (Target Language) [vii]

ซึ่งข้อดีของงานพวกนี้เราจะเห็นได้ชัดเลยว่าการนำข้อมูลจากภาษาที่มีข้อมูลมากอย่างอังกฤษ มาประยุกต์ใช้กับภาษาที่ข้อมูลน้อยนั้นจะมี impact เป็นอย่างมาก น่าเสียดายที่ภาษาไทยยังไม่ค่อยถูกทำการทดลองมากนัก อาจเป็นเพราะข้อมูลภาษาก็เก็บยากและมีน้อย พอจะทดลองจริงๆจังผลมันอาจไม่สวยงามมาก (แต่ก็มีงานที่ทำ Language model ด้วย ELMO แต่ transfer EN มา TH ให้ผลลัพธ์ที่ดีแม้ภาษาจะต่างกันมาก [viii])

แต่ถ้าเรามีข้อมูลมาก (ซึ่งตอนนี้เราอาจจะมีมากพอแล้ว) การนำ Language Model มาเทรนด้วยตนเองก็ไม่ใช่เรื่องที่แย่อะไร อย่างเช่นที่ Thai2fit ทำ (เทรน ULMfit ด้วยภาษาไทย)

ตัวอย่างการทำ Transfer learning กับ Language Model

งาน conference NAACL 2019 ได้มี workshop ในการทำ Transfer Learning กับ NLP ซึ่งภายในมีการ present การทำ Adaptation กับ Down-stream application เช่น text classification, Natural Language Generation (NLG) etc.

แต่ข้างในจะเป็นวิดีโอที่ไม่เบสิคมากเพราะก่อนจะฟังมีสกิลที่ต้องรู้ได้แก่ DNN ในปัจจุบัน เช่น RNN, CNN และ Transformers และต้องมีสกิล NLP พื้นฐานเช่นเข้าใจ text classification, NLG เป็นต้น

https://www.aclweb.org/anthology/N19-5004/

วิดีโอ

สไลด์

https://www.aclweb.org/anthology/attachments/N19-5004.Presentation.pdf

เก็บตก

ที่จริงยังมีอีกหลายเรื่องที่ยังไม่ได้พูดใน Transfer Learning เช่นการเทคนิคการทำ Transfer Learning, กรณีตัวอย่างของ Transfer อีกมากมาย หวังว่าบทความหน้าจะมีโอกาสได้มาอธิบายขยายเพิ่มนะครับ

บทความนี้สนับสนุนโดย

Facebook Page

อ้างอิง

[i] Efficient Training of BERT by Progressively Stacking

https://proceedings.mlr.press/v97/gong19a/gong19a.pdf

[ii] Deep Visual Domain Adaptation: A Survey

https://arxiv.org/pdf/1802.03601.pdf

[iii] A Survey on Transfer Learning https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5288526

[iv] Biographies, Bollywood, Boom-boxes and Blenders: Domain Adaptation for Sentiment Classification

https://www.cs.jhu.edu/~mdredze/publications/sentiment_acl07.pdf

[v] LARGE BATCH OPTIMIZATION FOR DEEP LEARNING: TRAINING BERT IN 76 MINUTES

https://arxiv.org/pdf/1904.00962.pdf

[vi] Visual domain adaptation via transfer feature learning

https://www.researchgate.net/publication/302482002_Visual_domain_adaptation_via_transfer_feature_learning

[vii] Multi-Source Cross-Lingual Model Transfer: Learning What to Share

https://www.aclweb.org/anthology/P19-1299.pdf

[viii] Cross-Lingual Transfer Learning for Multilingual Task Oriented Dialog

https://www.aclweb.org/anthology/N19-1380.pdf

[ix] Transfer Learning in Natural Language Processing Tutorial

https://www.aclweb.org/anthology/N19-5004.pdf

--

--

Mr.P L
AIResearch.in.th

Lifestyle of Programmer & IoT (Node-RED|Blynk) & Data Science (ML,DL,NLP) and Whatever I want to do | cat can coding too | Ph.D. -> VISTEC -> IST