企業(yè)網(wǎng)站數(shù)防泄露怎么做開車搜索關(guān)鍵詞
1.感知機(jī)和激活函數(shù)
感知機(jī),是構(gòu)成神經(jīng)網(wǎng)絡(luò)的基本單位,一個感知機(jī)可以接收n個輸入X=(x1,x2,x3…xn)T(每個輸入,可以理解為一種特征),n個輸入對應(yīng)n個權(quán)值W=(w1,w2,w3…wn),此外還有一個偏置項b,學(xué)過矩陣的人應(yīng)該可以看出,這其實是一個y=WX+b的函數(shù),實際上就是對所有的輸入,根據(jù)權(quán)值和偏置量進(jìn)行求和運(yùn)算,然后作為一個神經(jīng)元的輸出。如下圖:
通過上圖可以看出,神經(jīng)元里,其實是一個線性函數(shù),我們現(xiàn)在先不討論他是如何學(xué)習(xí)數(shù)據(jù)的特征,我們可以通過極限的思想,想象一下這么一個場景,要實現(xiàn)通過特征,進(jìn)行設(shè)備分類,每個設(shè)備種類,是一個多維空間中的點,我們要做的就是用函數(shù)畫出每種設(shè)備所在的多維空間中的位置,那么現(xiàn)在再回頭看我們神經(jīng)元中的這個函數(shù),他只是一個線性函數(shù),所以無論我們有多少個神經(jīng)元和多少個網(wǎng)絡(luò)深度,他終究在極限的邊緣處,只能表示線性關(guān)系,如果想象不出來看下面的推導(dǎo):
紅框中就是輸出層的推到公式,很明顯,也是線性關(guān)系,所以為了讓預(yù)測的情況更加準(zhǔn)確,我們需要一個激活函數(shù),把線性關(guān)系,轉(zhuǎn)化為非線性關(guān)系,我們就需要把神經(jīng)元設(shè)計成如下:
常見的激活函數(shù)有(科學(xué)家研究出來的): sigmoid,對數(shù)幾率logistic,雙曲正切Tanh,以及現(xiàn)在用的最多的ReLu和Leaky-ReLu,softMax。
一般分類問題,都是用softMax函數(shù)作為激活函數(shù),因為它可以把每種輸出作為概率輸出
(具體的激活函數(shù),這里不做解釋了)
2.梯度下降法
梯度下降法,是我們用來計算損失函數(shù)誤差,和更新w,b的常用算法,他的原理其實很簡單,如下圖:
假如損失函數(shù),是一個一元2次函數(shù),只需要隨機(jī)獲取2個點f(X1),f(X0)的值,進(jìn)行比較,我們就可以知道大小,極小值點肯定是朝著數(shù)值小的地方,假如f(x1)<f(x0),那么就說明x1更接近極小值點,那么我們只需要朝著x1的方向,再取一個x2,慢慢的就可以向極小值靠近,這個x1和x2的距離,我們就叫步長 ,但是選擇步長,是個問題,步長過小,迭代次數(shù)過多,步長過大,會產(chǎn)生震蕩,導(dǎo)致在極小值點來回跳躍,所以我們就需要一個可以自動更新步長的方法,我們都知道在一個曲線的地方,這點的斜率,代表了他的抖度,當(dāng)越接近極小值的時候,斜率就越小,所以用步長*這點的偏導(dǎo)數(shù),就可以自動調(diào)節(jié)步長了,如果是二元函數(shù)也是一個道理,如下圖:
3.BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
輸入層:輸入的其實就是數(shù)據(jù)集中的特征,一種特征代表一種輸入
隱含層:就是上面說的神經(jīng)元,其中隱含層的層數(shù)和神經(jīng)元個數(shù),是需要通過試驗來確定的
輸出層:數(shù)據(jù)集中的分類有幾個,就有幾個輸出層神經(jīng)元
在多層神經(jīng)網(wǎng)絡(luò)中,每一層的輸出,代表的是上一層的輸入,只要有足夠多的隱含層,且每層有足夠多的神經(jīng)元,那么神經(jīng)網(wǎng)絡(luò)就可以擬合出任意復(fù)雜函數(shù)或空間分布,就比如下面這個:
隱含層中有三個神經(jīng)元,可以看出擬合出來了三條直線,通過激活函數(shù),就可以把線性關(guān)系轉(zhuǎn)化為非線性關(guān)系。
4.損失函數(shù):
在訓(xùn)練神經(jīng)網(wǎng)絡(luò)的時候,我們知道是用已經(jīng)的Y和X,去訓(xùn)練尋找W和B,那么我們就需要知道什么情況下,W和B是已經(jīng)訓(xùn)練的差不多了,其實就是當(dāng)我們訓(xùn)練出來的y0和真實的y之間的差距越小,說明訓(xùn)練的W和B就越好,那么我們就需要定義一個損失函數(shù),用來評估我們的模型訓(xùn)練質(zhì)量。
這里就介紹兩個常用的損失函數(shù):
交叉熵?fù)p失函數(shù):
均方誤差函數(shù):
5.獨(dú)熱編碼
直接舉個通俗易懂的例子,我們在訓(xùn)練數(shù)據(jù)的時候,有很多抽象的數(shù)據(jù),比如設(shè)備重要程度,我們不能直接使用1,2,3來區(qū)分它的重要程度,也不能直接使用它的編碼如A1,A2,A3,因為使用這些編碼作為輸入,計算機(jī)它理解不了,所以我們需要把他轉(zhuǎn)化為歐式距離,例如設(shè)備重要程度分為,一般設(shè)備,重要設(shè)備,那么我們就應(yīng)該給他們設(shè)置獨(dú)熱編碼為[0,1],[1,0],這其實代表的是這個這兩個分類到原點的歐式距離。
6.誤差反向傳播算法:
神經(jīng)網(wǎng)絡(luò)中,每個神經(jīng)元相連接的線上都有自己的權(quán)值w和偏置量b,我們在進(jìn)行一次訓(xùn)練后,應(yīng)該根據(jù)損失函數(shù),使用最小梯度下降法,來返回去更w和b, 然后使用更新后的w和b,再用新的數(shù)據(jù)進(jìn)行訓(xùn)練,就這樣一直重復(fù),從而擬合出最佳的網(wǎng)絡(luò)。
上圖為一次誤差反向傳播的過程,隱含層和輸出層使用的激活函數(shù)為softMax函數(shù),損失函數(shù)使用的是均方誤差函數(shù),可以看到Loss函數(shù)中,它是一個帶平方的函數(shù),所以我們就可以用最小梯度下降法,來求它的下一個落腳位置,慢慢的就可以靠近loss的極小值點 ,前面我們說過,怎么求解下一個落腳點,如下圖
這里只是把x和y,換成了w和b,因為x和y是我們數(shù)據(jù)集中的已知量,而w和b是我們要求的未知量,關(guān)于求w0和b0的偏導(dǎo)數(shù),使用的是鏈?zhǔn)角髮?dǎo)法則:
以上就是更新神經(jīng)網(wǎng)絡(luò)中W和B的全過程。
7.BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程:
初始化網(wǎng)絡(luò)權(quán)值和神經(jīng)元的闌值,一般通過隨機(jī)的方式進(jìn)行初始化
前向傳播:計算隱層神經(jīng)元和輸出層神經(jīng)元的輸出
后向傳播:根據(jù)目標(biāo)函數(shù)公式修正W和B
參考:慕課網(wǎng)-神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)(牟琦),深度學(xué)習(xí)及其應(yīng)用(趙衛(wèi)亮)