งานวิจัย · arXiv 1810.04805
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
สรุปสามบรรทัด
- 🎯 การพรีเทรนโมเดลภาษาแบบมาตรฐานถูกจำกัดด้วยบริบททิศทางเดียว (ซ้ายไปขวา) ซึ่งไม่เหมาะสมที่สุดสำหรับงานระดับประโยค และส่งผลเสียต่องานระดับโทเคน เช่น การตอบคำถาม
- 🔧 นำเสนอ BERT ซึ่งพรีเทรน Transformer encoder แบบสองทิศทางหลายชั้น โดยใช้วัตถุประสงค์ Masked Language Model (Cloze) และ Next Sentence Prediction
- 📈 บรรลุผลลัพธ์ state-of-the-art ใน 11 งาน NLP รวมถึงคะแนน GLUE 80.5 (+7.7 จุด absolute) และความแม่นยำ 86.7% บน MultiNLI (+4.6% absolute)
บทคัดย่อ
เราขอแนะนำโมเดลตัวแทนภาษาแบบใหม่ชื่อ BERT ซึ่งย่อมาจาก Bidirectional Encoder Representations from Transformers ต่างจากโมเดลตัวแทนภาษาก่อนหน้านี้ BERT ได้รับการออกแบบมาเพื่อพรีเทรนตัวแทนแบบสองทิศทางเชิงลึกจากข้อความที่ไม่มีป้ายกำกับ โดยพิจารณาบริบททั้งซ้ายและขวาพร้อมกันในทุกชั้น ผลลัพธ์คือ โมเดล BERT ที่พรีเทรนแล้วสามารถนำมาไฟน์จูนด้วยเอาต์พุตเลเยอร์เพิ่มเพียงชั้นเดียวเพื่อสร้างโมเดลระดับ state-of-the-art สำหรับงานที่หลากหลาย เช่น การตอบคำถามและการอนุมานทางภาษา โดยไม่ต้องปรับเปลี่ยนสถาปัตยกรรมเฉพาะงานอย่างมีนัยสำคัญ BERT มีแนวคิดที่เรียบง่ายแต่ทรงพลังในเชิงประจักษ์ โมเดลนี้สร้างสถิติ state-of-the-art ใหม่ในงานประมวลผลภาษาธรรมชาติถึง 11 งาน รวมถึงการเพิ่มคะแนน GLUE เป็น 80.5% (ดีขึ้น 7.7% absolute), ความแม่นยำของ MultiNLI เป็น 86.7% (ดีขึ้น 4.6% absolute), Test F1 ของการตอบคำถามบน SQuAD v1.1 เป็น 93.2 (ดีขึ้น 1.5 จุด absolute) และ Test F1 ของ SQuAD v2.0 เป็น 83.1 (ดีขึ้น 5.1 จุด absolute)
บทคัดย่อต้นฉบับ (ภาษาอังกฤษ)
We introduce a new language representation model called BERT, which stands for Bidirectional Encoder Representations from Transformers. Unlike recent language representation models, BERT is designed to pre-train deep bidirectional representations from unlabeled text by jointly conditioning on both left and right context in all layers. As a result, the pre-trained BERT model can be fine-tuned with just one additional output layer to create state-of-the-art models for a wide range of tasks, such as question answering and language inference, without substantial task-specific architecture modifications. BERT is conceptually simple and empirically powerful. It obtains new state-of-the-art results on eleven natural language processing tasks, including pushing the GLUE score to 80.5% (7.7% point absolute improvement), MultiNLI accuracy to 86.7% (4.6% absolute improvement), SQuAD v1.1 question answering Test F1 to 93.2 (1.5 point absolute improvement) and SQuAD v2.0 Test F1 to 83.1 (5.1 point absolute improvement).
คู่มือการอ่าน
ปัญหาและแรงจูงใจ
โมเดลตัวแทนภาษาก่อนหน้านี้พึ่งพาแนวทางแบบ feature-based (เช่น ELMo) หรือแนวทางแบบ fine-tuning (เช่น OpenAI GPT) แม้จะมีประสิทธิภาพ แต่วิธีทั้งสองกลับถูกจำกัดด้วยวัตถุประสงค์ของโมเดลภาษาแบบทิศทางเดียว โดยโมเดลแบบ auto-regressive มาตรฐานจะประมวลผลข้อความจากซ้ายไปขวา (หรือขวาไปซ้าย) อย่างเคร่งครัด ในโมเดลทิศทางเดียว โทเคนสามารถสนใจ (attend) ได้เฉพาะโทเคนก่อนหน้าในชั้น self-attention เพื่อป้องกันไม่ให้คำ "เห็นตัวเอง" ข้ามบริบทหลายชั้น ELMo พยายามสร้างความเป็นสองทิศทางโดยการนำ LSTMs ซ้ายไปขวาและขวาไปซ้ายที่เทรนแยกกันมาต่อกันแบบผิวเผิน แต่วิธีนี้ล้มเหลวในการจับเงื่อนไขร่วมเชิงลึกบนบริบทสองทิศทางในทุกชั้น ความเป็นทิศทางเดียวนี้จำกัดการแทนความหมายระดับประโยค และส่งผลเสียอย่างยิ่งต่องาน downstream ระดับโทเคน เช่น การตอบคำถาม ซึ่งการทำความเข้าใจบริบททั้งซ้ายและขวาพร้อมกันมีความสำคัญยิ่ง
แนวคิดหลัก
- สถาปัตยกรรม Deep Bidirectional Transformer: BERT ใช้ Transformer encoder แบบสองทิศทางหลายชั้น ทำให้ชั้น self-attention สามารถเรียนรู้เงื่อนไขร่วมกันทั้งจากบริบทซ้ายและขวาในทุกชั้น
- Masked Language Model (MLM): ได้รับแรงบันดาลใจจากงาน Cloze โดย BERT จะสุ่มมาสก์โทเคนนำเข้า 15% และเทรนโมเดลให้ทำนายโทเคนที่ถูกมาสก์โดยใช้บริบทของพวกมัน ซึ่งช่วยแก้ปัญหาที่โทเคนจะ "เห็นตัวเอง"
- การลดความไม่สอดคล้องระหว่างการพรีเทรนและการไฟน์จูน: เนื่องจากโทเคน
[MASK]จะไม่ปรากฏในระหว่างการไฟน์จูน โทเคน 15% ที่ถูกเลือกจึงถูกแทนที่ด้วย[MASK]80% ของเวลาทั้งหมด แทนที่ด้วยโทเคนสุ่ม 10% และคงเดิมไว้ไม่เปลี่ยนแปลง 10% - Next Sentence Prediction (NSP): เพื่อจับความสัมพันธ์ของคู่ประโยคซึ่งสำคัญสำหรับ Natural Language Inference (NLI) และการตอบคำถาม (QA) โมเดล BERT จึงพรีเทรนบนงานแบบสองกลุ่ม (binarized task) เพื่อทำนายว่าประโยค ตามหลังประโยค อย่างเป็นธรรมชาติหรือไม่ () หรือเป็นประโยคที่สุ่มมาจากคลังข้อความ ()
- สถาปัตยกรรมแบบรวมศูนย์สำหรับงาน Downstream: สถาปัตยกรรมเดียวกันกับที่พรีเทรนไว้นี้จะถูกนำมาใช้ซ้ำสำหรับงาน downstream โดยเพิ่มพารามิเตอร์เพียงเล็กน้อยเท่านั้น (เช่น เพิ่ม Linear classification head แบบง่าย หรือตัวชี้ช่วงเริ่มต้น/สิ้นสุด)
วิธีการ
โครงสร้างของโมเดล
BERT ได้รับการประเมินหลักๆ ใน 2 ขนาด:
- : เลเยอร์, ขนาด hidden, attention heads, พารามิเตอร์รวม =
- : เลเยอร์, ขนาด hidden, attention heads, พารามิเตอร์รวม = ขนาดฟิลเตอร์ของ Feed-forward คือ
ตัวแทนข้อมูลขาเข้าและขาออก
ข้อมูลนำเข้าสามารถแทนลำดับข้อความเดี่ยวหรือคู่ประโยคที่รวมเข้าด้วยกันได้ โดย embedding จะถูกสร้างขึ้นจากการบวกกันของ:
- WordPiece token embeddings (ขนาดคลังคำ 30,000 โทเคน)
- Segment embeddings (embedding ที่เรียนรู้เพื่อระบุว่าโทเคนมาจากประโยค หรือประโยค )
- Positional embeddings ที่เรียนรู้ขึ้น
ทุกลำดับจะขึ้นต้นด้วย [CLS] โดยเวกเตอร์ hidden สุดท้าย จะทำหน้าที่เป็นตัวแทนโดยรวมของลำดับ คู่ประโยคจะถูกคั่นด้วย [SEP] ส่วนการแทนเวกเตอร์ hidden สุดท้ายของโทเคนจะเขียนแทนด้วย
วัตถุประสงค์ในการพรีเทรน
- Masked LM: เมื่อกำหนดโทเคน ที่ถูกมาสก์ เวกเตอร์ จะถูกส่งเข้า softmax เหนือคลังคำทั้งหมดด้วย cross-entropy loss:
- Next Sentence Prediction: เวกเตอร์ผลรวม จะถูกส่งเข้าสู่ binary classification: loss โดยรวมของการพรีเทรนคือผลรวมของค่าเฉลี่ย likelihood ของ masked LM และค่าเฉลี่ย likelihood ของ next sentence prediction
การปรับใช้ในการไฟน์จูน
- การจำแนกประเภท (GLUE): เพิ่ม projection matrix และคำนวณ loss เป็น
- การดึงช่วงคำตอบ (SQuAD v1.1): เรียนรู้เวกเตอร์เริ่มต้น และเวกเตอร์สิ้นสุด ความน่าจะเป็นที่โทเคน จะเป็นจุดเริ่มต้นของช่วงคำตอบคือ: คะแนนสำหรับช่วงคำตอบ คือ โดยหาค่าสูงสุดเมื่อ
- คำถามที่ไม่มีคำตอบ (SQuAD v2.0): ขยายขีดความสามารถโดยอนุญาตให้โทเคน
[CLS]ทำหน้าที่เป็นช่วงคำตอบว่าง (null answer span) มีคะแนนเป็น และจะทำนายคำตอบที่ไม่ใช่ค่าว่างก็ต่อเมื่อ
ผลการทดลอง
BERT ได้รับการประเมินใน 11 งานของ NLP:
- ตารางคะแนน GLUE: ทำคะแนนเฉลี่ยบน GLUE ได้ 80.5% (ดีขึ้น 7.7% absolute เมื่อเทียบกับ state of the art เดิม) และมีความแม่นยำ 86.7% บน MNLI (เพิ่มขึ้น 4.6% absolute)
- SQuAD v1.1: ทำได้ 84.1 EM และ 90.9 F1 บนชุด Dev ในฐานะโมเดลเดี่ยว และโมเดลแบบ ensemble ที่พรีเทรนด้วย TriviaQA ทำได้ 87.4 EM และ 93.2 F1 บนชุด Test ซึ่งเหนือกว่าความสามารถของมนุษย์ (82.3 EM / 91.2 F1)
- SQuAD v2.0: ทำได้ 80.0 EM และ 83.1 F1 บนชุด Test เหนือกว่าระบบที่ดีที่สุดก่อนหน้านี้ +5.1 F1
- SWAG: ได้ความแม่นยำ 86.3% บนชุด Test ซึ่งเหนือกว่า OpenAI GPT (78.0%) และเกณฑ์มาตรฐานของผู้เชี่ยวชาญที่เป็นมนุษย์ (85.0%)
- ผลการศึกษาการตัดส่วนประกอบ (Ablation Findings): การตัด NSP ออกทำให้ประสิทธิภาพลดลงใน MNLI (-0.5%), QNLI (-3.5%) และ SQuAD F1 (-0.6%) การเปลี่ยน MLM เป็น Left-to-Right (LTR) LM แบบมาตรฐานทำให้คะแนนลดลงอย่างมากบน SQuAD (-10.7 F1) และ MRPC (ความแม่นยำลดลง -9.2%)
ข้อจำกัดและคำถามปลายเปิด
- ความไม่สอดคล้องระหว่างการพรีเทรนและการไฟน์จูน: โทเคนสมมติอย่าง
[MASK]ไม่เคยปรากฏในระหว่างการไฟน์จูน จึงต้องใช้กฎการแทนที่แบบฮิวริสติก (80/10/10) เพื่อลดความไม่เข้ากันนี้ - ประสิทธิภาพในการพรีเทรน: เนื่องจาก BERT ทำนายโทเคนเพียง 15% ต่อแบทช์ แทนที่จะเป็น 100% เหมือนในโมเดลแบบ autoregressive ทั่วไป จึงต้องใช้รอบการพรีเทรนที่มากกว่า (1,000,000 สเต็ป ด้วยขนาด 128,000 โทเคน/แบทช์) กว่าจะลู่เข้า
- คอขวดของ Quadratic Attention: กลไก attention ของ Transformer มาตรฐานมีสเกลการประมวลผลเป็น quadratic () ตามความยาวของลำดับ ทำให้ลำดับขนาดยาวมีค่าใช้จ่ายในการคำนวณสูง และต้องใช้กลยุทธ์การพรีเทรนแบบสองระยะ (90% ของสเต็ปใช้ความยาว 128 และอีก 10% ใช้ความยาว 512)
- ไม่สามารถใช้กับงาน Text Generation โดยตรง: เนื่องจากเป็น bidirectional encoder ทำให้ BERT มีโครงสร้างที่เหมาะสำหรับการแทนข้อมูลและงาน downstream เชิงจำแนก (discriminative tasks) โดยตรง จึงไม่สามารถสร้างข้อความแบบ autoregressive จากซ้ายไปขวาได้โดยไม่มีการปรับเปลี่ยนสถาปัตยกรรม
คำศัพท์สำคัญ
- Masked Language Model (MLM)
- วัตถุประสงค์ในการพรีเทรนที่ได้แรงบันดาลใจจากงาน Cloze ซึ่งโทเคนนำเข้าบางตัวจะถูกสุ่มแทนที่ด้วยหน้ากาก และโมเดลจะถูกเทรนให้สร้างโทเคนเดิมขึ้นมาใหม่จากบริบทสองทิศทางเชิงลึก
- Next Sentence Prediction (NSP)
- งานพรีเทรนแบบสองกลุ่มที่โมเดลต้องทำนายว่าส่วนของประโยคที่สองที่กำหนดให้นั้น เป็นประโยคที่ตามหลังประโยคแรกอย่างสมเหตุสมผล หรือเป็นประโยคที่สุ่มขึ้นมาจากคลังข้อความ
- [CLS]
- โทเคนพิเศษสำหรับการจำแนกประเภทที่วางไว้ที่จุดเริ่มต้นของทุกลำดับข้อความ โดย hidden state สุดท้ายของมันจะถูกใช้เป็นตัวแทนผลรวมของลำดับสำหรับงานจำแนกประเภท
- [SEP]
- โทเคนพิเศษที่ใช้ในการคั่นประโยคที่ไม่ต่อเนื่องกันหรือประโยคที่แตกต่างกันภายในลำดับอินพุตเดียวกันที่รวมไว้
- WordPiece
- อัลกอริทึมการตัดคำย่อย (subword tokenization) ที่ BERT ใช้โดยมีขนาดคลังคำ 30,000 โทเคน เพื่อจัดการกับคำที่อยู่นอกคลังคำและแบ่งคำออกเป็นหน่วยย่อย
- Segment Embeddings
- เวกเตอร์ฝัง (embedding) ที่เรียนรู้ขึ้นเพื่อบวกเข้ากับโทเคนอินพุต เพื่อแยกแยะว่าโทเคนนั้นอยู่ในช่วงของประโยค A หรือประโยค B ในกรณีของคู่อินพุต
- Fine-tuning
- กลยุทธ์การเทรนสำหรับงานปลายทาง (downstream) โดยพารามิเตอร์ที่พรีเทรนทั้งหมดของ BERT จะถูกอัปเดตแบบ end-to-end ร่วมกับเอาต์พุตเลเยอร์เฉพาะงานที่มีการเพิ่มเข้าไปเพียงเล็กน้อยโดยใช้ข้อมูลที่มีป้ายกำกับ
- Feature-based approach
- กลยุทธ์ทางเลือกที่มีการสกัดตัวแทนเชิงบริบทแบบคงที่จากชั้นต่างๆ ของ BERT โดยไม่มีการอัปเดตพารามิเตอร์ แล้วส่งต่อไปยังสถาปัตยกรรมเฉพาะของงานนั้นๆ
คำถามที่พบบ่อย
ทำไม BERT ถึงแทนที่โทเคนที่ถูกมาสก์ด้วยคำสุ่มหรือคงคำเดิมไว้ แทนที่จะใช้ [MASK] ทั้งหมด?
เนื่องจากโทเคน [MASK] จะไม่ปรากฏในระหว่างการไฟน์จูน การแทนที่โทเคนเป้าหมายทุกตัวด้วย [MASK] จึงทำให้เกิดความไม่สอดคล้องกันระหว่างการพรีเทรนและการไฟน์จูน BERT แก้ปัญหานี้โดยแทนที่โทเคนที่เลือกด้วย [MASK] 80% ของเวลาทั้งหมด, เป็นโทเคนสุ่ม 10% และคงโทเคนเดิมไว้ 10% ซึ่งบีบให้โมเดลต้องรักษาการแทนข้อมูลแบบกระจาย (distributed representation) ของทุกโทเคนไว้
ความแตกต่างระหว่าง BERT และ OpenAI GPT คืออะไร?
แม้ว่าทั้งสองโมเดลจะเป็นโมเดลแบบ fine-tuning ที่อิงสถาปัตยกรรม Transformer แต่ OpenAI GPT จะใช้ Transformer decoder แบบซ้ายไปขวาซึ่งกลไก attention ถูกจำกัดให้แต่ละโทเคนสามารถสนใจได้เฉพาะโทเคนก่อนหน้าเท่านั้น ในขณะที่ BERT ใช้ Transformer encoder แบบสองทิศทางซึ่ง attention สามารถพิจารณาทั้งบริบทซ้ายและขวาได้ในทุกชั้น ผ่านการพรีเทรนด้วยวัตถุประสงค์ masked language model
BERT สามารถใช้เป็น feature extractor แทนการนำมาไฟน์จูนแบบ end-to-end ได้หรือไม่?
ได้ ในงาน CoNLL-2003 Named Entity Recognition การดึงและนำค่า activation ของโทเคนจาก 4 hidden layers บนสุดของ BERT มาต่อกันแล้วส่งเข้า BiLSTM 2 ชั้น สามารถทำ Dev F1 ได้ 96.1 ซึ่งตามหลังการไฟน์จูนโมเดลทั้งระบบ (96.4 F1) เพียง 0.3 F1 เท่านั้น
ทำไม BERT จึงใช้ตารางความยาวลำดับ (sequence length) การพรีเทรนแบบสองระยะ?
ความซับซ้อนในการคำนวณของ self-attention จะเป็นกำลังสองตามความยาวลำดับ เพื่อลดเวลาในการคำนวณ BERT จึงพรีเทรนด้วยความยาวลำดับ 128 ในช่วง 900,000 สเต็ปแรก (คิดเป็น 90% ของการเทรน) แล้วจึงเทรนด้วยความยาวลำดับ 512 ใน 100,000 สเต็ปที่เหลือเพื่อให้โมเดลเรียนรู้ positional embeddings
คำอธิบายในหน้านี้เขียนโดย AI จากงานวิจัยและอาจมีข้อผิดพลาด โปรดอ่านต้นฉบับเพื่อดูรายละเอียด