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