โครง ข่าย ประสาทเทียม (Artificial neural network) : โครงข่ายประสาทเทียม กับ Matlab
โครงข่ายประสาทเทียม กับ Matlab
หรือ ที่ มัก จะ เรียกสั้น ๆ ว่า โครงข่าย งาน ประสาท (Neural Network) คือ โมเดล ทาง คณิตศาสตร์
สำหรับ ประมวล ผล สารสนเทศ ด้วย การคำนวณ แบบ คอนเนคชันนิสต์ (connectionist)
เพื่อ จำลอง การ ทำงาน ของ เครือข่าย ประสาท ใน สมองมนุษย์ ด้วย วัตถุประสงค์
ที่ จะ สร้าง เครื่องมือ ซึ่ง มี ความสามารถ ใน การเรียนรู้ การจดจำแบบรูป และ การทำนายอนาคต
เช่น เดียว กับ ความสามารถ ที่ มี ใน สมองมนุษย์ แนวคิด เริ่มต้น ของ เทคนิค นี้
ได้ มา จาก การ ศึกษา ข่ายงาน
ไฟฟ้าชีวภาพ (bioelectric network) ใน สมอง : โครงข่ายประสาทเทียม กับ Matlab
ซึ่ง ประกอบ ด้วย เซลล์ ประสาท หรือ “นิวรอน” (neurons) และ จุด ประสาน ประสาท (synapses)
แต่ ละ เซลล์ ประสาท ประกอบ ด้วย ปลาย ใน การ รับ กระแส ประสาท เรียกว่า “เดนไดรท์” (Dendrite)
ซึ่ง เป็น input และ ปลาย ใน การ ส่ง กระแส ประสาท เรียกว่า “แอคซอน” (Axon) ซึ่ง เป็น
เหมือน output ของ เซลล์ เซลล์ เหล่า นี้ ทำงาน ด้วย ปฏิกิริยา ไฟฟ้า เคมี
เมื่อ มี การ กระตุ้น ด้วย สิ่งเร้า ภายนอก หรือ กระตุ้น ด้วย เซลล์ ด้วยกัน
กระแส ประสาท จะ วิ่งผ่าน เดนไดรท์ เข้าสู่ นิวเคลียส ซึ่งจะ เป็น ตัว ตัดสิน ว่า ต้อง กระตุ้น เซลล์ อื่น ๆ
ต่อ หรือ ไม่ ถ้า กระแส ประสาท แรงพอ นิวเคลียส ก็ จะ กระตุ้น เซลล์อื่นๆ
ต่อ ไป ผ่าน ทาง แอคซอน ของ มัน ตาม โมเดล นี้ ข่ายงาน ประสาท เกิด จาก การ
เชื่อมต่อ ระหว่าง เซลล์ ประสาท จน เป็น เครือข่าย ที่ ทำงาน ร่วมกัน
โครงข่ายประสาทเทียม กับ Matlab
โครง ข่าย ประสาทเทียม (Artificial neural network) : โครงข่ายประสาทเทียม กับ Matlab
– โครงสร้าง
จาก ลักษณะ และ การ ทำงาน ของ เซลล์ประสาท หรือ นิวรอน ดัง ที่ กล่าว มา ข้างต้น ได้ ถูกนำ
มา สร้าง ทฤษฏี ทาง คณิตศาสตร์ และ จำลอง การ ทำงาน ใน รูปแบบ พื้นฐาน โดย ใช้ ชื่อ ว่า
โครงข่าย ประสาทเทียม โครงข่าย ประสาทเทียม แบบง่าย จะ มี ค่า อินพุต เป็น สเกลาร์ หนึ่ง อินพุต
โดย ไม่มี ค่า เอนเอียง หรือ ไบแอส (Bias) โดย ค่า อินพุตสเกลาร์ ถูกป้อน เข้า ผ่าน จุด ต่อ และ
คูณกับค่าความแข็งแรง (strength) ซึ่งเป็นค่าน้ำหนักสเกลาร์ (scalar weight: ) และได้ผลคูณเป็นค่าสเกลาร์ กลายเป็นค่าอินพุตที่ถูกจัดน้ำหนัก (weighted input: ) ส่งต่อไปยังฟังก์ชันถ่ายโอน (transfer function: ) ซึ่งเกิดเป็นค่าเอาต์พุต สเกลาร์ (scalar output: ) ดังแสดงรูปที่ 3.16 ซึ่งสามารถคำนวณค่าเอาต์พุต a ได้จากสมการ
สำหรับรูปข้างบน แสดงโครงข่ายประสาทเทียมแบบง่ายที่มีค่าอินพุตเป็นสเกลาร์หนึ่งอินพุต และมีค่าเอนเอียง ซึ่งมีอินพุตเป็น 1 โดยค่าสเกลาร์เอาต์พุตสามารถคำนวณได้จากสมการ
ในที่นี้ เป็นฟังก์ชันถ่ายโอน ตัวอย่างเช่น ฟังก์ชันขั้นบันได และฟังก์ชันซิกมอยด์ เป็นต้น ทำหน้าที่รับค่าอินพุต เพื่อเปลี่ยนเป็นค่าเอาต์พุต สำหรับค่าน้ำหนัก และค่าไบแอส เป็นค่าพารามิเตอร์ของโครงข่ายประสาทเทียมที่สามารถปรับได้ จุดศูนย์กลางแนวคิดเกี่ยวกับโครงข่ายประสาทเทียมก็คือค่าพารามิเตอร์ และ สามารถปรับเปลี่ยนได้เพื่อให้โครงข่ายประสาทเทียม แสดงพฤติกรรมตามที่เราต้องการยกตัวอย่างเช่น การจดจำสิ่งที่เคยเรียนรู้มาก่อน ดังนั้นเราสามารถสอนโครงข่ายประสาทเทียมเพื่อให้ทำงานที่เราต้องการโดยการปรับแต่งค่าพารามิเตอร์น้ำหนัก และไอแอสของโครงข่ายประสาทเทียม หรือบางทีโครงข่ายประสาทเทียมจะปรับพารามิเตอร์เพื่อให้ได้สิ่งคาดหวังด้วยตัวเองอย่างอัตโนมัติ
การเรียนรู้สำหรับ Neural Network : โครงข่ายประสาทเทียม กับ Matlab
– Supervised Learning การเรียนแบบมีการสอนเป็นการเรียนแบบที่มีการตรวจคำตอบเพื่อให้วงจรข่ายปรับตัว ชุดข้อมูลที่ใช้สอนวงจรข่ายจะมีคำตอบไว้คอยตรวจดูว่าวงจรข่ายให้คำตอบที่ถูกหรือไม่ ถ้าตอบไม่ถูก วงจรข่ายก็จะปรับตัวเองเพื่อให้ได้คำตอบที่ดีขึ้น (เปรียบเทียบกับคน เหมือนกับการสอนนักเรียนโดยมีครูผู้สอนคอยแนะนำ)
– Unsupervised Learning การเรียนแบบไม่มีการสอนเป็นการเรียนแบบไม่มีผู้แนะนำ ไม่มีการตรวจคำตอบว่าถูกหรือผิด วงจรข่ายจะจัดเรียงโครงสร้างด้วยตัวเองตามลักษณะของข้อมูล ผลลัพธ์ที่ได้ วงจรข่ายจะสามารถจัดหมวดหมู่ของข้อมูลได้ (เปรียบเทียบกับคนเช่น การที่เราสามารถแยกแยะพันธุ์พืช พันธุ์สัตว์ตามลักษณะรูปร่างของมันได้เองโดยไม่มีใครสอน)
– สถาปัตยกรรม
บางครั้งพิจารณาจำนวนของเลเยอร์ เพื่อเป็นส่วนหนึ่งของ สถาปัตยกรรม ส่วนการพิจารณาอื่นจะพิจารณาถึงจำนวนเลเยอร์ และโหนดในแต่ละเลเยอร์เพื่อเป็นคุณสมบัติของ Network แทนที่จะเป็นส่วนหนึ่งของสถาปัตยกรรม ซึ่ง Neurons processing elementประกอบด้วย
– Input connection มี input value ซึ่งรับจากทั้ง neuron ก่อนหน้านี้ หรือ ในกรณีที่เป็น input layer จากภายนอก
– Bias ไม่เชื่อมต่อไปยัง neuron อื่น ใน network และถูกสมมุติให้มี input value เป็น 1 สำหรับ การรวมผล
– Weight เป็นตัวเลขที่แสดงความสำคัญของ input เชื่อมต่อไปยัง neuron แต่ละ neuron input ประกอบด้วย bias และมีการรวม weight
– State function รูปแบบทั่วๆไปเป็นงานสำหรับรวมผล summation function ผลลัพธ์ของ state function กลายเป็น input สำหรับ transfer function
– Transfer function Nonlinear mathematic function ใช้ในการเปลี่ยนข้อมูลเป็น specific scale มี 2 รูปแบบพื้นฐานของ Transfer function คือ continuous และ discrete โดยทั่วไป Ramp, Sigmoid, Arc Tangent และ Hyperbolic Tangent ใช้ continuous function และ continuous function บางครั้งเรียกว่า squashing function โดยทั่วไป Step และ Threshold ใช้ discrete function และ discrete Transfer function บางครั้งเรียกว่า activation function
– Training
เป็นกระบวนการใช้ตัวอย่างเพื่อพัฒนา neural network ที่รวมรูปแบบของ input ด้วยคำตอบที่ถูกต้อง กลุ่มของตัวอย่างที่มี output ที่รู้จักถูกส่งไปยัง network ซ้ำๆกันเพื่อ train ระบบ network กระบวนการ training จะเป็นไปอย่างต่อเนื่องจนกระทั่งความแตกต่างระหว่าง input และ output pattern สำหรับ training set ได้ค่าที่ยอมรับ มีการใช้วิธีการหลายๆอัน สำหรับ training network ที่รู้จักกันทั่วไปคือ Back-propagation ซึ่ง Back-propagation จะทำงานสำเร็จภายใน 2 ขั้นตอน เริ่มแรก input ถูกส่งไปข้างหน้าผ่าน network เพื่อผลิต output ต่อจากนั้นความแตกต่างระหว่างเอาพุตจริงๆ กับเอาพุตที่ต้องการจะสร้างสัญญาณผิดพลาด ซึ่งส่งค่ากลับ ผ่านเครือข่ายเพื่อปรับปรุง ค่าน้ำหนักของอินพุต
– โครงข่ายประสาทเทียมแบบเป็นชั้น
ในระบบงานทั่วไปจะเกี่ยวข้องกับตัวแปรมากกว่าหนึ่งตัวแปร โครงข่ายประสาทเทียมแบบหลายหน่วยหลายอินพุต จะมีหลายสัญญาณเข้าและหลายสัญญาณออก ซึ่งทำให้สามารถนำไปประยุกต์ใช้กับระบบหลายตัวแปรได้ โครงข่ายประสาทเทียมแบบหลายอินพุตเอาต์พุต มีชื่อทั่วไปว่าโครงข่ายประสาทเทียมแบบเป็นชั้น (Layered perceptron) โครงข่ายประสาทเทียมหนึ่งชั้นแสดงดังภาพที่ 3–27 และภาพที่ 3–28 ค่าต่างๆ สามารถคำนวณได้ดังสมการต่อไปนี้
และเอาต์พุตหาได้จาก
ภาพข้างบนแสดงโครงข่ายประสาทเทียมแบบหนึ่งชั้นที่มีหลายอินพุตหลายเอาต์พุต ในรูปเวกเตอร์-เมทริกซ์ ซึ่งทำให้ประหยัดการเขียนเมื่อ เป็นอินพุตเวกเตอร์ขนาด เป็นเมทริกซ์น้ำหนักขนาด เป็นไบแอสเวกเตอร์ขนาด เป็นเวกเตอร์ผลบวกระหว่าง และ เป็นเวกเตอร์ฟังก์ชันถ่ายโอน และ เป็นเวกเตอร์เอาต์พุต ส่วน เป็นค่า สเกลาร์แสดงจำนวนอินพุต และ เป็นค่าสเกลาร์แสดงจำนวนนิวรอน
โดยที่ w คือ feature vector ซึ่งจะต้องเอามาคูณกับ transfer function
b คือ ไบอัสที่ได้จากค่า error ที่หาได้จาก RME ซึ่งไบอัสเอามาบวกเข้ากับ w.p
ขั้นตอนการทำเขียนโปรแกรม NN
1. ทำการ normalization ให้กับทั้งข้อมูลทดสอบ และข้อมูลการสอน โดยการใช้คำสั่ง mapminmax ที่ต้องทำ normalization ก่อนเพราะต้องทำให้ค่าอยู่ในช่วง 0–1 ก่อนเพื่อไม่ให้ค่าในกระโดดมาก
[pn,ps] = mapminmax(p);
[tn,ts] = mapminmax(t);
%%
2. สร้างโครงข่ายประสาทเทียมเป็นแบบ back-propagation ซึ่ง 4 หมายถึงจำนวนนิวรอนของ input layer, 5 หมายถึงจำนวนนิวรอนของ hidden layer และ 1 หมายถึง output layer และกำหนด transfer function ให้กับทั้ง 3 layer ซึ่ง ‘tansig’เป็น transfer function ของ input layer ‘tansig’เป็น transfer function ของ hidden layer ‘purelin’ เป็น transfer function ของ output layer และ ‘trainrp’เป็น transfer function ของชุดข้อมูลการสอน
net=newff(pn,tn,[4 5 1],{‘tansig’ ‘tansig’ ‘purelin’},’trainrp’);
3. กำหนดพารามิเตอร์การสอน
%%
net.trainParam.show = 10;
net.trainParam.epochs = 300;
net.trainParam.goal = 1e-5;
4. ทำการสอนโดยใช้คำสั่ง train
net=train(net,pn,tn);
5. ทำการรันโครงข่ายประสาทเทียม โดยใช้คำสั่ง sim
%% simulation
y1=sim(net,test);
6. ทำการ reverse ค่ากลับให้เป็นค่าปรกติ
y = mapminmax(‘reverse’,y1,ts)
หมาย เหตุท้าย : รับสอน Python
หาก คุณชอบ บทความ นี้ อย่าลืม คลิก❤ ด้าน ล่าง เพื่อ แนะนำ และ ถ้าคุณมีคำถามใด ๆ
แสดงความคิดเห็นและฉันจะพยายามอย่างดีที่สุดที่จะตอบ คุณสามารถติดตามฉันบน facebook page (https://www.facebook.com/nextsoftwarehousethailand/) และสามารถส่งอีเมลถึงฉัน
ขอให้ทุกคนมีวันที่ดี 🙂