วันพฤหัสบดีที่ 12 กันยายน พ.ศ. 2556

โครงสร้างเครือข่ายประสาทเทียม (Neural Network)

                 โครงข่ายเครือข่ายประสาทเทียม ( Artificial Neural Network) คือ โมเดลทางคณิตศาสตร์หรือโมเดลทางคอมพิวเตอร์ที่มีลักษณะโครงสร้างและการทำงานคล้ายกับสมองของมนุษย์ โดยการประมวลผลจากการคำนวณแบบคอนเนคชันนิสต์ (Connection) แนวคิดเริ่มต้นของเทคนิคนี้ได้มาจากการศึกษาโครงข่ายไฟฟ้าชีวภาพ (Bio Electric Network) ในสมองของมนุษย์ ซึ่งประกอบด้วย เซลล์ประสาท (Neurons) และ จุดประสานประสาท (Synapses) ตามโมเดลนี้ ข่ายงานประสาทเกิดจากการเชื่อมต่อระหว่างเซลล์ประสาท จนเป็นเครือข่ายที่ทำงานร่วมกัน

Cr. [http://th.wikipedia.org]

                  โดยทั่วไปแล้วโครงสร้างเครือข่ายประสาทเทียมจะมีความสามารถในการเรียนรู้ข้อมูลต่างๆ ที่ป้อนให้กับระบบการเรียนรู้ ( Learning ) ซึ่งเป็นคุณลักษณะที่สำคัญของเครือข่ายประสาทเทียม ตัวเครือข่ายจะถูกฝึกสอนโดยการแสดงรูปแบบ (Pattern) ต่างๆ ที่ต้องการให้เครือยข่ายเรียนรู้ด้วยกฏการเรียนรู้ (Learning Rule) ซึ่งความสามารถนี้ทำให้เครือข่ายประสาทเทียมมีความแตกต่างไปจากโปรแกรมคอมพิวเตอร์ทั่วๆ ไป
                  เครือยข่ายประสาทเทียมจะทำการเก็บข้อมูลความรู้ (Knowledge) ในขั้นตอนการเรียนรู้ โดยการเก็บไว้ที่น้ำหนักประสาท (Synaptic Weights) ซึ่งโครงสร้างของตัวเซลล์ประสาท (Neurons) ในเครือข่ายประสาทเทียมนั้นมีรูปแบบมากมายหลายชนิด โครงสร้างดังกล่าวเป็นองค์ประกอบที่สำคัญของการเรียนรู้ของเครือข่ายที่ทำให้เกิดการปรับเปลี่ยนค่าน้ำหนักหระสาทที่แตกต่างกันออกไป ไม่ว่าจะเป็นจำนวนของเซลล์ประสาท กฏการเรียนรู้ เป็นต้น  

Cr.  [อาทิตย์ ศรีแก้ว , “หนังสือ ปัญญาเชิงคำนวณ พิมพ์ครั้งที่ 1สาขาวิศวกรรมไฟฟ้า วิศวกรรมศาสตร์ มหาวิทยาลัยเทคโนโลยีสุรนารี]


                 เครือข่ายประสาทเทียมมีการนำมาประยุกต์ใช้งานหลากหลายรูปแบบ รูปแบบหนึ่งที่ถูกนำมาประยุกต์ใช้งานกันอย่างแพร่หลาย คือ การสร้างแบบจำลองจากข้อมูล Input และ Output ตัวอย่างเช่น หากมีระบบควบคุมการให้น้ำสำหรับปลูกพืชในโรงเรือนโดยอัตโนมัติ และการให้น้ำแต่ละครั้งจะขึ้นอยู่กับ อุณหภูมิ ความชื้น ปริมาณความเข้มแสง อายุของพืชที่ปลุก เพื่อที่จะกำหนดปริมาณของน้ำที่จะให้กับพืช จากตัวอย่างที่ได้กล่าวมาแล้วนั้นจะเห็นได้ว่าตัวแปรทั้งหมดมีอยู่ 5 ตัวแปร แบ่งเป็นข้อมูล Input 4 ตัวแปร และ Output 1 ตัวแปร ซึ่งโดยทั่วไปแล้วจะสร้างแบบจำลองทางคณิตศาสตร์ของระบบควบคุมนี้ เพื่อให้ได้ปริมาณของน้ำที่ถูกต้องและเหมาะสม ซึ่งการสร้างแบบจำลองทางคณิตศาสตร์นี้เป็นเรื่องที่ยุ่งยากและซับซ้อนอย่างยิ่ง 
                  ดังนั้นจึงมีการประยุกต์ใช้งานเครือยข่ายประสาทเทียมสำหรับการสร้างแบบจำลองนี้ขึ้น เพื่อลดขั้นตอนทางคณิตศาสตร์ ลดความซับซ้อนของแบบจำลอง เป็นต้น การประยุกต์ใช้งานเครือข่ายประสาทเทียมสามารถอธิบายโครงสร้างอย่างคราว ๆ ได้ดังรูป 
                


                 ในบทความนี้จะนำเสนอการเริ่มต้นการใช้งานของเครือข่ายประสาทเทียม โดยจะยกตัวอย่างการประมาณค่า sine โดยจะสมมุติว่าเราไม่รู้สมการ sine แต่รู้ค่าที่เป็น Input และ Output ของสมการ ดังนั้นเราจะประยกต์ใช้งานเครือข่ายประสาทเทียมเพื่อประมาณค่าของสมการ เครือข่ายประสาทเทียมมีโครงสร้างแบบหลายชั้น (Mulit - Layer Neural Network) และใช้กฏการเรียนรู้แบบแพร่กลับ (Back-propagation) และเขียนโปรแกรมการจำลองจากโรปแกรม Matlab และใช้ Neural Network Toolbox ที่อยู่ในโปรแกรม Matlab
                    จากรูป กราฟ sine ที่แสดงนี้จะเป็น output ของเครือขายประสาทเทียม โดยที่เครือข่ายระสาทเทียมมีโครงสร้างและคำสั่งดังนี้


net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF)

PR
R x 2 matrix of min and max values for R input elements

Si
Size of ith layer, for Nl layers

TFi
Transfer function of ith layer (default = 'tansig')

BTF
Backpropagation network training function (default = 'trainlm')

BLF
Backpropagation weight/bias learning function (default = 'learngdm')

PF

Performance function (default = 'mse')


ตัวอย่างโปรแกรม

Code for Matlab.

1.     P = 0:0.01:22.5;
2.     T = sin(P);

3.     net = newff([0 22.5],[5 10 1],{'tansig' 'tansig' 'purelin'});

4.     net.trainParam.epochs = 500;
5.     net.trainParam.goal = 0.001;
6.     net = train(net,P,T);
7.     Y = sim(net,P);
8.     plot(P,T,P,Y,'r')


โครงสร้างของเครือข่ายประสาทเทียม 

ตัวแปร P จะมีค่าตั้งแต่ 0-22.5 โดยแต่ละค่ามีแตกต่างกัน 0.01 ซึ่งจะกำหนดเป็น Input
T เป็นค่าที่ได้จาก Function Sine ซึ่งจะกำหนดให้เป็น Output
- ตัวแปร net คือ แบบจำลองเครือข่ายประสาทเทียม 
- จำนวน Layer = 3 Layer 
- ค่าสูงสุด 22.5 , ค่าต่ำสุด 0
- จำนวน Node ของแต่ละ Layer   5  10  1
  ** หมายเหตุ จำนวน Node ของ Output จำเป็นต้องมีค่าเท่ากับ Output
- Transfer Function ของแต่ละ Layer   tansig  tansig  purelin
- จำนวนรอบการคำนวน (Epochs) = 500 รอบ
- ค่า MSE ที่ต้องการให้มีค่าต่ำที่สุด = 0.001
- ตัวแปร Y เป็นค่า Output ที่ได้จาก เครือข่ายประสาทเทียม 

          ผลการสร้างแบบจำลองและประมาณค่าที่ได้จากเครือข่ายประสาทเทียมเมื่อนำมาเปรียบเทียบกับข้อมูลที่เป็น Output จาก Function Sine ได้ผลการทดสอบดังรูป
              จากรูปกราฟเส้นสีน้ำเงินคือค่าที่ได้จาก Function Sine และเส้นสีแดงค่าค่าที่ได้จาก Neural Network จากกราฟจะเห็นได้ว่า ค่าที่ได้จาก Neural Network มีความใกล้เคียงกับค่าที่ใช้ในการฝึกสอน (ค่าที่ได้จาก Function Sine) แต่ก็ยังเกิดค่าที่ผิดพลาดเมื่อมี Amplitude เข้าใกล้ 1 และ -1 อันเนื่องจากการกระบวนการฝึกสอนและโครงสร้างของ Neural Network ซึ่งถ้าเป็นระบบที่มีขนาดของแบบจำลองที่ใหญ่ จำเป็นจะต้องพิจารณาพารามิเตอร์ต่าง ๆ เพื่อให้เกิดความเหมาะสมด้วย

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








1 ความคิดเห็น: