热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

吴恩达深度学习课程笔记:第一部分第三周——浅层神经网络详解

浅层神经网络解析:本文详细探讨了两层神经网络(即一个输入层、一个隐藏层和一个输出层)的结构与工作原理。通过吴恩达教授的课程,读者将深入了解浅层神经网络的基本概念、参数初始化方法以及前向传播和反向传播的具体实现步骤。此外,文章还介绍了如何利用这些基础知识解决实际问题,并提供了丰富的实例和代码示例。

浅层神经网络:

一、浅层神经网络的表示

本文中的浅层神经网络指的是 two layer nn 即 one input layer + one hidden layer + one output layer。通常计算神经网络的层数不包括 input layer 。
这里写图片描述
notation:
上标 [l]:代表第l层,Input layer 为[0]
下标i:表示第i个unit,也可以看做第i行


二、神经网络的计算

每个unit都需要进行z和a的计算:
这里写图片描述
各参数矩阵的维度:
W[1]: (4,3), b[1]: (4,1)
W[2]: (1,4), b[2]: (1,1)
即:W[I]:(nl,n(l-1)), b[l]:(nl,1), nl表示第l层的unit的个数
注意:这里的 W[l] 表示的是已经对列堆起来的 W[l] 的转置


三、前向传播的向量化实现

single example的向量化:
这里写图片描述
multiple example的向量化:
X:(nx,m),m个example,每个用一列表示
上标(i):代表第i个example,从1开始
这里写图片描述

multiple example的向量化的理解:
主要就是弄清楚矩阵相乘的过程,就是重复进行single example的计算,然后把它们的结果列堆叠成矩阵。A/Z矩阵的每一行表示同一个unit的不同example的结果,每一列表示同一个example的不同unit的结果。
这里写图片描述


四、激活函数(activation function)

四种activation function:sigmoid; tanh; ReLU; Leaky ReLU
这里写图片描述
特点及如何选择:
sigmoid:求导=a(1-a),当|z|比较大的时候,梯度会很小,梯度下降慢。二分类的output layer 一般使用sigmoid
tanh:求导=1-a^2,当|z|比较大的时候,梯度会很小,梯度下降慢。正常比sigmoid好,因为取值为(-1,1)起到归一化的作用均值为0。
ReLU:当z>0时,梯度始终为1,梯度下降块。z<0时,梯度为0,实际使用中影响不大。最常用,首选。
Leaky ReLU:相比ReLU修正了z<0时,梯度为0的缺点。

正常选ReLU。如果不知道该选那个,可以一个一个试,在交叉验证集中评估,找出结果最好的那一个。


为什么要使用激活函数:
如果不使用激活函数或者使用线性激活函数。两个线性函数的组合仍然是线性函数,隐藏神经单元就不起作用了。有时候output layer不使用激活函数,如房价的预测。
**这里写图片描述**


五、神经网络的梯度下降

计算公式:左边为single example,右边为multiple example
这里写图片描述


六、随机初始化

如果在初始时,W,b都设置一样,那么WX+b都一样,通过梯度下降去进行计算dw,得到梯度大小也相等,不管进行多少次迭代,每个隐藏层单元仍然是对称的。无论设置多少个隐藏单元,其最终的影响都是相同的,那么设置多个隐藏神经元只是重复计算,没有作用。

随机初始化代码:

W[1] = np.random.rand((4,3))* 0.01
b[1] = np.zero((4,1))

W的值乘以0.01(不是固定的)是为了使W初始化为较小的值,这是因为如果使用sigmoid或者tanh作为激活函数时,W小则Z=WX+b也比较小,处在激活函数0的附近梯度较大,算法的更新速度比较快。如果W太大,得到的梯度较小,更新会变慢。ReLU和Leaky ReLU作为激活函数时,因为在大于0的时候,梯度均为1,所以可以不用乘0.01。


推荐阅读
  • 基于TensorFlow的鸢尾花数据集神经网络模型深度解析
    基于TensorFlow的鸢尾花数据集神经网络模型深度解析 ... [详细]
  • 本文探讨了使用JavaScript实现多种经典排序算法的高效方法,包括冒泡排序、选择排序、插入排序、归并排序和快速排序。为了确保代码的结构清晰和可维护性,我们首先定义了一个 `ArrayList` 类,该类中包含了待排序的数组声明。通过这种方式,我们不仅能够更好地组织代码,还能提高算法的执行效率和可读性。此外,我们还对每种排序算法进行了详细的性能分析和优化建议,以帮助开发者在实际应用中选择最合适的排序方法。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • BZOJ4240 Gym 102082G:贪心算法与树状数组的综合应用
    BZOJ4240 Gym 102082G 题目 "有趣的家庭菜园" 结合了贪心算法和树状数组的应用,旨在解决在有限时间和内存限制下高效处理复杂数据结构的问题。通过巧妙地运用贪心策略和树状数组,该题目能够在 10 秒的时间限制和 256MB 的内存限制内,有效处理大量输入数据,实现高性能的解决方案。提交次数为 756 次,成功解决次数为 349 次,体现了该题目的挑战性和实际应用价值。 ... [详细]
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
  • 在Matlab中,我尝试构建了一个神经网络模型,用于预测函数 y = x^2。为此,我设计并实现了一个拟合神经网络,并对其进行了详细的仿真和验证。通过调整网络结构和参数,成功实现了对目标函数的准确估计。此外,还对模型的性能进行了全面评估,确保其在不同输入条件下的稳定性和可靠性。 ... [详细]
  • 深入解析Spring Boot启动过程中Netty异步架构的工作原理与应用
    深入解析Spring Boot启动过程中Netty异步架构的工作原理与应用 ... [详细]
  • 本文详细探讨了OpenCV中人脸检测算法的实现原理与代码结构。通过分析核心函数和关键步骤,揭示了OpenCV如何高效地进行人脸检测。文章不仅提供了代码示例,还深入解释了算法背后的数学模型和优化技巧,为开发者提供了全面的理解和实用的参考。 ... [详细]
  • 探讨两种常数卷积的结果与一种常见的洗牌算法错误及其影响
    在编程中,随机打乱数组元素的顺序(即“洗牌”)是一个常见的需求。标准的洗牌算法是Fisher-Yates shuffle,但许多开发者在实现时容易犯错,导致结果不均匀。本文探讨了两种常数卷积的结果,并分析了一种常见的洗牌算法错误及其对随机性的影响。通过详细的实验和理论分析,我们揭示了这些错误的具体表现和潜在危害,为开发者提供改进的建议。 ... [详细]
  • 理工科男女不容错过的神奇资源网站
    十一长假即将结束,你的假期学习计划进展如何?无论你是在家中、思念家乡,还是身处异国他乡,理工科学生都不容错过一些神奇的资源网站。这些网站提供了丰富的学术资料、实验数据和技术文档,能够帮助你在假期中高效学习和提升专业技能。 ... [详细]
  • 视觉图像的生成机制与英文术语解析
    近期,Google Brain、牛津大学和清华大学等多家研究机构相继发布了关于多层感知机(MLP)在视觉图像分类中的应用成果。这些研究深入探讨了MLP在视觉任务中的工作机制,并解析了相关技术术语,为理解视觉图像生成提供了新的视角和方法。 ... [详细]
  • 表面缺陷检测数据集综述及GitHub开源项目推荐
    本文综述了表面缺陷检测领域的数据集,并推荐了多个GitHub上的开源项目。通过对现有文献和数据集的系统整理,为研究人员提供了全面的资源参考,有助于推动该领域的发展和技术进步。 ... [详细]
  • 不用蘑菇,不拾金币,我通过强化学习成功通关29关马里奥,创造全新纪录
    《超级马里奥兄弟》由任天堂于1985年首次发布,是一款经典的横版过关游戏,至今已在多个平台上售出超过5亿套。该游戏不仅勾起了许多玩家的童年回忆,也成为强化学习领域的热门研究对象。近日,通过先进的强化学习技术,研究人员成功让AI通关了29关,创造了新的纪录。这一成就不仅展示了强化学习在游戏领域的潜力,也为未来的人工智能应用提供了宝贵的经验。 ... [详细]
  • 在本文中,我们将深入探讨斯坦福大学机器学习课程第二部分的核心内容与学习体会。文章不仅涵盖了正则化(Regularization)等关键概念,还结合实际案例分析了这些理论在实践中的应用,帮助读者更好地理解和掌握机器学习的高级技巧。此外,我们还将分享一些学习过程中遇到的挑战及解决方案,为后续学习者提供参考。 ... [详细]
  • 数据科学笔记26:深入解析随机森林分类算法及其在Python和R中的应用
    ### 摘要随机森林是一种在集成学习领域备受推崇的算法,被誉为“集成学习技术的典范”。该方法因其简洁性、易实现性和较低的计算成本而被广泛应用。本文将深入探讨随机森林的工作原理,特别是其在Python和R中的具体应用。随机森林通过结合多个决策树和Bagging技术,有效提高了模型的准确性和鲁棒性。我们将详细解析其核心机制,并通过实际案例展示如何在不同编程环境中高效实现这一强大的分类算法。 ... [详细]
author-avatar
小东东5201314
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有