zoukankan      html  css  js  c++  java
  • 神经网络的前向后向及更新

    前向目的:得到输出值 \small y_{}^{*}(即\small a^{L}

    后向目的:得到dz,dw,db(此处都是指dL/d...,损失函数对对应项的微分),进而得到梯度更新。(其中由于链式法则,dz,dw,db中都有y项)

    权重w(a,b): 维度a指本层的神经元个数,维度b指输入层X特征向量包含元素个数。

    a=\small \varphi(z), a:active function.

    程序实现时:每一个样本可以使用矩阵运算代替for循环,但是样本间的迭代还是需要for循环。

    当|z|很大时,激活函数的梯度很小,因此在这个区域内,梯度下降算法运行得很慢。实际应用中应尽量避免z落在这个区域,应使|z|尽可能限定在零值附近,从而提高梯度下降算法运算速度。因此ReLU激活函数出现了(缺点:Z<0,梯度为0),以及改进的Leaky ReLU函数。(因此在应用sigmoid函数或tanh函数,权重初始化时乘上一个小数如0.01)

    如果是分类问题:一般隐藏层采用ReLU激活函数或Leaky ReLU函数,输出层采用sigmoid函数。

    如果激活函数采用线型激活函数:则最终输出值依然是变量X的线性组合,神经网络与直接使用线性模型就没什么不同了。因此隐藏层必须是非线性的。(回归预测y连续值问题:输出层可以使用线性激活函数)

    权重必须随机初始化:如果全部初始化为0,则每个神经元的权重完全相同,隐藏层设置多个神经元失去意义。

    但是参数b可以全部初始化为0.

  • 相关阅读:
    查看网站上保存的密码
    前端图片预览
    Amaze UI的一点总结
    简单实现图片验证码
    获取网页数据的例子
    谈谈网页中的ajax
    网页小技巧-360doc个人图书馆复制文字
    Js中的4个事件
    网页页面蒙版实现
    Spring+SprinMVC配置学习总结
  • 原文地址:https://www.cnblogs.com/Henry-ZHAO/p/12725341.html
Copyright © 2011-2022 走看看