近年來,隨著大數(shù)據(jù)、機器學習、深度學習等技術的發(fā)展,以及物理硬件性能的提升,越來越多優(yōu)秀的大數(shù)據(jù)人工智能項目落地,為社會帶來巨大便利的同時也為從事該行業(yè)的技術人員帶來了前所未有的機遇。越來越多的公司和個人開始關注并學習AI知識,各大廠商也在AI技術及人才培養(yǎng)上投入巨資,紛紛搶占戰(zhàn)略高地。筆者所在的公司也成立了AI研究室,從事算法及大數(shù)據(jù)相關的研究及落地工作,在此過程中會涉及很多開源的框架及技術,由于筆者有教育行業(yè)的從業(yè)經(jīng)歷,所以想通過出版圖書的途徑幫助更多的學生及普通的程序員學習AI技能。時勢造英雄,希望更多的人可以把握當前的時勢,蓄勢待發(fā),沖刺人生的高峰。
為了迎合各個層次讀者的需求,筆者在編寫過程中既兼顧內容的質量,也注重趣味性。鑒于此,筆者采用項目驅動的方式編寫本書,部分章設有“實驗室小試牛刀”環(huán)節(jié),以項目實戰(zhàn)的形式總結該章所學知識,并引出下一章的內容。“實驗室小試牛刀”環(huán)節(jié)是實驗性質的實戰(zhàn)項目,兼顧趣味性,主要培養(yǎng)讀者的動手能力!凹佑驼尽辈糠只仡櫛匾臄(shù)學知識,在學習新知識的同時,使讀者可以夯實數(shù)學基礎,為走得更輕松、更長遠積蓄能量。
本書分為10章,內容循序漸進,由淺入深。
第1章首先介紹AI發(fā)展簡史、主流的深度學習框架和框架的演變;其次介紹安裝PyTorch環(huán)境及開發(fā)工具;再次介紹核心概念,包括PyTorch核心模塊、自動微分等,在“實驗室小試牛刀”環(huán)節(jié),使用PyTorch進行科學計算和薪酬預測,讀者可以由此了解PyTorch關于科學計算的知識及初探使用PyTorch構建算法模型;最后補充數(shù)學知識,為讀者學習第2章的內容奠定基礎。
第2章是機器學習基礎章節(jié),講述機器學習的分類、常見概念,掃清讀者學習途徑上的認知障礙,幫助讀者更好地理解機器學習與深度學習。本章還會引出機器學習和神經(jīng)網(wǎng)絡算法,使讀者對算法發(fā)展史有清晰的認識,同時引出神經(jīng)網(wǎng)絡的概念。神經(jīng)網(wǎng)絡的靈感來自人類對大腦神經(jīng)的生物學發(fā)現(xiàn),通過模擬人類大腦的工作原理,構建出能擬合任意復雜度的深度神經(jīng)網(wǎng)絡。神經(jīng)網(wǎng)絡的訓練需要借助BP算法,該算法會涉及微分、導數(shù)、偏導數(shù)等數(shù)學知識,讀者可以在“加油站之高等數(shù)學知識回顧”部分再次進行復習和鞏固。
第3章詳細介紹PyTorch中的Tensor及科學計算算子,通過詳細地介紹每個算子的用法及功能,讀者可以掌握使用PyTorch的法寶。本章還介紹了PyTorch中的變量Variable,Variable是Tensor的包裝類型,為PyTorch進行深度學習的訓練提供支持。PyTorch中的算子和Python科學計算庫NumPy提供的算子非常相似,實際上,PyTorch中的Tensor和NumPy能夠進行高效互轉,在本章的“實驗室小試牛刀之輕松搞定圖片分類”環(huán)節(jié),讀者可以使用PyTorch構建神經(jīng)網(wǎng)絡,探索PyTorch構建神經(jīng)網(wǎng)絡的簡捷性及調試的方便性。
第4章主要介紹激活函數(shù)、損失函數(shù)、優(yōu)化器及數(shù)據(jù)加載等相關知識點。PyTorch可以提供高層次的API封裝,在torch.optim、torch.nn等模塊中,提供了更加簡捷的方法調用。torch.optim模塊封裝了常用的優(yōu)化算法,如隨機梯度下降(Stochastic Gradient Descent,SGD)算法、Momentum梯度下降算法等。torch.nn模塊提供了常見的神經(jīng)網(wǎng)絡層,如線性層、一維卷積、二維卷積、長短期記憶(Long Short-Term Memory,LSTM)和門控循環(huán)單元(Gated Recurrent Unit,GRU)等。所有網(wǎng)絡的學習,最終的輸出結果都要使用一個度量的函數(shù)測評效果,這個函數(shù)通常稱為損失函數(shù)。通過損失函數(shù)及BP算法,可以將損失進行逆向傳播,每步傳播都會計算各個特征權重的偏導數(shù),進而更新特征權重,達到訓練的目的。本章會詳細講解各種損失函數(shù)及其應用場景,相信讀者會有所領悟。所有模型在構建完成后,都將傳入數(shù)據(jù)進行訓練,而數(shù)據(jù)的加載有時是很麻煩的,PyTorch提供了DataLoader等接口,這些接口實現(xiàn)了生成器模式,因此適用于大數(shù)據(jù)量的加載,不會出現(xiàn)內存溢出的問題。在“實驗室小試牛刀”環(huán)節(jié),會探索第一個深度神經(jīng)網(wǎng)絡VGG-16,并且使用PyTorch計算機視覺庫簡化網(wǎng)絡的構建過程,在構建過程中會凍結VGG-16的網(wǎng)絡層權重,更改VGG-16最后的輸出層,使其適用于特定的應用場景,而這種技術被稱為遷移學習。通過實踐遷移學習,讀者可以掌握復用預訓練模型并用于特定應用場景的核心技巧。
第5章主要講計算機視覺,本章介紹典型的計算機視覺模型,包括DCGAN、ResNet、Inception、DenseNet等;除此之外,LSTM和GRU也是深度神經(jīng)網(wǎng)絡序列模型中經(jīng)常出現(xiàn)的結構。本章通過TensorBoard和Visdom可視化訓練過程,幫助讀者理解網(wǎng)絡內部正在發(fā)生什么。
第6章安排的內容和自然語言處理相關。自然語言處理是人工智能最后需要解決的難題,被譽為“人工智能皇冠上的明珠”。自然語言處理的內容包括語義理解、文本分類、分詞、詞性標注、語義消歧等。每個問題都有亟須解決的難題,如中文分詞、自然語言理解等。雖然自然語言領域出現(xiàn)了很多優(yōu)秀的算法和思路,如BERT、LSTM、TextRank等,但是效果仍然欠佳,因此這是一個需要持續(xù)被關注的研究領域。本書關注的是如何帶領讀者使用PyTorch進行自然語言處理,使用PyTorch已經(jīng)實現(xiàn)的算法和工具解決業(yè)務中遇到的問題。本章不僅簡單介紹了自然語言的發(fā)展及現(xiàn)在所處的階段,還介紹了TextRank算法、HMM在分詞等方面的應用,并使用HMM實現(xiàn)中文分詞算法。在“實驗室小試牛刀之對話機器人”環(huán)節(jié),我們會創(chuàng)建一個對話機器人,希望讀者可以用自己的語料訓練出一個有趣的對話機器人。
第7章是自然語言處理技術的擴展章節(jié),主要介紹當前非常流行的自然語言預訓練模型,包括詞嵌入、ELMo、GPT、BERT等。通過對比各個模型框架的演變,讀者可以了解自然語言處理技術的發(fā)展方向,為深入研究自然語言處理奠定基礎。
第8章主要介紹AllenNLP。AllenNLP是構建在PyTorch之上的高層架構,提供了常見且豐富的自然語言處理功能。從事自然語言處理工作的讀者都應該關注AllenNLP,因為其提供的接口方便、靈活。
第9章主要介紹FastAI高層深度學習框架,用10行代碼解決深度學習難題,其底層基于PyTorch實現(xiàn)。本章在FastAI框架中使用BERT中文預訓練模型完成中文文本分類任務,相信讀者會喜歡其編碼。
第10章介紹PyTorch Big Graph嵌入,帶領讀者領略圖挖掘的前沿思想!爸R圖譜”的概念悄悄地走進了人們的視野,各大公司和實驗室都在使用深度學習技術構建各個領域的知識圖譜,而基于知識圖譜的知識挖掘無疑成了下一個研究的熱點。
本書涉及的內容不僅包括計算機視覺、自然語言處理等深度學習應用的前沿技術,還涉及基本數(shù)學公式的推導,使讀者不僅會用,還知其原理,知其然也知其所以然。本書內容豐富,涉及面廣,難免有疏忽遺漏之處,望廣大讀者批評指正。
另外,本書涉及的公式,若不做特殊說明,則對數(shù)log的底數(shù)默認為自然常數(shù)e。