การสร้างโครงข่ายประสาทเทียมตั้งแต่เริ่มต้น เราศึกษาโครงข่ายประสาทเทียมในสี่ขั้นตอน หมายเหตุและรายการอ้างอิงเพื่อการอ่านเพิ่มเติม

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

การค้นพบครั้งแรกและสำคัญที่สุดของฉันคือเพลย์ลิสต์ของโปรแกรมเมอร์ชาวอเมริกัน Jeff Heaton ซึ่งเขาอธิบายในรายละเอียดและหลักการทำงานของโครงข่ายประสาทเทียมและการจำแนกประเภทอย่างชัดเจน หลังจากดูเพลย์ลิสต์นี้ ฉันตัดสินใจสร้างโครงข่ายประสาทเทียมของตัวเองโดยเริ่มจากส่วนแรกเลย ตัวอย่างง่ายๆ- คุณคงจะรู้ดีว่าเมื่อคุณเพิ่งเริ่มสอน ภาษาใหม่โปรแกรมแรกของคุณคือ Hello World มันเป็นประเพณีชนิดหนึ่ง ในโลก การเรียนรู้ของเครื่องมีสวัสดีชาวโลกเป็นของตัวเองด้วย และนี่คือโครงข่ายประสาทเทียม การแก้ปัญหาพิเศษหรือ (XOR) ตาราง XOR มีลักษณะดังนี้:

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

โครงข่ายประสาทเทียมคืออะไร?

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

มีอะไรอยู่ โครงข่ายประสาทเทียม?

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

โครงข่ายประสาทเทียมมีไว้เพื่ออะไร?

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

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

การทำนาย - ความสามารถในการทำนายขั้นตอนต่อไป เช่น การขึ้นหรือลงของหุ้นตามสถานการณ์ในตลาดหุ้น

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

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

เซลล์ประสาทคืออะไร?

เซลล์ประสาทเป็นหน่วยคำนวณที่รับข้อมูลและสร้างมันขึ้นมา การคำนวณง่ายๆและส่งต่อมันไป แบ่งออกเป็นสามประเภทหลัก: อินพุต (สีน้ำเงิน) ซ่อน (สีแดง) และเอาต์พุต (สีเขียว) นอกจากนี้ยังมีเซลล์ประสาทแทนที่และเซลล์ประสาทบริบท ซึ่งเราจะพูดถึงในบทความถัดไป ในกรณีที่โครงข่ายประสาทเทียมประกอบด้วยเซลล์ประสาทจำนวนมาก คำว่าเลเยอร์จะถูกนำมาใช้ ดังนั้นจึงมีเลเยอร์อินพุตที่รับข้อมูล เลเยอร์ที่ซ่อนอยู่ n เลเยอร์ (โดยปกติจะไม่เกิน 3) ที่ประมวลผลข้อมูล และเลเยอร์เอาต์พุตที่เอาต์พุตผลลัพธ์ เซลล์ประสาทแต่ละตัวมี 2 พารามิเตอร์หลัก: ข้อมูลอินพุตและข้อมูลเอาต์พุต ในกรณีของเซลล์ประสาทอินพุต: input=output ส่วนที่เหลือ ฟิลด์อินพุตประกอบด้วยข้อมูลทั้งหมดของเซลล์ประสาททั้งหมดจากเลเยอร์ก่อนหน้า หลังจากนั้นจะถูกทำให้เป็นมาตรฐานโดยใช้ฟังก์ชันการเปิดใช้งาน (สำหรับตอนนี้ ลองจินตนาการว่าเป็น f(x)) และจบลงที่ฟิลด์เอาต์พุต

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

ไซแนปส์คืออะไร?

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

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

โครงข่ายประสาทเทียมทำงานอย่างไร?

ใน ในตัวอย่างนี้แสดงส่วนหนึ่งของโครงข่ายประสาทเทียม โดยที่ตัวอักษรที่ฉันหมายถึงเซลล์ประสาทอินพุต ตัวอักษร H หมายถึงเซลล์ประสาทที่ซ่อนอยู่ และตัวอักษร w หมายถึงน้ำหนัก สูตรแสดงว่าข้อมูลที่ป้อนคือผลรวมของข้อมูลที่ป้อนทั้งหมดคูณด้วยน้ำหนักที่สอดคล้องกัน จากนั้นเราจะให้ 1 และ 0 เป็นอินพุต ให้ w1=0.4 และ w2 = 0.7 ข้อมูลอินพุตของเซลล์ประสาท H1 จะเป็นดังนี้: 1*0.4+0*0.7=0.4 ตอนนี้เรามีอินพุตแล้ว เราสามารถรับเอาต์พุตได้โดยการเสียบอินพุตเข้ากับฟังก์ชันการเปิดใช้งาน (เพิ่มเติมในภายหลัง) เมื่อได้ผลงานแล้วเราก็ส่งต่อครับ ดังนั้นเราจึงทำซ้ำทุกเลเยอร์จนกระทั่งถึงเซลล์ประสาทเอาท์พุต เมื่อเปิดตัวเครือข่ายดังกล่าวเป็นครั้งแรก เราจะเห็นว่าคำตอบนั้นยังห่างไกลจากความถูกต้อง เนื่องจากเครือข่ายไม่ได้รับการฝึกอบรม เพื่อปรับปรุงผลลัพธ์เราจะฝึกเธอ แต่ก่อนที่เราจะเรียนรู้วิธีการทำเช่นนี้ เรามาแนะนำคำศัพท์และคุณสมบัติของโครงข่ายประสาทเทียมกันก่อน

ฟังก์ชั่นการเปิดใช้งาน

ฟังก์ชั่นการเปิดใช้งานเป็นวิธีหนึ่งในการทำให้ข้อมูลอินพุตเป็นมาตรฐาน (เราพูดถึงเรื่องนี้ก่อนหน้านี้) นั่นคือถ้าคุณมีที่ทางเข้า จำนวนมากเมื่อส่งผ่านฟังก์ชันการเปิดใช้งาน คุณจะได้เอาต์พุตในช่วงที่คุณต้องการ มีฟังก์ชันการเปิดใช้งานค่อนข้างมาก ดังนั้นเราจะพิจารณาฟังก์ชันพื้นฐานที่สุด: Linear, Sigmoid (Logistic) และ Hyperbolic tangent ความแตกต่างที่สำคัญคือช่วงของค่า

ฟังก์ชันเชิงเส้น

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

ซิกมอยด์

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

ไฮเพอร์โบลิกแทนเจนต์

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

ชุดฝึกซ้อม

ชุดการฝึกคือลำดับของข้อมูลที่โครงข่ายประสาทเทียมทำงาน ในกรณีของการกำจัดหรือ (xor) เรามีผลลัพธ์ที่แตกต่างกันเพียง 4 แบบ นั่นคือ เราจะมีชุดการฝึก 4 ชุด: 0xor0=0, 0xor1=1, 1xor0=1,1xor1=0

การวนซ้ำ

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

ยุค

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

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

ข้อผิดพลาด

ข้อผิดพลาดคือเปอร์เซ็นต์ที่สะท้อนถึงความแตกต่างระหว่างการตอบสนองที่คาดไว้และการตอบสนองที่ได้รับ ความผิดพลาดเกิดขึ้นทุกยุคสมัยและต้องลดลง หากไม่เกิดขึ้นแสดงว่าคุณกำลังทำอะไรผิด ข้อผิดพลาดสามารถคำนวณได้หลายวิธี แต่เราจะพิจารณาเพียงสามวิธีหลักเท่านั้น: Mean Squared Error (ต่อไปนี้จะเรียกว่า MSE), Root MSE และ Arctan ที่นี่ไม่มีข้อจำกัดในการใช้งาน เช่นเดียวกับในฟังก์ชันการเปิดใช้งาน และคุณสามารถเลือกวิธีการใดก็ได้ที่จะนำมาให้คุณ ผลลัพธ์ที่ดีที่สุด- คุณเพียงแค่ต้องจำไว้ว่าแต่ละวิธีนับข้อผิดพลาดแตกต่างกัน ด้วย Arctan ข้อผิดพลาดจะใหญ่กว่าเกือบทุกครั้ง เนื่องจากมันทำงานบนหลักการ: ยิ่งความแตกต่างมากเท่าไร ข้อผิดพลาดมากขึ้น- Root MSE จะมีข้อผิดพลาดน้อยที่สุด ดังนั้นจึงเป็นเรื่องปกติที่จะใช้ MSE ที่จะรักษาสมดุลในการคำนวณข้อผิดพลาด

รูต MSE

อาร์คแทน

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

งาน

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

ข้อมูล:

I1=1, I2=0, w1=0.45, w2=0.78 ,w3=-0.12 ,w4=0.13 ,w5=1.5 ,w6=-2.3

สารละลาย

H1อินพุต = 1*0.45+0*-0.12=0.45

H1เอาท์พุต = ซิกมอยด์(0.45)=0.61

H2อินพุต = 1*0.78+0*0.13=0.78

H2เอาท์พุต = ซิกมอยด์(0.78)=0.69

O1อินพุต = 0.61*1.5+0.69*-2.3=-0.672

O1เอาท์พุต = ซิกมอยด์(-0.672)=0.33

O1อุดมคติ = 1 (0xor1=1)

ข้อผิดพลาด = ((1-0.33)^2)/1=0.45

ผลลัพธ์ - 0.33 ข้อผิดพลาด - 45%

ขอบคุณมากสำหรับความสนใจของคุณ! ฉันหวังว่าบทความนี้จะช่วยคุณในการศึกษาโครงข่ายประสาทเทียมได้ ในบทความถัดไป ผมจะพูดถึง Bias Neuron และวิธีฝึกโครงข่ายประสาทเทียมโดยใช้วิธีนี้ การขยายพันธุ์กลับและทางลาดลง

ทรัพยากรที่ใช้:

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

สมองเป็นสิ่งที่ซับซ้อน แต่สามารถแบ่งออกเป็นหลายส่วนหลักและการทำงาน:

ตัวแทนเชิงสาเหตุอาจเป็น ภายใน(เช่น รูปภาพหรือแนวคิด):

ตอนนี้เรามาดูพื้นฐานและประยุกต์กัน ชิ้นส่วนสมอง:

โดยทั่วไปสมองก็เหมือนกับเครือข่ายเคเบิล

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

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

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

และอธิบายอย่างเป็นทางการโดยใช้กราฟ:

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

กราฟด้านบนแสดงช่วงเวลาของเครือข่าย เพื่อให้แสดงผลได้แม่นยำยิ่งขึ้น คุณต้องแบ่งช่วงเวลาออกเป็นช่วงเวลา:

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

เมื่อมีการกระแสอากาศที่ปลอดภัยมุ่งเป้าไปที่พวกเขา กระต่ายก็เหมือนกับคนที่จะกระพริบตา:

โมเดลพฤติกรรมนี้สามารถแสดงเป็นกราฟได้:

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

ขอแนะนำองค์ประกอบอีกอย่างหนึ่ง - ปลอดภัย บี๊บ:

เราสามารถจำลองความสนใจของกระต่ายได้ดังนี้:

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

สิ่งสำคัญคือเหตุการณ์เหล่านี้จะเกิดขึ้นในเวลาที่ต่างกัน ยุค, ในกราฟจะมีลักษณะดังนี้:

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

ในการฝึกกระต่าย ให้ทำซ้ำขั้นตอนนี้:

สำหรับความพยายามสามครั้งแรก รูปแบบจะมีลักษณะดังนี้:

โปรดทราบว่าน้ำหนักของสิ่งกระตุ้นทางเสียงจะเพิ่มขึ้นหลังจากการทำซ้ำแต่ละครั้ง (เน้นด้วยสีแดง) ค่านี้เป็นสิ่งที่กำหนดไว้ในปัจจุบัน - เราเลือก 0.30 แต่ตัวเลขอาจเป็นอะไรก็ได้ แม้จะติดลบก็ตาม หลังจากการทำซ้ำครั้งที่สาม คุณจะไม่สังเกตเห็นการเปลี่ยนแปลงในพฤติกรรมของกระต่าย แต่หลังจากการทำซ้ำครั้งที่สี่ สิ่งมหัศจรรย์จะเกิดขึ้น - พฤติกรรมจะเปลี่ยนไป

เราลบการสัมผัสอากาศออกแล้ว แต่กระต่ายยังคงกระพริบตาเมื่อได้ยินเสียงบี๊บ! แผนภาพสุดท้ายของเราสามารถอธิบายพฤติกรรมนี้ได้:

เราฝึกกระต่ายให้ตอบสนองต่อเสียงด้วยการกระพริบตา

ในการทดลองจริงประเภทนี้ อาจต้องทำซ้ำมากกว่า 60 ครั้งจึงจะได้ผล

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

สมมติว่าเรามีเครื่องที่มีปุ่มสี่ปุ่มที่จะจ่ายอาหารเมื่อกดถูกปุ่ม
ปุ่ม (หรือพลังงานถ้าคุณเป็นหุ่นยนต์) ภารกิจคือค้นหาว่าปุ่มใดให้รางวัล:

เราสามารถอธิบาย (ตามแผนผัง) ว่าปุ่มทำอะไรเมื่อคลิกดังนี้:

วิธีที่ดีที่สุดคือแก้ไขปัญหานี้ทั้งหมด ดังนั้นเรามาดูผลลัพธ์ที่เป็นไปได้ทั้งหมด รวมถึงผลลัพธ์ที่ถูกต้อง:

คลิกที่ปุ่มที่ 3 เพื่อรับอาหารเย็นของคุณ

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

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

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

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

อินพุต Var = ; น้ำหนัก var = ; // เพื่อความสะดวกสามารถเรียกเวกเตอร์เหล่านี้ได้

ขั้นตอนต่อไปคือการสร้างฟังก์ชันที่รับค่าอินพุตและน้ำหนักและคำนวณค่าเอาต์พุต:

ฟังก์ชั่นประเมินNeuralNetwork(inputVector, WeightVector)( var result = 0; inputVector.forEach(function(inputValue, WeightIndex) ( layerValue = inputValue*weightVector; result += layerValue; )); return (result.toFixed(2)); ) / / อาจดูซับซ้อน แต่สิ่งเดียวที่ทำคือจับคู่น้ำหนัก/อินพุตและเพิ่มผลลัพธ์

ตามที่คาดไว้ ถ้าเรารันโค้ดนี้ เราก็จะได้ผลลัพธ์เหมือนกับในโมเดลหรือกราฟของเรา...

ประเมิน NeuralNetwork (อินพุต, น้ำหนัก); // 0.00

ตัวอย่างสด: Neural Net 001 ขั้นตอนต่อไปในการปรับปรุงโครงข่ายประสาทเทียมของเราคือวิธีตรวจสอบผลลัพธ์ของตัวเองหรือ ค่าผลลัพธ์เทียบได้กับสถานการณ์จริง ก่อนอื่นมาเข้ารหัสความเป็นจริงเฉพาะนี้ให้เป็นตัวแปรกันก่อน:

เพื่อตรวจจับความไม่สอดคล้องกัน (และมีจำนวนเท่าใด) เราจะเพิ่มฟังก์ชันข้อผิดพลาด:

ข้อผิดพลาด = ความเป็นจริง - เอาท์พุตประสาทสุทธิ

ด้วยสิ่งนี้ เราสามารถประเมินประสิทธิภาพของโครงข่ายประสาทเทียมของเราได้:

แต่ที่สำคัญกว่านั้น แล้วสถานการณ์ที่ความเป็นจริงก่อให้เกิดผลลัพธ์เชิงบวกล่ะ?

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

ข้อผิดพลาด = เอาท์พุตที่ต้องการ- เอาท์พุทประสาทสุทธิ

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

อินพุต var = ; น้ำหนัก var = ; ผลลัพธ์ที่ต้องการ = 1;

และฟังก์ชั่นใหม่:

ฟังก์ชั่นประเมินNeuralNetError(ต้องการ,จริง) ( return (ต้องการ — จริง); ) // หลังจากประเมินทั้งเครือข่ายและข้อผิดพลาด เราจะได้รับ: // "เอาต์พุต Neural Net: 0.00 ข้อผิดพลาด: 1"

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

จะฝึกโครงข่ายประสาทเทียมได้อย่างไร?

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

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

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

อัตราการเรียนรู้ = 0.20; // ยิ่งค่ามาก กระบวนการเรียนรู้ก็จะยิ่งเร็วขึ้น :)

และสิ่งนี้จะเปลี่ยนแปลงไปอย่างไร?

สิ่งนี้จะเปลี่ยนน้ำหนัก (เช่นเดียวกับกระต่าย!) โดยเฉพาะน้ำหนักเอาต์พุตที่เราต้องการสร้าง:

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

ฟังก์ชั่นเรียนรู้(inputVector, WeightVector) ( WeightVector.forEach(function(weight, index, Weights) ( if (inputVector > 0) ( Weights = Weight + LearningRate; ) )); )

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

// เวกเตอร์น้ำหนักดั้งเดิม: // เอาต์พุต Neural Net: 0.00 ข้อผิดพลาด: 1 เรียนรู้ (อินพุต, น้ำหนัก); // เวกเตอร์น้ำหนักใหม่: // Neural Net output: 0.20 Error: 0.8 // ถ้าไม่ชัดเจน แสดงว่า Neural Net Output ใกล้ 1 (Chicken Output) - ซึ่งเป็นสิ่งที่เราต้องการ จึงสรุปได้ว่าเรากำลังเคลื่อนไหว ไปสู่ทิศทางที่ถูกต้อง

ตัวอย่างสด: Neural Net 003 โอเค ตอนนี้เมื่อเราเดินไปในทิศทางที่ถูกต้องแล้ว ชิ้นส่วนสุดท้ายของปริศนานี้จะถูกนำไปใช้ การทำซ้ำ.

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

การทดลองวาร์ = 6;

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

ฟังก์ชั่นเทรน(ทดลอง) ( สำหรับ (i = 0; i< trials; i++) { neuralNetResult = evaluateNeuralNetwork(input, weights); learn(input, weights); } }

นี่เป็นรายงานสุดท้ายของเรา:

เอาต์พุต Neural Net: 0.00 ข้อผิดพลาด: 1.00 เวกเตอร์น้ำหนัก: เอาต์พุต Neural Net: 0.20 ข้อผิดพลาด: 0.80 เวกเตอร์น้ำหนัก: เอาต์พุต Neural Net: 0.40 ข้อผิดพลาด: 0.60 เวกเตอร์น้ำหนัก: เอาต์พุต Neural Net: 0.60 ข้อผิดพลาด: 0.40 เวกเตอร์น้ำหนัก: เอาต์พุต Neural Net: 0.80 ข้อผิดพลาด : 0.20 เวกเตอร์น้ำหนัก: เอาต์พุตประสาทสุทธิ: 1.00 ข้อผิดพลาด: 0.00 เวกเตอร์น้ำหนัก: // อาหารเย็นไก่ !

ตัวอย่างสด: Neural Net 004 ตอนนี้เรามีเวกเตอร์น้ำหนักที่จะผลิตเอาต์พุตเดียวเท่านั้น (ไก่สำหรับมื้อเย็น) หากเวกเตอร์อินพุตสอดคล้องกับความเป็นจริง (คลิกปุ่มที่สาม) แล้วสิ่งที่เจ๋งที่สุดที่เราเพิ่งทำคืออะไร?

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

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

  • ไม่มีกลไกในการจัดเก็บตุ้มน้ำหนักที่เรียนรู้ ดังนั้นโครงข่ายประสาทเทียมนี้จะลืมทุกสิ่งที่รู้ เมื่ออัปเดตหรือรันโค้ดอีกครั้ง คุณต้องทำซ้ำสำเร็จอย่างน้อยหกครั้งเพื่อให้เครือข่ายเรียนรู้ได้อย่างเต็มที่ หากคุณคิดว่าบุคคลหรือเครื่องจะกดปุ่มแบบสุ่ม... ขั้นตอนนี้จะใช้เวลาสักครู่
  • เครือข่ายชีวภาพเพื่อการเรียนรู้ สิ่งสำคัญมีอัตราการเรียนรู้เท่ากับ 1 ดังนั้นจึงจำเป็นต้องมีการทำซ้ำสำเร็จเพียงครั้งเดียวเท่านั้น
  • มีอัลกอริธึมการเรียนรู้ที่คล้ายกับเซลล์ประสาทชีวภาพอย่างใกล้ชิด และมีชื่อที่ติดหู: กฎวิดรอฟ-ฮอฟฟ์, หรือ การฝึกวิดรอฟ-ฮอฟฟ์.
  • เกณฑ์ของเซลล์ประสาท (1 ในตัวอย่างของเรา) และเอฟเฟกต์การฝึกอบรมใหม่ (ด้วย ปริมาณมากการทำซ้ำผลลัพธ์จะมากขึ้น 1) ไม่ได้นำมาพิจารณา แต่มีความสำคัญโดยธรรมชาติและมีความรับผิดชอบต่อขนาดใหญ่และ บล็อกที่ซับซ้อนปฏิกิริยาทางพฤติกรรม น้ำหนักติดลบก็เช่นกัน

หมายเหตุและรายการอ้างอิงเพื่อการอ่านเพิ่มเติม

ฉันพยายามหลีกเลี่ยงคำศัพท์ทางคณิตศาสตร์และเทคนิค แต่ถ้าคุณสนใจ เราได้สร้างเพอร์เซปตรอน ซึ่งถูกกำหนดให้เป็นอัลกอริธึมการเรียนรู้แบบมีผู้สอน (การเรียนรู้แบบมีผู้สอน) ของตัวแยกประเภทคู่ - สิ่งหนักๆ โครงสร้างทางชีววิทยาของสมองไม่ใช่เรื่องง่าย ส่วนหนึ่งเป็นเพราะความไม่แม่นยำและอีกส่วนหนึ่งเป็นเพราะความซับซ้อน เริ่มต้นด้วยประสาทวิทยาศาสตร์ (Purves) และ Cognitive Neuroscience (Gazzaniga) จะดีกว่า ฉันได้แก้ไขและดัดแปลงตัวอย่างกระต่ายจาก Gateway เป็น Memory (Gluck) ซึ่งเป็นการแนะนำที่ยอดเยี่ยมเกี่ยวกับโลกแห่งกราฟด้วย Introduction to Neural Networks (Gurney) เป็นอีกหนึ่งแหล่งข้อมูลที่ยอดเยี่ยมสำหรับทุกความต้องการด้าน AI ของคุณ
และตอนนี้บน Python! ขอบคุณ Ilya Andshmidt ที่ให้บริการเวอร์ชัน Python:

อินพุต = น้ำหนัก = ที่ต้องการ_ผลลัพธ์ = 1 อัตราการเรียนรู้ = 0.2 การทดลอง = 6 def ประเมิน _neural_network (input_array, น้ำหนัก_array): ผลลัพธ์ = 0 สำหรับ i อยู่ในช่วง (len (input_array)): layer_value = input_array [i] * ผลลัพธ์ Weight_array [i] += layer_value print("evaluate_neural_network: " + str(result)) print("weights: " + str(weights)) ส่งคืนผลลัพธ์ def allowance_error(ต้องการ, จริง): error = ต้องการ - จริง print("evaluate_error: " + str(error) ) ส่งคืนข้อผิดพลาด def learn(input_array, weight_array): print("learning...") for i in range(len(input_array)): if input_array[i] > 0: Weight_array[i] += Learning_rate def train(trials ): สำหรับฉันอยู่ในช่วง (การทดลอง): neural_net_result = ประเมิน_neural_network (อินพุต, น้ำหนัก) เรียนรู้ (อินพุต, น้ำหนัก) ฝึก (การทดลอง)

และตอนนี้ที่ GO! ขอบคุณ Kieran Maher สำหรับเวอร์ชันนี้

แพ็คเกจการนำเข้าหลัก ("fmt" "คณิตศาสตร์") func main() ( fmt.Println("การสร้างอินพุตและน้ำหนัก ... ") อินพุต:= float64(0.00, 0.00, 1.00, 0.00) น้ำหนัก:= float64(0.00, 0.00, 0.00, 0.00) ที่ต้องการ:= 1.00 อัตราการเรียนรู้:= 0.20 การทดลอง:= 6 รถไฟ (การทดลอง, อินพุต, น้ำหนัก, ที่ต้องการ, อัตราการเรียนรู้) ) func train (การทดลอง int, อินพุต float64, น้ำหนัก float64, ลอยที่ต้องการ 64, อัตราการเรียนรู้ลอย 64) ( สำหรับฉัน:= 1;< trials; i++ { weights = learn(inputs, weights, learningRate) output:= evaluate(inputs, weights) errorResult:= evaluateError(desired, output) fmt.Print("Output: ") fmt.Print(math.Round(output*100) / 100) fmt.Print(" Error: ") fmt.Print(math.Round(errorResult*100) / 100) fmt.Print(" ") } } func learn(inputVector float64, weightVector float64, learningRate float64) float64 { for index, inputValue:= range inputVector { if inputValue >0.00 ( WeightVector = WeightVector + LearningRate ) ส่งกลับ WeightVector ) func ประเมิน (inputVector float64, WeightVector float64) float64 ( ผลลัพธ์:= 0.00 สำหรับดัชนี, inputValue:= range inputVector ( layerValue:= inputValue * WeightVector result = result + layerValue ) ส่งคืนผลลัพธ์) func ประเมินข้อผิดพลาด (ต้องการ float64, float64 จริง) float64 (ส่งคืนที่ต้องการ - จริง)

บุ๊กมาร์ก

เราบอกวิธีสร้างโครงข่ายประสาทเทียมง่ายๆ ในไม่กี่ขั้นตอน และสอนให้รู้จักผู้ประกอบการที่มีชื่อเสียงในรูปถ่าย

ขั้นตอนที่ 0 มาทำความเข้าใจว่าโครงข่ายประสาทเทียมทำงานอย่างไร

วิธีที่ง่ายที่สุดในการทำความเข้าใจหลักการทำงานของโครงข่ายประสาทเทียมคือการใช้ตัวอย่างของ Teachable Machine ซึ่งเป็นโครงการด้านการศึกษาของ Google

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

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

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

ตอนนี้สิ่งที่เหลืออยู่คือการเลือกการกระทำที่ต้องเรียกใช้เมื่อจดจำรูปภาพ - พูดวลี แสดง GIF หรือเล่นเสียง ในทำนองเดียวกัน เราฝึกโครงข่ายประสาทเทียมให้จดจำใบหน้าที่ประหลาดใจและนิ้วโป้ง

เมื่อโครงข่ายประสาทเทียมได้รับการฝึกฝนแล้ว ก็สามารถใช้งานได้ Teachable Machine แสดงให้เห็นถึงปัจจัย "ความมั่นใจ" - ระบบ "มั่นใจ" เพียงใดว่ากำลังได้รับการสอนทักษะอย่างหนึ่ง

วิดีโอสั้นๆ เกี่ยวกับวิธีการทำงานของ Teachable Machine

ขั้นตอนที่ 1 การเตรียมคอมพิวเตอร์ให้ทำงานกับโครงข่ายประสาทเทียม

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

ในการสร้างโครงข่ายประสาทเทียมของคุณเอง คุณจะต้องมี Python ซึ่งเป็นหนึ่งในภาษาการเขียนโปรแกรมที่เรียบง่ายและธรรมดาที่สุด และ TensorFlow - เปิดห้องสมุด Google สำหรับการสร้างและฝึกอบรมโครงข่ายประสาทเทียม

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

ทฤษฎี

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

การเปลี่ยนแปลงที่เกิดขึ้นในระดับเซลล์ประสาทแต่ละตัวนั้นง่ายมาก แต่แม้แต่โครงข่ายประสาทที่เล็กมากก็สามารถทำได้มาก พฤติกรรมที่หลากหลายของหนอน Caenorhabditis elegans ไม่ว่าจะเป็นการเคลื่อนไหว การค้นหาอาหาร ปฏิกิริยาต่างๆ ต่อสิ่งเร้าภายนอก และอื่นๆ อีกมากมาย ถูกเข้ารหัสในเซลล์ประสาทเพียงสามร้อยเซลล์ และเอาล่ะหนอน! แม้แต่มดก็ต้องการเซลล์ประสาทถึง 250,000 เซลล์ประสาท และสิ่งที่พวกเขาทำนั้นเกินความสามารถของเครื่องจักรอย่างแน่นอน

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

สมองกลไฟฟ้ากับมอเตอร์

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

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

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

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

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

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

ฝึกฝน

ดังนั้น เรามาลองสร้างโครงข่ายประสาทเทียมแบบง่ายๆ ด้วยมือของเราเอง แล้วดูว่ามันทำงานอย่างไรในขณะที่เราไป เราจะใช้ Python กับไลบรารี Numpy (เราสามารถทำได้โดยไม่ต้องใช้ Numpy แต่ด้วยพีชคณิตเชิงเส้น Numpy จะใช้ความพยายามน้อยลง) ตัวอย่างที่เป็นปัญหานั้นอิงตามโค้ดจาก Andrew Trask

เราจะต้องมีฟังก์ชันในการคำนวณซิกมอยด์และอนุพันธ์ของมัน:

ความต่อเนื่องมีให้เฉพาะสมาชิกเท่านั้น

ตัวเลือก 1. สมัครสมาชิก Hacker เพื่ออ่านเนื้อหาทั้งหมดบนเว็บไซต์

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


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


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

ประวัติเล็กน้อย

เป็นครั้งแรกที่แนวคิดเกี่ยวกับโครงข่ายประสาทเทียม (ANN) เกิดขึ้นจากความพยายามที่จะจำลองกระบวนการของสมอง การสร้างแบบจำลองโครงข่ายประสาทเทียม McCulloch-Pitts ในปี 1943 ถือเป็นความก้าวหน้าครั้งสำคัญครั้งแรกในด้านนี้ นักวิทยาศาสตร์ได้พัฒนาแบบจำลองเซลล์ประสาทเทียมเป็นครั้งแรก พวกเขายังเสนอการออกแบบเครือข่ายขององค์ประกอบเหล่านี้เพื่อดำเนินการเชิงตรรกะ แต่ที่สำคัญที่สุด นักวิทยาศาสตร์ได้พิสูจน์แล้วว่าเครือข่ายดังกล่าวสามารถเรียนรู้ได้

ต่อไป ขั้นตอนสำคัญเป็นการพัฒนาโดยโดนัลด์ เฮบบ์เกี่ยวกับอัลกอริทึมแรกสำหรับการคำนวณ ANN ในปี 1949 ซึ่งกลายเป็นพื้นฐานสำหรับหลายทศวรรษต่อมา ในปี 1958 Frank Rosenblatt พัฒนาพาร์เซปตรอน ซึ่งเป็นระบบที่เลียนแบบกระบวนการของสมอง ครั้งหนึ่ง เทคโนโลยีไม่มีระบบอะนาล็อกและยังคงเป็นพื้นฐานในโครงข่ายประสาทเทียม ในปีพ.ศ. 2529 นักวิทยาศาสตร์ชาวอเมริกันและโซเวียตได้ปรับปรุงวิธีการพื้นฐานในการฝึกเพอร์เซปตรอนแบบหลายชั้นโดยแยกจากกันเกือบจะพร้อมๆ กันอย่างมีนัยสำคัญ ในปี 2550 โครงข่ายประสาทเทียมประสบกับการเกิดใหม่ เจฟฟรีย์ ฮินตัน นักวิทยาศาสตร์คอมพิวเตอร์ชาวอังกฤษ พัฒนาอัลกอริธึมการเรียนรู้เชิงลึกสำหรับโครงข่ายประสาทเทียมหลายชั้นเป็นครั้งแรก ซึ่งปัจจุบันนี้ใช้เพื่อควบคุมรถยนต์ที่ขับเคลื่อนด้วยตนเอง

สั้น ๆ เกี่ยวกับสิ่งสำคัญ

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

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

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

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

สถานการณ์ปัจจุบัน

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

ทุกวันนี้ ตลาดสำหรับโครงข่ายประสาทเทียมมีขนาดใหญ่มาก - มีมูลค่าหลายพันล้านดอลลาร์ ตามที่แสดงในทางปฏิบัติ เทคโนโลยีโครงข่ายประสาทเทียมส่วนใหญ่ทั่วโลกมีความแตกต่างกันเพียงเล็กน้อย อย่างไรก็ตาม การใช้โครงข่ายประสาทเทียมเป็นกิจกรรมที่มีราคาแพงมาก ซึ่งโดยส่วนใหญ่แล้วสามารถทำได้เพียงเท่านั้น บริษัทขนาดใหญ่- การพัฒนา การฝึกอบรม และการทดสอบโครงข่ายประสาทเทียมจำเป็นต้องมีขนาดใหญ่ พลังการคำนวณเห็นได้ชัดว่าผู้เล่นรายใหญ่ในตลาดไอทีมีสิ่งนี้มากมาย บริษัทหลักที่เป็นผู้นำการพัฒนาในด้านนี้คือแผนก Google DeepMind, แผนก Microsoft Research, IBM, Facebook และ Baidu

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

เหตุใดโครงข่ายประสาทเทียมจึงยังห่างไกลจากสมองของมนุษย์?

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

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

บรรทัดล่าง

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

สำหรับผู้ที่ต้องการทราบข้อมูลเพิ่มเติม

  • มหาสงครามประสาท: สิ่งที่ Google กำลังทำอยู่จริงๆ
  • คอมพิวเตอร์เชิงความรู้สามารถเปลี่ยนแปลงอนาคตของเราได้อย่างไร