ข้อเสียของ Model ขนาดใหญ่ ในการทำ spell correction เมื่อข้อมูลน้อย

Chomtana Chanjaraswichai
Super AI Engineer
Published in
1 min readMar 27, 2021

ดังที่เราเห็นอยู่ในข่าวทุกวันว่าโมเดลตระกูล Bert นี้ทำ new high กันไม่เว้นแต่ละวัน แต่ในข่าวไม่เคยบอกเลยว่า ที่ Bert นั้นทำ new high ได้นั้นใช้ Data ไปขนาดเท่าไหร่

และคำพูดหนึ่งที่มักจะทำให้นักวิจัยทางด้าน AI ดูไม่ดี ก็คือ “ใช้ Rule based” แต่เรื่องมันอาจจะพลิกผันได้ถ้า “ข้อมูลมีน้อย”

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

สำหรับการทำ spell correction นั้น ท่าในปัจจุบันจะทำการแบ่งออกเป็น 2 ส่วน ได้แก่ส่วน detector และส่วน corrector

ส่วน Detector

ส่วน Detector นั้นทำหน้าที่ในการ Detect ว่าคำไหนบ้างที่เป็นคำผิด โดยวิธีที่ได้ผลดี จะรับ Input เป็นคำแต่ละคำ รวมกับตัวอักษรแต่ละตัว แล้วนำไปทำ Character embedding และ Word embedding ต่อมาจะทำการปรับให้ Character embedding เข้ากับ Word embedding ได้ ด้วย TimeDistributed(Bidirectional(GRU)) แล้วจึงไปผ่าน GRU + Dropout เรื่อยๆ จบด้วยการผ่าน TimeDistributed(Dense(2)) เพื่อทำนายออกมาเป็น 0 กับ 1 (เป็น one hot encoding)

โดย 0 หมายถึงคำนั้นไม่ผิด และ 1 หมายถึงคำนั้นผิด

ทั้งนี้ส่วน Detector ยังไม่ค่อยเห็นการใช้ Model ตระกูล bert ในการแก้มากเท่าไหร่ ซึ่งส่วนหนึ่งก็เกิดจากลักษณะของ Output ที่มีแค่ 0 กับ 1 (เป็น one hot encoding)

การใช้ Rule based ทำในส่วนของ Detector นั้นทำได้ประมาณหนึ่ง แต่ก็ไม่ได้ให้ผลที่ดีมากนัก เนื่องจาก Model แบบ Rule based จะสับสนว่าคำนั้นถูกหรือผิดกันแน่ เนื่องจากความสามารถในการดู Context รอบข้างต่ำ

ส่วน Corrector

สำหรับส่วน Corrector นั้นเป็นเรื่องยากที่จะแก้ได้ด้วย Neural network และด้วยปัญหาข้อมูลมีน้อยมาซ้ำเติมอีกส่งผลให้การแก้ด้วย Rule based ดูแล้วมีโอกาศทำนายถูกเทียบเท่าหรือมากกว่าการใช้ Neural network ได้

ถ้าหาก Dataset ที่ได้มามีขนาดใหญ่ ส่วน Corrector นั้นสามารถใช้ Model ตระกูล Encoder Decoder ซึ่งหนึ่งในนั้นก็คือ Model ตระกูล Bert ในการแก้ รวมกับการใช้เทคนิค Copy mechanism เนื่องจากถ้าไม่ใช้ Copy mechanism จะส่งผลให้มีคำบางคำหายไปในการทำนาย

แต่ถ้าหาก Dataset มีขนาดเล็ก จะส่งผลให้ส่วน Corrector ที่ใช้ Bert นั้นมีปัญหาการตัดคำทิ้งไปที่เยอะ และจะไม่สามารถทำนายคำที่มักจะสับสนได้ อย่างเช่น คะ ค่ะ ในกรณี คะ ค่ะ โมเดลจะเน้นตอบคำศัพท์ที่เห็นมากกว่า อย่างเช่น คะ เป็นหลัก ส่งผลให้ตอบผิด และเป็นเหตุให้ได้คะแนนแย่ขึ้นกว่าเดิม

โดยใน Case ของ คะ ค่ะ นั้นเรามักจะใช้ Rule based ในการแก้ในภายหลัง

แต่ถ้าหาก Dataset นั้นมีขนาดเล็ก และอยู่ใน Domain แคบๆ อย่างเช่นเป็นการรีวิวอาหาร การใช้ Rule base จะให้ผลดีกว่าการใช้ Model ขนาดใหญ่ เนื่องจากการใช้ Rule base นั้นไม่มีผลเสียจากการข้ามคำบางคำไป เนื่องจากเป็นการประมวลผล Word by word รวมถึงเป็นการแก้ไขเฉพาะคำที่ถูก Detector mark ว่าผิด ซึ่งมักจะมี precision สูง แต่ recall ต่ำหว่ามาก ส่งผลให้ความเสี่ยงจากการแก้ผิดคำลดลง โดยรวมแล้วจึงให้ผลดีกว่าการทำ Corrector ด้วยโมเดลใหญ่ ที่ไม่สามารถเอาชนะปัญหาเหล่านี้ได้เนื่องจากขนาดของ Dataset เล็กเกิน

การใช้เครื่องมือสำเร็จรูปอย่าง PyThaiNLP ในการแก้

ในสัปดาห์แรกของการแข่งขัน Hackathon Super AI Level 2 มีหลายกลุ่มที่ใช้ PyThaiNLP ในการแก้คำผิด แต่ผู้เขียนได้ลองทำการทดลองกับ Dataset ซึ่งเป็นข้อความรีวิวการใช้บริการของบริษัทหนึ่ง ปรากฏว่าให้ผลที่แย่ลงกว่าเดิม

--

--