深度学习笔记(吴恩达)——第3讲 浅层神经网络

3.1 为什么需要非线性激活函数?

事实证明:要让你的神经网络能够计算出有趣的函数,你必须使用非线性激活函数,证明如下:
  • 这是神经网络正向传播的方程,现在我们去掉函数𝑔,然后令𝑎[1] = 𝑧[1],或者我们也可以令𝑔(𝑧) = 𝑧,这个有时被叫做线性激活函数(更学术点的名字是恒等激励函数,因为它们就是把输入值输出)。为了说明问题我们把𝑎[2] = 𝑧[2],那么这个模型的输出𝑦或仅仅只是输入特征𝑥的线性组合。如果我们改变前面的式子:
    在这里插入图片描述
    所以,可以看出来,如果是用线性激活函数,那么神经网络只是把输入线性组合再输出。那么,无论你的神经网络有多少层一直在做的只是计算线性函数,所以不如直接去掉全部隐藏层。

3.2 四种激活函数的导数

在神经网络中使用反向传播的时候,需要计算激活函数的斜率或者导数。

1)sigmoid

在这里插入图片描述
倒数:在这里插入图片描述

2) tanh

在这里插入图片描述
倒数:在这里插入图片描述

3) ReLU

在这里插入图片描述
导数:在这里插入图片描述

4) Leaky ReLU

在这里插入图片描述
倒数:在这里插入图片描述

3.3 神经网络的梯度下降

1) 参数初始化问题

训练参数需要做梯度下降,在训练神经网络的时候,参数需要随机初始化,而不是初始化成全0。

  • 如果你要初始化成 0,由于所有的隐含单元都是对称的,无论你运行梯度下降多久,他们一直计算同样的函数。
  • 随机初始化的话
    • 𝑊[1] : 设 为np.random.randn(2,2)(生成高斯分布),通常再乘上一个小的数,比如 0.01,这样把它初始化为很小的随机数。
    • 𝑏:没有对称的问题,所以可以把 𝑏 初始化为 0
    • 相似的,对于𝑊[2]你可以随机初始化,𝑏[2]可以初始化为 0。
      在这里插入图片描述
      为什么有0.01?
      因为如果你用 tanh 或者 sigmoid 激活函数,或者说只在输出层有 一个 Sigmoid,如果数值波动太大,当计算激活值 z 时因为如果你用 tanh 或者 sigmoid 激活函数,或者说只在输出层有 一个 Sigmoid,如 果( 数值 )波 动太大 ,当 你计算激活值时 𝑧 = Wx + b, a=𝜎(𝑧) ,如果W很大,z就会很大,根据Sigmoid图像可知,z的某些a值只会停在两端平台的地方,这就意味着梯度下降会横慢,学习就很慢。

以单个训练样本的浅层神经网络为例

2)前向传播推导:

其中我们先计算𝑧,然后a,然后损失函数𝐿。过程如下图:
在这里插入图片描述

3) 反向传播推导:

反向传播其实就是做最优化,根据前向传播得到的loss值反向计算,根据参数对最终的loss值得影响进而更新参数值。若参数值增大,使最终loss值变大,我们应该减小该参数值大小;若参数值减小,使最终loss值增大,我们应该继续让改参数值减小。因为我们最终一定是让loss损失值的大小尽可能地小。

  • 向后推算出𝑑𝑎[2],然后推算出𝑑𝑧[2],接着推算出𝑑𝑎[1],然后推算出𝑑𝑧[1]。我们不需要对𝑥求导,因为𝑥是固定的,再说了我们也不想优化𝑥。
    在这里插入图片描述
  • 下图为主要的推导过程:
    在这里插入图片描述

4) 梯度下降

在这里插入图片描述

吴恩达老师认为反向传播的推导是机器学习领域最难的数学推导之一,矩阵的导数要用链式法则来求,如果这章内容掌握不了也没大的关系,只要有这种直觉就可以了

本讲的编程学习连接:https://blog.csdn.net/u013733326/article/details/79702148

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值