Chatbot กับ Machine Learning [PART 1: Introduction]

Chatchitsanu Pothisakha
3 min readJan 13, 2018

Overview

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

Chatbot นั้นทำหน้าที่เป็นตัวแทนในการสื่อสารกับผู้ใช้งานหรือลูกค้า ด้วยแต่ก่อนพนักงานอาจจะต้องตอบคำถามลูกค้าในปริมาณมาก คำถามซ้ำๆเดิมๆ หรืออาจจะตอบไม่ทันทำให้เสียลูกค้าไป นั่นจึงเป็นที่มาของ chatbot ที่จะมาช่วยตอบคำถามหรือพูดคุยแทนเรา ทั้งนี้ chatbot ยังเป็นโปรแกรมที่สามารถตอบสนองกับผู้ใช้ด้วยภาษาก็ได้ โปรแกรมที่เราเห็นโดยทั่วไปปกติคือจะมี UI คือมีปุ่ม มี text box มี dropdown หรืออะไรก็แล้วแต่ แต่แชทบอทนั้นจะรวมทุกสิ่งทุกอย่างไว้เข้าด้วยกันหมดโดยใช้ภาษาเนี่ยแหละเป็น UI ที่เป็นแบบ Non-UI สื่อสารโต้ตอบกันจนได้ผลลัพธ์หรือปลายทางเหมือนกันกับโปรแกรมที่มี UI ปกติ เช่น Chatbot ที่คำนวณเรื่องการรีไฟแนนซ์ หรือ Chatbot ที่ใช้ให้มันให้อาหารแมวที่บ้านผ่าน IoT

ในช่วงปีสองปีที่ผ่านมานั้น Chatbot เติบโตขึ้นอย่างรวดเร็วกลายเป็น Digital Marketing Trend ที่มาแรงติดโผ Top 5 ในหลายๆสำนัก มีองค์กรใหญ่ๆใช้ Chatbot กันมากขึ้น เพราะมัน Cost reduction ลดต้นทุนด้านแรงงาน และเวลา ทำงานได้ตลอด 24/7 แต่ทุกอย่างย่อมมีปัญหาคือมันไม่สามารถทำหน้าที่แทนได้อย่างเต็มที่ ไม่เข้าใจคำถาม หรือตอบออกนอกคำถามไป

Amir Shevat ผู้อำนวยการฝ่ายนักพัฒนาสัมพันธ์ของ Slack กล่าวไว้ว่า

จุดมุ่งหมายที่องค์กรควรมีในการสร้าง chatbot ตั้งแต่แรกคือ ‘การสร้างบริการอย่างใดอย่างหนึ่ง’ มากกว่า ‘การสร้าง bot สักตัว’

และนั่นคือเป้าหมายของบทความนี้ครับ

Design

ก่อนสร้างเราควรกำหนดวัตถุประสงค์(Purpose) และขอบเขต(Scope) ที่ชัดเจนว่าเราต้องการสร้างมันให้เป็นไปในทิศทางใด เพื่อให้ได้ประสิทธิภาพ และตอบโจทย์มากที่สุด เราจึงต้องวางแผนก่อนว่า เราต้องการ chatbot สำหรับงานใด? ทำอะไร? ทำได้แค่ไหน? และทำเพื่อใคร? เพราะไม่มีความจำเป็นใดเลยที่จะครอบคลุมทุกบริการไว้ใน chatbot เพียงตัวเดียว ยกตัวอย่างเช่น ร้านขายกระเป๋าและรองเท้า หากมีลูกค้ามาถามถึงสภาพอากาศของวันนี้หรือเรื่องอื่นๆที่ไม่เกี่ยวข้องกับร้าน บอทก็ไม่จำเป็นต้องตอบหรือเลี่ยงไปก็ได้

Solution

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

Rule-Based

ง่ายๆ แต่ชัวร์ ถ้าเจอตรงกับที่ตั้งกฎไว้ หรือ if else นั่นแหละ เช่น ตั้งไว้ว่า if (user_text === “สวัสดี”) response = “ดีจ้า” แต่ถ้าผู้ใช้พิมพ์มาว่า “หวัดดี” ก็จะไม่เข้ากฎนั่นเอง ดังนั้นแล้วการใช้ Rule-Based นั้นต้องหมั่นทำบ่อยๆ และพยายามเข้าถึงกฎหลายๆกฎที่ครอบคลุมหลายๆคำถามจากผู้ใช้งานหรือลูกค้านั่นเอง หลักการนี้เหมาะกับบริการที่ขอบเขตไม่กว้างมาก Pattern น้อยๆ ไม่จำเป็นที่บอทต้องเรียนรู้ หรือคำถามที่ใช้มันไม่สามารถดิ้นไปจากเดิมได้ไม่เท่าไหร่ ไม่เกิน 10 รูปแบบ เช่นบอทผู้เชี่ยวชาญด้านการคุมอาหาร(แบบเบสิค) เราถามไปว่า “เที่ยงนี้กินไรดี” หรือ “เที่ยงนี้กินอะไรดี” บอทก็จะสามารถ หาแบบ any word ได้หรือจะ whole word ก็ได้ มันก็อาจจะคำนวณว่ามื้อเช้ากินไปแล้วกี่แคล งั้นเที่ยงเอาเมนูไหนดีที่เราจะกินแล้วไม่อ้วน มันก็จัดมาให้เราตามโปรแกรมที่ตั้งไว้ หรือ Chatbot ที่ใช้รดน้ำผัก ถ้าเราตั้งแพทเทิร์นไว้ว่า (Action ตอน Time) เราก็อาจจะสั่งมันว่า “รดน้ำตอน 6.00” มันก็จะจัดให้เราตามเวลานั้นในขณะที่เรากำลังนอนอยู่สบายๆ

ซึ่ง Rule-Based มันก็เจ๋งแล้วครับถ้าเรา Design ดีๆ มันสามารถนำไปใช้งานจริงได้เลยทันที เพียงแต่ว่าถ้าเราเจอเคสที่มันซับซ้อนกว่าเลเวลปกติเราจะเหนื่อยมากๆกับการคิดตั้งกฎ และเมื่อมันไปถึงจุดนั้นเราต้องคิดหา Solution ที่มันเหมาะสมกับเคสของเรา ซึ่งบทความนี้จะใช้หลักการของศาสตร์ที่ชื่อว่า ปัญญาประดิษฐ์ ครับ

Artificial Intelligence (AI)

การผสมผสาน Chatbot กับ AI นั้นเป็นอะไรที่ลงตัวที่สุดแล้ว ถ้าเราดูหนังเกี่ยวกับเอไอบ่อยๆ ในหลายๆเรื่องนั้น เอไอมักจะอยู่กับหุ่นยนต์ที่พูดคุยได้เหมือนมนุษย์ หรือมนุษย์ดัดแปลง โคลนนิ่ง ไซบอร์ก ระบบปฏิบัติการ หรืออะไรก็ตามที่มันเป็นคอมพิวเตอร์แล้วพูดได้เหมือนคน นั้นคือภาพจำของเรา แต่เอไอในวันนี้จะใกล้ชิดเรามากขึ้นเพราะ Chatbot จะเป็นการนำ AI มาใช้ในเชิงอุตสาหกรรมครับ ทุกองค์กรจะต้องอยากใช้มันมากขึ้น ไม่ใช่เป็นเพียงแค่เพิ่มช่องทางในการสื่อสารเท่านั้น แต่มันจะกลายเป็นเครื่องมือ CRM ชั้นดีที่ใช้เรียนรู้ Data ที่มีค่าจากลูกค้า ดังนั้นแล้วถ้าเรามีผู้ช่วยที่ตอบคำถามได้ เรียนรู้ได้ ย่อมเหนือกว่าใช้ Rule-Based แน่นอน ซึ่งบทความจาก digitalagemag สร้างแรงบันดาลใจให้ผมอย่างมากในการทำ Chatbot

AI เป็นศาสตร์ใหญ่ๆที่แตกออกเป็นหลายสาขา และการทำ Chatbot ในบทความนี้จะใช้สองสาขาคือ Machine Learning (ML) และ Natural Language Processing (NLP)

NLP

การประมวลภาษาธรรมชาติเป็นหัวใจสำคัญในการทำ Chatbot ครับ เพราะบอทต้องใช้ภาษาในการเป็น UI เพื่อโต้ตอบกับผู้ใช้ แต่… จุดพีคมันอยู่ตรงนี้ครับ

ภาษาไทย

ที่สุดของความโหดร้ายในการทำ NLP อย่างภาษาอังกฤษเราสามารถแยกคำออกได้ด้วยเว้นวรรคถูกมั้ยครับ Whitespace นั่นแหละเช่น I/am/a/student เรารู้ละว่าอะไรคือคำและความหมายคืออะไร แต่ภาษาไทยนั้นต้องตามไปอ่านของคุณปรัชญา บุญขวัญครับ เขียนไว้แน่นมากๆ

แต่ก็ใช่ว่าจะทำไม่ได้เพราะมีหลักการทำ Word Segmentation ที่มีงานวิจัยจากนักศึกษาที่ทำเกี่ยวกับการตัดคำภาษาไทยมากมายเผยแพร่อยู่ ซึ่งผมก็ตามอ่านมาพอสมควร มีวิธีที่ค่อนข้างใช้ได้ดีเลยทีเดียวในตอนนี้คือการใช้ N-Gram ไม่ว่าจะเป็น word หรือ letter แต่อนาคตข้างหน้าอันไกลโพ้นอาจจะมีวิธีที่ดีกว่านี้ครับ

Machine Learning

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

อาเธอร์ ซามูเอล นักวิทยาศาสตร์คอมพิวเตอร์ชาวอเมริกันได้ให้นิยามของการเรียนรู้ของเครื่องจักรไว้ในปี ค.ศ. 1959 ว่า

“เป็นสาขาที่ให้คอมพิวเตอร์มีความสามารถในการเรียนรู้โดยไม่ต้องโปรแกรมให้ชัดเจน”

หรือถ้าภาษาบ้านๆไปอีกตามคุณเต้ ก็คือ

การที่เราไม่เขียนโปรแกรมลงไปตรงๆ ว่าจะให้คอมพิวเตอร์ทำอะไร แต่ใช้การป้อนข้อมูลตัวอย่างจำนวนมากๆ บอกมันไปแทนนั่นเอง

ML นั้นถ้าแบ่งประเภทตาม Input แล้วจะแบ่งได้ 3 ประเภทหลักๆคือ Supervised, Unsupervised และ Reinforcement Learning ซึ่ง Chatbot นั้นจะใช้ Supervised Learning คือการเรียนรู้แบบมีผู้สอน หมายความว่ามันจะต้องมีข้อมูลขาเข้าสองชนิดคือ Feature และ Label

โดยตัว Feature คือข้อความจากผู้ใช้เช่น “คู่นี้สีดำ 37 หมดแล้วหรือยังคะ” NLP จะต้องแปลงภาษาโดยใช้หลักการ Word Segmentation แล้ว Transform มันให้อยู่ในรูปแบบที่คอมพิวเตอร์จะเข้าใจได้ โดยมากก็คือทำให้มันเป็น Vector ซะ จากนั้นก็สอนมันว่าข้อความนี้คืออะไรเราเรียกว่า Label เช่น “ลูกค้าสอบถามสินค้า”

จากนั้นเราก็นำ Training Sets ไปฝึกสอน ซึ่ง SL นั้นจะมีอัลกอริทึมอยู่สองแบบคือ Classification และ ​Regression โดยการทำ Classify จะเหมาะกว่าเพราะเราสอนแบบต้องการ Output ที่เป็นหมวดหมู่ออกมาแบบชัดเจน อัลกอริทึมแบบ Classification นั้นมีอยู่มากมายเช่น ANN, SVM,Decision Tree แต่ต้องเลือกให้สอดคล้องกับ Data ของเรา แล้วเราจะรู้ได้อย่างไรว่าเหมาะไม่เหมาะ สุดท้ายแล้วเราต้อง Cross Validation เพื่อดูค่า Precision, Recall, F-measure, Accuracy ว่าได้เท่าไหร่เพียงพอหรือไม่ ผลลัพธ์ที่ได้จากการเรียนรู้นั้นเราเรียกว่า โมเดล

หากเปรียบโมเดลเป็นเหมือนเด็กนักเรียนคนหนึ่ง ครูก็คือเราผู้พัฒนาโมเดลตัวนั้น Datasets เปรียบเสมือนวิชาเรียนซึ่งเรานำไปใช้สอนนักเรียนบอกว่าสิ่งไหนคืออะไร อัลกอริทึมคงเปรียบเสมือนหลักการที่นักเรียนใช้ในการเรียน หลักในการจำ การทำ Cross Validation ก็เหมือนกับการสอบกลางภาคหรือสอบปลายภาค เพื่อวัดผลว่าหลักการที่นักเรียนใช้ ความรู้ที่นักเรียนมีนั้นมีมากน้อยเพียงใด นักเรียนหรือโมเดลหนึ่งจะฉลาดได้ ถ้าเราป้อนข้อมูลที่ดีมีคุณภาพให้เพียงพอ มีหลักการรู้จำที่ดี นักเรียนคนนั้นไม่ต้องสอนเพิ่ม เขาจะต่อยอดจากข้อมูลใหม่ๆได้เอง ซึ่งเราจะเห็นได้ว่า Data Mining ก็ใช้หลักการของ Machine Learning เช่นเดียวกันในการ Predict ข้อมูลเพื่อธุรกิจ แต่ Chatbot ต้องระวังเรื่อง Curse of dimensionality อย่างมากเพราะ Feature ที่ใช้สอนนั้นควบคุมขนาดได้ยาก ไม่ตายตัว

เมื่อโมเดลเรียนรู้ข้อมูลหมวดเดิมๆ ซักร้อยครั้งหรือพันครั้ง มันจะจดจำรูปแบบว่า อ๋อ สิ่งนี้คือลูกค้าทักทายนะ อ่าาา สิ่งนี้คือลูกค้าถามราคานะ ว้าว แบบนี้ลูกค้ากำลังกวนอยู่นะ แบบนี้แหละครับที่เรียกว่า Supervised Learning การเรียนรู้แบบมีผู้สอนของ Machine Learning ที่นำมาใช้กับ Chatbot

เดี๋ยวมันจะยาวไปต้องตัดแบ่งหลายๆตอน สุดท้ายนี้ผมเชื่อว่าทุกคนอยากมีผู้ช่วย อยากมีลูกมือหรือเครื่องมืออะไรซักอย่างมาแบ่งเบาภาระงานลง ก่อให้เกิดประโยชน์กับตัวเอง องค์กรหรือธุรกิจที่กำลังดำเนินอยู่ ซึ่งอาจจะเป็นงานที่ซ้ำๆเดิมๆ ไม่ซับซ้อน เช่น ชงกาแฟ, รดน้ำต้นไม้, ตอบคำถามเดิมๆ จนไปถึงขั้นซับซ้อนมากๆกระทั่งแบบว่าใครก็มาแทนที่ได้ยาก เช่นตัดสินคดีความ และหลายๆคนอาจเคยอ่านบทความเกี่ยวกับ AI ว่าจะเกิดผลกระทบอะไรกับมนุษยชาติในอนาคต แต่จะดีกว่าครับถ้าเราเปลี่ยนคำถาม Imitation Game ของอลัน ทัวริ่งที่เคยถามว่า “AI คิดได้เองหรือไม่” เป็นคำถามที่ว่า “AI จะทำงานที่พวกเราทำได้หรือไม่” ซึ่งยาก สนุกและท้าทายมากๆ เอาจริงๆ งานบางงานยังคิดอยู่แปดตลบก็คิดไม่ออกเลยว่าจะเขียนบอทยังไงให้มันทำงานที่พวกเราทำได้ . ส่วนใน PART 2 จะเริ่มพูดถึง architecture ในการทำ Chatbot (แบบ Programming) แบบเน้นสบายกระเป๋าไม่ต้องลงทุนซักบาทเดียว ขอแค่มีไฟฟ้า, อินเตอร์เน็ต กับคอมพิวเตอร์ก็พอ (อันนี้ก็เรียกว่าต้นทุนแล้วล่ะ lol)

แล้วพบกันตอนหน้า สวัสดีครับ

--

--