这篇台湾大学李宏毅教授的文章应该是关于深度学习入门最浅显易懂的了。
深度学习介绍
先简单的介绍了一下深度学习大致分为三步,建立一组方法-从中选出性能更好的-挑出最佳的。
神经网络
神经网络的神经元构成如下,
neuron
而每一个神经元都可以赋以不同的权重和偏差值,
如下是一个简单的神经网络的结构,sigmoid函数是神经网络中一种常用的激活函数,可以看到,分别用初值乘以权重再加上偏差值代入激活函数就得到下一层的数据,以此类推,
这是一个简单的前馈神经网络
由此我们可以得到一个神经网络的结构如下,分为输入层、输出层和隐藏层,
下面是一个具体示例,
评估方法的优劣
在神经网络的进行过程中,所得到的预测值和所需要的目标值之间往往会有一个差值loss,将其进行比对,所以评估一个方法的优劣,也就是让这个loss尽可能的小。
total loss
寻找最优方法
这里采用的是梯度下降法,不过也会进入局部最优的误区。
梯度下降
Why Deep?
这里可以看出,参数越多,性能越好,
同时还提出一个疑问,为什么一定要更深, 更宽难道不行么,这里做了一个对比,
shallow vs deep
先看结论,
作者认为deep可以带来模块化的好处,
这样模块化可以使得随着层级的深入,神经网络可以将像素元素逐步归纳出一些基本的特征,进而变成纹理,再变成对象。
Tips for training DNN
作者总结了两种在训练过程中的情况,
- 第一是得不到很好的训练结果,那就需要重新选择训练方法;
- 第二是得不到很好的测试结果,往往是由过拟合导致的,这就需要重新定义方法了。
作者总结了五种优化训练方法的手段,
-
Choosing proper loss,选择适当的loss function:这里举例,使用cross entropy要优于square error;
-
mini-batch:每次使用少量数据而不使用全部数据;
网友评论