目录
1 如何根据数据训练出最优权重参数?
1.1 从数据中学习
我们知道在神经网络的学习过程中,参数个数是成千上万的,这不可能要求我们自己一个个手动输入,所以这些参数是根据数据设置相应的参数。这就是神经网络的学习。
1.1.1 数据驱动
深度学习与机器学习的联系
深度学习有时候称为端到端机器学习,端到端是从原始数据获得目标结果。
神经网络的一个优点就是端到端的机器学习,从原始数据中学习,与处理的问题无关,只与数据有关。
1.1.2 训练数据与测试数据
训练数据:称为监督数据
泛化能力:处理测试数据的能力
过拟合:只能处理某一个数据集,而无法处理其他数据集,也就是泛化能力过小
1.1.3 损失函数
损失函数是神经网络中所用的指标,这个指标可以用来寻找最优权重参数。
一般:均方误差,交叉熵误差函数
1.1.4 均方误差
1.1.5 交叉熵误差
因为只有t为1时才计算,所以计算量比均方误差小,同时log是个负数的单调递增函数,趋向于0,所以y越大则E的结果越趋向于0,那么其误差结果就越小。
1.1.6 mini-batch学习
机器学习就是指从全部的训练数据中进行学习,我们求得损失函数也是求他们的和再求平均数。如下图
当训练数据量比较大的时候,我们就需要计算很长时间,这时候从训练数据中取出一部分,就是mini-batch学习。
1.1.7 mini-batch 版交叉熵误差的实现
1) 单个数据的mini-batch 实现
2)多个数据的交叉熵
1.1.8 设置损失函数的原因
用识别精度作为神经网络学习的指标的时候,识别精度函数的导数可能一直为0或者发生阶跃性变化。所以用损失函数就会发生连续的变化,然后一步步使得训练结果更加精确,使得损失函数更小。
也就是sigmoid 函数。
1.2数值微分
在介绍梯度函数之前先介绍一下导数。
1.2.1 导数
是瞬时变化的量,利用定义带入数据求得的导数为数值微分
上面代码的最后一行求得的误差比较小。
1.2.2 数值微分的例子
这里高等数学中都学过
1.2.3偏导数
讨论有多个变量的函数的导数称为偏导数
1.3 梯度
偏导数汇总而成的函数为梯度。
重要性质:梯度的值会指向函数值降低最低的地方。
1.3.1 梯度法
机器学习:在学习时候寻找最优参数
神经网络:寻找最优权重和偏置
最优参数就是使得损失函数最小的参数,使用梯度法
无法保证梯度指向的值是最小值,但是一般是损失函数最小值。
求梯度,找到梯度最小值,然后再求梯度最小值,一直沿着梯度最小值的方向前进,然后损失函数值逐渐减少,精度越来越高,这就是梯度法。
是解决机器学习中最优问题。
所以学习率n太大太小都不好,他被称为超参数,一般认为多次设定后取一个合理值。
1.3.2 神经网络的梯度
总结:学习算法实现的过程
SGD:随机梯度下降算法
1) mini-batch
2)计算梯度
3)更新参数
4)重复以上步骤
1.4 两层神经网络
根据图可以看到随着学习的进行,权重参数的损失函数在不断的减小,神经网络在向最优参数靠近。在学习中!
实线表示训练数据的识别精度,虚线表示测试数据的识别精度,随着epochs(学习)的进行,1)训练数据和测试数据的识别精度都提高了 2)两条线拟合了
并没有发生过拟合。
小结
本章中介绍了神经网路的学习,神经网路学习的过程就是参数最优化的过程,我们引入了损失函数和梯度,为了介绍梯度,我们又引入了微分,导数,偏导数,后来又介绍了多层神经元学习类,最后得出确实随着神经网路学习,损失函数在不断减小,并且训练数据和测试数据的识别精度提高并重合。