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

[thumb|ข่ายงานประสาทเทียมมีการเชื่อมต่อกันผ่านกลุ่ม[โนด|โหนด]]

**โครงข่ายประสาทเทียม** (Artificial neural networks: ANN) หรือ **ข่ายงานประสาทเทียม** (Connectionist systems) คือระบบคอมพิวเตอร์จากโมเดลทางคณิตศาสตร์ เพื่อจำลองการทำงานโครงข่ายประสาทชีวภาพที่อยู่ในสมองของสัตว์ โครงข่ายประสาทเทียมสามารถเรียนรู้ที่จะทำงานที่มอบหมายได้ จากการเรียนรู้ผ่านตัวอย่าง โดยไม่ถูกโปรแกรมด้วยกฎเกณฑ์ตายตัวแบบระบบอัตโนมัติ ยกตัวอย่างเช่น ในการประมวลผลภาพ คอมพิวเตอร์ที่ทำงานด้วยระบบโครงข่ายประสาทเทียมจะเรียนรู้การจำแนกรูปภาพแมวได้จากการให้ตัวอย่างรูปภาพที่กำกับโดยผู้เขียนโปรแกรมว่า “เป็นแมว” หรือ “ไม่เป็นแมว” จากนั้นนำผลลัพธ์ที่ได้ไปใช้ระบุภาพแมวในตัวอย่างรูปภาพอื่น ๆ โปรแกรมโครงข่ายประสาทเทียมสามารถแยกแยะรูปภาพแมวได้โดยปราศจากการความรู้ก่อนหน้า ว่า ”แมว” คืออะไร (อาทิ แมวมีขน มีหูแหลม มีเขี้ยว มีหาง) แทนที่จะใช้ความรู้ดังกล่าว โครงข่ายประสาทเทียมทำการระบุตัวแมวโดยอัตโนมัติด้วยการระบุลักษณะเฉพาะ จากชุดตัวอย่างที่เคยได้ประมวลผล 

แนวคิดเริ่มต้นของเทคนิคนี้ได้มาจากการศึกษาโครงข่ายไฟฟ้าชีวภาพ (bioelectric network) ในสมอง ซึ่งประกอบด้วย เซลล์ประสาท (neurons) และ จุดประสานประสาท (synapses) ตามโมเดลนี้ ข่ายงานประสาทเกิดจากการเชื่อมต่อระหว่างเซลล์ประสาท จนเป็นเครือข่ายที่ทำงานร่วมกัน

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

ในการสร้างระบบโครงข่ายประสาทเทียม เอาต์พุตของแต่ละเซลล์ประสาทจะมาจากการคำนวณผลรวมของอินพุต ด้วยฟังก์ชันการแปลง (transfer function) ซึ่งทำหน้าที่รวมค่าเชิงตัวเลขจากเอาต์พุตของเซลล์ประสาทเทียม แล้วทำการตัดสินใจว่าจะส่งสัญญาณเอาต์พุตออกไปในรูปใด ฟังก์ชันการแปลงอาจเป็นฟังก์ชันเส้นตรงหรือไม่ก็ได้ โครงข่ายประสาทเทียม ประกอบไปด้วย จุดเชื่อมต่อ (Connections) ซึ่งสามารถเรียกสั้น ๆ ได้ว่า เอจ (Edge), เมื่อโครงข่ายประสาทมีการเรียนรู้ จะเกิดค่าน้ำหนักขึ้น, ค่าน้ำหนัก (weights) คือ สิ่งที่ได้จากการเรียนรู้ของโครงข่ายประสาทเทียม หรือเรียกอีกอย่างหนึ่งว่า ค่าความรู้ (knowledge) ค่านี้จะถูกเก็บเป็นทักษะเพื่อใช้ในการจดจำข้อมูลอื่น ๆ ที่อยู่ในรูปแบบเดียวกัน

จุดประสงค์ดั้งเดิมของการสร้างโครงข่ายประสาทเทียม คือการแก้ปัญหาแบบเดียวกับที่สมองมนุษย์สามารถทำได้ แต่เมื่อเวลาผ่านไป จุดประสงค์ของการสร้างโครงข่ายประสาทเทียมก็ได้เบี่ยงเบนเปลี่ยนไปเป็นการทำงานที่เฉพาะเจาะจง แทนจุดประสงค์เดิมในการสร้างสมองเทียม, ปัจจุบัน มีการประยุกต์ใช้โครงข่ายประสาทเทียมกับงานหลากหลายรูปแบบ เช่น คอมพิวเตอร์วิทัศน์, การรู้จำคำพูด, การแปลภาษา, การกรองเนื้อหาโซเชียลมีเดีย, การเล่นเกม, การวินิจฉัยโรค และกิจกรรมบางอย่างที่ไม่คิดว่าปัญญาประดิษฐ์จะทำได้ เช่น การวาดภาพ, การประพันธ์เพลง และ การประพันธ์บทกวี

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

### โมเดล
ข่ายงานประสาทแบบป้อนไปหน้า (feedforward) ประกอบด้วยเซตของบัพ (node) ซึ่งอาจจะถูกกำหนดให้เป็นบัพอินพุต (input nodes) บัพเอาต์พุต (output nodes) หรือ บัพอยู่ระหว่างกลางซึ่งเรียกว่า บัพฮิดเดน (hidden nodes) มีการเชื่อมต่อระหว่างบัพ (หรือนิวรอน) โดยกำหนดค่าน้ำหนัก (weight) กำกับอยู่ที่เส้นเชื่อมทุกเส้น เมื่อข่ายงานเริ่มทำงาน จะมีการกำหนดค่าให้แก่บัพอินพุต โดยค่าเหล่านี้ อาจจะได้มาจากการกำหนดโดยมนุษย์ จากเซนเซอร์ที่วัดค่าต่าง ๆ หรือผลจากโปรแกรมอื่น ๆ จากนั้นบัพอินพุต จะส่งค่าที่ได้รับ ไปตามเส้นเชื่อมขาออก โดยที่ค่าที่ส่งออกไปจะถูกคูณกับค่าน้ำหนักของเส้นเชื่อม บัพในชั้นถัดไปจะรับค่า ซึ่งเป็นผลรวมจากบัพต่าง ๆ แล้วจึงคำนวณผลอย่างง่าย โดยทั่วไปจะใช้ฟังก์ชันซิกมอยด์ (sigmoid function) แล้วส่งค่าไปยังชั้นถัดไป การคำนวณเช่นนี้จะเกิดขึ้นไปเรื่อย ๆ ทีละชั้น จนถึงบัพเอาต์พุต โดยในยุคแรก (ราว ค.ศ. 1970) จำนวนชั้นจะถูกกำหนดไว้เป็นค่าคงที่ แต่ในปัจจุบันมีการนำขั้นตอนวิธีเชิงพันธุกรรม มาช่วยออกแบบโครงสร้างของข่ายงาน ดู นิวโรอีโวลูชัน (Neuroevolution)

## ประเภทของข่ายงานประสาทเทียม

### เพอร์เซ็ปตรอนหลายชั้น (multi-layer perceptron)

โครงข่ายประสาทเทียมแบบ MLP เป็นรูปแบบหนึ่งของโครงข่ายประสาทเทียมที่มีโครงสร้างเป็นแบบหลายๆชั้น ใช้สำหรับงานที่มีความซับซ้อนได้ผลเป็นอย่างดี โดยมีกระบวนการฝึกฝนเป็นแบบมีผู้สอน (Supervise) และใช้ขั้นตอนการส่งค่าย้อนกลับ (Backpropagation) สำหรับการฝึกฝนกระบวนการส่งค่าย้อนกลับ ประกอบด้วย 2 ส่วนย่อยคือ การส่งผ่านไปข้างหน้า (Forward Pass) การส่งผ่านย้อนกลับ (Backward Pass) สำหรับการส่งผ่านไปข้างหน้า ข้อมูลจะผ่านเข้าโครงข่ายประสาทเทียมที่ชั้นข้อ มูลเข้า และจะส่งผ่าน จากอีกชั้นหนึ่งไปสู่อีกชั้นหนึ่งจนกระทั่งถึงชั้นข้อมูลออก ส่วนการส่งผ่านย้อนกลับค่าน้ำหนักการเชื่อมต่อจะถูกปรับเปลี่ยนให้สอดคล้องกับกฎการแก้ข้อผิดพลาด (Error-Correction) คือผลต่างของผลตอบที่แท้จริง (Actual Response) กับผลตอบเป้าหมาย (Target Response) เกิดเป็นสัญญาณผิดพลาด (Error Signal) ซึ่งสัญญาณผิดพลาดนี้จะถูกส่งย้อนกลับเข้าสู่โครงข่ายประสาทเทียมในทิศทางตรงกันข้ามกับการเชื่อมต่อ และค่าน้ำหนักของการเชื่อมต่อจะถูกปรับจนกระทั่งผลตอบที่แท้จริงเข้าใกล้ผลตอบเป้าหมาย

สัญญาณที่มีโครงข่ายประสาทเทียมแบบ MLP มี 2 ประเภท คือ Function Signal และ Error Signal 
#Function Signal เป็นสัญญาณเข้าที่มาจากโหนดในชั้นก่อนหน้า และจะส่งผ่านไปข้างหน้าจากโหนดหนึ่งไปสู่อีกโหนดหนึ่ง
#Error Signal เป็นสัญญาณย้อนกลับที่เกิดขึ้นที่โหนดในชั้นข้อมูลออกของโครงข่ายประสาทเทียม และถูกส่งผ่านย้อนกลับจากชั้นหนึ่งไปสู่อีกชั้นหนึ่ง

หลักการทำงานของ MLP คือในแต่ละชั้นของชั้นซ่อนตัว (Hidden Layer) จะมีฟังก์ชันสำหรับคำนวณเมื่อได้รับสัญญาณ (Output) จากโหนดในชั้นก่อนหน้านี้ เรียกว่า Activation Function โดยในแต่ละชั้นไม่จำเป็นต้องเป็นฟังก์ชันเดียวกันก็ได้ ชั้นซ่อนตัวนั้นมีหน้าที่สำคัญคือ จะพยายามแปลงข้อมูลที่เข้ามาในชั้น (Layer) นั้น ๆ ให้สามารถแยกแยะความแตกต่างโดยใช้เส้นตรงเส้นเดียว (Linearly Separable) และก่อนที่ข้อมูลจะถูกส่งไปถึงชั้นข้อมูลออก (Output Layer) ในบางครั้งอาจจำเป็นต้องใช้ชั้นซ่อนตัวมากกว่า 1 ชั้นในการแปลงข้อมูลให้อยู่ในรูป Linearly Separable

ในการคำนวณหา Output ในปัญหาการจำแนกทำได้โดยการใส่ข้อมูล Input เข้าไปในโครงข่ายประสาทเทียมที่เราได้ทำการหาไว้แล้ว จากนั้นให้ทำการเปรียบเทียบค่าของ Output ใน Output Layer และให้ทำการเลือกค่าของ Output ที่มีค่าสูงกว่า (Neuron ที่มีค่าสูงกว่า) และทำการรับค่าของพยากรณ์ที่ตรงกับ Neuron ที่เลือก และให้นำค่าของ มาเปรียบเทียบกับค่าที่ยอมรับได้ หากค่าของ อยู่ในช่วงที่รับได้ (Error น้อยกว่า Error ที่เรากำหนด) ก็ให้ทำการรับข้อมูลชุดถัดไป แต่หากค่าของ มากกว่าค่าที่ยอมรับได้ ให้ทำการปรับค่าน้ำหนักและ Biased ตามขั้นตอนที่ได้กล่าวไว้ข้างต้น เมื่อทำการปรับน้ำหนักเรียบร้อยแล้ว ให้ทำการรับข้อมูลชุดถัดไปและทำตามขั้นตอนซ้ำอีกรอบจนกระทั่งถึงข้อมูลชุดสุดท้าย และเมื่อทำข้อมูลชุดสุดท้ายเสร็จจะนับเป็น 1 รอบของการคำนวณ (1 Epoch) จากนั้นจะทำการหาค่าผิดพลาดรวมเฉลี่ย จากค่าเฉลี่ยของ ที่ได้เก็บค่าเอาไว้ เพื่อใช้ในการตรวจสอบว่าค่า โดยเฉลี่ยในการจำแนกนั้น มีค่าน้อยกว่าค่าผิดพลาดที่ยอมรับได้หรือไม่ ถ้าใช่แสดงว่าโครงข่ายประสาทเทียมที่สร้างขึ้นนั้นสามารถให้ผลลัพธ์ที่ถูกต้องของทุก ๆ ข้อมูลแล้ว จึงทำการจบการเรียนรู้ได้ แต่ถ้าไม่ใช่ ให้กลับไปทำตามขั้นตอนแรก โดยเริ่มรับข้อมูลชุดที่ 1 ใหม่

### โครงข่ายฮอปฟิลด์ (Hopfield network)
โครงข่ายฮอปฟิลด์ บางครั้งเรียกว่า Hebb’s Rule เป็นวิธีการหรือทฤษฏีที่เกี่ยวข้องของกับการจัดกลุ่มของข้อมูลโดยอาศัยต้นแบบมาจากระบบประสาท คือ เซลล์ใด ๆ ที่อยู่ใกล้กันและสามารถกระตุ้นเซลล์ที่อยู่ใกล้เคียงแบบซ้ำ ๆ ต่อเนื่องกันจนเกิดการเปลี่ยนแปลงขึ้นกับเซลล์ตนเองและเซลล์ใกล้เคียงจะถือว่า เซลล์ทั้งสองมีปฏิสัมพันธ์ที่สนับสนุนกัน ส่งผลให้ทั้งคู่สามารถจะเจริญเติบโตไปด้วยกันได้

Hebb’s Rule จะเกี่ยวของกับความสัมพันธ์ของชุดข้อมูล 2 ชุดที่สนับสนุนกันจนทำให้น้ำหนักของข้อมูลมีความน่าเชื่อถือมากขึ้น ช่วยให้เกิดความมั่นใจว่าค่าน้ำหนักดังกล่าวสามารถนำมาใช้งานได้อย่างมีประสิทธิภาพใน Hebb’s Rule แต่ละ Node ของชั้น Input Layer จะเชื่อมโยงกับทุก Node ของชั้น Output Layer อย่างสมบูรณ์ดังนั้นการทำงานของวิธีนี้จึงอาศัยรูปแบบจาก Input เป็นหลักโดยการ Mapping ระหว่าง Input Pattern กับ Recalled Pattern (Output Pattern ที่สามารถกลับสู่ Input Pattern ได้) ซึ่งได้จากการพิจารณาข้อมูลที่อยู่ใกล้เคียงแต่การ Mapping มีข้อเสียคือสามารถ Mapping ได้เฉพาะข้อมูลที่สัมพันธ์กันในแบบ Orthogonal (แบบตั้งฉาก) ผลลัพธ์ในการ Mapping ด้วย Hebb’s Rule 

### ประเภทอื่น
* เพอร์เซ็ปตรอนชั้นเดียว (single-layer perceptron) 
* โครงข่ายแบบวนซ้ำ (recurrent network)
* แผนผังจัดระเบียบเองได้ (self-organizing map) 
* เครื่องจักรโบลทซ์แมน (Boltzmann machine) 
* กลไกแบบคณะกรรมการ (committee of machines) 
* โครงข่ายความสัมพันธ์ (associative Neural Network-ASNN)
* โครงข่ายกึ่งสำเร็จรูป (instantaneously trained networks)
* โครงข่ายแบบยิงกระตุ้น (spiking neural networks)

## อ้างอิง
* Cybenko, G.V. (1989). Approximation by Superpositions of a Sigmoidal function, *[[Mathematics of Control, Signals, and Systems]]*, Vol. 2 pp.&nbsp;303–314. electronic version 
* Duda, R.O., Hart, P.E., Stork, D.G. (2001) *Pattern classification (2nd edition)*, Wiley, ISBN 0-471-05669-3
* 
* Gurney, K. (1997) *An Introduction to Neural Networks* London: Routledge. ISBN 1-85728-673-1 (hardback) or ISBN 1-85728-503-4 (paperback)
* Haykin, S. (1999) * Neural Networks: A Comprehensive Foundation*, Prentice Hall, ISBN 0-13-273350-1
* Fahlman, S, Lebiere, C (1991).  *The Cascade-Correlation Learning Architecture*, created for National Science Foundation, Contract Number EET-8716324,  and Defense Advanced Research Projects Agency (DOD), ARPA Order No. 4976 under Contract F33615-87-C-1499. electronic version 
* Hertz, J., Palmer, R.G., Krogh. A.S. (1990) *Introduction to the theory of neural computation*, Perseus Books. ISBN 0-201-51560-1

## แหล่งข้อมูลอื่น
* โครงข่ายประสาทเทียม คณะเทคโนโลยีสารสนเทศ มหาวิทยาลัยพระจอมเกล้าพระนครเหนือ
* โครงข่ายประสาทเทียม  สาขาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี มหาวิทยาลัยราชภัฏสวนสุนันทา
* ประวัติความเป็นมาของโครงข่ายประสาทเทียม สารานุกรมไทยสำหรับเยาวชน

หมวดหมู่:การแทนความรู้
หมวดหมู่:ปัญญาประดิษฐ์
หมวดหมู่:แบบจำลอง
หมวดหมู่:โครงข่ายประสาทเทียม
หมวดหมู่:ขั้นตอนวิธีการจำแนก