吴恩达.深度学习系列-C1神经网络与深度学习-W3浅层神经网络

11 篇文章 0 订阅
9 篇文章 0 订阅

词汇

justification n. 理由;辩护;认为有理,认为正当;释罪
prime n.角分号(g’(z))
shallow 浅层

学习目标

Understand hidden units and hidden layers
Be able to apply a variety of activation functions in a neural network.
Build your first forward and backward propagation with a hidden layer
Apply random initialization to your neural network
Become fluent with Deep Learning notations and Neural Network Representations
Build and train a neural network with one hidden layer.

1.Neural Network Overview

回顾一下,逻辑回归的过程如下图:
这里写图片描述
一个简单的神经网络结构如下图,其中的每一个节点所做的工作与上图的逻辑回归一样。 z=wx+b,a=σ(z) z = w ∗ x + b , a = σ ( z ) 权重计算后进行激活。
这里写图片描述
在上图这样简单的两层网络中,相连的两个神经元所进行的计算展开后,如下图。
这里写图片描述
[第一层]权重计算->激活->[第二层]权重计算->激活

2.Neural Network Representation

这里写图片描述
一个简单的神经网络结构如上图。
‘隐藏层’是指在训练集中,中间的那一层节点的计算后的值并没有对应的监督学习中的样本标签进行对比。
在这样一个网络中, w[1]=(4,3),b[1]=(4,1);w[2]=(1,4),b[2]=(1,1) w [ 1 ] = ( 4 , 3 ) , b [ 1 ] = ( 4 , 1 ) ; w [ 2 ] = ( 1 , 4 ) , b [ 2 ] = ( 1 , 1 )

3.Computing a Neural Network’s Output

如下图,每一个神经元其实与逻辑回归类似,进行一个权值计算再进行一次激活。
这里写图片描述
每一个神经元共享一个偏置量b。
这里写图片描述
a[0]=x=(3,1) a [ 0 ] = x = ( 3 , 1 )
w[1]=(4,3),b[1]=(4,1) w [ 1 ] = ( 4 , 3 ) , b [ 1 ] = ( 4 , 1 )
z[1]=w[1]a[0]+b=(4,1) z [ 1 ] = w [ 1 ] ∗ a [ 0 ] + b = ( 4 , 1 )
a[1]=σ(z[1])=(4,1) a [ 1 ] = σ ( z [ 1 ] ) = ( 4 , 1 )

w[2]=(1,4),b[2]=(1,1) w [ 2 ] = ( 1 , 4 ) , b [ 2 ] = ( 1 , 1 )
z[1]=w[2]a[1]+b[2]=(1,1) z [ 1 ] = w [ 2 ] ∗ a [ 1 ] + b [ 2 ] = ( 1 , 1 )
a[2]=σ(z[2])=(1,1) a [ 2 ] = σ ( z [ 2 ] ) = ( 1 , 1 )

4.Vectorizing across multiple examples

上一小节中我的代码笔记其实已经按vectorization的方式来计算了。再表述一下:
X有m个样本,n个特征,X=(n,m)
W[1]=(4,n),4b[1]=(n,1) W [ 1 ] = ( 4 , n ) , 第 二 层 包 含 4 个 神 经 元 ; b [ 1 ] = ( n , 1 )
Z[1]=W[1]X+b[1]=(4,m),4 Z [ 1 ] = W [ 1 ] ∗ X + b [ 1 ] = ( 4 , m ) , 可 以 将 这 里 的 4 替 换 成 其 他 设 定 下 的 神 经 元 个 数
这Z,的rows代表不同的训练样本,每一个column代表一个训练样本中不同的神经元输出(在输入层,表达的是特征)。

5.Explanation for Vectorized Implementation

6.Activation functions

几种激活函数的对比

激活函数公式图形特性应用领域
sigmoid a=11+ez a = 1 1 + e − z 这里写图片描述值域:(0,1);导函数值域:(0,0.25]一般二分类问题中,隐藏层用tanh函数,输出层用sigmod函数。较少被使用
tanh
(双曲正切函数)
a=ezezez+ez a = e z − e − z e z + e − z 这里写图片描述值域:(-1,1);导函数值域:(0,1]二分类问题
Relu a=max(0,z) a = m a x ( 0 , z ) 这里写图片描述值域:(0,+∞);导函数值域:0,1z为负数时,导数会为0.z<0时激活值=0,容易出现死亡神经元。广泛使用
Leaky Relu a=max(0.01,z) a = m a x ( 0.01 , z ) 这里写图片描述值域:(-∞,+∞);导函数值域:0.01,1relu的改进版,广泛使用

7.why do you need non-linear activation function?

为什么神经网络非要使用激活函数?
如果没有激活函数进行“非线性”化,那么无论神经网络的隐藏层有多少层,都只是输入值到输出值的线性变换。等同与机器学习中线性回归。
那么就没有必要设立隐藏层。
而线性回归是无法对现实中的大多数问题进行有效分类的。

8.Derivatives of activation functions

激活函数导函数图形特性
sigmoid(z) g(z)=dg(z)dz g ′ ( z ) = d g ( z ) d z
=g(z)(1g(z)) = g ( z ) ( 1 − g ( z ) )
这里写图片描述1
tanh(z) g(z)=1(tanh(z))2 g ′ ( z ) = 1 − ( t a n h ( z ) ) 2 这里写图片描述tanh在特征相差明显时的效果会很好,在循环过程中会不断扩大特征效果。 与 sigmoid 的区别是,tanh 是 0 均值的,因此实际应用中 tanh 会比 sigmoid 更好
ReLU(z) g(z)={0,ifz<01,ifz>=0 g ′ ( z ) = { 0 , i f z < 0 1 , i f z >= 0 这里写图片描述ReLU 的优点: 使用 ReLU 得到的 SGD 的收敛速度会比 sigmoid/tanh 快很多.
ReLU 的缺点: 训练的时候很”脆弱”,很容易就”die”了
[例如,一个非常大的梯度流过一个 ReLU 神经元,更新过参数之后,这个神经元再也不会对任何数据有激活现象了,那么这个神经元的梯度就永远都会是 0. 如果 learning rate 很大,那么很有可能网络中的 40% 的神经元都”dead”了。]
LeakyReLU(z)
g(z)=max(0.01z,z)
g(z)={0.01,ifz<01,ifz>=0 g ′ ( z ) = { 0.01 , i f z < 0 1 , i f z >= 0 这里写图片描述3

激活函数很多,课程中只列出了其中常用的4种。另外到目前为止因为各种用途,常见的激活函数至少有26种之多。激活函数主要是根据自身的导函数特性而被不同的场合使用。关于各种激活函数的详细解释,可以参考:从ReLU到Sinc,26种神经网络激活函数可视化

9.Gradient descent for Neural Networks

10.Backpropagation intuition(optinal)

参考自己之前的笔记:Machine Learning |吴恩达 (2-2)—神经网络,反向传播推导(超简单版)

11.Random Initialization

如果初始化权重为零将发生什么?

  • 同一层上的神经元因为权重w都为0,或都等于同一个值。(b的权重都为0,影响并不大),那么无论输入值是什么,这一层上的神经元的输出都一样,并且方向传播时,每个神经元的梯度也是一样的。那么权值更新后的w还是一样的。这些神经元干着重复的工作,我们只需要其中一个神经元就能实现相同的功能。这种情况被称为“对称失效”。

    一种解决方式:np.random.randn((2,2))*0.01(适用于sigmoid,tanh,让权重初始值在0附近并非常小)

12.python三种矩阵乘法的对比区别

python中有array,matrix两种类型可以表达矩阵形式,又有(*),dot(),multiply()三种乘法,很让我混淆。

操作函数数组矩阵
np.multiply()点乘点乘
np.dot()秩=1:对应位置相乘,再求和
秩>1:矩阵乘
矩阵乘
星号(*)乘法点乘矩阵乘
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值