ก่อนอื่นเราจะไม่ซ้อนฟังก์ชันเชิงเส้นเข้าด้วยกันเพื่อให้ได้ฟังก์ชันที่ไม่เชิงเส้น มีเหตุผลที่ชัดเจนว่าทำไม NNs อาจไม่ทำงานเช่นนั้น: การซ้อนฟังก์ชันเชิงเส้นเข้าด้วยกันจะทำให้ได้ฟังก์ชันเชิงเส้นอีกครั้ง
สิ่งที่ทำให้ NNs ไม่เป็นเชิงเส้นคือฟังก์ชั่นการเปิดใช้งานที่อยู่ด้านหลังฟังก์ชั่นเชิงเส้น! อย่างไรก็ตามในหลักการคุณพูดถูก: เราแค่แบ่งโลจิสติกส์จำนวนมาก (ไม่ใช่แบบเชิงเส้น!) เข้าด้วยกันและ ... tadaa: เราได้สิ่งที่ดีออกมา ... มันยุติธรรมไหม ปรากฎว่า (จากมุมมองทางทฤษฎี) จริง ๆ แล้วมันยุติธรรม แม้เลว: การใช้ที่มีชื่อเสียงโด่งดังและเป็นที่รู้จักทฤษฎีบทของหิน Weierstrassเราก็พิสูจน์ให้เห็นว่าเครือข่ายประสาทที่มีเพียงหนึ่งชั้นที่ซ่อนอยู่และไม่มีฟังก์ชั่นการส่งออกที่โหนดสุดท้ายคือพอที่จะ approximize ใด ๆฟังก์ชั่นอย่างต่อเนื่อง (และเชื่อฉัน, ฟังก์ชั่นอย่างต่อเนื่องสามารถจะน่าเกลียด สัตว์ร้ายดู "ขั้นบันไดปีศาจ": https://en.wikipedia.org/wiki/Cantor_distribution[a,b]x↦=b+a1ϕ1(x)+...+alϕl(x)l
ทำไมเราถึงใช้ NN แบบลึก?
เหตุผลก็คือทฤษฎีบท SW- ข้างต้นรับประกันได้เพียงว่ามีขนาดเลเยอร์ขนาดใหญ่เพียงพอเพื่อให้เราสามารถเข้าใกล้ฟังก์ชั่นเป้าหมายของเรา (หวังอย่างต่อเนื่อง) อย่างไรก็ตามขนาดเลเยอร์ที่ต้องการอาจมีขนาดใหญ่มากจนคอมพิวเตอร์ไม่สามารถจัดการเมทริกซ์น้ำหนักของขนาดนั้นได้ NNs ที่มีเลเยอร์ที่ซ่อนอยู่ดูเหมือนจะเป็นการประนีประนอมระหว่าง 'ความถูกต้อง' และการคำนวณที่ดี ฉันไม่ทราบผลลัพธ์ทางทฤษฎีใด ๆ ที่ชี้ไปยังทิศทางของ 'ความเป็นไปได้' ของ NNs ที่เพิ่มขึ้นเมื่อใส่เลเยอร์ที่ซ่อนอยู่มากขึ้นเมื่อเปรียบเทียบกับการเพิ่มขนาดของเลเยอร์ที่ซ่อนอยู่เพียงอย่างเดียว แต่อาจมีทรัพยากรบางอย่างบนเว็บ ...
เราสามารถเข้าใจ NNs ที่ลึกล้ำอย่างแท้จริงได้หรือไม่?
ตัวอย่างคำถาม: ทำไม NN จึงทำนายกรณีนี้ว่าเป็นจริงในขณะที่ทำนายอีกกรณีนี้กรณีที่คล้ายคลึงกันให้เป็น FALSE ทำไมคะแนนลูกค้ารายนี้ถึงมีค่ามากกว่าลูกค้ารายอื่นอย่างแน่นอน ฉันไม่เชื่อจริง ๆ มันมาพร้อมกับความซับซ้อนของแบบจำลองที่คุณไม่สามารถอธิบายได้อย่างมีเหตุผลอีกต่อไป ... ฉันได้ยินเพียงว่านี่ยังคงเป็นพื้นที่ของการวิจัย แต่ฉันไม่รู้แหล่งข้อมูลใด ๆ ...
อะไรทำให้ NNs มีความโดดเด่นในทุกรุ่น?
เหตุผลที่แท้จริงที่เราใช้ NN มากในทุกวันนี้ก็เนื่องมาจากเหตุผลสองประการต่อไปนี้:
- พวกเขามาพร้อมกับคุณสมบัติ 'สตรีมมิ่ง' อย่างเป็นธรรมชาติ
- เราสามารถแมงดาพวกเขาให้สูงสุดในหลายทิศทาง
TfTT′T′ฯลฯ ) ขึ้นอยู่กับคุณสมบัตินี้ ผู้คนพยายามใส่คุณสมบัติการสตรีมนี้ไปยังรุ่นอื่น ๆ (เช่นการเพิ่มความสามารถในการไล่ระดับสี) แต่มันไม่ได้เกิดขึ้นตามธรรมชาติและไม่ถูกคำนวณเหมือนในการตั้งค่า NN
โดย 2 ฉันหมายถึงว่าผู้คนได้ฝึกอบรม NNs เพื่อทำสิ่งที่แปลกประหลาดที่สุด แต่โดยหลักการแล้วพวกเขาใช้เฟรมเวิร์กเดียวกัน: การซ้อนฟังก์ชันที่เรียบเนียนเข้าด้วยกันแล้วปล่อยให้คอมพิวเตอร์ (เช่น PyTorch / Tensorflow) ทำคณิตศาสตร์สกปรกสำหรับคุณ อนุพันธ์ของฟังก์ชั่นการสูญเสียน้ำหนักน้ำหนัก ตัวอย่างหนึ่งจะเป็นกระดาษนี้ที่ซึ่งผู้คนใช้วิธี RL และสถาปัตยกรรมของ NN เพื่อเรียนรู้ภาษาที่ซับซ้อนของสารเคมีโดยการสอนวิธีการใช้งานในหน่วยความจำ (!) ลองทำอย่างนั้นกับ gradient boosting ;-) เหตุผลที่พวกเขาต้องทำนั่นคือภาษาของสารเคมีนั้นอย่างน้อยก็เป็น 'ยากที่จะเรียนรู้' เป็นภาษาของวงเล็บ (เช่นวงเล็บเปิดทุกอันจะปิดหนึ่งอันในภายหลังในคำว่า ) เนื่องจากภาษา SMILES ที่ผู้คนใช้ในการอธิบายโมเลกุลประกอบด้วยสัญลักษณ์ '(' และ ')' จากวิทยาการคอมพิวเตอร์เชิงทฤษฎี (ลำดับชั้นของ Chomsky) เรารู้ว่าไม่มีใครสามารถอธิบายภาษานี้ด้วยออโตมาตาปกติ แต่เราต้องการออโตมาตาแบบกดลง (เช่นออโตมาตะที่มีหน่วยความจำสแต็ค) นั่นคือแรงจูงใจสำหรับพวกเขา (ฉันเดา) ว่าจะสอนเรื่องประหลาดนี้ให้กับ NN