向量化正向传播算法
神经网络的计算输出,实际上每一层都可视为一个逻辑回归(假如激活函数是单层的话),向量化表示后,每层的计算只需两步(或可合并为一步,这样顺序计算即是正向传播算法):
- 计算 Z = Wx+b;
- 计算 sigmoid(Z)
针对不同的样本,分别实施上述四行代码(两层网络),若省掉对训练样本的循环,同样是向量化的过程:把样本Xi按列排列(与原来按行排列不同),形成一个n*m,即n个特征,m个样本的矩阵,对应的W(矩阵)、b(向量),仍可满足计算
这样,最终计算出来的A,从左往又,即是该层的第i个样本对应的结果,从上到下,则是隐层的第几个单元。
实际上,(类似上述的两层)神经网络每层的计算基本是一样的,多层也是如此
激活函数
常用的四种激活函数:
sigmoid:无多大优势,吴恩达表示仅会在输出层且是二分类问题时使用(特性全面输于tanh);
tanh:介于-1到+1之间,相当于sigmoid的一种shift;
Relu:斜率分段恒定(<0时为0,大于0时为常数1)下图框线部分
leaky Relu: 对Relu小于0部分,也给一个非0斜率
为什么激活函数要是非线性的
答:若是线性,则两层叠加后,仍是线性,相当于一层线性网络,则中间层隐层失去效用(可以省略了),以逻辑回归为例,若前面所有层都是线性,最后一层是sigmoid,那和标准逻辑回归其实没什么区别。
唯一的例外:在输出层时,若最终是要用回归模型预测一个连续值,输出层可以用线性函数。
激活函数的导数:
sigmoid:g(z)*(1-g(z))
tanh:1-(tanh)^2
Relu:0,1
leaky Relu:0.01,1
神经网络实现梯度下降算法的主要方程
正向传播共四个方程;
反向传播(用于计算各级导数),共六个方程。
涉及微积分知识,若不能完全掌握,也可运用神经网络(吴)。
初始化参数中W不可全为0
若全为0,则隐层中各单元的结果会相同,导致逐层计算仍存此问题。