深度学习之 神经网络算法原理

什么是神经网络算法?

初中映射

初中的时候 y = f(x) 老师进过 映射 。

在这里插入图片描述

通过 若干值 x y 值对 我们可以求出 y = x^2 这个公式。

神经网络 求映射?

如下典型的神经网络也是如此 就是找 映射关系:
在这里插入图片描述
1,左边蓝色的圆圈叫“输入层”,中间橙色的不管有多少层都叫“隐藏层”,右边绿色的是“输出层”。
2,每个圆圈,都代表一个神经元,也叫节点(Node)。
3,输出层可以有多个节点,多节点输出常常用于分类问题。
4,理论证明,任何多层网络可以用三层网络近似地表示。
5,一般凭经验来确定隐藏层到底应该有多少个节点,在测试的过程中也可以不断调整节点数以取得最佳效果

变得稍微复杂一点 :

输入层到 隐藏层:
y = f(x)

隐藏层 到 输出层:

z = f(y)

经过了 两层经典的映射 。 证明 任何复杂的 映射关系 都可以通过 一定的数学公式求出 。所以神经网络就是求映射 x—> y —> z

求解参数

大部分情况 我们只有 输入 和输出 中间这些 f(x) 函数中的 参数 怎么求解呢?

从人工神经网络诞生的60年代,人们就一直在不断尝试各种方法来解决这个问题。直到80年代,误差反向传播算法(BP算法)的提出,才提供了真正有效的解决方案,使神经网络的研究绝处逢生

前向传播(Forward Propagation): 从输入层到隐藏层 在到输出层 。
BP(Back Propagation Neural Network)算法是一种计算偏导数的有效方法,它的基本原理是:利用前向传播最后输出的结果来计算误差的偏导数,再用这个偏导数和前面的隐藏层进行加权求和,如此一层一层的向后传下去,直到输入层(不计算输入层),最后利用每个节点求出的偏导数来更新权重。

说白了 就是先给参数一个值 试着计算一下 最后的结果值 偏大了 就将参数改小 反之 改大。 就是不断的修正 这些参数。

为了便于理解,后面我一律用“残差(error term)”这个词来表示误差的偏导数。

输出层→隐藏层:残差 = -(输出值-样本值) * 激活函数的导数
隐藏层→隐藏层:残差 = (右层每个节点的残差加权求和)* 激活函数的导数

只想看一个大概 基本上可以不用看后面的了。

图解求参

如果用Sigmoid(logsig)作激活函数,那么:Sigmoid导数 = Sigmoid*(1-Sigmoid)

下图中 x1 x2 表示输入 值 样本值 表示 输出值
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这里介绍的是计算完一条记录,就马上更新权重,以后每计算完一条都即时更新权重叫 随机梯度下降。实际上批量更新的效果会更好,方法是在不更新权重的情况下,把记录集的每条记录都算过一遍,把要更新的增值全部累加起来求平均值,然后利用这个平均值来更新一次权重,然后利用更新后的权重进行下一轮的计算,这种方法叫批量梯度下降(Batch Gradient Descent)

参考文献

https://www.cnblogs.com/cxhzy/p/10891137.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值