สำหรับผู้ที่สนใจที่จะเรียนรู้วิธีการสร้าง Deep Learning Model หรือ Artificial Neural Network, ใน Series นี้ผมไม่ได้จะสอนวิธีการสร้าง Model แต่อย่างใด แต่จะอธิบายหลักการทำงานและที่มาของมันแทน
โดยเริ่มจากคำว่า
Deep Learning
“Deep learning is the subfield of artificial intelligence that focuses on creating large neural network models that are capable of making accurate data-driven decisions.” — DEEP LEARNING by JOHN D. KELLEHER
Deep learning เป็นสาขาย่อยของปัญญาประดิษฐ์ ซึ่งมุ่งเน้นที่จะสร้าง แบบจำลองโครงข่ายประสาทเทียม ที่สามารถทำการตัดสินใจด้วยการขับเคลื่อนด้วยข้อมูลได้อย่างแม่นยำ
หลายๆคนก็คงรู้จักคำว่า Artificial Intelligence และ Machine Learning มาพอสมควร หรือไม่ ผมจะอธิบายไว้หน่อยๆละกัน
การที่ AI จะศึกษาหรือตัดสินใจอะไรได้ เราต้องมี Machine Learning Model(แบบจำลองทางคณิตศาสตร์สำหรับการเรียนรู้ของเครื่อง) และ ข้อมูลเพื่อที่จะให้ตัว Model เรียนรู้
ในคำว่า Model จะมีคำว่า Algorithm อยู่ซึ่งจะเป็นตัวบ่งบอกวิธีการเรียนรู้ และวิธีการทำนายของ Model
Deep Learning จะใช้ Algorithm ที่เรียกโดยรวมว่า Neural Network
ซึ่ง Neural Network ก็เป็นหนึ่งใน Machine Learning Algorithm
แต่พิเศษมากกว่า Algorithm ตัวอื่นๆ
ที่ Neural Network พิเศษกว่า Algorithm ตัวอื่นๆเพราะมันสามารถทำอย่างอื่นได้มากกว่า ไม่ว่าจะ จำแนกประเภท, ทำนายตัวเลขที่มีความต่อเนื่อง,
หรือ แบ่งกลุ่ม
และ ที่ Deep Learning ถูกแยกออกมาเป็นสาขาย่อยของ AI ก็เพราะมันสามารถนำมาประยุกต์ใช้ได้หลายอย่างมาก และ Algorithm ของ Deep Learning จะมีอยู่หลายชนิด รวมๆแล้ว คือ
Artificial Neural Network
หรือ ภาษาไทยจะเรียกว่า โครงข่ายประสาทเทียม
โดยที่โครงข่ายประสาทเทียมได้รับแรงบันดาลใจมาจาก Neuron(เซลล์ประสาท)ของเรานั่นเอง
ถ้าเราลองเปรียบเทียบการทำงาน ระหว่าง Neuron ในสมองเรา กับใน ANN
(แค่ 1 Node พอ)
โดยจะแยกเป็น 4 ส่วน
Synapse : Weight
ในทางชีววิทยา Synapse จะอยู่ใน Axon terminal มีหน้าที่ส่งกระแสประสาท จากเซลล์นึงไปอีกเซลล์นึง ซึ่งการส่งแต่ละครั้งจะมีแรงส่งที่แตกต่างกัน โดยที่จะขึ้นอยู่กับขนาดและความแข็งแรงของ Synapse ซึ่งจะเปลี่ยนแปลงตามประสบการณ์การเรียนรู้ (นี่คือทำไมเราถึงคอยเรียนรู้สิ่งใหม่ๆ),
ใน ANN จะเรียกว่าน้ำหนัก หรือ Weight นั่นเอง (เต็มๆ Synaptic Weight) จะคล้ายๆกับ Synapse ตรงที่ : Weight มาก = ความแข็งแรงของ Synapse มาก
Dendrites : Input
ส่วนนี้จะเป็นส่วนของการรับค่าเข้า ซึ่งในหลักชีววิทยา ส่วนนี้จะเป็นส่วนที่รับ กระแส จากเซลล์ก่อนหน้านี้เข้ามา ซึ่งแต่ละกระแสประสาทจะถูกถ่วงน้ำหนักมาแล้ว (จากแรงของ Synapse)
และใน ANN ส่วนนี้ก็ทำงานคล้ายกัน จะได้มาในรูปแบบ (Input * Weight) หรือ Input ที่ถูกหน่วงน้ำหนัก
Soma / Cell body : Node
ง่ายๆก็คือส่วนกลางของ Neuron นั่นเอง โดยในหลักชีววิทยาส่วนนี้จะเป็นส่วนที่รวบรวมค่าของ Signal ทั้งหมดและแปลสภาพเป็น Signal ใหม่เพื่อถ่ายทอดต่อไปยัง Neuron อื่นต่อไป
ใน ANN ก็เช่นกัน, จะมีการรวมรวม (Input * Weight) ทั้งหมด และแปลสภาพด้วย Activation Function เพื่อส่งต่อไปยัง Node ต่อไป
Axon : Output
ส่วนนี้ทำหน้าที่ส่ง Signal ไปยัง Neuron อื่นๆต่อไป ด้วย Synapse
และใน ANN ก็เช่นกันโดยเป็นส่วน Output นั่นเอง
พอ Node หลายๆ Node มาเรียงกันเป็น Layer แล้วนำหลายๆ Layer มาต่อกัน เป็น Network ก็จะได้ออกมาเป็น Neural Network
โดยจะแบ่งเป็น 3 ส่วน (Feed-Forward Neural Network)
Input Layer
“The input layer is the very beginning of the workflow for the artificial neural network.” — Technopedia
Input Layer เป็นจุดเริ่มต้นของขั้นตอนการทำงานสำหรับ Artificial Neural Network, จะทำหน้าที่ส่งข้อมูลไปยังแต่ละ Node ของ Layer ต่อไป,
โดยจำนวนของ Node ใน Input Layer จะขึ้นอยู่กับขนาดของข้อมูล
Hidden Layer
Hidden Layer เป็นส่วนที่ทำหน้าที่ส่งต่อข้อมูลไปยัง Output Layer,
โดยแต่ละครั้งที่ Training Data ผ่าน Layer นี้ไป แต่ละ Node จะค่อยๆปรับ Weight ให้เข้ากับ Data มากขึ้น
หรือถ้าอธิบายแบบเป็นทางการ, Hidden Layer จะคอยกักเก็บความซับซ้อนของ Layer อื่นๆ โดยการหาความสัมพันธ์ระหว่าง Feature ของ Data
Output Layer
Output Layer เป็นส่วนที่จะแสดงผล Output ให้เรานั่นเอง
ซึ่งจำนวน Node ใน Output Layer จะขึ้นอยู่กับจำนวน Class ใน Data ของเรา
อย่างเช่นจะสร้าง ANN เพื่อจำแนกหมากับแมว ก็ต้องมี Output Node 2 อัน
แต่ถ้าจะใช้กับ Regression ก็อาจมีแค่ 1 Node เท่านั้น เพราะ Predict แค่ตัวเลข
ทุก Node ใน แต่ละ Layer จะมี Activation Function เป็นของตัวเอง ถ้าจำได้ที่ผมเขียนไว้ข้างบน ว่าต้องแปลง Input ทุกอันด้วย Activation Function ก่อน ถึงจะส่งไปยัง Node ต่อไป
ผมขออธิบายสั้นๆนะครับ
Activation Function
กลับมาดูที่เซลล์ประสาทของเรา
เมื่อเซลล์ประสาทถูกกระตุ้นจะเกิดการตอบสนองด้วยการเปลี่ยนแปลงความต่างศักย์ขึ้น
Artificial Intelligence with Machine Learning ,รศ.ดร.ปริญญาสงวนสัตย์
มาดูตอนที่กระแสประสาทกำลังผ่าน Cell Body ไป ซึ่งกำลังอยู่ในช่วงแปลสภาพ หรือ Transform
จะมีสิ่งที่เรียกว่า Threshold ครับ ภาษาไทยเรียกว่า ขีดขั้นการเร้า
หรือมองเป็นประตูก็ได้ กระแสไหนที่สามารถผ่าน Threshold ไปได้ก็จะถูกส่งต่อไปยัง Neuron ต่อไป
แต่กระแสไหนที่ผ่าน Threshold ไปไม่ได้ ก็จะไม่มีการสื่อสารต่อไปยัง Neuron อื่น หลักการนี้เรียกว่า “All-or-None law”
จึงจำเป็นต้องมี Synapse เพื่อเพิ่มแรงกระตุ้นให้กระแสประสาทผ่าน Threshold ไปได้
ใน ANN, ส่วนที่มี Threshold หรือส่วนที่ทำหน้าที่ Transform Input ที่เข้ามา เพื่อส่งต่อไปยัง Neuron ต่อไป ก็คือ Activation Function นั่นเอง
และค่าที่ได้หลังจากผ่าน Activation Function ก็ขึ้นอยู่กับ Weight และ ประเภทของ Activation Function ด้วย
(Synapse : Weight) , (Transformation : Activation Function)
ผมขอนำภาพนี้มาใช้อีกรอบ
ถ้ามองเป็น Step by Step ผมจะขอ Declare ว่ามี 4 Step ละกัน
- รับ Input ที่ถูกถ่วงน้ำหนักมา (Weighted Input)
- นำ Weighted Input ทุกๆอันมารวมกัน (Sum of Weighted Input)
- นำค่าที่ได้จากการรวมไปเข้า Activation Function
- นำค่าที่ได้จาก Activation Function ส่งไปยัง Node ต่อไป
ผมนำ Activation Function มาให้ดู 3 ประเภท
Sigmoid Function
Function นี้จะให้ผลลัพท์อยู่ในช่วง 0 ถึง 1
ถึงจะดู Basic แต่ก็มีข้อเสีย หลักๆคือ Vanishing Gradient (ถ้าอธิบายคงยาว ไว้บทความอื่นนะครับ)
ReLU Function
หรือ Rectified Linear Units Function
Function นี้มักนิยมใช้กันเป็นส่วนใหญ่
ค่าที่ออกมาจะอยู่ในช่วง 0 ถึง Inf
แต่ก็มีข้อเสียเหมือนกัน อาจจะส่งผลให้เกิด Dead Neuronได้
NOTE : แต่ก็ไม่ใช่ว่า Functions ที่ผมเอามามันจะดีเสมอ, มี Activation Function อื่นๆอีกมากมายที่สามารถนำมาใช้แทนได้, ก็ขึ้นอยู่กับดวงว่าอันไหนใช้ดีอันไหนไม่น่าดีกับ Data ของเรา
Function ข้างต้น ส่วนใหญ่จะใช้กับ Input Layer และ Hidden Layers ค่าที่ได้ออกมา จะเป็นประเภท Logit
พอมาถึงส่วน Output Layer ถ้าแยกประเภทของ Model เป็น Classification กับ Regression ทั้งสองจะใช้ Activation Function ที่ต่างกัน
Softmax Function
Function นี้จะเปลี่ยนจากค่า Logit ที่ได้จาก Node ก่อนๆหน้ามาเป็นความน่าจะเป็น ซึ่งใช้กับ Classification หรือการจำแนกประเภท
- สมมติว่า เราจะจำแนกหมากับแมว , ใน Output Layer จะต้องมี Node ที่ใช้ Softmax Function อยู่ 2 อัน เพื่อที่จะหาความน่าจะเป็นว่า หมากี่ % : แมวกี่ %
Artificial Neural Network มีหลายประเภท
ที่ผมอธิบายไปข้างบน ชื่อว่า Feed-Forward Neural Network จะมี
Layer เพียง 3 ชนิดหลักๆเท่านั้น
นอกจากนี้ แต่ละประเภทของ ANN จะขึ้นอยู่กับ Architecture(โครงสร้าง) ของตัว Network
เวลาเราจะสร้าง Neural Network ขึ้นมา เราก็ควรคำนึงถึงความเข้ากัน
ระหว่าง Data และโครงสร้างของ Neural Network ด้วย เหมือนกับการเลือก Machine Learning Algorithm นั่นแหละครับ
เพิ่มเติม: ลองดูคลิปนี้ดูนะครับ
Applications
คราวนี้มาดูในส่วนของการใช้งาน
ผมนำ 2 สาขาใหญ่ๆของ Deep Learning มาให้ดูกับ
Computer Vision
หรือภาษาไทยเรียกว่า คอมพิวเตอร์วิทัศน์
ในสาขานี้จะใช้กับรูปภาพ และก็มี Techniques ที่แยกย่อยออกไป ไม่ว่าจะเป็น Object Detection, Image Classification, Object Segmentation, และอีกมากมาย
ไม่ว่าจะเป็นรูปภาพจาก MRI, X-ray generator หรือทางการแพทย์ก็ใช้ Technique จากสาขานี้ด้วยเช่นกัน
โดยการทำงานเกี่ยวกับรูปภาพ จะใช้ Convolutional Neural Network เป็นหลัก
Natural Language Processing
สาขานี้จะเกี่ยวกับ ตัวหนังสือ ตัวอักสอน หรือ ทำงานเกี่ยวกับ ‘คำ’
ยกตัวอย่างเช่น Text Classification and Categorization, Machine Translation, Speech Recognition, Spell Checking, และอื่นๆอีกมากมาย
ที่มีมาแล้วก็ Search Engine, Translate, Assistants, และที่เหลืออีกเยอะแยะ
โดยประเภทของ Network ที่ใช้กับสาขานี้ส่วนใหญ่จะใช้ Recurrent Neural Network, แต่ก็สามารถใช้ LSTM หรือ CNN ได้ด้วยเช่นกัน
(ภาษาไทยมี Libary ของภาษา Python ชื่อ PyThaiNLP)
จริงๆในส่วนของ Applications จะมีเยอะกว่านี้มาก
Deep Learning สามารถนำไปใช้ได้กับหลายสาขาเลย ไม่ว่า ทางการแพทย์, เกมส์(อย่างเช่น OpenAI Five), หุ่นยนต์ และอื่นๆ
ประเภทของ Neural Network ไม่ใช่ว่าจะมีโครงสร้างแบบที่เห็นในภาพเสมอไป
ขึ้นอยู่กับเป้าหมายของเรา เช่น ถ้าเราจะสร้าง Application แบบนี้ เราควรใช้ โครงสร้างแบบไหน และ ควรนำ Data แบบไหนมาสอน
เพิ่มเติม
อีกอย่างที่ทำให้ Deep Learning พิเศษกว่า Algorithm อื่นๆ,
บางทีเราไม่จำเป็นต้องสร้าง Neural Network ใหม่ตั้งแต่ต้น แต่เราจะนำModel ของที่อื่นที่ถูกสอนมาแล้ว มาสอนต่อแทน
ซึ่งเราเรียกหลักการนี้ว่า Transfer Learning
จะมีสถานที่ที่เรียกว่า Model Zoo ซึ่งเป็นที่เก็บ Pre-trained Model
บาง Model ก็ แม่น แต่ช้า, บ้างก็ ไม่แม่น แต่เร็ว, บ้างก็ สมดุลทั้งคู่ ทุกอันต่างให้ผลลัพท์ที่แตกต่างกัน
เราสามารถนำ Pre-Trained Model มาต่อยอด หรือ ใช้กับ Neural Network ของเราได้
ใครสนใจศึกษาเพิ่มในภาคปฏิบัติ ผมแนะนำให้เริ่มจาก Tensorflow 101 เลยครับ
หรือ ในภาคทฤษฎี คงต้องเป็นเรื่อง Artificial Neurons และ Activation functions แหละครับ และยังมี Loss function กับ Learning Function(ฟังก์ชั่นที่มีไว้เพื่อคอยปรับ Weight) อีก ลองไปค้นหาดูได้ครับ
- โฆษณา: บทความต่อจากนี้