Research

เทคนิคการเรียนรู้พื้นฐานโครงข่ายประสาทเทียม


อาจารย์อำภา สาระศิริ  
อาจารย์ประจำภาควิชาวิศวกรรมไฟฟ้ากำลัง ​ 
คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเทคโนโลยีมหานคร  
31 มกราคม 2559  

       โครงข่ายประสาทเทียม (Artificial Neuron Network : ANN) เป็นศาสตร์แขนงหนึ่งของทางด้านปัญญาประดิษฐ์ (Artifitial Intelligence : AI) มีรูปแบบโครงสร้างและการทำงานของการประมวลผลเหมือนกับสมองของสิ่งมีชีวิตซึ่งมีปรับเปลี่ยนตัวเองต่อการตอบสนองของอินพุตตามกฎของการเรียนรู้ (learning rule) หลังจากที่โครงข่ายได้เรียนรู้สิ่งที่ต้องการแล้ว โครงข่ายนั้นจะสามารถทำงานที่กำหนดไว้ได้โครงข่ายประสาทเทียมได้ถูกพัฒนาคิดค้นจากการทำงานของสมองมนุษย์โดยสมองมนุษย์ประกอบไปด้วยหน่วยประมวลผลเรียกว่า นิวรอน ( เซลล์ประสาท หรือ neuron) จำนวนนิวรอลในสมองมนุษย์มีอยู่ประมาณและมีการเชื่อมต่อกันอย่างมากมาย สมองมนุษย์จึงสามารถกล่าวได้ว่าเป็นคอมพิวเตอร์ที่มีการปรับตัวเอง (adaptive) ไม่เป็นเชิงเส้น (nonlinear) และทำงานแบบขนาน (parallel) ในการดูแลจัดการการทำงานร่วมกันของนิวรอนในสมอง การคำนวณเชิงนิวรอลเป็นการคำนวณที่เลียนแบบมาจากการทำงานของสมองมนุษย์นั่นเอง [1]

องค์ประกอบของโครงข่ายประสาทเทียม
       โครงข่ายประสาทเทียมได้ถูกพัฒนาขึ้นโดยอาศัยหลักการทำงานของสมองมนุษย์  ซึ่งสมองประกอบด้วยหน่วยประมวลผลพื้นฐานที่เรียกว่า นิวรอล (เซลล์ประสาท หรือ neuron) ภายในสมองประกอบด้วยนิวรอลจำนวนมหาศาล (ประมาณ 1011) และมีจุดต่อจำนวนโครงข่ายประสาทประกอบขึ้นด้วยส่วนสำคัญ 3 ส่วน คือ ใยประสาท (dendrite) ตัวเซลล์ (soma) และแกนประสาท (axon) ในแต่ละโครงข่ายประสาทจะเชื่อมต่อกันโดยจุดประสานประสาท (synapse) ซึ่งสามารถเปลี่ยนค่าความต้านทานได้ตามสัญญาณที่ส่งระหว่างกันของเซลล์ประสาท การส่งสัญญาณระหว่างเซลล์ประสาททำได้โดยการถ่ายเทสารประกอบโซเดียมและโพแทสเซียม ภาพร่างของประสาทแสดงในรูปที่

รูปที่ 1 โครงสร้างระบบประสาท

       การประมวลผลต่าง ๆ เกิดขึ้นในหน่วยประมวลผลย่อย เรียกว่า โหนด (node) ซึ่งโหนดเป็นการจำลองลักษณะการทำงานมาจากเซลล์การส่งสัญญาณ ระหว่างโหนดที่เชื่อมต่อกัน จำลองมาจากการเชื่อมต่อของใยประสาท และแกนประสาทในระบบประสาทของสมองมนุษย์ ภายในโหนด จะมีฟังก์ชันกำหนดสัญญาณส่งออกที่เรียกว่า ฟังก์ชันการแปลง (transfer function) ซึ่งทำหน้าที่เปรียบเสมือนกระบวนการทำงานในเซลล์  แสดงในรูปที่ 2 โครงข่ายประสาทเทียมประกอบด้วย 5 องค์ประกอบ ดังนี้
       1. ข้อมูลอินพุต (input) เป็นข้อมูลที่เป็นตัวเลข หากเป็นข้อมูลเชิงคุณภาพ ต้องแปลงให้อยู่ในรูปเชิงปริมาณที่โครงข่ายประสาทเทียมยอมรับได้
       2. ข้อมูลเอาต์พุต (output) คือ ผลลัพธ์ที่เกิดขึ้นจริง จากกระบวนการเรียนรู้ของโครงข่ายประสาทเทียม
       3. ค่าน้ำหนัก (weights) คือ สิ่งที่ได้จากการเรียนรู้ของโครงข่ายประสาทเทียม หรือเรียกอีกอย่างหนึ่งว่า ค่าความรู้ (knowledge) ค่านี้จะถูกเก็บเป็นทักษะเพื่อใช้ในการจดจำข้อมูลอื่น ๆ ที่อยู่ในรูปแบบเดียวกัน
       4. ฟังก์ชันผลรวม (Summation function: S) เป็นผลรวมของข้อมูลป้อนเข้า (pi) และค่าน้ำหนัก (wi)

(1)

       5. ฟังก์ชันการแปลง (transfer function) ฟังก์ชันการแปลง เป็นส่วนที่ทำหน้าที่รวมค่าเชิงตัวเลขจากเอาต์พุตของนิวรอล แล้วทำการตัดสินใจว่าจะส่งสัญญาณเอาต์พุตออกไปในรูปใด ฟังก์ชันการแปลงสามารถเป็นได้ทั้งแบบเชิงเส้นหรือไม่เป็นเชิงเส้น การเลือกใช้ฟังก์ชันการแปลงจะขึ้นอยู่กับลักษณะของระบบ ที่นำเอาโครงข่ายประสาทเทียมไปประยุกต์ใช้ ฟังก์ชันการแปลงมีอยู่หลายรูปแบบ แบบที่ใช้งานทั่วไปมีรายละเอียดตามตารางที่ 1

ตารางที่ 1 ฟังก์ชันการแปลงแบบต่างๆ

รูปที่ 2 กระบวนการประมวลผลของโครงข่ายประสาทเทียม

การเรียนรู้แบบมีผู้ฝึกสอน (learning with supervisor)
       การเรียนรู้แบบมีผู้ฝึกสอนในการเรียนรู้แบบมีผู้ฝึกสอนจะมีการนำเสนอกลุ่มข้อมูลตัวอย่าง (examples หรือ training set) ให้กับโครงข่ายในรูปของอินพุตพร้อมกับเป้าหมาย (target) ที่ต้องการให้โครงข่ายตอบสนอง พิจารณาคู่อินพุตและเป้าหมายดังนี้

{p1,t1},{p2,t2},...,{pQ,tQ} (2)

เมื่ออินพุตถูกป้อนให้กับระบบ เอาต์พุตของโครงข่ายจะถูกนำไปเปรียบเทียบกับเป้าหมายของอินพุต แล้วโครงข่ายจะทำการปรับค่าน้ำหนักประสาท และไบอัสตามกฎการเรียนรู้ เพื่อให้เอาต์พุตของโครงข่ายให้ค่าผลลัพธ์ใกล้เคียงเป้าหมายมากที่สุด แสดงขั้นตอนการเรียนรู้แบบมีผู้ฝึกสอนในรูปที่ 3

รูปที่ 3 ขั้นตอนการเรียนรู้แบบมีผู้ฝึกสอน

ตัวอย่างการใช้งาน Neuron Network Toolbox ในโปรแกรม  MATLAB
       การใช้งานโปรแกรม MATLAB ชุดคำสั่งในโปรแกรมคือ newff  ต้องประกอบด้วย 2 ส่วน คือ โปรแกรมฝึกสอน และโปรแกรมทดสอบ ใน MATLAB Neural Network Toolbox คำสั่งที่ใช้ในการสร้างเครือข่ายคือ net = newff ซึ่งจะทำการสร้างโครงข่ายป้อนแบบไปหน้า เมื่อทำการสร้างโครงข่ายด้วยคำสั่งข้างต้นแล้ว จะสามารถทดสอบเครือข่ายได้ด้วยคำสั่ง Y = sim(net,P) โดยที่ตัวแปร net เป็นตัวแปรที่ได้จากการสร้างเครือข่ายด้วยคำสั่ง newff ตัวแปร P เป็นอินพุตที่ต้องการทดสอบ และตัวแปร Y เป็นเอาต์พุตจากโครงข่าย ในการฝึกสอนโครงข่ายนั้นจะใช้คำสั่ง net = train(net,P,T) โดยที่ตัวแปร P คือ อินพุต และ T คือ เป้าหมายที่ต้องการให้โครงข่ายเรียนรู้ โดยปกติแล้ว ตัวแปร net ซึ่งเป็นตัวแปรโครงสร้างที่เก็บรายละเอียดของเครือข่ายไว้ จะมีพารามิเตอร์ภายในที่สามารถใช้ปรับแต่งการฝึกสอนตามต้องการได้ แสดงรายละเอียดการเขียนโปรแกรมได้ดังตารางที่ 2 และแสดงการทำงานของโปรแกรม MATLAB Neural Network Toolbox ดังรูปที่ 4 ส่วนรูปที่ 5 แสดงผลการทดสอบโปรแกรมเปรียบเทียบค่าที่ได้จากโครงข่ายประสาทเทียมและจากเป้าหมาย

ตารางที่ 2 การเขียนโปรแกรม MATLAB

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

รูปที่ 4 โปรแกรมการทำงานของ Neuron Network Toolbox

รูปที่ 5 ผลการจำลองค่าเป้าหมายเทียบกับโครงข่ายประสาทเทียม

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

เอกสารอ้างอิง
[1] อาทิตย์ ศรีแก้ว. (2552). ปัญญาเชิงคำนวณ. เอกสารประกอบการสอน สาขาวิชาวิศวกรรมไฟฟ้า มหาวิทยาลัยเทคโนโลยีสุรนารี.
[2] G.W. Irwin, K. Warwick and K. J. Hunt (1995). Neural Network Applications in Control. Short Run Press Ltd., England.
[3]  ปัญญา หันตุลา (2556) โครงสร้างเครือข่ายประสาทเทียม (Neural Network). แหล่งที่มา : http://panya-electronicelab.blogspot.com/2013/09/neural-network.html

<< ย้อนกลับ