神经网络和深度学习第三周 浅层神经网络

3.1 神经网络概览
方括号[1] [2]表示不同的层,x(i)表示单个训练样本。
这周讲一层隐藏层的神经网络。

3.2 神经网络表示
隐藏层的值在训练集中是无法看到的。输入层是第零层,这个图是有两层,第一层隐藏层,第二层输出层。
在这里插入图片描述

3.3 计算神经网络的输出
在这里插入图片描述
在这里插入图片描述
关注一下矩阵的大小
在这里插入图片描述
前两个式子是第一层,后两个式子计算第二层,只需要这四行代码就可以预测结果了。

3.4 多个例子中的向量化
之前演示的是对一个训练样本,现在看对所有训练集的情况。
在这里插入图片描述
用向量化的方法去掉for循环:向量化就是把一个个元素放到矩阵里面以列向量的形式横向堆叠,这里把Z1堆叠形成矩阵Z[1],把A1堆叠形成A[1], 把Z[2][i]堆叠形成Z[2],A[2]也一样:
每个矩阵的横向指标对应了不同的训练样本,竖向对应了神经网络里的不同节点。
在这里插入图片描述

3.5 向量化实现的解释 (数学证明向量化,不用看)

在这里插入图片描述

3.6 激活函数
选择激活函数g,不一定要用sigmoid函数:
tanh函数几乎在任何场合都比sigmoid函数优越,双曲正切函数,数据的均值更接近0,有类似数据中心化的效果。
用sigmoid函数的一个例外场合是二分类问题,这时可以用sigmoid激活函数作为输出层。
现在sigmoid函数和tanh函数都有的一个缺点就是如果z非常大或非常小,导数的梯度,或者说函数的斜率就可能很小接近0,这会拖慢梯度下降算法。
ReLU函数: a = max(0, z)只要z为正,导数就是1,不用拖慢速度。
总结:如果你的输出值是0和1,那么sigmoid函数很适合作为输出层的激活函数,然后其他单元都用ReLU修正线性单元,
leaky ReLU不太常用。
在搭建神经网络时常常有很多选择,不知道选什么激活函数时,可以先试试,在交叉验证数据集上跑一跑,看那个参数效果更好。
在这里插入图片描述
在这里插入图片描述

3.7 为什么需要非线性激活函数 (不用看)
如果用线性激活函数,或叫恒等激活函数,那么神经网络只是把输入线性组合再输出,那还不如去掉所有隐藏层。不引用非线性激活函数就无法计算更有趣的函数。
只有一个地方可以使用线性激活函数,g(z)=z,就是如果你要机器学习的是回归问题,比如预测房价,y是连续实值,输出层可以用线性激活函数。房价都是整数,其实可以在输出层用reLU函数。
在这里插入图片描述

3.8 激活函数的导数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一般情况下z不会严格为0。leaky ReLU的z<0时的导数可以自己定义。

3.9 神经网络的梯度下降法
nx个输入特征,n[1]个隐藏单元,n[2]个输出单元。
keepdims=True是防止python输出古怪的秩为1的数组。
注意*是元素相乘。
正向传播有四个式子,反向传播有六个式子。
在这里插入图片描述
在这里插入图片描述
反向传播的式子讲解在下一节讲。

3.10 (选修)直观理解反向传播
在这里插入图片描述
有个小技巧是保证维度的正确性就可以消除很多bug了:
在这里插入图片描述
在这里插入图片描述

3.11 随机初始化
神经网络中对参数w的随机初始化,而不是都初始化为0是很重要的,原因如下。
如果将w初始化为0,你给网络输入任何样本,隐藏单元的值就都相同了,每次训练迭代之后两个隐藏单元仍然在计算完全相同的函数。
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值