漸進學習前饋神經網路

騰訊DeepOcean發表於2019-04-01

從人工智慧這個詞流行起來以後,神經網路這個詞也變得家喻戶曉了,很多人想要去學習一下神經網路方面的知識,但看到神經網路深奧的概念以及複雜的公式時,也只能放棄。不要驚慌,這篇文章會由淺入深再加例子的形式幫助你理解前饋神經網路,希望對你有幫助。

為了幫助你更好的理解前饋神經網路,我會分三部分進行講解:

  • 第一部分使用例子幫你建立基礎概念
  • 第二部分在概念的基礎上融合數學
  • 第三部分使用數學說明前饋神經網路

一 先從小明說起

小明的面前有五堆文件,每一堆都有1000份,其中的四堆已經按照,英語、法語、德語、義大利語分類好,小明現在要做的事情就是將第五堆未分類的文件進行分類。

小明並沒有學習過那麼多的語言,所以他現在看到第五堆文件就頭大。

漸進學習前饋神經網路

小明現在已經沒有時間去學習這四種語言了,但是小明想到了一個辦法,他先看了一遍已經分好類的四種語言都有哪些特徵,例如英語中的哪些字元是其他語言中沒有的,義大利語的字母一般都是什麼樣子的。

當小明學習完了這些語言的特徵以後,小明就將左側未分類的文件一個個的看一遍,當他讀取第一篇文件的時候發現了Ä字元時,就會將這篇文件放在德語類別中,當看到文件中有很多的“th”二元字元對的時候,就會將此篇文件放在英語類別中。

就這樣小明經過不斷的讀文件->看特徵->按照特徵分類,最後他將所有的文件都進行了正確的分類。

但是有意思的是小明還是不懂這幾種語言,但是他還是能夠正確的進行分類。

二 使用數學解析小明

上面的小明並不懂語言,但是卻做到了正確的分類,接下來我們使用數學解析一下這個事情。

小明找到特徵

上面的小明並不是直接將未分類的1000分文件進行分類的,他是先學習了一遍已分好類的文件中都有哪些特徵,如果使用X代表每一個文件中的二元字元對出現的頻率,使用Y代表最終的分類,那麼數學公式可以這樣表示:

Y英語 = Xaa * Waa英語 + Xab * Wab英語 + Xac * Wac英語 + ...... + Xzz * Wzz英語

Y法語 = Xaa * Waa法語 + Xab * Wab法語 + Xac * Wac法語 + ...... + Xzz * Wzz法語

Y德語 = Xaa * Waa德語 + Xab * Wab德語 + Xac * Wac德語 + ...... + Xzz * Wzz德語

Y義大利語 = Xaa * Waa義大利語 + Xab * Wab義大利語 + Xac * Wac義大利語 + ...... + Xzz * Wzz義大利語

注:W代表權重

對於上面的公式,小明已經知道了X與Y,他學習特徵的目的就是獲取每種語言最優的權重,也就是學習W。

小明進行分類

當小明在自己的腦子裡面學習到了W這個體系以後,他就開始對未分類的文件進行分類了,也就是不斷的輸入X,最後小明使用上面的公式,輸入X和W得到了文件的最終分類。

其中W指的就是我們通俗理解上的模型。小明整個分類的過程就是先使用已知的X與Y求出W,然後再使用已知的X與W求出Y。

對於上面的這種訓練模式我們叫做有監督學習。

三 公式下的前饋神經網路

針對於上面文件分類來說,輸入就是一些待分類的文件,輸出就是文件最終所屬的類別,而小明就是作為黑盒存在,現在讓我們將這個黑盒開啟。

漸進學習前饋神經網路

圖中就是前饋神經網路的一個示意了,為什麼叫前饋呢?這是因為每一個神經元都只與前一層的神經元相連線。

上面的輸入層就是我們待分類的文件,輸出層就是文件的類別,中間的三個隱藏層就是各種特徵的計算。

讓我們先拿一個輸入神經元與第一層隱藏層中的一個神經元出來:

漸進學習前饋神經網路

輸入層的每一個神經元都是一個二元字元對的頻率,在得到第一個隱藏層時將二元字元對頻率乘了一個權重,並且新增了一個偏置項b,公式表示:

NNMLP1(x) = x*W1 + b1

為了我們計算的便捷性,需要在神經網路中使用一些非線性函式處理隱藏層資料,以往經常使用的非線性函式是sigmoid函式,但是研究人員發現在最後結果的表現上,ReLU(修正線性單元)函式是優於sigmoid函式的。

漸進學習前饋神經網路

上圖就是ReLU函式的影像。

那麼上面的公式就會是:

NNMLP1(x) = Re1(x*W1 + b1)

那麼最後我們將一層推廣到最終結果時:

NNMLP3(x) = P

h1 = Re1(x*W1 + b1)

h2 = Re2(h1*W2 + b2)

h3 = Re3(h2*W3 + b3)

P = h3 * W3

為了方便檢視上面的公式我將每一層就單獨例舉了出來。

在上面的公式中我們可以看到最後的P只是使用h3 * W3,我們將偏置向量強制為0.

最終我們得到的就是一個關於文件分類的概率。

值得注意的是,X輸入是一個向量,W是一個向量矩陣,最後得到的P也是一個向量。

總結

上面我們通過小明的例子,解釋了一下什麼是前饋神經網路,以及其公式的表示,對於神經網路我們可以使用一些已經標記好的資料,訓練得到一個合適的模型也就是W,然後我們就可以將這個模型應用在未知的資料中去。

實際上在應用前饋神經網路的時候,我們需要結合自己的訴求來界定隱藏層的層數以及偏置項,而為了防止過擬合情況的發生,我們在訓練的時候也會使用正則化或者丟棄法的方式。

歡迎關注"騰訊DeepOcean"微信公眾號,每週為你推送前端、人工智慧、SEO/ASO等領域相關的原創優質技術文章:

看小編這麼辛苦,關注一個唄:)

漸進學習前饋神經網路

相關文章