1. 程式人生 > >吳恩達深度學習總結(1)

吳恩達深度學習總結(1)

DeaplearningAI01.weak2

本週主要介紹了神經網路中forward和backward的一般實現和向量實現。一般實現較為簡單,向量實現中存在一些疑點
X \boldsymbol{X} 是一個由訓練集組成的矩陣,每一列代表一個數據,列數為資料的大小
ω

\boldsymbol{\omega} 是訓練引數,大小與 X \boldsymbol{X} 一列的大小一致
b b 為偏差(bias),為一個標量

forward

Z = n p . d o t ( ω

. T ,    X ) + b \boldsymbol{Z} = np.dot(\boldsymbol{\omega}.T,\;\boldsymbol{X}) + b
A = σ ( Z ) \boldsymbol{A} = \sigma(\boldsymbol{Z}) ,其中 σ ( x ) = 1 1 e x \sigma(\boldsymbol{x}) = \frac{1}{1-e^{-\boldsymbol{x}}}
通過程式設計實現為 1 / ( 1 n p . e x p ( X ) ) 1/(1-np.exp(-\boldsymbol{X}))
Cost Function(Loss Function)通過矩陣實現時應該注意Cost Function是將所有的預測誤差相加取平均得到的,不可以直接用矩陣乘法使其變為標量
L = 1 / m n p . s u m ( ( Y n p . l o g ( A ) + ( 1 Y ) n p . l o g ( 1 A ) ) ) L = 1/m*np.sum((-\boldsymbol{Y}*np.log(\boldsymbol{A})+(1-\boldsymbol{Y})*np.log(1-\boldsymbol{A}))) ,其中m為樣本的個數

backward

backward實際上是一個鏈式求導的過程,backward最根本的式子是通過梯度下降法來更新w和b
L A = ( Y A 1 Y 1 A ) A Z = A ( 1 A ) Z ω = X \frac{\partial L}{\partial \boldsymbol{A}} = -(\frac{\boldsymbol{Y}}{\boldsymbol{A}}-\frac{1-\boldsymbol{Y}}{1-\boldsymbol{A}}) \frac{\partial \boldsymbol{A}}{\partial \boldsymbol{\boldsymbol{Z}}} = \boldsymbol{A}(1-\boldsymbol{A}) \frac{\partial \boldsymbol{Z}}{\partial \boldsymbol{\omega}} = \boldsymbol{X}
所以,我們可以表示 d ω d\omega d ω = n p . d o t ( X ,    ( A Y ) . T ) d\omega = np.dot(\boldsymbol{X},\;(\boldsymbol{A} - \boldsymbol{Y}).T) ,這個求解出來為m個樣本訓練出w的變化總和,因此應該除以m,所以為 d ω = 1 / m n p . d o t ( X ,    ( A Y ) . T ) d\omega =1/m* np.dot(\boldsymbol{X},\;(\boldsymbol{A} - \boldsymbol{Y}).T)
同理可求 d b db ,但是由於b為標量,因此需要對求出的m次訓練的b求和,即 d b = 1 / m n p . s u m ( A Y ) db = 1/m*np.sum(\boldsymbol{A}-\boldsymbol{Y}) 。根據這兩個值即可以更新 ω \omega b b