文章目录
基础知识
激活函数:引入非线性增加模型复杂度,不改变数据维度,a=激活函数(b) a、b维度一样
取值[0,1],如leru取值[0,正无穷)可归一化成[0,1],符合概率特点
为什么要引入?
线性函数只能进行线性划分,不能解决复杂的:如异或xor问题。
多层网络都能化成一层,为了增加复杂度;
sigmoid函数:取值 [0,1]
sigmoid函数:函数值处于[0,1],单调递增,且导数为饱和函数。只要满足三个条件,就是sigmoid函数,有很多种,如下图
其中最出名的是logistic函数【可见我的逻辑斯蒂回归博文,是因为正太分布而产生的函数】,直接把它叫做sigmoid函数:取值[0,1],导数取值[0,0.25]
relu:倒数函数不连续 取值[0,正无穷],导数取值0或1
softmax
y i ^ = p ( y = i ) = σ ( i ) = e z i ∑ j n − 1 e z j n 个 类 , z = w x + b , y ^ = σ ( z ) , y i ^ 为 对 是 属 于 i 类 的 预 测 结 果 \hat{y_i}=p(y=i)=\sigma(i)=\frac{e^{
{z_i}}}{\sum\limits_j^{n-1}{e^{
{z_j}}}}\\ n个类,z=wx+b,\hat{y}=\sigma(z),\hat{y_i}为对是属于i类的预测结果\\ yi^=p(y=i)=σ(i)=j∑n−1ezjezin个类,z=wx+b,y^=σ(z),yi^为对是属于i类的预测结果
多分类时,需要对每个类别输出的概率满足: p i > 0 , 且 ∑ p i = 1 p_i>0,且\sum{p_i}=1 pi>0,且∑pi=1
y的标签编码方式为one-hot【只有一个是1,其余是0,因为最终结果只可能属于某一个类,标签的one-hot算法完成的,输入仍为原始标签】
为什么引入?
第一,节省计算量:采用sigmoid等函数,算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多。
第二,防止simoid反向传播时出现的梯度消失。对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(在sigmoid接近饱和区时,变换太缓慢,导数趋于0,这种情况会造成信息丢失),从而无法完成深层网络的训练。
第三,Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生
如何用?:多层神经网络的隐藏层
ReLU 主要用在神经网络中的隐藏层作为激活函数,很少用在输出层,输出层可用sigmoid或softmax等。
relu把负值全变成0,在隐藏层作为激活函数时,可造成网络的稀疏性,加快训练过程。在最后一层作为激活函数时,所有的负值都被丢掉,丢失了大量的信息,相当于把学到的结果丢了一半,此时再进行预测效果大打折扣。
sigmoid一般用于二分类最后一层,softmax用于多分类最后一层。
选定优先级
relu>tanh>sigmoid
后两个导函数为饱和函数(类似正太分布),有学习饱和问题:接近饱和区时,导数趋于0,这种情况会造成信息丢失
损失函数
用真实值与预测值之间的差距【距离差距,分布差距】来指导模型收敛的方向。
凸函数?
平方差/均值平方差:凸函数
交叉熵(逻辑回归):凸函数
神经网络:非凸函数
等高线
梯度的导数越大,越陡,走一步造成的高度差越大,等高线越密
损失函数是凸函数时
损失函数3D图
3D图等高线图,压缩到 θ 1 O θ 2 平 面 \theta_1O\theta_2平面 θ1Oθ2平面:可知,中心处损失最低
设损失函数 y = f ( x 1 , x 2 ) y=f(x_1,x_2) y=f(x1,x2)是个曲面,被平面c(为常数)所截曲线方程为:
y = f ( x 1 , x 2 ) y = c y=f(x_1,x_2)\\ y=c\\ y=f(x1,x2)y=c
该曲线在 x 1 O x 2 平 面 上 投 影 为 一 条 曲 线 : f ( x 1 , x 2 ) = c , 即 为 y = f ( x 1 , x 2 ) 在 x 1 O x 2 平 面 上 的 一 条 等 高 线 : 由 上 图 可 知 , 中 心 处 损 失 最 低 x_1Ox_2平面上投影为一条曲线:f(x_1,x_2)=c,即为y=f(x_1,x_2)在x_1Ox_2平面上的一条等高线:由上图可知,中心处损失最低 x1Ox2平面上投影为一条曲线:f(x1,x2)=c,即为y=f(x1,x2)在x1Ox2平面上的一条等高线:由上图可知,中心处损失最低
在 等 高 线 f ( x 1 , x 2 ) 上 任 一 点 的 切 线 斜 率 为 : d x 2 d x 1 且 由 上 面 隐 函 数 求 导 可 知 : d x 2 d x 1 = − f x 1 f x 2 则 在 该 处 的 法 线 斜 率 为 : − 1 d x 2 d x 1 = − 1 − f x 1 f x 2 = f x 2 f x 1 由 上 面 梯 度 为 : ( ∂ f ∂ x 1 , ∂ f ∂ x 2 ) = ∂ f ∂ x 1 i ⃗ + ∂ f ∂ x 2 j ⃗ 在 x 1 O x 2 平 面 的 梯 度 方 向 为 : ∂ f ∂ x 2 / ∂ f ∂ x 1 , 并 指 向 远 离 圆 圈 中 心 的 方 向 【 梯 度 方 向 是 函 数 值 增 大 的 方 向 , 对 应 的 导 数 为 正 】 在等高线f(x_1,x_2)上任一点的切线斜率为:\frac{dx_2}{dx_1}\\ 且由上面隐函数求导可知:\frac{dx_2}{dx_1}=-\frac{f_{x_1}}{f_{x_2}}\\ 则在该处的法线斜率为:\frac{-1}{\frac{dx_2}{dx_1}}=\frac{-1}{-\frac{f_{x_1}}{f_{x_2}}}=\frac{f_{x_2}}{f_{x_1}}\\ 由上面梯度为:(\frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2})=\frac{\partial f}{\partial x_1}\vec{i} +\frac{\partial f}{\partial x_2}\vec{j}\\ 在x_1Ox_2平面的梯度方向为:\frac{\partial f}{\partial x_2}/\frac{\partial f}{\partial x_1},并指向远离圆圈中心的方向【梯度方向是函数值增大的方向,对应的导数为正】 在等高线f(x1,x2)上任一点的切线斜率为:dx1dx2且由上面隐函数求导可知:dx1dx2=−fx2fx1则在该处的法线斜率为:dx1dx2−1=−fx2fx1−1=fx1fx2由上面梯度为:(∂x1∂f,∂x2∂f)=∂x1∂fi+∂x2∂fj在x1Ox2平面的梯度方向为:∂x2∂f/∂x1∂f,并指向远离圆圈中心的方向【梯度方向是函数值增大的方向,对应的导数为正】
均值平方差(MSE):真实值和预测值之间的距离的差距
一般:回归任务使用
对目标函数是sigmoid函数时,损失函数采用MSE的情况,其偏导值在输出概率值接近0或者接近1的时候非常小,这可能会造成模型刚开始训练时,偏导值几乎消失
J M S E = 1 N ∑ i = 1 N ( y ^ i − y i ) 2 J_{M S E}=\frac{1}{N} \sum_{i=1}^{N}\left(\hat{y}_{i}-y_{i}\right)^{2} JMSE=