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