神经网络基础—浅层神经网络

来源: coursera DeepLearningAI-Shallow Neural Network 课程的笔记整理

浅层神经网络

  • 可以将计算中的每一步视为神经网络的一个层。
  • 隐藏层:不被观察到的层,大多数指在计算中未被表述的层。

表达方式

  • 注意:输入不算层数。所以上层为一个2层神经网络
  • a[layer](example)node 用于表述一个神经元
  • 同时 我们一般采用计算层+ 激活层的方式来组建一个神经网络层。
  • 大多数情况下,层的深入仅仅是计算方式的重复而已。同时需要考虑梯度计算的梯度消失问题

激活函数

概述

  • 使用与隐藏层输出层的一个函数(大多情况使用非线性函数)
  • 隐藏层,可以考虑 tanh a=ezezez+ez ):使得得到的资料集中于0,并非0.5。方便后面的学习
  • 输出层,可以考虑Sigmod:使得得到值在0~1
  • 当然,全用ReLu也是一个大众的做法.
  • ReLu的升级版为leaky ReLu a=max(0.01z,z) (渗漏整流函数)

为何需要它

打破计算层的线性特性
现实中大多数时间映射是非线性的,没有标准的因果关系。只有在做线性回归才会考虑在输出层使用线性激活

常用激活函数的导数

ddzsigmod(z)=A(1A),A=sigmod(z)

ddztanh(z)=1(tanh(z))2

ddzRelu(z)=(0,z<01,z>0)

ddzLeakyRelu(z)=(0.01,z<01,z>0)

随机初始化参数向量

  • 不像之前训练逻辑回归时全0初始化参数原因:会让所有的隐藏神经元做相同的工作

  • 由于这种对称,反向传播后每个单元得到的梯度阵也是相同的

  • 最后导致所有的神经元都做相同的计算
    正确做法
  • W[1]=np.random.randn((shape))0.01 。这样使得 W 每个元素初始化为很小的随机值
  • B则可以初始化为0,因为 W 参数阵已经可以让不同的单元做不同的工作
  • 使用小的数字原因:防止使用 tanh sigmod 这类激活函数,反向时使得到的梯度值过小,影响学习率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值