โครงข่ายประสาทเทียมแบบเป็นชั้น


          ในระบบงานทั่วไปจะเกี่ยวข้องกับตัวแปรมากกว่าหนึ่งตัวแปร โครงข่ายประสาทเทียมแบบหลายหน่วยหลายอินพุต จะมีหลายสัญญาณเข้าและหลายสัญญาณออก ซึ่งทำให้สามารถนำไปประยุกต์ใช้กับระบบหลายตัวแปรได้ โครงข่ายประสาทเทียมแบบหลายอินพุตเอาต์พุต มีชื่อทั่วไปว่าโครงข่ายประสาทเทียมแบบเป็นชั้น (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

Popular Posts