zoukankan      html  css  js  c++  java
  • 深度学习二:概率和反向传播的变种

    概率

    高斯分布

    高斯分布(Gaussian Distribution)

    又叫正态分布(Normal Distribution), 记作(N(μ,σ^2)),概率密度和为 1。

    [P(x)=frac{1}{sqrt{2 pi} sigma} e^{-frac{1}{2sigma^2}(x-mu)^2}​ ]

    • (mu) = mean, 数学期望 /mu/。(mu) 是正态分布的位置参数,描述正态分布的集中趋势位置。概率规律为取与 (mu) 邻近的值的概率大,而取离μ越远的值的概率越小。正态分布以 (X=mu) 为对称轴,左右完全对称。正态分布的期望、均数、中位数、众数相同,均等于 (mu)
    • (sigma) = standard deviation 标准偏差 /sigma/。(sigma) 描述正态分布资料数据分布的离散程度,(sigma) 越大,数据分布越分散,(sigma) 越小,数据分布越集中。也称为是正态分布的形状参数,(sigma) 越大,曲线越扁平,(sigma) 越小,曲线越瘦高。
    • (sigma^2) = variance 方差
    • (mu) = 0,(sigma) = 1 的时候,高斯分布是标准正态分布。

    多元高斯

    独立多元高斯分布

    多元高斯分布(Multivariate Gaussian),假设 n 个变量 (x=[x_1,x_2,⋯,x_n]^T) 互不相关, 且服从正态分布,各个变量的均值 (E(x)=[μ_1,μ_2,⋯,μ_n]^T) ,标准偏差为 (σ(x)=[σ_1,σ_2,⋯,σ_n]^T) ,根据联合概率密度公式:

    [f(x)=p(x_1,x_2....x_n)=p(x_1)p(x_2)....p(x_n)=frac{1}{sqrt{2pi}^nsigma_1sigma_2...sigma_n}e^{-frac{(x_1-mu_1)^2}{2sigma_1^2}-frac{(x_2-mu_2)^2}{2sigma_2^2}...-frac{(x_n-mu_n)^2}{2sigma_n^2}} ]

    化简为:

    [P_{mu,sigma}|(x) = prod_iP_{mu_i,sigma_i}(x_i) ]

    如,令(z^2 = frac{(x_1-mu_1)^2}{sigma_1^2}+frac{(x_2-mu_2)^2}{sigma_2^2}...+frac{(x_n-mu_n)^2}{sigma_n^2}) , (sigma_z = sigma_1sigma_2...sigma_n), 则

    [f(z) = frac{1}{sqrt{2pi}^nsigma_z}e^-frac{z^2}{2} ]

    最大似然估计

    Maximum Likelihood Estimation 简称 MLE,又叫极大似然估计,是根据数据采样来估计概率分布的经典方法,事实上,概率模型的训练过程就是参数估计(parameter estimation)过程。

    首先,我们声明一个假设 (h in H) ,令 (D_c) 表示训练集 D 中第 c 类样本组成的集合,那么 (P(D_c|h)) 是在假设 h 的情况下,数据 (D_c) 产生的概率。则假设 h 对数据集 (D_c) 的似然是

    [P(D_c|h) = prod_{x in D_c}P(x|h) ]

    对 h 进行最大似然估计,就是寻找能最大化似然(P(D_c|h))的假设h。

    在上式中,用到了连乘操作,我们都知道连乘操作中,一旦数据过大会造成下溢,所以我们通常使用对数似然(Log-Likelihood)公式来替代上面的连乘公式:

    [LL(h) = log P(D_c|h) = sum_{x in D_c}logP(x|h) ]

    那么最大似然估计的目的就可以写为公式:

    [h_c = argmax_{h_c}LL(h_c) ]

    既然我们已经了解了最大似然估计,知道它可以用来求参数值,那么我们现在可以来求高斯分布的参数 (mu_c)(sigma_c^2)的最大似然估计

    [mu_c = frac{1}{|D_c|}sum_{x in D_c}x ]

    [sigma_c^2 = frac{1}{|D_c|}sum_{x in D_c}(x - mu_c)(x - mu)^T ]

    即,通过最大似然估计求得的正态分布均值就是样本均值,方差就是 ((x - mu_c)(x - mu)^T) 的均值。

    最小二乘法的推导

    交叉熵的推导

    贝叶斯法则

    Bayes' Law,又称贝叶斯定理(Bayes' theorem)或者贝叶斯规则(Bayes' rule)

    公式:事件A发生的情况下事件B发生的概率:

    [P(A|B) = frac{P(B|A)P(A)}{P(B)} ]

    通常用于已经观察到一个结果后,评估潜在的原因的可能性,可以将上述公式写成:

    [P(Cause|Effect) = frac{P(Effect|Cause)P(Cause)}{P(Effect)} ]

    贝叶斯推论 Bayes'Inference

    • (P(D|h)) :所有假设中数据D在假设h下生成的概率($h in H $),其实就是我们上面提到的似然函数
    • (P(h|D)) :在数据D被观察到的情况下,假设h是正确的概率,后验概率(posterior)
    • (P(h)):先验概率(prior)
    • 贝叶斯定理(Bayes' theorem):
      • (P(h|D)P(D) = P(D|h)P(h))
      • (P(h|D) = frac{P(D|h)P(h)}{P(D)})

    也就是说贝叶斯推论是将后验概率推导为两个先验概率和似然函数的结果。

    反向传播的变种

    Softmax

    这里说的变种,主要是针对损失函数的变种,除了均方误差和交叉熵,我们还可以利用 Softmax 误差(Softmax Error)。

    Softmax通常用在处理多分类问题,常用于输出层,将输出转换成概率,输出总和为1。公式为:

    [P_i = frac{e^{z_i}}{sum_{j=1}^N e^{z_j}} ]

    误差为:

    [E = -log P_i = -(z_i - log sum_j e^{z_j}) ]

    其中 N 是输出层神经元的个数,P_i 是第 i 个神经元的输出。从公式中可以看出,Softmax函数的分子是输入信号 (z_i) 的指数函数,分母是所有输入信号的指数函数的和。

    共轭梯度

    Conjugate gradients,是一种给迭代算法,在迭代中最终求得结果。

    自然梯度

    Natural gradients

    权重衰减

    Weight Decay,又叫L2正则化,主要用来抑制过拟合。众所周知,许多的过拟合现象是由于权重参数取值过大引起的。而权重衰退法通过对大的权重进行惩罚和抑制过拟合。假设损失函数利用平方损失函数(MSE),则引入 L2 正则化后的误差公式为:

    [E = frac{1}{2} sum_i(z_i-t_i)^2 + frac{lambda}{2} sum_j w_j^2 ]

    • (lambda) :控制正则化强度的超参数,/lambda/。该值越大,对大的权重惩罚的就越重。
    • (frac{lambda}{2}):是为了求导之后消去移下来的 2.
    • (w^2_j): 平方范数,square norm。 (w^Tw)
    • 我们更新权重的公式也相应改变为 (wleftarrow w - eta frac{delta E}{delta w} - eta lambda w).
    • 由公式可以看出,如果一个权重越大,则相当于误差越大,在调整权重的时候也会调整的幅度更大。这样相当于我们鼓励整个神经网络都将权重保持在较小的值上,也就达到了抑制过拟合的作用。

    动量

    Momentum,这是一个从物理学中引申出的概念。Momentum 的出现主要是为了解决随机梯度下降法(SGD)的缺点。

    SGD的缺点:如果函数的形状非均向,梯度的方向没有指向最小值的方向,那么像SGD这种一直沿着梯度方向前进的算法就变得不那么高效,如下图,这是方程 (f(x,y)=frac{1}{20}x^2+y^2) 的图像:

    该方程的等高线是沿x轴方向延申的椭圆状。

    该方程的梯度如下,y 轴方向上梯度大,x 轴方向上梯度小,从图中可以看出,虽然 (f(x, y)) 的最小值在 ((0, 0)) 上,但是很多位置上的梯度方向没有指向 ((0,0)) 点:

    我们应用一下SGD,可以看到路径如图所示,沿着“之”字型移动,效率非常的低。:

    为了避免 SGD 的这个缺点,我们考虑利用动量方法来替代,Momentum适合用来处理高曲率、小但一致的梯度,或者带噪声的梯度,公式如下。

    [v leftarrow alpha v - eta frac{delta E}{delta w} ]

    [wleftarrow w + v ]

    • (w):要更新的权重参数
    • (frac{delta E}{delta w}):损失函数关于 (w) 的梯度
    • (eta):学习率
    • (v):对应物理学中的速度
    • (alpha):承担使物体逐渐减速的任务,例如设定为 0.9。对应物理学中的地面摩擦或者空气阻力。

    第一个公式表示了物体在梯度方向上的受力,在这个力的作用下,物体的速度增加这一个物理法则。如果我们的梯度函数的刨面形状像一个水槽,权重更新的路径就会像一个小球在碗中运动一样。

    出现这样的运动轨迹的原因:动量的更新过程其实就是在减弱横向振动,并放大了向下运动。当连续的梯度指向相同的方向时,步长最大。即如果动量算法总是观察到梯度g,那么它会在方向-g上不停加速,直到达到最终速度,其中步长大小为(由(v leftarrow alpha v - eta frac{delta E}{delta w})得来)

    [frac{eta frac{delta E}{delta w}}{1-alpha} ]

    如果 (alpha) = 0.9,(1-alpha) = 0.1,带入上述公式,即动量中最大速度是SGD中的10倍,这个提升是显而易见的。

    注:在实际应用中,(alpha) 初始值一般设置的比较小如0.5,0.9,0.99,然后逐渐增大,但是 (alpha) 的调整没有 (eta) 的调整重要。

    常见面试题

    • L1和L2正则化的区别
    • 如何防止过拟合/过拟合的解决办法
    • 方差偏差的分解公式
    • 用过哪些 Optimizer,效果如何
  • 相关阅读:
    南阳1071
    hdu5110 dp
    hdu1199 线段树
    hdu5107 线段树
    hdu5106 数位dp
    hdu 5103 状态压缩dp
    C Strange Sorting
    hdu5102 枚举每条边的长度
    uva672
    uva473
  • 原文地址:https://www.cnblogs.com/jyroy/p/13731112.html
Copyright © 2011-2022 走看看