吴恩达深度学习总结(1)

DeaplearningAI01.weak2

  • forward
  • backward

本周主要介绍了神经网络中forward和backward的一般实现和向量实现。一般实现较为简单,向量实现中存在一些疑点
X \boldsymbol{X} X 是一个由训练集组成的矩阵,每一列代表一个数据,列数为数据的大小
ω \boldsymbol{\omega} ω 是训练参数,大小与 X \boldsymbol{X} X一列的大小一致
b b b 为偏差(bias),为一个标量

forward

Z = n p . d o t ( ω . T ,    X ) + b \boldsymbol{Z} = np.dot(\boldsymbol{\omega}.T,\;\boldsymbol{X}) + b Z=np.dot(ω.T,X)+b
A = σ ( Z ) \boldsymbol{A} = \sigma(\boldsymbol{Z}) A=σ(Z),其中 σ ( x ) = 1 1 − e − x \sigma(\boldsymbol{x}) = \frac{1}{1-e^{-\boldsymbol{x}}} σ(x)=1ex1
通过编程实现为 1 / ( 1 − n p . e x p ( − X ) ) 1/(1-np.exp(-\boldsymbol{X})) 1/(1np.exp(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}))) L=1/mnp.sum((Ynp.log(A)+(1Y)np.log(1A))),其中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} AL=(AY1A1Y)ZA=A(1A)ωZ=X
所以,我们可以表示 d ω d\omega dω d ω = n p . d o t ( X ,    ( A − Y ) . T ) d\omega = np.dot(\boldsymbol{X},\;(\boldsymbol{A} - \boldsymbol{Y}).T) dω=np.dot(X,(AY).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ω=1/mnp.dot(X,(AY).T)
同理可求 d b db db,但是由于b为标量,因此需要对求出的m次训练的b求和,即 d b = 1 / m ∗ n p . s u m ( A − Y ) db = 1/m*np.sum(\boldsymbol{A}-\boldsymbol{Y}) db=1/mnp.sum(AY)。根据这两个值即可以更新 ω \omega ω b b b

你可能感兴趣的:(吴恩达深度学习)