梯度下降与反向传播

参考:https://blog.csdn.net/honghu110/article/details/55211228

        https://blog.csdn.net/crxk_/article/details/97137789

神经网络
神经网络就是一个”万能的模型+误差修正函数“,每次根据训练得到的结果与预想结果进行误差分析,进而修改权值和阈值,一步一步得到能输出和预想结果一致的模型。

举一个例子:比如某厂商生产一种产品,投放到市场之后得到了消费者的反馈,根据消费者的反馈,厂商对产品进一步升级,优化,从而生产出让消费者更满意的产品。这就是神经网络的核心。

神经网络的本质
机器学习可以看做是数理统计的一个应用,在数理统计中一个常见的任务就是拟合,也就是给定一些样本点,用合适的曲线揭示这些样本点随着自变量的变化关系。

深度学习同样也是为了这个目的,只不过此时,样本点不再限定为(x, y)点对,而可以是由向量、矩阵等等组成的广义点对(X,Y)。而此时,(X,Y)之间的关系也变得十分复杂,不太可能用一个简单函数表示。然而,人们发现可以用多层神经网络来表示这样的关系,而多层神经网络的本质就是一个多层复合的函数。

说白了,深度学习就是弄出来一个超级大的函数,这个函数含有海量的权值参数、偏置参数,再通过一系列复合的复杂运算,得到结果。

时间万物,可以抽象成数学模型,用数字来表示,深度学习网络就是对这些数字进行各种数学运算,计算得到人们期望的结果。

关于损失函数:
在训练阶段,深度神经网络经过前向传播之后,得到的预测值与先前给出真实值之间存在差距。我们可以使用损失函数来体现这种差距。损失函数的作用可以理解为:当前向传播得到的预测值与真实值接近时,取较小值。反之取值增大。并且,损失函数应是以参数(w 权重, b 偏置)为自变量的函数。

训练神经网络,“训练”的含义:
它是指通过输入大量训练数据,使得神经网络中的各参数(w 权重, b 偏置)不断调整“学习”到一个合适的值。使得损失函数最小。

如何训练?
训练的过程就是调整参数使损失函数最小。

* 策略1:随机寻找(不太实用)
最直接粗暴的方法就是,我们尽量多地去试参数,然后从里面选那个让损失函数最小的参数组,最为最后的W。
* 策略2:随机局部搜索
在现有的参数W基础上,随机搜索一下周边的参数,查看有没有比现在更好的W,然后用新的W替换现有的W,不断迭代。
* 策略3:梯度下降
损失函数为凸函数时,找到最陡的方向,逐一小步,然后再找到当前位置最陡的下山方向,再迈一小步…

梯度下降

以线性回归为例,对于假设函数(这里假设的函数就是神经网络):

 

构造损失函数:
 

对损失函数求偏导使其最小化

得到参数

反向传播

反向传播算法是神经网络中最有效的算法,其主要的思想是将网络最后输出的结果计算其误差,并且将误差反向逐级传下去。可以理解为求解梯度的一种方法,前一层的参数需要后一层的参数帮助求解。

例如如图所示神经网络

假设第一个神经元的表达式为 f_1(x) = \omega_0 + \omega_1x, 第二个神经元的表达式为 f_2(y) = \theta_0 + \theta_1y,那么实际上第一个神经元的输出是第二个神经元的输入,也就是第二个表达式中的 y = f_1(x)。对于训练这个模型首先采用前向传播算法(也就是按步骤计算得出输出结果):
对于输入x1 计算:

假设输出结果计算后得到 y'_1
构造代价函数为:

综上,损失函数用梯度下降求解,求解梯度下降需要用到反向传播

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值