开心六月综合激情婷婷|欧美精品成人动漫二区|国产中文字幕综合色|亚洲人在线成视频

    1. 
      
        <b id="zqfy3"><legend id="zqfy3"><fieldset id="zqfy3"></fieldset></legend></b>
          <ul id="zqfy3"></ul>
          <blockquote id="zqfy3"><strong id="zqfy3"><dfn id="zqfy3"></dfn></strong></blockquote>
          <blockquote id="zqfy3"><legend id="zqfy3"></legend></blockquote>
          打開APP
          userphoto
          未登錄

          開通VIP,暢享免費電子書等14項超值服

          開通VIP
          科學網(wǎng)

          最近在研究Deep Learning在個性化推薦中的應用,由于DL跟神經(jīng)網(wǎng)絡有很大的關系,索性開篇就介紹下神經(jīng)網(wǎng)絡和自己所了解到的知識。接觸ML時間不是很長,難免有描述不當?shù)牡胤?,旨在于交流學習,有啥想法直接后面回復。

          在這篇博文中,你將會看到如下知識:

          神經(jīng)網(wǎng)絡的基本模型,前向神經(jīng)網(wǎng)絡(Feed-forward neural network),General Feed-forward  NN 的組件,優(yōu)化目標函數(shù),逆向誤差傳播算法。

          “ 根據(jù)一個簡化的統(tǒng)計,人腦由百億條神經(jīng)組成 ― 每條神經(jīng)平均連結到其它幾千條神經(jīng)。通過這種連結方式,神經(jīng)可以收發(fā)不同數(shù)量的能量。神經(jīng)的一個非常重要的功能是它們對能量的接受并不是立即作出響應,而 是將它們累加起來,當這個累加的總和達到某個臨界閾值時,它們將它們自己的那部分能量發(fā)送給其它的神經(jīng)。大腦通過調(diào)節(jié)這些連結的數(shù)目和強度進行學習。盡管 這是個生物行為的簡化描述。但同樣可以充分有力地被看作是神經(jīng)網(wǎng)絡的模型。 ”

          人的大腦是非常復雜的,特別是大腦神經(jīng)系統(tǒng),可以說沒有它,大腦就是一些組織,細胞而已。在機器學習領域,對神經(jīng)網(wǎng)絡的研究應該是希望從大腦的工作機制和神經(jīng)系統(tǒng)結構中獲得啟發(fā),一方面可以設計高效的學習算法,讓機器也能夠?qū)栴}進行大規(guī)模學習,另一方面可以從神經(jīng)元的并行工作方式中得到啟發(fā),設計高效的并行計算算法,讓機器擁有更強的實時處理大規(guī)模數(shù)據(jù)的能力。

          在這里就不介紹生物上的神經(jīng)網(wǎng)絡了,一來是不懂,二來這里的神經(jīng)網(wǎng)絡一概指 機器學習領域的神經(jīng)網(wǎng)絡模型(人工神經(jīng)網(wǎng)絡),如果你對這個生物的神經(jīng)網(wǎng)絡感興趣的話,可以參考《A Brief Introduction to Neural Networks · D. Kriesel》,這篇文章有講到不同類型的神經(jīng)網(wǎng)絡,大多數(shù)跟生物神經(jīng)系統(tǒng)的基本結構有關系。在機器學習領域的神經(jīng)網(wǎng)絡一般會指 前向傳播神經(jīng)網(wǎng)絡 (Feed-forward neural network),這種模型較為通用。

          人工神經(jīng)網(wǎng)絡的基本模型

          前向神經(jīng)網(wǎng)絡



          上圖描述的是一個目前研究最為成熟Shallow 結構的神經(jīng)網(wǎng)絡(只含有單層隱藏層神經(jīng)元的結構)。第一層為輸入層 (input layer ),第二層稱為隱藏層 ( hidden layer ),最后一層為輸出層( output layer )。神經(jīng)元之間都是由低層出發(fā),終止于高層神經(jīng)元的一條有向邊進行連接,每條邊都有自己的權重。每個神經(jīng)元都是一個計算單元,如在Feed-forward neural network 中,除輸入層神經(jīng)元外,每個神經(jīng)元為一個計算單元,可以通過一個計算函數(shù) f()  來表示,函數(shù)的具體形式可以自己定義,現(xiàn)在用的較多的是 感知器計算神經(jīng)元,如果你對感知器有所了解的話,理解起來會容易很多。 可以計算此時神經(jīng)元所具有的能量值,當該值超過一定閥值的時候神經(jīng)元的狀態(tài)就會發(fā)生改變,神經(jīng)元只有兩種狀態(tài),激活或未激活。在實際的人工神經(jīng)網(wǎng)絡中,一般是用一種概率的方式去表示神經(jīng)元是否處于激活狀態(tài),可以用 h(f) 來表示,f 代表神經(jīng)元的能量值,h(f) 代表該能量值使得神經(jīng)元的狀態(tài)發(fā)生改變的概率有多大,能量值越大,處于激活狀態(tài)的概率就越高。到這部分你已經(jīng)接觸到了關于神經(jīng)網(wǎng)絡的幾個基本術語,下面用更加規(guī)范的符號來表示,神經(jīng)元的激活值(activations)  f() ,表示計算神經(jīng)元的能量值, 神經(jīng)元的激活狀態(tài) h(f) ,h 表示激活函數(shù)。

          激活函數(shù)有好幾種形式,這里列舉兩種,

                                         


          General Feed-forward  NN 的組件

          假設有 包涵有N個樣本的數(shù)據(jù)集 = { (X1,T1) , (X2,T2) , (X3,T3)......  (Xn,Tn)} ,其中T的取值可以根據(jù)你的任務不同而不同,比如你要用神經(jīng)網(wǎng)絡進行回歸分析,T ( target value)就是一個連續(xù)值,如果你面對的是一個回歸問題的話,T 的取值就是離散的,比如二分類問題 T = { 0,1 },輸入樣本的每個觀測值(Observation) Xi 都具有相同的維度數(shù)量 m ,與之對應的輸入層的神經(jīng)元個數(shù)也為 (m + 1)個,包含有一個偏置神經(jīng)元( bais unit )。

          這里采用了Andrew Ng的 Deep Learning tutorials 上的符號系統(tǒng)。nl表示神經(jīng)網(wǎng)絡具有的總層數(shù),

          表示最后一層神經(jīng)網(wǎng)絡,下標就是表示第幾層,L1表示第一層,也就是輸入層。低層與高層的神經(jīng)元之間都是通過帶權重的單向邊進行連接,(W,b)表示整個神經(jīng)網(wǎng)絡中的參數(shù),W 表示連邊的權重,b表示偏置。在上圖中(W,b) = (W(1),b(1),W(2),b(2)),上角標表示第 i 層與(i + 1)層之間的權重系數(shù)矩陣(如無特殊說明,下文中的上角標都表示層號,當然對于系數(shù)矩陣和神經(jīng)元來說,上角標的意思是不太一樣的),
          表示第L層的第 j 個神經(jīng)元與第 L + 1 層的第 i 個神經(jīng)元之間的權重系數(shù)。在上圖的例子中
          。 該部分采用向量化的表述方式,這個為后面的向量化編程會帶來非常大的好處,不用一個一個的去記哪個跟哪個權重系數(shù)對應,直接一個矩陣,非常簡潔。整個神經(jīng)網(wǎng)絡可以用一個函數(shù)  hW,b(x) 來表示。

          接著來看下跟每個神經(jīng)元都相關的符號,

          表示第L層的第i個神經(jīng)元的激活狀態(tài)(activations),該過程是非線性操作,這個概念非常重要,要牢記。當L = 1的時候,可以認為
          就是等于輸入神經(jīng)元的值,
          表示該神經(jīng)元具有的能量值。

          到此為止,你已經(jīng)可以掌握一個神經(jīng)網(wǎng)絡中的基本符號和表示方法,盡快熟悉這些符號,在你的腦子里面神經(jīng)網(wǎng)絡已經(jīng)不再是抽象的神經(jīng)元之間的連接方式了,可以通過上述的符號來刻畫,這對后面公式的理解會有很大的幫助。

          下面來看下神經(jīng)網(wǎng)絡的基本成分( neural network components)

          對線性模型 (Linear Model ) 比較了解的人應該非常熟悉這個公式

          線性模型可以表示成有限個基函數(shù)(basis function)的線性融合,基函數(shù)

          的形式可以自己定義,舉個簡單的例子,
          可以是關于輸入 m 次冪的多項式 x^m(順便吐槽一下,這里敲公式實在麻煩)。實際上神經(jīng)網(wǎng)絡也可以看成是一些線性函數(shù)的疊加,不過中間有了一個激活函數(shù),情況就變得跟線性模型不一樣了。還是以FNN(Feed-forward Neural Network)為例對除輸入層之外的每個神經(jīng)元進行
          的操作就可以得到神經(jīng)元的能量值,每個神經(jīng)元的激活狀態(tài)就可以表示成
          ( 非線性操作 ) ,下面對整個網(wǎng)絡進行同樣的操作就可以得到


          上述過程的向量化表示,這里的f和h函數(shù)就都變成了向量函數(shù),如 f([z1,z2,z3]) = [f(z1),f(z2),f(z3)]


          到該部分,你已經(jīng)基本掌握了一個神經(jīng)網(wǎng)絡的結構,如何執(zhí)行得到輸出,但是還差如何去訓練得到我們的參數(shù) (W,b)。上面都是以單隱藏層的神經(jīng)網(wǎng)絡而且輸出只有一個神經(jīng)元,如果你知道了如何去訓練這個簡易的神經(jīng)網(wǎng)絡,那下面這個看起來更復雜一些的例子你同樣知道該如何去訓練。



          優(yōu)化目標函數(shù)

          這個是在用機器學習方式為問題建模的第二部,確定你的損失函數(shù)(Loss Function),也就是你的優(yōu)化目標。該過程會涉及到一些基本的優(yōu)化方法,統(tǒng)計學概念以及一些實際的應用經(jīng)驗。當然如果你跟我一樣是剛接觸機器學習(Machine Learning)不久的話,了解了一些關于梯度優(yōu)化方法的話,你就能掌控這里的一切啦。

          假設我們有m個樣本  

          ,這里采用的是二次平方和最小化 (最小二乘)作為損失函數(shù)(關于損失函數(shù)的類型可以參考《統(tǒng)計學習方法》- 李航)  ,用該公式表示損失函數(shù)
          ,在實際優(yōu)化目標函數(shù)需要表示成如下形式,比上面的公式多了一個 "+"好后面的內(nèi)容,該項也稱作 weight decay,該部分是起正則作用,防止過擬合。


          之所以采用二次損失函數(shù),我想應該是為了構建一個具有 convex 性質(zhì)的目標函數(shù),便于使用梯度優(yōu)化的方法尋找最優(yōu)值。下圖就是在參數(shù)(w,b)下的誤差曲面(error surface)。

               


          下面公式表示了權重系數(shù)更新的方式,也就是為了找到一個使得目標函數(shù)最小值的系數(shù) (w,b) 。在整個優(yōu)化的過程中,最重要的就是如何求解不同

          的梯度信息,為了求解這個東西,又要來一個新的概念了,逆誤差傳播(error backpropagation)學習算法。機器學習的問題總是會這樣,找到優(yōu)化目標以后,就需要相應的學習算法尋找最優(yōu)值,此時的系數(shù)就是我們所要選擇的模型的參數(shù)了。




          逆向誤差傳播算法 (error backpropagation)

          如其名,該方法就是讓輸出層的y 與 輸入 x 的誤差往回傳播。因為我們在求每個參數(shù)的梯度的時候是通過對真值與預測值之間的誤差項求導得到的,對于輸出神經(jīng)元還可以做到,但是我們無法獲取隱藏層的真值,這就造成了隱藏層的神經(jīng)元梯度不可求的尷尬局面。還好領域大牛們想到了這種方式,讓輸出層的誤差往回傳播,計算出底層神經(jīng)元的激活狀態(tài)要為該誤差付出多大的責任,也可以理解成該神經(jīng)元的誤差值,用

          表示,
          表示輸出層神經(jīng)元的誤差。


          逆誤差傳播算法執(zhí)行過程:

          1,先執(zhí)行一次前向傳播,計算出每一層的神經(jīng)元的激活值

          ,直到輸出層為止

          2,對于每一個輸出層神經(jīng)元,采用如下方式計算誤差(實際上在Andrew的資料中省略了很多推到部分,該部分我后面會放上,你們先理解個大概過程)

                             

          3,對于較低層的神經(jīng)元的誤差用如下公式進行表示,

                             


          4,關于不同參數(shù)的梯度

                             


          下面來看下

          項的具體推導過程。


          PS:其實要想更好的理解該推導過程可以參考《Pattern Recognition and Machine Learning》中5.3節(jié)部分關于估計誤差函數(shù)梯度的內(nèi)容,由于里面采用的符號系統(tǒng)跟Andrew的是相反的,我就沒有放上來,借用了一個簡易的推導過程。



          摘自《Deep Learning 教程中文版》--鄧侃老師主導,各路英雄好漢共同翻譯


          下面來看一個利用神經(jīng)網(wǎng)絡擬合不同函數(shù)(Linear Regression)的例子,你可以在《Pattern Recognition and Machine Learning》的5.1節(jié)中找到。4副圖分別對應四個不同的函數(shù),紅色的實線表示利用神經(jīng)網(wǎng)絡擬合的函數(shù),圓點表示原函數(shù)生成的樣本點,虛線表示不同的神經(jīng)元在對應于不同 x 取值的輸出值,幾條虛線經(jīng)過線性添加后得到的就是擬合后的曲線。



          總結:

          1,簡易的神經(jīng)網(wǎng)絡結構并不復雜,但在實際訓練一個神經(jīng)網(wǎng)絡的時候是會遇見很多問題的,比如 選擇線上梯度下降還是Batch梯度下降 ,隱藏層神經(jīng)元個數(shù)的選擇, 是選擇多層神經(jīng)網(wǎng)絡還是單層。這些都需要多多實踐才行。

          2,從理論上來講,神經(jīng)網(wǎng)絡是可以擬合任何函數(shù),但實際上并非如此。就我個人的實際經(jīng)驗來看,對于某些數(shù)據(jù)神經(jīng)網(wǎng)絡是失敗的。

          3,模型不是萬能,還需要做很多功課。

          #梯度信息在訓練 NN 中的使用

          #Batch 梯度上升和線上梯度上升的比較


          理解了該部分的神經(jīng)網(wǎng)絡知識對后面理解深度神經(jīng)網(wǎng)絡會很大幫助,包括其中的優(yōu)化方法,能量模型(Energy-based Model),以及RBM(EBM的一個特例)


          參考文獻:

          《Pattern Recognition and Machine Learning》

          Andrew Ng's Wiki Page http://deeplearning.stanford.edu/wiki/index.php/Neural_Networks

          http://www.cppblog.com/billhsu/archive/2008/08/30/60455.html

          Geoff Hinton's Coursera Lectures  https://d396qusza40orc.cloudfront.net/neuralnets/lecture_slides%2Flec1.pdf




          http://blog.sciencenet.cn/blog-696950-697101.html


          下一篇:奇異值分解(SVD) --- 線性變換幾何意義
          本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
          打開APP,閱讀全文并永久保存 查看更多類似文章
          猜你喜歡
          類似文章
          辨別真假數(shù)據(jù)科學家必備手冊:深度學習45個基礎問題(附答案)
          CS224N課程筆記:神經(jīng)網(wǎng)絡與反向傳播
          神經(jīng)網(wǎng)絡背后的簡單數(shù)學
          Coursera公開課筆記: 斯坦福大學機器學習第九課“神經(jīng)網(wǎng)絡的學習(Neural Networks: Learning)”
          如何理解神經(jīng)網(wǎng)絡中的梯度爆炸?
          超實用總結:AI實踐者需要用到的10個深度學習方法
          更多類似文章 >>
          生活服務
          分享 收藏 導長圖 關注 下載文章
          綁定賬號成功
          后續(xù)可登錄賬號暢享VIP特權!
          如果VIP功能使用有故障,
          可點擊這里聯(lián)系客服!

          聯(lián)系客服