梯度下降
假设我们有一个函数 J(w),如下图所示
其整体思想是先在函数J(w)上随机选取一个点,然后让其沿着梯度下降的方向进行移动,直到找到函数的最小值,即导数等于0的点。但这样可能会找到函数的局部最小值。如下图
同时小心学习率的设置,当
过大时,我们容易错过局部最小值,当
过小时,又需要较长时间才能收敛,只有当
设置的恰到好处时,他才能快速的收敛到局部最小值。但由于不知道f(x)的具体形式,我们难以将
设置的恰到好处。
神经网络的结构
神经网络由三部分组成,分别是最左边的输入层,隐藏层(实际应用中远远不止一层)和最右边的输出层。层与层之间用线连接在一起,每条连接线都有一个对应的权重值 w,除了输入层,一般来说每个神经元还有对应的偏置 b
输入层和隐藏层
除了输入层的神经元,每个神经元都会有加权求和得到的输入值 z 和将 z 通过激活函数(这里采用Relu()函数)非线性转化后的输出值 a,他们之间的计算公式如下
relu函数的优点
1、相比起Sigmoid和tanh,ReLU在SGD中能够快速收敛。
2.Sigmoid和tanh涉及了很多很expensive的操作(比如指数),ReLU可以更加简单的实现。
3.有效缓解了梯度消失的问题。
4.在没有无监督预训练的时候也能有较好的表现。
5.提供了神经网络的稀疏表达能力
输出层
输出层采用softmax函数
softmax函数用于多分类结构,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类!假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素的softmax值就是:
更形象的如图所示:
损失函数采用了交叉熵损失函数
最后采用随机梯度下降来实现
总结
神经网络的优点:
网络实质上实现了一个从输入到输出的映射功能,而数学理论已证明它具有实现任何复杂非线性映射的功能。这使得它特别适合于求解内部机制复杂的问题。
网络能通过学习带正确答案的实例集自动提取“合理的”求解规则,即具有自学习能力
网络具有一定的推广、概括能力
神经网络的缺点:
对初始权重(学习率)非常敏感,极易收敛于局部极小
容易 过度拟合 和 过度训练
如何选择隐藏层数和神经元个数没有一个科学的指导流程,完全是拍脑袋想出来的