โครงข่ายประสาทเทียม (Artificial Neural Networks) หรือที่มักจะเรียกสั้น ๆ ว่า โครงข่ายประสาท (Neural Networks หรือ Neural Net) เป็นหนึ่งในเทคนิคของการทำเหมืองข้อมูล (Data Mining) คือโมเดลทางคณิตศาสตร์ สำหรับประมวลผลสารสนเทศด้วยการคำนวณแบบคอนเนคชันนิสต์ (Connectionist) เพื่อจำลองการทำงานของเครือข่ายประสาทในสมองมนุษย์ ด้วยวัตถุประสงค์ที่จะสร้างเครื่องมือซึ่งมีความสามารถในการเรียนรู้การจดจำรูปแบบ(Pattern Recognition) และการสร้างความรู้ใหม่ (Knowledge Extraction) เช่นเดียวกับความสามารถที่มีในสมองมนุษย์ แนวคิดเริ่มต้นของเทคนิคนี้ได้มาจากการศึกษาโครงข่ายไฟฟ้าชีวภาพ (Bioelectric Network) ในสมอง ซึ่งประกอบด้วย เซลล์ประสาท หรือ "นิวรอน" (Neurons) และ "จุดประสานประสาท" (Synapses) แต่ละเซลล์ประสาทประกอบด้วยปลายในการรับกระแสประสาท เรียกว่า "เดนไดรท์" (Dendrite) ซึ่งเป็น input และปลายในการส่งกระแสประสาทเรียกว่า "แอคซอน" (Axon) ซึ่งเป็นเหมือน output ของเซลล์ เซลล์เหล่านี้ทำงานด้วยปฏิกิริยาไฟฟ้าเคมี เมื่อมีการกระตุ้นด้วยสิ่งเร้าภายนอกหรือกระตุ้นด้วยเซลล์ด้วยกัน กระแสประสาทจะวิ่งผ่านเดนไดรท์เข้าสู่นิวเคลียสซึ่งจะเป็นตัวตัดสินว่าต้องกระตุ้นเซลล์อื่น ๆ ต่อหรือไม่ ถ้ากระแสประสาทแรงพอ นิวเคลียสก็จะกระตุ้นเซลล์อื่น ๆ ต่อไปผ่านทางแอคซอนของมัน
นักวิจัยส่วนใหญ่ในปัจจุบันเห็นตรงกันว่าโครงข่ายประสาทเทียมมีโครงสร้างแตกต่างจากโครงข่ายในสมอง แต่ก็ยังเหมือนสมอง ในแง่ที่ว่าโครงข่ายประสาทเทียม คือการรวมกลุ่มแบบขนานของหน่วยประมวลผลย่อย ๆ และการเชื่อมต่อนี้เป็นส่วนสำคัญที่ทำให้เกิดสติปัญญาของโครงข่าย เมื่อพิจารณาขนาดแล้วสมองมีขนาดใหญ่กว่าโครงข่ายประสาทเทียมอย่างมาก รวมทั้งเซลล์ประสาทยังมีความซับซ้อนกว่าหน่วยย่อยของโครงข่าย อย่างไรก็ดีหน้าที่สำคัญของสมอง เช่น การเรียนรู้ยังคงสามารถถูกจำลองขึ้นอย่างง่ายด้วยโครงข่ายประสาทนี้
หลักการ
สำหรับในคอมพิวเตอร์ Neurons ประกอบด้วย input และ output เหมือนกัน
โดยจำลองให้ input แต่ละอันมี weight เป็นตัวกำหนดน้ำหนักของ input
โดย neuron แต่ละหน่วยจะมีค่า threshold เป็นตัวกำหนดว่าน้ำหนักรวมของ
input ต้องมากขนาดไหนจึงจะสามารถส่ง output ไปยัง neurons ตัวอื่นได้
เมื่อนำ neuron
แต่ละหน่วยมาต่อกันให้ทำงานร่วมกันการทำงานนี้ในทางตรรกแล้วก็จะเหมือนกับปฏิกิริยาเคมีที่เกิดในสมอง
เพียงแต่ในคอมพิวเตอร์ทุกอย่างเป็นตัวเลขเท่านั้นเอง
การทำงาน
การทำงานของ Neural Networks คือเมื่อมี input เข้ามายัง network
ก็เอา input มาคูณกับ weight ของแต่ละขา ผลที่ได้จาก input ทุก ๆ
ขาของ neuron จะเอามารวมกันแล้วก็เอามาเทียบกับ threshold ที่กำหนดไว้
ถ้าผลรวมมีค่ามากกว่า threshold แล้ว neuron ก็จะส่ง output ออกไป
output นี้ก็จะถูกส่งไปยัง input ของ neuron อื่น ๆ ที่เชื่อมกันใน
network ถ้าค่าน้อยกว่า threshold ก็จะไม่เกิด output
สิ่งสำคัญคือเราต้องทราบค่า weight และ threshold
สำหรับสิ่งที่เราต้องการเพื่อให้คอมพิวเตอร์รู้จำ
ซึ่งเป็นค่าที่ไม่แน่นอน
แต่สามารถกำหนดให้คอมพิวเตอร์ปรับค่าเหล่านั้นได้โดยการสอนให้มันรู้จัก
pattern ของสิ่งที่เราต้องการให้มันรู้จำ เรียกว่า "back propagation"
ซึ่งเป็นกระบวนการย้อนกลับของการรู้จำ ในการฝึก feed-forward Neural
Networks จะมีการใช้อัลกอริทึมแบบ back-propagation
เพื่อใช้ในการปรับปรุงน้ำหนักคะแนนของเครือข่าย (Network Weight)
หลังจากใส่รูปแบบข้อมูลสำหรับฝึกให้แก่เครือข่ายในแต่ละครั้งแล้ว
ค่าที่ได้รับ (output)
จากเครือข่ายจะถูกนำไปเปรียบเทียบกับผลที่คาดหวัง
แล้วทำการคำนวณหาค่าความผิดพลาด
ซึ่งค่าความผิดพลาดนี้จะถูกส่งกลับเข้าสู่เครือข่ายเพื่อใช้แก้ไขค่าน้ำหนักคะแนนต่อไป
การเรียนรู้สำหรับ Neural
Networks
1. Supervised Learning การเรียนแบบมีการสอน
เป็นการเรียนแบบที่มีการตรวจคำตอบเพื่อให้โครงข่ายประสาทเทียมปรับตัว
ชุดข้อมูลที่ใช้สอนโครงข่ายประสาทเทียมจะมีคำตอบไว้คอยตรวจดูว่าโครงข่ายประสาทเทียมให้คำตอบที่ถูกหรือไม่
ถ้าตอบไม่ถูก
โครงข่ายประสาทเทียมก็จะปรับตัวเองเพื่อให้ได้คำตอบที่ดีขึ้น
(เปรียบเทียบกับคน
เหมือนกับการสอนนักเรียนโดยมีครูผู้สอนคอยแนะนำ)
2. Unsupervised Learning
การเรียนแบบไม่มีการสอน
เป็นการเรียนแบบไม่มีผู้แนะนำ ไม่มีการตรวจคำตอบว่าถูกหรือผิด
โครงข่ายประสาทเทียมจะจัดเรียงโครงสร้างด้วยตัวเองตามลักษณะของข้อมูล
ผลลัพธ์ที่ได้ โครงข่ายประสาทเทียมจะสามารถจัดหมวดหมู่ของข้อมูลได้
(เปรียบเทียบกับคน เช่น การที่เราสามารถแยกแยะพันธุ์พืช
พันธุ์สัตว์ตามลักษณะรูปร่างของมันได้เองโดยไม่มีใครสอน)
การประยุกต์ใช้งาน Neural
Networks
เนื่องจากความสามารถในการจำลองพฤติกรรมทางกายภาพของระบบที่มีความซับซ้อนจากข้อมูลที่ป้อนให้เรียนรู้
การประยุกต์ใช้ข่ายงานระบบประสาทจึงเป็นทางเลือกใหม่ในการควบคุม
ซึ่งมีผู้นำมาประยุกต์ใช้งานหลายประเภท ได้แก่
1. งานการจดจำรูปแบบที่มีความไม่แน่นอน เช่น ลายมือ ลายเซนต์ ตัวอักษร
รูปหน้า
2. งานการประมาณค่าฟังก์ชันหรือการประมาณความสัมพันธ์ (มี inputs และ
outputs แต่ไม่ทราบว่า inputs กับ outputs
มีความสัมพันธ์กันอย่างไร)
3. งานที่สิ่งแวดล้อมเปลี่ยนแปลงอยู่เสมอ
(โครงข่ายประสาทเทียมสามารถปรับตัวเองได้)
4. งานจัดหมวดหมู่และแยกแยะสิ่งของ
5. งานทำนาย เช่นพยากรณ์อากาศ พยากรณ์หุ้น
6.
การประยุกต์ใช้โครงข่ายประสาทเทียมควบคุมกระบวนการทางเคมีโดยวิธีพยากรณ์แบบจำลอง
(Model Predictive Control)
7.
การประยุกต์ใช้โครงข่ายประสาทเทียมแบบแพร่กระจายกลับในการทำนายพลังงานความร้อนที่สะสมอยู่ในตัวอาคาร
8. การใช้โครงข่ายประสาทเทียมในการหาไซโครเมตริกชาร์ท
การประยุกต์ใช้ข่ายงานระบบประสาทควบคุมระบบ HVAC
ชอบบทความของอาจารย์มากค่ะ เพราะหาที่เป็นภาษาไทยไม่ค่อยมี ส่วนใหญ่จะเป็นภาษาอังกฤษ ตอนนี้ใช้ SAS อยู่ค่ะ tools ของ SAS มีฟังก์ชันให้เลือกใช้มากมาย แต่ที่ใช้อยู่มีไม่กี่ตัว เช่น Cluster note สำหรับการทำ Segment แล้วก็ Assciation สำหรับการหาความสัมพันธ์ของ Product ยังไงก็ขอให้อาจารย์เขียนบทความที่มีประโยชน์อย่างนี้ต่อไปเรื่อยๆนะคะ
ขอบคุณนะคะ สำหรับบทความดีดี เป็นกำลังใจให้นะคะ ^-^
ขอบคุณครับอาจารย์ สำหรับความรู้ มีประโยชน์มากๆ ..
ต้องการจะทำการพยากรณ์ โดยใช้เทคนิคโครงข่าย แต่เราจะนำข้อมูลดิบเข้ามาในระบบอย่างไรค่ะ
จะเขียนโปรแกรมเองจะไม่อาศัย matlab ค่ะ
รบกวนบอกหน่อยนะค่ะ
ต้องดูจุดประสงค์ด้วยครับ ว่าต้องการใช้ ANN ในการหาค่าความสัมพันธ์ของตัวแปรต้นแต่ละตัวเทียบกับตัวแปรตาม หรือว่าจะให้สร้างกฎเพื่อการทำนายผลลัพธ์ครับ
ต้องการแบบไหนครับ
อยากถามอาจารย์ว่า หนูต้องการใช้ Neural Network ในการทำ speech recognition แต่ว่าหนูยังงงว่ามันสามารถนำมาใช้ได้กับส่วนไหน เช่น Acoustic model, language model อ่าคะ ยังมองภาพไม่ออก
รบกวนอาจารย์ช่วยตอบข้อสงสัยด้วยคะ
สวัสดีครับ คุณณี
ผมเองไม่ได้เน้นศึกษาต่อด้าน Speech Recognition หรือ Image Processing ซึ่งจะเน้นในกลุ่มของวิศวกรรมคอมพิวเตอร์มากกว่า แต่พอดีว่าอดีตเจ้านายผม Prof.Dr.Peter F. Beales ที่ปรึกษา WHO เคยให้ผมศึกษาความเป็นไปได้ในการใช้ AI เพื่อถอดรหัสภาษาไทยในปี พ.ศ. 2547 ในช่วงหนึ่ง ผมพอจะแสดงความเห็นได้ดังนี้ครับ
ในภาพรวมกระบวนการคือ 1) เราจะใช้ Multilayer Back Propagation Artificial Neural Networks Model เพื่อเรียนรู้ สังเคราะห์ แยกแยะคำศัพท์จากการเรียนรู้การออกเสียงคำศัพท์ต่างๆ 2) คำศัพท์แต่ละคำ ควรบันทึกไว้หลายๆแบบ ดังอธิบายในรูปแบบของคลื่นเสียงที่แตกต่างกันในหลายลักษณะ อาทิเช่น แตกต่างด้านความยาวคลื่น , Amplitude , ฺBackground Noise , Sample Rate เพื่อสังเกตและจดจำ Spectrogram (การเปลี่ยนแปลงความถี่เทียบกับเวลา) เหมือนคนทั่วไปในโลกที่เวลาออกเสียงคำๆเดียวกัน แต่อาจมีหลายสำเนียง หลายโทนเสียง เป็นต้น
ส่วนโมเดลที่นิยมใช้ในการแบ่งกลุ่มและจับคู่เสียงแบบเดิมก็มี 1) Dynamic Time Warping -DTW 2)Hidden Markov Models-HMM 3)Gaussian Mixture Models-GMM ซึ่งเริ่มมีการวิจัยกันมาตั้งแต่ปลายยุค 80 และในปัจจุบันก็ได้พยายามเอาโครงข่ายประสาทเทียมซึ่งมีจุดเด่นในการเรียนรู้ สังเคราะห์ ทำนายผลลัพธ์ของปัจจัยแบบมีความสัมพันธ์ซับซ้อน ไม่เป็นเส้นตรงได้ดีมาประยุกต์ใช้ในการทำ Speech Recognition ดังจะเห็นได้ว่ามีงานวิจัยหลายชิ้น (โดยเฉพาะใน Edinburg U. ของสก็อตแลนด์) ได้ทำ Hybrid ผสม ANN นี้กับเทคนิคอื่นๆ อีกครับ
หวังว่าคงจะช่วยได้บ้างนะครับ
สวัสดีครับ
ตอนนี้ผมเรียน Dr อยู่ที่ okinawa ทำวิจัยด้านการ forecasting รบกวน อจ ช่วยหา คู่มือ ภาษาไทย manual การใช้ matlab ด้าน neural network ให้หน่อยได้ไหมครับ
สวัสดีครับ
ผมเคยใช้ Matlab เมื่อ 8 ปีที่แล้ว เพื่อสร้างแบบจำลองการทำนายระดับน้ำในฝาย แต่ก็ไม่ได้ใช้อีกเลยครับ
เท่าที่ผมเห็นตำราภาษาไทยด้าน Artificial Neural Network ก็หาได้ยากมากครับ นอกจากเล่มที่ผมเขียนไว้ให้กับกรมการพัฒนาชุมชน กระทรวงมหาดไทย (แจกฟรี)
แต่ถ้าเป็นตำรา Matlab สำหรับการทำ Data Mining ที่เป็นถาษาอังกฤษ ก็มีอยู่ครับ จะลองหาเองก่อนไหมครับ
ขอบคุณครับ
รบกวนช่วยสืบค้น คู่มือ ข้างต้นด้วยนะครับ
เท่าที่นึกออกตอนนี้ก็มี
1.Artificial Intelligence - Fuzzy Logic Matlab
2.Artificial-Neural-Networks-The-Tutorial-With-MATLAB
3.Development Of Neural Network Theory For Artificial Life-Thesis, Matlab And Java Code
ลองหาดูนะครับ ^_^
สวัสดีค่ะอาจารย์ หนูเป็นนิสิตอยู่ชั้นปีที่สี่ ตอนนี้ทำโปรเจคเกี่ยวกับการพยากรณ์อนุกรมเวลาราคาน้ำมันค่ะ ตอนนี้หนูคงว่าจะนำข้อมูลมาใช้งานอย่างไร ยังมองภาพไม่ออกค่ะ รบกวนอาจารย์ช่วยให้คำแนะนำด้วยค่ะ
ขอบคุณมากค่ะ
หลักของอนุกรมเวลา ก็คือ จะสร้างสมการเพื่อพยากรณ์ผลลัพธ์ของค่านั้น ตามเวลาที่เรากำหนด ไม่ว่าจะใช้เทคนิคย่อยแบบใด เช่น การปรับเรียบ ฯลฯ
ปัญหาที่ถกกันมากก็คือ หากปัจจัยนั้นมีการเปลี่ยนแปลงมาก หรือจับความสัมพันธ์ตามเวลาได้ยาก สมการที่ได้ อาจไม่น่าเชื่อถือ
ทางออกอีกหนึ่งทาง ที่เหมาะสำหรับการพยากรณ์ผลลัพธ์ที่มีความแปรปรวนมากๆ ก็คือ Artificial Neural Networks (โครงข่ายประสาทเทียม) นี่ล่ะครับ ;)
อาจารย์ครับ ช่วยแนะนำ คู่มือ Artificial Neural Networks ภาษาไทย หน่อยครับ
และรบกวนขอความรู้เกี่ยวกับ Fuzzy art,artmap ครับ
ให้ติดต่อศูนย์IT กรมพัฒนาชุมชน กระทรวงมหาดไทย เกี่ยวกับ "คู่มือการวิเคราะห์ข้อมูลด้วยเทคนิคโครงข่ายประสาทเทียม" ที่ผมเขียนไว้แจกจ่ายฟรี ปี 2550 (ใช้ Microsoft Excel)
น่าจะเป็นคู่มือ ANN ภาษาไทยเล่มเดียวที่มีอยู่ในบ้านเราขณะนี้ล่ะครับ ส่วน Fuzzy Logic นั้น ผมถือว่าเป็น DSS ที่เขียนเงื่อนไขไว้ตัดสินใจ ยังไม่ถึงระดับ AI ที่เรียนรู้ได้ด้วยตัวเองเหมือน ANN ครับ ลองหา Textbook มีหลายเล่มเขียนไว้ครับ เพราะเกิดขึ้นมานานแล้ว
สวัสดีค่ะอาจารย์ หนูทำโปรเจคเกี่ยวกับการพยากรณ์อนุกรมเวลาราคาน้ำมัน ตัวแปรที่ใช้เป็นข้อมูลราคาน้ำมันดิบเพียงอย่างเดียว ไม่ได้สนใจปัจจัยอื่น แต่ยังงงเรื่องฟังก์ชัน time series ไม่รู้ว่าจะเรียกใช้งานอย่างไร และต้องสร้างเพิ่มอย่างไรถึงจะนำมาใช้ในการพยากรณ์ รบกวนอาจารย์ช่วยให้คำแนะนำด้วยค่ะ ใช้ ANN แบบ Backprop ค่ะ
สวัสดีครับอาจารย์ ผมขอความรู้เกี่ยวกับ นิวรอล -ฟัสซี่ หน่อยครับ
และช่วยแนะนำหนังสือด้วยครับ
ขอบคุณครับ
นศ EE
สวัสดีค่ะ รบกวนถามหน่อยค่ะ
ตอนนี้ทามthesis การจำลองโดยใช้นิวรอลเน็ตค่ะ
จากที่อ่านของคนที่ทำมายังมีปัญหาว่าแบบจำลองที่ได้ ยังไม่แม่น
กราฟเปรียบเทียบดาต้ากับแบบจำลองที่สร้างขึ้นมา ยังไม่ค่อยใกล้กันเท่ารัย
อย่างนี้จะมีวิธีไหนจะทำให้ได้แบบจำลองที่ดีกว่านี้ไหมคะ แต่ยังอยากใช้นิวรอลเน็ต เพราะคิดว่าดีแล้ว
ดังนั้นต้องแก้ปัญหาโดยการปรับweight ใหม่ไหมคะ แล้วจะปรับweightยังไง
ยังไม่เข้าใจการปรับweightค่ะ ว่าจะหาสมการอะไรนี่ยังไง
หนังสือ Neuro-Fuzzy ดีๆ ที่สามารถสั่งซื้อได้ที่ www.amazon.com มีดังนี้ครับ
- Neuro-Fuzzy and Soft Computing: A Computational Approach to Learning and Machine Intelligence (Matlab Curriculum Series)
- Neural Fuzzy Systems: A Neuro-Fuzzy Synergism to Intelligent Systems
- Neuro-Fuzzy Pattern Recognition: Methods in Soft Computing
- Fuzzy Logic and Neuro Fuzzy Applications Explained
ตอบคุณ Gift
ไม่ทราบว่าคุณใช้ Network แบบไหน Algorithm ใดอยู่ หากวิธีเดิมใช้แล้วยังไม่แม่นพอ มันก็ปรับได้หลายอย่าง อาทิเช่น ปรับจำนวน layer, ปรับ hidden layer, เปลี่ยนประเภท Network, เปลี่ยนสมการคำนวณใหม่ => algorithm
ทางเลือกที่นิยมก็มีดังนี้ครับ
- Back Propagation => Multi Layer Feed Forward Network
- Recurrent Network (Delta Rule) => The Jordan Network, The Elman Network, Back Propagation in Recurrent Network (Mixed)
สายของคุณคงเป็นสายสถิติ วิทยาศาสตร์ วิศวกรรมศาสตร์ ที่เน้ืนพัฒนารูปแบบ หรือทฤษฏี ซึ่งผมเองก็ไม่ได้จับตรงนี้มาก เพราะงานวิจัยผมเน้นการประยุกต์ใช้ในการบริหาร และตัดสินใจองค์กรด้านต่างๆ ผมนิยม Back Propagation ครับ
แต่สิ่งที่ฝากให้คิดคือ คุณภาพของ Neural Networks (ความแม่นยำ) หากมีเวลาว่างพอ อยากให้ศึกษาตรงนี้ คือ
- ผลกระทบของความแม่นยำ กับ จำนวนข้อมูลที่เรียนรู้
- ผลกระทบของความแม่นยำ กับ จำนวน hidden units
โชคดีนะครับ ;)