รีวิว Deep Averaging Network

Pakhapoom Sarapat
2 min readMay 14, 2021

--

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

วันนี้ผมมาพร้อมกับเรื่องเล่าเกี่ยวกับโมเดลในการแบ่งกลุ่มข้อความครับ โดยอาจจะลองนึกภาพเป็นเหมือนว่า ให้บอกชื่อภาพยนตร์แล้วทายว่าเรื่องนี้น่าจะจัดอยู่แนวไหน ไม่ว่าจะเป็น action, romantic, comedy เป็นต้น ซึ่งตัวโมเดลที่จะมาเล่าให้ฟังในวันนี้มีชื่อเรียกว่า Deep Averaging Network (DAN) ครับ

เตรียมตัวก่อนรู้จัก DAN

พอจะเล่าก็ไม่รู้ว่าต้องเริ่มจากตรงไหนดี เพราะไม่รู้ว่ามีใครที่เข้ามาอ่านบ้าง (มีด้วยหรอ?) เอาเป็นว่าสิ่งที่เรากำลังทำมันเหมือนกับว่าเราพยายามสร้างตัวแบ่งกลุ่มจากข้อมูลที่มี เช่น มีข้อมูล 2 กลุ่ม แดงกับน้ำเงิน และเราก็คาดหวังว่าจะสร้างตัวแบ่งกลุ่ม (โมเดล) หรือก็คือเส้นสีดำที่แบ่งระหว่างพื้นที่สีแดงและน้ำเงินโดยการเรียนรู้จากข้อมูลว่ามีค่าอยู่เท่านี้และมีสีเป็นสีนี้นะ และค่อย ๆ สอนโมเดลไปเรื่อย ๆ จนได้โมเดลมา และเมื่อมีข้อมูลใหม่เข้ามาโดยตอนนี้ไม่รู้ว่าจะเป็นสีแดงหรือน้ำเงิน เราก็มาใช้โมเดลนี้ในการทำนายสีของข้อมูลที่เข้ามาใหม่ได้ ภายใต้สมมติฐานที่ว่าข้อมูลนั้นมาจากแหล่งที่คล้ายกันกับข้อมูลที่เราใช้ในการสร้างโมเดล โดยเราเรียกการเรียนรู้แบบนี้ว่า supervised machine learning

ที่มา: https://en.wikipedia.org/wiki/Linear_separability

แต่คำถามคือ มันทำได้ด้วยหรอโดยการใช้ข้อมูลเท่านั้น ซึ่งคำตอบก็คือ ได้ แต่ภายใต้คำว่า ได้ นี้ก็ต้องมาดูอีกว่ามันดีเพียงพอรึเปล่า ซึ่งมันก็สามารถถามต่อได้อีกว่า แล้ว ดี ที่ว่านี่ดีแบบไหนดีแบบทั่ว ๆ ไปหรือดีแบบประยุทธ์ (เอ๊ะ วกมาเรื่องนี้ได้ไง) และก็ เพียงพอ รึเปล่าอีก ซึ่ง เพียงพอ คืออะไร ในแง่ไหน (3 ห่วง 2 เงื่อนไขรึเปล่า) เราก็ต้องมาคุยกันอีกทีด้วย แต่ในเบื้องต้นผมขอตอบว่าได้ก่อนแล้วกัน

แล้วข้อมูลที่เป็นข้อความจะมา plot เป็นจุด ๆ แบบนี้ได้ยังไง

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

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

และเอาจริง ขั้นตอนที่จะเปลี่ยนตัวอักษรเหล่านี้ให้กลายเป็น vector ได้นั้นต้องใช้หยาดเหงื่อมหาศาลเลย ซึ่งรายละเอียดตามอ่านได้ในบทความนี้ (ยังไม่มี link เพราะยังไม่ได้ทำ) แต่สมมติไปก่อนว่าตอนนี้เรามี vector ของแต่ละคำเรียบร้อยแล้ว ขอเรียกชื่อเท่ ๆ ว่า token embedding vector และขั้นต่อไปนี้เราจะนำ vector เหล่านี้ไปเข้าโมเดล DAN กัน

ทำความรู้จัก DAN

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

ซึ่งจาก section ที่แล้วบอกว่าโดยทั่วไปจะเอาค่าของแต่ละ vector มาเฉลี่ยกัน แต่วิธีการของ DAN แตกต่างนิดหน่อย แทนที่จะเอา vector ของทุกคำมาเฉลี่ยเลย ธรรมดาไป ขอเพิ่มขั้นตอนการสุ่มเลือก vector เพื่อนำมาหาค่าเฉลี่ย (เลยได้เป็นคำว่า average) จากนั้นจะนำไปในฟังก์ชันหลาย ๆ ครั้งจนกว่าจะพอใจ (เลยได้เป็นคำว่า deep) และถึงค่อยไปทำนายว่าข้อความนั้นจัดอยู่ในกลุ่มไหน ซึ่งมันอยู่เป็น network เลยกลายมาเป็น Deep Averaging Network หรือ DAN นั่นเอง

แทนที่จะเอาทุก vector มาเฉลี่ย จะสุ่มมาก่อนแล้วค่อยหาค่าเฉลี่ยจากนั้นก็เข้าฟังก์ชันไปเรื่อย ๆ (หรือก็คือใช้ function composition) แล้วค่อยทำนายกลุ่มในตอนสุดท้าย

ประเด็นการสุ่มเอาคำออกอาจสร้างหายนะได้ ถ้าคำที่ถูกทำให้หายไปดันเป็นคำสำคัญของข้อความนั้น เช่น ข้อความว่า “มันคือ …” ถ้าคำที่เป็นกรรมในข้อความนี้หายไปนี่ลำบากเลย เพราะเราจะไม่รู้เลยว่า สรุปมันคือแป้งหรือเนื้อกันแน่ แต่ผู้คิดค้น DAN บอกว่าถ้าข้อความยาว ๆ ไม่เป็นไรหรอกเพราะโดยทั่วไปแล้วคำที่ส่งผลต่อรูปประโยคจริง ๆ มันมีน้อยนะ แต่ถ้าข้อความสั้นก็ทำใจหน่อยแล้วกัน เพราะการสุ่มเอาออกแบบนี้นอกจากเพิ่มความไวด้วยแล้วยังเป็นการลดโอกาส overfitting* ด้วย

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

มากกว่านั้น ยังขิงต่อว่ายิ่งมีหลายฟังก์ชันเท่าไหร่ (ยิ่งดี๊ปปป) ก็จะยิ่งเห็นความแตกต่างของคำในข้อความได้ชัดเจนยิ่งขึ้น อย่างเช่น “ฉันรักประยุทธ์” “ฉันชอบประยุทธ์” และ “ฉันเกลียดประยุทธ์” ทั้งสามข้อความนี้ต่างกันตรงที่กริยาเท่านั้น โดยเราจะเห็นว่าสองข้อความแรกน่าจะคล้าย ๆ กัน ส่วนข้อความที่ 3 จะแตกต่างจากเพื่อนหน่อย ซึ่งในจุดนี้ DAN ก็สามารถเก็บรายละเอียดตรงนี้ไว้ได้ด้วย

ลองนำ DAN ไปใช้

ตอนแรกเปิดมาว่าจะเอาไปทายประเภทหนังจากชื่อเรื่องแต่ตัวอย่างไม่ได้มีอะไรที่เป็นหนังเลย แต่ไม่เป็นไร หวังว่าจะพอได้เห็นภาพการทำงานของโมเดล DAN นะครับ

สำหรับการใช้งาน DAN โดยส่วนตัวคิดว่าอาจจะไม่เหมาะกับยุคปัจจุบันที่มีศักยภาพในการประมวลผลเยอะกว่ายุคก่อนหลายเท่าตัว ประเด็นเรื่องความไวจึงอาจจะไม่ได้เป็นประเด็นขนาดนั้น อีกอย่างตำแหน่งของคำก็สำคัญ หลาย ๆ โมเดลที่ทำด้านนี้ในปัจจุบันก็เน้นไปพัฒนาทางด้านตำแหน่งมากยิ่งขึ้นด้วย

แต่อย่างไรก็ตาม DAN ก็ไม่ได้ถูกเขี่ยทิ้งไปอย่างไร้เยื่อใย เพียงแต่มันอาจไม่ได้เวิร์คกับข้อมูลและงานบางอย่างเท่านั้นเอง แต่บางอย่าง DAN อาจจะเวิร์คก็ได้โดยในเปเปอร์จะบอกว่า DAN เก่งเรื่อง sentiment analysis และ question answering ซึ่งเราอาจใช้ DAN เป็นโมเดลที่เป็น baseline ของทางฝั่ง neural network ก็ได้ แล้วค่อยพัฒนาหรือปรับต่อไปเรื่อย ๆ

คืองานพวกนี้เป็น iterative process ที่เราต้องทำซ้ำ ๆ ไปเรื่อย ๆ และดูเหมือนไม่มีที่สิ้นสุด ซึ่งมันก็เหมือนกับการพัฒนาตัวเราเองเลยครับ และอย่าหยุดที่จะเรียนรู้สิ่งใหม่ ๆ นะครับ

ปล. คำเหล่านี้จำเค้ามาครับ ผมเองก็พยายามทำตามให้ได้อยู่ครับ : )

Reference

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

No responses yet

Write a response