TensorFlow 2.0神經(jīng)網(wǎng)絡(luò)實(shí)踐_第1頁(yè)
TensorFlow 2.0神經(jīng)網(wǎng)絡(luò)實(shí)踐_第2頁(yè)
TensorFlow 2.0神經(jīng)網(wǎng)絡(luò)實(shí)踐_第3頁(yè)
TensorFlow 2.0神經(jīng)網(wǎng)絡(luò)實(shí)踐_第4頁(yè)
TensorFlow 2.0神經(jīng)網(wǎng)絡(luò)實(shí)踐_第5頁(yè)
已閱讀5頁(yè),還剩236頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

TensorFlow2.0神經(jīng)網(wǎng)絡(luò)實(shí)踐目錄TOC\h\h第一部分神經(jīng)網(wǎng)絡(luò)基礎(chǔ)\h第1章什么是機(jī)器學(xué)習(xí)\h1.1數(shù)據(jù)集的重要性\h1.1.1n維空間\h1.1.2維度詛咒\h1.2有監(jiān)督學(xué)習(xí)\h1.2.1距離和相似性——k-NN算法\h1.2.2參數(shù)模型\h1.2.3評(píng)估模型性能——度量指標(biāo)\h1.3無(wú)監(jiān)督學(xué)習(xí)\h1.4半監(jiān)督學(xué)習(xí)\h1.5總結(jié)\h1.6練習(xí)題\h第2章神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)\h2.1神經(jīng)網(wǎng)絡(luò)\h2.1.1生物神經(jīng)元\h2.1.2人工神經(jīng)元\h2.1.3全連接層\h2.1.4激活函數(shù)\h2.1.5損失函數(shù)\h2.1.6參數(shù)初始化\h2.2優(yōu)化\h2.2.1梯度下降法\h2.2.2梯度下降優(yōu)化算法\h2.2.3反向傳播和自動(dòng)微分\h2.3卷積神經(jīng)網(wǎng)絡(luò)\h2.3.1卷積運(yùn)算符\h2.3.2二維卷積\h2.3.3卷間的二維卷積\h2.3.41×1×D卷積\h2.4正則化\h2.4.1dropout\h2.4.2數(shù)據(jù)擴(kuò)充\h2.4.3早期停止\h2.4.4批量歸一化\h2.5總結(jié)\h2.6練習(xí)題\h第二部分TensorFlow基礎(chǔ)\h第3章TensorFlow圖架構(gòu)\h3.1環(huán)境設(shè)置\h3.1.1TensorFlow1.x的環(huán)境設(shè)置\h3.1.2TensorFlow2.0的環(huán)境設(shè)置\h3.2數(shù)據(jù)流圖\h3.2.1主要結(jié)構(gòu)——tf.Graph\h3.2.2圖定義——從tf.Operation到tf.Tensor\h3.2.3圖放置——tf.device\h3.2.4圖執(zhí)行——tf.Session\h3.2.5靜態(tài)圖中的變量\h3.3模型定義和訓(xùn)練\h3.3.1用tf.layers定義模型\h3.3.2自動(dòng)微分——損失函數(shù)和優(yōu)化器\h3.4用Python操作圖\h3.4.1給占位符賦值\h3.4.2總結(jié)記錄\h3.4.3保存模型參數(shù)和模型選擇\h3.5總結(jié)\h3.6練習(xí)題\h第4章TensorFlow2.0架構(gòu)\h4.1重新學(xué)習(xí)這個(gè)框架\h4.2Keras框架及其模型\h4.2.1順序API\h4.2.2函數(shù)式API\h4.2.3子類方法\h4.3eager執(zhí)行模式和新的特征\h4.3.1基本示例\h4.3.2函數(shù),而不是會(huì)話\h4.3.3不再有全局的東西\h4.3.4控制流\h4.3.5GradientTape\h4.3.6定制訓(xùn)練循環(huán)\h4.3.7保存和恢復(fù)模型狀態(tài)\h4.3.8總結(jié)記錄和指標(biāo)度量\h4.3.9AutoGraph\h4.4代碼庫(kù)遷移\h4.5總結(jié)\h4.6練習(xí)題\h第5章高效的數(shù)據(jù)輸入流水線和估計(jì)器API\h5.1高效的數(shù)據(jù)輸入流水線\h5.1.1輸入流水線的結(jié)構(gòu)\h5.1.2tf.data.Dataset對(duì)象\h5.1.3性能優(yōu)化\h5.1.4構(gòu)建自己的數(shù)據(jù)集\h5.1.5數(shù)據(jù)擴(kuò)充\h5.1.6TensroFlow數(shù)據(jù)集——tdfs\h5.1.7Keras整合\h5.1.8eager整合\h5.2估計(jì)器API\h5.2.1數(shù)據(jù)輸入流水線\h5.2.2定制估計(jì)器\h5.2.3預(yù)制估計(jì)器\h5.3總結(jié)\h5.4練習(xí)題\h第三部分神經(jīng)網(wǎng)絡(luò)應(yīng)用\h第6章使用TensorFlowHub進(jìn)行圖像分類\h6.1獲取數(shù)據(jù)\h6.2遷移學(xué)習(xí)\h6.2.1TensorFlowHub\h6.2.2使用Inceptionv3作為特征提取器\h6.2.3使數(shù)據(jù)適應(yīng)模型\h6.2.4建立模型——hub.KerasLayer\h6.2.5訓(xùn)練與評(píng)估\h6.2.6訓(xùn)練速度\h6.3微調(diào)\h6.3.1何時(shí)微調(diào)\h6.3.2TensorFlowHub集成\h6.3.3訓(xùn)練和評(píng)估\h6.3.4訓(xùn)練速度\h6.4總結(jié)\h6.5練習(xí)題\h第7章目標(biāo)檢測(cè)\h7.1獲取數(shù)據(jù)\h7.2目標(biāo)定位\h7.2.1定位是一個(gè)回歸問(wèn)題\h7.2.2IoU\h7.2.3平均精度\h7.2.4平均精度均值\h7.2.5改進(jìn)訓(xùn)練腳本\h7.3分類和定位\h7.3.1多任務(wù)學(xué)習(xí)\h7.3.2雙頭網(wǎng)絡(luò)\h7.3.3基于錨的檢測(cè)器\h7.3.4錨框\h7.4總結(jié)\h7.5練習(xí)題\h第8章語(yǔ)義分割和自定義數(shù)據(jù)集生成器\h8.1語(yǔ)義分割\h8.1.1挑戰(zhàn)\h8.1.2反卷積——轉(zhuǎn)置卷積\h8.1.3U-Net架構(gòu)\h8.2創(chuàng)建一個(gè)TensorFlow數(shù)據(jù)集生成器\h8.2.1層次化結(jié)構(gòu)\h8.2.2數(shù)據(jù)集類和DatasetInfo\h8.2.3創(chuàng)建數(shù)據(jù)集分割\h8.2.4生成示例\h8.2.5使用生成器\h8.3模型訓(xùn)練與評(píng)估\h8.3.1數(shù)據(jù)準(zhǔn)備\h8.3.2訓(xùn)練循環(huán)和Keras回調(diào)函數(shù)\h8.3.3評(píng)估與推論\h8.4總結(jié)\h8.5練習(xí)題\h第9章生成式對(duì)抗網(wǎng)絡(luò)\h9.1了解GAN及其應(yīng)用\h9.1.1價(jià)值函數(shù)\h9.1.2非飽和價(jià)值函數(shù)\h9.1.3模型定義和訓(xùn)練階段\h9.1.4GAN的應(yīng)用\h9.2無(wú)條件的GAN\h9.2.1準(zhǔn)備數(shù)據(jù)\h9.2.2定義生成器\h9.2.3定義鑒別器\h9.2.4定義損失函數(shù)\h9.2.5無(wú)條件的GAN中的對(duì)抗訓(xùn)練過(guò)程\h9.3有條件的GAN\h9.3.1為有條件的GAN獲取數(shù)據(jù)\h9.3.2在有條件的GAN中定義生成器\h9.3.3在有條件的GAN中定義鑒別器\h9.3.4對(duì)抗訓(xùn)練過(guò)程\h9.4總結(jié)\h9.5練習(xí)題\h第10章在生產(chǎn)環(huán)境中部署模型\h10.1SavedModel序列化格式\h10.1.1特征\h10.1.2通過(guò)Keras模型創(chuàng)建SavedModel\h10.1.3使用通用函數(shù)進(jìn)行SavedModel轉(zhuǎn)換\h10.2Python部署\h10.2.1通用計(jì)算圖\h10.2.2Keras模型\h10.2.3平面圖\h10.3支持部署的平臺(tái)\h10.3.1TensorFlow.js\h10.3.2Go綁定和tfgo\h10.4總結(jié)\h10.5練習(xí)題第一部分神經(jīng)網(wǎng)絡(luò)基礎(chǔ)本部分介紹機(jī)器學(xué)習(xí),以及神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)的重要概念。本部分包括第1章和第2章。第1章什么是機(jī)器學(xué)習(xí)機(jī)器學(xué)習(xí)(MachineLearning,ML)是人工智能的一個(gè)分支,我們通過(guò)定義算法,以訓(xùn)練一個(gè)可從數(shù)據(jù)中描述和抽取有價(jià)值信息的模型。ML在工業(yè)環(huán)境中的預(yù)測(cè)性維護(hù)、醫(yī)療應(yīng)用中的圖像分析、金融及許多其他行業(yè)的時(shí)間序列預(yù)測(cè)、出于安全目的的人臉檢測(cè)和識(shí)別、自動(dòng)駕駛、文本解析、語(yǔ)音識(shí)別、推薦系統(tǒng)等數(shù)不勝數(shù)的領(lǐng)域都有著令人驚嘆的應(yīng)用,我們可能每天都在不知不覺(jué)中使用著它們!想想看你的智能手機(jī)的相機(jī)應(yīng)用程序——當(dāng)你打開該應(yīng)用程序,并將攝像頭對(duì)準(zhǔn)某個(gè)人時(shí),你會(huì)在這個(gè)人的臉部周圍看到一個(gè)方框。這怎么可能呢?對(duì)于計(jì)算機(jī)來(lái)說(shuō),圖像僅僅是三個(gè)疊在一起的矩陣的集合。一個(gè)算法如何檢測(cè)出表示人臉的像素的特定子集呢?很有可能是相機(jī)應(yīng)用程序使用的算法(也被稱為模型)已經(jīng)被訓(xùn)練好了,用于檢測(cè)這種模式。此項(xiàng)任務(wù)被稱為人臉識(shí)別。人臉識(shí)別可以由機(jī)器學(xué)習(xí)算法來(lái)解決,該算法可被歸為有監(jiān)督學(xué)習(xí)的范疇。ML通常分為三大類,我們將在以下部分中對(duì)所有內(nèi)容進(jìn)行分析:·有監(jiān)督學(xué)習(xí)·無(wú)監(jiān)督學(xué)習(xí)·半監(jiān)督學(xué)習(xí)每類方法都有自己的特點(diǎn)和算法集,但它們都有一個(gè)共同的目標(biāo):從數(shù)據(jù)中學(xué)習(xí)。從數(shù)據(jù)中學(xué)習(xí)是每個(gè)ML算法的目標(biāo),特別是學(xué)習(xí)將數(shù)據(jù)映射到(預(yù)期)響應(yīng)的未知函數(shù)。數(shù)據(jù)集可能是整個(gè)ML流水線中最關(guān)鍵的部分。它的質(zhì)量、結(jié)構(gòu)和大小是深度學(xué)習(xí)算法成功的關(guān)鍵,我們將在接下來(lái)的章節(jié)中看到。例如前面提到的人臉識(shí)別,可以通過(guò)訓(xùn)練一個(gè)模型來(lái)解決,讓它查看成千上萬(wàn)的帶標(biāo)簽的示例,從而使算法學(xué)習(xí)到對(duì)應(yīng)于我們所說(shuō)的人臉的“特定的輸入”。如果在不同的人臉數(shù)據(jù)集上訓(xùn)練,同樣的算法可以獲得不同的性能,我們擁有的高質(zhì)量數(shù)據(jù)越多,算法的性能就越好。本章將介紹以下主題:·數(shù)據(jù)集的重要性·有監(jiān)督學(xué)習(xí)·無(wú)監(jiān)督學(xué)習(xí)·半監(jiān)督學(xué)習(xí)1.1數(shù)據(jù)集的重要性由于數(shù)據(jù)集的概念在ML中至關(guān)重要,因此,我們?cè)敿?xì)地研究一下,重點(diǎn)是如何創(chuàng)建所需的分割,以構(gòu)建完整和正確的ML流水線。數(shù)據(jù)集(dataset),顧名思義,是數(shù)據(jù)的集合。在形式上,可以將數(shù)據(jù)集描述為數(shù)據(jù)對(duì)(ei,li)的集合:其中ei是第i個(gè)示例,li是其標(biāo)簽,k代表數(shù)據(jù)集的有限的基數(shù)。一個(gè)數(shù)據(jù)集的元素?cái)?shù)量是有限的,ML算法將多次遍歷該數(shù)據(jù)集,嘗試了解數(shù)據(jù)結(jié)構(gòu),直到解決了要求它執(zhí)行的任務(wù)。如第2章中所示,一些算法會(huì)同時(shí)考慮所有數(shù)據(jù),而其他算法會(huì)在每次訓(xùn)練迭代中迭代查看一小部分?jǐn)?shù)據(jù)。典型的有監(jiān)督學(xué)習(xí)任務(wù)是對(duì)數(shù)據(jù)集進(jìn)行分類。我們?cè)跀?shù)據(jù)上訓(xùn)練一個(gè)模型,使其學(xué)習(xí)將示例ei中提取的一組特定特征(或示例ei本身)對(duì)應(yīng)到標(biāo)簽li上。一旦開啟機(jī)器學(xué)習(xí)世界之旅,讀者就應(yīng)該熟悉數(shù)據(jù)集、數(shù)據(jù)集分割和輪的概念,以便在接下來(lái)的章節(jié)中討論這些概念時(shí),讀者已了然于胸。現(xiàn)在,你已了解什么是數(shù)據(jù)集。下面讓我們深入研究一下數(shù)據(jù)集分割的基本概念。數(shù)據(jù)集包含你可以處理的所有數(shù)據(jù),如前所述,ML算法需要在數(shù)據(jù)集中多次遍歷并查看數(shù)據(jù),以便學(xué)習(xí)如何執(zhí)行任務(wù)(例如分類任務(wù))。如果我們使用相同的數(shù)據(jù)集來(lái)訓(xùn)練和測(cè)試算法的性能,如何保證即使是在沒(méi)見過(guò)的數(shù)據(jù)上,算法性能依然良好呢?好吧,我們做不到。最常見的做法是將數(shù)據(jù)集分割為三部分:·訓(xùn)練集:用于訓(xùn)練模型的子集。·驗(yàn)證集:用于在訓(xùn)練期間測(cè)試模型性能以及執(zhí)行超參數(shù)調(diào)整/搜索的子集?!y(cè)試集:在訓(xùn)練或驗(yàn)證階段不接觸的子集。僅用于最終性能評(píng)估。這三部分都是數(shù)據(jù)集的不相交子集,如圖1-1所示。圖1-1維恩圖表示應(yīng)如何分割數(shù)據(jù)集,訓(xùn)練集、驗(yàn)證集和測(cè)試集之間不應(yīng)重疊訓(xùn)練集通常是較大的子集,因?yàn)樗仨毷钦麄€(gè)數(shù)據(jù)集的有意義的表示。驗(yàn)證集和測(cè)試集較小,而且通常大小相同——當(dāng)然,這只是一般情況,對(duì)于數(shù)據(jù)集的基數(shù)沒(méi)有限制。實(shí)際上,為了對(duì)算法進(jìn)行訓(xùn)練和表示,唯一重要的是數(shù)據(jù)集要足夠大。我們會(huì)讓模型從訓(xùn)練集中學(xué)習(xí),使用驗(yàn)證集評(píng)估其在訓(xùn)練過(guò)程中的性能,并在測(cè)試集中進(jìn)行最終的性能評(píng)估,這使我們能夠正確定義和訓(xùn)練可以很好推廣的有監(jiān)督學(xué)習(xí)算法,因此即使在沒(méi)見過(guò)的數(shù)據(jù)上也能很好地工作。輪是學(xué)習(xí)算法對(duì)整個(gè)訓(xùn)練集處理一遍的過(guò)程。因此,如果我們的訓(xùn)練集有60000個(gè)示例,一旦ML算法使用所有示例進(jìn)行學(xué)習(xí),就表示一輪過(guò)去了。MNIST數(shù)據(jù)集是ML中最著名的數(shù)據(jù)集之一。MNIST是標(biāo)記對(duì)(labeledpair)的數(shù)據(jù)集,其中每個(gè)示例都是一個(gè)手寫數(shù)字的28×28二值圖像,而標(biāo)簽是圖像表示的數(shù)字。然而,我們并不打算在本書中使用MNIST數(shù)據(jù)集,原因如下:·MNIST太簡(jiǎn)單了。不論是傳統(tǒng)的還是最新的ML算法都可以幾乎完美地對(duì)數(shù)據(jù)集進(jìn)行分類(準(zhǔn)確率>97%)?!NIST被過(guò)度使用。我們不會(huì)使用與其他人相同的數(shù)據(jù)集來(lái)開發(fā)相同的應(yīng)用程序?!NIST無(wú)法代表現(xiàn)代計(jì)算機(jī)視覺(jué)任務(wù)。上述原因來(lái)自ZalandoResearch的研究人員于2017年發(fā)布的一個(gè)名為fashion-MNIST的新數(shù)據(jù)集的描述。fashion-MNIST也將是我們?cè)诒緯惺褂玫臄?shù)據(jù)集之一。fashion-MNIST是MNIST數(shù)據(jù)集的替代,這意味著它們具有相同的結(jié)構(gòu)。正因如此,通過(guò)更改數(shù)據(jù)集路徑,任何使用MNIST的源代碼都可以使用fashion-MNIST。與原始的MNIST數(shù)據(jù)集一樣,fashion-MNIST由包含60000個(gè)示例的訓(xùn)練集和10000個(gè)示例的測(cè)試集組成,甚至圖像格式(28×28)也是相同的。主要的區(qū)別在于:圖像不是手寫數(shù)字的二值圖像,而是衣服的灰度圖像。由于它們是灰度級(jí)不是二進(jìn)制的,因此它們的復(fù)雜度較高(二進(jìn)制表示背景值為0,前景為255;而灰度為全量程[0,255])。如圖1-2所示。圖1-2從fashion-MNIST數(shù)據(jù)集(左圖)和MNIST數(shù)據(jù)集(右圖)中采樣的圖像。值得注意的是,由于MNIST數(shù)據(jù)集是二值圖像數(shù)據(jù)集,因此它更簡(jiǎn)單。而fashion-MNIST數(shù)據(jù)集,由于使用了灰度色板以及其數(shù)據(jù)集元素固有的內(nèi)在復(fù)雜性,則更加復(fù)雜像fashion-MNIST這樣的數(shù)據(jù)集是用于有監(jiān)督學(xué)習(xí)算法中使用的理想候選數(shù)據(jù)集,因?yàn)樗鼈冃枰獛в袠?biāo)注的示例進(jìn)行訓(xùn)練。在描述不同類型的ML算法之前,有必要熟悉n維空間的概念,這是每個(gè)ML從業(yè)者的必修課。1.1.1n維空間n維空間是一種對(duì)數(shù)據(jù)集建模的方法,其示例各有n個(gè)屬性。數(shù)據(jù)集中的每個(gè)示例ei都由它的n個(gè)屬性xj=0,…,n–1來(lái)描述,表達(dá)式如下:直觀地說(shuō),你可以考慮一個(gè)示例,如數(shù)據(jù)庫(kù)表中的一行,其中的屬性是列。例如,像fashion-MNIST這樣的圖像數(shù)據(jù)集是一個(gè)元素的數(shù)據(jù)集,每個(gè)元素都有28×28=284個(gè)屬性——它們沒(méi)有特定的列名,但是這個(gè)數(shù)據(jù)集的每一列都可以看作是圖像中的一個(gè)像素位置。當(dāng)我們開始思考諸如n維空間中由屬性唯一標(biāo)識(shí)的點(diǎn)之類的示例時(shí),就產(chǎn)生了維度的概念。當(dāng)維度小于或等于3且屬性為數(shù)字時(shí),可以很容易將此表示可視化。為了理解這個(gè)概念,讓我們把目光投向數(shù)據(jù)挖掘領(lǐng)域中最常見的數(shù)據(jù)集——Iris數(shù)據(jù)集。這里我們要做的是探索性的數(shù)據(jù)分析。當(dāng)開始使用一個(gè)新的數(shù)據(jù)集時(shí),進(jìn)行探索性數(shù)據(jù)分析是很好的做法:先對(duì)數(shù)據(jù)進(jìn)行可視化并努力理解數(shù)據(jù),再考慮將ML應(yīng)用于數(shù)據(jù)集上。該數(shù)據(jù)集包含三個(gè)類別,每個(gè)類別有50個(gè)示例,其中每個(gè)類別都指向鳶尾花的一種類型。這些屬性都是連續(xù)的,除了以下標(biāo)簽/類:·萼片長(zhǎng)度(cm)·萼片寬度(cm)·花瓣長(zhǎng)度(cm)·花瓣寬度(cm)·類別——山鳶尾(Iris-Setosa)、變色鳶尾(Iris-Versicolor)和維吉尼亞鳶尾(IrisVirginica)在這個(gè)小數(shù)據(jù)集中,有四個(gè)屬性(加上類信息),這就意味著有四個(gè)維度,很難同時(shí)可視化。我們能做的就是在數(shù)據(jù)集中選取特征對(duì)(萼片寬度、萼片長(zhǎng)度)和(花瓣寬度、花瓣長(zhǎng)度),并將其繪制在二維平面中,以便了解一個(gè)特征與另一個(gè)特征是如何相關(guān)(或不相關(guān))的,并找出數(shù)據(jù)中是否存在某些自然分區(qū)。使用諸如可視化兩個(gè)特征之間的關(guān)系之類的方法只能使我們對(duì)數(shù)據(jù)集進(jìn)行一些初步的認(rèn)識(shí),在更復(fù)雜的場(chǎng)景中沒(méi)有幫助,在這種情況下,屬性的數(shù)量更多且不總是數(shù)值的。在圖1-3中,我們給每個(gè)類別分配不同的顏色,Setosa、Versicolor、Virginica分別對(duì)應(yīng)藍(lán)色、綠色和紅色。正如我們從圖1-3中看到的,在這個(gè)由屬性(萼片長(zhǎng)度、萼片寬度)所標(biāo)識(shí)的二維空間中,藍(lán)色圓點(diǎn)們彼此都很接近,而其他兩個(gè)類別仍然是混合的。從圖1-3中我們可以得到的結(jié)論是,鳶尾花的長(zhǎng)度和寬度之間可能存在正相關(guān)關(guān)系,但除此之外沒(méi)有其他關(guān)系。下面,讓我們看一下花瓣之間的關(guān)系。如圖1-4所示。如圖1-4所示,此數(shù)據(jù)集中有三個(gè)分割。為了區(qū)分它們,我們可以使用花瓣的長(zhǎng)度和寬度屬性。分類算法的目標(biāo)是讓它們學(xué)習(xí)如何識(shí)別哪些特征是有區(qū)分性的,以便正確區(qū)分不同類的元素。神經(jīng)網(wǎng)絡(luò)已經(jīng)被證明是避免進(jìn)行特征選擇和大量數(shù)據(jù)預(yù)處理的正確工具:它們對(duì)噪聲有很強(qiáng)的抵抗力,以至于幾乎不需要數(shù)據(jù)清理。圖1-3Iris數(shù)據(jù)集的散點(diǎn)圖,每個(gè)類別都有不同的顏色,x軸和y軸分別表示萼片長(zhǎng)度和萼片寬度(附彩圖)圖1-4Iris數(shù)據(jù)集的散點(diǎn)圖,每個(gè)類別都有不同的顏色,x軸和y軸分別表示花瓣長(zhǎng)度和花瓣寬度(附彩圖)警告這僅適用于大的數(shù)據(jù)集,其中噪聲被正確的數(shù)據(jù)所淹沒(méi)。對(duì)于小數(shù)據(jù)集,研究特征的最好辦法是繪制特征,并提供重要特征作為輸入來(lái)幫助ML算法。Iris數(shù)據(jù)集是可用來(lái)描述n維空間最直接的數(shù)據(jù)集。如果我們?cè)倩氐絝ashion-MNIST數(shù)據(jù)集,事情將變得更加有趣。一個(gè)示例具有784個(gè)特征,如何可視化784維空間?答案是:不能可視化!我們唯一能做的就是降維,以減少可視化所需的維數(shù),并更好地理解底層數(shù)據(jù)結(jié)構(gòu)。一種最簡(jiǎn)單的數(shù)據(jù)約簡(jiǎn)技術(shù)(通常對(duì)高維數(shù)據(jù)集毫無(wú)意義)是對(duì)隨機(jī)選取的數(shù)據(jù)維度進(jìn)行可視化。我們對(duì)Iris數(shù)據(jù)集進(jìn)行了此操作:從四個(gè)可用維度中選取了兩個(gè)隨機(jī)維度,并將數(shù)據(jù)繪制在二維平面上。當(dāng)然,對(duì)于低維空間,這可能會(huì)有所幫助,但對(duì)于諸如fashion-MNIST之類的數(shù)據(jù)集,則完全是在浪費(fèi)時(shí)間。一些更好的降維技術(shù),比如主成分分析(PrincipalComponentAnalysis,PCA)或t-分布鄰域嵌入算法(t-distributedStochasticNeighborEmbedding,t-SNE),在本書中我們將不做詳細(xì)介紹,因?yàn)樵诮酉聛?lái)的章節(jié)中,我們將用到的數(shù)據(jù)可視化工具TensorBoard,已經(jīng)為我們實(shí)現(xiàn)了這些算法。此外,在高維空間中工作時(shí),某些特定的幾何屬性無(wú)法如我們所預(yù)想的那樣正常工作,這被稱為維度詛咒。下面我們將看到如何使用一個(gè)簡(jiǎn)單的幾何示例來(lái)說(shuō)明隨著維度的增加,歐幾里得距離是如何不同工作的。1.1.2維度詛咒在D維空間中以為中心取一個(gè)超立方體[0,1]D。以D維超球面為例,SD以空間原點(diǎn)o=(0,0,…,0)為中心。直觀地說(shuō),超立方體的中心c在球面內(nèi),對(duì)于D的每個(gè)值都成立嗎?我們可以通過(guò)度量超立方體中心與原點(diǎn)之間的歐幾里得距離來(lái)驗(yàn)證這一點(diǎn):由于球體的半徑在任何維度上均為1,因此可以得出結(jié)論,當(dāng)D大于4時(shí),超立方體的中心在超球體之外。在維度詛咒中,指的是只有在高維空間中處理數(shù)據(jù)時(shí)才會(huì)出現(xiàn)的各種現(xiàn)象,而在二維或三維空間等低維環(huán)境中不會(huì)出現(xiàn)這些現(xiàn)象。隨著維度的增加,一些違反直覺(jué)的事情開始發(fā)生,這就是維度詛咒?,F(xiàn)在,應(yīng)該更清楚的是,在高維空間中工作并不容易,而且也不直觀。深度神經(jīng)網(wǎng)絡(luò)的最大優(yōu)勢(shì)之一(也是其廣泛使用的原因之一),是在高維空間中使問(wèn)題易于處理,從而逐層降維。我們將要描述的第一類ML算法是有監(jiān)督學(xué)習(xí)。當(dāng)我們?cè)噲D尋找能夠在n維空間中劃分不同類別元素的函數(shù)時(shí),這類算法是合適的工具。1.2有監(jiān)督學(xué)習(xí)有監(jiān)督學(xué)習(xí)算法的工作原理是從知識(shí)庫(kù)(KnowledgeBase,KB)中提取知識(shí),KB包含我們需要學(xué)習(xí)的概念的標(biāo)注實(shí)例的數(shù)據(jù)集。有監(jiān)督學(xué)習(xí)算法是兩階段算法。給定一個(gè)有監(jiān)督學(xué)習(xí)問(wèn)題,比如說(shuō)一個(gè)分類問(wèn)題,算法會(huì)在第一階段嘗試解決問(wèn)題,該階段稱為訓(xùn)練階段;在第二階段對(duì)其性能進(jìn)行評(píng)估,該階段稱為測(cè)試階段。如1.1節(jié)定義的三個(gè)數(shù)據(jù)集分割(訓(xùn)練、驗(yàn)證和測(cè)試)、兩階段算法,這應(yīng)發(fā)出警報(bào):為什么會(huì)有一個(gè)兩階段算法和三個(gè)數(shù)據(jù)集分割?因?yàn)榈谝浑A段(應(yīng)該在完善的流水線中)使用兩個(gè)數(shù)據(jù)集。我們可以將這些階段定義為如下。·訓(xùn)練和驗(yàn)證:該算法對(duì)數(shù)據(jù)集進(jìn)行分析以生成一個(gè)理論,該理論對(duì)它所訓(xùn)練的數(shù)據(jù)及它從未見過(guò)的項(xiàng)目均有效。因此,該算法試圖發(fā)現(xiàn)和概括一個(gè)概念,該概念將具有相同標(biāo)簽的示例與示例本身聯(lián)系起來(lái)。直觀地說(shuō),如果你有一個(gè)標(biāo)注了貓和狗的數(shù)據(jù)集,你希望你的算法能夠區(qū)分它們,同時(shí)能夠?qū)в邢嗤瑯?biāo)簽的示例可能具有的變化(例如顏色、位置、背景等各不相同的貓)具有魯棒性。在每個(gè)訓(xùn)練階段結(jié)束時(shí),應(yīng)使用驗(yàn)證集上的度量指標(biāo)進(jìn)行性能評(píng)估,以選擇在驗(yàn)證集上達(dá)到最佳性能的模型,并調(diào)整算法超參數(shù)以獲得最佳結(jié)果。·測(cè)試:將所學(xué)的理論應(yīng)用于在訓(xùn)練和驗(yàn)證階段從未見過(guò)的標(biāo)注示例。這使我們能夠測(cè)試算法如何在從未用于訓(xùn)練或選擇模型超參數(shù)的數(shù)據(jù)上執(zhí)行,這是一個(gè)真實(shí)的場(chǎng)景。有監(jiān)督學(xué)習(xí)算法是一個(gè)廣泛的范疇,它們都有共享標(biāo)記數(shù)據(jù)集的需求。不要被標(biāo)簽的概念所迷惑:標(biāo)簽不一定是一個(gè)離散值(貓、狗、房子、馬),事實(shí)上,它也可以是一個(gè)連續(xù)值。重要的是數(shù)據(jù)集中存在關(guān)聯(lián)(例如,數(shù)值)。更正式地講,該示例是預(yù)測(cè)變量,而數(shù)值是因變量、結(jié)果或目標(biāo)變量。根據(jù)期望結(jié)果的類型,有監(jiān)督學(xué)習(xí)算法可以分為兩類如圖1-5所示。圖1-5有監(jiān)督學(xué)習(xí)–目標(biāo)變量定義要解決的問(wèn)題·分類:標(biāo)簽是離散的,目的是對(duì)示例進(jìn)行分類并預(yù)測(cè)標(biāo)簽。分類算法的目的是了解分類邊界。這些邊界是將示例所在的空間劃分為多個(gè)區(qū)域的函數(shù)?!せ貧w:目標(biāo)變量是連續(xù)的,目的是通過(guò)示例學(xué)習(xí)回歸連續(xù)值。在接下來(lái)的章節(jié)中,我們將會(huì)看到一個(gè)回歸問(wèn)題,一個(gè)臉部周圍的邊界框角坐標(biāo)的回歸。人臉可以在輸入圖像中的任何位置,并且該算法已學(xué)會(huì)對(duì)邊界框的八個(gè)坐標(biāo)進(jìn)行回歸。參數(shù)和非參數(shù)算法用于解決分類和回歸問(wèn)題。最常見的非參數(shù)算法是k-NN算法。它是用于介紹距離和相似性的基本概念。這些概念是每個(gè)ML應(yīng)用程序的基礎(chǔ)。下面我們介紹k-NN算法。1.2.1距離和相似性——k-NN算法k-NN算法的目標(biāo)是找到與給定元素相似的元素,使用相似度對(duì)它們進(jìn)行排序,然后返回找到的前k個(gè)相似元素(按相似度排序的前k個(gè)元素)。為此,需要度量將數(shù)值分?jǐn)?shù)分配給兩個(gè)點(diǎn)的函數(shù)所需的相似度:分?jǐn)?shù)越高,元素的相似度越高。由于我們將數(shù)據(jù)集建模為n維空間中的一組點(diǎn),因此我們可以使用任何Lp范數(shù)或任何其他得分函數(shù)(即使它不是度量標(biāo)準(zhǔn))來(lái)度量?jī)牲c(diǎn)之間的距離,并考慮緊密相接的相似元素和相距很遠(yuǎn)的相異元素。范數(shù)/距離函數(shù)的選擇是完全任意的,它應(yīng)該取決于n維空間的拓?fù)浣Y(jié)構(gòu)(這就是為什么我們通常會(huì)降低輸入數(shù)據(jù)的維度,并且嘗試在低維空間中度量距離,這樣維度詛咒給我們帶來(lái)的麻煩會(huì)更少)。因此,如果要度量維度為D的數(shù)據(jù)集中元素的相似度,給定一個(gè)點(diǎn)p,則必須度量并收集從p到其他每個(gè)點(diǎn)q的距離:前面的示例顯示了在連接p和q的距離向量上計(jì)算通用p范數(shù)的一般情況。實(shí)際上,令p=1表示曼哈頓距離,令p=2表示歐氏距離。無(wú)論選擇什么距離,該算法都是通過(guò)計(jì)算距離函數(shù)并按接近度排序來(lái)衡量相似度的。當(dāng)k-NN應(yīng)用于分類問(wèn)題時(shí),通過(guò)其k個(gè)相鄰點(diǎn)的投票對(duì)點(diǎn)p進(jìn)行分類,其投票結(jié)果就是其類別。因此,以特定類別分類的對(duì)象取決于它周圍的元素的類別。將k-NN應(yīng)用于回歸問(wèn)題時(shí),算法的輸出為k-NN的平均值。k-NN只是近年來(lái)發(fā)展起來(lái)的非參數(shù)模型的一種,但是參數(shù)模型通常表現(xiàn)出更好的性能。我們將在下面介紹。1.2.2參數(shù)模型在本書中我們描述的ML模型均為參數(shù)模型,這意味著可以使用一個(gè)函數(shù)描述一個(gè)模型,該函數(shù)的輸入輸出都是已知的(這一點(diǎn)在有監(jiān)督學(xué)習(xí)的情況下是顯而易見的),目的是更改模型參數(shù),以便在給定特定輸入的情況下,使模型產(chǎn)生預(yù)期的輸出。給定一個(gè)輸入樣本x=(x0,x1,…,xn–1)和期望的結(jié)果y,ML模型是參數(shù)函數(shù)fθ,其中θ是在訓(xùn)練過(guò)程中要更改的模型參數(shù)集,以便擬合數(shù)據(jù)(或者換句話說(shuō),生成一個(gè)假設(shè))。我們可以用來(lái)闡明模型參數(shù)概念的最直觀、最直接的示例是線性回歸。線性回歸試圖通過(guò)將一個(gè)線性方程擬合到觀測(cè)數(shù)據(jù),從而對(duì)兩個(gè)變量之間的關(guān)系建模。線性回歸模型的方程式為:這里,x是自變量,y是因變量,參數(shù)m是比例因子或斜率,b是截距。因此,在訓(xùn)練階段必須更改的模型參數(shù)為θ={m,b}。我們?cè)谟懻撚?xùn)練集中的一個(gè)例子,但是這條線應(yīng)該是最適合訓(xùn)練集中所有點(diǎn)的一條線。當(dāng)然,我們對(duì)數(shù)據(jù)集做了一個(gè)很強(qiáng)的假設(shè),由于模型的性質(zhì),我們使用的模型是一條線。因此,在嘗試將線性模型擬合到數(shù)據(jù)之前,我們應(yīng)該首先確定因變量和自變量之間是否存在線性關(guān)系(通常使用散點(diǎn)圖是有用的)。擬合回歸線方程最常用的方法是最小二乘法。該方法通過(guò)最小化從每個(gè)數(shù)據(jù)點(diǎn)到該線的垂直偏差的平方和來(lái)計(jì)算觀測(cè)數(shù)據(jù)的最佳擬合線(如果點(diǎn)正好位于擬合線上,則其垂直偏差為0)。正如我們將在第2章中看到的那樣,觀測(cè)數(shù)據(jù)與預(yù)測(cè)數(shù)據(jù)之間的這種關(guān)系稱為損失函數(shù)。因此,有監(jiān)督學(xué)習(xí)算法的目標(biāo)是迭代數(shù)據(jù)并迭代調(diào)整參數(shù)θ,使fθ能夠正確地對(duì)觀察到的現(xiàn)象進(jìn)行建模。然而,當(dāng)使用更復(fù)雜的模型時(shí)(如神經(jīng)網(wǎng)絡(luò)中有大量可調(diào)整的參數(shù)),調(diào)整參數(shù)可能會(huì)導(dǎo)致不良結(jié)果。如果我們的模型僅由兩個(gè)參數(shù)組成,并且正在嘗試對(duì)線性現(xiàn)象進(jìn)行建模,那么就沒(méi)有問(wèn)題。但是,如果我們嘗試對(duì)Iris數(shù)據(jù)集進(jìn)行分類,則無(wú)法使用簡(jiǎn)單的線性模型,因?yàn)楹苋菀卓闯?,我們要學(xué)習(xí)的劃分不同類別的函數(shù)并不是一條簡(jiǎn)單的直線。在這種情況下,我們可以使用具有大量可訓(xùn)練參數(shù)的模型,這些模型可以調(diào)整其變量以使其幾乎完全適合數(shù)據(jù)集。這聽起來(lái)似乎很完美,但在實(shí)際中這是不可取的。事實(shí)上,該模型調(diào)整參數(shù)使其僅擬合了訓(xùn)練數(shù)據(jù),幾乎記住了數(shù)據(jù)集,因此失去了全部泛化能力。這種現(xiàn)象被稱為過(guò)擬合,當(dāng)我們使用的模型過(guò)于復(fù)雜而無(wú)法為簡(jiǎn)單事件建模時(shí),就會(huì)發(fā)生這種現(xiàn)象。當(dāng)我們的模型對(duì)于數(shù)據(jù)集而言過(guò)于簡(jiǎn)單,因此無(wú)法捕獲數(shù)據(jù)的所有復(fù)雜性時(shí),會(huì)發(fā)生另一種情況,稱為欠擬合。每個(gè)ML模型都旨在學(xué)習(xí)并適應(yīng)其參數(shù),以使其對(duì)噪聲和泛化具有魯棒性,這意味著要找到一個(gè)合適的近似函數(shù)來(lái)表示預(yù)測(cè)變量與響應(yīng)之間的關(guān)系。如圖1-6所示。圖1-6虛線表示模型的預(yù)測(cè)。左圖可以看到,欠擬合是一個(gè)泛化性能非常差的模型。中圖代表了一個(gè)很好的模型,與右圖存儲(chǔ)訓(xùn)練集并過(guò)擬合的模型相比,它可以很好地被推廣這些年來(lái),已經(jīng)開發(fā)了幾種有監(jiān)督學(xué)習(xí)算法。但是,這本書將集中于ML模型,該模型被證明具有更多的通用性,并且可以用來(lái)解決幾乎所有有監(jiān)督、無(wú)監(jiān)督和半監(jiān)督的學(xué)習(xí)任務(wù):神經(jīng)網(wǎng)絡(luò)。在訓(xùn)練和驗(yàn)證階段的介紹中,我們討論了尚未引入的兩個(gè)概念:超參數(shù)和度量?!こ瑓?shù):當(dāng)要完全定義的算法需要將值分配給一組參數(shù)時(shí),需要考慮超參數(shù)。我們將定義算法本身的參數(shù)稱為超參數(shù)。例如,神經(jīng)網(wǎng)絡(luò)中神經(jīng)元的數(shù)量就是一個(gè)超參數(shù)?!ざ攘恐笜?biāo):是給出模型預(yù)測(cè)的函數(shù)。預(yù)期的輸出會(huì)產(chǎn)生一個(gè)數(shù)字值分?jǐn)?shù),用于衡量模型的優(yōu)劣。度量指標(biāo)是每個(gè)ML流水線中的關(guān)鍵組件。它們非常有用且功能強(qiáng)大,值得一個(gè)單獨(dú)的章節(jié)來(lái)專門介紹。1.2.3評(píng)估模型性能——度量指標(biāo)在評(píng)估和測(cè)試階段評(píng)估有監(jiān)督學(xué)習(xí)算法是任何設(shè)計(jì)良好的ML流水線的重要組成部分。在描述各種可用度量指標(biāo)之前,有一件事值得注意:我們始終可以對(duì)每個(gè)數(shù)據(jù)集的分割進(jìn)行模型性能測(cè)試。在訓(xùn)練階段,通常是在每輪訓(xùn)練結(jié)束時(shí),我們可以在訓(xùn)練集本身以及驗(yàn)證集上測(cè)試算法的性能。繪制曲線在訓(xùn)練過(guò)程中的變化方式,并分析訓(xùn)練和驗(yàn)證曲線之間的關(guān)系,使我們能夠快速確定ML模型先前描述的病態(tài)情況——過(guò)擬合和欠擬合。有監(jiān)督學(xué)習(xí)算法的顯著優(yōu)勢(shì)在于將算法的預(yù)期結(jié)果包含在數(shù)據(jù)集中,因此,本文提出的所有度量指標(biāo)均使用標(biāo)簽信息來(lái)評(píng)估模型的“執(zhí)行情況”。有衡量分類器性能的指標(biāo)和衡量回歸模型性能的指標(biāo)。顯然,即使它們都是有監(jiān)督學(xué)習(xí)算法家族的成員,將分類器作為回歸器對(duì)待也沒(méi)有任何意義。用于評(píng)估有監(jiān)督學(xué)習(xí)算法的第一個(gè)和最常用的度量指標(biāo)是準(zhǔn)確率。1.準(zhǔn)確率準(zhǔn)確率(accuracy)是做出的正確預(yù)測(cè)的數(shù)量與所有預(yù)測(cè)的數(shù)量之比。準(zhǔn)確率用于衡量多分類問(wèn)題的分類性能。給定yi作為標(biāo)簽,作為預(yù)測(cè),我們可以定義第i個(gè)示例的準(zhǔn)確率如下:因此,對(duì)于一個(gè)包含N個(gè)元素的完整數(shù)據(jù)集,所有樣本的平均精度如下:在使用這個(gè)度量指標(biāo)時(shí),我們必須注意數(shù)據(jù)集D的結(jié)構(gòu)。事實(shí)上,只有在屬于每個(gè)類別的樣本數(shù)量相等時(shí),它才能很好地工作(我們需要使用平衡的數(shù)據(jù)集)。在不平衡數(shù)據(jù)集的情況下,或者當(dāng)預(yù)測(cè)錯(cuò)誤類別的錯(cuò)誤高于/低于預(yù)測(cè)另一個(gè)類別時(shí),準(zhǔn)確率不是使用的最佳度量指標(biāo)。要了解原因,請(qǐng)考慮僅包含兩個(gè)類別的數(shù)據(jù)集的情況,其中80%的樣本屬于類別1,20%的樣本屬于類別2。如果分類器僅預(yù)測(cè)類別1,則此數(shù)據(jù)集中測(cè)得的準(zhǔn)確率為0.8,但是,這當(dāng)然不是衡量分類器性能的好方法,因?yàn)闊o(wú)論輸入什么,它總是預(yù)測(cè)相同的類。如果使用40%的類別1樣本和類別2的其余樣本在同一測(cè)試集上測(cè)試同一模型,則度量值將降至0.4。記住,度量指標(biāo)可以在訓(xùn)練階段用于衡量模型的性能,我們可以通過(guò)查看驗(yàn)證準(zhǔn)確率和訓(xùn)練準(zhǔn)確率來(lái)監(jiān)控訓(xùn)練的執(zhí)行情況,以檢測(cè)我們的模型是否對(duì)訓(xùn)練數(shù)據(jù)過(guò)擬合或欠擬合。如果模型可以對(duì)數(shù)據(jù)中存在的關(guān)系進(jìn)行建模,則訓(xùn)練準(zhǔn)確率會(huì)提高;如果不是,則模型過(guò)于簡(jiǎn)單,我們無(wú)法擬合數(shù)據(jù)。在這種情況下,我們必須使用具有更高學(xué)習(xí)能力(具有更多可訓(xùn)練參數(shù))的復(fù)雜模型。如果訓(xùn)練準(zhǔn)確率提高了,我們可以開始查看驗(yàn)證準(zhǔn)確率(總是在每輪訓(xùn)練結(jié)束時(shí)):如果驗(yàn)證準(zhǔn)確率停止增長(zhǎng)甚至開始下降,則該模型過(guò)擬合了訓(xùn)練數(shù)據(jù),我們應(yīng)該停止訓(xùn)練(這稱為提前停止,是一種正則化技術(shù))。2.混淆矩陣混淆矩陣是表示分類器性能的一種表格方式。它可用于總結(jié)分類器在測(cè)試集上的表現(xiàn),且僅可用于多分類問(wèn)題。矩陣的每一行表示預(yù)測(cè)類中的實(shí)例,而每一列表示實(shí)際類中的實(shí)例。例如,在二分類問(wèn)題中,我們可以得到如表1-1所示的結(jié)果。表1-1值得注意的是,混淆矩陣不是一個(gè)度量指標(biāo);事實(shí)上,矩陣本身并不能衡量模型的性能,但它是計(jì)算幾個(gè)有用度量指標(biāo)的基礎(chǔ),所有這些度量指標(biāo)均基于真陽(yáng)性、真陰性、假陽(yáng)性和假陰性。這些術(shù)語(yǔ)均指一個(gè)類,這意味著在計(jì)算這些術(shù)語(yǔ)時(shí),必須將多分類問(wèn)題視為二分類問(wèn)題。給定一個(gè)多分類問(wèn)題,其類別為A,B,…,Z,如下:·(TP)A的真陽(yáng)性:所有歸類為A的A實(shí)例。·(TN)A的真陰性:所有未歸類為A的非A實(shí)例。·(FP)A的假陽(yáng)性:所有歸類為A的非A實(shí)例。·(TP)A的假陰性:所有未歸類為A的A實(shí)例。當(dāng)然,這可以應(yīng)用于數(shù)據(jù)集中的每個(gè)類,這樣每個(gè)類就可得到這四個(gè)值。我們可以計(jì)算的具有TP、TN、FP和FN值的重要度量指標(biāo)是精度、召回率和F1分?jǐn)?shù)。精度精度是正確的陽(yáng)性結(jié)果數(shù)與預(yù)測(cè)的陽(yáng)性結(jié)果數(shù)的比值:該度量指標(biāo)的名稱本身就描述了在此處度量的內(nèi)容:[0,1]范圍內(nèi)的一個(gè)數(shù)字,它表示分類器的預(yù)測(cè)準(zhǔn)確率,此值越高越好。但是,就準(zhǔn)確率而言,僅使用精度值可能會(huì)產(chǎn)生誤導(dǎo)。高精度只是意味著,當(dāng)我們預(yù)測(cè)正類時(shí),我們對(duì)它的檢測(cè)是精確的。但這并不意味著我們?cè)诓粰z測(cè)這個(gè)類時(shí)它也是準(zhǔn)確的。為了了解分類器的完整行為還應(yīng)考慮的另一項(xiàng)度量指標(biāo)是召回率。召回率召回率是指正確陽(yáng)性結(jié)果的數(shù)量除以所有相關(guān)樣本(例如,所有應(yīng)該歸類為陽(yáng)性的樣本)的數(shù)量:與精度一樣,召回率的范圍是[0,1],表示正確分類的樣本占該類所有樣本的百分比。召回率是一個(gè)重要的度量指標(biāo),特別是在圖像目標(biāo)檢測(cè)等問(wèn)題上。通過(guò)度量二分類器的精度和召回率,可以調(diào)整分類器的性能,使其按需運(yùn)行。有時(shí)候,精度比召回率更重要,反之亦然。因此,有必要花一小段時(shí)間來(lái)介紹分類器機(jī)制。分類器機(jī)制有時(shí),將分類器機(jī)制置于高召回率體系中是值得的。這意味著我們希望擁有更多的假陽(yáng)性,同時(shí)也要確保檢測(cè)到真陽(yáng)性。在計(jì)算機(jī)視覺(jué)工業(yè)應(yīng)用中,當(dāng)生產(chǎn)線需要制造產(chǎn)品時(shí),通常需要高召回機(jī)制。然后,在裝配過(guò)程結(jié)束時(shí),由人工控制整個(gè)產(chǎn)品的質(zhì)量是否達(dá)到要求的標(biāo)準(zhǔn)。由于生產(chǎn)線需要具有高的吞吐量,因此控制組裝機(jī)器人的計(jì)算機(jī)視覺(jué)應(yīng)用程序通常在較高的召回率機(jī)制下工作。將計(jì)算機(jī)視覺(jué)應(yīng)用程序設(shè)置為高精度狀態(tài)會(huì)經(jīng)常中斷生產(chǎn)線,從而降低總體吞吐量并導(dǎo)致公司虧損。在現(xiàn)實(shí)場(chǎng)景中,改變分類器工作機(jī)制的能力是極其重要的,在該場(chǎng)景中,分類器被用作生產(chǎn)工具,應(yīng)使其能夠適應(yīng)業(yè)務(wù)決策。在其他情況下,則需要高精度的方案。在工業(yè)場(chǎng)景中,有一些計(jì)算機(jī)視覺(jué)應(yīng)用程序過(guò)程很關(guān)鍵,因此,這些過(guò)程需要高精度。在發(fā)動(dòng)機(jī)生產(chǎn)線中,可以使用分類器來(lái)決定攝像機(jī)看到的哪個(gè)部件要在發(fā)動(dòng)機(jī)中挑選和裝配的正確部件。這種情況下需要一個(gè)高精度的機(jī)制,而不鼓勵(lì)使用高召回機(jī)制。F1分?jǐn)?shù)是結(jié)合了精度和召回率的度量指標(biāo)。F1分?jǐn)?shù)F1分?jǐn)?shù)是精度和召回率之間的調(diào)和平均值。此值的取值范圍為[0,1],表示分類器的精度和魯棒性。F1分?jǐn)?shù)的值越大,模型的整體性能越好:ROC曲線下面積受試者工作特征(ReceivingOperatingCharacteristic,ROC)曲線下面積是衡量二分類問(wèn)題最常用的度量指標(biāo)之一。大多數(shù)分類器產(chǎn)生[0,1]范圍內(nèi)的分?jǐn)?shù),而不是直接作為分類標(biāo)簽。分?jǐn)?shù)必須用閾值來(lái)決定分類。一個(gè)自然的閾值是當(dāng)分?jǐn)?shù)高于0.5時(shí)將其歸類為陽(yáng)性,否則將其歸類為陰性,但這并不總是應(yīng)用程序希望的(考慮如何識(shí)別患有疾病的人)。改變閾值將改變分類器的性能,改變TP、FP、TN、FN的數(shù)量,從而改變總體的分類性能??梢酝ㄟ^(guò)繪制ROC曲線來(lái)考慮閾值變化的結(jié)果。ROC曲線考慮了假陽(yáng)性率(特異性)和真陽(yáng)性率(靈敏度):二分類問(wèn)題是這兩個(gè)值之間的權(quán)衡??蓪⑦@些值描述如下?!れ`敏度:真陽(yáng)性率定義為被正確視為陽(yáng)性的陽(yáng)性數(shù)據(jù)點(diǎn)相對(duì)于所有陽(yáng)性數(shù)據(jù)點(diǎn)的比例:·特異性:假陽(yáng)性率定義為被認(rèn)為是陽(yáng)性的陰性數(shù)據(jù)點(diǎn)相對(duì)于所有陰性數(shù)據(jù)點(diǎn)的比例:AUC是ROC曲線下的面積,可通過(guò)更改分類閾值獲得。見圖1-7。圖1-7通過(guò)更改分類閾值獲得的ROC曲線。虛線表示隨機(jī)猜測(cè)的期望很明顯,TPR和FPR的取值范圍均在[0,1]范圍內(nèi),通過(guò)改變分類器的分類閾值來(lái)繪制圖像,以獲得每個(gè)閾值的不同TPR和FPR對(duì)。AUC的取值也在[0,1]范圍內(nèi),值越大,說(shuō)明模型性能越好。如果我們對(duì)度量回歸模型的精度和召回率的性能感興趣,并且從混淆矩陣收集的所有數(shù)據(jù)都是無(wú)用的,那么我們必須使用其他度量指標(biāo)來(lái)度量回歸誤差。3.平均絕對(duì)誤差平均絕對(duì)誤差(MAE)是原始值和預(yù)測(cè)值之間的絕對(duì)差的平均值。由于我們現(xiàn)在對(duì)衡量回歸器的性能很感興趣,因此必須考慮yi和的值是數(shù)值:MAE值沒(méi)有上限,其下限為0。顯然,我們希望MAE的值盡可能接近于0。MAE為我們指出了預(yù)測(cè)與實(shí)際輸出之間的差距,這個(gè)指標(biāo)很容易解釋,因?yàn)樗闹狄才c原始響應(yīng)值處于相同的范圍。4.均方誤差均方誤差(MSE)是原始值與預(yù)測(cè)值之差的平方的平均值:與MAE一樣,MSE沒(méi)有上限,下限為0。相反,平方項(xiàng)的存在使度量指標(biāo)不太容易解釋。最佳實(shí)踐之一是同時(shí)考慮這兩個(gè)度量指標(biāo),以便獲得有關(guān)錯(cuò)誤分布的盡可能多的信息。MAE≤MSE關(guān)系成立,因此以下情況成立:·如果MSE接近MAE,則回歸器會(huì)產(chǎn)生較小的誤差?!と绻鸐SE接近MAE2,則回歸器會(huì)產(chǎn)生較大的誤差。度量指標(biāo)可能是ML模型選擇和性能衡量工具中最重要的組成部分:它們表示期望輸出和模型實(shí)際輸出之間的關(guān)系。這種關(guān)系非常重要,正是我們想要優(yōu)化模型的原因,我們將會(huì)在第2章中看到,屆時(shí)我們將會(huì)介紹損失函數(shù)的概念。此外,由于我們?cè)诒緯刑幚淼哪P投际菂?shù)化的模型,因此我們可以在訓(xùn)練過(guò)程中/訓(xùn)練過(guò)程結(jié)束時(shí)計(jì)算度量指標(biāo),并保存達(dá)到最佳驗(yàn)證/測(cè)試性能的模型參數(shù)(以及模型的定義)。使用參數(shù)化模型可以為我們提供這種靈活性——我們可以在模型達(dá)到所需性能時(shí)凍結(jié)其狀態(tài),然后繼續(xù)進(jìn)行訓(xùn)練,更改超參數(shù)并嘗試使用不同的配置/訓(xùn)練策略,同時(shí)還具有了已存儲(chǔ)了良好性能模型的確定性。在訓(xùn)練過(guò)程中有度量標(biāo)準(zhǔn)和度量能力,再加上可以保存的參數(shù)化模型的使用,使我們有能力評(píng)估不同的模型,只保存最符合我們需求的模型。這個(gè)過(guò)程被稱為模型選擇,是每一個(gè)設(shè)計(jì)良好的ML流水線的基礎(chǔ)。我們把重點(diǎn)放在了有監(jiān)督學(xué)習(xí)算法上,但當(dāng)然,ML遠(yuǎn)遠(yuǎn)不止于此(即使是嚴(yán)格的有監(jiān)督學(xué)習(xí)算法在解決實(shí)際問(wèn)題時(shí)也有了最好的性能)。我們將簡(jiǎn)要描述的下一類算法來(lái)自無(wú)監(jiān)督學(xué)習(xí)家族。1.3無(wú)監(jiān)督學(xué)習(xí)與有監(jiān)督學(xué)習(xí)相比,無(wú)監(jiān)督學(xué)習(xí)在訓(xùn)練階段不需要帶標(biāo)注的示例數(shù)據(jù)集,只有在測(cè)試階段,當(dāng)我們想要評(píng)估模型的性能時(shí)才需要標(biāo)注。無(wú)監(jiān)督學(xué)習(xí)的目的是發(fā)現(xiàn)訓(xùn)練集中的自然劃分。這是什么意思?想想MNIST數(shù)據(jù)集,它有10個(gè)類別,我們知道這一點(diǎn),因?yàn)槊總€(gè)示例在[1,10]范圍內(nèi)都對(duì)應(yīng)不同的標(biāo)簽。一個(gè)無(wú)監(jiān)督學(xué)習(xí)算法必須發(fā)現(xiàn)數(shù)據(jù)集中有10個(gè)不同的對(duì)象,并通過(guò)在沒(méi)有事先了解標(biāo)簽的情況下查看示例來(lái)實(shí)現(xiàn)。顯然,與有監(jiān)督學(xué)習(xí)算法相比,無(wú)監(jiān)督學(xué)習(xí)算法具有挑戰(zhàn)性,因?yàn)樗鼈儾灰蕾囉跇?biāo)簽的信息,它們必須自己發(fā)現(xiàn)標(biāo)簽的特征并學(xué)習(xí)標(biāo)簽的概念。盡管具有挑戰(zhàn)性,但它們的潛力是巨大的,因?yàn)樗鼈兡茉跀?shù)據(jù)中發(fā)現(xiàn)人類難以檢測(cè)到的模式。需要從數(shù)據(jù)中提取價(jià)值的決策者經(jīng)常使用無(wú)監(jiān)督學(xué)習(xí)算法。考慮一下欺詐檢測(cè)的問(wèn)題:有一組交易,人與人之間交換了巨額資金,并且你不知道其中是否存在欺詐交易,因?yàn)樵诂F(xiàn)實(shí)世界中沒(méi)有標(biāo)簽!在這種情況下,應(yīng)用無(wú)監(jiān)督學(xué)習(xí)算法可以幫助你找到正常交易的自然分區(qū),并幫助你發(fā)現(xiàn)異常值。離群點(diǎn)是指數(shù)據(jù)中發(fā)現(xiàn)的任何分區(qū)(也稱為類簇)之外的點(diǎn),通常是遠(yuǎn)離這些分區(qū)的點(diǎn),或者是分區(qū)本身具有某些特定特征的點(diǎn),這些特征使其不同于普通分區(qū)。因此,無(wú)監(jiān)督學(xué)習(xí)經(jīng)常用于異常檢測(cè)任務(wù)以及許多不同的領(lǐng)域:不僅用于欺詐檢測(cè),還用于圖像、視頻流、來(lái)自生產(chǎn)環(huán)境中傳感器的數(shù)據(jù)集流等的質(zhì)量控制。無(wú)監(jiān)督學(xué)習(xí)算法也是兩階段算法?!び?xùn)練和驗(yàn)證:由于訓(xùn)練集內(nèi)沒(méi)有標(biāo)簽(如果存在的話,它們應(yīng)該被丟棄),所以訓(xùn)練該算法來(lái)發(fā)現(xiàn)數(shù)據(jù)中存在的模式。如果有一個(gè)驗(yàn)證集,它應(yīng)該包含標(biāo)簽。模型的性能可以在每輪訓(xùn)練結(jié)束時(shí)進(jìn)行測(cè)試?!y(cè)試:在算法的輸入中給出標(biāo)注數(shù)據(jù)集(如果存在這樣的數(shù)據(jù)集),并將其結(jié)果與標(biāo)簽的信息進(jìn)行比較。在這一階段,我們使用標(biāo)簽的信息來(lái)度量算法的性能,以驗(yàn)證算法學(xué)會(huì)從人類也能檢測(cè)到的數(shù)據(jù)中提取模式。僅針對(duì)這些示例,無(wú)監(jiān)督學(xué)習(xí)算法不是根據(jù)標(biāo)簽類型(作為有監(jiān)督學(xué)習(xí)算法)進(jìn)行分類,而是根據(jù)它們發(fā)現(xiàn)的內(nèi)容進(jìn)行分類。無(wú)監(jiān)督學(xué)習(xí)算法可分為以下幾類。如圖1-8所示?!ぞ垲悾耗康氖前l(fā)現(xiàn)類簇,即數(shù)據(jù)的自然分區(qū)?!りP(guān)聯(lián):在這種情況下,目標(biāo)是發(fā)現(xiàn)描述數(shù)據(jù)及其之間關(guān)聯(lián)的規(guī)則。這些通常用于提供建議。圖1-8無(wú)監(jiān)督學(xué)習(xí)系統(tǒng)有兩大類算法關(guān)聯(lián)學(xué)習(xí)算法是數(shù)據(jù)挖掘領(lǐng)域的強(qiáng)大工具,它們被用來(lái)發(fā)現(xiàn)規(guī)則,例如“如果一個(gè)人正在購(gòu)買黃油和面包,他可能也會(huì)購(gòu)買牛奶”。學(xué)習(xí)這些規(guī)則在商業(yè)上是一個(gè)巨大的競(jìng)爭(zhēng)優(yōu)勢(shì)。通過(guò)回顧前面的示例,為了最大限度地提高銷售,商店可以把黃油、面包和牛奶放在同一個(gè)貨架上售賣!在聚類算法的訓(xùn)練階段,我們感興趣的是度量模型的性能,就像在有監(jiān)督學(xué)習(xí)情況下一樣。在無(wú)監(jiān)督學(xué)習(xí)算法中,度量指標(biāo)更為復(fù)雜,且依賴于要解決的任務(wù)。我們通常所做的是利用數(shù)據(jù)集中存在的、但在訓(xùn)練期間沒(méi)有使用的額外標(biāo)簽,從而將問(wèn)題重新引導(dǎo)到有監(jiān)督學(xué)習(xí)問(wèn)題上,并使用常用的度量指標(biāo)。在有監(jiān)督學(xué)習(xí)的情況下,存在參數(shù)化模型和非參數(shù)化模型。大多數(shù)非參數(shù)算法通過(guò)度量數(shù)據(jù)點(diǎn)與數(shù)據(jù)集中其他數(shù)據(jù)點(diǎn)之間的距離來(lái)實(shí)現(xiàn)的。然后,利用距離信息對(duì)不同區(qū)域的數(shù)據(jù)空間進(jìn)行聚類。像有監(jiān)督學(xué)習(xí)案例一樣,多年來(lái)已經(jīng)開發(fā)了許多算法來(lái)尋找非標(biāo)注數(shù)據(jù)集中的自然分區(qū)或規(guī)則。然而,神經(jīng)網(wǎng)絡(luò)已經(jīng)被應(yīng)用于解決無(wú)監(jiān)督學(xué)習(xí)任務(wù),并且取得了優(yōu)異的性能,顯示出了非常靈活的特性。這是本書僅關(guān)注神經(jīng)網(wǎng)絡(luò)的另一個(gè)原因。無(wú)監(jiān)督學(xué)習(xí)算法明確要求在訓(xùn)練階段不包含任何標(biāo)簽信息。然而,既然標(biāo)簽可能存在于數(shù)據(jù)集中,為什么不利用它們的存在,同時(shí)仍然使用ML算法來(lái)發(fā)現(xiàn)數(shù)據(jù)中的其他模式呢?1.4半監(jiān)督學(xué)習(xí)半監(jiān)督學(xué)習(xí)算法介于有監(jiān)督學(xué)習(xí)算法和非監(jiān)督學(xué)習(xí)算法之間。它們依賴于這樣一個(gè)假設(shè),即我們可以利用標(biāo)注數(shù)據(jù)的信息來(lái)改進(jìn)無(wú)監(jiān)督學(xué)習(xí)算法的結(jié)果,反之亦然。能否使用半監(jiān)督學(xué)習(xí)取決于可用數(shù)據(jù):如果只有標(biāo)注數(shù)據(jù),則可以使用有監(jiān)督學(xué)習(xí);如果沒(méi)有任何標(biāo)注數(shù)據(jù),則必須使用非監(jiān)督學(xué)習(xí)。但是,假設(shè)有以下情況:·帶標(biāo)簽和不帶標(biāo)簽的示例·都標(biāo)注為相同類的示例如果有這些情況,則可以使用半監(jiān)督學(xué)習(xí)方法來(lái)解決問(wèn)題。在這個(gè)場(chǎng)景中,所有的示例都標(biāo)注為同一個(gè)類別,看起來(lái)像是一個(gè)有監(jiān)督學(xué)習(xí)問(wèn)題,但事實(shí)并非如此。如果分類的目的是找到一個(gè)至少劃分兩個(gè)區(qū)域的邊界,那么如果只有一個(gè)區(qū)域,如何定義區(qū)域之間的邊界呢?我們不能!無(wú)監(jiān)督學(xué)習(xí)或半監(jiān)督學(xué)習(xí)是解決這類問(wèn)題的方法。該算法將學(xué)習(xí)如何對(duì)輸入空間進(jìn)行分區(qū)(希望在單個(gè)類簇中)、其形狀以及數(shù)據(jù)是如何在空間中分布的??梢允褂脽o(wú)監(jiān)督學(xué)習(xí)方法來(lái)了解數(shù)據(jù)中是否存在單個(gè)類簇。通過(guò)使用標(biāo)簽,從而切換到半監(jiān)督學(xué)習(xí)方法,我們可以對(duì)空間施加一些額外的約束,以便更好地表示數(shù)據(jù)。一旦無(wú)監(jiān)督學(xué)習(xí)/半監(jiān)督學(xué)習(xí)算法了解了數(shù)據(jù)的表示形式,我們就可以測(cè)試一個(gè)新的示例(我們?cè)谟?xùn)練過(guò)程中從未見過(guò)的示例)是否屬于類簇?;蛘?,我們可以計(jì)算一個(gè)數(shù)值分?jǐn)?shù),以告訴我們新示例在學(xué)習(xí)到的表示中的“適合程度”。與無(wú)監(jiān)督學(xué)習(xí)算法一樣,半監(jiān)督學(xué)習(xí)算法也分為兩個(gè)階段。1.5總結(jié)在本章中,我們從一般的、理論的角度對(duì)ML算法進(jìn)行了介紹。對(duì)于什么是機(jī)器學(xué)習(xí),如何對(duì)算法進(jìn)行分類,在特定的任務(wù)中使用哪種算法,以及如何熟悉機(jī)器學(xué)習(xí)從業(yè)者使用的所有概念和術(shù)語(yǔ),這些都是至關(guān)重要的。在第2章中,我們將重點(diǎn)討論神經(jīng)網(wǎng)絡(luò)。我們將了解機(jī)器學(xué)習(xí)模型的優(yōu)勢(shì),如何進(jìn)行網(wǎng)絡(luò)學(xué)習(xí)以及如何在實(shí)踐中執(zhí)行模型參數(shù)更新。1.6練習(xí)題回答以下問(wèn)題非常重要。你正在構(gòu)建ML基礎(chǔ),不要跳過(guò)此步驟!1.給定一個(gè)包含1000個(gè)帶有標(biāo)簽的示例的數(shù)據(jù)集,如果想在訓(xùn)練、驗(yàn)證和測(cè)試階段測(cè)試有監(jiān)督學(xué)習(xí)算法的性能,同時(shí)又要使用準(zhǔn)確率作為唯一度量指標(biāo),該怎么辦?2.有監(jiān)督學(xué)習(xí)和無(wú)監(jiān)督學(xué)習(xí)有什么區(qū)別?3.精度和召回率有什么區(qū)別?4.高召回機(jī)制中的模型比低召回機(jī)制中的模型產(chǎn)生更多或是更少的假陽(yáng)性?5.混淆矩陣只能用于二分類問(wèn)題嗎?如果不是,我們?nèi)绾卧谝粋€(gè)多分類問(wèn)題中使用它?6.一分類問(wèn)題是有監(jiān)督學(xué)習(xí)問(wèn)題嗎?如果是,為什么?如果不是,為什么?7.如果二元分類器的AUC為0.5,可以從中得出什么結(jié)論?8.寫出精度、召回率、F1分?jǐn)?shù)和準(zhǔn)確率的公式。為什么F1很重要?精度、準(zhǔn)確率和召回率之間有關(guān)系嗎?9.用真陽(yáng)性率和假陽(yáng)性率繪制ROC曲線。ROC曲線的目的是什么,真陽(yáng)性率/假陽(yáng)性率與精度/召回率之間有沒(méi)有關(guān)系?提示:用數(shù)學(xué)來(lái)描述。10.什么是維度詛咒?11.什么是過(guò)擬合和欠擬合?12.模型的學(xué)習(xí)能力是什么?是否與過(guò)擬合/欠擬合有關(guān)?13.寫出Lp范數(shù)公式——這是測(cè)量點(diǎn)間距離的唯一方法嗎?14.我們?cè)趺茨苷f(shuō)一個(gè)數(shù)據(jù)點(diǎn)與另一個(gè)數(shù)據(jù)點(diǎn)相似呢?15.什么是模型選擇?為什么它很重要?第2章神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)是本書將要探討的主要機(jī)器學(xué)習(xí)模型。神經(jīng)網(wǎng)絡(luò)在很多領(lǐng)域都有廣泛應(yīng)用,從計(jì)算機(jī)視覺(jué)(圖像目標(biāo)定位)到金融領(lǐng)域(金融詐騙檢測(cè)),從貿(mào)易甚至到藝術(shù)領(lǐng)域。在這些應(yīng)用中,神經(jīng)網(wǎng)絡(luò)與對(duì)抗訓(xùn)練過(guò)程共同用于建立模型,這些模型能夠生成多種令人驚嘆的、新的、前所未有的藝術(shù)。本章可能是整本書中理論知識(shí)最豐富的一章,將展示如何定義神經(jīng)網(wǎng)絡(luò)以及如何訓(xùn)練它們學(xué)習(xí)。首先介紹用于人工神經(jīng)元的數(shù)學(xué)公式,我們將重點(diǎn)介紹為什么神經(jīng)元必須具有某些特征才能學(xué)習(xí)。之后詳細(xì)解釋全連接和卷積神經(jīng)拓?fù)?,因?yàn)檫@些幾乎是所有神經(jīng)網(wǎng)絡(luò)架構(gòu)的基礎(chǔ)組成部分。同時(shí),將介紹兩個(gè)非常必要的概念——深度學(xué)習(xí)和深度架構(gòu),因?yàn)檎巧疃燃軜?gòu)使得現(xiàn)在的神經(jīng)網(wǎng)絡(luò)能夠以超人的表現(xiàn)解決一些挑戰(zhàn)性問(wèn)題。最后,本章將介紹用于訓(xùn)練參數(shù)模型的優(yōu)化過(guò)程與用于改善模型性能的正則化技術(shù)。梯度下降、鏈?zhǔn)揭?guī)則和圖表示計(jì)算都有專門章節(jié)進(jìn)行介紹,因?yàn)閷?duì)于任何機(jī)器學(xué)習(xí)從業(yè)者來(lái)說(shuō),當(dāng)一個(gè)框架用于訓(xùn)練模型時(shí),能夠知道會(huì)發(fā)生什么是極為重要的。如果你已經(jīng)熟悉本章將要介紹的概念,則可以直接跳轉(zhuǎn)進(jìn)入第3章,該章專門用于介紹TensorFlow圖架構(gòu)。本章將介紹以下主題:·神經(jīng)網(wǎng)絡(luò)·優(yōu)化·卷積神經(jīng)網(wǎng)絡(luò)·正則化2.1神經(jīng)網(wǎng)絡(luò)最早的神經(jīng)計(jì)算機(jī)發(fā)明者之一的RobertHecht-Nielson博士在NeuralNetworkPrimer——PartI中,對(duì)“神經(jīng)網(wǎng)絡(luò)”定義如下:“一個(gè)由許多簡(jiǎn)單的、高度互連的處理元件組成的計(jì)算系統(tǒng),通過(guò)對(duì)外部輸入進(jìn)行動(dòng)態(tài)狀態(tài)響應(yīng)來(lái)處理信息。”實(shí)踐中,我們可以把人工神經(jīng)網(wǎng)絡(luò)看作一個(gè)計(jì)算模型,它基于人類大腦被人們認(rèn)為的工作機(jī)制。也就是說(shuō),人工神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)模型受到了生物神經(jīng)元的啟發(fā)。2.1.1生物神經(jīng)元我們都知道,大腦的主要計(jì)算單元稱為神經(jīng)元。在人類的神經(jīng)系統(tǒng)中,已發(fā)現(xiàn)大約有860億個(gè)神經(jīng)元,所有這些神經(jīng)元通過(guò)突觸連接。圖2-1展示了生物神經(jīng)元和模仿生物神經(jīng)元工作機(jī)制的數(shù)學(xué)模型。圖2-1左側(cè)a為生物神經(jīng)元圖示,右側(cè)b為其數(shù)學(xué)模型。資料來(lái)源:斯坦福大學(xué)CS231n生物神經(jīng)元由以下部分組成:·樹突:細(xì)小的纖維,以電信號(hào)的形式將信息從外部傳遞到細(xì)胞核?!ね挥|:神經(jīng)元之間的連接點(diǎn)。神經(jīng)元在與樹突相連的突觸上接收輸入信號(hào)。·細(xì)胞核:接收并處理來(lái)自樹突的信號(hào),產(chǎn)生響應(yīng)(輸出信號(hào))并將其發(fā)送至軸突。·軸突:神經(jīng)元的輸出通道。它可以連接到其他神經(jīng)元突觸。每個(gè)神經(jīng)元接受來(lái)自其樹突的輸入信號(hào),并將其傳輸?shù)郊?xì)胞核中進(jìn)行處理。樹突對(duì)信號(hào)進(jìn)行處理,由此對(duì)來(lái)自每個(gè)輸入突觸的興奮和抑制信號(hào)進(jìn)行整合。細(xì)胞核接收整合后的信號(hào)并將其相加。如果最終的總和超過(guò)了某個(gè)閾值,神經(jīng)元就會(huì)被觸發(fā),產(chǎn)生的信息就會(huì)通過(guò)軸突向下傳遞,進(jìn)而傳遞到任何其他相連的神經(jīng)元。神經(jīng)元之間傳輸?shù)男盘?hào)量取決于連接的強(qiáng)度。神經(jīng)元的排列和這些突觸的強(qiáng)度確定了神經(jīng)網(wǎng)絡(luò)的功能。如同某些類型輸入信號(hào)的函數(shù),生物神經(jīng)元的學(xué)習(xí)階段是對(duì)細(xì)胞核所產(chǎn)生的輸出信號(hào)隨時(shí)間變化進(jìn)行的調(diào)整。神經(jīng)元就會(huì)一直專門識(shí)別特定的激勵(lì)信號(hào)。2.1.2人工神經(jīng)元人工神經(jīng)元以生物神經(jīng)元的結(jié)構(gòu)為基礎(chǔ),利用具有實(shí)值的數(shù)學(xué)函數(shù)來(lái)模擬其行為。這種人工神經(jīng)元稱為感知機(jī),這是科學(xué)家弗蘭克·羅森布拉特(FrankRosenblatt)在20世紀(jì)五六十年代提出的一個(gè)概念。將這個(gè)數(shù)學(xué)類比考慮進(jìn)來(lái),我們可以按如下方式討論生物神經(jīng)元:·樹突:神經(jīng)元接受的輸入的數(shù)量,也可以將它看作是輸入數(shù)據(jù)的維數(shù)D。·突觸:與樹突相關(guān)的權(quán)重,記為wi,i=0,1,…,D–1。這些值在訓(xùn)練階段會(huì)發(fā)生變化,訓(xùn)練結(jié)束后神經(jīng)元就被特化(它學(xué)會(huì)了從輸入中提取特定特征)。如果x是一個(gè)D維輸入向量,則由突觸執(zhí)行的操作為xiwii∈[0,D–1]?!ぜ?xì)胞核(體細(xì)胞):將來(lái)自突觸的值連接起來(lái),從而定義神經(jīng)元的行為。為了模擬生物神經(jīng)元的活動(dòng),即僅在輸入中存在特定激勵(lì)時(shí)才放電(激活),可以用非線性函數(shù)對(duì)細(xì)胞核進(jìn)行建模。如果f:R→R是一個(gè)非線性函數(shù),則將所有輸入激勵(lì)考慮在內(nèi)時(shí),神經(jīng)元的輸出可表示為如下公式:這里,b是具有重要意義的偏置項(xiàng)。它允許不以D維空間的原點(diǎn)為中心來(lái)學(xué)習(xí)決策邊界。如果暫時(shí)去掉非線性(也稱為激活)函數(shù),我們可以很容易地看到,突觸定義了一個(gè)超平面,其方程如下:?jiǎn)蝹€(gè)神經(jīng)元只能進(jìn)行二元分類,因?yàn)镈維向量x只能在它定義的超平面之上或之下。一個(gè)感知機(jī)可以在D維空間正確地分類樣本,當(dāng)且僅當(dāng)這些樣本是線性可區(qū)分的。細(xì)胞核以其非線性特性,將樹突所定義的超平面映射到更通用的超曲面上,這就是學(xué)習(xí)到的決策邊界。最佳情況下,非線性將超平面轉(zhuǎn)換成能夠正確分類D維空間中的點(diǎn)的超曲面。但是,僅當(dāng)這些點(diǎn)可被單個(gè)超曲面分離到兩個(gè)區(qū)域中時(shí),才執(zhí)行此操作。我們需要多層神經(jīng)網(wǎng)絡(luò)的主要原因如下:如果輸入的數(shù)據(jù)無(wú)法由單個(gè)超曲面分離,則在頂部增加另一層,該層通過(guò)將學(xué)習(xí)到的超曲面轉(zhuǎn)換為具有新增分類區(qū)域的新的超曲面,使其能夠?qū)W習(xí)復(fù)雜的分類邊界,從而能夠正確地分割區(qū)域。此外,值得注意的是,前饋神經(jīng)網(wǎng)絡(luò)(如具備神經(jīng)元之間不形成循環(huán)連接的神經(jīng)網(wǎng)絡(luò))是通用的函數(shù)逼近器。這意味著,如果存在一種分割區(qū)域的方法,那么具有足夠能力的訓(xùn)練有素的神經(jīng)網(wǎng)絡(luò)就可以學(xué)習(xí)如何逼近該函數(shù)。·軸突:這是神經(jīng)元的輸出值。它可以作為其他神經(jīng)元的輸入。需要強(qiáng)調(diào)的是,這個(gè)生物神經(jīng)元的模型非常粗糙。例如,實(shí)際上有許多不同類型的神經(jīng)元,每一種都有不同的特性。生物神經(jīng)元中的樹突執(zhí)行復(fù)雜的非線性計(jì)算。突觸不僅僅是單一的權(quán)重,它們是一個(gè)復(fù)雜的非線性動(dòng)力系統(tǒng)。模型中還有許多其他的簡(jiǎn)化,因?yàn)楝F(xiàn)實(shí)要比建模復(fù)雜和困難得多。因此,這種來(lái)自生物學(xué)的靈感只是提供了一種思考神經(jīng)網(wǎng)絡(luò)的好方法,但不要被所有這些相似性所迷惑,人工神經(jīng)網(wǎng)絡(luò)只是寬泛地受到了生物神經(jīng)元的啟發(fā)?!盀槭裁次覀儜?yīng)該使用神經(jīng)網(wǎng)絡(luò)而不是其他機(jī)器學(xué)習(xí)模型?”傳統(tǒng)的機(jī)器學(xué)習(xí)模型功能強(qiáng)大,但通常不如神經(jīng)網(wǎng)絡(luò)靈活。神經(jīng)網(wǎng)絡(luò)可以使用不同的拓?fù)浣Y(jié)構(gòu),并且?guī)缀谓Y(jié)構(gòu)會(huì)改變神經(jīng)網(wǎng)絡(luò)能看到的內(nèi)容(輸入激勵(lì))。此外,創(chuàng)建具有不同拓?fù)浣Y(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)的層次結(jié)構(gòu)很簡(jiǎn)單,可以創(chuàng)建深度模型。神經(jīng)網(wǎng)絡(luò)最大的優(yōu)勢(shì)之一是其特征提取器的能力。其他機(jī)器學(xué)習(xí)模型需要處理輸入數(shù)據(jù),提取有意義的特征,并且只有在這些手動(dòng)定義的特征上才能應(yīng)用該模型。另外,神經(jīng)網(wǎng)絡(luò)可以從任何輸入數(shù)據(jù)中自己提取有意義的特征(取決于所使用的層的拓?fù)浣Y(jié)構(gòu))。單個(gè)感知機(jī)說(shuō)明了如何對(duì)不同類型的輸入進(jìn)行加權(quán)和求和,以做出簡(jiǎn)單的決定。一個(gè)由感知機(jī)組成的復(fù)雜網(wǎng)絡(luò)則可以做出非常微妙的決定。因此,神經(jīng)網(wǎng)絡(luò)架構(gòu)是由神經(jīng)元組成的,所有神經(jīng)元都通過(guò)突觸(生物學(xué)上的)連接,信息通過(guò)突觸傳遞。在訓(xùn)練過(guò)程中,當(dāng)神經(jīng)元從數(shù)據(jù)中學(xué)習(xí)特定模式時(shí)就會(huì)被激活。使用激活函數(shù)對(duì)這個(gè)激活率進(jìn)行建模。更準(zhǔn)確地說(shuō),神經(jīng)元是以無(wú)環(huán)圖連接的;循環(huán)是不允許的,因?yàn)檫@將意味著在網(wǎng)絡(luò)的正向傳遞中應(yīng)用無(wú)限循環(huán)(這種類型的網(wǎng)絡(luò)稱為前饋神經(jīng)網(wǎng)絡(luò))。神經(jīng)網(wǎng)絡(luò)模型通常被組織成不同的神經(jīng)元層,而不是無(wú)定形的相互連接的神經(jīng)元團(tuán)。最常見的層類型是全連接層。2.1.3全連接層全連接的結(jié)構(gòu)是一種特殊的網(wǎng)絡(luò)拓?fù)?,其中相鄰兩層之間的神經(jīng)元是完全成對(duì)連接的,而單層內(nèi)的神經(jīng)元沒(méi)有任何連接。將網(wǎng)絡(luò)組織成層可以讓我們創(chuàng)建全連接層的堆疊,其中每層的神經(jīng)元數(shù)量不同。我們可以把多層神經(jīng)網(wǎng)絡(luò)看作具有可見層和隱藏層的模型??梢妼觾H是輸入層和輸出層,隱藏層是未連接到外部的層。如圖2-2所示。圖2-2具有兩個(gè)隱藏層的完全連接神經(jīng)網(wǎng)絡(luò)的典型示意圖。每個(gè)層都會(huì)降低其輸入的維數(shù),目的是在給定10個(gè)輸入特征的情況下產(chǎn)生兩個(gè)不同的輸出隱藏層中的神經(jīng)元數(shù)量是完全任意的,它改變了神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力。相反,由于我們要解決的任務(wù),輸入層和輸出層具有固定的維度(例如,如果想要解決D維輸入的n分類問(wèn)題,那么我們需要一個(gè)具有D個(gè)輸入的輸入層和一個(gè)具有n個(gè)輸出的輸出層)。從數(shù)學(xué)上講,全連接層的輸出可以定義為矩陣乘積的結(jié)果。假設(shè)有如下的方程:輸出O由下式給出:這里,M是層中神經(jīng)元的數(shù)量。神經(jīng)網(wǎng)絡(luò)的輸入層和輸出層的設(shè)計(jì)比較簡(jiǎn)單,而隱藏層的設(shè)計(jì)就沒(méi)那么簡(jiǎn)單了。因?yàn)闆](méi)有規(guī)則,神經(jīng)網(wǎng)絡(luò)研究人員已經(jīng)針對(duì)隱藏層開發(fā)了許多設(shè)計(jì)啟發(fā)式方法,這些方法有助于獲得正確的行為(例如,當(dāng)權(quán)衡隱藏層的數(shù)量和訓(xùn)練網(wǎng)絡(luò)的時(shí)間時(shí))。一般來(lái)說(shuō),增加每層神經(jīng)元的數(shù)量或神經(jīng)網(wǎng)絡(luò)的層數(shù)意味著必須增加網(wǎng)絡(luò)容量。這意味著神經(jīng)網(wǎng)絡(luò)可以表達(dá)更復(fù)雜的函數(shù),以及可表示函數(shù)的空間不斷擴(kuò)大。然而,這是好事也是壞事:好事是因?yàn)槲覀兛梢詫W(xué)習(xí)更復(fù)雜的函數(shù);壞事是因?yàn)殡m然有了更多的可訓(xùn)練參數(shù),但卻增加了訓(xùn)練數(shù)據(jù)被過(guò)擬合的風(fēng)險(xiǎn)。通常,如果數(shù)據(jù)不復(fù)雜或者我們使用的是小數(shù)據(jù)集,那么應(yīng)該首選更小的神經(jīng)網(wǎng)絡(luò)。幸運(yùn)的是,在使用大容量模型時(shí),有不同的技術(shù)可以防止過(guò)擬合數(shù)據(jù)。這些技術(shù)稱為正則化技術(shù)(對(duì)參數(shù)的L2懲罰、dropout、批量歸一化、數(shù)據(jù)擴(kuò)充等)。我們將在后文接下來(lái)的章節(jié)中深入探討這些技術(shù)。激活函數(shù)是每個(gè)神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)的另一個(gè)重要部分。它適用于每個(gè)神經(jīng)元:沒(méi)有人強(qiáng)迫我們?cè)诿總€(gè)神經(jīng)元上使用相同的非線性函數(shù),但選擇一種非線性形式并將其用于同一層中的每個(gè)神經(jīng)元是一種慣例。如果正在構(gòu)建一個(gè)分類器,我們感興趣的是評(píng)估網(wǎng)絡(luò)的輸出層,并能夠解釋輸出值以理解網(wǎng)絡(luò)預(yù)測(cè)的內(nèi)容。假設(shè)有一個(gè)線性激活函數(shù),該函數(shù)已經(jīng)被應(yīng)用到輸出層的每個(gè)單個(gè)神經(jīng)元,其中每個(gè)神經(jīng)元都與一個(gè)特定的類相關(guān)聯(lián)(對(duì)照?qǐng)D2-2,對(duì)每個(gè)類,我們有一個(gè)三維輸入和兩個(gè)輸出神經(jīng)元)——考慮到它們的值域是整個(gè)實(shí)數(shù)集,我們?nèi)绾谓忉屵@些數(shù)值?很難解釋以這種方式表示的數(shù)值。最自然的方法是將輸出值的和限制在[0,1]范圍內(nèi),這樣我們就可以將輸出值看作是從預(yù)測(cè)類的概率分布中采樣的結(jié)果,并且可以將值最高的神經(jīng)元看作預(yù)測(cè)類?;蛘?,我們可以選擇對(duì)這些值應(yīng)用閾值運(yùn)算,以模擬生物神經(jīng)元的激活:如果神經(jīng)元的輸出大于某個(gè)閾值,可以輸出1,否則輸出0。我們可以做的另一件事是壓縮每個(gè)神經(jīng)元的輸出值至[0,1]范圍內(nèi),例如,如果我們正在解決一個(gè)類別不互斥的多類分類任務(wù)。很容易理解為什么輸出層中的某種非線性很重要——它可以改變網(wǎng)絡(luò)的行為,因?yàn)槲覀兘忉尵W(wǎng)絡(luò)輸出的方式取決于它。然而,要完全理解神經(jīng)網(wǎng)絡(luò),必須理解為什么非線性在每一個(gè)單獨(dú)的層都很重要。2.1.4激活函數(shù)我們已經(jīng)知道,層中第i個(gè)神經(jīng)元的輸出值計(jì)算如下。激活函數(shù)f的重要性體現(xiàn)在以下幾個(gè)方面:·如前所述,根據(jù)使用非線性的層,我們可以解釋神經(jīng)網(wǎng)絡(luò)的結(jié)果?!と绻斎霐?shù)據(jù)不是線性可分的,則它的非線性特性允許你近似一個(gè)非線性函數(shù),該函數(shù)能夠以非線性的方式區(qū)分?jǐn)?shù)據(jù)(只需考慮超平面到通用超曲面的轉(zhuǎn)換)。·相鄰層之間沒(méi)有非線性關(guān)系的情況下,多層神經(jīng)網(wǎng)絡(luò)等價(jià)于具有單個(gè)隱藏層的單個(gè)神經(jīng)網(wǎng)絡(luò),因此它們只能將輸入數(shù)據(jù)分為兩個(gè)區(qū)域。事實(shí)上,考慮到:兩個(gè)感知機(jī)堆疊在一起:我們知道第二個(gè)感知機(jī)的輸出等于單個(gè)感知機(jī)的輸出:其中,Weq和beq是權(quán)重的矩陣,偏置向量等于單個(gè)權(quán)重矩陣和偏置向量的乘積。這意味著,當(dāng)f為線性時(shí),一個(gè)多層神經(jīng)網(wǎng)絡(luò)始終等于單層神經(jīng)網(wǎng)絡(luò)(因此具有相同的學(xué)習(xí)能力)。如果f不是線性的,則最后一個(gè)等式不成立。·非線性使網(wǎng)絡(luò)對(duì)噪聲輸入具有魯棒性。如果輸入數(shù)據(jù)包含噪聲(訓(xùn)練集包含不完美的值——這會(huì)經(jīng)常發(fā)生),那么非線性會(huì)避免其傳播到輸出。證明如下:最常用的兩個(gè)激活函數(shù)是sigmoid(σ)和雙曲正切(tanh)。在幾乎所有的分類問(wèn)題中,第一個(gè)函數(shù)被用作輸出層的激活函數(shù),因?yàn)樗鼘⑤敵鰤嚎s到[0,1]范圍內(nèi),并可以將預(yù)測(cè)解釋為概率:相反,雙曲正切被用作幾乎所有經(jīng)過(guò)訓(xùn)練生成圖像的生成模型的輸出層的激活函數(shù)。即使在這種情況下,我們使用它的原因也是為了正確地解釋輸出,并在輸入圖像和生成圖像之間創(chuàng)建有意義的聯(lián)系。我們習(xí)慣于將輸入值從[0,255]縮放到[–1,1],這是tanh函數(shù)值的范圍。但是,由于通過(guò)反向傳播進(jìn)行訓(xùn)練的原因,在隱藏層中使用諸如tanh和σ之類的函數(shù)作為激活函數(shù)并不是最佳選擇(正如我們將在以下幾節(jié)中看到的,飽和非線性可能是一個(gè)問(wèn)題)。為了克服飽和非線性所帶來(lái)的問(wèn)題,人們開發(fā)了許多其他激活函數(shù)。圖2-3對(duì)已有的最常見的非線性激活函數(shù)進(jìn)行了一個(gè)簡(jiǎn)短的可視化概述。一旦定義了網(wǎng)絡(luò)結(jié)構(gòu)以及用于隱藏層和輸出層的激活函數(shù),就該定義訓(xùn)練數(shù)據(jù)和網(wǎng)絡(luò)輸出之間的關(guān)系,以便能夠訓(xùn)練網(wǎng)絡(luò)并使其解決手頭的任務(wù)。在接下來(lái)的幾節(jié)中,我們將接著第1章繼續(xù)討論離散分類問(wèn)題。我們將討論這樣一個(gè)事實(shí),由于使用神經(jīng)網(wǎng)絡(luò)作為工具來(lái)解決有監(jiān)督學(xué)習(xí)問(wèn)題,因此所有適用于分類問(wèn)題的內(nèi)容也適用于連續(xù)變量。由于神經(jīng)網(wǎng)絡(luò)是一個(gè)參數(shù)化的模型,對(duì)其訓(xùn)練意味著需要更新參數(shù)W,以找到能夠以最佳方式解決問(wèn)題的配置。圖2-3最常見的激活函數(shù)列表。來(lái)源:斯坦福cs231n如果我們希望定義輸入數(shù)據(jù)和期望輸出之間的關(guān)系(一個(gè)目標(biāo)函數(shù)或損失函數(shù)),則必須訓(xùn)練神經(jīng)網(wǎng)絡(luò),因?yàn)槲覀兿M麑p失最小化。2.1.5損失函數(shù)定義了網(wǎng)絡(luò)結(jié)構(gòu)之后,必須對(duì)模型進(jìn)行訓(xùn)練?,F(xiàn)在是時(shí)候定義模型輸出和實(shí)際數(shù)據(jù)之間的關(guān)系了。為此,必須定義一個(gè)損失函數(shù)。損失函數(shù)用于評(píng)估模型的擬合優(yōu)度。損失函數(shù)有多種,每一種都表示網(wǎng)絡(luò)輸出與實(shí)際數(shù)據(jù)之間的關(guān)系,其形式完全影響模型預(yù)測(cè)的質(zhì)量。對(duì)于M類上的離散分類問(wèn)題,我們可以把定義好的神經(jīng)網(wǎng)絡(luò)建模為參數(shù)為W的函數(shù),該函數(shù)接受D維輸入向量x,輸出一個(gè)M維的預(yù)測(cè)向量,如下所示:該模型生成一個(gè)M維輸出向量,其中包含模型為每個(gè)可能的類分配給輸入x的概率(如果將sigmoid激活應(yīng)用到輸出層,則可以這種方式解釋輸出)。提取輸出層中產(chǎn)生最高值的神經(jīng)元的位置是容易的。預(yù)測(cè)類別的方程如下:通過(guò)使用這種方法,我們可以找到產(chǎn)生最高分類得分的神經(jīng)元的索引。由于我們知道與輸入x關(guān)聯(lián)的標(biāo)簽,因此幾乎可以定義預(yù)測(cè)和標(biāo)簽之間的關(guān)系了。我們將面臨的最后一個(gè)問(wèn)題是標(biāo)簽的格式。標(biāo)簽是一個(gè)標(biāo)量值,而網(wǎng)絡(luò)輸出是一個(gè)M維向量。盡管可以找到具有最高概率值的神經(jīng)元的位置,但我們感興趣的是整個(gè)輸出層,因?yàn)槲覀兿胍黾诱_類別的概率,并懲罰錯(cuò)誤類別。因此,必須將標(biāo)簽轉(zhuǎn)換成M維表示,這樣我們才能在每個(gè)輸出神經(jīng)元和標(biāo)簽之間建立聯(lián)系。從標(biāo)量值到M維表示的最自然的轉(zhuǎn)換稱為獨(dú)熱編碼。這種編碼包括創(chuàng)建一個(gè)M維向量,該向量在標(biāo)簽位置的值為1,在其他位置的值為0。因此,我們可以將獨(dú)熱編碼標(biāo)簽考慮如下:現(xiàn)在可以將第i個(gè)訓(xùn)練集實(shí)例的損失函數(shù)的一般公式定義為一個(gè)實(shí)值函數(shù),該函數(shù)在真實(shí)情況(已正確編碼的標(biāo)簽)和預(yù)測(cè)值之間創(chuàng)建一個(gè)關(guān)系:損失函數(shù)的一般表達(dá)式應(yīng)用于完整的基數(shù)訓(xùn)練集k,可以表示為在單個(gè)實(shí)例上計(jì)算的損失的平均值:損失必須根據(jù)當(dāng)前的問(wèn)題來(lái)選擇(或定義)。對(duì)于分類問(wèn)題(互斥類),最簡(jiǎn)單和最直觀的損失函數(shù)是標(biāo)簽和網(wǎng)絡(luò)輸出的獨(dú)熱編碼表示之間的L2距離。其目的是最小化網(wǎng)絡(luò)輸出與獨(dú)熱編碼標(biāo)簽之間的距離,從而使網(wǎng)絡(luò)預(yù)測(cè)一個(gè)看起來(lái)像正確標(biāo)簽的M維向量:損失函數(shù)的最小化是通過(guò)對(duì)模型的參數(shù)值進(jìn)行小的迭代調(diào)整來(lái)實(shí)現(xiàn)的。2.1.6參數(shù)初始化初始化模型參數(shù)值是訓(xùn)練階段重復(fù)迭代地完善問(wèn)題的解決方案:初始化網(wǎng)絡(luò)參數(shù)的方法并不是唯一的,關(guān)于參數(shù)初始化的工作建議有以下兩點(diǎn)?!げ灰獙⒕W(wǎng)絡(luò)參數(shù)初始化為0:使用梯度下降法(將在2.2.1節(jié)介紹)不可能找到新的解決方案,因?yàn)檎麄€(gè)梯度為0,所以沒(méi)有對(duì)更新方向的指示。·打破不同單元之間的對(duì)稱性:如果兩個(gè)具有相同激活函數(shù)的隱藏單元連接到相同輸入,那么這兩個(gè)輸入必須具有不同的初始參數(shù)值。這是必需的,因?yàn)閹缀趺總€(gè)解決方案都需要將一組不同的參數(shù)分配給每個(gè)神經(jīng)元,才能找到一個(gè)有意義的解決方案。相反,如果從所有具有相同值的參數(shù)開始,由于更新的值取決于誤差,該誤差對(duì)于網(wǎng)絡(luò)中的每個(gè)神經(jīng)元均相等,那么每個(gè)更新步驟都將以相同數(shù)量更新所有網(wǎng)絡(luò)參數(shù)。因此,我們將無(wú)法找到一個(gè)有意義的解決方案。通常情況下,問(wèn)題的初始解是由具有零均值和一元方差的隨機(jī)正態(tài)分布來(lái)采樣的。這種分布方式保證了網(wǎng)絡(luò)參數(shù)較小,且在零值附近均勻分布,但各參數(shù)之間又存在差異,從而打破了對(duì)稱性。既然我們已經(jīng)定義了網(wǎng)絡(luò)架構(gòu),正確設(shè)置了輸入標(biāo)簽的格式,并利用損失函數(shù)定義了輸入輸出關(guān)系,那么如何才能使損失最小化?如何迭代調(diào)整模型參數(shù)使損失最小化,從而解決問(wèn)題?這些都是優(yōu)化和優(yōu)化算法要解決的問(wèn)題。2.2優(yōu)化運(yùn)籌學(xué)為我們提供了有效的算法,即如果問(wèn)題被表示為具有明確特征的函數(shù)(例如,凸優(yōu)化要求函數(shù)為凸),則可通過(guò)查找全局最優(yōu)(全局最小點(diǎn))來(lái)解決問(wèn)題。人工神經(jīng)網(wǎng)絡(luò)是通用的函數(shù)逼近器。因此,不可能對(duì)神經(jīng)網(wǎng)絡(luò)擬合的函數(shù)的形狀做出假設(shè)。此外,最常見的優(yōu)化方法利用了幾何方面的考慮,但我們從第1章中了解到,由于維度詛咒問(wèn)題,當(dāng)維數(shù)很高時(shí),幾何會(huì)以一種不同尋常的方式工作。為此,不可能使用能夠發(fā)現(xiàn)優(yōu)化(最小化)問(wèn)題的全局最優(yōu)解的運(yùn)籌學(xué)方法。相反,我們必須使用迭代改進(jìn)方法,從初始解決方案開始嘗試改善(通過(guò)更新代表該解決方案的模型參數(shù)),以期找到一個(gè)良好的局部最優(yōu)解。我們可以把模型參數(shù)W看作最小化問(wèn)題的初始解。由此,我們可以在第0個(gè)訓(xùn)練步中(Ls=0)開始評(píng)估損失函數(shù),這樣,我們知道了在初始參數(shù)配置Ws=0下?lián)p失函數(shù)的假定值?,F(xiàn)在,我們必須決定如何更新模型參數(shù)。要做到這一點(diǎn),我們需要按照損失提供的信息執(zhí)行第一個(gè)更新步驟。我們可以采取兩種方式?!るS機(jī)擾動(dòng):我們可以對(duì)當(dāng)前的參數(shù)集應(yīng)用一個(gè)隨機(jī)擾動(dòng)ΔW,并計(jì)算獲得的新參數(shù)集的損失值Ws=Ws–1+ΔWs–1。如果訓(xùn)練步驟s的損失值小于前一個(gè)步驟的損失值,我們就可以接受找到的解,并繼續(xù)對(duì)新參數(shù)集應(yīng)用新的隨機(jī)擾動(dòng)。否則,我們必須重復(fù)隨機(jī)擾動(dòng),直到找到更好的解。·更新方向估計(jì):這種方法不是隨機(jī)生成一組新的參數(shù),而是將局部最優(yōu)研究過(guò)程引導(dǎo)到函數(shù)的最大下降方向上。第二種方法是參數(shù)訓(xùn)練型機(jī)器學(xué)習(xí)模型的實(shí)際標(biāo)準(zhǔn),這些模型表示為可微函數(shù)。為了更好地理解這種梯度下降法,我們必須將損失函數(shù)看作在參數(shù)空間中定義一個(gè)曲面的一種方法——我們的目標(biāo),即最小化損失,意味著我們需要找到這個(gè)曲面上的最低點(diǎn)。2.2.1梯度下降法當(dāng)尋找最小化/最大化問(wèn)題的解決方案時(shí),梯度下降法是一種計(jì)算最佳移動(dòng)方向的方法。此方法建議我們更新模型參數(shù)時(shí)遵循以下方向:根據(jù)所使用的輸入數(shù)據(jù),找到的方向是損失面下降最陡的方向。所使用的數(shù)據(jù)非常重要,因?yàn)樗裱瓝p失函數(shù)的評(píng)估,并且用于評(píng)估更新方向的曲面。更新方向由損失函數(shù)的梯度給出。由微積分可知,對(duì)于單變量可微函數(shù)f(x),在點(diǎn)x上的導(dǎo)數(shù)運(yùn)算可由下式給出:此操作描述了函數(shù)在點(diǎn)x上的行為:在以x為中心的無(wú)限小區(qū)域中,函數(shù)相對(duì)于變量x的變化量。n變量函數(shù)的導(dǎo)數(shù)運(yùn)算的泛化由梯度給出,即偏導(dǎo)數(shù)向量(將其他任何變量均看作常數(shù)時(shí),函數(shù)對(duì)一個(gè)單個(gè)變量的導(dǎo)數(shù)向量)。就損失函數(shù)而言,如下所示:表示函數(shù)增長(zhǎng)的方向。因此,由于我們的目標(biāo)是找到最小值,我們要沿著反梯度的方向移動(dòng),如下所示:這里,反梯度表示執(zhí)行參數(shù)更新時(shí)要遵循的方向。參數(shù)更新步驟如下:該參數(shù)η為學(xué)習(xí)率,是梯度下降訓(xùn)練階段的超參數(shù)。為學(xué)習(xí)率選擇正確的值與其說(shuō)是一門科學(xué),不如說(shuō)是一門藝術(shù),我們唯一能做的就是通過(guò)直覺(jué)來(lái)選擇一個(gè)適合模型和數(shù)據(jù)集的值。必須記住,反梯度只告訴我們要遵循的方向,它沒(méi)有給出任何關(guān)于從當(dāng)前解到最小值點(diǎn)的距離的信息。距離或更新的強(qiáng)度取決于學(xué)習(xí)率:·過(guò)高的學(xué)習(xí)率會(huì)使訓(xùn)練階段不穩(wěn)定,這是由局部極小值附近的跳躍所致。這會(huì)引起損失函數(shù)值的振蕩。為了記住這一點(diǎn),我們可以考慮一個(gè)U形曲面。如果學(xué)習(xí)率太高,在接下來(lái)的更新步驟中,則從U的左邊跳到右邊,反之亦然,不會(huì)下降谷值(因?yàn)閁的兩個(gè)峰值的距離大于η)?!み^(guò)低的學(xué)習(xí)率會(huì)使訓(xùn)練階段不理想,處于次優(yōu)狀態(tài),因?yàn)槲覀冇肋h(yuǎn)不會(huì)跳出一個(gè)并非全局最小值的谷值。因此,存在陷入局部最小值的風(fēng)險(xiǎn)。此外,學(xué)習(xí)率太低的另一個(gè)風(fēng)險(xiǎn)是永遠(yuǎn)找不到一個(gè)好的解決方案——不是因?yàn)槲覀儽焕г谝粋€(gè)局部的最小值中,而是因?yàn)槲覀兂?dāng)前方向前進(jìn)得太慢了。由于這是一個(gè)迭代的過(guò)程,研究可能會(huì)花費(fèi)太長(zhǎng)時(shí)間。為了面對(duì)選擇學(xué)習(xí)率值的挑戰(zhàn),各種策略已被開發(fā)出來(lái),這些策略在訓(xùn)練階段改變學(xué)習(xí)率的值,通常會(huì)降低它的值,以便在使用較高學(xué)習(xí)率探索景觀與使用較低學(xué)習(xí)率對(duì)已找到的解決方案進(jìn)行優(yōu)化(降谷)之間尋找平衡。到目前為止,我們已經(jīng)考慮通過(guò)使用完整數(shù)據(jù)集計(jì)算出的損失函數(shù)來(lái)一次性更新參數(shù)。這種方法稱為批量梯度下降法。實(shí)際上,這種方法永遠(yuǎn)不可能應(yīng)用到真實(shí)的場(chǎng)景中,因?yàn)樯窠?jīng)網(wǎng)絡(luò)的現(xiàn)代應(yīng)用要處理海量的數(shù)據(jù),而很少有計(jì)算機(jī)的內(nèi)存能滿足這些海量數(shù)據(jù)的存儲(chǔ)需求。為了克服批量梯度下降法的局限性,我們開發(fā)了幾種不同的batch梯度下降法的變體,并采用不同的策略來(lái)更新模型參數(shù),這將有助于我們解決與梯度下降法本身相關(guān)的一些挑戰(zhàn)。隨機(jī)梯度下降法隨機(jī)梯度下降法為訓(xùn)練數(shù)據(jù)集的每個(gè)元素更新模型參數(shù)——以一個(gè)更新步驟舉例:如果數(shù)據(jù)集的方差較大,則隨機(jī)梯度下降會(huì)導(dǎo)致訓(xùn)練階段損失值的大幅波動(dòng)。這既是優(yōu)點(diǎn)也是缺點(diǎn):·這可能是一種優(yōu)勢(shì),因?yàn)橛捎趽p失的波動(dòng),我們進(jìn)入了可能包含更好最小值的解空間的未探索區(qū)域?!み@是一種適合在線訓(xùn)練的方法,意味著在模型的整個(gè)生命周期中通過(guò)新數(shù)據(jù)進(jìn)行訓(xùn)練(這意味著我們可以繼續(xù)使用通常來(lái)自傳感器的新數(shù)據(jù)來(lái)訓(xùn)練模型)?!と秉c(diǎn)是這些更新的方差較高,導(dǎo)致收斂速度較慢,很難找到一個(gè)合適的最小值。試圖同時(shí)保持batch和隨機(jī)梯度下降的優(yōu)點(diǎn)的訓(xùn)練神經(jīng)網(wǎng)絡(luò)的實(shí)際方法,稱為小批量梯度下降。小批量梯度下降小批量梯度下降法保留了批量梯度下降法和隨機(jī)梯度下降法的最佳部分。它使用訓(xùn)練集的基數(shù)為b的子集來(lái)更新模型參數(shù),這就是一個(gè)小批量:這是使用最廣泛的方法,原因如下:·使用小批量減少了參數(shù)的更新方差,因此訓(xùn)練過(guò)程收斂更快?!な褂靡欢ɑ鶖?shù)的小批量,可以重復(fù)使用相同的方法進(jìn)行在線訓(xùn)練。梯度下降在更新步驟s的一般公式可寫作如下形式:·b=1,則方法為隨機(jī)梯度下降法·b=數(shù)據(jù)集,則方法為批量梯度下降法·1<b<數(shù)據(jù)集,則方法為小批量梯度下降法這里展示的三種方法以一種所謂的普通方式更新模型參數(shù),該方式只考慮當(dāng)前參數(shù)的值和通過(guò)應(yīng)用定義計(jì)算的反梯度。它們都使用一個(gè)固定值作為學(xué)習(xí)率。還有其他的參數(shù)優(yōu)化算法,開發(fā)這些算法的目的都是為了找到更好的解決方案,更好地探索參數(shù)空間,克服傳統(tǒng)方法在尋找最佳最小值時(shí)可能遇到的所有問(wèn)題:·選擇學(xué)習(xí)率:學(xué)習(xí)率可能是整個(gè)訓(xùn)練階段最重要的超參數(shù)。這些原因已在2.2.1節(jié)的末尾加以解釋?!す潭ǖ膶W(xué)習(xí)率:普通更新策略在訓(xùn)練階段不改變學(xué)習(xí)率值。此外,它使用相同的學(xué)習(xí)率來(lái)更新每個(gè)參數(shù)。這總是可取的嗎?可能不是,因?yàn)橐韵嗤姆绞教幚砼c輸入特性相關(guān)的具有不同出現(xiàn)頻率的參數(shù)是不合理的。直觀地說(shuō),我們希望更新與低出現(xiàn)頻率特征相關(guān)的參數(shù),并使用更小的步驟更新其他參數(shù)?!ぐ包c(diǎn)和停滯區(qū):用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)的損失函數(shù)是大量參數(shù)的函數(shù),因此是非凸函數(shù)。在優(yōu)化過(guò)程中,可能會(huì)遇到鞍點(diǎn)(函數(shù)值沿一個(gè)維度增加,而沿其他維度減少的點(diǎn))或停滯區(qū)(損失曲面局部恒定不變的區(qū)域)。在這種情況下,每個(gè)維度的梯度幾乎為零,所以反梯度指向的方向幾乎為零。這意味著我們陷入了困境,優(yōu)化過(guò)程無(wú)法繼續(xù)。我們被損失函數(shù)在幾個(gè)訓(xùn)練步驟中假定的常數(shù)值愚弄了。我們認(rèn)為我們找到了一個(gè)很好的最小值,但實(shí)際上,我們被困在解空間的一個(gè)無(wú)意義區(qū)域內(nèi)。2.2.2梯度下降優(yōu)化算法為了提高普通優(yōu)化的效率,人們提出了多種優(yōu)化算法。

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論