深度学习入门-基于python的理论与实现-神经网络的学习

目录

  • 1 如何根据数据训练出最优权重参数?
    • 1.1 从数据中学习
      • 1.1.1 数据驱动
      • 1.1.2 训练数据与测试数据
      • 1.1.3 损失函数
      • 1.1.4 均方误差
      • 1.1.5 交叉熵误差
      • 1.1.6 mini-batch学习
      • 1.1.7 mini-batch 版交叉熵误差的实现
      • 1.1.8 设置损失函数的原因
    • 1.2数值微分
      • 1.2.1 导数
      • 1.2.2 数值微分的例子
      • 1.2.3偏导数
    • 1.3 梯度
      • 1.3.1 梯度法
      • 1.3.2 神经网络的梯度
    • 总结:学习算法实现的过程
    • 1.4 两层神经网络
  • 小结

1 如何根据数据训练出最优权重参数?

1.1 从数据中学习

我们知道在神经网络的学习过程中,参数个数是成千上万的,这不可能要求我们自己一个个手动输入,所以这些参数是根据数据设置相应的参数。这就是神经网络的学习。

1.1.1 数据驱动

深度学习入门-基于python的理论与实现-神经网络的学习_第1张图片
深度学习与机器学习的联系
深度学习有时候称为端到端机器学习,端到端是从原始数据获得目标结果。
神经网络的一个优点就是端到端的机器学习,从原始数据中学习,与处理的问题无关,只与数据有关。

1.1.2 训练数据与测试数据

训练数据:称为监督数据
泛化能力:处理测试数据的能力
过拟合:只能处理某一个数据集,而无法处理其他数据集,也就是泛化能力过小

1.1.3 损失函数

损失函数是神经网络中所用的指标,这个指标可以用来寻找最优权重参数。
一般:均方误差,交叉熵误差函数

1.1.4 均方误差

深度学习入门-基于python的理论与实现-神经网络的学习_第2张图片
深度学习入门-基于python的理论与实现-神经网络的学习_第3张图片

1.1.5 交叉熵误差

深度学习入门-基于python的理论与实现-神经网络的学习_第4张图片

因为只有t为1时才计算,所以计算量比均方误差小,同时log是个负数的单调递增函数,趋向于0,所以y越大则E的结果越趋向于0,那么其误差结果就越小。

1.1.6 mini-batch学习

机器学习就是指从全部的训练数据中进行学习,我们求得损失函数也是求他们的和再求平均数。如下图
深度学习入门-基于python的理论与实现-神经网络的学习_第5张图片
深度学习入门-基于python的理论与实现-神经网络的学习_第6张图片

当训练数据量比较大的时候,我们就需要计算很长时间,这时候从训练数据中取出一部分,就是mini-batch学习。

1.1.7 mini-batch 版交叉熵误差的实现

1) 单个数据的mini-batch 实现
深度学习入门-基于python的理论与实现-神经网络的学习_第7张图片
2)多个数据的交叉熵
深度学习入门-基于python的理论与实现-神经网络的学习_第8张图片

1.1.8 设置损失函数的原因

用识别精度作为神经网络学习的指标的时候,识别精度函数的导数可能一直为0或者发生阶跃性变化。所以用损失函数就会发生连续的变化,然后一步步使得训练结果更加精确,使得损失函数更小。
也就是sigmoid 函数。
深度学习入门-基于python的理论与实现-神经网络的学习_第9张图片

1.2数值微分

在介绍梯度函数之前先介绍一下导数。

1.2.1 导数

是瞬时变化的量,利用定义带入数据求得的导数为数值微分
在这里插入图片描述
上面代码的最后一行求得的误差比较小。
深度学习入门-基于python的理论与实现-神经网络的学习_第10张图片

1.2.2 数值微分的例子

这里高等数学中都学过

1.2.3偏导数

讨论有多个变量的函数的导数称为偏导数

1.3 梯度

偏导数汇总而成的函数为梯度。
深度学习入门-基于python的理论与实现-神经网络的学习_第11张图片
重要性质:梯度的值会指向函数值降低最低的地方。
深度学习入门-基于python的理论与实现-神经网络的学习_第12张图片

1.3.1 梯度法

机器学习:在学习时候寻找最优参数
神经网络:寻找最优权重和偏置
最优参数就是使得损失函数最小的参数,使用梯度法

无法保证梯度指向的值是最小值,但是一般是损失函数最小值。
求梯度,找到梯度最小值,然后再求梯度最小值,一直沿着梯度最小值的方向前进,然后损失函数值逐渐减少,精度越来越高,这就是梯度法。
是解决机器学习中最优问题。
深度学习入门-基于python的理论与实现-神经网络的学习_第13张图片
深度学习入门-基于python的理论与实现-神经网络的学习_第14张图片
深度学习入门-基于python的理论与实现-神经网络的学习_第15张图片
深度学习入门-基于python的理论与实现-神经网络的学习_第16张图片
深度学习入门-基于python的理论与实现-神经网络的学习_第17张图片
所以学习率n太大太小都不好,他被称为超参数,一般认为多次设定后取一个合理值。

1.3.2 神经网络的梯度

深度学习入门-基于python的理论与实现-神经网络的学习_第18张图片
深度学习入门-基于python的理论与实现-神经网络的学习_第19张图片

总结:学习算法实现的过程

SGD:随机梯度下降算法
1) mini-batch
2)计算梯度
3)更新参数
4)重复以上步骤

1.4 两层神经网络

深度学习入门-基于python的理论与实现-神经网络的学习_第20张图片
深度学习入门-基于python的理论与实现-神经网络的学习_第21张图片

深度学习入门-基于python的理论与实现-神经网络的学习_第22张图片
深度学习入门-基于python的理论与实现-神经网络的学习_第23张图片
深度学习入门-基于python的理论与实现-神经网络的学习_第24张图片
根据图可以看到随着学习的进行,权重参数的损失函数在不断的减小,神经网络在向最优参数靠近。在学习中!
深度学习入门-基于python的理论与实现-神经网络的学习_第25张图片
实线表示训练数据的识别精度,虚线表示测试数据的识别精度,随着epochs(学习)的进行,1)训练数据和测试数据的识别精度都提高了 2)两条线拟合了
并没有发生过拟合。

小结

本章中介绍了神经网路的学习,神经网路学习的过程就是参数最优化的过程,我们引入了损失函数和梯度,为了介绍梯度,我们又引入了微分,导数,偏导数,后来又介绍了多层神经元学习类,最后得出确实随着神经网路学习,损失函数在不断减小,并且训练数据和测试数据的识别精度提高并重合。

你可能感兴趣的:(深度学习,神经网络,机器学习)