1. 激活函数

深度学习常见激活函数介绍及代码实现 - UCloud云社区

1. ReLU

线性整流函数(Linear rectification function), 又称修正线性单元, 是一种人工神经网络中常用的激活函数(activation function), 通常指代以斜坡函数及其变种为代表的非线性函数.

Untitled

$$ f(x)=max(0,x) $$

2. Sigmoid

  • 缺点

    sigmoid有一个梯度消失的问题, $|z|>4$(变量值很大或很小)的时候, 梯度就快消失了(趋近于0).

3. Tanh

$$ f(x)=\tanh (x)=\frac{\left(e^{x}-e^{-x}\right)}{\left(e^{x}+e^{-x}\right)} $$

4. Logistic Regression (LR 逻辑回归)

[ML] 逻辑回归与 Softmax 回归

  • sigmoid函数

  • LR 模型是用线性回归模型的结果逼近真实标记 ($Y=1$ ) 的对数几率 (log odds,logit). 所谓的几率表示事件发生的概率 $P(Y=1|x)$ 与事件不发生的概率 $P(Y=0|x)$ 之比

    $$ odds=\frac{P(Y=1|x)}{1-P(Y=1|x)} $$

    那么对数几率就是对几率取自然对数的结果

    $$ \text { logit(odds) }=\ln \frac{P(Y=1 \mid x)}{1-P(Y=1 \mid x)}=w^{T} x + b $$
  • 给定一组训练数据, 要求解上述的条件概率分布, 可以应用极大似然估计法 (Maximum Likelihood Estimation, MLE) 估计模型的参数. 极大似然估计, 即是对样本的似然函数 L 进行求参.

    $$ L\left(x_{1}, x_{2}, \cdots, x_{n} ; \hat{\theta}\right)=\underset{\theta \in \Theta}{max}L\left(x_{1}, x_{2}, \cdots, x_{n} ; \theta\right) $$

    令 $P(Y=1 \mid x)=\pi(x), P(Y=0 \mid x)=1-\pi(x)$, 似然函数为:

    $$ \prod_{i=1}^{n}\left[\pi\left(x_{i}\right)\right]^{y_{i}}\left[1-\pi\left(x_{i}\right)\right]^{1-y_{i}} $$

    对数似然函数(求最大化):

    $$ L(w)=\sum_{i=1}^{n}\left[y_{i} \log \pi\left(x_{i}\right)+\left(1-y_{i}\right) \log \left(1-\pi\left(x_{i}\right)\right)\right] $$
    • $\pi(x)=\frac{e^{w^{T} x}}{1+e^{w^{T} x}}$
    • $w=\left(w^{(1)}, w^{(2)}, \cdots, w^{(d)}, b\right)^{T} \in \mathbb{R}^{d+1}$
    • $x=\left(x^{(1)}, x^{(2)}, \cdots, x^{(d)}, 1\right)^{T} \in \mathbb{R}^{d+1}$

    最后的优化问题(转化为最小化):

    $$ \underset{w}{min}-\frac{1}{n} \sum_{i=1}^{n}\left[y_{i} \log \pi_{w}\left(x_{i}\right)+\left(1-y_{i}\right) \log \left(1-\pi_{w}\left(x_{i}\right)\right)\right] $$

    针对上述最小化问题,采用 Newton method, quasi-Newton method (BFGS, L-BFGS), conjugate gradient 或者梯度下降法 (引入超参数 $\alpha$ ) , SGD 等等求都可以.

    之后就是求解.

  • 关联知识: 机器学习模型介绍 - 1. Logistic Regression

5. 多项逻辑回归模型(Multinomial Logistic Regression; softmax regression)

2. 损失函数

  • 损失函数的目的: 度量真实值和预测值之间的距离

2.1. 交叉熵(cross entropy)

2.1.1. cross entropy

  • 公式推导过程

    你真的理解交叉熵损失函数了吗?_哔哩哔哩_bilibili

    Untitled

    $$ \begin{aligned}\operatorname{argmax} \log \prod_{\mathrm{n}} \prod_{\mathrm{i}} \hat{Y}_{i}^{Y_{i}}&=\operatorname{argmax} \sum_{n} \sum_{i} Y_{i} \log \hat{Y}_{i}\\&=\operatorname{argmin}-\sum_{n} \sum_{i} Y_{i} \log \hat{Y}_{i}\end{aligned} $$
    • $n$表示训练样本数; $i$表示分类数量. 因为只要找到最值就可以了, 所有这里是额外加一个$log$的. 利用$log$似然函数的特性, 把连乘提到$log$左边变成连加; 加上负号求最小值.
  • categorial_crossentropy函数和sparse_categorial_crossentropy函数:

    • 相同之处在于它们的 $y$ 都在 $(0,1)$ 之间
    • 不同在于$Y_i$:
      • 如果 $Y_i$ 的结果是one-hot encoded, 就是用categorical_crossentropy. 例(三分类问题): $[1,0,0] , [0,1,0], [0,0,1]$.
      • 如果 $Y_i$ 的结果是整型, 使用sparse_categorical_crossentropy. 例(三分类问题): $[1], [2], [3]$.

2.1.2. Binary cross entropy

  • 二元交叉熵是二分类问题中常用的一个Loss损失函数, 是用来评判一个二分类模型预测结果的好坏程度. 公式如下:

    $$ loss=-\frac{1}{N} \sum_{i=1}^{N} \left[y_{i} \cdot \log \left(p\left(y_{i}\right)\right)+\left(1-y_{i}\right) \cdot \log \left(1-p\left(y_{i}\right)\right)\right] $$
    • 其中, $y_i$ 是二元标签 0 或者 1, $p(y_i)$ 是模型的预测值为标签 $y_i$ 的概率
    • 之所以加负号是因为概率在$(0,1)$, 取log之后是负的, 用负数表示信息不符合我们的认知逻辑,所以取负让结果为正.
    • 就是说模型预测值越接近于gt值, loss越小; 越远离gt值, loss越大.
      • 对于标签 $y$ 为 1 的情况, 如果预测值 $p(y)$ 趋近于 1, 那么损失函数的值应当趋近于 0. 反之, 如果此时预测值 $p(y)$ 趋近于 0, 那么损失函数的值为 $\infty$. 如下图所示.

        Untitled

      • 对于标签 $y$ 为 0 的情况如下

        Untitled

2.2. Softmax (归一化指数函数)

$f_{i}(\vec{x})=\frac{e^{x_{i}}}{\sum_{j=1}^{J} e^{x_{j}}} \quad \text { for } i=1, \ldots, J$

将原本的输出映射到区间$(0,1)$之间, 所有的值和为1

算是一种概率

好处:

3. 过拟合问题

当讨论到模型的过拟合问题时, 不妨对算法的期望泛化误差进行讨论。我们已经知道: 泛化误差可 以分解为 bias, variance, noise 之和。

偏差 (bias) 衡量模型的期望预测与真实结果的偏离程度(模型的拟合能力);方差 (variance) 衡量了同样大小的训练集的变动所导致的学习性能的变化, 即刻画了数据扰动 (数据变化对模型预测能力)所造成的影响(或者理解为在测试集上的表现)。噪声表达了在 当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度.

  • 过拟合: low bias, high variance
  • 欠拟合: high bias, low varience

3.1. 一般处理方法

  1. 减少特征的数量: 人工篮选特征、嵌入式选择
  2. 正则化:保持所有特征当时减小或者增大特征参数 $w^{(i)}$, 使得所有变量对最终的预测只贡献一 点比例
  • 这里一般采用L1或L2正则化:(损失函数推导见拓展部分)

    $$ \begin{gathered}\min _{w, c}\|w||_1 + C \sum_{i=1}^n \log \left(\exp \left(-y_i\left(x_i^T w+c\right)\right)+1\right) \\\min _{w, c} \frac{1}{2} w^T w + C \sum_{i=1}^n \log \left(\exp \left(-y_i\left(x_i^T w+c\right)\right)+1\right)\end{gathered} $$

4. Dropout

  • 以一定的概率随机地“临时丢弃”一部分神经元节点.
  • 优点, 解决过拟合的原因:
    • 训练时:
      • 减小网络的大小
      • 减少神经元之间复杂的共适应关系(co-adaptations), 这样权值的更新不再依赖于有固定关系的隐含节点的共同作用,阻止了某些特征仅仅在某个特定特征下才有效果的情况.
        • 人工神经网络的一个核心思想是分布式表征(Distributed Representation), 当我们表述一个概念的时候, 神经元和概念之间不是一对一对应映射(map)存储的,它们之间的关系是多对多。当一个节点发生故障的时候, 其他对应的节点能表达概念.
      • 每次迭代所得到的不同结构的神经网络, 比只在单个健全网络上进行特征学习, 其泛化能力来得更加健壮.
    • 测试时:
      • 将参与学习的节点和那些被隐藏的节点以概率p加权求和,综合计算得到网络的输出。(算是一种集成学习(Ensemble Learning))

  • 训练阶段每个神经元以概率p被保留
  • 测试阶段每个神经元都激活, 权重W要乘以p, 输出pW
    • 因为输入将被dropout的神经元的值为$w$, 训练时dropout之后的期望是$E=pw+(1-p)*0$, 在预测阶段总是激活, 所以为了保持相同的输出期望, 所以$w \to pw$.

5. 目标函数, 代价函数, 损失函数

  1. 代价函数:
    • 代价函数=损失函数, loss function越小, 标识模型对数据的拟合越好
  2. 目标函数:
    • 在代价函数的最优化经验风险的基础上加入优化结构风险策略(eg: L2正则化)的函数表达式. 不加结构风险策略时, 目标函数就与代价函数一致了.

6. 损失函数的使用场景

7. k-fold交叉验证 Method of Stacking

  1. (左半边) 训练时每个model都用k-fold cross validation训练得到k个模型,测试时每个model的k个模型预测测试集得到的结果取平均
  2. (右半边) 训练时使用level2 model训练 验证集的合集和训练集,测试时使用level2 model来预测