BERT Explained: State of the art language model for NLP


Share this article

การประมวลผลภาษาธรรมชาติ (Natural Language Processing, NLP) เป็นกระบวนการในการสร้างอัลกอริทึมการคำนวณเพื่อวิเคราะห์และแสดงผลลัทธ์ที่เกี่ยวข้องกับภาษาของมนุษย์ โดย Google เองก็ใช้ระบบที่เป็น NLP-based เพื่อให้ได้ Search Engine ที่มีประสิทธิภาพ และเมื่อไม่นานมานี้เอง ทาง Amazon ก็ใช้ NLP ในระบบ Voice Assistant ที่มีชื่อว่า Alexa อีกด้วย นอกจากนี้ NLP ก็ถูกใช้ในการเรียนรู้ด้วยเครื่อง (Machine Learning) ให้มีความสามารถในการจัดการกับปัญหาที่เกี่ยวข้องกับภาษาที่มีความซับซ้อน เช่น เครื่องแปลภาษา (Machine Translation) และการสร้างบทสนทนาขึ้นมาใหม่ (Dialogue Generation)

 

BERT Explained: State of the art language model for NLP

BERT (Bidirectional Encoder Representations from Transformers) หรือตัวเข้ารหัสแบบสองทิศทางในรูปแบบตัวแปลง เป็นงานวิจัยที่ถูกเผยแพร่เมื่อไม่นานมานี้โดยนักวิจัยจาก Google AI Language ซึ่งสร้างความฮือฮาในกลุ่ม Machine Learning เป็นอย่างมาก เนื่องจากมันสามารถแสดงผลลัพธ์ที่เป็น state-of-the-art ได้อย่างหลากหลายในงานด้าน NLP รวมไปถึง Question Answering (SQuAD v1.1), Natural Language Inference (MNLI), และอื่นๆอีกด้วย

เทคนิคที่สำคัญของ BERT คือ การใช้การเรียนรู้แบบสองทิศทางของ Transformer ซึ่งกำลังเป็นที่สนใจในโมเดลด้านภาษา วิธีการนี้ต่างจากวิธีการเดิมๆ ซึ่งเป็นการการเรียนรู้ลำดับของข้อความจากซ้ายไปขวา ไม่ก็เป็นการรวมจากซ้ายไปขวาและขวาไปซ้าย ผลงานวิจัยนี้แสดงให้เห็นว่าโมเดลด้านภาษาที่เรียนรู้แบบสองทิศทางสามารถเข้าใจบริบทและการลื่นไหลของภาษาได้อย่างลึกซึ้งมากกว่าโมเดลด้านภาษาแบบทิศทางเดียว โดยนักวิจัยได้ให้ข้อมูลเทคนิคใหม่ที่มีชื่อว่า Masked LM (MLM) เอาไว้ในงานวิจัย ซึ่งทำให้โมเดลสามารถเรียนรู้แบบสองทิศทางได้จากที่ก่อนหน้านั้นไม่สามารถทำได้

 

What is Neural Network?

โมเดล Neural Network คือ โมเดลทางคณิตศาสตร์ที่มีลักษณะเป็นเส้นเชื่อมต่อจาก node หนึ่งไปยังอีก หนึ่ง node หรืออ หลาย node ต่อกันจนมีลักษณะเป็นโครงข่ายขึ้นมา โดยเส้นที่เชื่อมแต่ละ node นั้นก็จะมีค่าน้ำหนัก (weight) อยู่ด้วย node ที่อยู่ตรงทางเข้าจะถูกเรียกว่า input node ส่วนที่อยู่ตรงทางออก เรียกว่า output node ส่วน node อื่นๆที่เหลือทั้งหมดระหว่างสองส่วนแรกนี้ เรียกว่า hidden nodes เมื่อ input เข้าไปในโมเดล ก็จะถูกคำนวณผ่าน node จำนวนมากเหล่านี้ที่มี weight แตกต่างกัน จนได้ออกมาเป็น output ในท้ายที่สุด

 

Background

ในด้านของ computer vision นักวิจัยได้ใช้ประโยชน์จาก transfer learning หรือก็คือโมเดล neural network ที่ถูกทำ pre-training (train มาแล้วด้วย dataset อื่นๆ) เช่น ImageNet แล้วทำการ fine-tuning (การปรับค่า parameter เพื่อให้โมเดลได้ผลลัพท์ที่ดีมากยิ่งขึ้น) จากนั้นจึงสามารถใช้ neural network ที่เรียนรู้มาแล้วนี้ เป็นพื้นฐานสำหรับโมเดลที่มีจุดมุ่งหมายต่างๆได้

วิธีหนึ่งซึ่งเป็นที่นิยมในงาน NLP และถูกอธิบายเอาไว้ในงานวิจัย ELMo เมื่อไม่นานมานี้ก็คือ feature-based training วิธีการนี้ neural network ที่ถูกทำ pre-training จะสร้าง word embeddings ที่จะถูกใช้เป็น features (ลักษณะสำคัญต่างๆของข้อมูล ที่จะนำมาใช้ในการทำนาย) ในโมเดล NLP

Word embeddings นั้นก็คือการแปลงคำให้อยู่ในรูปแบบของเวกเตอร์ โดยคำที่มีความหมายใกล้เคียงกัน ก็จะมีค่าของเวกเตอร์ใกล้เคียงกันด้วย

 

How BERT works

BERT จะใช้ประโยชน์จาก Transformer ซึ่งเป็นวิธีการที่เรียนรู้ความสัมพันธ์เชิงบริบทระหว่างคำ หรือคำย่อยในข้อความ โดย Transformer รูปแบบพื้นฐานจะประกอบไปด้วยกลไกสองส่วน คือ encoder ที่อ่าน input ข้อความ และ decoder ที่สร้างการทำนายสำหรับแต่ละงาน แต่จุดมุ่งหมายของ BERT คือ การสร้างโมเดลด้านภาษา ที่ใช้เพียง encoder เพียงอย่างเดียว รายละเอียดการทำงานของ Transformer ถูกอธิบายเอาไว้ในงานวิจัยโดย Google

Transformer encoder จะอ่านทั้งลำดับของข้อความเพียงครั้งเดียว หรือก็คือใช้ทั้งข้อความเป็น input ครั้งเดียว ไม่ได้อ่านข้อความทีละคำจากซ้ายไปขวาตามแบบทั่วๆไป จึงถูกตีความได้ว่าเป็นแบบสองทิศทาง หรือจะเรียกให้ถูกก็คือไม่ใช่แบบทิศทางเดียว ซึ่งต่างจากโมเดลแบบทิศทางเดียวที่อ่าน input ข้อความตามลำดับ จากซ้ายไปขวาหรือขวาไปซ้าย คุณสมบัตินี้ทำให้โมเดลสามารถเรียนรู้บริบทของคำจากคำทั้งหมดรอบๆ ทั้งด้านซ้ายและด้านขวา

READ  Demand Forecasting การคาดการณ์ความต้องการของลูกค้า

ด้านล่างเป็นคำอธิบายโดยรวมของ Transformer encoder โดย input คือ ลำดับของ tokens ที่ถูกฝังเข้ากับเวกเตอร์ในตอนต้นแล้วนำไปประมวลผลใน neural network ส่วน output คือ ลำดับของ เวกเตอร์ที่มีขนาด H ซึ่งแต่ละเวกเตอร์จะสอดคล้องกับ input token ด้วย index เดียวกัน

สำหรับการเรียนรู้โมเดลด้านภาษา จะมีความท้าทายในการระบุผลลัพธ์ของการทำนาย โดยหลายโมเดลจะทำนายคำถัดไปเป็นลำดับ เช่น “เด็กกลับบ้านจาก…” ซึ่งวิธีการแบบทิศทางเดียวมีข้อจำกัดในการเรียนรู้บริบทของคำรอบๆ เพื่อที่จะจัดการกับปัญหานี้ BERT ใช้สองวิธีการเรียนรู้ ดังนี้

 

1. Masked LM (MLM)

ก่อนจะป้อนลำดับคำไปยัง BERT คำจำนวน 15% ของแต่ละลำดับจะถูกแทนที่ด้วย [MASK] token ทำให้โมเดลพยายามที่จะทำนายค่าเดิมของคำที่ถูกแทนที่ โดยขึ้นอยู่กับบริบทที่ได้จากคำอื่นในลำดับที่ไม่โดนแทนที่ ในทางเทคนิค prediction ของ output ที่เป็นคำ ต้องประกอบด้วย

1. เพิ่ม classification layer (ชั้นที่ใช้ในการจำแนกประเภทใน neural network) บนสุดของ encoder output

2. คูณ output vectors ด้วย embedding matrix แล้วแปลงพวกมันอยู่ในลักษณะเป็น vocabulary

3. คำนวณค่าความน่าจะเป็นของแต่ละคำใน vocabulary ด้วย softmax (ฟังก์ชันทางคณิตศาสตร์)

 

 

BERT loss function สนใจเพียงแค่ prediction ของ masked values หรือคำที่ถูกแทนที่ แต่จะไม่สนใจการทำนาย ของ non-masked words หรือคำที่ไม่ได้ถูกแทนที่ ทำให้กราฟการเรียนรู้ของโมเดลลู่เข้าช้ากว่าโมเดลแบบทิศทางเดียว คุณสมบัตินี้ชดเชยด้วยการรับรู้บริบทที่เพิ่มขึ้น (see Takeaways #3) โดย loss function นั้นก็คือ function ที่แสดง loss หรือ error ของผลจากการ train โมเดล หรือก็คือโมเดลทายผิดไปเท่าไหร่ในการ train แต่ละครั้ง ซึ่ง loss function นั้น ควรจะต้องลดลงทุกครั้งที่เราทำการ train เพราะว่าเราต้องการให้โมเดลทายผิดน้อยลงนั่นเอง

หมายเหตุ: ในทางปฏิบัติ การใช้ BERT นั้นซับซ้อนกว่าเล็กน้อย และจะไม่แทนที่ masked words ทั้ง 15% ดู Appendix A สำหรับข้อมูลเพิ่มเติม

 

2. Next Sentence Prediction (NSP)

ในขั้นตอนการเรียนรู้ของ BERT โมเดลจะรับคู่ของประโยค หรือก็คือประโยคสองประโยคเป็น input และเรียนรู้เพื่อทำนายว่าประโยคที่สองจะเป็นประโยคถัดไปของประโยคแรกหรือไม่ โดยระหว่างการเรียนรู้นั้น 50% ของ inputs คือคู่ประโยคที่ลำดับหนึ่งและสองต่อเนื่องกัน ขณะที่ 50% ที่เหลือคือเป็นคู่ประโยคเช่นกันแต่ประโยคที่สองเป็นประโยคแบบสุ่มจากคลังข้อมูล สมมติฐานคือประโยคแบบสุ่มจะถูกตัดขาดจากประโยคแรก

เพื่อช่วยให้โมเดลแยกแยะความแตกต่างระหว่างสองประโยคได้ ซึ่งก่อนที่จะเข้าโมเดล input ถูกประมวลผลดังนี้

1. [CLS] token ถูกใส่ที่จุดเริ่มต้นของประโยคแรก และ [SEP] token ถูกใส่ที่จุดสุดท้ายของแต่ละประโยค และ token embedding ก็จะทำกับแต่ละคำไปจนครบ

2. Sentence embedding บ่งบอกว่าประโยค A หรือประโยค B ถูกใส่กับแต่ละ token โดย sentence embedding จะมีแนวคิดคล้ายกับ token embedding แต่มีเพียงสองตัว คือ A และ B

3. Positional embedding ถูกใส่ในแต่ละ token เพื่อบ่งบอกตำแหน่งในลำดับ เช่น 1 ถึง 10 เป็นต้น แนวคิดและการดำเนินการของ positional embedding ถูกแสดงเอาไว้ในงานวิจัย Transformer

 

Source: BERT [Devlin et al., 2018], with modifications

เพื่อทำนายว่าประโยคที่สองเชื่อมต่อกับประโยคที่หนึ่งจริง มีขั้นตอนในการดำเนินการดังนี้

1. นำลำดับ input ทั้งหมดผ่านโมเดล Transformer

2. Output ของ [CLS] token ถูกแปลงเป็น vector ขนาด 2×1 โดยใช้ classification layer (learned matrices ของ weights และ biases)

3. คำนวณค่าความน่าจะเป็นของ IsNextSequence ด้วย softmax

ขณะที่โมเดล BERT เรียนรู้นั้น Masked LM และ Next Sentence Prediction จะเรียนรู้ไปด้วยกัน โดยมีจุดมุ่งหมายในการลดค่า combined loss function ของสองกลวิธีนี้ให้น้อยที่สุด

 

How to use BERT (Fine-tuning)

BERT สามารถถูกนำมาใช้สำหรับงานด้านภาษาได้อย่างกว้างขวาง เพียงแค่เพิ่ม layer เล็กๆ ไปยังโมเดลหลักเท่านั้น

READ  มาทำความรู้จัก ระบบแนะนำ (Recommendation system) ว่าคืออะไรกัน

1. งานด้าน Classification เช่น sentiment analysis ถูกทำคล้ายกับ Next Sentence Classification ด้วยการเพิ่ม classification layer บนสุดของ Transformer output สำหรับ [CLS] token

2. งานด้าน Question Answering เช่น SQuAD v1.1 ส่วนของ software จะรับคำถามที่เกี่ยวกับลำดับข้อความ และต้องทำเครื่องหมายที่คำตอบของลำดับ หากใช้ BERT โมเดล Q&A สามารถเรียนรู้ด้วยสองเวกเตอร์พิเศษที่ทำเครื่องหมายที่จุดเริ่มต้นและจุดสุดท้ายของคำตอบ

3. สำหรับ Named Entity Recognition (NER) ส่วนของ software จะรับลำดับข้อความ และต้องทำเครื่องหมายเอกลักษณ์ต่างๆ เช่น บุคคล องค์กร และวันที่ ซึ่งมีอยู่ในข้อความ หากใช้ BERT โมเดล NER สามารถเรียนรู้โดยป้อน output vector ของแต่ละ token ลงใน classification layer ที่ทำนาย NER label

สำหรับ fine-tuning training นั้น hyper-parameters (parameters หรือตัวแปรในโมเดลที่ผู้สร้างโมเดลต้องกำหนดเอง) เกือบทั้งหมด เป็นเหมือนเดิมเช่นเดียวกับ BERT training และงานวิจัยได้ให้คำแนะนำเฉพาะสำหรับ hyper-parameters ที่ต้องทำ tuning (Section 3.5) ทีม BERT ได้ใช้เทคนิคนี้เพื่อให้ได้ผลลัพธ์ที่เป็น state-of-the-art ที่มีความท้าทายที่หลากหลาย ในงานด้านภาษา รายละเอียดอยู่ใน Section 4 ของงานวิจัย

 

Takeaways

1. ในเรื่องของขนาดของโมเดล แม้กับงานขนาดใหญ่ BERT_large มี parameter 345 ล้านตัว เป็นโมเดลที่ใหญ่ที่สุดในกลุ่มของมัน มันมีความเหนือชั้นกว่างานขนาดเล็ก BERT_base ซึ่งมีสถาปัตยกรรมเดียวกันอย่างชัดเจน แต่มี parameter เพียง 110 ล้านตัว

2. หากมี training data เพียงพอ จำนวน training steps ยิ่งมาก ก็จะเท่ากับความแม่นยำที่มากยิ่งขึ้น ตัวอย่างเช่น งาน MNLI เมื่อ train หนึ่งล้าน steps (128,000 words batch size) เปรียบเทียบกับ ห้าแสน steps ด้วย batch size (ขนาดของ dataset ที่นำมา train ในแต่ละครั้ง) เดียวกัน ความแม่นยำของ BERT_base เพิ่มขึ้น 1.0%

3. วิธีการแบบสองทิศทางของ BERT  (MLM) ลู่เข้าช้ากว่าวิธีแบบซ้ายไปขวา (เพราะมีคำเพียง 15% ที่ถูกทำนายในแต่ละ batch) แต่ training แบบสองทิศทาง ยังมีประสิทธิภาพที่เหนือกว่า training แบบซ้ายไปขวา หลังจาก pre-training steps ไม่กี่ครั้ง

 

 

Source: BERT [Devlin et al., 2018]

Conclusion

BERT คือความก้าวหน้าของ Machine Learning ในด้าน Natural Language Processing อย่างไม่ต้องสงสัย ความจริงที่มันเป็นสิ่งที่เข้าถึงได้ และสามารถทำ fine-tuning ได้อย่างรวดเร็ว จะทำให้สามารถเอาไปใช้จริงได้อย่างกว้างขวางในอนาคต ในส่วนของข้อสรุปนั้น เราพยายามที่จะอธิบายแนวคิดหลักของงานวิจัยโดยที่ไม่ลงรายละเอียดในส่วนของเทคนิคมากเกินไป สำหรับผู้ที่ต้องการรายละเอียดเชิงลึก เราแนะนำให้อ่านบทความตัวเต็มและบทความเสริมที่กล่าวถึงด้านใน แหล่งข้อมูลที่มีประโยชน์อีกแหล่งคือ BERT source code และโมเดลที่ครอบคลุมกว่า 103 ภาษา และถูกปล่อยเป็น open source โดยทีมผู้วิจัย

 

Appendix A — Word Masking

Training โมเดลด้านภาษาใน BERT ถูกทำด้วยการทำนาย 15% ของ tokens ใน input ซึ่งถูกสุ่มขึ้นมา tokens เหล่านี้ถูกทำ pre-processed โดยที่ 80% ถูกแทนที่ด้วย “[MASK]” token ในขณะที่ 10% เป็นคำสุ่มๆ และ 10% เป็นคำเดิม เหตุผลที่ทำให้ผู้เขียนบทความเลือกแบบนี้เพราะเหตุผลดังนี้ (ขอบคุณ Jacob Devlin จาก Google for the insight)

  • หากเราใช้ [MASK] 100% โมเดลจะไม่จำเป็นที่จะสร้าง token representations ที่ดีสำหรับ non-masked words ซึ่ง non-masked words ก็จะยังคงถูกใช้สำหรับบริบท แต่โมเดลถูกทำให้ทำนาย masked words เท่านั้น
  • หากเราใช้ [MASK] 90% และใช้คำสุ่ม 10% จะทำให้โมเดลเรียนรู้ว่าคำที่เพ่งเล็งนั้นไม่เคยถูกต้อง
  • หากเราใช้ [MASK] 90% และใช้คำเดิม 10% โมเดลจะคัดลอก non-contextual embedding ได้เพียงเล็กน้อย
READ  Big Data ฮีโร่ผู้อยู่เบื้องหลังในจักรวาล Marvel

ไม่ได้มีการทดลองเชิงลึกกับอัตราส่วนของวิธีการนี้ อาจมีอัตราส่วนที่เหมาะสมยิ่งกว่านี้ นอกจากนี้ประสิทธิภาพของโมเดลไม่ได้ถูกทดสอบด้วย masking 100% ทั่วๆไปของ tokens ที่ถูกเลือก

สำหรับสรุปความอื่นๆของงานวิจัย Machine Learning เมื่อไม่นานมานี้ สามารถติดตามได้ที่ Lyrn.AI

 

Reference

(Medium) BERT Explained: State of the art language model for NLP


ลงทะเบียนรับข่าวสาร

ไม่พลาดทุกการอัพเดทจาก Big Data Experience Center

Big Data Experience Center (BX)

ชั้น 14 อาคาร Knowledge Exchange Center (KX)
110/1 ถนนกรุงธนบุรี, แขวงบางลำภูล่าง เขตคลองสาน กรุงเทพฯ 10600
อีเมล์: [email protected]

ABOUT

SERVICES