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

ลองพิจารณาโครงข่ายประสาทเทียมแบบกระตุ้น: คุณสมบัติ โอกาส และข้อดี ซึ่งต้องขอบคุณการแทนที่รุ่นที่ 2 ได้สำเร็จ

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

โครงข่ายประสาทเทียมแบบพัลส์: หลักการทำงาน

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

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


ตัวอย่างสัญญาณบนเซลล์ประสาทสามตัวของโครงข่ายประสาทเทียมแบบพัลส์

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


ศักยภาพของเยื่อหุ้มเซลล์ประสาทระหว่างการส่งสัญญาณ

มีการใช้แบบจำลองต่างๆ เพื่ออธิบายกระบวนการ การสลับเครือข่ายนิวรัลยังแตกต่างจากเครือข่ายรุ่นที่สองตรงที่เครือข่ายมีความสอดคล้องกันน้อยกว่าและมีความเฉพาะเจาะจงมากขึ้นในโทโพโลยี

Spike Neural Networks: ระยะทางและเวลา

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

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

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

ปัญหาในการใช้งานจริง

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

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

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

แนวโน้มการพัฒนา

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

สิ่งพิมพ์ส่วนใหญ่บน SNN มีทั้งเชิงทฤษฎีหรือมีประสิทธิภาพต่ำ งานที่ทันสมัยผลงาน. เมื่อพิจารณาถึงคำมั่นสัญญาที่รุนแรงของทิศทางนี้ การแก้ปัญหา งานที่ระบุกลุ่มวิทยาศาสตร์จำนวนมากกำลังทำงานอยู่

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

ขั้นตอนที่ 1 เซลล์ประสาทและวิธีการป้อนไปข้างหน้า

แล้ว “โครงข่ายประสาทเทียม” คืออะไร? รอเรื่องนี้แล้วจัดการกับเซลล์ประสาทหนึ่งอันก่อน

เซลล์ประสาทเป็นเหมือนฟังก์ชัน: ใช้ค่าหลายค่าเป็นอินพุตและส่งคืนค่าหนึ่งค่า

วงกลมด้านล่างแสดงถึงเซลล์ประสาทเทียม ได้รับ 5 และส่งคืน 1 อินพุตคือผลรวมของไซแนปส์ทั้งสามที่เชื่อมต่อกับเซลล์ประสาท (ลูกศรสามลูกทางด้านซ้าย)

ทางด้านซ้ายของภาพเราเห็นค่าอินพุต 2 ค่า ( สีเขียว) และออฟเซ็ต (เน้นด้วยสีน้ำตาล)

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

ค่าอินพุตจะถูกคูณด้วยสิ่งที่เรียกว่า "น้ำหนัก", 7 และ 3 (เน้นด้วยสีน้ำเงิน)

ตอนนี้เราเพิ่มค่าผลลัพธ์ด้วยการชดเชยและรับตัวเลขในกรณีของเรา 5 (เน้นด้วยสีแดง) นี่คือสัญญาณเข้าของเซลล์ประสาทเทียมของเรา

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

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

ภาพประกอบของโครงข่ายประสาทเทียมจากวิกิพีเดีย

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

ขั้นตอนที่ 2 ซิกมอยด์

หลังจากที่คุณได้ดูบทเรียนของ Welch Labs แล้ว เป็นความคิดที่ดีที่จะลองดูหลักสูตรการเรียนรู้ของเครื่องของ Coursera เกี่ยวกับโครงข่ายประสาทเทียมสัปดาห์ที่ 4 เพื่อช่วยให้คุณเข้าใจวิธีการทำงาน หลักสูตรนี้เจาะลึกวิชาคณิตศาสตร์และใช้ Octave ในขณะที่ฉันชอบ Python มากกว่า ด้วยเหตุนี้ ฉันจึงข้ามแบบฝึกหัดและรับความรู้ที่จำเป็นทั้งหมดจากวิดีโอ

ซิกมอยด์เพียงจับคู่ค่าของคุณ (บนแกนนอน) กับช่วงตั้งแต่ 0 ถึง 1

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

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

ใช้เวลาทั้งวันและผลลัพธ์ก็ไม่น่าพอใจเลย แต่มันไม่สำคัญเพราะฉันเข้าใจแล้วว่าทุกอย่างทำงานอย่างไร สามารถดูรหัสได้

คุณไม่จำเป็นต้องทำสิ่งนี้ด้วยตัวเองเนื่องจากต้องใช้ความรู้พิเศษ - สิ่งสำคัญคือคุณเข้าใจว่าซิกมอยด์ทำงานอย่างไร

ขั้นตอนที่ 3 วิธีการ Backpropagation

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

สวัสดีทุกคน!

ในบทความนี้ ผมจะพูดถึงวิธีใหม่ที่สะดวกสบายในการเขียนโปรแกรมใน Python

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

ตัวอย่างเอกสารที่คุณสามารถสร้างได้:

ดูเท่ใช่ไหม? คุณต้องการสร้างเอกสารเดียวกันหรือไม่? บทความนี้เหมาะสำหรับคุณ!

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

เนื้อหานี้มีไว้สำหรับผู้ที่ไม่คุ้นเคยกับภาษาการเขียนโปรแกรม

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

หากติดตั้งและกำหนดค่าทุกอย่างแล้ว คุณก็สามารถเริ่มต้นได้

โครงข่ายประสาทเทียมต้องเขียนด้วยภาษาโปรแกรมบางภาษา มีมากมาย แต่ฉันแนะนำ (และใช้ในตำราเรียนและบทความ) อย่างแน่นอน ภาษาหลาม- ทำไม

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

ในส่วนก่อนหน้านี้ เราได้เรียนรู้วิธีการคำนวณการเปลี่ยนแปลงของสัญญาณเมื่อผ่านโครงข่ายประสาทเทียม เราได้ทำความคุ้นเคยกับเมทริกซ์ ผลิตภัณฑ์ของเมทริกซ์ และสูตรการคำนวณอย่างง่ายที่ได้รับมา

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

เนื้อหามีความซับซ้อน ดังนั้นอย่าลังเลที่จะถามคำถามของคุณในฟอรัม

คุณสามารถโอน.

มีความสุขในการอ่าน!

ในส่วนที่ 5 ของการแปล ฉันนำเสนอ 3 ส่วนที่เกี่ยวข้องกับความหมาย

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

คุณสามารถโอน.

มีความสุขในการอ่าน!

การแปลส่วนที่ 4 พร้อมแล้ว!

เรามาหยุดเต้นไปรอบ ๆ พุ่มไม้แล้วมุ่งตรงไปที่หัวข้อของหนังสือ - โครงข่ายประสาทเทียม

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

คุณสามารถโอน.

มีความสุขในการอ่าน!

การแปลส่วนที่สาม!

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

คุณสามารถโอน.

มีความสุขในการอ่าน!

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

ตัวอย่างเช่น นี่คือสิ่งที่โครงข่ายประสาทเทียมพัฒนาขึ้นสำหรับฉัน

ในอดีต โครงข่ายประสาทเทียมตลอดประวัติศาสตร์กว่าครึ่งศตวรรษ มีประสบการณ์ทั้งในช่วงเวลาที่เพิ่มขึ้นอย่างรวดเร็วและได้รับความสนใจจากสาธารณชนมากขึ้น เช่นเดียวกับช่วงเวลาแห่งความสงสัยและความเฉยเมยที่ตามมา ใน ช่วงเวลาที่ดีสำหรับนักวิทยาศาสตร์และวิศวกรดูเหมือนว่าในที่สุดพวกเขาก็ได้พบเทคโนโลยีสากลที่สามารถแทนที่มนุษย์ในงานด้านการรับรู้ได้ เช่นเดียวกับเห็ดหลังฝนตก โมเดลใหม่ๆ ของโครงข่ายประสาทเทียมกำลังปรากฏขึ้น และมีการถกเถียงกันอย่างดุเดือดระหว่างผู้เขียน นักคณิตศาสตร์มืออาชีพ เกี่ยวกับระดับทางชีววิทยาที่มากหรือน้อยของแบบจำลองที่พวกเขาเสนอ นักชีววิทยามืออาชีพสังเกตการสนทนาเหล่านี้จากนอกสนาม โดยแจกแจงเป็นระยะๆ และอุทานว่า “ใช่ สิ่งนี้ไม่ได้เกิดขึ้นโดยธรรมชาติ!” - และไม่มีผลกระทบมากนัก เนื่องจากตามกฎแล้วนักคณิตศาสตร์โครงข่ายประสาทเทียมจะฟังนักชีววิทยาก็ต่อเมื่อข้อเท็จจริงของนักชีววิทยาเห็นด้วยกับพวกเขาเท่านั้น ทฤษฎีของตัวเอง- อย่างไรก็ตาม เมื่อเวลาผ่านไป กลุ่มของงานจะค่อยๆ สะสม ซึ่งโครงข่ายประสาทเทียมทำงานได้ไม่ดีอย่างตรงไปตรงมา และความกระตือรือร้นของผู้คนลดลง

ทุกวันนี้ โครงข่ายประสาทเทียมกลับมาสู่จุดสูงสุดของชื่อเสียงอีกครั้ง ด้วยการประดิษฐ์วิธีการฝึกอบรมล่วงหน้าแบบไม่มีผู้ดูแลซึ่งอิงจากเครื่อง Bolzmann Machines ที่จำกัด (RBM) ซึ่งทำให้สามารถฝึกโครงข่ายประสาทเชิงลึกได้ (เช่น มีขนาดใหญ่พิเศษ บน จำนวนเซลล์ประสาทนับหมื่น) และความสำเร็จของโครงข่ายประสาทเทียมเชิงลึกในปัญหาเชิงปฏิบัติของการรู้จำคำพูดและภาพ ตัวอย่างเช่น การรู้จำคำพูดใน Android ถูกนำมาใช้โดยใช้โครงข่ายประสาทเทียมระดับลึก สิ่งนี้จะคงอยู่ได้นานแค่ไหนและโครงข่ายประสาทเทียมที่ลึกแค่ไหนจะเป็นไปตามความคาดหวังที่ตั้งไว้นั้นไม่เป็นที่ทราบแน่ชัด
ในขณะเดียวกัน ชุมชนผู้ใช้โครงข่ายประสาทเทียมมีความโดดเด่นอย่างเห็นได้ชัด ควบคู่ไปกับข้อโต้แย้งทางวิทยาศาสตร์ กระแสและแนวโน้มทั้งหมด โดยเป็นวิศวกรซอฟต์แวร์ที่สนใจในด้านการประยุกต์ใช้โครงข่ายประสาทเทียม ความสามารถในการเรียนรู้จากข้อมูลที่เก็บรวบรวม และแก้ปัญหาการจดจำ ที่มีมากมาย งานภาคปฏิบัติการจำแนกประเภทและการทำนายทำงานได้ดีกับโมเดล Multilayer Perceptron (MLP) ขนาดค่อนข้างเล็กที่ได้รับการออกแบบมาอย่างดีและเครือข่าย Radial Basis Function (RBF) มีการอธิบายโครงข่ายประสาทเทียมเหล่านี้หลายครั้ง ฉันอยากจะแนะนำหนังสือต่อไปนี้ตามลำดับความเห็นอกเห็นใจส่วนตัวของฉัน: Osovsky, Bishop, Khaikin; นอกจากนี้ยังมีหลักสูตรดีๆ เกี่ยวกับ Coursera และแหล่งข้อมูลที่คล้ายกันอีกด้วย

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

นี่คือรายการกฎของฉันและ ข้อผิดพลาดทั่วไปการใช้โครงข่ายประสาทเทียม

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

2. ความซับซ้อนของโครงข่ายประสาทเทียมจะต้องเพียงพอกับความซับซ้อนของงาน
ทันสมัย คอมพิวเตอร์ส่วนบุคคล(เช่น Core i5, RAM 8 GB) ช่วยให้คุณฝึกโครงข่ายประสาทเทียมในเวลาที่สะดวกสบายโดยใช้ตัวอย่างนับหมื่นตัวอย่าง พร้อมขนาดข้อมูลอินพุตสูงสุดหลายร้อยตัวอย่าง ตัวอย่างขนาดใหญ่ถือเป็นความท้าทายสำหรับโครงข่ายประสาทเชิงลึกที่กล่าวถึงข้างต้น ซึ่งได้รับการฝึกฝนบน GPU ที่มีโปรเซสเซอร์หลายตัว โมเดลเหล่านี้น่าสนใจมาก แต่อยู่นอกเหนือจุดเน้นของบทความ habr นี้

3. ข้อมูลการฝึกอบรมจะต้องเป็นตัวแทน
ตัวอย่างการฝึกอบรมควรนำเสนอปรากฏการณ์ที่อธิบายไว้อย่างครบถ้วนและครอบคลุมและรวมถึงปรากฏการณ์ต่างๆ สถานการณ์ที่เป็นไปได้- การมีข้อมูลจำนวนมากเป็นเรื่องดี แต่ในตัวมันเองไม่ได้ช่วยอะไรเสมอไป มีเรื่องตลกที่แพร่หลายในแวดวงแคบ ๆ เมื่อนักธรณีวิทยามาหาผู้จดจำ วางชิ้นส่วนแร่ไว้ข้างหน้าเขา และขอให้เขาพัฒนาระบบในการจดจำสารดังกล่าวโดยใช้มัน “ฉันขอตัวอย่างข้อมูลเพิ่มเติมได้ไหม” - ถามผู้จดจำ "แน่นอน!" - นักธรณีวิทยาตอบ หยิบเสียมออกมาแล้วแยกแร่ออกเป็นหลาย ๆ ชิ้น ตามที่คุณเข้าใจ การดำเนินการดังกล่าวจะไม่มีประโยชน์ - ไม่ ข้อมูลใหม่ตัวอย่างที่เพิ่มขึ้นดังกล่าวไม่มีอยู่ในตัวมันเอง

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

5. ทำให้ข้อมูลเป็นมาตรฐานและจัดกึ่งกลาง
สำหรับเพอร์เซปตรอนหลายชั้นและสำหรับรุ่นอื่น ๆ ค่าข้อมูลที่ป้อนจะต้องอยู่ในช่วง [-1;1] ก่อนที่จะป้อนให้กับโครงข่ายประสาทเทียม ให้ลบค่าเฉลี่ยออกจากข้อมูลแล้วหารค่าทั้งหมดด้วย ค่าสูงสุด.

6. แบ่งตัวอย่างออกเป็น การฝึก การทดสอบ และการตรวจสอบความถูกต้อง
ข้อผิดพลาดหลักของผู้เริ่มต้นคือการจัดเตรียม ข้อผิดพลาดน้อยที่สุดการทำงานของโครงข่ายประสาทเทียมในตัวอย่างการฝึกอบรม ขณะเดียวกันก็ฝึกมันขึ้นใหม่อย่างชั่วร้าย และหวังว่าจะได้ข้อมูลจริงใหม่ที่มีคุณภาพดีเหมือนกัน วิธีนี้ทำได้ง่ายเป็นพิเศษหากมีข้อมูลน้อย (หรือทั้งหมดมาจากชิ้นเดียว) ผลลัพธ์ที่ได้อาจทำให้ผิดหวังมาก: โครงข่ายประสาทเทียมจะปรับให้เข้ากับตัวอย่างให้มากที่สุดและจะสูญเสียฟังก์ชันการทำงานของข้อมูลจริง เพื่อควบคุมความสามารถทั่วไปของโมเดลของคุณ ให้แบ่งข้อมูลทั้งหมดออกเป็นสามตัวอย่างในอัตราส่วน 70: 20: 10 ฝึกบนรถไฟ โดยตรวจสอบคุณภาพของโมเดลในการทดสอบเป็นระยะ สำหรับการประเมินที่เป็นกลางขั้นสุดท้าย – การตรวจสอบความถูกต้อง
เทคนิคการตรวจสอบความถูกต้องข้าม เมื่อ Train และ Test ถูกสร้างขึ้นหลายครั้งในลักษณะสุ่มจากข้อมูลเดียวกัน อาจเป็นอันตรายและให้ความรู้สึกที่ผิดพลาดได้ คุณภาพดีการทำงานของระบบ - เช่น หากข้อมูลถูกนำมาจาก แหล่งที่มาที่แตกต่างกันและนี่เป็นสิ่งสำคัญ ใช้การตรวจสอบความถูกต้อง!

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

8. ไม่จำเป็นต้องฝึกโครงข่ายประสาทเทียมใหม่ทางออนไลน์
ความคิดในการฝึกโครงข่ายประสาทเทียมใหม่อย่างถาวรตลอดเวลากับข้อมูลขาเข้าใหม่นั้นถูกต้องในตัวเอง ในระบบทางชีววิทยาจริงนี่คือสิ่งที่เกิดขึ้น เราเรียนรู้ทุกวันและไม่ค่อยบ้า อย่างไรก็ตามสำหรับโครงข่ายประสาทเทียมแบบธรรมดาบน เวทีที่ทันสมัยในการพัฒนาด้านเทคนิค แนวทางปฏิบัตินี้มีความเสี่ยง: เครือข่ายอาจฝึกอบรมใหม่หรือปรับให้เข้ากับข้อมูลล่าสุดที่ได้รับ และสูญเสียความสามารถในการสรุปข้อมูลทั่วไป เพื่อให้ระบบถูกนำไปใช้ในทางปฏิบัติ โครงข่ายประสาทเทียมจะต้อง: 1) ฝึกฝน 2) ทดสอบคุณภาพในตัวอย่างการทดสอบและการตรวจสอบความถูกต้อง 3) เลือกตัวเลือกเครือข่ายที่ประสบความสำเร็จ แก้ไขน้ำหนักของมัน และ 4) ใช้โครงข่ายประสาทที่ได้รับการฝึกแล้ว เครือข่ายในทางปฏิบัติ น้ำหนักในกระบวนการไม่เปลี่ยนแปลงการใช้งาน

9. ใช้อัลกอริธึมการเรียนรู้ใหม่: Levenberg-Marquardt, BFGS, Conjugate Gradients ฯลฯ
ฉันเชื่อมั่นอย่างยิ่งว่าการนำการเรียนรู้แบบ backpropagation มาใช้นั้นเป็นหน้าที่อันศักดิ์สิทธิ์ของทุกคนที่ทำงานกับโครงข่ายประสาทเทียม วิธีนี้เป็นวิธีที่ง่ายที่สุดและค่อนข้างง่ายในการเขียนโปรแกรมและช่วยให้คุณสามารถศึกษากระบวนการเรียนรู้ของโครงข่ายประสาทเทียมได้อย่างละเอียด ในขณะเดียวกัน Backpropagation ถูกคิดค้นขึ้นในช่วงต้นทศวรรษที่ 70 และได้รับความนิยมในช่วงกลางทศวรรษที่ 80 ของศตวรรษที่ผ่านมา นับตั้งแต่นั้นมาก็มีวิธีการขั้นสูงมากขึ้นที่สามารถปรับปรุงคุณภาพการเรียนรู้ได้อย่างมาก ใช้มันดีกว่า

10. ฝึกอบรมโครงข่ายประสาทเทียมใน MATLAB และสภาพแวดล้อมที่เป็นมิตรต่อผู้ใช้ที่คล้ายกัน
หากคุณไม่ใช่นักวิทยาศาสตร์ที่พัฒนาวิธีการใหม่ในการฝึกอบรมโครงข่ายประสาทเทียม แต่เป็นโปรแกรมเมอร์ฝึกหัด ฉันจะไม่แนะนำให้เขียนโค้ดขั้นตอนในการฝึกโครงข่ายประสาทเทียมด้วยตัวเอง มีอยู่ จำนวนมาก แพคเกจซอฟต์แวร์โดยส่วนใหญ่อยู่ใน MATLAB และ Python ซึ่งช่วยให้คุณฝึกโครงข่ายประสาทเทียมพร้อมทั้งควบคุมกระบวนการฝึกและทดสอบโดยใช้ วิธีที่สะดวกการแสดงภาพและการดีบัก เพลิดเพลินไปกับมรดกของมนุษยชาติ! โดยส่วนตัวแล้วฉันชอบแนวทาง "ฝึกฝนใน MATLAB พร้อมไลบรารี่ที่ดี - ใช้โมเดลที่ผ่านการฝึกอบรมด้วยมือ" ซึ่งค่อนข้างทรงพลังและยืดหยุ่น ข้อยกเว้นคือแพ็คเกจ STATISTICA ซึ่งมีวิธีการขั้นสูงสำหรับการฝึกอบรมโครงข่ายประสาทเทียมและอนุญาตให้คุณสร้างในรูปแบบ รหัสโปรแกรมใน C สะดวกในการใช้งาน

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

ฉันขอให้คุณโชคดี!

วรรณกรรม

Hinton G., Deng L., Yu D., Dahl G., Mohamed A., Jaitly N., Senior A., ​​Vanhoucke V., Nguyen P., Sainath T. และ Kingsbury B. เครือข่ายประสาทเทียมลึกสำหรับอะคูสติก การสร้างแบบจำลองในการรู้จำเสียง นิตยสารการประมวลผลสัญญาณ IEEE ฉบับที่ 29, เลขที่. 6/2012 หน้า. 82 – 97.
Ciresan D., Meier U., Masci J และ Schmidhuber J. โครงข่ายประสาทเทียมเชิงลึกแบบหลายคอลัมน์สำหรับการจำแนกป้ายจราจร โครงข่ายประสาทเทียม ฉบับที่ 34 สิงหาคม 2012, หน้า. 333 – 338
เอส. โอซอฟสกี้ โครงข่ายประสาทเทียมสำหรับการประมวลผลข้อมูล - ทรานส์ จากโปแลนด์ อ.: การเงินและสถิติ, 2545. – 344 น.
บิชอป C.M. การจดจำรูปแบบและการเรียนรู้ของเครื่อง สปริงเกอร์, 2549 – 738 น.
ส.ไข่คิน. โครงข่ายประสาทเทียม: หลักสูตรเต็ม- วิลเลียมส์, 2549.

มีคำถามอะไรไหม?

แจ้งการพิมพ์ผิด

ข้อความที่จะส่งถึงบรรณาธิการของเรา: