1. gzyueqian
      13352868059

      機(jī)器學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)法

      更新時(shí)間: 2018-08-28 11:36:03來源: 嵌入式培訓(xùn)瀏覽量:5251

      前面我們知道了將簡單的模型進(jìn)行融合之后會(huì)得到一個(gè)非常強(qiáng)大的模型。我們?cè)囍鴮⒏兄鳎ê唵蔚亩诸惸P停┳鼍€性融合之后得到下圖:



      其中每一個(gè)節(jié)點(diǎn)都是一個(gè)感知器,其層的感知器都是由前一層X向量與W權(quán)重的線性組合,而第二層的感知器又是由前一層的得到的小的感知器g與新一輪的權(quán)重α線性組合而成。得到的線性模型如上圖右所示。

      用融合模型做邏輯運(yùn)算

      我們?cè)囍蒙厦娴娜诤夏P腿ソ鉀Q兩個(gè)感知器與運(yùn)算的一個(gè)實(shí)例如下圖所示:



      當(dāng)兩個(gè)模型都判定為1的時(shí)候我們的終結(jié)果為1,其他的情況為0。再加上0維的向量我們會(huì)得到以下的融合圖景:



      在上面的模型中我們給定了三個(gè)維度的權(quán)重值(-1,1,1)。得到的模型為sign(-1+g1(x)+g2(x)),表達(dá)的意思就是只有兩個(gè)g都判定為1的時(shí)候我們模型的值才會(huì)終判定為1。同理我們還能解決OR(1,1,1)與NOT(1,-1,-1)的模型。

      融合模型的極限
      融合模型非常的強(qiáng)大,以致于能夠分割出VC維度為無限大的凸多邊形。當(dāng)然這也免不了過擬合的危險(xiǎn)。

      除此之外融合模型也不是的比如它不能分割出一個(gè)異或的模型來如下圖:



      不能做出異或的原因就是如果我們把g當(dāng)做是特征轉(zhuǎn)換的話我們即使在轉(zhuǎn)換后的空間也沒有找到一個(gè)能夠線性可分這筆資料的線,所以我們即使融合也無濟(jì)于事。

      多層的感知器:基礎(chǔ)的神經(jīng)網(wǎng)絡(luò)

      我們基于boolean邏輯運(yùn)算的組合XOR(AND(-g1,g2),AND(g1,-g2))將神經(jīng)網(wǎng)絡(luò)再次擴(kuò)大一層我們就可以解決上面的問題了:



      由此我們可以看出,多層的感知器組合要比簡單的融合更為強(qiáng)大,這也是神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)。

      神經(jīng)網(wǎng)絡(luò)與生物學(xué)神經(jīng)的關(guān)系



      一句話,只是有簡單的相似之處。神經(jīng)網(wǎng)絡(luò)歸根結(jié)底是一個(gè)數(shù)學(xué)上的模型。就像我么造飛機(jī)一樣我們只有簡單的借鑒,其他的都是工程與科學(xué)的結(jié)合。我們不能做“鳥飛派”全盤的模仿。

      神經(jīng)網(wǎng)絡(luò)的原理
      為神經(jīng)網(wǎng)絡(luò)選擇一個(gè)輸出

      我們的終目的就是要讓輸入的資料經(jīng)過一層一層的轉(zhuǎn)換然后經(jīng)過線性的融合得到一個(gè)綜合的模型。我們學(xué)過比較有代表性的線性模型就是線性二分、線性回歸、邏輯回歸。不同的模型會(huì)對(duì)應(yīng)到每一層的轉(zhuǎn)換會(huì)有不同的意義。為了計(jì)算的方便起見我們使用平方誤差的線性回歸:



      為中間的轉(zhuǎn)換選擇一個(gè)函數(shù)

      ①不使用線性二分的函數(shù)
      在前面的討論中我們進(jìn)行的是邏輯運(yùn)算所以我們選擇了二分函數(shù)。但是在比較復(fù)雜的問題下我們使用線性二分函數(shù)的話在優(yōu)化的時(shí)候就會(huì)非常困難,所以不選擇線性二分函數(shù)作為轉(zhuǎn)換函數(shù)。

      ②不使用線性函數(shù)
      由于我們已經(jīng)選擇了線性函數(shù)作為我們的融合模型。所以當(dāng)我們轉(zhuǎn)換和輸出函數(shù)都是線性函數(shù)的時(shí)候我們所做的就只相當(dāng)于將原來的輸入只做了一個(gè)線性的融合這樣的效果可想而知。沒有發(fā)揮出神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)換與融合的特點(diǎn)來。

      ③使用tanh函數(shù)
      tanh也是一個(gè)平滑的連續(xù)的s型函數(shù)。這個(gè)函數(shù)有這樣的優(yōu)點(diǎn):首先,它比起線性二分函數(shù)更容易優(yōu)化。其次,它是一個(gè)連續(xù)的函數(shù)這一點(diǎn)與生物學(xué)中的神經(jīng)元運(yùn)作很像。,這個(gè)函數(shù)與我們熟悉的邏輯回歸函數(shù)十分相近(只是簡單的平移與放縮)。

      選擇的過程與tanh函數(shù)如下圖所示:



      神經(jīng)網(wǎng)絡(luò)模型符號(hào)上的表示



      我們把整個(gè)神經(jīng)網(wǎng)絡(luò)分為這樣幾個(gè)部分:

      ①將原始資料輸入的部分稱為輸入層,同時(shí)也是第0層。
      ②將輸出的那一層稱為輸出層,同時(shí)也是第L層。
      ③中間不停的做轉(zhuǎn)換的部分稱為隱藏層,也是第l層(1<=l<=L)。
      ④Wij是第i層到第j層之間的權(quán)重。
      ⑤s是上一層的輸出,也作為當(dāng)前層的輸入資料x。
      對(duì)于每一個(gè)節(jié)點(diǎn)都會(huì)有一組不同的權(quán)重值,也就是對(duì)于每一個(gè)節(jié)點(diǎn)都會(huì)有一個(gè)不同的權(quán)重向量。

      神經(jīng)網(wǎng)絡(luò)的物理意義
      神經(jīng)網(wǎng)絡(luò)的節(jié)點(diǎn)中,每一個(gè)節(jié)點(diǎn)都會(huì)對(duì)應(yīng)一個(gè)權(quán)重向量W。這個(gè)向量會(huì)與前面的輸入所組合(透過tanh函數(shù))組合后的輸出又當(dāng)做是新一輪的輸入,那么這個(gè)過程就是對(duì)原來資料的一種特殊的轉(zhuǎn)換。那么什么時(shí)候這個(gè)tanh函數(shù)會(huì)很大呢(也就是得到+1的結(jié)果)?就是WX內(nèi)積很大的時(shí)候,內(nèi)積很大說明了X與W的相似度很高,這兩個(gè)向量越接近。所以我們的tanh函數(shù)很大時(shí)候的權(quán)重W就會(huì)與我們實(shí)際的數(shù)據(jù)有很高的相似性。也就是我們的W就是我們從數(shù)據(jù)中萃取出來的特性或者說是模式。


      反向傳播算法
      權(quán)重的決定

      每一層的每個(gè)點(diǎn)應(yīng)該對(duì)應(yīng)什么權(quán)重這完全取決于我們結(jié)果的犯錯(cuò)誤的大小,也就是損失函數(shù)的大小。我們總是希望能夠有一組權(quán)重會(huì)使得我們的損失函數(shù)小。這樣的權(quán)重就是我們想要的權(quán)重。出于一般性的考慮我們需要知道每個(gè)節(jié)點(diǎn)所對(duì)應(yīng)的權(quán)重(Wij)與我們犯的錯(cuò)誤(en)有什么聯(lián)系。也就是計(jì)算en與相對(duì)于每一個(gè)權(quán)重的偏微分,知道這個(gè)偏微分之后我們就能夠知道使得錯(cuò)誤變小的方向在哪里進(jìn)而去朝這個(gè)方向更新我們的權(quán)重如下圖所示:


      反向傳播算法

      我們先計(jì)算終的錯(cuò)誤對(duì)于一層的權(quán)重的偏微分如下圖所示:




      我們很輕易的得到了這個(gè)關(guān)系如上圖左方所示。依照這一步計(jì)算我們?cè)噲D去計(jì)算en對(duì)第l層的某一個(gè)節(jié)點(diǎn)的權(quán)重的偏微分。其中有對(duì)第i-1層的輸入X,還有一項(xiàng)為en對(duì)這個(gè)節(jié)點(diǎn)偏微分的結(jié)果我們稱它為δ。我們的下一步就是計(jì)算δ。

      計(jì)算δ

      單個(gè)節(jié)點(diǎn)的分?jǐn)?shù),權(quán)重與,輸出關(guān)系如下:

      我們繼續(xù)使用微積分中的連鎖率去計(jì)算δ,會(huì)得到如下的結(jié)果:



      這樣一來δ之間就會(huì)形成一個(gè)遞推的關(guān)系,他們都能夠由一個(gè)開始反向的計(jì)算出上一個(gè)直到地推到當(dāng)前的δ為止。其中Wjk我們已經(jīng)在手上了,tanh對(duì)于s的偏微分也可以計(jì)算,δ可以遞推的計(jì)算出來。

      這樣我們得到了錯(cuò)誤與我們一個(gè)點(diǎn)的權(quán)重我們也就可以重復(fù)上述步驟得到每個(gè)點(diǎn)對(duì)錯(cuò)誤的影響,我們?cè)诟鶕?jù)這個(gè)影響調(diào)節(jié)每一個(gè)權(quán)重直到錯(cuò)誤降到一個(gè)很低的值。

      總的看來我們首先輸入一組值得到一個(gè)錯(cuò)誤率,然后通過錯(cuò)誤率反過來計(jì)算每個(gè)節(jié)點(diǎn)對(duì)它的權(quán)重的影響,進(jìn)而使用梯度下降法調(diào)節(jié)權(quán)重。整個(gè)過程我們稱之為反向傳播算法。如下圖所示:
      注意事項(xiàng):
      ①初的梯度我們隨機(jī)給定。
      ②x的計(jì)算完全由的輸入、權(quán)重與tanh函數(shù)來正向計(jì)算得來。
      ③在使用梯度下降法更新權(quán)重的時(shí)候每一次的更新都會(huì)將反向傳播“跑一輪”比較耗時(shí)間。如果只使用一筆資料去更新的話會(huì)有一些不確定性在里面,如果使用所有的資料又顯得計(jì)算量很大。所以我們選擇了一個(gè)折中的方法就是選擇其中的一批資料去計(jì)算梯度然后求平均,在更新的時(shí)候我們用到的梯度就是我們所求的平均的梯度。這種更新梯度的方式我們稱之為mini-batch。
      ④返回的g就是從層開始不斷做線性組合-->tanh--->多個(gè)模型融合這個(gè)過程,

      g = (...tanh(Σw*tanh(Σw*x)))。

      神經(jīng)網(wǎng)絡(luò)的優(yōu)化
      局部小與全局小

      對(duì)于神經(jīng)網(wǎng)絡(luò)的優(yōu)化我們使用的是梯度下降法,但是當(dāng)隱藏層變多的時(shí)候我們的損失函數(shù)就變成了一個(gè)非凸函數(shù)如下:
      所以我們就很難使得錯(cuò)誤率到達(dá)真正的點(diǎn)反而陷入局部的困境。

      我們知道損失函數(shù)的解與我們的起始點(diǎn)有關(guān),不同的起始點(diǎn)會(huì)有不同的解。一般來說權(quán)重大的時(shí)候我們的梯度較小下降速度較慢所以我們一般選擇的初始權(quán)重的時(shí)候會(huì)遵循隨機(jī)化與盡可能小的原則這樣可能會(huì)得到更好的效果。

      神經(jīng)網(wǎng)絡(luò)與VC維度
      這里只給一個(gè)結(jié)論:dvc = (VD),V代表神經(jīng)元的數(shù)量,D代表權(quán)重的數(shù)量。這里給我們的啟示就是:神經(jīng)元越多我們的模型就能夠做更多的事情,但是太多的神經(jīng)元會(huì)使得我們有過擬合的危險(xiǎn)。

      神經(jīng)網(wǎng)絡(luò)的正則化
      對(duì)于模型的正則化我們一般有L2與L1兩種選擇:
      ①單純的選擇L2的正則化,我們會(huì)使得權(quán)重變小但是只是同比的縮小,所以導(dǎo)致了雖然權(quán)重變小了但是大多數(shù)的權(quán)重值還不是0。這樣并沒有減少我們的運(yùn)算量。
      ②單純的使用L1的正則化,我們倒是可以得到一些稀疏的的解。但是L1的正則化下的模型是不可微分的,這樣就破壞了我們神經(jīng)網(wǎng)絡(luò)可微分的體系。
      ③我們就選擇了一種新的方式:將原來的L2正則化進(jìn)行放縮,這次不是同比放縮而是固定的放縮。導(dǎo)致了一些小的權(quán)重值會(huì)趨向于0。這樣我們就達(dá)到了稀疏學(xué)習(xí)的目的。改版后的正則化如下圖所示:

      其它的一些正則化
      在梯度下降的過程中,我們會(huì)先看自己周圍的一堆權(quán)重然后進(jìn)行跟新,到了一個(gè)新的點(diǎn)上我們又會(huì)去執(zhí)行以上相同的步驟。隨著走的步數(shù)越多我們做的選擇就越多,我們的復(fù)雜度就會(huì)越大也就越容易過擬合。所以我們選擇早一點(diǎn)就停下來。
      在VC里面的VC/Err圖也說明了解不在復(fù)雜度很高的地方,也就是不在步數(shù)走的多的時(shí)候出現(xiàn)。

      至于應(yīng)該在什么時(shí)刻選擇停止下來我們通常使用的就是模型檢測(cè)validation。

      粵嵌科技創(chuàng)辦于2005年是一家IT高新技術(shù)企業(yè),專注IT職業(yè)教育13年,主要培訓(xùn)課程分別有嵌入式培訓(xùn)、Java培訓(xùn)、Unity游戲開發(fā)、Python人工智能、HTML5前端開發(fā)、全棧UI設(shè)計(jì)、網(wǎng)絡(luò)營銷、CCIE網(wǎng)絡(luò)等專業(yè)課程,咨詢電話:020-61038927

      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲国产天堂久久综合网站 | 日本国产欧美大码a蜜糖视频 | 午夜性色福利剧场 | 亚洲精品国产五月综合网 | 亚洲男人的天堂在线视频 | 亚洲专区欧美日韩 |