Artificial Neural Network ความสำเร็จครั้งใหญ่ของมนุษย์ ในการเลียนแบบธรรมชาติ

Dr. Winn Voravuthikunchai
botnoi-classroom
Published in
3 min readOct 23, 2019

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

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

สมองร่างกายรับสัญญาณจากสัมผัส ผ่านเส้นปราสาทมีการประมวลผล และส่งต่อการคำนวณไปยังเส้นปราสาทอีกเส้น ส่งต่อเป็นทอด ๆ หลาย ๆ ชั้น

Artificial Neural Network

สิ่งที่มนุษย์ได้คิดค้นขึ้นมาคือ สมองเทียม หรือที่เรียกว่า Artificial Neural Network ANN (หรืออาจจะคุ้นกับคำว่า Deep Learning คืออันเดียวกัน) ที่เป็นโครงข่ายของโหนดการคำนวณแบบง่าย ๆ แต่ละโหนดจะรับค่าตัวแปร คูณกับค่าน้ำหนัก รวม และส่งต่อไปยังโหนดถัดไป

Train Neural Network

แน่นอนว่าสมัยตอนเด็ก ตอนที่เราเกิดขึ้นมา เรามีสมองแต่เราไม่รู้อะไรเลย เราก็เรียนรู้ขึ้นมาเรื่อย ๆ ลองมานึกย้อนไปถึงสมัยเราอยู่อนุบาล ครูชูหนังสือขึ้นมา ให้นักเรียนพูดตาม THIS IS A BOOK จากนั้นก็ชูปากกาขึ้นมา THIS IS A PEN ครูไม่ได้บอกรายละเอียดว่า BOOK กับ PEN เป็นยังไง หรือใช้ยังไง เรามองเห็นสิ่งที่ครูชูขึ้น หูก็ได้ยินในสิ่งที่ครูบอก ในสมองของเราก็จะสร้างความสัมพันธ์ระหว่างข้อมูลที่เข้ามาอย่างมหัศจรรย์ และจัดเก็บกลายเป็นความรู้ข้างใน พอคราวหน้ามีคนชูหนังสือ ถามว่า WHAT IS THIS? เราก็จะพูดออกมา THIS IS A BOOK

วิธีการเดียวกัน หากเราจะทำให้คอมพิวเตอร์รู้จักรูปภาพ เราก็จะป้อนรูปภาพเข้าไป พร้อมกับ tag หรือ label ว่าคืออะไร ถ้าเราอยากจะให้คอมพิวเตอร์แยกยี่ห้อรถยนต์ เราก็ป้อนรูปรถยนต์พร้อมกับ tag หรือ label ไปว่าแต่ละรูปคือรถยี่ห้ออะไร นี่ก็คือ Toyota นี่คือ Honda เราต้องป้อนเข้าไปหลายร้อย หลายพัน รูปเพราะว่ารถมันก็มีความหลากหลาย แล้วมุมมองแต่ละมุมก็ทำให้รถดูแตกต่างกัน

เราจะนำแต่ละรูปมา scale ให้ได้จำนวน pixel ที่เท่ากัน เช่น 300x400 pixel กาง pixel ออกมา ยาว ๆ ได้ 12,000 pixel เป็น input vector หรือเป็นอาเรย์ของตัวเลข [p1, p2, p3, …, p12000] ที่ป้อนจะป้อนเข้าทางด้านซ้ายของโครงข่าย ANN ในขณะที่ฝั่งขวาเราจะป้อน binary vector หรือ อาเรย์ของ 0 กับ 1 โดยจะมีเลข 1 หากว่าตรงกับยี่ห้อรถยนต์ที่กำหนด (Honda, Toyota, …, Mazda) สมมติว่า เราป้อนรูปของรถ Toyota เพราะฉะนั้น output vector ที่เราจะป้อนเข้าไปสำหรับรูปที่ 1 คือ [0, 1, 0, … 0] จะเห็นได้ว่า Toyota อยู่ลำดับที่ 2 เพราะฉะนั้นเวลาเราสร้าง output vector ลำดับที่สองก็จะมีเลข 1

ค่าของ weight ต่าง ๆ ในโครงข่ายจะพยายามปรับเพื่อที่จะทำให้การคำนวณเป็นจริง คือถ้า input vector นี้เข้ามา output vector จะต้องเป็นแบบนี้

เราจะป้อนเข้าไปเรื่อย ๆ เป็นพัน เป็นหมื่น เป็นล้านรูป โครงข่ายก็จะปรับค่า weight ไปเรื่อย ๆ จนกระทั่งเราได้ชุดของ weight ที่ดีที่สุด ทำให้เกิดความผิดพลาดน้อยที่สุด ก็เป็นการเสร็จสิ้นของการสอน ANN ในที่สุดเราสามารถนำ ANN ที่ผ่านการสอนไปใช้งาน โดยคราวนี้เราไม่ต้องป้อน output vector อีกแล้ว พอมีรูปใหม่เข้ามาโดยที่เราไม่ต้องบอกว่าคือรถยนต์ยี่ห้ออะไร แต่ ANN ก็จะบอกเราเองหลังจะผ่านการคำนวณ

ศาสตร์ที่ว่าด้วยการทำให้คอมพิวเตอร์เข้าใจ แยกแยะรูปภาพได้เรียกว่า Computer Vision CV รูปแบบเดียวกันนี้ เราสามารถใช้เพื่อแยกแยะข้อความ และเข้าใจว่าข้อความแต่ละข้อความหมายความว่าอย่างไร โดยศาสตร์นี้เรียกว่า Natuaral Language Processing NLP

และสุดท้ายศาสตร์ที่ว่าด้วยการทำให้คอมพิวเตอร์เข้าใจข้อมูลทางธุรกิจ เช่นใช้ในการแยกกลุ่มลูกค้า หรือทำนายว่าใครจะซื้อของ หรือใครจะไม่จ่ายบัตรเครดิต เราก็จะเรียกว่า Data Science ซึ่งเป็นงานที่ฮอตที่สุดขนาดนี้ เป็นที่ต้องการของตลาดมาก แต่หาคนทำยากมากในปัจจุบัน เพราะจะต้องมีความเข้าใจ Machine Learning รวมทั้งประสบการณ์การทำโมเดลทางธุรกิจ

Feature Extraction

เมื่อ ANN ปัจจุบันค่อนข้างที่จะเป็น standard แล้ว และเราสามารถที่จะหยิบ library มาใช้ได้เลย ผ่าน opensource tool ต่าง ๆ สิ่งที่จะยากที่สุดตอนนี้คือ เราจะป้อนข้อมูลยังไงเข้าไปในโครงข่าย เห็นจากตัวอย่างว่า input vector จะต้องเป็น อาเรย์ของตัวเลขเท่านั้น ของแต่ละชุดข้อมูล และจะต้องมีขนาดความยาวเท่ากันเสมอ และมีความสัมพันธ์ เกี่ยวเนื่องกัน

สำหรับงาน CV เราก็ต้อง scale รูปภาพให้มีขนาดเท่ากัน เป็นต้นว่า 300x400 กางออกมาเป็น vector ที่มีขนาด 12000 แล้วแต่ละตำแหน่งก็อาจจะแทนค่าด้วยความเข้มของ pixel หรือ intensity value ที่มีค่าตั้งแต่ 0–256 เป็นต้น ในตัวอย่างรูปภาพ p1 คือ pixel ที่หนึ่งที่อยู่ ซ้ายบน สุดของรูปภาพ

หากเป็น NLP ก็อาจจะเป็นจำนวนครั้งของคำศัพท์ที่เกิดขึ้นในประโยค เราไม่สามารถนำเอา ประโยคดิบ ๆ เข้าไปในโครงข่าย ANN ได้ทันที เพราะแต่ละประโยคจะมีความยาวไม่เท่ากัน หนึ่งในวิธีแปลงก็คือ เราจะสร้าง dictionary ขึ้นมาเล่มนึง ที่มีคำศัพท์ทุกคำศัพท์ในภาษาไทย สมมติว่ามีทั้งหมด 20,000 คำ (กก, กัน, กอด, …, เรา, รัก, …, นายก, … ฮูก) ถ้าเราจะแปลงประโยค “เรารักกัน” ก็จะได้ input vector เป็น [0, 1, 0, …, 1, 1, …, 0, …0] (มีคำว่า กัน ในประโยค ซึ่งตรงกับคำที่ 2 ใน dictionary) ถ้าเราจะแปลงประโยค “เรากอดกัน” ก็จะได้ input vector เป็น [0, 1, 1, …, 1, 0, …, 0, …0] (เดี๋ยวจะมี blog เขียนจากนักเรียนบอทน้อยเพิ่มเติม)

ในขณะที่ Data Science แต่ละตำแหน่งของ input vector ก็จะสัมพันธ์กับ feature ต่าง ๆ เช่น ตำแหน่งที่ 1 ของ vector อาจจะเป็น อายุ ตำแหน่งที่ 2 อาจจะเป็น รายได้ พวกข้อมูลที่ไม่ได้เป็นตัวเลข เช่น วันที่ชำระเงินเป็น วันที่อังคารที่ 21 เราอาจจะต้องแปลงเป็นว่า จำนวนวันที่เลยกำหนดการชำระแทน แล้วพวก feature ที่เป็น category อาทิ กลุ่มลูกค้าย่านสีลม ย่านสุขุมวิท ก็จะต้องแยก feature ออกเป็น binary ที่เรียกว่า dummy values

ในกระบวนการคิดสร้าง input vector หรือเรียกว่า input feature ส่วนตัวผมคิดว่าเป็นสิ่งที่ต้องอาศัยประสบการณ์ และเป็นสิ่งที่สำคัญที่สุดในการเป็น Data scientist ขณะนี้ ในขณะที่ส่วนอื่น ๆ เช่น ANN จะมีเครื่องไม้เครื่องมือที่สะดวกต่อการนำมาใช้ ผมได้อธิบายเรื่อง feature extraction ในบทความที่แล้วครับ (คลิกเพื่ออ่าน)

ก็หวังว่าจะพอเห็นภาพกว้าง ๆ นะครับ หากใครสนใจอยากจะเรียนรู้เพิ่มเติม ผมกำลังเปิดคลาสสอน AI สอน Data science สามารถ join group Botnoi Classroom และสอบถามเรื่องการเรียน

ส่วนหากใครสนใจใช้บริการ Botnoi ในสร้างแชทบอท หรือให้คำปรึกษาเกี่ยวกับ AI & data science ติดต่อได้ผ่านเวป -> Botnoi และ FB Page Botnoi Consulting นะครับ

--

--

Dr. Winn Voravuthikunchai
botnoi-classroom

obtained his PhD in AI from Caen University, France. He was Chief Data Scientist at Telenor. Currently, he is Founder & CEO of Botnoi Group, and LINE API Expert