การใช้การทำนายประโยคถัดไป ไม่จำเป็นต้องปรับแต่งแบบละเอียด

ในโพสต์นี้ เราได้สร้างการวัดความคล้ายคลึงกันของหัวข้อในบทความข่าวที่รวบรวมจาก "ฟีด RSS ของ New York Times" วัตถุประสงค์หลักคือเพื่อทำความคุ้นเคยกับการใช้งาน BERT (PyTorch) และแบบจำลองที่ได้รับการฝึกล่วงหน้า

เบิร์ตคืออะไร?

BERT ย่อมาจาก Bในทิศทาง Encoder Rการนำเสนอจาก Transformers มาจากบทความที่ตีพิมพ์โดย Google AI Language ในปี 2018[1] มีพื้นฐานมาจากแนวคิดที่ว่าการปรับแต่งโมเดลภาษาที่ได้รับการฝึกล่วงหน้าอย่างละเอียดสามารถช่วยให้โมเดลบรรลุผลลัพธ์ที่ดีขึ้นในงานขั้นปลายน้ำ[2][3]

เราเคยเห็นหม้อแปลงไฟฟ้า[4] ที่ใช้ในการฝึกโมเดลภาษา (ทิศทางเดียว) ในเอกสาร OpenAI[3] BERT ใช้การออกแบบงานที่ชาญฉลาด (แบบจำลองภาษาที่ปกปิด) เพื่อเปิดใช้งานการฝึกอบรมแบบจำลองสองทิศทาง และยังเพิ่มงานการทำนายประโยคถัดไปเพื่อปรับปรุงความเข้าใจในระดับประโยค เป็นผลให้ BERT ได้รับผลลัพธ์ที่ล้ำสมัยในงานประมวลผลภาษาธรรมชาติสิบเอ็ดงาน

นี่คือซีรีส์ที่ยอดเยี่ยมเกี่ยวกับ BERT หากคุณคุ้นเคยกับโมเดลภาษาอยู่แล้ว คุณสามารถเริ่มต้นด้วยส่วนที่ 2 (ไม่เช่นนั้น คุณอาจต้องการดูส่วนที่ 1):



เราได้กล่าวถึง OpenAI ก่อนหน้านี้ในโพสต์นี้:



คำอธิบายปัญหา

"ฟีด RSS" ของ New York Times มอบรายการบทความข่าว รวมถึงชื่อเรื่อง คำอธิบาย วันที่เผยแพร่ ลิงก์ และหมวดหมู่ต่างๆ ให้กับเรา จากบทความหนึ่ง เราต้องการค้นหาบทความอื่นๆ ที่ครอบคลุมหัวข้อเดียวกันโดยอัตโนมัติ โดยไม่ต้องอาศัยข้อมูลหมวดหมู่ (เพื่อให้เราสามารถนำอัลกอริทึมไปใช้กับหลายแหล่งได้ในอนาคต)

ตัวอย่าง:

หัวข้อ:สิ่งที่ได้รับและไม่ได้รับผลกระทบจากการปิดตัวของรัฐบาล

คำอธิบาย:เจ้าหน้าที่รักษาความปลอดภัยด้านการขนส่งกำลังตรวจสอบผู้โดยสารที่สนามบินนานาชาติพิตส์เบิร์กเมื่อสัปดาห์ที่แล้ว พนักงานของหน่วยงานได้ออกมาประกาศลาป่วยในจำนวนที่เพิ่มขึ้นทั่วประเทศนับตั้งแต่การปิดระบบเริ่มขึ้น

การทำนายประโยคถัดไป

อันดับแรก เราต้องดูว่า BERT สร้างข้อมูลนำเข้าอย่างไร (ในขั้นตอนการฝึกอบรมล่วงหน้า) ลำดับอินพุตประกอบด้วย “ประโยค” สองประโยค (อธิบายไว้ด้านล่าง) แต่ละประโยคลงท้ายด้วยโทเค็น [SEP] และโทเค็น [CLS] จะถูกเพิ่มที่ส่วนหัว ซึ่งใช้สถานะที่ซ่อนอยู่ที่สอดคล้องกันในการคาดเดาประโยคถัดไป

ในการสร้างลำดับอินพุตการฝึกแต่ละลำดับ เราจะสุ่มตัวอย่าง ข้อความสองช่วงจากคลังข้อมูล ซึ่งเราเรียกว่า "ประโยค" แม้ว่าโดยทั่วไปแล้วจะยาวกว่าประโยคเดียวมาก (แต่อาจสั้นกว่าได้เช่นกัน) [1]

ตามรายงาน [1] โมเดล BERT ที่ได้รับการฝึกล่วงหน้าได้รับความแม่นยำ 97%~98% ในงานนี้ด้วยชุดข้อมูลที่สมดุล

โซลูชั่นที่นำเสนอ

เราเติมประโยคแรกด้วยชื่อบทความ และประโยคที่สองเติมคำอธิบาย ตามหลักการแล้ว คู่ชื่อเรื่อง-คำอธิบายที่มาจากบทความเดียวกันควรมีคะแนนประโยคถัดไปที่สูงจากแบบจำลองที่ได้รับการฝึกล่วงหน้า (นั่นคือ คำอธิบายถือว่ามีแนวโน้มสูงที่จะเป็นประโยคถัดไปของชื่อเรื่อง) หากไม่เป็นเช่นนั้น เราจะต้องปรับแต่งโมเดลที่ได้รับการฝึกล่วงหน้าอย่างละเอียด (ฝึกโมเดลเพิ่มเติมด้วยข้อมูลใหม่)

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

นี่คือลำดับอินพุตที่แปลงแล้วของตัวอย่างก่อนหน้านี้:

[CLS] what is and isn ’ t affected by the government shut ##down [SEP] transportation security administration officers checking passengers at pittsburgh international airport last week . the agency ’ s employees have called out sick in increased numbers across the country since the shut ##down began .[SEP]

และนี่คือลำดับอินพุตข้างต้น โดยแทนที่ประโยคที่สองด้วยคำอธิบายจากบทความอื่น:

[CLS] what is and isn ’ t affected by the government shut ##down [SEP] gr ##udge ##s can be good . they are one habit that humans have evolved to keep ourselves from the pain of breakup ##s and also from eating mo ##zza ##rella sticks for every meal . [SEP]

ผลลัพธ์

ขั้นแรกฉันลองใช้โมเดลที่ได้รับการฝึกอบรมมาโดยไม่มีการปรับแต่งใดๆ และมันก็ใช้งานได้ดีอยู่แล้ว ชุดข้อมูลประกอบด้วยบทความ 2,719 บทความจากฟีด RSS ของ New York Times โดยบทความที่ไม่มีคำอธิบายสั้นๆ หรือถูกลบออก

สำหรับคู่ที่ถูกต้อง (ชื่อและคำอธิบายมาจากบทความเดียวกัน) มีเพียง 2.5% เท่านั้นที่ให้คะแนนประโยคถัดไปต่ำกว่า 50% ตามแบบจำลองที่ได้รับการฝึกล่วงหน้า (BERT-base- ไม่มีเคส) 97.3%มีคะแนนสูงกว่า 90% ต่อไปนี้เป็นตัวอย่างที่ถูกคาดการณ์เชิงลบ:

หัวข้อ:ขณะเดียวกัน: สำหรับมีด กริช ดาบ มีดแมเชเท หรือนักฆ่าซอมบี้ ลองถามสาวๆ เหล่านี้สิ

คำอธิบาย:Whitehead’s Cutlery ในเมืองบัตต์ รัฐมอนต์ มีอายุ 128 ปี และยินดีที่จะลับกรรไกรที่ขายไปหลายชั่วอายุคน

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

ตามตัวอย่าง ฉันใช้ชื่อเรื่องจากบทความการปิดระบบของรัฐบาลที่แสดงก่อนหน้านี้ และสร้างลำดับอินพุต 2,719 รายการพร้อมคำอธิบายจากคลังข้อมูลทั้งหมด นี่คือการแข่งขันห้าอันดับแรก (คะแนนประโยคถัดไปสูงสุด):

Top 5 Descriptions Matching this Title: What Is and Isn’t Affected by the Government Shutdown
1. Transportation Security Administration agents are among the most visible federal employees affected by the government shutdown.
2. Transportation Security Administration agents at Chicago Midway International Airport on Dec. 22, the first day of the government shutdown.
3. Damage from Hurricane Michael lingers throughout Marianna, Fla. The government shutdown has made things worse for many residents.
4. Scientists aboard a National Oceanic and Atmospheric Administration ship in San Juan, P.R. The administration has furloughed many workers because of the government shutdown.
5. Major federal agencies affected by the shutdown include the Departments of Agriculture, Commerce, Homeland Security, Housing and Urban Development, the Interior, Justice, State, Transportation, and the Treasury and the Environmental Protection Agency.

สิ่งที่น่าสนใจคือคำอธิบายจริงจากบทความไม่ได้ติด 5 อันดับแรกหรือ 10 อันดับแรก แต่คำอธิบายที่คาดการณ์ไว้ก็ดูดีพอสมควร

บทสรุปและการทำงานในอนาคต

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

ในความเป็นจริง งานปลายน้ำประการหนึ่งที่ BERT ได้รับการประเมินคือ Quora Question Pairs[5] ซึ่งขอให้แบบจำลองตรวจสอบว่าคำถามสองข้อถามคำถามเดียวกันหรือไม่ หากเราสามารถติดป้ายกำกับข้อมูลบางอย่างด้วยตนเองได้ ผลลัพธ์อาจจะดียิ่งขึ้นไปอีก

วิธีอื่นที่มีประสิทธิภาพมากกว่า (ในแง่ของการคำนวณที่จำเป็น) ในการวัดความคล้ายคลึงกันของเอกสารหรือประโยคคือการทำ "การฝังประโยค" ตรงกันข้ามกับ RNN และตัวแปร (เช่น LSTM และ GRU) การแยกประโยคที่ฝังออกจากโมเดลหม้อแปลงไฟฟ้านั้นไม่ได้ตรงไปตรงมา (ดูการสนทนานี้)

รหัสแหล่งที่มา

รหัสนี้อิงตามการใช้งาน PyTorch ของ BERT โดย Hugging Face:



พารามิเตอร์โมเดลที่ได้รับการฝึกอบรมมาจากการใช้งาน Tensorflow อย่างเป็นทางการจาก Google:



Jupyter Notebook ที่ใช้สำหรับโพสต์นี้:



สมุดบันทึกใช้ฟังก์ชันการประมวลผลล่วงหน้าบางอย่างจาก "สคริปต์ตัวอย่างสำหรับการปรับแต่งการจำแนกประโยคอย่างละเอียด"

อ้างอิง

  1. Devlin, J. , Chang, M.-W. , Lee, K. , & Toutanova, K. (2018) BERT: การฝึกอบรมล่วงหน้าเกี่ยวกับหม้อแปลงสองทิศทางเชิงลึกเพื่อการทำความเข้าใจภาษา.
  2. โฮเวิร์ด เจ. และรูเดอร์ เอส. (2018) โมเดลภาษาสากล การปรับแต่งอย่างละเอียดสำหรับการจำแนกข้อความ
  3. แรดฟอร์ด, เอ. และซาลิมานส์, ที. (2018) การปรับปรุงความเข้าใจภาษาโดย Generative Pre-Training
  4. ก. วาสวานี, เอ็น. ชาเซียร์, เอ็น. ปาร์มาร์, เจ. อุสโคไรต์, แอล. โจนส์, เอ. เอ็น. โกเมซ, Ł. ไกเซอร์ และไอ. โปโลซูคิน (2017) ความเอาใจใส่คือสิ่งที่คุณต้องการ
  5. ซ. เฉิน, เอช. จาง, เอ็กซ์. จาง และแอล. จ้าว 2018. คู่คำถาม Quora

2019/03/23 อัปเดต

นี่คือโปรเจ็กต์ที่ยอดเยี่ยมที่ใช้ BERT เพื่อสร้างการฝังประโยคและให้บริการโมเดลตามขนาด:



กระทู้ที่เกี่ยวข้อง



(โพสต์นี้เผยแพร่ "ในบล็อกส่วนตัวของฉัน")