深度学习笔记-第三周

本文介绍了神经网络的基本结构,包括输入层、隐藏层和输出层的表示,以及如何通过向量化避免for循环提高计算效率。讨论了激活函数的作用,如Sigmoid、Tanh和ReLU,并解释了为何使用激活函数。此外,详细阐述了梯度下降法在神经网络中的应用,以及随机初始化参数的重要性。
摘要由CSDN通过智能技术生成

title: 深度学习笔记-第三周
date: 2022-12-14 20:54:30

【3.1 神经网络概况】

x代表输入特征,参数W和b,上标[]表示层数。

在这里插入图片描述


【3.2 神经网络表示】

在这里插入图片描述

将x1,x2,x3竖向堆积起来构建起神经网络的输入层(也可以用a[0]来表示输入特征的数值,a表示“激活”,每一个节点计算后都会将计算结果传递给下一层,作为下一层的输入特征, 即a[0]表示第0层的输入,a[1]表示第1层的输入,直到最后一层a[i]= y ^ \widehat{y} y )。

中间一层称为隐藏层(在训练集中中间节点的真正数值,在训练集中无法看到)。

a[3]是只带一个节点的层为输出层,它负责输出预测值 y ^ \widehat{y} y 值。


【3.3 计算神经网络的输出】

在这里插入图片描述

和logistics回归类似,每个节点进行两步计算,直到遍历完所有节点。

为了不使用for循环,我们通过向量化

在这里插入图片描述

用大写的Z[i]表示z[i]的列堆积(第i层)

用大写的W[i]表示w[i]T的行堆积(第i层)

用b[i]表示b[i]的列堆积(第i层)

用a[i]表示a[i]的列堆积(第i层),特别的a[0=] = x


【3.4 多个例子的向量化】

在这里插入图片描述

for循环表示遍历整个训练集。将其向量化后:

堆积的横向表示不同训练样本,竖向表示同一训练样本的不同指标

用A[i]表示a[i]的列堆积,特别的A[0=] = X

用Z[i]表示Z[i]的列堆积


【3.5 向量化实现的解释】

我们以2层神经网络为例。

X为x的横向堆叠:

在这里插入图片描述

Z是z的横向堆叠:

在这里插入图片描述

通过对x和a的堆叠(红框),可以除去一个显式的for循环(蓝框)。

在这里插入图片描述


【3.6 激活函数】

要搭建一个神经网络,可以选择在隐藏层和神经网络的输出层用什么样的激活函数(隐藏层的激活函数可以和神经网络的输出层不同)。

一些约定:用g(z)来代表函数(线性和非线性)。

sigmoid激活函数和Tanh激活函数的局限性:他们的值域饱和并且非常深的神经网络使用Sigmoid 和 tanh 激活函数不容易训练。在大型网络深层使用这些非线性激活函数不能接收有用的梯度信息等。

因此ReLu激活函数出现了。

ReLu激活函数图像:

在这里插入图片描述

一些经验法则:如果输出值是0或1,那么Sigmoid很适合作为输出层的激活函数,然后其他所有单元使用ReLu。(如果不确定隐藏层该用哪个,可以使用ReLu作为激活函数


【3.7 为什么使用激活函数】

如果使用只使用线性激活函数或者不使用激活函数,那么无论神经网络有多少层,那么神经网络的输出结果只是把输入线性组合再输出。


【3.8 神经网络的梯度下降法】

以二分类为例:

正向传播:

  • Z[1] = W[1]X + b[1]
  • A[1]= g[1](Z[1])
  • Z[2] = W[2]A[1]+ b[2]
  • A[2]= g[2](Z[2])

反向传播:

  • dZ[2] = A[2] - Y (Y = [y[1], y[2], ……])
  • dW1 = 1/m * dZ [2]* A[2]T
  • db[2] = 1/m* np.sum(dZ[2], axsi = 1, keepdims = True) (np.sum是用来对矩阵的一个维度求和, keepdims防止输出一些奇怪的秩为1的数组)
  • dZ[1] = W[2]TdZ[2] * g[1]'(Z[1])
  • dW[1] = 1/m * dZ[1] XT
  • db[1] = 1/m * np.sum(dZ[1], axsi = 1, keepdims = True)

【3.9 随机初始化】

对于logistics回归,可以将权重初始化为0,但如果将神经网络的各参数数组全部初始化为0,再使用梯度下降法是无效的

解决方案是随机初始化所有参数。

以两层神经网络为例:

在这里插入图片描述

b可以初始化为0。

为什么×0.01而不是100或者1000?

实际上,我们习惯将权重初始化为非常小的随机值,因为如果使用的是tanh或者是sigmoid激活函数,如果权重太大,当计算激活函数时可能会使z的值落在tangh或sigmoid函数的平缓部分,此时梯度的斜率非常小, 梯度下降法会非常慢,所以学习率会很慢。

在这里插入图片描述



  1. 2 ↩︎

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值