AI-深度神经网络(前向传播算法和滑动平均模型)以及激活函数实例
408 打赏
AI-深度神经网络(前向传播算法和滑动平均模型)以及激活函数实例 AI-海king 2023-03-22 11:56:13

深度神经网络


神经网络广泛应用于监督学习和强化学习。这些网络基于一组彼此连接的层。
在深度学习中,大多数非线性隐藏层的数量可能很大;大约1000层。
DL模型比普通ML网络产生更好的结果。
我们主要使用梯度下降法来优化网络并最小化损失函数。
Imagenet是数百万数字图像的存储库,可用于将数据集分类为猫和狗等类别。除了静态图像、时间序列和文本分析之外,DL网络越来越多地用于动态图像。
训练数据集是深度学习模型的重要组成部分。此外,反向传播是训练DL模型的主要算法。
DL处理训练具有复杂输入和输出变换的大型神经网络。

深度网络

我们必须决定是否构建分类器,或者是否尝试在数据中找到模式,以及是否应该使用无监督学习。为了从一组未标记的数据中提取模式,使用了受限的玻尔兹曼机器或自动编码器。
选择深度网络时,请考虑以下几点:

  • 对于文本处理、情感分析、解析和名称实体识别,我们使用循环网络或递归神经张量网络或RNTN;递归网络可以用于在字符级运行的任何语言模型。
  • 对于图像识别,可以使用深度信念网络DBN或卷积网络。
  • 对于对象识别,可以使用RNTN或卷积网络。对于语音识别,可以使用递归网络。通常,具有整数线性单元或RELU和多层感知器的深度信念网络是分类的好选择。
  • 对于时间序列分析,始终建议使用递归网络。
    神经网络已经存在了50多年,但直到现在,它们已经上升到了一个突出的位置。原因是他们很难训练;当我们试图用一种叫做反向传播的方法训练它们时,我们遇到了一个叫做消失或爆炸梯度的问题。当这种情况发生时,训练需要很长时间,而准确度则需要退居次要地位。当训练数据集时,我们连续计算成本函数,即一组标记的训练数据的预测输出和实际输出之间的差异。然后调整权重和偏差值,直到获得最小值。训练过程使用梯度,这是成本将随着权重或偏差值的变化而变化的速率。

前向传播算法和滑动平均模型


我们使用我们的几个权重系数矩阵W和偏置向量b对输入值向量x进行一系列线性运算和激活运算。从输入层开始,我们逐层向后计算,直到运算到达输出层,输出结果是一个值。

①滑动平均模型的作用是提高测试值上的健壮性,一个参数变化很大,那势必会影响到测试准确度问题,从他的公式看shadow_var = decay shadow_var + (1 - decay) var_new,decay控制着该shadow变量的更新速度,decay越大,那么很明显其值就会越倾向接近于旧值,而decay越小,那么var_new产生的叠加作用就会越强,其结果就会越倾向于远离旧值,那这样波动就很大,通常认为稳定性就不够好当然就不够健壮了
②通俗的理解就是“让参数有滑动效果,目的是让参数不是一个常数,而是一个可以变的参数,提高模型的稳定性”

代码实例:

激活函数的一般性质
(1) 通常,我们使用梯度下降算法来更新神经网络中的参数,因此激活函数必须是可微的。如果函数是单调递增的,则导数函数必须大于零(便于计算),因此要求激活函数是单调的。
(2) 限制输出值的范围输入数据通过神经元上的激活函数控制输出值。输出值为非线性值。激活函数获得的值决定了神经元是否需要根据极限值激活。换句话说,我们可以通过激活函数来确定我们是否对神经元的输出感兴趣。
(3) 非线性是因为线性模型的表达能力不够(从数据输入到与权重值相加和偏移,这是一个在线性函数中对权重和输入数据进行加权和的过程,例如(
)因此,激活函数的出现也为神经网络模型增加了非线性因素。激活函数具有上述特征,其核心意义在于,没有激活函数的神经网络只是一个线性回归模型,无法表达复杂的数据分布。神经网络中加入了激活函数,这相当于引入了非线性因素,从而解决了线性模型无法解决的问题。
不同激活函数的选择对神经网络的训练和预测有不同程度的影响。接下来,我们将分析神经网络中常用的激活函数及其优缺点。
激活函数与损失函数如下:

  1. def activity_func(a):
  2. # simgoid函数
  3. yp = 1 / (1 + np.exp(-1 * a))
  4. return yp
  5. def dA_dZ(Z):
  6. # 返回simgoid函数的dA/dZ
  7. return np.multiply((1 / (1 + np.exp(-1 * Z))), (1 - (1 / (1 + np.exp(-1 * Z)))))
  8. def loss_func(YP, Y, error):
  9. size = YP.shape[1] # 得到YP的数量
  10. Y_arr = Y.tolist()
  11. YP_arr = YP.tolist()
  12. # 避免后续求dA时出现除0现象
  13. temp = np.where(YP == 1)
  14. for index, item in enumerate(temp[0]):
  15. YP[item, temp[1][index]] = 0.999999999999
  16. dA = -(np.true_divide(Y, YP) + np.true_divide((Y - 1), (1 - YP)))
  17. loss_part1 = np.dot(Y, np.log(YP).T)
  18. loss_part2 = np.dot(1 - Y, np.log(1 - YP).T)
  19. loss = -(loss_part1 + loss_part2)
  20. count = 0
  21. for index, item in enumerate(Y_arr[0]):
  22. if abs(item - YP_arr[0][index]) < error:
  23. count += 1
  24. accuracy = count / size
  25. return dA, float(loss) / size if not np.isnan(float(loss) / size) else 0, accuracy
  26. def relu(z):
  27. return np.multiply(z, z > 0)
  28. def rele_dA_dZ(z):
  29. return z > 0
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
评论
0个
时间排序
内容存在敏感词
    0 条记录 第 0 /
    相关专栏
    打赏作者
    易百纳技术社区
    AI-海king
    您的支持将鼓励我继续创作!
    打赏金额:
    ¥1 易百纳技术社区
    ¥5 易百纳技术社区
    ¥10 易百纳技术社区
    ¥50 易百纳技术社区
    ¥100 易百纳技术社区
    支付方式:
    微信支付
    支付宝支付
    易百纳技术社区 微信支付
    易百纳技术社区
    打赏成功!

    感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

    举报反馈

    举报类型

    • 内容涉黄/赌/毒
    • 内容侵权/抄袭
    • 政治相关
    • 涉嫌广告
    • 侮辱谩骂
    • 其他

    详细说明

    审核成功

    发布时间设置
    发布时间:
    是否关联周任务-专栏模块

    审核失败

    失败原因
    备注
    Loading...
    易百纳技术社区
    确定要删除此文章、专栏、评论吗?
    确定
    取消
    易百纳技术社区
    易百纳技术社区
    在专栏模块发布专栏,可获得其他E友的打赏
    易百纳技术社区
    回答悬赏问答,被题主采纳后即可获得悬赏金
    易百纳技术社区
    在上传资料时,有价值的资料可设置为付费资源
    易百纳技术社区
    达到一定金额,收益即可提现~
    收益也可用来充值ebc,下载资料、兑换礼品更容易
    易百纳技术社区
    活动规则
    • 1.周任务为周期性任务,每周周一00:00刷新,上周完成的任务不会累计到本周,本周需要从头开始任务,当前任务完成后才可以完成下一个任务
    • 2.发布的专栏与资料需要与平台的板块有相关性,禁止注水,专栏/资料任务以审核通过的篇数为准,专栏需为原创文章且首次在社区发布
    • 3.任务完成后,现金奖励直接打款到微信账户;EBC/收益将自动发放到个人账户,可前往“我的钱包”查看;其他奖励请联系客服兑换
    易百纳技术社区
    升级提醒
    升级

    恭喜您的社区称号由 升级为 “社区游民”

    同时为了感谢您对社区的支持,我们将送出xxx礼品一份, 记得领取哦~

    升级提醒
    易百纳技术社区