您好,登錄后才能下訂單哦!
引言:TensorFlow是谷歌2015年開(kāi)源的主流深度學(xué)習(xí)框架,目前已在谷歌、優(yōu)步(Uber)、京東、小米等科技公司廣泛應(yīng)用。本文將通過(guò)TensorFlow游樂(lè)場(chǎng)來(lái)簡(jiǎn)單介紹神經(jīng)網(wǎng)絡(luò)的主要功能以及計(jì)算流程。
本文選自《Tensorflow:實(shí)戰(zhàn)Google深度學(xué)習(xí)框架》。
本文將通過(guò)TensorFlow游樂(lè)場(chǎng)來(lái)快速介紹神經(jīng)網(wǎng)絡(luò)的主要功能。TensorFlow游樂(lè)場(chǎng)(http://playground.tensorflow.org)是一個(gè)通過(guò)網(wǎng)頁(yè)瀏覽器就可以訓(xùn)練的簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)并實(shí)現(xiàn)了可視化訓(xùn)練過(guò)程的工具。下圖給出了TensorFlow游樂(lè)場(chǎng)默認(rèn)設(shè)置的截圖。
TensorFlow游樂(lè)場(chǎng)界面截圖
從上圖中可以看出,TensorFlow游樂(lè)場(chǎng)的左側(cè)提供了4個(gè)不同的數(shù)據(jù)集來(lái)測(cè)試神經(jīng)網(wǎng)絡(luò)。默認(rèn)的數(shù)據(jù)為左上角被框出來(lái)的那個(gè)。被選中的數(shù)據(jù)也會(huì)顯示在上圖中最右邊的“OUTPUT”欄下。在這個(gè)數(shù)據(jù)中,可以看到一個(gè)二維平面上有黑色或者灰色的點(diǎn),每一個(gè)小點(diǎn)代表了一個(gè)樣例,而點(diǎn)的顏色代表了樣例的標(biāo)簽。因?yàn)辄c(diǎn)的顏色只有兩種,所以這是一個(gè)二分類(lèi)的問(wèn)題。在這里舉一個(gè)例子來(lái)說(shuō)明這個(gè)數(shù)據(jù)可以代表的實(shí)際問(wèn)題。假設(shè)需要判斷某工廠生產(chǎn)的零件是否合格,那么灰色的點(diǎn)可以表示所有合格的零件而黑色的表示不合格的零件。這樣判斷一個(gè)零件是否合格就變成了區(qū)分點(diǎn)的顏色。
為了將一個(gè)實(shí)際問(wèn)題對(duì)應(yīng)到平面上不同顏色點(diǎn)的劃分,還需要將實(shí)際問(wèn)題中的實(shí)體,比如上述例子中的零件,變成平面上的一個(gè)點(diǎn)①。這就是特征提取解決的問(wèn)題。還是以零件為例,可以用零件的長(zhǎng)度和質(zhì)量來(lái)大致描述一個(gè)零件。這樣一個(gè)物理意義上的零件就可以被轉(zhuǎn)化成長(zhǎng)度和質(zhì)量這兩個(gè)數(shù)字。在機(jī)器學(xué)習(xí)中,所有用于描述實(shí)體的數(shù)字的組合就是一個(gè)實(shí)體的特征向量(feature vector)。在第1章中介紹過(guò),特征向量的提取對(duì)機(jī)器學(xué)習(xí)的效果至關(guān)重要,如何提取特征本書(shū)不再贅述。通過(guò)特征提取,就可以將實(shí)際問(wèn)題中的實(shí)體轉(zhuǎn)化為空間中的點(diǎn)。假設(shè)使用長(zhǎng)度和質(zhì)量作為一個(gè)零件的特征向量,那么每個(gè)零件就是二維平面上的一個(gè)點(diǎn)。TensorFlow游樂(lè)場(chǎng)中FEATURES一欄對(duì)應(yīng)了特征向量。在本文的樣例中,可以認(rèn)為x1代表一個(gè)零件的長(zhǎng)度,而x2代表零件的質(zhì)量。
特征向量是神經(jīng)網(wǎng)絡(luò)的輸入,神經(jīng)網(wǎng)絡(luò)的主體結(jié)構(gòu)顯示在了上圖的中間位置。目前主流的神經(jīng)網(wǎng)絡(luò)都是分層的結(jié)構(gòu),第一層是輸入層,代表特征向量中每一個(gè)特征的取值。比如如果一個(gè)零件的長(zhǎng)度是0.5,那么x1的值就是0.5。同一層的節(jié)點(diǎn)不會(huì)相互連接,而且每一層只和下一層連接,直到最后一層作為輸出層得到計(jì)算的結(jié)果②。在二分類(lèi)問(wèn)題中,比如判斷零件是否合格,神經(jīng)網(wǎng)絡(luò)的輸出層往往只包含一個(gè)節(jié)點(diǎn),而這個(gè)節(jié)點(diǎn)會(huì)輸出一個(gè)實(shí)數(shù)值。通過(guò)這個(gè)輸出值和一個(gè)事先設(shè)定的閾值,就可以得到最后的分類(lèi)結(jié)果。以判斷零件合格為例,可以認(rèn)為當(dāng)輸出的數(shù)值大于0時(shí),給出的判斷結(jié)果是零件合格,反之則零件不合格。一般可以認(rèn)為當(dāng)輸出值離閾值越遠(yuǎn)時(shí)得到的答案越可靠。
在輸入和輸出層之間的神經(jīng)網(wǎng)絡(luò)叫做隱藏層,一般一個(gè)神經(jīng)網(wǎng)絡(luò)的隱藏層越多,這個(gè)神經(jīng)網(wǎng)絡(luò)越“深”。而所謂深度學(xué)習(xí)中的這個(gè)“深度”和神經(jīng)網(wǎng)絡(luò)的層數(shù)也是密切相關(guān)的。在TensorFlow游樂(lè)場(chǎng)中可以通過(guò)點(diǎn)擊“+”或者“-”來(lái)增加/減少神經(jīng)網(wǎng)絡(luò)隱藏層的數(shù)量。除了可以選擇神經(jīng)網(wǎng)絡(luò)的深度,TensorFlow游樂(lè)場(chǎng)也支持選擇神經(jīng)網(wǎng)絡(luò)每一層的節(jié)點(diǎn)數(shù)以及學(xué)習(xí)率(learning rate)、激活函數(shù)(activation)、正則化(regularization)。如何使用這些參數(shù)將在后面的章節(jié)中討論。在本文中都直接使用TensorFlow游樂(lè)場(chǎng)默認(rèn)的設(shè)置。當(dāng)所有配置都選好之后,可以通過(guò)左上角的開(kāi)始標(biāo)志“”來(lái)訓(xùn)練這個(gè)神經(jīng)網(wǎng)絡(luò)。下圖中給出了迭代訓(xùn)練100輪之后的情況。
TensorFlow游樂(lè)場(chǎng)訓(xùn)練100輪之后的截圖
如何訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)將在下一節(jié)中介紹,在這里主要介紹如何解讀TensorFlow游樂(lè)場(chǎng)的訓(xùn)練結(jié)果。在上圖中,一個(gè)小格子代表神經(jīng)網(wǎng)絡(luò)中的一個(gè)節(jié)點(diǎn),而邊代表節(jié)點(diǎn)之間的連接。每一個(gè)節(jié)點(diǎn)和邊都被涂上了或深或淺的顏色,但邊上的顏色和格子中的顏色含義有略微的區(qū)別。每一條邊代表了神經(jīng)網(wǎng)絡(luò)中的一個(gè)參數(shù),它可以是任意實(shí)數(shù)。神經(jīng)網(wǎng)絡(luò)就是通過(guò)對(duì)參數(shù)的合理設(shè)置來(lái)解決分類(lèi)或者回歸問(wèn)題的。邊上的顏色體現(xiàn)了這個(gè)參數(shù)的取值,當(dāng)邊的顏色越深時(shí),這個(gè)參數(shù)取值的絕對(duì)值越大;當(dāng)邊的顏色接近白色時(shí),這個(gè)參數(shù)的取值接近于0③。
每一個(gè)節(jié)點(diǎn)上的顏色代表了這個(gè)節(jié)點(diǎn)的區(qū)分平面。具體來(lái)說(shuō),如果把這個(gè)平面當(dāng)成一個(gè)卡迪爾坐標(biāo)系,這個(gè)平面上的每一個(gè)點(diǎn)就代表了(x1,x2)的一種取值。而這個(gè)點(diǎn)的顏色就體現(xiàn)了x1,x2在這種取值下這個(gè)節(jié)點(diǎn)的輸出值。和邊類(lèi)似,當(dāng)節(jié)點(diǎn)的輸出值的絕對(duì)值越大時(shí),顏色越深④。下面將具體解讀輸入層x1所代表的節(jié)點(diǎn)。從上圖中可以看到x1這個(gè)節(jié)點(diǎn)的區(qū)分平面就是y軸。因?yàn)檫@個(gè)節(jié)點(diǎn)的輸出就是x1本身的值,所以當(dāng)x1小于0時(shí),這個(gè)節(jié)點(diǎn)的輸出就是負(fù)數(shù),而x1大于0時(shí)輸出的就是正數(shù)。于是y軸的左側(cè)都為灰色,而右側(cè)都為黑色⑤。上圖中其他節(jié)點(diǎn)可以類(lèi)似的解讀。唯一特殊的是最右邊OUTPUT欄下的輸出節(jié)點(diǎn)。這個(gè)節(jié)點(diǎn)中除了顯示了區(qū)分平面之外,還顯示了訓(xùn)練數(shù)據(jù),也就是希望通過(guò)神經(jīng)網(wǎng)絡(luò)區(qū)分的數(shù)據(jù)點(diǎn)。從上圖中可以看到,經(jīng)過(guò)兩層的隱藏層,輸出節(jié)點(diǎn)的區(qū)分平面已經(jīng)可以完全區(qū)分不同顏色的數(shù)據(jù)點(diǎn)。
綜上所述,使用神經(jīng)網(wǎng)絡(luò)解決分類(lèi)問(wèn)題主要可以分為以下4個(gè)步驟。
1.提取問(wèn)題中實(shí)體的特征向量作為神經(jīng)網(wǎng)絡(luò)的輸入。不同的實(shí)體可以提取不同的特征向量,本書(shū)中將不具體介紹。本文假設(shè)作為神經(jīng)網(wǎng)絡(luò)輸入的特征向量可以直接從數(shù)據(jù)集中獲取。
2.定義神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),并定義如何從神經(jīng)網(wǎng)絡(luò)的輸入得到輸出。這個(gè)過(guò)程就是神經(jīng)網(wǎng)絡(luò)的前向傳播算法,以后將進(jìn)行詳細(xì)介紹。
3.通過(guò)訓(xùn)練數(shù)據(jù)來(lái)調(diào)整神經(jīng)網(wǎng)絡(luò)中參數(shù)的取值,這就是訓(xùn)練神經(jīng)網(wǎng)絡(luò)的過(guò)程。下一節(jié)將先介紹TensorFlow中表示神經(jīng)網(wǎng)絡(luò)參數(shù)的方法,然后下一節(jié)將大致介紹神經(jīng)網(wǎng)絡(luò)優(yōu)化算法的框架,并介紹如何通過(guò)TensorFlow實(shí)現(xiàn)這個(gè)框架。
4.使用訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)來(lái)預(yù)測(cè)未知的數(shù)據(jù)。這個(gè)過(guò)程和步驟2中的前向傳播算法一致,本文不再贅述。
①在真實(shí)問(wèn)題中,一般會(huì)從實(shí)體中抽取更多的特征,所以一個(gè)實(shí)體會(huì)被表示為高維空間中的點(diǎn)。 ②有一些神經(jīng)網(wǎng)絡(luò)是可以跨層連接的,但目前大部分神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中都只是相鄰兩層有連接。 ③在TensorFlow游樂(lè)場(chǎng)網(wǎng)站上,邊的顏色有×××(文中淺色部分)和藍(lán)色(文中深色部分)的區(qū)別,×××越深表示負(fù)得越大,藍(lán)色越深表示正得越大。 ④類(lèi)似邊上的顏色,TensorFlow游樂(lè)場(chǎng)網(wǎng)站中,點(diǎn)上的顏色也有×××(文中淺色部分)和藍(lán)色(文中深色部分),和邊上顏色類(lèi)似,×××越深表示負(fù)得越大,藍(lán)色越深表示正得越大。 ⑤在TensorFlow游樂(lè)場(chǎng)中,y軸左側(cè)為×××(文中淺色部分),右側(cè)為藍(lán)色(文中深色部分)。
本文選自《Tensorflow:實(shí)戰(zhàn)Google深度學(xué)習(xí)框架》,點(diǎn)此鏈接可在博文視點(diǎn)官網(wǎng)查看此書(shū)。
想及時(shí)獲得更多精彩文章,可在微信中搜索“博文視點(diǎn)”或者掃描下方二維碼并關(guān)注。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。