對於人臉識別等應用,神經網路的第一層從原始中提取人臉的輪廓和邊緣,每個神經元學習到不同邊緣的資訊;網路的第二層將第一層學得的邊緣資訊組合起來,形**臉的一些區域性的特徵,例如眼睛、嘴巴等;後面的幾層逐步將上一層的特徵組合起來,形**臉的模樣。隨著神經網路層數的增加,特徵也從原來的邊緣逐步擴充套件為人臉的整體,由整體到區域性,由簡單到複雜。層數越多,那麼模型學習的效果也就越精確。
通過例子可以看到,隨著神經網路的深度加深,模型能學習到更加複雜的問題,功能也更加強大。
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]我們將上式簡單的用通用公式表達出來,x = a^x=a[0]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]
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]1.4.2.2 反向傳播a^=g^(z^)a[l]=g[l](z[l])
輸入a^a[l−1], 輸出a^a[l]
因為涉及到的層數較多,所以我們通過乙個圖來表示反向的過程
單個樣本的反向傳播:
dz^=\frac}\frac}}=da^*g^(z^)dz[l]=da[l]djdz[l]da[l]=da[l]∗g[l]′(z[l])多個樣本的反向傳播dw^=\frac}\frac}}=dz^\cdot a^dw[l]=dz[l]djdw[l]dz[l]=dz[l]⋅a[l−1]
db^=\frac}\frac}}=dz^db[l]=dz[l]djdb[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])1.4.3.1 引數dw^=\fracdz^\cdot }^dw[l]=m1dz[l]⋅a[l−1]t
db^=\fracnp.sum(dz^,axis=1)db[l]=m1np.sum(dz[l],axis=1)
da^=w^\cdot dz^da[l]=w[l+1]t⋅dz[l+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 多維...