浅(深)层神经网络-吴恩达学习笔记

1 神经网络概览

2 神经网络表示

\begin{aligned} &a^{[0]}=x, a^{[0]} \in \mathbb{R}^{n_x},x \in \mathbb{R}^{n_x} \\ &z^{[1]} = W^{[1]}a^{[0]}+b^{[1]} \\ &a^{[1]} = g(z^{[1]}) \\ &z^{[2]} = W^{[2]}a^{[1]}+b^{[2]} \\ &a^{[2]} = g(z^{[2]}) \\ \end{aligned}

其中g是激活函数,W^{[l]},是用来与l-1的输出当作l层的输入做矩阵乘法得到l层的值,W^{[l]}的形状是(l层单元数,l-1层单元数),b^{[l]}的形状是(l层单元数,1),故

\begin{aligned} shape(W^{[1]})=(4,3), \ shape(b^{[1]})=(4,1)\\ shape(W^{[2]})=(1,4), \ shape(b^{[1]})=(1,1) \end{aligned}

3 激活函数

隐藏层单元激活函数:tanh几乎总是优于sigmoid函数,因为tanh的输出介于(-1,1),激活函数的平均值更接近于0,在有些场景可能需要平移数据,让数据的均值为0,使用tanh也有类似数据中心化的效果,使得数据的均值更接近0,而非0.5,使下一层的学习更加方便。tanh和sigmoid有一个共同的缺点,当z很小或很大时,则其梯度非常小,会拖慢梯度下降算法。通常会使用Relu函数,当z小于0时,其梯度为0,但是实践中很少能碰到000000...的情况。

为什么要使用非线性激活函数,因为若使用线性激活函数或恒等激活函数,则神经网络只是将输入线性组合再输出,若使用线性激活函数或不使用激活函数,则无论神经网络有多少层一直只是做的线性组合,唯一可使用线性激活函数的就是输出层。举例如下,隐藏层和输出层均未使用激活函数,则输出依旧是输入的线性组合。

激活函数的导数

\begin{aligned} &sigmoid: g'(z) = (1-g(z))g(z) \\ &tanh: g'(z)=1-(g(z))^2 \end{aligned}

 4 神经网络的梯度下降法

\left\{\begin{aligned} &a^{[0]}=x, a^{[0]} \in \mathbb{R}^{n_x},x \in \mathbb{R}^{n_x} \\ &z^{[1]} = W^{[1]}a^{[0]}+b^{[1]} \\ &a^{[1]} = g(z^{[1]}) \\ &z^{[2]} = W^{[2]}a^{[1]}+b^{[2]} \\ &a^{[2]} = g(z^{[2]}) \end{aligned} \left\{\begin{aligned} &dz^{[2]}=a^{[2]}-Y \\ &dw^{[2]}=1/m * dz^{[2]}a^{[1]}^T \\ &db^{[2]}=1/m * np.sum(dz^{[2]},axis=1,keepdims=True) \\ &dz^{[1]}= w^{[1]}^Tdz^{[2]} * g'(z^{[1]}) \\ &dw^{[2]}=1/m * dz^{[1]}a^{[0]}^T \\ &db^{[1]}=1/m * np.sum(dz^{[1]},axis=1,keepdims=True) \\ \end{aligned}

5 随机初始化

为何要随机初始化:举例如下,若将W^{[1]}初始化为0,则由于全连接层,每个隐藏层单元的输入都是一样的,现在权重也一样,则隐藏层单元的输出也一样,即a^{[1]}_1=a^{[1]}_2,然后若W^{[2]}也初始化为0,则他们的梯度也一样,即dz^{[1]}_1 = dz^{[1]}_2,以为这多次迭代后依旧a^{[1]}_1=a^{[1]}_2,相当于多个隐藏单元在计算相同的东西,故需要随机初始化。

其实,只要W数据类似下面这种情况,也就是所有行向量相等,则所有隐藏层单元就计算的是同样的东西

W = \begin{bmatrix} u & v & w\\ u & v & w \\ u & v & w \end{bmatrix}

为什么要用比较小的随机值初始化,主要是怕遇到形如tanh和sigmoid的激活函数,若权重参数过大,则z很容易绝对值过大,即梯度很小,会拖慢梯度下降速度。

6 深层神经网络

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值