第三周 浅层神经网络 笔记

2019-06-09  本文已影响0人  pcqlegend

x^{(i)} 表示第i个样本
x_{(i)}表示样本的第i个特征

image.png
image.png

所以这里的x都是列向量

image.png

L(y,y)是单个损失函数

J 是所有训练样本的

逻辑回归可以被看成一个非常小的神经网络。

3.1 神经网络概览

image.png

3.2 神经网络的表示

一般输入层是第0层,所以一个看起来是三层的神经网络,一般是被称作一个两层的神经网络。

w[1]是(4*3)的矩阵,4代表该层有四个节点,3代表,该层有三个输入项。

b[1]是一个(4*1)的矩阵

image.png

3.3 神经网络的输出

image.png

列向量用黑体字母表示,转置用T表示,代表行向量

image.png

3.4 多个例子中的向量化

如何将不同训练样本堆叠起来放入矩阵的各列呢?只需要修改上面的方程,就可以实现,那么我们来看下具体实现

image.png

下节课中将会讲解为什么这样向量化,

3.5 向量化实现的解释

向量化实现 image.png

这里使用的是sigmoid\sigma函数,还有其他的函数可以使用

3.6 激活函数Activation functions
tanh 函数双曲正切函数
a = tanh(z) = \frac{e^z - e^{-z}}{e^z + e^{-z}}

sigmoid 函数一般用于输出层,因为范围是0-1 ,或者二分类问题,隐藏层一般使用的是tanh函数。所以不同的层可以用不同的激活函数,有时候为了表示不同层的激活函数,我们有时候会用g[1]或者g[2]来表示。由于z的有可能很大或者很小,导致函数的斜率为0,这样会拖慢梯度下降的算法,为了解决这个问题,最少欢迎的一个玩具是,所谓的修正性单元。
rectified liner unit, ReLU,所谓的修正性单元,
在选择激活函数时有一些经验法则,如果你的输出是0或1,如果你再做二元分类,那么\sigma很适合座位输出层的激活函数,其他所有层都可以使用ReLU,也就是所谓的修正性单元,现在已经是默认的激活函数了。所以如果你不确定隐层应该用哪个函数,就可以先用ReLU函数。大部分人都再用这个函数,当然也有人tanh函数。ReLu函数的一个缺点是:当z为负时,导数等于0,在实际问题中没有问题。但ReLU还有另一个版本,叫做带泄漏的ReLU leaky ReLU.下一节将会给出,当z为负时,函数不再是0.而是有一个喊缓的斜率。会比一般的更快。

image.png
image.png

3.7 为什么需要非线性激活函数
事实证明,要让你的神经网络能够计算出有趣的函数,你必须使用非线性激活函数,除非你想。。。
可以改成线性激活函数,或者恒等函数,多个线性函数的组合仍然是线性函数所以没必要使用隐层,除非你要做的是一个回归的问题不是一个0-1的问题,那么是可以用的

3.8激活函数的导数
当需要计算神经网络的反向传播时,需要计算激活函数的导数或者斜率

sigmoid 导数
a=g(z),g^,(z) = a *(1-a)

image.png

tanh导数
a =g(z), g^,(z) = 1 - a ^2

image.png

ReLU导数
g(z) = max (0,z)

g^,(z)= \begin{cases} 0& \text{if z< 0}\\ 1& \text{if z> 0} \end{cases}

image.png

3.9神经网络的梯度下降法
你将看到神经网络的梯度下降,以及如何处理单隐层神经网络。这个视频会给你提供所需的方程。

上一篇 下一篇

猜你喜欢

热点阅读