訓練神經網路的過程中主要概念 學習筆記

2022-07-18 07:24:09 字數 2154 閱讀 4112

1.定義神經網路的結構和前向傳播的輸出結果

2.定義損失函式以及選擇反向傳播優化的演算法

3.生成會話並在訓練資料上反覆執行反向傳播優化演算法

神經元是構成神經網路的最小單位,神經元結構如下:

乙個神經元有多個輸入和乙個輸出,每個神經元的輸入既可以是其他神經元的輸出也可以是整個神經網路的輸入。

如圖所示的簡單神經元的所有輸出即是所有神經元輸入的加權和,不同輸入的權重就是神經元引數(wi),神經元的優化過程就是優化神經元引數取值的

過程。全連線神經網路相鄰兩層之間任意兩個節點都有連線。

三層全連線神經網路:

其中輸入層從實體提取特徵向量,隱藏層越多,神經網路結構越複雜。深層神經網路即是一類通過多層非線性變換對高複雜性資料建模演算法的合集。

前向傳播就是輸出通過一層層隱藏層的運算最終得到輸出層的過程。

前向傳播過程:

x1和x2為神經網路的輸入,w表示神經元的引數,上標為神經網路的層數,下標為連線節點標號,w的數值就為當前邊上的權重。

因為這個神經網路的輸出為神經元輸入的加權和,所以

a11:

y:

上述的模型就是乙個簡單的線性模型,輸入和輸出滿足線性模型的關係式

wi,b∈r是模型的引數,當輸入只有乙個的時候x和y就形成了乙個二維座標系的一條直線。當有n輸入時,就是乙個n+1維空間的平面。

但是在現實世界中,絕大部分問題是無法線性分割的。如果我們用線性模型的話,輸出訊號將僅僅是乙個簡單的線性函式。

我們需要借助非線性函式幫助我們理解和學習其他複雜型別的資料,這個函式就是啟用函式。

如果將每乙個神經元的輸出通過乙個非線性函式,則整個神經網路的模型也就不再是線性的了。

這裡y到a的過程就是通過啟用函式去線性化。改變主要有兩個,乙個是增加了偏置項(bias),乙個是在原來的線性輸出的基礎上做了乙個非線性變換f。

在有監督的學習中,需要衡量神經網路輸出和所預期的輸出之間的差異大小。這種誤差函式需要能夠反映出當前網路輸出和實際結果之間一種量化之後的不一致程度,也就是說函式值越大,反映出模型**的結果越不準確。這種誤差函式就是損失函式。

神經網路模型的效果及優化的目標是通過損失函式來定義的。

監督學習的思想就是在已知答案的標註資料集上,模型給出的結果要盡量接近真實的答案。通過調整神經網路中的引數

對訓練資料進行擬合,使得模型對未知的樣本提供**能力。

反向傳播演算法實現了乙個迭代的過程,每次迭代開始的時候,先取一部分訓練資料,通過前向傳播演算法

得到神經網路的**結果。因為訓練資料都有正確的答案,所以可以計算出**結果和正確答案之間的差距。

基於這個差距,反向傳播演算法會相應的更新神經網路引數的取值,使得和真實答案更加接近。

反向傳播演算法流程圖:

通俗的理解就是我們玩過的彈彈堂。

我們通過調整角度和力度來發射炮彈去擊中目標,假設沒有風力其他外界因素的影響。

我們第一次發射之後打偏了打在了目標前方,在第二次的時候我們就會適當加大力度、向下調整角度,反覆幾次之後我們就會掌握到合適的力度和角度。

階梯下降演算法主要用於優化單個引數的取值,反向傳播演算法則是給出了乙個高效的方式在所有的引數上使用梯度下降演算法。

神經網路的訓練

既然我們希望網路的輸出盡可能的接近真正想要 的值。那麼就可以通過比較當前網路的 值和我們真正想要的目標值,再根據兩者的差異情況來更新每一層的權重矩陣 比如,如果網路的 值高了,就調整權重讓它 低一些,不斷調整,直到能夠 出目標值 因此就需要先定義 如何比較 值和目標值的差異 這便是損失函式或目標函式...

卷積神經網路計算過程中的維度變化

最近在學習pytorch,在閱讀pytorch教程的時候,發現有乙個簡單的卷積神經網路,之前搞明白過這個過程,時間太久,都忘的差不多了,正好寫個筆記記錄總結一下 如下 usr bin env python3 coding utf 8 author macan time 2019 10 29 19 5...

卷積神經網路的訓練

考慮步長為1 輸入影象的深度為1 filter的個數為1的最簡單的情況。假設 我們輸入的大小為3x3 filter大小為2x2,按步長為1來進行卷積,可知我們將得到的是乙個2x2的feature map。如下圖 後面的步驟一定要結合圖看才容易懂一點 在上圖中 通過推導,我們不難發現,計算 對應成卷積...