1.神经网络矩阵运算
(1)神经元传递形式
第一层是对全盘特征的提取。比如28*28的图像。第一层每个神经元有28*28个x。但是第一层输出4个结果。可以了提取了四个特征。
效果不好,表示特征提取不好,是神经元不多,让神经元足够过多。不是越多越好。也不是越少越好。------超参数。
越多,可能过拟合。(纵向)
层数也可以提高网络深度。(横向)
(2)感知机
H=w*x+b
网络层数增加,增加非线性能力。例如:第一层中的神经元经过第二层后,线性方向或者倾角发生变化。(能力有限)
曲线:激活函数。(能力强)
2.梯度
(1)切线
(2)导数
3.梯度下降
(1)切线斜率的取值范围:-1到1
(2)导数为0的意义。
(3)感知机模型H=W*X+B
(4)损失函数:L=(H-Y)^2 二次函数
(5)关于L和W的函数
(6)找的一个合适的W让L最小
(7)即导数为零
(8)求导数为0的W。
(9)不能直接令导数为零,求W。在数学中求导,已知公式,求参数(导数)。现在不知道公式。导数为零:会出现梯度消失。
(10)真正的学习过程中导数不可能为零。在零附近。导数为0,躺平,梯度消失。
(11)导数的写法。四种
+df/dx
(12)什么是梯度
(13)梯度下降
(14)下降
(15)步长大了(梯度爆炸/精度爆炸);步长过小(慢);取经验值(具体问题具体讨论----->超参数)。
步长过大和步长过小
(16)神经网络找不到导数等于0的地方。可能找到,但是又继续迭代。直到某次计算结束。如果导数为0,没有梯度,没法更新。也可能最小值是局部最小值。
(17)梯度和形状的关系
网络过深----->梯度弥散、僵尸网络----->新的网络结构(现在1600多层的网络)
(18)局部最优解和全局最优解
曲线函数必须要求函数可导
4.激活函数
(1)激活函数的作用
提供非线性能力
(2)激活函数的性质
(3)激活函数
a). Sigmoid函数
表示概率
X:全体实数 y:0~1
Sigmoid_grad=a*(1-a) max=0.25=0.5*0.5(梯度最大的点)
一般运用在输出值,表示概率。最大梯度维0.5,当网络层数过深,会有连成效果,小数连成越来越小,梯度会弥散,网络学不懂,容易造成僵尸网络。
b). Tanh函数
表示数据的分布状态。
梯度比sigmoid大。
X:表达净输出
X(这里的X是H)=wx(这里的x是输入值)+b
X:全体实数 y:-1~1
看下面就知道了:
导数:
Tanh_grad=1-a^2 max=1--->梯度大,效果好
通常也在中间层使用,效果比sigmoid好,值有正和负,训练效果更均匀。梯度大,学的快。
缺点:在曲线两端梯度多小,网络学不动
c). ReLU函数
没有梯度衰减的现象:y=x 坏处:梯度不能为负
Y=0:梯度维0.
c.1). ELU函数
ELU函数是针对ReLU函数的一个改进型,相比于ReLU函数,在输入为负数的情况下,是有一定的输出的,而且这部分输出还具有一定的抗干扰能力。这样可以消除ReLU死掉的问题,不过还是有梯度饱和和指数运算的问题。
c.2). PReLU函数
PReLU也是针对ReLU的一个改进型,在负数区域内,PReLU有一个很小的斜率,这样也可以避免ReLU死掉的问题。相比于ELU,PReLU在负数区域内是线性运算,斜率虽然小,但是不会趋于0,这算是一定的优势吧。
我们看PReLU的公式,里面的参数α一般是取0~1之间的数,而且一般还是比较小的,如零点零几。当α=0.01时,我们叫PReLU为Leaky ReLU,算是PReLU的一种特殊情况吧。
d). softmax函数