一、loss function

1、均方误差(MSE,L2损失)

回归问题中最常见的损失函数。如果对所有样本点只给出一个预测值,那么这个值就是所有目标值的平均值。

  • 优点:计算简单,逻辑清晰,衡量误差准确;梯度随着误差的增大或减小,收敛效果好;
  • 缺点:对于异常值敏感,会对其赋予较大的权重,如果异常值不属于考虑范围,则会造成偏差;

2、平均绝对值误差(又称MAE,L1损失)

x 在 处不可导 ,如果对所有样本点只给出一个预测值,那么这个值就是所有目标值的中位数

  • 优点:对于异常值有较好的鲁棒性;
  • 缺点:梯度不变是个严重问题,即使对于很小的损失,梯度也很大,不利于模型收敛,常使用变化的学习率解决;

3、Huber损失,平滑的平均绝对误差

当误差在时,等价为MSE,当误差在时,等价为MAE

  • 优点:对异常值更加鲁棒;在最优点附近由于调整为MSE,梯度更新会随着误差减小而减小,有利于收敛;
  • 缺点:引入额外的超参,需要调试; 临界点处不可导

4、Log-Cosh损失

注:为双曲余弦函数,与的关系为:

双曲余弦介绍(百度百科)
比MSE更加平滑的损失函数

  • 优点:具有huber损失具备的所有优点;二阶处处可微,许多机器学习算法采用牛顿法逼近最优点,比如鼎鼎大名的XGBoost算法,而牛顿法要求损失函数二阶可微;
  • 缺点:误差很大情况下,一阶梯度和Hessian会变成定值,导致XGBoost出现缺少分裂点的情况;

5、分位数损失

预测的是目标的取值范围而不是值是所需的分位数,其值介于0到1之间,等于0.5,相当于MAE。
设置多个值,得到多个预测模型,然后绘制成图表,即可知道预测范围及对应概率(两个值相减);
详细图像链接

6、信息熵

任何信息都存在冗余,冗余大小与信息中每个符号(数字、字母或单词)的出现概率或者说不确定性有关,通过借鉴热力学的概念,把信息中排除了冗余后的平均信息量称为“信息熵”

二项分布情况(二分类):

熵相关的概念及公式:https://blog.csdn.net/haolexiao/article/details/70142571

一篇特别重要的熵的介绍文章:https://www.cnblogs.com/kyrieng/p/8694705.html

7、相对熵(KL散度)

相对熵又称KL散度,如果我们对于同一个随机变量 x 有两个单独的概率分布 $P(x)$ 和 $Q(x)$,我们可以使用 KL 散度(Kullback-Leibler (KL) divergence)来衡量这两个分布的差异,即如果用P来描述目标问题,而不是用Q来描述目标问题,得到的信息增量(最大期望)
在机器学习中,P往往用来表示样本的真实分布,Q表示预测的分布

n 为事件所有可能性,的值越小,表示p和q的分布越接近

8、交叉熵

$D_{KL}$为0,等式的前一部分为的熵,后一部分则为p和q的交叉熵。

特别的,在机器学习的而分类中(二项分布):

多项式分布中则为:

9、focal loss

其中$\gamma \ge 0$
由对不平衡样本固定比例调控其损失贡献来平衡样本分布,到通过其概率分布动态调整贡献度;(多数样本,loss贡献度小,则使得模型更关注少数样本)

10、SmoothL1 loss

其中,$x=f(x_i)−y_i$ 为真实值和预测值的差值。

Smooth L1 能从两个方面限制梯度:

  • 当预测框与 ground truth 差别过大时,梯度值不至于过大;
  • 当预测框与 ground truth 差别很小时,梯度值足够小。

对比L1 loss和L2 loss,三者的导数为:

二、activation function

激活函数的作用:

  • 引入非线性(无激活函数则为多层感知机)
  • 限制输出(或限制下一层输入)

    1、sigmoid

  • 优点:把输入的连续实值变换为0和1之间的输出,特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1;
  • 缺点:在深度神经网络中梯度反向传递时导致梯度爆炸和梯度消失,其中梯度爆炸发生的概率非常小,而梯度消失发生的概率比较大;Sigmoid 的 output 不是0均值(即zero-centered)。这是不可取的,因为这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。 产生的一个结果就是:如$x>0,f=w^Tx+b$,那么对w求局部梯度则都为正,这样在反向传播的过程中w要么都往正方向更新,要么都往负方向更新,导致有一种捆绑的效果,使得收敛缓慢。当然了,如果按batch去训练,那么那个batch可能得到不同的信号,所以这个问题还是可以缓解一下的。因此,非0均值这个问题虽然会产生一些不好的影响,不过跟上面提到的梯度消失问题相比还是要好很多的;其解析式中含有幂运算,计算机求解时相对来讲比较耗时。对于规模比较大的深度网络,这会较大地增加训练时间。

2、tanh

零均值的作用

  • 优点:解决了非零均值(zero-centered)的问题;
  • 缺点:梯度消失(gradient vanishing);幂函数运算;

3、Relu

  • 优点:正区间解决了梯度消失的问题;计算速度快,判断输入是否为正;收敛速度快;
  • 缺点:输出不是零均值;Dead ReLU Problem,指的是某些神经元可能永远不会被激活,导致相应的参数永远不能被更新,产生原因:(1)不好的参数初始化,较少见 (2)learning rate太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以采用Xavier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法。
  • 为什么神经元会出现Dead:设学习速率为r,ReLU的梯度为,那么权重更新公式为:; 如果为1,那么权重更新公式变成了:;如果学习率 r 较大使更新后的值w为较大的负值,那么很可能在下次迭代中由于, 使变为0,此时w再也无法更新,神经元节点就“死了”。简单来说:Relu在输入小于0的时候,导数为0,在反向传播的过程中,无法更新参数w,如果恰好此时的w使神经元的Relu在输入小于0,那么该神经元dead。

4、LeakyRelu (变体PRelu,RRelu)

  • 优点:具备Relu的优点;负值部分引入参数,减弱梯度消失的问题;
  • 缺点:输出非零均值;因为往往的值很小,依然会陷入接近梯度消失的问题;

5、ELU (Exponential Linear Units)

  • 优点:具备Relu的优点;无Dead Relu问题;输出的均值接近0,zero-centered;
  • 缺点:引入参数且计算量大;实际应用中并没有总是优于Relu的表现;

6、MaxOut

MaxOut为神经网络的一层,类似于池化层,其作用等同于激活函数。从公式上看类似于maxpooling,下采样。

7、softmax

归一化指数函数,逻辑函数的一种推广;将K维向量映射到0,1之间的另一个K维向量中,且映射后的向量和为1。化

特别的,多项逻辑回归和线性判别分析中

  • 优点:Softmax函数实际上是有限项离散概率分布的梯度对数归一,因此,Softmax函数在包括多项逻辑回归,多项线性判别分析,朴素贝叶斯分类器和人工神经网络等的多种基于概率的多分类问题方法中都有着广泛应用;
  • 缺点:应用于多分类时要求各分类独立;
    softmax求导:其导数为一雅可比矩阵;求导方法1求导方法2

三、极大似然估计(参数估计)

参考博客:https://blog.csdn.net/qq_39355550/article/details/81809467

四、参数更新

1、Vanilla update

$alpha$为learning rate(学习速率)

2、Momentum update

$\alpha$为learning rate(学习速率),$\mu$为动量

3、Nesterov Momentum

4、SGD

5、Adagrad

6、Adam

五、卷积深入理解

卷积公式:

离散形式:

统计学中,加权的滑动平均是一种卷积。概率论中,两个统计独立变量X与Y的和的概率密度函数是X与Y的概率密度函数的卷积。声学中,回声可以用源声与一个反映各种反射效应的函数的卷积表示。电子工程与信号处理中,任一个线性系统的输出都可以通过将输入信号与系统函数(系统的冲激响应)做卷积获得。物理学中,任何一个线性系统(符合叠加原理)都存在卷积。

CNN卷积的操作,可以理解为在频域上的DNN;此外卷积核在特征图上的stride可以理解为特征的生成过程。