Negative Log Likelihood ที่มา และที่ไป
Machine Learning ถูกนำไปประยุกต์ใช้อย่างกว้างขวางในหลายแขนง ทั้งในการเกษตร การเงิน ในแวดวงธุรกิจ เช่น ช่วยสนับสนุนการดูแลลูกค้า เป็นต้น ไม่เว้นแม้กระทั่งในด้านการแพทย์ ซึ่งเกี่ยวข้องกับชีวิตมนุษย์
แต่เป็นเรื่องที่น่าตกใจมาก ๆ ที่ความเข้าใจในตัวโมเดลนั้นยังน้อยมาก แม้แต่ในวงการนักวิจัยเองก็ตาม หลายงานวิจัยยังคงพูดถึง Neural Network ในเชิงว่าเป็น black box ที่เราไม่เข้าใจว่าเหตุผลในการตัดสินใจมันของคืออะไรกันแน่
ทุกวันนี้งานวิจัยทางด้าน Explainable AI เริ่มได้รับความสนใจมากขึ้น จุดประสงค์หลักก็คือการทำให้โมเดลสามารถอธิบายได้ว่า เหตุผลของการตัดสินใจนั้น ๆ คืออะไร ซึ่งก็จะเกิดเป็น Trade off ระหว่างความสามารถในการอธิบายเหตุผล กับคุณภาพในการตัดสินใจ
วันนี้ผมจะยังไม่ได้พูดลงลึกถึงประเด็น Explainable AI วันนี้ แต่จะมาพูดถึงเรื่องพื้นฐานความเข้าใจเกี่ยวกับ Loss Function ที่ถูกใช้ใน Classification Model อยู่ตลอด นั่นก็คือ Negative Log Likelihood และที่มาที่ไปของมัน ทำไมมันถึงได้มีสูตรอย่างที่ใช้กันอยู่นี้
ที่จริงแล้วการอธิบาย Loss Function ของ Classification Model สามารถอธิบายได้จากสองหลักการที่แตกต่างกัน แต่สุดท้ายจะได้สูตรการคำนวณเดียวกัน (ซึ่งอีกหลักการหนึ่งที่จะยังไม่ได้พูดถึงในวันนี้คือ Entropy)
ต้องเข้าใจคำว่า Likelihood ก่อน
ก่อนอื่น คำถามแรกก็คือ likelihood นั้นคืออะไร ??
ถ้าใครที่ยังไม่รู้จักกับ likelihood แนะนำให้กลับไปอ่านบทความเก่าที่อธิบายเกี่ยวกับ Bayesian Probability เอาไว้ใน
- “ทฤษฎีความน่าจะเป็นแบบเบย์ๆ” — https://goo.gl/DkC22U และ
- “Maximum Likelihood Estimation ความหมาย และตัวอย่างง่าย ๆ” — https://goo.gl/t2qqDv
ดังนั้น ในบทความนี้เราก็จะหยิบสูตรมาใช้ได้เลย โดยไม่ได้อธิบายที่มาที่ไป เพราะถือว่าทุกคนที่อ่านรู้จัก likelihood แล้วนะครับ
likelihood function ก็คือ
ประเด็นก็คือ เราต้องรู้ว่าเราจะเลือกใช้ probability density fuction อันไหนดี ในกรณีของ classification
Categorical Distribution
distribution ที่เราเลือกใช้ในการทำโมเดล classification ก็คือ Categorical Distribution ซึ่งเป็นความน่าจะเป็นของความสัมพันธ์ระหว่าง X และ Y
นิยามก็คือ พิจารณาจากค่า X มีค่าความน่าจะเป็นที่จะเกิด Y ที่เป็นไปได้ทั้งหมดเท่าไหร่บ้าง
มี parameter คือ ค่าความน่าจะเป็นที่ x ถูกจัดอยู่ในหมวดหมู่ (category) y ซึ่งประกอบไปด้วย n หมวดหมู่
ตัวอย่างเช่น ถ้าเรามีภาพ 5 ภาพ ซึ่ง 3 ภาพแรกเป็นภาพนก อีก 2 ภาพเป็นภาพของแมว ซึ่งก็หมายความว่าข้อมูลชุดนี้ประกอบไปด้วย 2 หมวดหมู่ ได้แก่ นก และแมว
ถ้าเราให้โมเดลมาเรียนรู้ข้อมูลภาพชุดนี้ เพื่อที่จะแยกแยะภาพนกและแมว ในตอนแรกผลลัพธ์การ classification จากโมเดลนี้จะเทียบเท่าการเดาสุ่ม ในกรณีนี้ก็คือ โมเดลจะตอบว่าทุกภาพมีความเป็นไปได้ที่จะถูกจัดอยู่ในหมวดหมู่ “นก” และ “แมว” อย่างละ 0.5 หรือ 50%
เมื่อเราคำนวณ Likelihood Function จะได้ค่าดังนี้
แต่โมเดลเป้าหมายที่เราต้องการคือ โมเดลที่แยกแยะภาพได้ถูกหมวดหมู่ทั้งหมด ดังนั้นผลลัพธ์ที่เราต้องการก็คือ
ซึ่งเป็นค่าของ Maximum Likelihood ของโมเดลเป้าหมายที่เราต้องการนั่นเอง
และการได้มาซึ่งโมเดลที่เป็นเป้าหมายนั้น เราต้องใช้การปรับ weight หรือ parameter ของ neural network model ของเราไปตามทิศทางที่จะทำให้ค่า likelihood เพิ่มขึ้น (โดยดูจากการคำนวณ gradient) นั่นเอง
รายละเอียดของวิธีการ optimization ด้วย gradient descent ติดตามได้ในตอนต่อ ๆ ไปนะครับ
แล้วทำไมต้องใช้ Negative Log Likelihood ล่ะ ??
ย่อหน้าบนเราเห็นแล้วว่า เราสามารถที่จะ train โมเดลของเราในทิศทางที่จะทำให้ค่าของ likelihood เพิ่มขึ้นได้ แล้วทำไมเรายังต้องการ Negative Log Likelihood อยู่อีกล่ะ ??
เราต้องพิจารณาแยกกัน
ทำไมต้อง negative ?
สาเหตุที่ต้องทำให้ค่าเป็น negative (คูณด้วย -1 เข้าไปดื้อ ๆ) ก็คือ โดยมากแล้วเครื่องมือต่าง ๆ และ library (หมายถึงชุดคำสั่ง ไม่ใช่ห้องสมุด) มักจะมีคำสั่งสำหรับ minimize เพียงอย่างเดียว ไม่ได้มีคำสั่งของการทำ maximize มาให้เรา ดังนั้นเราก็เลยแก้ปัญหาโดยการกลับค่ามันซะเลย
take log ทำไม ?
การเทค log เหมือนเป็นเครื่องมือมหัศจรรย์ที่ช่วยทำให้คณิตศาสตร์นั้นง่ายเพียงดีดนิ้ว !!
ก่อนอื่นต้องเข้าใจก่อนว่า เรากำลังจะหาค่า likelihood ที่ต่ำที่สุด (เพราะเรากลับค่ามันเป็นลบแล้ว) ดังนั้น การเทค log ทั้งสมการจะไม่ทำให้ค่าที่อยู่ต่ำที่สุดเปลี่ยนจุดไป มันเคยอยู่ที่จุดไหนก่อนเทค log หลังเทคก็จะอยู่ที่จุดเดิม
การเทค log ช่วยให้เราไม่ต้องคำนวณตัวเลขที่คูณกันมาก ๆ เช่นในกรณีของ categorical distribution ก็สามารถทำแบบนี้ได้
และเมื่อรวมทั้งสองอย่างแล้ว เราจะได้ว่า loss function ของการรันโมเดล neural network ในครั้งนี้ก็คือ
ซึ่งก็คือ cross entropy loss ที่เราใช้กันในการเทรน classification model นั่นเอง
ทำไมถึงเข้าใจหลักการของ Negative Log Likelihood ด้วยล่ะ ?
ในบางครั้ง โมเดลที่ถูกเทรนด้วย loss function ที่ดูซับซ้อนนั้น ก็เกิดมาจากการสมการ probability อื่นได้ด้วย เช่น ใน regression model ก็สามารถใช้ negative log likelihood ในการแปลงสมการของ Gaussian (Normal) Distribution มาเป็น loss function ที่ดูซับซ้อนวุ่นวายได้
ดูตัวอย่าง loss function ที่ว่า ได้จากงานวิจัยที่ชื่อว่า “What Uncertainties Do We Need in Bayesian Deep Learning for Computer Vision?” — https://arxiv.org/abs/1703.04977 ตรง equation (7)