โครงข่ายประสาทเทียมแบบเป็นชั้น
ในระบบงานทั่วไปจะเกี่ยวข้องกับตัวแปรมากกว่าหนึ่งตัวแปร
โครงข่ายประสาทเทียมแบบหลายหน่วยหลายอินพุต จะมีหลายสัญญาณเข้าและหลายสัญญาณออก ซึ่งทำให้สามารถนำไปประยุกต์ใช้กับระบบหลายตัวแปรได้
โครงข่ายประสาทเทียมแบบหลายอินพุตเอาต์พุต มีชื่อทั่วไปว่าโครงข่ายประสาทเทียมแบบเป็นชั้น (Layered perceptron) โครงข่ายประสาทเทียมหนึ่งชั้นแสดงดังภาพที่
3-27 และภาพที่ 3-28 ค่าต่างๆ สามารถคำนวณได้ดังสมการต่อไปนี้
และเอาต์พุตหาได้จาก
ภาพที่ 44 โครงข่ายประสาทเทียมหนึ่งชั้น
ภาพที่ 44 แสดงโครงข่ายประสาทเทียมแบบหนึ่งชั้นที่มีหลายอินพุตหลายเอาต์พุต
ในรูปเวกเตอร์-เมทริกซ์ ซึ่งทำให้ประหยัดการเขียนเมื่อ
เป็นอินพุตเวกเตอร์ขนาด
เป็นเมทริกซ์น้ำหนักขนาด
เป็นไบแอสเวกเตอร์ขนาด
เป็นเวกเตอร์ผลบวกระหว่าง
และ
เป็นเวกเตอร์ฟังก์ชันถ่ายโอน
และ
เป็นเวกเตอร์เอาต์พุต
ส่วน
เป็นค่า
สเกลาร์แสดงจำนวนอินพุต และ
เป็นค่าสเกลาร์แสดงจำนวนนิวรอน
ภาพที่ 45 โครงข่ายประสาทเทียมแบบชั้นในรูปแบบย่อ
[pn,ps] = mapminmax(p);
[tn,ts] = mapminmax(t);
%%
net=newff(pn,tn,[4 5 1],{'tansig' 'tansig' 'purelin'},'trainrp');
%%
net.trainParam.show = 10;
net.trainParam.epochs = 300;
net.trainParam.goal = 1e-5;
%% training
%net = newp(p,t);
net=train(net,pn,tn);
%% simulation
y1=sim(net,test);
y = mapminmax('reverse',y1,ts)
โดยที่
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)
Comments
Post a Comment