深度学习笔记(一)(3)浅层神经网络(Shallow neural networks)

深度学习笔记(一)(3)浅层神经网络(Shallow neural networks)

返回目录
𝑎表示激活的意思,它意味着网络中不同层的值会传递到它们
后面的层中,输入层将𝑥传递给隐藏层,所以我们将输入层的激活值称为𝑎[0];
在这里插入图片描述
在这里插入图片描述

3.2 神经网络的表示(Neural Network Representation)

有输入特征𝑥1、𝑥2、𝑥3,它们被竖直地堆叠起来,这叫做神经网络的输入层。它包含了神经网络的输入;然后这里有另外一层我们称之为隐藏层,这些中间结点的准确值我们是不知道到的,也就是说你看不见它们在
训练集中应具有的值。在本例中最后一层只由一个结点构成,而这个只有一个结点的层被称为输出层,它负责产生预测值。
最后输出层将产生某个数值𝑎,它只是一个单独的实数,这里即y^。
在这里插入图片描述

3.3 计算一个神经网络的输出(Computing a Neural Network’s

output)
在这里插入图片描述

3.4 多样本向量化(Vectorizing across multiple examples)

在这里插入图片描述
在垂直方向,这个垂直索引对应于神经网络中的不同节点。
从水平上看,矩阵𝐴代表了各个训练样本。从竖直上看,矩阵𝐴的不同的索引对应于不同的隐藏单元,对于矩阵𝑍,𝑋情况也类似,水平方向上,对应于不同的训练样本;竖直方向上,对应不同的输入特征,而这就是神经网络输入层中各个节点。。
当垂直扫描,是索引到隐藏单位的数字。当水平扫描,将从第一个训练示例中从第一个隐藏的单元到第二个训练样本,第三个训练样本……

3.6 激活函数(Activation functions)

在这里插入图片描述在这里插入图片描述在这里插入图片描述
ReLu修正线性单元的函数函数:
在这里插入图片描述
在这里插入图片描述
经验选取法则:
如果输出是 0、1 值(二分类问题),则输出层选择 sigmoid 函数,然后其它的所有单元都选择 Relu 函数。
这是很多激活函数的默认选择,如果在隐藏层上不确定使用哪个激活函数,那么通常会使用 Relu 激活函数。有时,也会使用 tanh 激活函数,但 Relu 的一个优点是:当𝑧是负值的时候,导数等于 0。

里也有另一个版本的 Relu 被称为 Leaky Relu。 当𝑧是负值时,这个函数的值不是等于 0,而是轻微的倾斜,如上图最后一个,不常用不过。
在这里插入图片描述如果不确定哪一个激活函数效果更好,可以把它们都试试,然后在验证集或者发展集上进行评价。然后看哪一种表现的更好,就去使用它。

3.7 为什么需要非线性激活函数?(why need a nonlinear activation function?)

如果你使用线性激活函数或者没有使用一个激活函数,那么无论你的神经网络有多少层一直在做的只是计算线性函数,所以不如直接去掉全部隐藏层。不能在隐藏层用线性激活函数,可以用 ReLU 或者 tanh 或者 leaky ReLU 或者其他的非线性激活函数,唯一可以用线性激活函数的通常就是输出层;
下图表示用线性激活函数的后果:
在这里插入图片描述

3.8 激活函数的导数(Derivatives of activation functions)

1)sigmoid activation function在这里插入图片描述
2) Tanh activation function
在这里插入图片描述
在这里插入图片描述
3)Rectified Linear Unit (ReLU)
在这里插入图片描述
4)Leaky linear unit (Leaky ReLU)
在这里插入图片描述

3.9 神 经 网 络 的 梯 度 下 降 ( Gradient descent for neural networks)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.11 随机初始化(Random+Initialization)

如果你要初始化成 0,由于所有的隐含单元都是对称的,无论你运行梯度下降多久,他们一直计算同样的函数。这没有任何帮助,因为你想要两个不同的隐含单元计算不同的函数,这 个 问 题 的 解 决 方 法 就 是 随 机 初 始 化 参 数 。 你 应 该 这 么 做 : 把 𝑊[1] 设 为np.random.randn(2,2)(生成高斯分布),通常再乘上一个小的数,比如 0.01,这样把它初始化为很小的随机数。然后𝑏没有这个对称的问题(叫做 symmetry breaking problem),所以可以把 𝑏 初始化为 0,因为只要随机初始化𝑊你就有不同的隐含单元计算不同的东西,因此不会有 symmetry breaking 问题了。相似的,对于𝑊[2]你可以随机初始化,𝑏[2]可以初始化为 0。
在这里插入图片描述
乘的0.01是因为通常倾向于初始化为很小的随机数。因为如果你用 tanh 或者 sigmoid 激活函数,如果𝑤很大,那么你很可能最终停在(甚至在训练刚刚开始的时候)𝑧很大的值,这会造成 tanh/Sigmoid 激活函数饱和在龟速的学习上(因为这个时候激活值a就会不是1就是0),如果你没有 sigmoid/tanh 激活函数在你整个的神经网络里,就不成问题。

返回目录

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瞲_大河弯弯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值