ยานเดกซ์ได้เปิดตัวการค้นหาเวอร์ชันใหม่โดยใช้โครงข่ายประสาทเทียม ยานเดกซ์ได้สร้างทางเลือกแทนโครงข่ายประสาทเทียมที่เปิดเผยต่อสาธารณะ ชุดข้อมูล 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 พอร์ทัลมีไว้สำหรับสองขั้นตอนนี้โดยเฉพาะ
หากติดตั้งและกำหนดค่าทุกอย่างแล้ว คุณก็สามารถเริ่มต้นได้
โครงข่ายประสาทเทียมต้องเขียนด้วยภาษาโปรแกรมบางภาษา มีมากมาย แต่ฉันแนะนำ (และใช้ในตำราเรียนและบทความ) อย่างแน่นอน ภาษาหลาม- ทำไม
- มันง่ายมากที่จะเรียนรู้
- ห้องสมุดสำเร็จรูปจำนวนมาก
- เมื่อคุณดูโปรแกรม คุณจะเห็นอัลกอริธึมที่โปรแกรมนั้นใช้งานทันที
- ผู้เชี่ยวชาญด้านการเรียนรู้ของเครื่องส่วนใหญ่ใช้ 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.