人工智慧 深層神經網路

2021-10-05 18:26:58 字數 3122 閱讀 6504

對於人臉識別等應用,神經網路的第一層從原始中提取人臉的輪廓和邊緣,每個神經元學習到不同邊緣的資訊;網路的第二層將第一層學得的邊緣資訊組合起來,形**臉的一些區域性的特徵,例如眼睛、嘴巴等;後面的幾層逐步將上一層的特徵組合起來,形**臉的模樣。隨著神經網路層數的增加,特徵也從原來的邊緣逐步擴充套件為人臉的整體,由整體到區域性,由簡單到複雜。層數越多,那麼模型學習的效果也就越精確。

通過例子可以看到,隨著神經網路的深度加深,模型能學習到更加複雜的問題,功能也更加強大。

1.4.1.1 什麼是深層網路?

使用淺層網路的時候很多分類等問題得不到很好的解決,所以需要深層的網路。

在這裡首先對每層的符號進行乙個確定,我們設定l為第幾層,n為每一層的個數,l=[l1,l2,l3,l4],n=[5,5,3,1]

1.4.2.1 前向傳播

首先還是以單個樣本來進行表示,每層經過線性計算和啟用函式兩步計算

z^ = w^x+b^, a^=g^(z^)z​[1]​​=w​[1]​​x+b​[1]​​,a​[1]​​=g​[1]​​(z​[1]​​), 輸入xx, 輸出a^a​[1]​​

z^ = w^a^+b^, a^=g^(z^)z​[2]​​=w​[2]​​a​[1]​​+b​[2]​​,a​[2]​​=g​[2]​​(z​[2]​​),輸入a^a​[1]​​, 輸出a^a​[2]​​

z^ = w^a^+b^,a^=g^(z^)z​[3]​​=w​[3]​​a​[2]​​+b​[3]​​,a​[3]​​=g​[3]​​(z​[3]​​), 輸入a^a​[2]​​, 輸出a^a​[3]​​

z^ = w^a^+b^,a^=\sigma(z^)z​[4]​​=w​[4]​​a​[3]​​+b​[4]​​,a​[4]​​=σ(z​[4]​​), 輸入a^a​[3]​​, 輸出a^a​[4]​​

我們將上式簡單的用通用公式表達出來,x = a^x=a​[0]​​

z^ = w^a^+b^, a^=g^(z^)z​[l]​​=w​[l]​​a​[l−1]​​+b​[l]​​,a​[l]​​=g​[l]​​(z​[l]​​), 輸入a^a​[l−1]​​, 輸出a^a​[l]​​

z^ = w^a^+b^z​[l]​​=w​[l]​​a​[l−1]​​+b​[l]​​

a^=g^(z^)a​[l]​​=g​[l]​​(z​[l]​​)

輸入a^a​[l−1]​​, 輸出a^a​[l]​​

1.4.2.2 反向傳播

因為涉及到的層數較多,所以我們通過乙個圖來表示反向的過程

單個樣本的反向傳播:

dz^=\frac}\frac}}=da^*g^(z^)dz​[l]​​=​da​[l]​​​​dj​​​dz​[l]​​​​da​[l]​​​​=da​[l]​​∗g​[l]​​​′​​(z​[l]​​)

dw^=\frac}\frac}}=dz^\cdot a^dw​[l]​​=​dz​[l]​​​​dj​​​dw​[l]​​​​dz​[l]​​​​=dz​[l]​​⋅a​[l−1]​​

db^=\frac}\frac}}=dz^db​[l]​​=​dz​[l]​​​​dj​​​db​[l]​​​​dz​[l]​​​​=dz​[l]​​

da^=w^\cdot dz^da​[l−1]​​=w​[l]t​​⋅dz​[l]​​

多個樣本的反向傳播

dz^=da^*g^(z^)dz​[l]​​=da​[l]​​∗g​[l]​​​′​​(z​[l]​​)

dw^=\fracdz^\cdot }^dw​[l]​​=​m​​1​​dz​[l]​​⋅a​[l−1]​​​t​​

db^=\fracnp.sum(dz^,axis=1)db​[l]​​=​m​​1​​np.sum(dz​[l]​​,axis=1)

da^=w^\cdot dz^da​[l]​​=w​[l+1]t​​⋅dz​[l+1]​​

1.4.3.1 引數

引數即是我們在過程中想要模型學習到的資訊(模型自己能計算出來的),例如 w[l]w[l],b[l]b[l]。而超引數(hyper parameters)即為控制引數的輸出值的一些網路資訊(需要人經驗判斷)。超引數的改變會導致最終得到的引數 w[l],b[l] 的改變。

1.4.3.2 超引數

典型的超引數有:

當開發新應用時,預先很難準確知道超引數的最優值應該是什麼。因此,通常需要嘗試很多不同的值。應用深度學習領域是乙個很大程度基於經驗的過程。

1.4.3.3 引數初始化

如果在初始時將兩個隱藏神經元的引數設定為相同的大小,那麼兩個隱藏神經元對輸出單元的影響也是相同的,通過反向梯度下降去進行計算的時候,會得到同樣的梯度大小,所以在經過多次迭代後,兩個隱藏層單位仍然是對稱的。無論設定多少個隱藏單元,其最終的影響都是相同的,那麼多個隱藏神經元就沒有了意義。

在初始化的時候,w 引數要進行隨機初始化,不可以設定為 0。b 因為不存在上述問題,可以設定為 0。

以 2 個輸入,2 個隱藏神經元為例:

w = np.random.rand(2,2)* 0.01

b = np.zeros((2,1))

這裡將 w 的值乘以 0.01(或者其他的常數值)的原因是為了使得權重 w 初始化為較小的值,這是因為使用 sigmoid 函式或者 tanh 函式作為啟用函式時,w 比較小,則 z=wx+b 所得的值趨近於 0,梯度較大,能夠提高演算法的更新速度。而如果 w 設定的太大的話,得到的梯度較小,訓練過程因此會變得很慢。relu 和 leaky relu 作為啟用函式時不存在這種問題,因為在大於 0 的時候,梯度均為 1。

人工智慧和神經網路

人工智慧的發展飛快,這也得益於人工智慧的技術成熟。而人工智慧離不開神經網路,神經網路在人工智慧的發展中也是走過了十分崎嶇的道路,那麼究竟是怎麼一回事呢?我們在這篇文章中給大家介紹一下這個問題。每乙個科學的技術發展程序都是十分相似的,如果我們從歷史來看,就能夠發展一件十分有意思的事情,重大科學的研究往...

人工智慧04 神經網路

這裡我們集中討論具有可調節權值的tlu網路。網路系統通過不斷調節權值,直到其動作計算表現令人滿意來完成學習。tlu網路稱為神經網路是因為它模仿了生物神經元的一些特性。首先介紹如何訓練單個tlu權值,從而使其對某一些訓練集合產生正確的輸出。首先簡要介紹下神經網路。神經網路的每個單元如下 其對應的公式如...

神經網路基礎 人工智慧實踐

tensorflow python中和矩陣有關的乙個模組 nn 神經網路,neural network 階段目標 搭建第乙個神經網路,總結搭建八股。一 基於tensorflow的nn 用張量表示資料,用計算圖搭建神經網路,用會話執行計算圖,優化線上的權重 引數 得到模型。二 張量 tensor 多維...