本文是李宏毅机器学习的笔记,这是第五节,介绍了为什么是Deep Learning,以及介绍了反向传播算法。
1. Why Deep Learning
深度学习就是在4中提到的鱼和熊掌可兼得的一种方法。首先回顾一下network的构成。
从下面的实验中,可以看出Thin+Tall的神经网络表现的要更好一些。所以,虽然一层神经网络只要足够宽就可以表示任何函数,但是对比相同参数量的deep structure效果要差很多。
问什么使用deep learning,首先用逻辑电路的例子说明一下,对于表示同样的逻辑表达式,单层网络需要O(
2
d
2^d
2d)个门电路,但是如果是多层结构,只需要O(
d
d
d)个门电路
接下来用一个神经网络的例子进行说明:
从下图中可以看出Deep的结构,表示同样的函数,所用的神经节点明显要少,只需2K 个,但是对于Shallow的结构,就真的需要
2
K
2^K
2K个节点。
Deep networks适用于loss低的且是复杂而且有规律的function
Deep network甚至当
y
=
x
2
y=x^2
y=x2时就比shallow的要好。
2. BackPropagation
首先回顾下梯度下降的流程
对于这个计算梯度的过程,我们使用反向传播算法,反向传播算法是基于链式求导法则的一种方法,所谓链式求导法则就是:
接下来举个例子说明下,反向传播算法的流程,首先定义一个损失函数
L
(
θ
)
L(\theta)
L(θ),
C
n
(
θ
)
C^n(\theta)
Cn(θ)代表预测值与真实值之间的差距函数,N代表输入数据的数量,w代表要求的参数
从下图可以看出求出梯度,需要有两个步骤,一个是前向传播,求出
δ
z
δ
w
\frac{\delta_z}{\delta_w}
δwδz,另一部就是反向传播求出
δ
C
δ
z
\frac{\delta_C}{\delta_z}
δzδC。
前向传播的值就是与之相连的input节点的值。
反向传播的计算如下