文章汇总

目录

P1:十种激活函数优缺点

激活函数(Activation Function)是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。

1.Sigmoid激活函数

图片

图片

  • 输出范围0到1,对每个神经元进行了归一化;
  • 用于预测概率作为输出的模型;
  • 梯度平滑,避免跳跃的输出值;
  • 函数可微,可找到任意两点曲线斜率;
  • 明确的预测,非常接近1或0

优缺点:倾向于梯度消失;函数输出不以0为中心,会降低权重更新效率;指数运算,计算机运算慢。

2.Tanh / 双曲正切激活函数

图片

图片

它比 sigmoid 函数更有一些优势

  • 输入较大较小,两者输出基本是平滑,梯度小,不利于权重更新。但Tanh输出间隔为1,以0为中心,比sigmoid好;
  • 负输入强映射为负,零输入映射为接近0

在一般的二元分类问题中,tanh 函数用于隐藏层,而 sigmoid 函数用于输出层,但这并不是固定的,需要根据特定问题进行调整。

3.ReLU激活函数

图片

图片

优点

  • 当输入为正时,不存在梯度饱和问题。
  • 计算速度快得多。

缺点

  • Dead ReLU 问题。输入为负,函数失效,在反向传播中,输入为负会导致梯度为0(sigmoid和tanh也是)
  • 不以0为中心

4.Leaky ReLU

图片

图片

为什么 Leaky ReLU 比 ReLU 更好?

  1. Leaky ReLU 通过把 x 的非常小的线性分量给予负输入(0.01x)来调整负值的零梯度(zero gradients)问题;

  2. leak 有助于扩大 ReLU 函数的范围,通常 a 的值为 0.01 左右;

  3. Leaky ReLU 的函数范围是(负无穷到正无穷)。

    理论上来讲,Leaky ReLU 具有 ReLU 的所有优点,而且 Dead ReLU 不会有任何问题,但在实际操作中,尚未完全证明 Leaky ReLU 总是比 ReLU 更好。

5.ELU

图片

图片

ELU 的提出也解决了 ReLU 的问题。

ELU 具有 ReLU 的所有优点,并且:

  • ELU 有负值,激活的平均值接近零,梯度接近自然梯度,学习更快;
  • 以0为中心;
  • 在较小的输入下会饱和至负值,减少前向传播的变异和信息;

一个小问题:计算强度更高

6.PReLU(Parametric ReLU)

图片

图片
  • a_i= 0,则 f 变为 ReLU
  • a_i> 0,则 f 变为 leaky ReLU
  • a_i 是可学习的参数,则 f 变为 PReLU

PReLU 的优点如下:

  1. 在负值域,PReLU 的斜率较小,这也可以避免 Dead ReLU 问题
  2. 与 ELU 相比,PReLU 在负值域是线性运算。尽管斜率很小,但不会趋于 0。

7.Softmax

图片

用于多类分类问题的激活函数

对于长度为 K 的任意实向量,Softmax 可以将其压缩为长度为 K,值在(0,1)范围内,并且向量中元素的总和为 1 的实向量。

图片

Softmax 与正常的 max 函数不同:max 函数仅输出最大值,但 Softmax 确保较小的值具有较小的概率,并且不会直接丢弃。我们可以认为它是 argmax 函数的概率版本或「soft」版本。

Softmax 函数的分母结合了原始输出值的所有因子,这意味着 Softmax 函数获得的各种概率彼此相关。

Softmax 激活函数的主要缺点是:

  1. 在零点不可微;
  2. 负输入的梯度为零,这意味着对于该区域的激活,权重不会在反向传播期间更新,因此会产生永不激活的死亡神经元。

8.Swish

图片

公式:【y = x * sigmoid (x)

Swish 的设计受到了 LSTM 和高速网络中 gating 的 sigmoid 函数使用的启发。我们使用相同的 gating 值来简化 gating 机制,这称为 self-gating
(self-gating 的优点在于它只需简单的标量输入,而普通的 gating 需要多个标量输入。这使得Swish 之类的self-gated 激活函数能够轻松替换以单个标量为输入的激活函数(例如 ReLU),而无需更改隐藏容量或参数数量。)

优点

  • 无界性有助于防止慢速训练期间,梯度逐渐接近 0 并导致饱和;

    (同时,有界性也是有优势的,因为有界激活函数可以具有很强的正则化,并且较大的负输入问题也能解决);

  • 导数恒>0;

  • 平滑度在优化和泛化中起了重要作用

9.Maxout

图片

Maxout 层,激活函数是输入的最大值,因此只有2个maxout节点的多层感知机就可以拟合任意的凸函数.

单个 Maxout 节点可以解释为对一个实值函数进行分段线性近似 (PWL) ,其中函数图上任意两点之间的线段位于图(凸函数)的上方。

图片

由两个 Maxout 节点组成的 Maxout 层可以很好地近似任何连续函数

10.Softplus

图片

Softplus 函数:f(x)= ln(1 + exp x)

Softplus 的导数为 1/ (1 +exp(−x )),也称为 logistic / sigmoid 函数。

Softplus 函数类似于 ReLU 函数,但是相对较平滑,像 ReLU 一样是单侧抑制。

它的接受范围很广:(0, + inf)。

P2:简单的交叉熵损失函数,你真的懂了吗?

交叉熵公式

1.交叉熵损失函数的数学原理

在二分类问题模型,模型的最后通常会经过一个 Sigmoid 函数,输出一个概率值,这个概率值反映了预测为正类的可能性:概率越大,可能性越大。

图片

图片

从极大似然性角度,将上述情况整合一下:

图片

我们希望的是概率 P(y|x) 越大越好。首先,我们对 P(y|x) 引入 log 函数,因为 log 运算并不会影响函数本身的单调性。图片

希望 log P(y|x) 越大越好,反过来,只要 log P(y|x) 的负值 -log P(y|x) 越小就行了。

那我们就可以引入损失函数,且令 Loss = -log P(y|x)即可。则得到损失函数为图片

N 个 Loss 叠加:图片

2.交叉熵的直观理解

单个样本的交叉熵损失函数:图片

当y=1时,图片

L与预测输入的关系为:图片

横坐标是预测输出,纵坐标是交叉熵损失函数 L。

预测输出越接近真实样本标签 1,损失函数 L 越小;预测输出越接近 0,L 越大。

当 y = 0 时:图片

图片

预测输出越接近真实样本标签 0,损失函数 L 越小;预测函数越接近 1,L 越大。

函数的变化趋势也完全符合实际需要的情况

其他:预测输出与 y 差得越多,L 的值越大,也就是说对当前模型的 “ 惩罚 ” 越大,而且是非线性增大,是一种类似指数增长的级别。这是由 log 函数本身的特性所决定的。这样的好处是模型会倾向于让预测输出更接近真实样本标签 y。

3.交叉熵的其他形式

sigmoid函数由如下性质:1-g(s)=g(-s)

图片

图片

整合一下:图片

引入log并取反,可得损失函数

图片

图片

图片

y=+1,s 越接近真实样本标签 1,损失函数 L 越小;s 越接近 -1,L 越大。

图片

y=-1,s 越接近真实样本标签 -1,损失函数 L 越小;s 越接近 +1,L 越大。

第一种形式(2中的)在实际应用中更加常见,例如神经网络等复杂模型;

第二种(3中的)多用于简单的逻辑回归模型。

P3:傅里叶变换最清晰通俗的,没有之一,直接把你当做小学生来讲

1.傅里叶变换是什么

傅里叶变换把一个输入信号分解成一堆正弦波的叠加

2.傅里叶变换的作用

傅里叶产生的正弦波不是一般的正弦波,而是“三维”的正弦波。

  • 周转圆(绘图)
  • JPEGs(拆分图像,存储重要的东西)

3.总结

  • 傅里叶变换让我们输入一个事物,并将其分解为不同频率的成分
  • 频率告诉我们有关数据的一些基本属性
  • 并且可以通过仅存储重要的成分来压缩数据
  • 我们还可以用傅里叶变换的原理,通过一堆圆圈制作看起来很酷的动画

P4:机器学习中的MLE、MAP、贝叶斯估计

1.MLE(最大似然估计)

一般的学习流程分为“学习过程”和“预测过程”。

第一种策略的方案可以用下面的图来表示。在这里,学习过程相当于从所有系的学生中挑选出成绩最好计算历史平均分数,并选出最高的)的学生。

图片

2.MAP(最大后验估计)

第二种策略,我们听取了老师的建议与MLE相比,唯一的区别在于这里多出了老师的评价,我们称之为 Prior。也就是说我们根据学生以往的成绩并结合老师评价,选择了一位我们认为最优秀的学生(可以看成是模型)

图片

3.Bayesian(贝叶斯模型)

第三种策略,让所有人都去参与回答张三的难题,但最后我们通过一些加权平均的方式获得最终的答案。

在第三种策略之下,给定过去考试成绩(D)和老师的评价(Prior), 我们的目标是估计学生权重的分布,也称之为Posterior Distribution。

一旦我们获得了这个分布(也就是每一位学生的权重),接下来就可以通过类似于加权平均的方式做预测了,那些权重高的学生话语权自然就越大。

图片

4.一些问题

Q1: 随着我们观测到越来越多的数据,MAP估计逐步逼近MLE,这句话怎么理解?

当我们观测到的数据越来越多的时候,我们从数据中获取的信息的置信度是越高的相反老师提供的反馈(Prior)的重要性就会逐渐降低理想情况下,当我们拥有无穷多的数据样本时,MAP会逼近MLE估计,道理都是一样的。

Q2: 为什么贝叶斯估计会比MLE, MAP难?

MLE 和MAP都是在寻找一个最优秀的学生。贝叶斯估计则是在估计每一位学生的权重。贝叶斯的权重计算的时间复杂度会更高,操作会更复杂。

5.总结

  • 每一个模型定义了一个假设空间,一般假设空间都包含无穷的可行解;
  • MLE不考虑先验(prior),MAP和贝叶斯估计则考虑先验(prior)
  • MLE、MAP是选择相对最好的一个模型(point estimation), 贝叶斯方法则是通过观测数据来估计后验分布(posterior distribution),并通过后验分布做群体决策,所以后者的目标并不是在去选择某一个最好的模型;
  • 当样本个数无穷多的时候,MAP理论上会逼近MLE
  • 贝叶斯估计复杂度大,通常用MCMC等近似算法来近似

P5:一文让你通俗理解奇异值分解

1.特征值与奇异值

1.1.特征值

Av = λv

A:方阵;v:A的特征向量; λ:特征向量v对应的特征值

一个矩阵的一组特征向量是一组正交向量。

特征值分解是将一个矩阵分解成下面的形式:图片

其中Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值。

一个矩阵其实就是一个线性变换,因为一个矩阵乘以一个向量后得到的向量,其实就相当于将这个向量进行了线性变换

特征值分解可以得到特征值与特征向量特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么,可以将每一个特征向量理解为一个线性的子空间。不过,特征值分解也有很多的局限,比如说变换的矩阵必须是方阵

1.2.奇异值

奇异值分解是一个能适用于任意的矩阵的一种分解的方法图片

A:m x n的矩阵;U:m x m的方阵,内部的向量正交,U内的向量称为左奇异向量;∑:m x n的矩阵,除了对角线上的元素(奇异值),其余均为0 ;V':n x n的方阵,内部的向量正交,V里面的向量称为右奇异向量

图片

如何对应奇异值和特征值?

首先,将A'A相乘可得一个方阵,可以对应求得相应的特征值、特征向量。

图片

这里的v就是上述等式中的右奇异向量。此外还可以得到:

图片

这里的σ就是上面说的奇异值,u就是上面说的左奇异向量

奇异值σ跟特征值类似,在矩阵Σ中也是从大到小排列,而且σ的减少特别的快。我们可以用前r大的奇异值来近似描述矩阵,这里定义一下部分奇异值分解:图片r是一个远小于m、n的数。

图片

右边的三个矩阵相乘的结果将会是一个接近于A的矩阵。

r越接近于n,则相乘的结果越接近于A。

而这三个矩阵的面积之和(在存储观点来说,矩阵面积越小,存储量就越小)要远远小于原始的矩阵A,我们如果想要压缩空间来表示原矩阵A,我们存下这里的三个矩阵:U、Σ、V就好了。

称作「奇异值」换个说法就是称作「主特征值」

奇异值分解的几何含义为:对于任何的一个矩阵,我们要找到一组两两正交单位向量序列,使得矩阵作用在此向量序列上后得到新的向量序列保持两两正交

奇异值的计算,计算复杂度O(N^3),矩阵规模越大1,计算复杂度呈三次方增长,需要并行计算参与。

Lanczos迭代就是一种解对称方阵部分特征值的方法(之前谈到了,解A’* A得到的对称方阵的特征值就是解A的右奇异向量),是将一个对称的方程化为一个三对角矩阵再进行求解。

2.奇异值的直观应用

  1. 图片压缩

图片

奇异值往往对应着矩阵中隐含的重要信息,且重要性和奇异值大小正相关。每个矩阵A都可以表示为一系列秩为1的“小矩阵”之和,而奇异值则衡量了这些“小矩阵”对于A的权重

  1. 图像去噪

如果一副图像包含噪声,我们有理由相信那些较小的奇异值就是由于噪声引起的。当我们强行令这些较小的奇异值为0时,就可以去除图片中的噪声。

奇异值分解还广泛的用于主成分分析(Principle Component Analysis,简称PCA)和推荐系统(如Netflex的电影推荐系统)等。

P6:一文详解深度学习中的Normalization:BN/LN/WN

1.背景知识

  • 独立同分布,即independent and identically distributed,简称为 i.i.d.指随机过程中,任何时刻的取值都为随机变量,如果这些随机变量服从同一分布,并且互相独立,那么这些随机变量是独立同分布。
    • 独立同分布的数据可以简化常规机器学习模型的训练、提升机器学习模型的预测能力
  • 白化,即whitening,是一个重要的数据预处理步骤。白化最典型的方法就是PCA。白化一般包含两个目的:
    • (1)去除特征之间的相关性 —> 独立;
    • (2)使得所有特征具有相同的均值和方差—> 同分布。
  • Internal Covariate Shift,内部协变量偏移,也叫ICS。可以理解为,在多层网络训练中,后面层次的神经网络的节点受到前面层次的网络参数变化导致该层输入的数据的分布发生了变化。泛指,在多层数据网络中各层之间参数变化引起的数据分布发生变化的现象。
    • ICS导致的问题:简单来说,就是使得每个神经元的输入数据不再是“独立同分布”了
      • 其一,上层参数需要不断适应新的输入数据分布,降低学习速度。
      • 其二,下层输入的变化可能趋向于变大或者变小,导致上层落入饱和区,使得学习过早停止。
      • 其三,每层的更新都会影响到其它层,因此每层的参数更新策略都要尽可能谨慎

2.Normalization的通用框架与基本思想

  1. 基本思想:在将 图片 送给神经元之前,先对其做平移和伸缩变换, 将 图片 的分布规范化成在固定区间范围的标准分布。

  2. 通用变换框架就如下所示:图片

(1) 图片 是平移参数(shift parameter), 图片 是缩放参数(scale parameter)。通过这两个参数进行 shift 和 scale 变换:图片

得到的数据符合均值为 0、方差为 1 的标准分布

(2) 图片 是再平移参数(re-shift parameter), 图片 是再缩放参数(re-scale parameter)。将 上一步得到的 图片 进一步变换为: 图片

最终得到的数据符合均值为 图片 、方差为 图片 的分布

  1. 由(1)标准分布再经由(2)变为符合均值b,方差g^2分布的原因: 为了保证模型的表达能力不因为规范化而下降

    • 充分利用底层学习的能力:第一步的变换将输入数据限制到了一个全局统一的确定范围(均值为 0、方差为 1)。下层神经元可能很努力地在学习,但不论其如何变化,其输出的结果在交给上层神经元进行处理之前,将被粗暴地重新调整到这一固定范围

    • 保证获得非线性的表达能力:通过区分饱和区和非饱和区,使得神经网络的数据变换具有了非线性计算能力。而第一步的规范化会将几乎所有数据映射到激活函数的非饱和区(线性区),仅利用到了线性变化能力,从而降低了神经网络的表达能力。而进行再变换,则可以将数据从线性区变换到非线性区,恢复模型的表达能力。

  2. 由(1)标准分布再经由(2)变为符合均值b,方差g^2分布,会不会没效果?

不会。因为,再变换引入的两个新参数 g 和 b,可以表示旧参数作为输入的同一族函数,但是新参数有不同的学习动态。在旧参数中, 图片 的均值取决于下层神经网络的复杂关联;但在新参数中, 图片 仅由 图片 来确定,去除了与下层计算的密切耦合。新参数很容易通过梯度下降来学习,简化了神经网络的训练。

  1. 这样的 Normalization 离标准的白化还有多远?

目前的操作,只是映射到了一个确定的区间范围而已。未能达到“独立同分布”。

3.主流Normalization方法梳理

图片

名字 方式 说明 适用场景
BN(batch,纵向规范化) 利用网络训练时一个 mini-batch 的数据来计算该神经元 图片 的均值和方差图片 对单个神经元进行;要求数据整体近似同分布;分布差距较小的mini-batch可以增加模型的鲁棒性;不同神经元的输入经过再平移和再缩放后分布在不同的区间 每个 mini-batch 比较大,数据分布比较接近。(不适用于动态网络结构,RNN结构)
LN(layer,横向规范化) 综合考虑一层所有维度的输入,计算该层的平均输入值和输入方差,然后用同一个规范化操作(同上)来转换各个维度的输入 不受BN中mini-batch的分布影响;不用存mini-batch的均值方差,可以节省存储空间;所有的输入都在同一个区间范围内 可以用于 小mini-batch场景、动态网络场景和 RNN,特别是自然语言处理领域。
WN(weight,参数规范化) 经过规范化之后的y 作为输入送到下一个神经元,应用以 w 为参数的fw(·) 函数定义的变换。最普遍的变换是线性变换,即 img将权重向量w分解为向量方向 img 和向量模 g 两部分:img 将规范化应用于线性变换函数的权重 w ,区别于BN 和 LN 均将规范化应用于输入的特征数据 x;留有与BN/LN结合的余地 避免了 BN 过于依赖 mini-batch 的不足,以及 LN 每层唯一转换器的限制,同时也可以用于动态网络结构。
CN(cosine,余弦规范化) 神经元的经典变换 img 对公式中的 · 作规范化img WN 用权重的模 ||v||对输入向量进行scale,CN在此基础上用||x||对输入向量进行了进一步的scale;CN 通过用余弦计算代替内积计算实现了规范化,去掉scale信息,可能导致表达能力的下降

4.为什么Normalization有效?

  • 权重伸缩不变性

    • 权重 图片 伸缩时,对应的均值和标准差均等比例伸缩,分子分母相抵。
    • 权重伸缩不变性可以有效地提高反向传播的效率。
    • 权重伸缩不变性还具有参数正则化的效果,可以使用更高的学习率。
  • 数据伸缩不变性

    • 数据 图片 按照常量 图片 进行伸缩时,得到的规范化后的值保持不变
    • 数据伸缩不变性仅对 BN、LN 和 CN 成立
    • 数据伸缩不变性可以有效地减少梯度弥散,简化对学习率的选择。

P7:一文通俗讲透树模型

一、树模型的概括

决策树呈树形结构,更通俗来讲,树模型的数学描述就是“分段函数”

学习这样树模型的过程,简单来说就是从有监督的数据经验中学习一个较优的树模型的结构:包含了依次地选择特征、确定特征阈值做划分的内部节点及最终输出叶子节点的数值或类别结果

图片

二、树模型的要素

2.1.树模型的结构

树模型的结构也就是个分段函数,包含了 选定特征做阈值划分(内部节点),以及划分后赋值的分数或类别决策(叶子节点)。

2.1.1.学习树结构的过程

学习树模型的关键在于依据某些学习目标/指标(如划分准确度、信息熵、Gini不纯度、均方误差的增益量)去选择当前最优的特征并对样本的特征空间做非线性准确的划分。

随着切分次数增多,树的复杂度会提高,容易发生过拟合,因此需要剪枝。决策树剪枝的目的是极小化经验损失+结构损失,基本策略有”预剪枝“和”后剪枝“两种策略:①预剪枝:是在决策树生成过程中,限制划分的最大深度、叶子节点数和最小样本数目等,以减少不必要的模型复杂度;②后剪枝:是先从训练集生成一棵完整的决策树,然后用用验证集自底向上地对非叶结点进行考察,若将该节点对应的子树替换为叶子结点(剪枝)能带来决策树的泛化性能提升(即目标函数损失更小,常用目标函数如:loss = 模型经验损失bias+ 模型结构损失α|T|, T为节点数目, α为系数),则将该子树替换为叶子结点

2.1.2.复杂树结构的进阶

  • 树模型的集成学习
    • 单个树模型是比较弱的,且很容易根据特征选择、深度等超参数调节各树模型的多样性。正因为这些特点,决策树很适合通过结合多个的树模型做集成学习进一步提升模型效果。
    • 集成学习是结合一些的基学习器共同学习,来改进其泛化能力和鲁棒性的方法,主流的有两种集成思想:
      • 并行方式(bagging):独立的训练一些基学习器,然后(加权)平均它们的预测结果。代表模型如:Random Forests
      • 串行方式(boosting):一个接一个的(串行)训练基学习器,每一个基学习器主要用来修正前面学习器的偏差。代表模型如:AdaBoost、GBDT及XGBOOST;(扩展:像基于cart回归树的GBDT集成方法,通过引入了损失函数的梯度去代替残差,这个过程也类似局部的梯度下降算法)
  • 线性决策树
    • 原理:把线性回归加到决策树的叶子节点里面(特征划分完后,再用线性模型拟合做决策)
    • 一个简单线性树模型用分段函数来表示如:if x >0, then 2x;代表模型有 linear decision tree, GBDT-PL等模型。

2.2.学习目标(目标函数)

图片

  • 信息增益(information gain)
    • 定义为集合 D 的经验熵 H(D) 与特征 A 给定条件下 D 的经验条件熵 H(D|A) 之差,也就是信息熵减去条件信息熵,表示得知特征X的信息而使得Y的信息的不确定性减少的程度(信息增益越大,表示已知X的情况下, Y基本就确定了)图片
    • 使用信息增益做特征划分的缺点是:信息增益偏向取值较多的特征。当特征的取值较多时,根据此特征划分更容易得到纯度更高的子集,因此划分之后的熵更低,由于划分前的熵是一定的,因此信息增益更大,因此信息增益比较偏向取值较多的特征。
  • 信息增益比
    • 信息增益比定义:是信息增益除以信息熵,这样可以减少偏向取值较多信息熵较大的特征图片
    • 使用信息增益比缺点是:信息增益比偏向取值较少的特征。
    • 综上两种指标,可以在候选特征中找出信息增益高于平均水平的特征,然后在这些特征中再选择信息增益率最高的特征。
  • 基尼系数(分类树)
    • 信息熵图片
    • 基尼系数表征的也是事件的不确定性(不纯度),也都可以看做是对分类误差率的衡量图片
    • 将熵定义式中的“-log(pi)”替换为 1-pi 也就是基尼系数,因为-log(pi)的泰勒近似展开第一项就是1-pi。基尼系数简单来看就是熵的“平替版”,在衡量分类误差的同时,也简化了大量计算。
  • 平方误差损失(回归)
    • 图片

2.3.优化算法

确认学习目标,而依据这个指标去学习具体树结构的方法(优化算法),基本上有几种思路:

  • 暴力枚举:尝试所有可能的特征划分及组合,以找到目标函数最优的树结构。但在现实任务中这基本是不可能的。
  • 自上而下的贪心算法:每一步(节点)都选择现在最优(信息增益、gini、平方误差损失)的特征划分,最终生成一颗决策树,这也是决策树普遍的启发式方法,代表有:cart树、ID3、C4.5树等等
  • 随机优化随机选择特征及划分方式,通常这种方法单树的生长较快且复杂度较高。模型的随机性、偏差比较大(模型的方差相对较小,不容易过拟合,但是bias较大),所以常用集成bagging的思路进一步优化收敛。代表有:Extremely randomized trees(极端随机树)、孤立森林等等.

三、总结

树模型也就是基于已知数据上, 通过以学习目标(降低各划分节点的误差率)为指导,启发式地选择特征去划分特征空间,以各划分的叶子节点做出较"优"的决策结果。所以,树模型有非常强的非线性能力,但是,由于是基于划分的局部样本做决策,过深(划分很多次)的树,局部样本的统计信息可能失准,容易过拟合。

P8:7个步骤详解AdaBoost 算法原理和构建流程(附代码)

1.基本介绍

adaBoost 是集成学习中的一个常见的算法,它模仿“群体智慧”的原理:将单独表现不佳的模型组合起来可以形成一个强大的模型。

Boosting 是最流行的集成学习技术之一。通过建立了一组所谓的弱学习器,即性能略好于随机猜测的模型。将单个弱学习器的输出组合为加权和,代表分类器的最终输出。

AdaBoost是Adaptive Boosting的缩写。自适应Adaptive 是因为一个接一个的建立模型,前一个模型的性能会影响后一个模型的建立过程

AdaBoost 算法会为每个弱学习器分配一个权重

软投票:为每个弱学习器分配一个权重

硬投票:每个弱学习器的结果权重相等

AdaBoost 算法的工作原理

  • 构建第一个弱学习者:找到性能最好的“树桩”
    • 第一步,我们需要寻找一个弱学习者,它可以对我们的目标进行简单得规则判断,并且要比随机猜测要好
      • 一般情况下我们会选择决策树作为弱学习者,这是 AdaBoost 算法最流行的方式:
      • 决策树在所谓的节点处逐步拆分整个数据集。
      • 我们的目标是最小化叶子的基尼不纯度,从而最大化基尼增益,基尼增益是通过两个分割子集的加权不纯度与整个数据集的不纯度之差来计算的。
      • 具体工作:
        • 计算所有特征的基尼系数,选择特征作为第二个“树桩”的根节点;
        • 建造第二个树桩;
        • 将加权误差计算为误分类样本的样本权重之和。
  • 计算“树桩”的误差
    • 为了计算误差值需要为数据集的每条记录引入权重。在第一个“树桩”形成之前,每个实例的权重 w 为 w=1/n,其中 n 对应于数据集的总数据大小,所有权重的总和为 1。
    • 决策树桩产生的误差被简单地计算为“树桩”错误分类目标变量的所有样本权重的总和。
  • 计算“树桩”的权重,也就是“发言权”
    • 集成模型的结果是所有“树桩”预测的加权和。
  • 调整样本权重
  • 第二次运行:形成一个新的自举数据集
    • 使用样本权重来生成一个新的数据集,其中权重更大的样本会被认为在统计上更常见。我使用样本权重将范围0-1分成若干个bins。
    • 然后选择一个介于 0 和 1 之间的随机数,并查找该数字所属的范围的bin,并将样本添加到新数据集中。重复这个过程 N 次,直到我有一个与原始数据集一大小的新数据集。
    • 形成新数据集后,继续重复第一步的工作
  • 重复这个过程,直到达到终止条件
    • 算法会重复我们上面描述的1-5步,直到达到某个终止条件
  • 将弱学习器组合成一个集成模型

所有的步骤总结如下:

  1. 找到最大化基尼收益的弱学习器 h_t(x)(或者最小化错误分类实例的误差)。
  2. 将弱学习器的加权误差计算为错误分类样本的样本权重之和。
  3. 分类器添加到集成模型中
    1. 模型的结果是对各个弱学习器结果的总结。使用上面确定的“发言权重”/加权错误率 (alpha) 对弱学习者进行加权。
  4. 更新发言权重:在加权和误差的帮助下,将 alpha 计算为刚刚形成的弱学习器的“发言权重”。
  5. 使用这个 alpha 来重新调整样本权重
  6. 新的样本权重被归一化,使权重之和为 1
  7. 使用新的权重,通过在 0 和 1 之间选择一个随机数 N 次来生成一个新的数据集,然后将数据样本添加到表示该数据集的新数据集中。
  8. 通过新数据集训练新的弱学习器(与步骤1相同)

P9:小孩都看得懂的 生成对抗网络-GAN

1.GAN 是什么

GAN 的全称是 Generative Adversarial Network,中文是生成对抗网络

图片

GAN 包含了两个神经网络,生成器(generator)和辨别器(discriminator),两者互相博弈不断变强,即生成器产出的东西越来越逼真,辨别器的识别能力越来越牛逼。

2.造假和鉴定

生成器辨别器之间的关系很像造假者(counterfeiter)和鉴定者(Appraiser)之间的关系。

GAN 的最终目标是训练出一个“完美”的造假者,即能让生成让鉴定者都蒙圈的产品。

3.造价鉴定网络?

造假者生成器来建模,鉴定者辨别器来建模。

P10:从矩阵分解到FM的演进、FM如何用于召回和排序以及实现说明

1.协同过滤

协同过滤(Collaborative Filtering,CF)是推荐算法的鼻祖。

协同过滤是根据大家的反馈、评论和意见一起对海量的信息进行过滤,从中筛选出目标用户可能感兴趣的信息的推荐过程。

大致过程,将用户与商品放入一个共现矩阵中,矩阵中的值为某用户对某件商品的点击、评价或者购买行为的度量

我们可以将用户感兴趣的所有商品向量化,记为代表该用户的向量,进而可以计算用户间的相似度。类似的,可以将对商品感兴趣的所有用户向量化,记为代表该商品的向量,进而计算物品之间的相似度

协同过滤的优点:是没有显式的学习过程、可解释性强、简单、速度快。

缺点:协同过滤只考虑了用户和物品的id信息,而无法将用户的属性、物品的属性、上下文考虑在内。并且没有挖掘用户和物品之间的隐含关系。对于一个没有购买过任何商品的新用户,协同过滤模型就不知道推荐什么商品了。协同过滤模型的泛化性差、推荐结果的头部效应明显、处理稀疏向量的能力弱(共现矩阵是非常稀疏的)。

2.矩阵分解 MF

矩阵分解在协同过滤算法中共现矩阵的基础上,加入了隐向量的概念,加强了模型处理稀疏矩阵的能力,针对性地解决了协同过滤存在的主要问题。

大致过程是,将共现矩阵通过“特征值分解”、“奇异值分解”或“梯度下降”进行矩阵分解,得到用户矩阵和物品矩阵

共现矩阵的维度很高但很稀疏,而分解得到的用户矩阵和物品矩阵的维度会降低(取决于隐向量的维度)但很稠密。于是可以通过用户矩阵的隐向量之间的相似度来刻画用户之间的相似度,物品矩阵的隐向量之间的相似度来刻画物品之间的相似度,用户隐向量和物品隐向量之间的内积来刻画用户与物品之间的匹配程度。

矩阵分解的优点是:由于隐向量的存在,使任意的用户和物品之间都可以得到预测分数。隐向量的生成过程是对共现矩阵进行全局的拟合,有较强的泛化能力。空间复杂度降低,有更好的灵活性和拓展性

矩阵分解缺点:仍然不方便加入用户、物品和上下文相关的特征,使得矩阵分解不能利用很多有效信息的机会。

3.逻辑回归LR

逻辑回归能够综合利用用户、物品、上下文等多种不同的特征,生成“较全面”的推荐结果。

逻辑回归将推荐问题看成了分类问题,通过预测正样本的概率对物品进行排序

逻辑回归模型的数学形式是各特征的加权和,再施以 sigmoid 函数进行激活,映射到0-1之间。

优点:非常符合人类预估过程的直觉认知,逻辑回归易于并行化、模型简单、训练开销小。

缺点:表达能力不强,无法进行特征交叉、特征筛选等一系列较为高级的操作,会不可避免地造成信息的损失。

4.因子分解机FM

FM 在 LR 的常数项、一阶项的基础上新增了特征之间交叉的二阶项,增加了利用交叉特征的能力。

FM 所学习的参数除了偏置和各特征的权重之外,还有各特征对应的隐向量

FM算法利用了二阶的交叉特征,提升了模型的泛化能力。

但无法进行更高阶数的特征交叉,因为组合爆炸问题的限制,三阶FM无论是权重数量还是训练复杂度都过高,难以在实际工程中实现。

图片

FFM(Field-aware Factorization Machine)算法,同一个categorical特征经过One-Hot编码生成的数值特征都可以放到同一个field,包括用户性别、职业、品类偏好等。在FFM中,每一维特征,针对其它特征的每一种field ,都会学习一个隐向量 。因此,隐向量不仅与特征相关,也与field相关。

5.组合模型

GBDT+LR:其利用GBDT自动进行特征筛选和组合,进而形成新的离散特征向量,再把该特征向量当做LR模型的输入。GBDT+LR的提出,意味着特征工程可以交由一个独立的模型来完成,实现了真正的端到端的训练。

LS-PLM(大规模分段线性模型):首先对全量样本进行聚类,再对每个分类施以逻辑回归模型进行学习。LS-PLM是多分类,是概率模型,每个用户均有一定的概率属于每个用户群。对某用户求各用户群的逻辑回归预测结果的加权平均,即为最后的预测结果。

6.FM的深入介绍

6.1.特点

  • 功能齐全:

推荐算法有三个应用领域:召回、粗排、精排。FM 几乎是唯一一个能实现三个领域全覆盖的多面手。特别是FM用做召回时,表现更加优秀。

实现一个FM召回,就能够完成u2i, i2i, i2u, u2u2i四种召回方式,还包括对新用户、新物料的冷启动

FM能够将模型的最终打分拆解到每个特征和特征组合上,从而能够让我们分析出到底是哪些因素提高或拉低了模型的打分。最重要的是,区别于GBDT那种只能提供特征的全局重要性,FM提供的重要性是针对某一个、某一群样本的,使我们能够做更加精细化的特征分析

  • 性能优异:

推荐系统的两大永恒主题,“记忆”和“拓展”,FM 也能实现全覆盖。

FM存在一阶项,实际就是LR,能够记忆高频、常见模式。

FM通过feature embedding,能够自动挖掘低频、长尾模式

  • 便于上线:

FM排序,通过公式化简,可以在 O(n)的时间复杂度下完成。由于推荐系统中的特征非常稀疏,所以预测速度是非常快的。

FM召回,只需要把一系列的feature embedding相加,就可以对任何用户在线生成最新的user embedding,从而可以基于用户最新的兴趣,从千万量级候选item中完成实时召回。

6.2.功能用途

  • FM用于召回

    • 样本:不能只拿曝光未点击做负样本。大多数负样本,应该通过在item库中随机采样的方式得到在随机采样负样本时,一方面需要尽可能广泛地覆盖所有候选item,另一方面又需要尽量集中于高热item
    • 特征:在训练、预测时,不能使用任何user与候选item之间的统计交叉特征
    • 模型训练:召回算法往往采用Pairwise LearningToRank(LTR),建模排序的“相对准确性”。即模型优化的目的,不是为了拟合"user与负样本item的匹配程度越低越好",而是追求“user与正样本item的匹配程度,要远远高于,user与负样本item的匹配程度”
    • 线上服务:
      • 传统u2i召回,以及其他。
      • FM对新用户、新物料都非常友好。
    • 得分:FM允许我们将最终预测得分,拆解到各 feature 和 feature 组合上,从而能够提供“局部特征重要性”。
      • 拆解方法:针对每一个样本,将这个样本的feature embedding按所属field分组,同一field下所有feature embedding相加得到field embedding,然后两两field embedding做点积,这样就将样本得分拆解到了field和field pair的维度上。
  • FM用于精排

    • 样本:曝光点击做正样本,曝光未点击做负样本。

    • 特征:FM中所有特征都ID化

    • 训练模型:图片

      图片

    • 线上服务:采用fm公式进行打分。

P11:李庆敏:腾讯游戏大数据分析引擎实践

1.腾讯游戏大数据分析背景

几个特点:游戏发展快,游戏品类及数量多,数据量日增快,数据量庞大,数据模型复杂度高

图片

2.大数据分析引擎的实践

腾讯游戏大数据分析能力组成由以下四个组成:图片

主要的应用场景:图片

有一些分析指标,基于这些指标我们可以对用户进行分群。然后拿到这些用户,可以进行跟踪分析;也可以对这批用户进行画像分析;还可以对某些感兴趣的用户发起营销活动,然后这些他投放的用户又可以和自定义指标关联,对这批用户实时跟踪游戏内的表现,形成一个数据闭环。

腾讯大数据分析引擎工作流程:

图片

我们的数据来源有实时数据流和离线数据,比如我们有hdfs,rds,云db,离线数据通过数据接入模块接入到离线多维分析,接入的过程会创建指标库,然后根据指标库我们可以多维提取这个用户群。然后基于这个用户群,我们可以做画像分析进行下钻或者透视,然后把结果数据存储db里面。另外,我们可以把用户包存在用户标签库里面,通过实时多维分析来跟踪这批用户的实时行为数据。并把数据落地到DB,提供给前端进行展示。

  1. 离线多维分析-TGMars

    离线多维度分析-TGmars技术问题背景:对于离线海量数据,如何进行秒级多维分析

    1. 经验1:预处理机制+单一分片存储与计算绑定机制
      1. 先进行预处理排序,去重(减少重复清洗);本地化分片存储(无洗牌);用户排序快速匹配(只需一次遍历);专注本地化多维过滤,融合计算MPP并行处理提高效率。
    2. 经验2:位图索引加速多维计算。
      1. 热点状态使用位图,流水信息序列化存储
      2. 通过按年,游戏,分区来分文件,使用多维位图索引+内容文件机制,来进行加速。
    3. 经验3:物化视图。
      1. 通过视图,解决时间跨度长的统计,避免扫描原始数据。
      2. 通过最后时间维度状态快速判断,单指标按周,月,年来聚合计算。
    4. 经验4:Spark-SQL深度定制扩展。
      1. 主要是通过对DataSourceAPIV2扩展。计算过程包括,数据请求进行下推,本地加载文件并进行数据过滤,最后进一步加工。
  2. 在线画像分析-TGFace

    在线画像分析如何进行交互式下钻分析?

    1. 经验1:构建基于多维数据的分布式计算画像分析引擎TGFace
      1. 图片
      2. 先是使用tgmars引擎提取原始用户包,然后把用户包的相关信息发送给调度器,然后上传到画像系统的存储(切分,转换为列式进行存储)Datanode中,等前端交互画像的时候,会根据条件生成sql,然后给到解析器执行,解析器会分别进行sql解析,进行一些查询优化,然后生成执行计划,然后将sql语句编译成机器代码,最后将DAG调度到各个节点去执行,节点里面会根据列式存储,进行位图生成,位图的计算。
    2. 经验2:列式存储+动态位图索引
      1. 执行器执行的时候,主要是用到了列式存储和动态位图索引。
      2. 解析条件对应的这个sql,然后对这些条件进行按列 位图化计算,
  3. 实时多维分析-TGDruid

    实时多维分析的技术背景问题:要更快更实时的观测分析数据

    1. 图片
    2. 游戏服务器是上报日志的来源,通过日志采集模块,我们把实时数据会缓存到消息队列,然后会经过数据接入模块(有一些实时ETL),去读取接入配置db,然后通过用户包中心的标签来筛选感兴趣数据输入到druid进行实时计算。图片

3.总结与规划

图片

基于这三个引擎,我们进行大数据生态化和体系化改造,然后进行开源协同,再分析引擎科学化和预测决策化上下功夫,同时数据科学实验室部分我们目前也投入到增强分析和jupyter平台的一些开发中。希望在科学实验室上有些数据落地。

P12:百度知识图谱技术及应用

知识图谱就是以图的形式来展示知识,节点用来描述客观世界中一些实体或者概念,边用来描述实体和实体之间的关系或者实体的一些属性。

通过这种结构化的知识表示形式,知识图谱将存在于客观世界的丰富知识表达成机器能够处理和理解的形式,从而使机器能够像人类一样去认知世界并且做出合理的决策,进而为人类提供更加广泛的智能化服务。

1.百度知识图谱发展历程

图片

百度图谱构建和应用方面,比较大的四个阶段:

(1)2013年以前的Pre-KG阶段,整个学术界、业界知识图谱发展的初期阶段。以定制化模式生产结构化数据。并应用于百度搜索的知心产品中。

(2)2014-2015年,百度知识图谱方法论与架构逐渐成型的阶段。建立了面向垂类知识图谱构建的架构机制。并且将领域图谱应用于百度搜索的推荐、阿拉丁、智能摘要以及百度的第一代智能助理度秘等重要产品中。

(3)2016到2017年,百度逐渐深化建设通用知识图谱相关的架构、算法和机制。技术聚焦的重点在多领域打通、平台化、外包化的图谱构建,并深化建设了一系列特色的领域知识图谱,比如汉语知识图谱、娱乐知识图谱等。在应用落地方面主要有智能搜索问答以及百度信息流产品中基于知识兴趣点的内容推荐。

(4)近两年,我们逐渐将知识图谱的能力释放出去,并深入探索了一些领域内相对前瞻的问题。技术建设的重点在多元图谱的异构互联,图谱的主动收录与自学习,多媒体知识、复杂知识以及行业知识的理解构建。应用落地上除了继续在百度的搜索和信息流产品深化支持,还在法律、客服、医疗、金融等行业领域取得了一些突破和进展。

百度知识图谱覆盖十亿级实体,千亿级事实,涉及类目40多个,是最大规模的中文知识图谱,覆盖人物、影视、音乐、文学、商品、餐饮、旅游、出行等垂类。对于行业知识图谱,我们也有丰富的积累和应用。

2.知识图谱技术及应用

图片

  1. 通用知识图谱

    1. 最基础的通用知识图谱:开放域海量数据知识图谱的构建和应用图片
      1. 百度开发的基于主动学习的大规模知识图谱构建方法:无标签大数据开放知识挖掘、数据驱动的本体自动构建,以及基于多源数据的知识整合
    2. 技术模块:
      1. 关键技术:开放知识挖掘
        1. 为了实现大规模开放领域的信息抽取,我们基于多维数据分析和语言理解的技术自动获取知识挖掘模板,并通过不断迭代获取新模板、挖掘新知识。另一方面通过远监督的方式自动构建大规模的训练语料,为实体关系判定模型提供高质量的训练数据。
        2. 基于结构自注意力网络的富实体篇章级关系判定
          1. 图片
      2. 关键技术:知识自学习
        1. 一套自顶向下和自底向上相结合的图谱构建驱动模式
          1. 所谓自顶向下,是图谱构建的传统模式。它的schema是全人工构建,非常的准确,专业,且完备性也比较高。这种模式适合于知识图谱建设初期所面临的头部垂类数据的构建
          2. 自底向上模式则是将知识体系的自动发现和开放知识挖掘相结合,从海量数据中自动学习元知识,它比较适用于通用域下的大规模图谱构建
          3. 通过这种方式,我们知识图谱的schema规模增长了30倍,基于搜索需求的事实覆盖率提升了两倍。
      3. 关键技术:基于多源数据的知识融合
        1. 通过基于语义空间变换的实体消歧和实体归一的技术,实现多源开放域大规模实体的归一融合,从而去解决知识表示形式多样、关联融合困难的问题
      4. 关键技术:知识图谱问答
        1. 对于那些直接围绕实体相关的查询,我们会用一些基于知识库问答KBQA)的技术进行处理,包括自动挖掘模板进行语义解析,进行文法和语义端到端子图匹配等等。
        2. 对于答案存在于网页或知识库里面的问题,我们采用IRQA的方式,使用阅读理解的方式从现有网页里自动挖掘答案。
        3. 最后对于需要进行推理计算的问题,我们基于动态函数计算、规则逻辑推理等方式进行处理。
      5. 知识增强的机器阅读理解
        1. 所谓机器阅读理解,即给定一个问题或查询(question或query),给定相应的段落(passage或paragraph),在段落中找到问题的答案。
        2. 基本思想都是将知识的表示和文本的表示进行融合后得到一个知识增强的文本表示,然后去更好地做机器阅读理解。
      6. 关键技术:知识计算与推理
    3. 知识图谱应用
      1. 知识图谱应用—智能搜索
        1. 基于知识图谱的语义关联,我们构建了大规模关注点兴趣图谱,把文章背后蕴含的内容模型通过兴趣点图谱关联起来,为智能推荐提供更具知识关联的特性
      2. 知识图谱应用—对话系统
      3. 知识图谱应用—汉语知识图谱
  2. 事件图谱

    所谓事件是指在特定时间、空间下,由一个或多个角色(事件主体)参与,围绕某个主题开展的一系列活动。

    事件图谱和实体图谱之间的差异主要体现在实体图谱描述实体属性和实体之间的关系,它基本上是静态的,而事件图谱则描述客观世界的动态变化,并且侧重多个实体之间的动作。如果实体的属性或者关系发生了变化,那么就是一个事件发生了。

    在任意时刻,一个事件可以映射到实体图谱上的一个子图,因为事件有参与的角色,也就是事件主体,而事件主体可以映射到实体图谱上的实体,这样就建立了事件图谱和实体图谱之间的关联,两者之间可以进行相互推断

    1. 事件图谱:对动态的客观世界建模
      1. 图片
      2. 首先是本体层,它可以类比实体图谱里面的schema。除了本体层还有一个事件层,它主要刻画事件与事件之间的关系。接下来还有一个事件论元层,所谓论元是指事件里面参与的角色,那么在论元层就可以和实体图谱进行关联。
    2. 事件图谱技术概览
      1. 图片
    3. 关键技术:事件抽取—基于多轮阅读理解问答技术
      1. 我们是基于多轮阅读理解的技术去实现事件的抽取,把传统基于分类方法转化为基于阅读理解问答任务是更具备通用性,通过多轮问答机制引入,利用论元之间的潜在语义关系,提升准确率。
    4. 事件图谱应用
      1. 百度搜索的热点事件脉络,以及疫情脉络等等。地图的POI变更检测,以及智能写作相关的应用
  3. 视频理解图谱

    1. 基于知识图谱的视频语义理解
      1. 首先通过对视觉、语音、文本的多模态内容进行解析融合,利用知识子图关联技术建立与视频理解知识图谱的连接,通过背景知识以及基于多模态知识的计算与推理,实现对视频的深度语义理解。
    2. 视频理解图谱应用
      1. 图片
  4. 行业知识图谱

    行业知识图谱主要面向医疗、法律、金融、风控等强专业性的知识。

    1. 行业智能化亟需数据到知识的转化
    2. 通用知识图谱vs.行业知识图谱
      1. 图片
      2. 在图谱表示方面,通用知识图谱通常用简单的SPO三元组表示知识就可以了,但行业的知识类型更加复杂,往往需要表示时序、事件,甚至流程等复杂知识。
      3. 在图谱构建方面,通用知识图谱的数据主要源于互联网,而对于行业而言,知识空间相对封闭,一般来说缺乏大量的标注数据,专家标注的成本非常高。
      4. 在图谱服务方面,通用知识图谱通常是离线的、平台化的、在线的,而行业知识图谱往往会面临私有化、组件化的挑战。
      5. 在图谱应用方面,通用知识图谱主要以理解为主,比如最常见的问答、推荐等应用形式,也包括在搜索里的结构化展示,而在行业里面,知识应用需求会更高,往往涉及推理计算甚至决策等,它的应用深度也会更深,所以两者差异是非常大的。
    3. 知识中台产品技术视图
      1. 图片
      2. 知识中台赋能智慧医疗
      3. 知识中台赋能智慧法律

3.技术及数据开放

千言:面向自然语言处理的中文开源数据共建项目

未来展望:

图片

posted @ 2022-10-22 15:38  Brisa56  阅读(89)  评论(0)    收藏  举报