前言
神經網絡的發展已經有很長時間了。近些年,由于算力和數據的增長,深度神經網絡的發展徹底改變了人們對機器學習和人工智能的看法。如今的神經網絡已經成為強大的工具,被用于解決各種各樣的問題,從圖像識別到自然語言處理,甚至是游戲,都可以看見神經網絡參與的痕跡。一些像GPT這樣功能強大的網絡,已經完成了從科研環境到工業環境的落地,它可以幫助人們完成各種各樣的任務。神經網絡之所以能有這樣驚人的效果,是因為它們能夠以類似于人類學習的方式從數據中學習和適應,從而解決難以通過顯式編程解決的復雜問題。盡管神經網絡已經是一個耳熟能詳的詞了,但是神經網絡領域對初學者來說可能仍舊是一個龐大且復雜的知識體系。面對復雜的數學模型和難以理解的專業術語,初學者可能一時間難以消化。
本書旨在成為一本介紹性的教科書,它面向的是對微積分和線性代數有基本了解、希望從零開始學習神經網絡的讀者。當然,如果你缺乏相關數學知識,也可以在學習的過程中循序漸進地補齊。本書的重點是介紹基于全連接結構的前饋神經網絡,這是一種在實踐中常用的神經網絡類型,也是各式各樣神經網絡架構的“基礎款”。本書首先介紹神經網絡的基本概念及其從生物學上獲得的啟示,然后介紹神經元的數學模型和單層感知機的結構。在掌握了這些基本知識后,讀者將了解功能更加強大的多層感知機結構。
本書共六章。第1章對神經網絡領域進行概述,包括其歷史和應用。這一章將討論神經網絡的基本組成部分,闡述神經網絡與生物神經系統的關系,對神經網絡領域的主流發展方向和相關術語進行解釋。
第2章深入探討不同類型神經元的數學模型,著重分析不同神經元的作用機制,為后續復雜網絡結構的學習奠定了基礎。這一章還將討論閾值的作用以及激活函數的選擇。
第3章介紹感知機的概念,幫助讀者理解如何通過神經元的組合來解決復雜任務。這一章將討論感知機的結構,包括它的輸入層、輸出層和激活函數,并解釋如何用它來解決簡單的分類問題。
第4章介紹多層前饋神經網絡模型,它是分類和回歸任務中使用最廣泛的神經網絡類型之一。這一章將研究神經網絡是如何訓練的,特別是反向傳播算法與梯度下降法的使用。
第5章涵蓋訓練神經網絡時使用的各種參數和算子,包括學習率、損失函數、正則化、歸一化以及網絡初始化、預訓練。這一章將討論這些設置的重要性,并介紹如何選擇合適的值或方法。
第6章介紹神經網絡的分布式學習、壓縮和解釋,其中分布式學習將涵蓋使用多臺計算機或設備在大型數據集上訓練神經網絡的內容。分布式訓練可以讓訓練單臺機器難以學習的大型神經網絡成為可能。神經網絡壓縮將討論減少神經網絡的規模而不明顯降低其準確性的主題。神經網絡可解釋性將討論解釋神經網絡內部運作機制的技術,探討如何解讀神經網絡的決策流程。
對于想要初步了解神經網絡的讀者,建議重點閱讀前四章;對于已經搭建好了神經網絡,想進一步對模型效果進行優化的讀者,建議直接閱讀第5章;對于已經熟悉神經網絡,想要了解更多研究方向的讀者,可以直接閱讀第6章。在每一章中都配有一些思考題,可以作為師生在課堂上互動交流的問題。在每一章的末尾配有課后練習,方便讀者檢驗自己的學習成果,也可以當成作業和考試題,作為教師備課的參考。在練習之后,“稍事休息”部分是編者在科研過程中總結的心得體會,有相似科研需求或者感興趣的讀者,可以選擇閱讀。在整本書中,我們將使用各種示例和代碼來幫助大家理解概念和實現應用。本書將使用Python作為主要的編程語言,除了親手搭建神經網絡以外,也會提供以常用的深度學習框架PyTorch為基礎的神經網絡搭建指導。為了照顧到所有讀者,大部分模型都可以在沒有GPU硬件輔助的條件下完成訓練和部署。
在本書的編寫工作中,我得到了許多團體和個人的支持和幫助,感謝南京大學研究生教育教學改革課題對本書資助,感謝機械工業出版社的編輯們,是他們的盡責工作使得本書可以盡快與讀者見面。感謝RINC組同學對本書的支持,特別感謝徐百樂、竇慧、郭蘇涵、易夢軍四位博士在書稿的修改和校對方面付出的心血,感謝肖偉康、向浩然、許翔、管俁祺、陳昊、張耕、熊昕、李菲菲、盧俁金、宋斯涵、王翔宇、張凌茗、艾英豪、涂敦煒、俞詩航、楊洪朝、劉佩涵、李若彤、胡嘉駿同學在整理資料、收集數據和實驗驗證方面付出的辛勤勞動。有了大家的共同努力,才促成了本書的出版。
本書作為一本入門教材,盡力做到少用晦澀的數學公式,多用示例來完成知識的講解。在不得不使用數學公式的部分,會盡量避免“跳步驟”,對每一步推導都進行了展示,方便讀者理解。同時,為了盡可能地減少閱讀壓力,本書只介紹重要的內容,以求做到“少而精”。雖然筆者精益求精,但書中可能仍然存在需要修改的部分,甚至是錯誤,如果讀者發現了,煩請告知,意見請發往info_rinc@163.com,筆者一定盡快修正。最后,希望這本書可以為各位讀者提供一些幫助,祝大家閱讀愉快!