เครือข่ายประสาทรับรู้ตัวอักษรค. การรู้จำตัวอักษรตัวอักษร

และมีความน่าจะเป็น 0.1 – ถึงคลาส C 2 ปัญหาดังกล่าวสามารถแก้ไขได้โดยใช้ SME ที่มีอินพุต N และเอาต์พุต M ซึ่งได้รับการฝึกฝนเพื่อสร้างเวกเตอร์ที่เอาต์พุต เมื่อได้รับอินพุตแล้ว พี.

ในระหว่างกระบวนการเรียนรู้ เครือข่ายจะสร้างการแมป P → C ไม่สามารถรับการแมปนี้ได้ทั้งหมด แต่เป็นไปได้ที่จะได้รับจำนวนคู่ตามอำเภอใจ ( พี → ค) เชื่อมต่อกันด้วยจอแสดงผล สำหรับเวกเตอร์ใดๆ พีที่อินพุตเราสามารถรับความน่าจะเป็นโดยประมาณของการเป็นสมาชิกคลาสที่เอาต์พุต

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

มีวิธีอื่นในการทำให้เป็นทางการ

เราจะแสดงตัวอักษรในรูปแบบของภาพจุด (รูปที่)

ข้าว. - จุดภาพ.

เซลล์พิกเซลสีเข้มในภาพสอดคล้องกัน ฉันจ = 1 แสง - ฉันจ = 0 . ภารกิจคือการกำหนดตัวอักษรที่นำเสนอจากภาพ

มาสร้าง SME ด้วยกันเถอะ ฉันเอ็กซ์ เอ็นเจอินพุต โดยที่แต่ละอินพุตสอดคล้องกับหนึ่งพิกเซล: xk = ฉัน ฉัน ijความสว่างของพิกเซลจะเป็นส่วนประกอบของเวกเตอร์อินพุต

เป็นสัญญาณเอาท์พุต เราเลือกความน่าจะเป็นที่ภาพที่นำเสนอจะสอดคล้องกับตัวอักษรที่กำหนด:

เครือข่ายคำนวณผลลัพธ์:

ทางออกอยู่ที่ไหน 1 = 0.9 หมายความว่า รูปภาพของตัวอักษร "A" ปรากฏ และเครือข่ายมั่นใจ 90% ในเรื่องนี้ 2 = 0.1 - รูปภาพตรงกับตัวอักษร "B" โดยมีความน่าจะเป็น 10% เป็นต้น

มีวิธีอื่น: อินพุตเครือข่ายจะถูกเลือกในลักษณะเดียวกันและเอาต์พุตจะมีเพียงตัวเลขเดียวเท่านั้น จดหมายนำเสนอ เครือข่ายเรียนรู้ที่จะให้ความหมาย ตามภาพที่นำเสนอ ฉัน:



(ฉันจ) →

ในกรณีนี้ข้อเสียคือตัวอักษรที่มีตัวเลขคล้ายกัน m แต่เป็นรูปภาพที่แตกต่างกัน อาจสับสนโดยเครือข่ายในระหว่างการจดจำ

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

ความรู้เบื้องต้นเกี่ยวกับคุณลักษณะออยเลอร์ของภาพ

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

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


ความคิดเห็น:ในทางปฏิบัติ จะไม่ใช้ค่า F0 (สำหรับภาพต้นฉบับ ค่านี้คือ 8) เนื่องจากเป็นพื้นหลังของภาพ ดังนั้นจะใช้ 15 ค่า เริ่มตั้งแต่ F1 ถึง F15

คุณสมบัติของคุณลักษณะออยเลอร์ของรูปภาพ

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

อัลกอริธึมการรู้จำข้อความคืออะไร?

แนวคิดของการรู้จำตัวอักษรคือเราคำนวณคุณลักษณะออยเลอร์ล่วงหน้าสำหรับอักขระทุกตัวในตัวอักษรของภาษาและเก็บไว้ในฐานความรู้ จากนั้นเราจะคำนวณคุณลักษณะออยเลอร์สำหรับส่วนของภาพที่ได้รับการยอมรับและค้นหาในฐานความรู้

ขั้นตอนการรับรู้:

  1. รูปภาพอาจเป็นได้ทั้งขาวดำหรือสี ดังนั้นขั้นตอนแรกคือการประมาณรูปภาพ นั่นคือจะได้ขาวดำจากรูปภาพนั้น
  2. เราส่งผ่านภาพทั้งหมดแบบพิกเซลต่อพิกเซลเพื่อค้นหาพิกเซลสีดำ เมื่อตรวจพบพิกเซลที่แรเงา การดำเนินการแบบเรียกซ้ำจะเริ่มขึ้นเพื่อค้นหาพิกเซลที่แรเงาทั้งหมดที่อยู่ติดกับพิกเซลที่พบและพิกเซลที่ตามมา เป็นผลให้เราจะได้รับส่วนของภาพซึ่งอาจเป็นได้ทั้งตัวละครหรือบางส่วนหรือ "ขยะ" ที่ควรทิ้ง
  3. หลังจากค้นหาส่วนที่ไม่เชื่อมโยงกันทั้งหมดของภาพแล้ว คุณลักษณะออยเลอร์จะถูกคำนวณสำหรับแต่ละส่วน
  4. จากนั้น เครื่องวิเคราะห์จะเริ่มทำงาน และพิจารณาแต่ละส่วนเพื่อพิจารณาว่าค่าของคุณลักษณะออยเลอร์นั้นอยู่ในฐานความรู้หรือไม่ หากเราพบคุณค่าเราจะพิจารณาว่าเป็นส่วนที่ได้รับการยอมรับของภาพ ไม่เช่นนั้นเราจะทิ้งไว้เพื่อการศึกษาต่อไป
  5. ส่วนที่ไม่รู้จักของรูปภาพนั้นต้องได้รับการวิเคราะห์ตามฮิวริสติก กล่าวคือ ฉันพยายามค้นหาค่าที่เหมาะสมที่สุดในฐานความรู้โดยพิจารณาจากคุณค่าของคุณลักษณะออยเลอร์ หากไม่สามารถค้นหาได้ ให้พยายาม "ติดกัน" ชิ้นส่วนใกล้เคียงและค้นหาผลลัพธ์ในฐานความรู้สำหรับชิ้นส่วนเหล่านั้น "การติดกาว" มีไว้เพื่ออะไร? ความจริงก็คือไม่ใช่ทุกตัวอักษรที่จะมีรูปภาพต่อเนื่องกันเพียงรูปเดียว เช่น "!" เครื่องหมายอัศเจรีย์ประกอบด้วย 2 ส่วน (แท่งและจุด) ดังนั้นก่อนที่จะค้นหาในฐานความรู้ คุณจะต้องคำนวณมูลค่ารวมของคุณลักษณะออยเลอร์จากทั้งสองส่วน หากแม้หลังจากติดกาวกับส่วนที่อยู่ติดกันแล้ว แต่ไม่พบผลลัพธ์ที่ยอมรับได้ เราก็ถือว่าแฟรกเมนต์นั้นเป็นขยะและข้ามไป

องค์ประกอบของระบบ:

  1. ฐานความรู้- ไฟล์หรือไฟล์ที่สร้างขึ้นโดยฉันหรือบุคคลอื่นซึ่งมีชุดอักขระที่มีลักษณะเฉพาะและจำเป็นสำหรับการจดจำ
  2. แกนกลาง- มีฟังก์ชันพื้นฐานที่ทำหน้าที่จดจำ
  3. เครื่องกำเนิดไฟฟ้า- โมดูลสำหรับการสร้างฐานความรู้

ClearType และการป้องกันนามแฝง

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

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

รูปนี้แสดงสี่เหลี่ยมจัตุรัสขนาด 3x3 พิกเซลของเมทริกซ์ LCD

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


เพื่อให้ได้ภาพขาวดำ

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

ฐานความรู้

แนวคิดเริ่มแรกในการเติมฐานความรู้คือสำหรับตัวอักษรแต่ละตัวของภาษา ฉันจะคำนวณคุณลักษณะออยเลอร์ของภาพสัญลักษณ์ผลลัพธ์สำหรับแบบอักษร 140 แบบที่ติดตั้งบนคอมพิวเตอร์ของฉัน (C:\Windows\Fonts) ให้เพิ่มองค์ประกอบทั้งหมด ตัวเลือกสำหรับประเภทแบบอักษร (ปกติ เจ้าอ้วน, ตัวเอียง) และขนาดตั้งแต่ 8 ถึง 32 ดังนั้นจึงครอบคลุมรูปแบบตัวอักษรและฐานทั้งหมดหรือเกือบทั้งหมดจะกลายเป็นสากล แต่น่าเสียดายที่สิ่งนี้กลับกลายเป็นว่าไม่ดีเท่าที่ควร ด้วยเงื่อนไขเหล่านี้ นี่คือสิ่งที่ฉันได้รับ:

  1. ไฟล์ฐานความรู้มีขนาดค่อนข้างใหญ่ (ประมาณ 3 เมกะไบต์) สำหรับภาษารัสเซียและอังกฤษ แม้ว่าคุณสมบัติออยเลอร์จะถูกจัดเก็บเป็นสตริงธรรมดา 15 หลักและตัวไฟล์เองก็เป็นไฟล์บีบอัด (DeflateStream) ซึ่งจะถูกแตกไฟล์ในหน่วยความจำ
  2. ฉันใช้เวลาประมาณ 10 วินาทีในการดีซีเรียลไลซ์ฐานความรู้ ในเวลาเดียวกัน เวลาในการเปรียบเทียบชุดคุณลักษณะก็ประสบปัญหา ไม่สามารถค้นหาฟังก์ชันสำหรับคำนวณ GetHashCode() ได้ ดังนั้นฉันจึงต้องเปรียบเทียบทีละนิด และเมื่อเทียบกับฐานความรู้ 3-5 ฟอนต์ ระยะเวลาในการวิเคราะห์ข้อความด้วยฐานข้อมูล 140 ฟอนต์ เพิ่มขึ้น 30-50 เท่า ในเวลาเดียวกัน ชุดคุณลักษณะเดียวกันจะไม่ถูกบันทึกในฐานความรู้ แม้ว่าอักขระบางตัวในแบบอักษรที่แตกต่างกันอาจดูเหมือนกันและคล้ายกัน แม้ว่าจะมีแบบอักษรเช่น 20 และ 21 ก็ตาม

ดังนั้นฉันจึงต้องสร้างฐานความรู้ขนาดเล็กที่อยู่ภายในโมดูล Core และทำให้สามารถตรวจสอบการทำงานได้ มีปัญหาร้ายแรงมากในการกรอกฐานข้อมูล แบบอักษรบางแบบอาจไม่แสดงอักขระขนาดเล็กอย่างถูกต้อง สมมติว่าอักขระ "e" เมื่อแสดงผลเป็นฟอนต์ขนาด 8 ชื่อ "Franklin Gothic Medium" กลายเป็น:

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

อัลกอริธึมการค้นหาตัวอักษร

ฉันจะบอกทันทีว่าในตอนแรกฉันประเมินปัญหานี้ต่ำเกินไปในการค้นหาและลืมไปว่าสัญลักษณ์อาจประกอบด้วยหลายส่วน สำหรับฉันดูเหมือนว่าระหว่างการผ่านแบบพิกเซลต่อพิกเซล ฉันจะพบสัญลักษณ์ ค้นหาส่วนต่างๆ ของมัน (ถ้ามี) รวมเข้าด้วยกันและวิเคราะห์ รหัสผ่านปกติจะมีลักษณะดังนี้: ฉันค้นหาตัวอักษร "H" (ในฐานความรู้) และพิจารณาว่าอักขระทั้งหมดที่อยู่ใต้จุดบนและเหนือจุดล่างเป็นของบรรทัดปัจจุบัน และควรใช้นามแฝงร่วมกัน:

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


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

การวิเคราะห์พฤติกรรมในการวิเคราะห์ภาพ


ฮิวริสติกในการจดจำภาพคืออะไร?
นี่คือกระบวนการที่ชุดคุณลักษณะที่ไม่ปรากฏในฐานความรู้ได้รับการยอมรับว่าเป็นตัวอักษรที่ถูกต้อง ฉันคิดมานานแล้วว่าจะดำเนินการวิเคราะห์อย่างไร และในที่สุดอัลกอริธึมที่ประสบความสำเร็จที่สุดก็กลายเป็นสิ่งนี้:

  1. ฉันพบชุดคุณลักษณะทั้งหมดในฐานความรู้ที่มีค่าจำนวนมากที่สุด แฟรกเมนต์ Fตรงกับภาพที่ได้รับการยอมรับ
  2. ต่อไป ฉันเลือกเฉพาะชุดคุณลักษณะเหล่านั้นซึ่งด้วยภาพที่ได้รับการยอมรับตามค่า F ที่ไม่เท่ากันของแฟรกเมนต์ ความแตกต่างจะไม่เกิน +- 1 หน่วย: -1< F < 1. И это все подсчитывается для каждой буквы алфавита.
  3. จากนั้นผมจะเจอสัญลักษณ์ที่มีจำนวนครั้งมากที่สุด เมื่อพิจารณาถึงผลลัพธ์ของการวิเคราะห์ฮิวริสติก
อัลกอริธึมนี้ไม่ได้ให้ผลลัพธ์ที่ดีที่สุดกับรูปภาพที่มีตัวอักษรขนาดเล็ก (ขนาดตัวอักษร 7 - 12) . แต่อาจเป็นเพราะฐานความรู้มีชุดคุณลักษณะสำหรับรูปภาพที่คล้ายกันซึ่งมีสัญลักษณ์ต่างกัน

ตัวอย่างการใช้งานในภาษา C#

ตัวอย่างการเริ่มต้นของการจดจำรูปภาพ ตัวแปรผลลัพธ์จะมีข้อความ:

ตัวจดจำ var = TextRecognizer ใหม่ (คอนเทนเนอร์); รายงาน var = รู้จักจดจำ (รูปภาพ); // ข้อความดิบ. ผลลัพธ์ var = report.RawText();// รายการแฟรกเมนต์และสถานะการจดจำทั้งหมดสำหรับแต่ละรายการ

var แฟรกเมนต์ = report.Symbols;

โครงการสาธิต ฉันเขียนเพื่อสาธิตการทำงานด้วยภาพดับบลิวพีเอฟ แอปพลิเคชัน. โดยเปิดตัวจากโครงการชื่อ “ Qocr.Application.Wpf

" ตัวอย่างของหน้าต่างพร้อมผลการจดจำอยู่ด้านล่าง:

  • ในการจดจำภาพคุณจะต้อง: กด"ภาพใหม่"
  • เลือกภาพสำหรับการจดจำ การใช้ ""คุณสามารถดูได้ว่าภาพใดจะถูกวิเคราะห์ หากคุณเห็นภาพคุณภาพต่ำมาก ก็อย่าคาดหวังผลลัพธ์ที่ดี เพื่อปรับปรุงผลลัพธ์ คุณสามารถลองเขียนภาพสีลงในตัวแปลงขาวดำด้วยตัวเอง
  • การเลือกภาษา "ภาษา".
  • คลิกรับรู้ "จำได้".
ส่วนของรูปภาพทั้งหมดควรมีกรอบสีส้มหรือสีเขียว
ตัวอย่างของการรู้จำข้อความภาษาอังกฤษ:

ให้เรามีหน้าจออยู่ตรงหน้าเรา แบ่งเป็น 12 เซลล์ 4 x 3 เซลล์ต่างๆ สะท้อนถึงความไม่ต่อเนื่องขององค์ประกอบภาพ เมื่อโฟกัสภาพ เซลล์จะสว่างหรือไม่ก็ตาม “ การส่องสว่าง” กำหนดค่าเดียวของขนาดของการกระตุ้น“ การไม่เปิดรับแสง” - ศูนย์ ดังนั้นตัวอักษร O จะกำหนดความสว่างของเซลล์ซึ่งกำหนดไว้ในรูปที่ 2.1 ตัวอักษร A จะส่องสว่างหน้าจอ ดังแสดงในรูปที่ 2.2

จะต้องทำอย่างไรเพื่อให้อุปกรณ์บางตัวที่เรากำลังออกแบบสามารถบอกได้ว่าเป็นตัวอักษรอะไร?

แน่นอนว่าสัญญาณกระตุ้นทั้งหมดของเซลล์หน้าจอที่ส่องสว่างด้วยตัวอักษร O จะต้องถูกส่งไปยังตัวเชื่อมต่อซึ่งใช้วงจร I สัญญาณเดียวที่เอาต์พุตของตัวเชื่อมต่อดังแสดงในรูปที่ 2.1 จะถูกสร้างขึ้น ถ้าหากเมื่อเซลล์ทั้งหมดของหน้าจอที่วางภาพไว้จะมีตัวอักษร O เรืองแสง การมีอยู่ของสัญญาณเดียวที่เอาต์พุตของตัวเชื่อมต่อจะกำหนดคำตอบ: "นี่คือตัวอักษร O"


ข้าว. 2.1.การสอนตัวอักษร "O"


ข้าว. 2.2.การสอนตัวอักษร "A"

ต้องทำเช่นเดียวกันกับตัวอักษร A

มาทำเครื่องหมายแต่ละเซลล์ของหน้าจอด้วยพิกัดของมัน จากนั้นในภาษาของตรรกะทางคณิตศาสตร์สิ่งที่เราทำสามารถเขียนในรูปแบบของข้อความเชิงตรรกะ - ภาคแสดง:

เพรดิเคตเหล่านี้กำหนดรูปลักษณ์ "อิเล็กทรอนิกส์" โดยใช้วิธีการออกแบบวงจร

ในกรณีนี้ตัวอักษรจะไม่ "รบกวน" ซึ่งกันและกันเนื่องจากการส่องสว่างของเซลล์หน้าจอที่เกี่ยวข้องนั้นไม่ตรงกันบางส่วนและค่าหน่วยของการรวมจะถูกกำหนดสำหรับหนึ่งในนั้นเท่านั้น

จะเป็นอย่างไรถ้าคุณใส่ตัวอักษร K บนหน้าจอ? จากนั้นจะไม่มีตัวเชื่อมต่อสองตัวใดที่จะสร้างค่าเดียวเนื่องจากจะไม่มีการส่องสว่างของเซลล์หน้าจอที่สอดคล้องกันโดยสมบูรณ์ หากต้องการ "สอน" ระบบตัวอักษร K คุณต้องแนะนำตัวเชื่อมอื่นและทำโครงสร้างแบบเดียวกับข้างต้น

ดังนั้น เราสามารถพูดได้ว่าเราได้สร้างระบบสำหรับจดจำตัวอักษรสองตัวที่ "ถูกต้อง" ที่ให้มา

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

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

ในทำนองเดียวกัน สำหรับตัวอักษร A ปล่อยให้เซลล์ (4,1) และ (4,3) สว่างขึ้น:


ข้าว. 2.3.การสอนร่วมกันของตัวอักษร "O" และ "A"

เมื่อรวมเพรดิเคตทั้งสองเข้าด้วยกัน เราจะได้แผนภาพในรูปที่ 2.3

ดังนั้นเราจึงได้ใช้แนวทาง "เทคนิควงจร" เพื่อการเรียนรู้และการจดจำ โดยอิงจากการใช้ฟังก์ชันบูลีนและการดำเนินงาน ตัวแปรบูลีน 0, 1.

การสร้างโครงข่ายประสาทเทียมแบบลอจิคัลที่ได้รับการฝึกฝนให้จดจำตัวอักษร

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

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

ซึ่งหมายความว่า เราจำเป็นต้องเปลี่ยนจากตัวแปรบูลีนที่กำหนดไว้อย่างดี (0, 1, “ใช่ - ไม่ใช่”, “ขาว - ดำ” ฯลฯ) ไปสู่ความไม่แน่นอน ความน่าเชื่อถือ หรือการประเมินข้อมูลอื่นๆ ไปสู่ตัวแปรจริง

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

มาเปลี่ยนวงจรที่ผ่านการฝึกอบรมที่เราได้รับให้เป็นโครงข่ายประสาทเทียม (รูปที่ 2.4)

แต่ละเซลล์ของหน้าจอเป็นเซลล์ประสาทตัวรับ ซึ่งเป็นผลมาจากการส่องสว่าง ได้รับการกระตุ้นจำนวนหนึ่ง โดยรับค่าระหว่างศูนย์ถึงหนึ่ง ตัวรับที่มาแทนที่หน้าจอจะสร้างอินพุตหรือ ชั้นตัวรับโครงข่ายประสาทเทียม เราจะแทนที่ conjunctor และ disjunctor แต่ละตัวด้วยโมเดลเซลล์ประสาทเดี่ยวสำหรับเครือข่ายทั้งหมด ให้เราแนะนำเลเยอร์เอาท์พุตของเครือข่าย ซึ่งในตัวอย่างของเราประกอบด้วยเซลล์ประสาทสองตัว การกระตุ้นซึ่งจะกำหนดผลการจดจำ ตั้งชื่อเซลล์ประสาทของเลเยอร์เอาท์พุตด้วยชื่อของตัวอักษร - O และ A

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


ข้าว. 2.4.โครงข่ายประสาทเทียมสำหรับจดจำตัวอักษร "O" และ "A"

เนื่องจากการทำงานของสมองถูกจำลองในระดับตรรกะ ฟังก์ชั่นการเปิดใช้งานทางเลือกค่อนข้างง่าย ดังนั้นในตัวอย่างของเรา ก็เพียงพอที่จะเลือกสิ่งต่อไปนี้ ฟังก์ชั่นการเปิดใช้งานเพื่อค้นหาค่าการกระตุ้นของเซลล์ประสาท i-th:

ในตอนแรกเราจะพบว่า

จากนั้นเราก็ใส่

หนังสือโดย Michael Nilsson "โครงข่ายประสาทเทียมและการเรียนรู้เชิงลึก"


ฉันแบ่งการแปลออกเป็นบทความหลายบทความเกี่ยวกับHabréเพื่อให้อ่านง่ายขึ้น:
ส่วนที่ 1) ความรู้เบื้องต้นเกี่ยวกับโครงข่ายประสาทเทียม
ส่วนที่ 2) การก่อสร้างและการลาดลง
ส่วนที่ 3) การใช้งานเครือข่ายเพื่อการจดจำตัวเลข
ตอนที่ 4) เล็กน้อยเกี่ยวกับการเรียนรู้เชิงลึก

การแนะนำ

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

สัญชาตญาณง่ายๆ - "9 มีห่วงที่ด้านบนและมีหางแนวตั้งที่ด้านล่าง" ไม่ใช่เรื่องง่ายที่จะนำไปใช้ตามอัลกอริทึม โครงข่ายประสาทเทียมใช้ตัวอย่าง อนุมานกฎบางอย่าง และเรียนรู้จากกฎเหล่านั้น ยิ่งไปกว่านั้น ยิ่งเราแสดงตัวอย่างเครือข่ายมากเท่าใด ระบบก็จะยิ่งเรียนรู้เกี่ยวกับตัวเลขที่เขียนด้วยลายมือมากขึ้นเท่านั้น ดังนั้นจึงสามารถจำแนกตัวเลขเหล่านั้นได้แม่นยำยิ่งขึ้น เราจะเขียนโปรแกรมด้วยโค้ด 74 บรรทัดที่จะตรวจจับตัวเลขที่เขียนด้วยลายมือด้วยความแม่นยำ >99% ไปกันเลย!

เพอร์เซปตรอน

โครงข่ายประสาทเทียมคืออะไร? ขั้นแรก ผมจะอธิบายแบบจำลองของเซลล์ประสาทเทียม เพอร์เซพตรอนได้รับการพัฒนาในปี 1950 โดยแฟรงก์ โรเซนแบลตต์ และวันนี้เราจะใช้หนึ่งในโมเดลหลักของเขา นั่นก็คือ ซิกมอยด์ เพอร์เซพตรอน แล้วมันทำงานยังไง? Persepron ใช้เวกเตอร์เป็นอินพุตและส่งคืนค่าเอาต์พุตบางส่วน



Rosenblatt เสนอกฎง่ายๆ สำหรับการคำนวณค่าเอาต์พุต เขาแนะนำแนวคิดเรื่อง "ความสำคัญ" จากนั้นจึงแนะนำ "น้ำหนัก" ของแต่ละค่าอินพุต ในกรณีของเรานั้นจะขึ้นอยู่กับว่าค่านั้นมากกว่าหรือน้อยกว่าค่าเกณฑ์ที่กำหนด



และนั่นคือทั้งหมดที่เราต้องการ! ด้วยการเปลี่ยนแปลงเวกเตอร์ของน้ำหนัก คุณจะได้แบบจำลองการตัดสินใจที่แตกต่างกันโดยสิ้นเชิง ตอนนี้เรากลับมาที่โครงข่ายประสาทเทียม



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


ปัญหาการเรียนรู้

หากต้องการดูว่าการเรียนรู้ทำงานอย่างไร สมมติว่าเราเปลี่ยนแปลงน้ำหนักหรืออคติในเครือข่ายเล็กน้อย เราต้องการให้การเปลี่ยนแปลงน้ำหนักเล็กน้อยนี้ทำให้เกิดการเปลี่ยนแปลงเล็กน้อยในเอาต์พุตของเครือข่าย แผนผังมีลักษณะดังนี้:



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

เซลล์ประสาทซิกมอยด์

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



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


สถาปัตยกรรมโครงข่ายประสาทเทียม

การออกแบบเลเยอร์อินพุตและเอาต์พุตของโครงข่ายประสาทเทียมนั้นค่อนข้างง่าย ตัวอย่างเช่น สมมติว่าเรากำลังพยายามพิจารณาว่ามีเลข "9" ที่เขียนด้วยลายมืออยู่ในรูปภาพหรือไม่ วิธีธรรมชาติในการออกแบบเครือข่ายคือการเข้ารหัสความเข้มของพิกเซลภาพลงในเซลล์ประสาทอินพุต หากรูปภาพมีขนาด แสดงว่ามีเซลล์ประสาทอินพุต เลเยอร์เอาท์พุตมีเซลล์ประสาทหนึ่งอันซึ่งมีค่าเอาท์พุต หากมีค่ามากกว่า 0.5 แสดงว่ามี "9" อยู่ในภาพ มิฉะนั้นจะไม่มี แม้ว่าการออกแบบเลเยอร์อินพุตและเอาท์พุตจะเป็นงานที่ค่อนข้างง่าย แต่การเลือกสถาปัตยกรรมเลเยอร์ที่ซ่อนอยู่ถือเป็นศิลปะอย่างหนึ่ง นักวิจัยได้พัฒนาพฤติกรรมการออกแบบเลเยอร์ที่ซ่อนอยู่ที่หลากหลาย เช่น พฤติกรรมที่ช่วยชดเชยจำนวนเลเยอร์ที่ซ่อนอยู่เทียบกับเวลาการฝึกอบรมเครือข่าย


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


นั่นคือทั้งหมดสำหรับวันนี้ ในบทความถัดไป ฉันจะพูดถึงการไล่ระดับสีและการฝึกฝนเครือข่ายในอนาคตของเรา ขอบคุณสำหรับความสนใจของคุณ!

ปัญหาการรู้จำภาพเป็นหนึ่งในปัญหาที่แพร่หลายที่สุดที่แก้ไขได้สำเร็จโดยใช้ ANN มีการกำหนดปัญหาที่หลากหลายที่นี่ หนึ่งในตัวเลือกที่ง่ายที่สุดคือการจดจำชุดอักขระที่ตายตัว

ตัวอย่างที่ 3.11การรับรู้จดหมาย ระบบ MatLab มีฟังก์ชั่นพิเศษ

>> = พรพร็อบ;

ฟังก์ชันนี้ส่งคืนเมทริกซ์ไบนารีสองตัว: ในเมทริกซ์ตัวอักษร (ขนาด 35x26) แต่ละคอลัมน์จะเข้ารหัสตัวอักษรหนึ่งตัว และเมทริกซ์เป้าหมาย (ขนาด 26x26) จะเป็นเส้นทแยงมุมและทำหน้าที่ระบุคอลัมน์

แต่ละคอลัมน์ของตัวอักษรสอดคล้องกับเมทริกซ์ขนาด 7x5 ซึ่งเป็นภาพไบนารีของตัวอักษร

ฟังก์ชันต่อไปนี้จะแสดงคอลัมน์ตัวอักษรทั้งหมดเป็นตัวอักษร (ฟังก์ชันจะต้องอยู่ในไดเร็กทอรีการทำงานของ MatLab):

ฟังก์ชัน plotletters(ตัวอักษร)

fprintf("plotletters กำลังพล็อตตัวอักษร 25 ตัวแรก\n");

ขนาด(ตัวอักษร);

error("ตัวเขียนต้องมีคอลัมน์ยาว 35 ตัวเลข");

MM=แผนผังสี(สีเทา);

ดด=ดด(จบ:-1:1,:);

imagec(ปรับรูปร่างใหม่(ตัวอักษร(:,j),5,7)");

ผลลัพธ์ของการดำเนินการฟังก์ชันจะแสดงในรูป 3.12:

>> โครงเรื่อง(ตัวอักษร);

รูปที่ 3.12.การเข้ารหัสตัวอักษรไบนารี

ตามโครงสร้างของเมทริกซ์เป้าหมาย โครงข่ายประสาทเทียมควรมีเซลล์ประสาทเอาท์พุต 26 ตัว มาตั้งค่าจำนวนเซลล์ประสาทในเลเยอร์ที่ซ่อนอยู่เป็น 10

>> net = newff(minmax(ตัวอักษร),,("logsig" "logsig"),"traingdx");

>> P = ตัวอักษร; T = เป้าหมาย;

มากำหนดจำนวนยุคและเริ่มกระบวนการเรียนรู้กันดีกว่า:

>> net.trainParam.epochs = 1,000;

>> = รถไฟ (สุทธิ, P, T);

เส้นโค้งการเรียนรู้จะแสดงในรูป 3.13.

รูปที่ 3.13.การเปลี่ยนแปลงข้อผิดพลาดในระหว่างกระบวนการฝึกอบรม

หากต้องการตรวจสอบคุณภาพของเครือข่ายที่ได้รับการฝึกอบรมให้พิจารณาภาพตัวอักษรที่มีเสียงดัง (รูปที่ 3.14):

>> noisyP = ตัวอักษร+randn(ขนาด(ตัวอักษร)) * 0.2;

>> โครงเรื่อง(noisyP);

คำสั่งต่อไปนี้รันเครือข่ายบนชุดอินพุตที่มีสัญญาณรบกวน:

>> A2 = ซิม(เน็ต,noisyP);

เมทริกซ์ A2 ที่นี่ประกอบด้วยตัวเลขต่างๆ ในช่วง การใช้ฟังก์ชัน แข่งขันคุณสามารถเลือกองค์ประกอบสูงสุดในแต่ละคอลัมน์ จากนั้นกำหนดค่า 1 ให้กับองค์ประกอบนั้น และรีเซ็ตองค์ประกอบที่เหลือของคอลัมน์ให้เป็นศูนย์:

รูปที่ 3.14.รูปภาพตัวอักษรต่อหน้าเสียงรบกวน

>>สำหรับเจ=1:26

A3 = แข่งขัน(A2(:,j));

คำตอบ (j) = ค้นหา (แข่งขัน (A3) == 1);

จากนั้น คุณสามารถประเมินการตอบสนองของเครือข่ายต่อเวกเตอร์อินพุตที่มีสัญญาณรบกวนด้วยสายตาได้โดยใช้คำสั่ง:

>> NetLetters=ตัวอักษร(:,ตอบ);

>> โครงเรื่อง (NetLetters);

ในรูป รูปที่ 3.15 แสดงผลการจดจำขั้นสุดท้าย

รูปที่ 3.15.ผลลัพธ์ของการรับรู้โครงข่ายประสาทเทียม

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



แบ่งปัน: