BERT (แบบจำลองภาษา)
BERT ( Bidirectional Encoder Representations from Transformers ) เป็นโมเดลภาษา ที่นักวิจัยจาก Google เปิด ตัวในเดือนตุลาคม 2018 [ 2 ] [ 3 ]มันเรียนรู้ที่จะแสดงข้อความเป็นลำดับของเวกเตอร์โดยใช้การเรียนรู้แบบกำกับตนเองโดยใช้ สถาปัตยกรรม Transformer ที่มีเฉพาะตัวเข้ารหัส BERT ได้ปรับปรุงสถานะของโมเดลภาษาขนาดใหญ่ให้ ดีขึ้นอย่างมาก ณ ปี 2020BERT เป็นเกณฑ์มาตรฐานที่ใช้กันอย่างแพร่หลายใน การทดลอง การประมวลผลภาษาธรรมชาติ (NLP) [ 4 ]
BERT ได้รับการฝึกฝนโดยการทำนายโทเค็นแบบปิดบังและการทำนายประโยคถัดไป ด้วยการฝึกฝนนี้ BERT เรียนรู้การแสดงแทนแฝงตามบริบทของโทเค็นในบริบท คล้ายกับELMoและGPT-2 [ 5 ] พบการประยุกต์ใช้ในงานประมวลผลภาษาธรรมชาติหลายอย่าง เช่นการแก้ปัญหาการอ้างอิงร่วมและการแก้ปัญหาความหมายหลายนัย[ 6 ]มันได้ปรับปรุงELMoและก่อให้เกิดการศึกษา "BERTology" ซึ่งพยายามตีความสิ่งที่ BERT เรียนรู้[ 4 ]
BERT เดิมทีถูกนำไปใช้ในภาษาอังกฤษโดยมีขนาดโมเดลสองขนาด คือ BERT (110 ล้านพารามิเตอร์) และ BERT (340 ล้านพารามิเตอร์) ทั้งสองแบบได้รับการฝึกฝนบน Toronto BookCorpus [ 7 ] (800 ล้านคำ) และEnglish Wikipedia (2,500 ล้านคำ) [ 2 ] : 5น้ำหนักถูกเผยแพร่บนGitHub [ 8 ] เมื่อวันที่ 11 มีนาคม 2020 มีการเผยแพร่โมเดลขนาดเล็กกว่า 24 รุ่น โดยรุ่นที่เล็กที่สุดคือ BERT ซึ่งมีพารามิเตอร์เพียง 4 ล้านตัว[ 8 ]
สถาปัตยกรรม

BERT เป็น สถาปัตยกรรม ทรานส์ฟอร์เมอร์ แบบ "เข้ารหัสอย่างเดียว" โดยพื้นฐานแล้ว BERT ประกอบด้วย 4 โมดูล:
- ตัวแยกคำ: โมดูลนี้จะแปลงข้อความภาษาอังกฤษให้เป็นลำดับของจำนวนเต็ม ("โทเค็น")
- การฝังข้อมูล : โมดูลนี้แปลงลำดับของโทเค็นให้เป็นอาร์เรย์ของเวกเตอร์ค่าจริงที่แทนโทเค็นเหล่านั้น ซึ่งแสดงถึงการแปลงประเภทโทเค็นแบบไม่ต่อเนื่องไปสู่ปริภูมิยูคลิดที่มี มิติต่ำกว่า
- ตัวเข้ารหัส: บล็อก Transformer ที่เรียงซ้อนกันพร้อมกลไก self-attentionแต่ไม่มีการซ่อนความหมายเชิงสาเหตุ (causal masking)
- หัวข้อหลัก: โมดูลนี้แปลงเวกเตอร์การแสดงผลขั้นสุดท้ายให้กลับไปเป็นโทเค็นที่เข้ารหัสแบบครั้งเดียวอีกครั้ง โดยสร้างการกระจายความน่าจะเป็นที่คาดการณ์ไว้เหนือประเภทโทเค็น สามารถมองได้ว่าเป็นตัวถอดรหัสอย่างง่ายที่ถอดรหัสการแสดงผลแฝงไปเป็นประเภทโทเค็น หรือเป็น "เลเยอร์การถอดการฝัง"
ส่วนหัวของงานมีความจำเป็นสำหรับการฝึกอบรมล่วงหน้า แต่โดยทั่วไปแล้วไม่จำเป็นสำหรับสิ่งที่เรียกว่า "งานปลายทาง" เช่นการตอบคำถามหรือการจำแนกความรู้สึกแทนที่จะใช้ส่วนหัวของงาน เราจะลบส่วนหัวของงานออกและแทนที่ด้วยโมดูลที่เริ่มต้นใหม่ซึ่งเหมาะสมกับงานนั้น และปรับแต่งโมดูลใหม่ เวกเตอร์แฝงของแบบจำลองจะถูกป้อนเข้าไปในโมดูลใหม่นี้โดยตรง ทำให้สามารถถ่ายโอนการเรียนรู้ได้อย่าง มีประสิทธิภาพ [ 2 ] [ 9 ]

การฝัง
ส่วนนี้อธิบายถึงการฝังข้อมูลที่ใช้โดย BERT ส่วน BERT นั้นคล้ายกัน เพียงแต่มีขนาดใหญ่กว่า
ตัวแยกคำของ BERT คือ WordPiece ซึ่งเป็นกลยุทธ์แบบย่อยคำคล้ายกับการเข้ารหัสแบบไบต์แพร์มีขนาดคำศัพท์ 30,000 คำ และโทเค็นใด ๆ ที่ไม่ปรากฏในคำศัพท์จะถูกแทนที่ด้วย[UNK]("unknown")

ชั้นแรกคือชั้นฝังข้อมูล ซึ่งประกอบด้วยสามส่วน ได้แก่ การฝังข้อมูลประเภทโทเค็น การฝังข้อมูลตำแหน่ง และการฝังข้อมูลประเภทเซกเมนต์
- ประเภทโทเค็น: ประเภทโทเค็นเป็นเลเยอร์การฝังข้อมูลมาตรฐาน ซึ่งแปลงเวกเตอร์แบบวันฮอต (one-hot vector) ให้เป็นเวกเตอร์แบบหนาแน่น (dense vector) โดยอิงตามประเภทโทเค็น
- ตำแหน่ง: การฝังตำแหน่งนั้นอิงตามตำแหน่งของโทเค็นในลำดับ BERT ใช้การฝังตำแหน่งแบบสัมบูรณ์ โดยแต่ละตำแหน่งในลำดับจะถูกแมปไปยังเวกเตอร์ค่าจริง แต่ละมิติของเวกเตอร์ประกอบด้วยฟังก์ชันไซน์ที่รับตำแหน่งในลำดับเป็นอินพุต
- ประเภทของเซ็กเมนต์: เลเยอร์การฝังข้อมูลนี้ใช้คำศัพท์เพียง 0 หรือ 1 เพื่อสร้างเวกเตอร์หนาแน่นโดยพิจารณาจากว่าโทเค็นนั้นอยู่ในเซ็กเมนต์ข้อความแรกหรือเซ็กเมนต์ที่สองในข้อมูลป้อนเข้า กล่าวคือ โทเค็นประเภท 1 คือโทเค็นทั้งหมดที่ปรากฏหลัง
[SEP]โทเค็นพิเศษ ส่วนโทเค็นก่อนหน้านั้นจะเป็นประเภท 0
เวกเตอร์ฝังตัวทั้งสามจะถูกบวกเข้าด้วยกันเพื่อแสดงแทนโทเค็นเริ่มต้นโดยเป็นฟังก์ชันของข้อมูลทั้งสามส่วนนี้ หลังจากฝังตัวแล้ว เวกเตอร์แสดงแทนจะถูกทำให้เป็นมาตรฐานโดยใช้ การดำเนินการ LayerNormซึ่งจะส่งออกเวกเตอร์ 768 มิติสำหรับแต่ละโทเค็นอินพุต หลังจากนั้น เวกเตอร์แสดงแทนจะถูกส่งผ่านบล็อกตัวเข้ารหัส Transformer 12 บล็อก และถอดรหัสกลับไปยังพื้นที่คำศัพท์ 30,000 มิติโดยใช้เลเยอร์การแปลงเชิงเส้นพื้นฐาน
กลุ่มสถาปัตยกรรม
ส่วนประกอบเข้ารหัสของ BERT มีพารามิเตอร์อิสระ 2 ตัว:จำนวนชั้น และขนาดที่ซ่อนอยู่มีอยู่เสมอหัวประมวลผลแบบ self-attention และขนาดของ feed-forward/filter จะคงที่เสมอโดยการเปลี่ยนแปลงตัวเลขทั้งสองนี้ จะได้โมเดล BERT ทั้งตระกูล[ 10 ]
สำหรับ BERT:
- ขนาดของ ฟีดฟอร์เวิร์ดและขนาดของฟิลเตอร์มีความหมายเหมือนกัน ทั้งสองอย่างบ่งบอกถึงจำนวนมิติในชั้นกลางของเครือข่ายฟีดฟอร์เวิร์ด
- ขนาดที่ซ่อนอยู่และขนาดการฝังตัวมีความหมายเหมือนกัน ทั้งสองอย่างหมายถึงจำนวนจำนวนจริงที่ใช้ในการแทนโทเค็น
สัญลักษณ์ที่ใช้ระบุจำนวนสแต็กของตัวเข้ารหัสคือ L/H ตัวอย่างเช่น BERT เขียนเป็น 12L/768H, BERT เขียน เป็น 24L/1024H และ BERT เขียนเป็น 2L/128H
การฝึกอบรม
ก่อนการฝึกอบรม
BERT ได้รับการฝึกฝนล่วงหน้าพร้อมกันในสองงาน: [ 11 ]
- การสร้างแบบจำลองภาษาแบบปิดบัง (Masked Language Modeling : MLM): ในงานนี้ BERT จะรับลำดับของคำ โดยที่คำหนึ่งอาจถูกเปลี่ยนแปลงแบบสุ่ม ("ปิดบัง") และ BERT จะพยายามทำนายคำดั้งเดิมที่ถูกเปลี่ยนแปลงไป ตัวอย่างเช่น ในประโยค "The cat sat on the
[MASK]" BERT จะต้องทำนายคำว่า "mat" วิธีนี้ช่วยให้ BERT เรียนรู้บริบทแบบสองทิศทาง ซึ่งหมายความว่ามันเข้าใจความสัมพันธ์ระหว่างคำไม่เพียงแค่จากซ้ายไปขวาหรือขวาไปซ้าย แต่จากทั้งสองทิศทางพร้อมกัน
- การทำนายประโยคถัดไป (NSP): ในงานนี้ BERT จะได้รับการฝึกฝนให้ทำนายว่าประโยคหนึ่งจะตามหลังอีกประโยคหนึ่งอย่างมีเหตุผลหรือไม่ ตัวอย่างเช่น เมื่อกำหนดประโยคสองประโยคคือ "แมวนั่งบนพรม" และ "วันนั้นเป็นวันที่แดดจ้า" BERT จะต้องตัดสินใจว่าประโยคที่สองเป็นส่วนต่อเนื่องจากประโยคแรกหรือไม่ ซึ่งช่วยให้ BERT เข้าใจความสัมพันธ์ระหว่างประโยค ซึ่งมีความสำคัญสำหรับงานต่างๆ เช่น การตอบคำถามหรือการจำแนกประเภทเอกสาร
การสร้างแบบจำลองภาษาแบบปิดบัง

ในการสร้างแบบจำลองภาษาแบบปิดบัง (masked language modeling) โทเค็น 15% จะถูกสุ่มเลือกสำหรับงานทำนายแบบปิดบัง โดยมีเป้าหมายในการฝึกคือการทำนายโทเค็นที่ถูกปิดบังโดยพิจารณาจากบริบท โทเค็นที่ถูกเลือกโดยละเอียดคือ:
- ถูกแทนที่ด้วย
[MASK]โทเค็นด้วยความน่าจะเป็น 80% - แทนที่ด้วยโทเค็นคำแบบสุ่มด้วยความน่าจะเป็น 10%
- ไม่ถูกแทนที่ด้วยความน่าจะเป็น 10%
เหตุผลที่ไม่ได้ปิดบังโทเค็นที่เลือกทั้งหมดก็เพื่อหลีกเลี่ยงปัญหาการเปลี่ยนแปลงชุดข้อมูล ปัญหาการเปลี่ยนแปลงชุดข้อมูลเกิดขึ้นเมื่อการกระจายของอินพุตที่เห็นระหว่างการฝึกอบรมแตกต่างอย่างมีนัยสำคัญจากการกระจายที่พบระหว่างการอนุมาน โมเดล BERT ที่ได้รับการฝึกฝนอาจถูกนำไปใช้กับการแสดงคำ (เช่นWord2Vec ) ซึ่งจะทำงานกับประโยคที่ไม่มี[MASK]โทเค็นใด ๆ ต่อมาพบว่าวัตถุประสงค์การฝึกอบรมที่หลากหลายมากขึ้นโดยทั่วไปจะดีกว่า[ 12 ]
เพื่อเป็นตัวอย่าง ลองพิจารณาประโยค "my dog is cute" ก่อนอื่นจะต้องแบ่งประโยคนี้ออกเป็นส่วนย่อยๆ เช่น "my dog is cute " จากนั้นจะสุ่มเลือกส่วนย่อยหนึ่งส่วนจากประโยค สมมติว่าเป็นส่วนที่ 4 "cute " ต่อไปจะมีสามความเป็นไปได้:
- ด้วยความน่าจะเป็น 80% โทเค็นที่เลือกจะถูกปิดบัง ส่งผลให้ได้ข้อความว่า "my dog is
[MASK]" - ด้วยความน่าจะเป็น 10% โทเค็นที่เลือกจะถูกแทนที่ด้วยโทเค็นสุ่มที่สุ่มมาอย่างสม่ำเสมอ เช่น "happy" ส่งผลให้ได้ผลลัพธ์เป็น "my dog is happy "
- ด้วยความน่าจะเป็น 10% ที่จะไม่มีอะไรเกิดขึ้น ส่งผลให้ " สุนัข ของฉัน ตัวน่ารัก "
หลังจากประมวลผลข้อความอินพุตแล้ว เวกเตอร์เอาต์พุตที่ 4 ของโมเดลจะถูกส่งไปยังเลเยอร์ตัวถอดรหัส ซึ่งจะส่งออกการกระจายความน่าจะเป็นเหนือพื้นที่คำศัพท์ 30,000 มิติ
การคาดเดาประโยคถัดไป

เมื่อได้รับประโยคสองประโยค โมเดลจะทำนายว่าประโยคเหล่านั้นปรากฏต่อเนื่องกันในชุดข้อมูลฝึกฝนหรือไม่ โดยให้ผลลัพธ์เป็น[IsNext]หรือ[NotNext]ในระหว่างการฝึกฝน บางครั้งอัลกอริทึมจะสุ่มเลือกประโยคสองประโยคจากช่วงต่อเนื่องเดียวในชุดข้อมูลฝึกฝน ในขณะที่บางครั้งจะสุ่มเลือกประโยคสองประโยคจากช่วงที่ไม่ต่อเนื่องกันสองช่วง
ประโยคแรกเริ่มต้นด้วยโทเค็นพิเศษ[CLS](สำหรับ "จำแนก") ประโยคทั้งสองถูกคั่นด้วยโทเค็นพิเศษอีกตัว[SEP](สำหรับ "แยก") หลังจากประมวลผลประโยคทั้งสองแล้ว เวกเตอร์สุดท้ายสำหรับ[CLS]โทเค็นจะถูกส่งไปยังเลเยอร์เชิงเส้นสำหรับการจำแนกแบบไบนารีเป็น[IsNext]และ[NotNext]
ตัวอย่างเช่น:
- เมื่อกำหนด "
[CLS]สุนัขของฉันน่ารัก[SEP]มันชอบเล่น[SEP]" โมเดลควรทำนาย[IsNext]... - เมื่อกำหนด "
[CLS]สุนัขของฉันน่ารัก[SEP]แม่เหล็กทำงานอย่างไร[SEP]" โมเดลควรทำนาย[NotNext]...
การปรับแต่งอย่างละเอียด
- การจำแนกความรู้สึก
- การจำแนกประเภทประโยค
- การตอบคำถามแบบเลือกตอบ
BERT ถูกออกแบบมาให้เป็นโมเดลที่ได้รับการฝึกฝนล่วงหน้าทั่วไปสำหรับแอปพลิเคชันต่างๆ ในการประมวลผลภาษาธรรมชาติ กล่าวคือ หลังจากฝึกฝนล่วงหน้าแล้ว BERT สามารถปรับแต่งเพิ่มเติมได้โดยใช้ทรัพยากรน้อยลงบนชุดข้อมูลขนาดเล็กเพื่อเพิ่มประสิทธิภาพในการทำงานเฉพาะด้าน เช่นการอนุมานภาษาธรรมชาติและการจำแนกประเภทข้อความและงานสร้างภาษาตามลำดับ เช่นการตอบคำถามและการสร้างการตอบสนองแบบสนทนา[ 13 ]
เอกสาร BERT ฉบับดั้งเดิมเผยแพร่ผลลัพธ์ที่แสดงให้เห็นว่าการปรับแต่งเพียงเล็กน้อย (สำหรับ BERT ใช้เวลา 1 ชั่วโมงบน 1 Cloud TPU) ช่วยให้บรรลุ ประสิทธิภาพ ระดับแนวหน้า ในงาน ทำความเข้าใจภาษาธรรมชาติหลายงาน: [ 2 ]
- ชุดแบบทดสอบ GLUE ( General Language Understanding Evaluation ) (ประกอบด้วย 9 แบบทดสอบ);
- SQuAD (ชุดข้อมูลการตอบคำถามของ Stanford [ 14 ] ) v1.1 และ v2.0;
- SWAG (สถานการณ์ที่มีคนรุ่นต่อต้าน[ 15 ] )
ในเอกสารต้นฉบับ พารามิเตอร์ทั้งหมดของ BERT ได้รับการปรับแต่งอย่างละเอียด และแนะนำว่าสำหรับแอปพลิเคชันปลายทางที่เป็นการจำแนกประเภทข้อความ โทเค็นเอาต์พุตที่[CLS]โทเค็นอินพุตจะถูกป้อนเข้าสู่เลเยอร์ softmax เชิงเส้นเพื่อสร้างเอาต์พุตป้ายกำกับ[ 2 ]
รหัสฐานเดิมกำหนดเลเยอร์เชิงเส้นสุดท้ายเป็น "เลเยอร์พูลเลอร์" โดยเปรียบเทียบกับพูลลิ่งทั่วโลกในคอมพิวเตอร์วิชั่น แม้ว่าจะทิ้งโทเค็นเอาต์พุตทั้งหมด ยกเว้นโทเค็นที่สอดคล้องกับ [CLS]. [ 16 ]
ค่าใช้จ่าย
BERT ได้รับการฝึกฝนโดยใช้BookCorpus (800 ล้านคำ) และ Wikipedia ฉบับภาษาอังกฤษที่ผ่านการกรองแล้ว (2,500 ล้านคำ) โดยไม่มีรายการ ตาราง และส่วนหัว
การฝึก BERT บนTPU คลาวด์ 4 ตัว (ชิป TPU ทั้งหมด 16 ตัว) ใช้เวลา 4 วัน โดยมีค่าใช้จ่ายโดยประมาณ 500 ดอลลาร์สหรัฐ[ 8 ]การฝึก BERT บน TPU คลาวด์ 16 ตัว (ชิป TPU ทั้งหมด 64 ตัว) ใช้เวลา 4 วัน[ 2 ]
การตีความ
แบบจำลองภาษา เช่น ELMo, GPT-2 และ BERT ก่อให้เกิดการศึกษา "BERTology" ซึ่งพยายามตีความสิ่งที่แบบจำลองเหล่านี้เรียนรู้ ประสิทธิภาพของแบบจำลองเหล่านี้ใน งาน ทำความเข้าใจภาษาธรรมชาติยังไม่เป็นที่เข้าใจดีนัก[ 4 ] [ 17 ] [ 18 ]งานวิจัยหลายฉบับในปี 2018 และ 2019 มุ่งเน้นไปที่การตรวจสอบความสัมพันธ์เบื้องหลังผลลัพธ์ของ BERT อันเป็นผลมาจากลำดับอินพุตที่เลือกอย่างระมัดระวัง[ 19 ] [ 20 ] การวิเคราะห์ การแสดงเวกเตอร์ภายในผ่านตัวจำแนกประเภทแบบตรวจสอบ[ 21 ] [ 22 ]และความสัมพันธ์ที่แสดงโดยน้ำหนักความสนใจ[ 17 ] [ 18 ]
ประสิทธิภาพสูงของโมเดล BERT อาจเกิดจากข้อเท็จจริงที่ว่ามันได้รับการฝึกฝนแบบสองทิศทาง[ 23 ]ซึ่งหมายความว่า BERT ซึ่งใช้สถาปัตยกรรมโมเดล Transformer จะใช้กลไก self-attention เพื่อเรียนรู้ข้อมูลจากข้อความจากด้านซ้ายและด้านขวาในระหว่างการฝึกฝน และด้วยเหตุนี้จึงได้รับความเข้าใจบริบทอย่างลึกซึ้ง ตัวอย่างเช่น คำว่าfineสามารถมีความหมายที่แตกต่างกันสองแบบขึ้นอยู่กับบริบท ( ฉันรู้สึกดีวันนี้เธอมีผมสีบลอนด์สวย) BERT จะพิจารณาคำที่อยู่รอบคำเป้าหมายfineจากด้านซ้ายและด้านขวา
อย่างไรก็ตาม มันมีต้นทุน: เนื่องจาก สถาปัตยกรรม แบบเข้ารหัสอย่างเดียวที่ไม่มีตัวถอดรหัส BERT จึงไม่สามารถรับคำสั่งและไม่สามารถสร้างข้อความได้ ในขณะที่โมเดลแบบสองทิศทางโดยทั่วไปจะไม่ทำงานอย่างมีประสิทธิภาพหากไม่มีด้านขวา จึงทำให้ยากต่อการรับคำสั่ง ตัวอย่างเช่น หากต้องการใช้ BERT เพื่อต่อประโยคที่ขาดหายไป "วันนี้ฉันไปที่" ก็จะต้องปิดบังโทเค็นทั้งหมดเป็น "วันนี้ฉันไปที่ [MASK][MASK][MASK]... [MASK]" โดยที่จำนวนโทเค็น [MASK] คือความยาวของประโยคที่ต้องการต่อ อย่างไรก็ตาม นี่เป็นการเปลี่ยนแปลงชุดข้อมูล เนื่องจากในระหว่างการฝึกอบรม BERT ไม่เคยเห็นประโยคที่มีโทเค็นถูกปิดบังไว้มากขนาดนั้นมาก่อน ดังนั้นประสิทธิภาพจึงลดลง เทคนิคที่ซับซ้อนกว่านั้นช่วยให้สามารถสร้างข้อความได้ แต่มีต้นทุนการคำนวณสูง[ 24 ]
ประวัติศาสตร์
BERT ได้รับการเผยแพร่ครั้งแรกโดยนักวิจัยของ Google ได้แก่Jacob Devlin, Ming-Wei Chang, Kenton Lee และ Kristina Toutanova การออกแบบมีต้นกำเนิดมาจากการฝึกฝนการแสดงบริบทล่วงหน้า รวมถึงการเรียนรู้ลำดับแบบกึ่งกำกับดูแล[ 25 ]การฝึกฝนล่วงหน้าแบบสร้างELMo [ 26 ]และ ULMFit [ 27 ] แตกต่างจากโมเดลก่อนหน้า BERT เป็นการแสดงภาษา แบบสองทิศทางที่ลึกซึ้งและไม่มี การกำกับดูแล โดยฝึกฝนล่วงหน้าโดยใช้เพียงคลังข้อความ ธรรมดา โมเดลที่ไม่ขึ้นกับบริบท เช่นword2vecหรือGloVeสร้างการแสดงการฝังคำเดียวสำหรับแต่ละคำในคำศัพท์ ในขณะที่ BERT คำนึงถึงบริบทสำหรับการเกิดขึ้นแต่ละครั้งของคำที่กำหนด ตัวอย่างเช่น ในขณะที่เวกเตอร์สำหรับ "running" จะมีการแสดงเวกเตอร์ word2vec เดียวกันสำหรับการเกิดขึ้นทั้งสองครั้งในประโยค "He is running a company" และ "He is running a marathon" BERT จะให้การฝังตามบริบทซึ่งจะแตกต่างกันไปตามประโยค[ 5 ]
เมื่อวันที่ 25 ตุลาคม 2019 Googleประกาศว่าได้เริ่มนำโมเดล BERT มาใช้กับคำค้นหาภาษาอังกฤษ บน Google Searchในสหรัฐอเมริกา[ 28 ]เมื่อวันที่ 9 ธันวาคม 2019 มีรายงานว่า Google Search ได้นำ BERT มาใช้กับภาษาต่างๆ มากกว่า 70 ภาษา[ 29 ] [ 30 ]ในเดือนตุลาคม 2020 คำค้นหาภาษาอังกฤษเกือบทั้งหมดได้รับการประมวลผลโดยโมเดล BERT [ 31 ]
ตัวแปร
โมเดล BERT มีอิทธิพลและเป็นแรงบันดาลใจให้เกิดโมเดลอื่นๆ อีกมากมาย
RoBERTa (2019) [ 32 ]เป็นการปรับปรุงทางวิศวกรรม โดยยังคงรักษาสถาปัตยกรรมของ BERT ไว้ (ใหญ่ขึ้นเล็กน้อยที่ 355 ล้านพารามิเตอร์) แต่ปรับปรุงการฝึกอบรมโดยเปลี่ยนไฮเปอร์พารามิเตอร์หลัก ลบ งาน ทำนายประโยคถัดไปและใช้ขนาดมินิแบทช์ที่ ใหญ่ขึ้นมาก
XLM-RoBERTa (2019) [ 33 ]เป็นโมเดล RoBERTa หลายภาษา นับเป็นหนึ่งในงานแรกๆ เกี่ยวกับการสร้างแบบจำลองภาษาหลายภาษาในระดับใหญ่
DistilBERT (2019) กลั่นกรอง BERT ให้เป็นโมเดลที่มีพารามิเตอร์เพียง 60% (66 ล้าน) ในขณะที่ยังคงรักษาคะแนนมาตรฐานไว้ได้ 95% [ 34 ] [ 35 ]ในทำนองเดียวกันTinyBERT (2019) [ 36 ]เป็นโมเดลที่กลั่นกรองแล้วโดยมีพารามิเตอร์เพียง 28%
ALBERT (2019) [ 37 ]ใช้พารามิเตอร์ร่วมกันระหว่างเลเยอร์ และทดลองกับการเปลี่ยนแปลงขนาดที่ซ่อนอยู่และขนาดเอาต์พุตของเลเยอร์การฝังคำอย่างอิสระเป็นไฮเปอร์พารามิเตอร์สองตัว นอกจากนี้ พวกเขายังแทนที่งานทำนายประโยคถัดไป ด้วยงาน ทำนายลำดับประโยค (SOP) ซึ่งโมเดลต้องแยกแยะลำดับที่ถูกต้องของส่วนข้อความสองส่วนที่ต่อเนื่องกันจากลำดับที่กลับกัน
ELECTRA (2020) [ 38 ]ได้นำแนวคิดของเครือข่ายปฏิปักษ์เชิงสร้างสรรค์มาใช้กับงาน MLM แทนที่จะปิดบังโทเค็น โมเดลภาษาขนาดเล็กจะสร้างการแทนที่ที่เป็นไปได้แบบสุ่ม และเครือข่ายขนาดใหญ่จะระบุโทเค็นที่ถูกแทนที่เหล่านี้ โมเดลขนาดเล็กมีเป้าหมายที่จะหลอกโมเดลขนาดใหญ่
DeBERTa (2020) [ 39 ]เป็นรูปแบบสถาปัตยกรรมที่สำคัญ โดยมีการแยกแยะความสนใจแนวคิดหลักคือการจัดการการเข้ารหัสตำแหน่งและโทเค็นแยกกันตลอดกลไกความสนใจ แทนที่จะรวมการเข้ารหัสตำแหน่ง () และการเข้ารหัสโทเค็น () ลงในเวกเตอร์อินพุตเดียว (), DeBERTa แยกพวกมันไว้เป็นคู่ (tuple):จากนั้น ในแต่ละเลเยอร์ self-attention นั้น DeBERTa จะคำนวณเมทริกซ์ attention ที่แตกต่างกันสามเมทริกซ์ แทนที่จะเป็นเมทริกซ์ attention เดียวที่ใช้ใน BERT: [หมายเหตุ 1 ]
| ประเภทความสนใจ | ประเภทการสืบค้น | ประเภทกุญแจ | ตัวอย่าง |
|---|---|---|---|
| เนื้อหาต่อเนื้อหา | โทเค็น | โทเค็น | "ยุโรป"; "สหภาพ", "ทวีป" |
| เนื้อหาเพื่อจัดตำแหน่ง | โทเค็น | ตำแหน่ง | [คำคุณศัพท์]; +1, +2, +3 |
| ตำแหน่งต่อเนื้อหา | ตำแหน่ง | โทเค็น | −1; "ไม่", "มาก" |
เมทริกซ์ความสนใจทั้งสามจะถูกบวกเข้าด้วยกันแบบทีละองค์ประกอบ จากนั้นส่งผ่านไปยังเลเยอร์ softmax และคูณด้วยเมทริกซ์การฉายภาพ
การเข้ารหัสตำแหน่งสัมบูรณ์ถูกรวมอยู่ในเลเยอร์ self-attention สุดท้ายในฐานะอินพุตเพิ่มเติม
หมายเหตุ
- ↑ผู้เขียนได้ละเว้นประเภทข้อมูลแบบตำแหน่งต่อตำแหน่ง เนื่องจากไม่มีประโยชน์
อ่านเพิ่มเติม
- Rogers, Anna; Kovaleva, Olga; Rumshisky, Anna (2020). "บทนำเกี่ยวกับ BERTology: สิ่งที่เราทราบเกี่ยวกับวิธีการทำงานของ BERT". arXiv : 2002.12327 [ cs.CL ].
ลิงก์ภายนอก
- คลังเก็บข้อมูล GitHub อย่างเป็นทางการ