神经网络算法的总体实现过程

训练前的准备

在训练一个神经网络时,第一个要做的事情就是选择一种网络框架,即神经元之间的连接模式

也就是说,我们需要决定我们的网络有多少层以及每层分别有多少个单元。

第一层,即输入层的单元数是我们训练集的特征数量,在我们确定训练集的特征时就需要确定好了。

最后一层,即输出层的单元数是我们训练集的结果的类的数量,当分类数为2时,输出层仅需一个单元即可,此时模型的输出为一个实数;当分类数 K K K大于等于三时,输出层的单元数就需要 K K K个,此时模型的输出为一个向量,并且向量的维数为 R K × 1 \R^{K\times1} RK×1

因此真正要决定的是隐藏层的乘数以及每个中间层的单元数。

训练神经网络需要实现的步骤

  1. 构建一个神经网络,并且随机初始化权重,通常我们把权重初始化为很小的值,接近于零,

  2. 执行向前传播算法,也就是对于该网络的任何一个输入 x ( i ) x^{(i)} x(i),计算出对应的输出 h Θ ( x ( i ) ) h_\Theta(x^{(i)}) hΘ(x(i)),也就是一个输出值y的向量

  3. 通过代码计算出代价函数 J ( Θ ) J(\Theta) J(Θ)

  4. 执行反向传播算法来算出对于每个参数的偏导数项: ∂ ∂ Θ j k ( l ) J ( Θ ) \frac{\partial}{\partial\Theta_{jk}^{(l)}}J(\Theta) Θjk(l)J(Θ)

  5. 使用梯度检测来比较使用反向传播算法与使用数值差分方法得到的偏导数项,确保两种方法得到基本接近的两个值,通过梯度检测我们可以确保我们的反向传播算法得到的结果是正确的

    切记,在这里验证结束后需要将梯度检测关闭掉,因为梯度检测计算速度是非常慢的

  6. 最后,我们可以使用梯度下降算法或者更加高级的优化方法,比如说是LBFGS算法、共轭梯度法与发现传播算法相结合,来最小化关于 θ \theta θ的代价函数 J ( θ ) J(\theta) J(θ)

    反向传播算法计算出这些偏导数项的值,也就是计算出梯度下降的方向,而梯度下降的作用就是沿着这个方向一点一点的下降,一直到我们希望得到的点,如下图所示

    image-20220201221220577

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hydrion-Qlz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值