吴恩达深度学习总结(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

猜你喜欢

转载自blog.csdn.net/qq_33669204/article/details/83039620