โครงข่ายประสาทเทียม (Artificial Neural Network) ในงาน Image Processing

โครงข่ายประสาทเทียม (Artificial Neural Network) ในงาน Image Processing

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

        โครงข่ายประสาทเทียม (Artificial Neural Network) ในงาน Image Processing นิยมนำไปใช้ในการสร้างตัวจำแนกรูปแบบ (Pattern classification) อยู่เสมอ ข้อได้เปรียบของ โครงข่ายประสาทเทียม เมื่อเทียบกับตัวแบ่งแยกรูปแบบประเภทอื่น ๆ คือมันสามารถตัดสินค่าอินพุท (Output) ที่ค่อนข้างแม่นยำบนลักษณะของอินพุท (Input) ที่ไม่ชัดเจน กำกวม มีลักษณะไม่เชิงเส้น (Non-liner) หรืออาจกล่าวได้ว่าเป็นปัญหาที่เกิดขึ้นจริงในธรรมชาติอย่างไรก็ตามแม้ว่า โครงข่ายประสาทเทียม จะมีความสามารถในการแบ่งแยกรูปแบบที่ดี แต่ว่าเมื่อทำการสร้าง โครงข่ายประสาทเทียม ขึ้นมาแล้วมันจะทำงานได้ทันที การที่ โครงข่ายประสาทเทียม จะทำงานได้ จำเป็นต้องได้รับการสอน (Training) ตัวอย่างข้อมูลเพื่อให้ โครงข่ายประสาทเทียม นั้นทำการจดจำรูปแบบต่าง ๆ ของตัวอย่างข้อมูลให้ได้ก่อนจึงสามารถนำไปใช้งานได้ ซึ่งกระบวนการสอนนี้อาจต้องใช้เวลาพอสมควร

        ลักษณะการเรียนรู้ของระบบโครงข่ายประสาทเทียมสามารถแบ่งได้เป็น 3 รูปแบบดังนี้

        1) การเรียนรู้แบบมีผู้สอน (Supervised Learning)         โครงข่ายประสาทเทียมจะได้รับการฝึกด้วยกลุ่มฝึกที่ประกอบด้วยข้อมูลนำเข้าและค่าส่งออกที่ต้องการ การปรับค่าน้ำหนักและค่าไบแอส (Bias) นั้นจะกระทำเพื่อให้ค่าส่งออกที่ได้มีความใกล้เคียง หรือตรงกับค่าส่งออกที่ต้องการมากที่สุด ตัวอย่างโครงข่ายประสาทเทียมที่ใช้วิธีการเรียนรู้แบบนี้ เช่น แบคโพรพาเกชั่น (Back-Propagation) และมัลติเลเยอร์ เพอเซ็พตรอน (Multilayer Perceptron) เป็นต้น

        2) การเรียนรู้แบบเสริมกำลัง (Reinforcement Learning) การเรียนรู้แบบนี้จะคล้ายคลึงกับการเรียนรู้แบบมีผู้สอน แต่ต่างกันตรงที่การเรียนรู้แบบนี้จะใช้นำเข้าและใช้ระดับ (Grade) หรือคะแนน (Score) แทนค่าส่งออก ซึ่งวิธีนี้จะมีความซับซ้อนมากกว่าและใช้เวลาในการฝึกมากกว่า ทำให้เป็นที่นิยมน้อยกว่า การเรียนรู้แบบมีผู้สอน การเรียนรู้รูปแบบนี้มีความเหมาะสมสำหรับระบบขนาดใหญ่ที่ประกอบด้วยโครงข่ายประสาทเทียมหลายเครือข่ายทำงานร่วมกัน      

        3) การเรียนรู้แบบไม่มีผู้สอน (Unsupervised Learning) การเรียนรู้เพื่อปรับค่าน้ำหนัก และค่าไบแอสจะตอบสนองต่อข้อมูลนำเข้าเท่านั้น โดยไม่ได้ใช้ค่าส่งออกร่วมด้วยในการฝึก วิธีการเรียนรู้แบบนี้จะใช้การจัดแบ่งกลุ่ม โดยพิจารณาตามรูปแบบของค่านำเข้า ตัวอย่างโครงข่ายประสารทเทียมที่ใช้วิธีการเรียนรู้แบบนี้เช่น เคาเตอร์โพรพาเกชั่น (Counter Propagation) และ โครงข่ายโคแอนเนน (Kohonen Network)

สถาปัตยกรรมโครงข่าย

        โครงสร้างของโครงข่ายประสาทเทียม สร้างขึ้นมาจากส่วนประกอบ 3 ส่วนที่เชื่อมต่อกัน แต่ละส่วนเรียกว่า เลเยอร์ (Layers) และเรียกประสาทเทียมว่าโหนด (Node)

        สถาปัตยกรรมโครงข่ายประสาทเทียม เมื่อพิจารณาในลักษณะทิศทางการส่งข้อมูล ได้มีการแบ่งออกเป็น 2 รูปแบบ คือ แบบป้อนไปหน้า และแบบป้อนกลับ

        1) แบบป้อนไปหน้า (Feed forward Network) ข้อมูลที่ประมวลผลในวงจรข่ายจะถูกส่งไปในทิศทางเดียวจาก Input Nodes ส่งต่อมาเรื่อย ๆ จนถึง Output Nodes โดยไม่มีการย้อนกลับของข้อมูลหรือแม้แต่ Nodes ใน Layer เดียวกันก็ไม่มีการเชื่อมต่อกัน

        2) แบบป้อนกลับ (Feedback Network) ข้อมูลที่ประมวลผลในวงจรข่าย จะมีการป้อนกลับเข้าไปยังวงจรข่ายหลาย ๆ ครั้ง จนกระทั่งได้คำตอบออกมา (บางทีเรียกว่า Recurrent Network)

วิธีการสอน

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

        เปอร์เซ็ปตรอน (Perceptrons) เป็นเทคนิคการสอนประเภทหนึ่ง เปอร์เซ็ปตรอนเหมาะสำหรับการแก้ปัญหาเพื่อจำแนกรูปแบบหรือจัดหมวดหมู่ ซึ่งมีความรวดเร็วและเชื่อถือได้ เปอร์เซ็ปตรอนเป็นรูปแบบเลเยอร์เดี่ยว ดังแสดงในภาพที่ 2.9  โดยข้อมูลเข้า p  จำนวน  R ตัว จะเชื่อมต่อด้วยกลุ่มของน้ำหนัก w และรวบรวมที่จุดรวมระหว่างข้อมูลอินพุตกับน้ำหนัก n = p x w ทั้งนี้หากมีค่าไบแอส b ก็จะนำมารวมด้วยที่จุดรวมผลนี้ n = (p x w)+b จากนั้นจะได้ค่าเอาต์พุต n ซึ่งเป็นผลรวมสุดท้ายจะส่งผ่านไปยังฟังก์ชันถ่ายโอน

        ข้อจำกัดของเปอร์เซ็ปตรอน คือ ค่าของเอาต์พุตจะมีได้เพียง 2 ค่า คือค่า 0 หรือ ค่า 1 เปอร์เซ็ปตรอนสามารถแยกจัดหมวดหมู่ข้อมูลเชิงเส้นเท่านั้น แต่หากเวกเตอร์ไม่มีลักษณะเชิงเส้นการเรียนรู้จะไม่พบจุดที่เวกเตอร์จะสามารถแยกแยะหมวดหมู่ได้ แต่เปอร์เซ็ปตรอนจะค้นหาเวลาที่จะสิ้นสุดการเรียนรู้

        เปอร์เซ็ปตรอนรับอินพุตเป็นเวกเตอร์จำนวนจริงแล้วคำนวณหาผลรวมเชิงเส้น (Linear combination) แบบถ่วงน้ำหนักของอินพุต x1,x2,…,xn โดยที่ค่าน้ำหนัก w1,w2,….,wn ปรากฏในรูปเป็นค่าน้ำหนักของอินพุตและให้เอาต์พุตเป็น 1 ถ้าผลรวมที่ได้มีค่าเกินค่าขีดแบ่งและเป็น -1 ถ้าไม่เกิดค่าขีดแบ่ง การเรียนรู้เปอร์เซ็ปตรอน คือการหาค่าเวกเตอร์น้ำหนักที่เหมาะสมในการจำแนกประเภทของข้อมูลสอนเพื่อให้เปอร์เซ็ปตรอนแสดงเอาต์พุตได้ตรงกับค่าที่สอน

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

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

        โครงข่ายใยประสาทเทียมแบบแพร่กลับ (Back-Propagation Algorithm) สามารถเข้าใจง่ายและมีการประยุกต์ใช้โดยทั่วไป การปรับสอนโครงข่ายใยประสาทเทียมแบบแพร่กลับ ประกอบไปด้วย 3 ขั้นตอน คือ

        1) ขั้นตอนการคำนวณไปข้างหน้า (Feed Forward) จากชั้นข้อมูลเข้า (Input Layer) ไปยังชั้นแอบแฝง (Hidden Layer) และไปสู่ชั้นข้อมูลออก (Output Layer)

        2) ขั้นตอนการคำนวณ และการแทนค่ากลับของผลรวมของความผิดพลาดของสัญญาณออกกับค่าเป้าหมาย

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

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

        ขั้นตอนของ Back-propagation Algorithm มีดังนี้

        1) กำหนดค่าอัตราเร็วในการเรียนรู้ (Rate Parameter:r)

        2) สำหรับแต่ละตัวอย่างอินพุตให้ทำตามขั้นตอนต่อไปนี้จนกว่าได้ระดับ performance ที่ต้องการ

                (1) คำนวณหาค่าเอาต์พุตโดยใช้ค่าน้ำหนักเริ่มต้นซึ่งอาจได้จากการสุ่ม

                (2) คำนวณหาค่า Beta : แทนประโยชน์ที่จะได้รับสำหรับการเปลี่ยนค่าเอาต์พุตของแต่ละโหนด

                (3) คำนวณค่าน้ำหนักที่เปลี่ยนแปลงไปสำหรับในทุกน้ำหนัก

                (4) เพิ่มค่าน้ำหนักที่เปลี่ยนแปล สำหรับตัวอย่างอินพุตทั้งหมด และเปลี่ยนค่าน้ำหนัก

เครือข่ายเชิงเส้น (Linear Networks) โมเดลเชิงเส้นสำหรับโครงข่ายประสาทเทียม

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

        กราฟิกโดยทั่วไปสามารถแสดงรูปแบบเชิงเส้นโดยเครือข่ายที่มีการป้อนข้อมูลค่าคุณลักษณะ           โหนดลูกศรมีน้ำหนักและคะแนนเป็นโหนดขาออกตามรูปข้างล่าง ส่วนใหญ่เราใช้โมเดลเชิงเส้นเพื่อรวมองค์ประกอบต่างๆของระบบการแปลด้วยเครื่องเช่นรูปแบบภาษารูปแบบการแปลวลีรูปแบบการเรียงลำดับใหม่ และคุณสมบัติต่างๆเช่นความยาวของประโยคหรือระยะทางข้ามแบบสะสมระหว่าง การแปลวลี วิธีการฝึกสอนกำหนดค่าน้ำหนัก λi ให้กับแต่ละคุณลักษณะดังกล่าว hi (x) ซึ่งหมายถึงความสำคัญในการให้คะแนนการแปลที่ดีขึ้น ในการแปลด้วยเครื่องทางสถิตินี้เรียกว่าการปรับแต่ง อย่างไรก็ตามโมเดลเชิงเส้นไม่อนุญาตให้เรากำหนดความสัมพันธ์ที่ซับซ้อนระหว่างคุณลักษณะต่างๆได้ 

โครงข่ายประสาทเทียม (Artificial Neural Network) ในงาน Image Processing

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *