吴恩达神经网络与深度学习——浅层神经网络

吴恩达神经网络与深度学习——浅层神经网络

  • 神经网络概述
  • 神经网络表示
  • 计算神经网络的输出
  • m个样本的向量化
    • for loop
    • 向量化
  • 向量化实现的解释
  • 激活函数
    • sigmoid
    • tanh函数
    • ReLu函数
  • Leaky ReLu函数
  • 为什么需要非线性激活函数
  • 激活函数的导数
    • sigmoid
    • tanh函数
    • ReLu函数
    • Leaky ReLu函数
  • 神经网络的梯度下降
    • 浅层神经网络
      • 参数
      • 代价函数
      • 梯度下降
    • 正向传播
    • 反向传播
  • 直观理解反向传播
    • Logistic回归
    • 浅层神经网络
    • m个样本的梯度下降
  • 随机初始化权重

神经网络概述

吴恩达神经网络与深度学习——浅层神经网络_第1张图片

神经网络表示

吴恩达神经网络与深度学习——浅层神经网络_第2张图片
吴恩达神经网络与深度学习——浅层神经网络_第3张图片

计算神经网络的输出

吴恩达神经网络与深度学习——浅层神经网络_第4张图片
吴恩达神经网络与深度学习——浅层神经网络_第5张图片

m个样本的向量化

for loop

吴恩达神经网络与深度学习——浅层神经网络_第6张图片

向量化

吴恩达神经网络与深度学习——浅层神经网络_第7张图片
吴恩达神经网络与深度学习——浅层神经网络_第8张图片
吴恩达神经网络与深度学习——浅层神经网络_第9张图片
X:(nx,m)竖向指标代表神经网络的不同节点,横向指标代表不同的训练样本

向量化实现的解释

吴恩达神经网络与深度学习——浅层神经网络_第10张图片

激活函数

sigmoid

吴恩达神经网络与深度学习——浅层神经网络_第11张图片

除非用在二元分类的输出层,不然绝对不用,因为thah函数在任何场合都适用

tanh函数

吴恩达神经网络与深度学习——浅层神经网络_第12张图片

sigmoid类函数的缺点是z特别大或特别小时斜率为0,会拖慢梯度下降的速度,使学习速率下降。

ReLu函数

吴恩达神经网络与深度学习——浅层神经网络_第13张图片
默认使用
在实践中使用ReLu函数,神经网络的学习速率块,因为ReLu类函数没有sigmoid类函数在斜率接近于0时拖慢学习速率的特征。
ReLu由于NN有足够多的隐藏单元,使z>0.

Leaky ReLu函数

吴恩达神经网络与深度学习——浅层神经网络_第14张图片

神经网络的一个特点是:在建立神经网络时,经常会有许多不同的选择比如隐藏单元数,激活函数,初始化权重等。

为什么需要非线性激活函数

事实证明:要让NN能够计算出有趣的函数,必须使用非线性激活函数

吴恩达神经网络与深度学习——浅层神经网络_第15张图片

两个线性函数的组合本身就是线性函数,不能计算出有趣的函数;唯一可以用线性激活函数的地方是输出层,例如预测房价;除了这种情况,会在隐藏层用线性激活函数的,可能除了与压缩有关的一些特殊情况。

激活函数的导数

sigmoid

吴恩达神经网络与深度学习——浅层神经网络_第16张图片

tanh函数

吴恩达神经网络与深度学习——浅层神经网络_第17张图片

ReLu函数

吴恩达神经网络与深度学习——浅层神经网络_第18张图片

if z>0
if z<0

Leaky ReLu函数

吴恩达神经网络与深度学习——浅层神经网络_第19张图片

if z>0
if z<0

神经网络的梯度下降

浅层神经网络

吴恩达神经网络与深度学习——浅层神经网络_第20张图片

参数

w^[1](n^[1]*n^[0]),
b^[1](n^[1]*1),
w^[2](n^[2]*n^[1]),
b^[2]( n^[2] *1) 
n_x=n^[0],n^[1],n^[2]=1

代价函数

梯度下降

repeat{
			compute predict(yhat^[i],i=1,2,...,m)
			dw^[1] = dJ/dw^[1]     db^[1] = dJ/db^[1] ......
			w^[1] = w^[1]-alpha*dw^[1]
			b^[1] = w^[1]-alpha*db^[1]
			......
}

正向传播

反向传播

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(防止Python直接输出轶为1的数组))
aZ^[1] = (W^[1])^TdZ^[2]*(g^[1])'(Z^[1])##*逐元素相乘
dW^[1] = (1/m)dZ^[1](X)^T
db^[2] = (1/m)np.sum(dZ^[1],axis=1(竖直相加),keepdims = True(防止Python直接输出轶为1的数组))

直观理解反向传播

Logistic回归

吴恩达神经网络与深度学习——浅层神经网络_第21张图片

浅层神经网络

吴恩达神经网络与深度学习——浅层神经网络_第22张图片

矩阵运算维度一定要匹配

吴恩达神经网络与深度学习——浅层神经网络_第23张图片

m个样本的梯度下降

吴恩达神经网络与深度学习——浅层神经网络_第24张图片

随机初始化权重

NN中,若权重初始化为0,则无效

吴恩达神经网络与深度学习——浅层神经网络_第25张图片

w1 = np.random.randn((2,2))*0.01
b1 = np.zeros((2,1))
w2 = np.random.randn((1,2))*0.01
b2 = np.zeros(1,1))

你可能感兴趣的:(神经网络与深度学习)