สวัสดีครับ
ผมไม่ได้อัพบล็อกมานานพอสมควร วันนี้อยากจะเขียนเรื่องของ Neural network กันบ้างดีกว่า แปลกันตรงๆ ก็ “เครือข่ายระบบประสาท” เป็นการพยายามที่จะสร้างแบบจำลองระบบการเรียนรู้และจดจำของสมองเราๆ ท่านๆ เพื่อนำมาประยุกต์ใช้ในงานต่างๆ เช่น การจดจำใบหน้าคน จดจำรูปร่างวัตถุ หรือการจดจำอื่นใดก็แล้วแต่คุณ และเมื่อมีการจดจำไว้แล้วก็จะสามารถแยกแยะสิ่งที่ได้จดจำไว้แล้วได้ เช่น การแยกแยะสีของกลุ่มดอกไม้ การแยกแยะรูปแบบของเชื้อรา แยกแยะรูปแบบอักษร เป็นต้น ซึ่งโครงสร้างเครือข่ายประสาทเทียมหลักๆ ที่เรานิยมใช้กัน ก็ได้แก่
- เครือข่ายเพอร์เซ็ปตรอน (perceptron learning) เป็นเครือข่ายรุ่นแรกๆ ที่ยังใช้กันมาจนปัจจุบัน
- เครือข่ายแบบแพร่กลับ (back propagation learning) เครือข่ายนี้ใช้กันมากเนื่องด้วยสามารถฝึกสอนแบบหลายชั้นได้ด้วย
- เครือข่ายแบบเฮบเบียน (hebbian learning)
- และอื่นๆ
เนื่องด้วยโครงสร้างเครื่องข่ายประสาทเทียมมีมากมาย ครั้งนี้ผมจะพูดในเครือข่ายที่ใช้กันมากนั่นก็คือ back-propagation learning ซึ่งสามารถทดลองได้ในโปรแกรม MATLAB ด้วย
เครือข่ายแบบแพร่กลับ (back propagation learning) เป็นระบบการเรียนรู้แบบมีผู้ฝึกสอนครับ เพราะเราต้องสอนให้เครือข่ายเรียนรู้ก่อนว่าถ้าอินพุตที่ส่งเข้ามาเป็นเช่นไรจะต้องให้เอาท์พุตเป็นอย่างหนึ่งอย่างใดที่เรากำหนดไว้ โดยทั่วไปแล้ว neural network อธิบายได้โดยโครงสร้างด้านล่างนี้ครับ
เมื่อ Px เป็นอินพุตที่ส่งเข้าระบบประสาท โดยอินพุตทุกตัวจะถูกส่งเข้าระบบพร้อมกับค่าน้ำหนัก W ที่ได้กำหนด (หรือสุ่มโดยโปรแกม) และนำมารวมกับค่าไบอัส (b) โดยไบอัสนี้จะช่วยให้เราสามารถแยกแยะรูปแบบการเรียนรู้ได้ดีขึ้นและยังทำให้เราได้เครือข่ายที่มีขนาดเล็กเมื่อเทียบกับเมื่อไม่มีการป้อนไบอัส โดย MATLAB จะปรับค่าไบอัสให้โดยอัตโนมัติหรือเราอาจจะกำหนดเองก็ยังได้ โดยทั้งอินพุตที่คูณกับน้ำหนักแล้วจะรวมกับค่าไบอัสในหน่วยเซลล์ประสาท (Σ) แล้วส่งต่อไปยังฟังก์ชันถ่ายโอน (ƒ) ซึ่งจะมีหลากหลายรูปแบบให้เลือกครับ เช่น 1.ฟังก์ชันซิกมอยลอการิทึม (logsig) 2.ไฮเปอร์โบลิกแทนเจน (tansig) 3. ฟังก์ชันเส้นตรง (purelin) 4. ฮาร์ดลิมิต (hardlim) เป็นต้น แล้วสุดท้ายจึงได้เป็นกลุ่มของเอาท์พุตที่กำหนด เอาไว้คราวหน้าจะพูดถึงฟังก์ชันถ่ายโอนกันต่อ วันนี้พอเท่านี้ก่อนครับ สวัสดีปีใหม่ 2555
น่าสนใจดีครับ ขอบคุณมากครับ