机器学习基础(中)

2.5:代价函数

代价函数(Cost Function)是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。本节主要介绍代价函数的作用及其原理、常见代价函数、代价函数为什么需要非负及用交叉熵代替二次代价函数的原因。

2.5.1:为什么需要代价函数

为了得到训练逻辑回归模型的参数,需要一个代价函数,通过训练代价函数来得到参数,用于找到最优解的目的函数。


**2.5.2:代价函数作用原理 **

在回归问题中,通过代价函数来求解最优解,常用的是平方误差代价函数。假设函数图像如图2-4所示,当参数发生变化时,假设函数状态也会随着变化。

函数示意图

想要拟合图中的离散点,我们需要尽可能找到最优的A和B来使这条直线更能代表所有数据。如何找到最优解呢,这就需要使用代价函数来求解,以平方误差代价函数为例,假设函数为 h(x)=\theta_0x ,图中代表函数为 y(x) = Ax + B 。

平方误差代价函数的主要思想就是将实际数据给出的值与拟合出的线的对应值做差,求出拟合出的直线与实际的差距。在实际应用中,为了避免因个别极端数据产生的影响,采用类似方差再取二分之一的方式来减小个别数据的影响。因此,引出代价函数:J(\theta_0, \theta_1) = \frac{1}{m}\sum_{i=1}m(h(x{(i)})-y{(i)})2 \tag1

最优解即为代价函数的最小值 \min J(\theta_0, \theta_1) 。如果是1个参数,代价函数一般通过二维曲线便可直观看出。如果是2个参数,代价函数通过三维图像可看出效果,参数越多,越复杂。当参数为2个时,代价函数是三维图像,如下图2-5所示。

图2-5 代价函数三维图像


2.5.3:常见代价函数

(1)二次代价函数(quadratic cost)

J = \frac{1}{2n}\sum_x\Vert y(x)-aL(x)\Vert2 \tag1其中, J 表示代价函数, x 表示样本, y 表示实际值, a 表示输出值, n 表示样本的总数, L 表示整个神经网络的层数。使用一个样本为例简单说明,此时二次代价函数为:

J = \frac{(y-a)^2}{2}\tag2假如使用梯度下降法(Gradient descent)来调整权值参数的大小,权值 w 和偏置 b 的梯度推导如下: \frac{\partial J}{\partial w}=(a-y)\sigma’(z)x\tag3\frac{\partial J}{\partial b}=(a-y)\sigma’(z)\tag4其中, z 表示神经元的输入, \sigma 表示激活函数。权值 w 和偏置 b 的梯度跟激活函数的梯度成正比,激活函数的梯度越大,权值 w 和偏置 b 的大小调整得越快,训练收敛得就越快。

注:神经网络常用的激活函数为sigmoid函数,该函数的曲线如下图2-6所示:

图2-6 sigmoid函数曲线

如上图所示,对0.88和0.98两个点进行比较:

  1. 假设目标是收敛到1.0。0.88离目标1.0比较远,梯度比较大,权值调整比较大。0.98离目标1.0比较近,梯度比较小,权值调整比较小。调整方案合理。
  2. 假如目标是收敛到0。0.88离目标0比较近,梯度比较大,权值调整比较大。0.98离目标0比较远,梯度比较小,权值调整比较小。调整方案不合理。

原因:在使用sigmoid函数的情况下, 初始的代价(误差)越大,导致训练越慢

(2)交叉熵代价函数(cross-entropy)

J = -\frac{1}{n}\sum_x[y\ln a + (1-y)\ln{(1-a)}]\tag5其中, J 表示代价函数, x 表示样本, y 表示实际值, a 表示输出值, n 表示样本的总数。

权值 w 和偏置 b 的梯度推导如下: \frac{\partial J}{\partial w_j}=\frac{1}{n}\sum_{x}x_j(\sigma{(z)}-y)\tag6\frac{\partial J}{\partial b}=\frac{1}{n}\sum_{x}(\sigma{(z)}-y)\tag7当误差越大时,梯度就越大,权值 w 和偏置 b 调整就越快,训练的速度也就越快。二次代价函数适合输出神经元是线性的情况,交叉熵代价函数适合输出神经元是S型函数的情况。

(3)对数似然代价函数(log-likelihood cost)

对数似然函数常用来作为softmax回归的代价函数。深度学习中普遍的做法是将softmax作为最后一层(目的在于好分类),此时常用的代价函数是对数似然代价函数。

对数似然代价函数与softmax的组合和交叉熵与sigmoid函数的组合非常相似。对数似然代价函数在二分类时可以化简为交叉熵代价函数的形式。

在tensorflow中: 与sigmoid搭配使用的交叉熵函数:tf.nn.sigmoid_cross_entropy_with_logits()。 与softmax搭配使用的交叉熵函数:tf.nn.softmax_cross_entropy_with_logits()。

在pytorch中: 与sigmoid搭配使用的交叉熵函数:torch.nn.BCEWithLogitsLoss()。 与softmax搭配使用的交叉熵函数:torch.nn.CrossEntropyLoss()。


2.5.4:为什么代价函数要非负

目标函数存在一个下界,在优化过程当中,如果优化算法能够使目标函数不断减小,根据**单调有界准则**,这个优化算法就能证明是收敛有效的。

只要设计的目标函数有下界,基本上都可以,代价函数非负更为方便。


2.5.5:为什么用交叉熵代替二次代价函数

该问题分为两个方面:为什么不用二次方代价函数和为什么要用交叉熵。

(1)为什么不用二次方代价函数

由上一节可知,权值 w 和偏置 b 的偏导数为 \frac{\partial J}{\partial w}=(a-y)\sigma’(z)x,\frac{\partial J}{\partial b}=(a-y)\sigma’(z) , 偏导数受激活函数的导数影响,sigmoid函数导数在输出接近0和1时非常小,会导致一些实例在刚开始训练时学习得非常慢。

(2)为什么要用交叉熵

交叉熵函数权值 w 和偏置 b 的梯度推导为: \frac{\partial J}{\partial w_j}=\frac{1}{n}\sum_{x}x_j(\sigma{(z)}-y)\;,\frac{\partial J}{\partial b}=\frac{1}{n}\sum_{x}(\sigma{(z)}-y)

由以上公式可知,权重学习的速度受到 \sigma{(z)}-y 影响,更大的误差,就有更快的学习速度,避免了二次代价函数方程中因 \sigma’{(z)} 导致的学习缓慢的情况。


2.6:损失函数

损失函数(Loss Function)和代价函数的概念很容易混淆。损失函数是定义在单个样本上的,算的是一个样本的误差,而代价函数计算的是整个训练集上所有样本误差的平均误差。

2.6.1:什么是损失函数

损失函数(Loss Function)又叫做误差函数,用来衡量算法的运行情况,估量模型的预测值与真实值的不一致程度,是一个非负实值函数,通常使用 L(Y, f(x)) 来表示。

损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。


2.6.2:常见的损失函数

机器学习通过对算法中的目标函数进行不断求解优化,得到最终想要的结果。分类和回归问题中,通常使用损失函数或代价函数作为目标函数

损失函数用来评价预测值和真实值不一样的程度。 损失函数可分为

经验风险损失函数结构风险损失函数
只预测结果和实际结果的差别在经验风险损失函数上加上正则项

注意:增加正则项是为了防止过拟合,具体内容会在第三章介绍。

下面介绍常用的损失函数:

(1)0-1损失函数

如果预测值和目标值相等,值为0,如果不相等,值为1。 L(Y, f(x)) =\begin{cases}1,& Y\ne f(x)\\0,& Y = f(x)\end{cases}\tag1 一般的在实际使用中,相等的条件过于严格,可适当放宽条件: L(Y, f(x)) =\begin{cases}1,& |Y-f(x)|\geqslant T\\0,& |Y-f(x)|< T\end{cases}\tag2

(2)绝对值损失函数

和0-1损失函数相似,绝对值损失函数表示为:L(Y, f(x)) = |Y-f(x)|\tag3

(3)平方损失函数

L(Y, f(x)) = \sum_N{(Y-f(x))}^2\tag4这点可从**最小二乘法和欧几里得距离**角度理解。最小二乘法的原理是,最优拟合曲线应该使所有点到回归直线的距离和最小。

(4)对数损失函数

L(Y, P(Y|X)) = -\log{P(Y|X)} \tag5**常见的逻辑回归使用的就是对数损失函数**,有很多人认为逻辑回归的损失函数是平方损失,其实不然。逻辑回归它假设样本服从伯努利分布(0-1分布),进而求得满足该分布的似然函数,接着取对数求极值等。

逻辑回归推导出的经验风险函数是最小化负的似然函数,从损失函数的角度看,就是对数损失函数。

(5)指数损失函数

指数损失函数的标准形式为: L(Y, f(x)) = \exp(-Yf(x))\tag6例如AdaBoost就是以指数损失函数为损失函数。

补充:AdaBoost算法简介

该算法其实是一个简单的**弱分类算法提升过程,这个过程通过不断的训练,可以提高对数据的分类能力**。整个过程如下所示:

  • 1. 先通过对N个训练样本的学习得到第一个弱分类器
  • 2. 将**分错的样本和其他的新数据一起构成一个新的N个的训练样本**,通过对这个样本的学习得到第二个弱分类器
  • 3. 将**1和2都分错了的样本加上其他的新样本构成另一个新的N个的训练样本**,通过对这个样本的学习得到第三个弱分类器;
  • 4. 最终经过提升的强分类器。即**某个数据被分为哪一类要由各分类器权值决定**。

由Adaboost算法的描述过程可知,该算法在实现过程中根据训练集的大小初始化样本权值,使其满足均匀分布,在后续操作中通过公式来改变和规范化算法迭代后样本的权值。样本被错误分类导致权值增大,反之权值相应减小,这表示被错分的训练样本集包括一个更高的权重。这就会使在下轮时训练样本集更注重于难以识别的样本,针对被错分样本的进一步学习来得到下一个弱分类器,直到样本被正确分类。在达到规定的迭代次数或者预期的误差率时,则强分类器构建完成

(6)Hinge损失函数

Hinge损失函数的标准形式如下: L(y) = \max{(0, 1-ty)}\tag7统一的形式: L(Y, f(x)) = \max{(0, Yf(x))}\tag8其中 y 是预测值,范围为(-1,1), t 为目标值,其为-1或1。

在线性支持向量机(SVM)中,最优化问题可等价于 \underset{\min}{w,b}\sum_{i=1}^N (1-y_i(wx_i+b))+\lambda\Vert w\Vert ^2\tag9上式相似于下式 \frac{1}{m}\sum_{i=1}^{N}l(wx_i+by_i) + \Vert w\Vert ^2\tag{10} 其中 l(wx_i+by_i) 是Hinge损失函数, \Vert w\Vert ^2 可看做为正则化项。


2.6.3:逻辑回归为什么使用对数损失函数

假设逻辑回归模型 P(y=1|x;\theta)=\frac{1}{1+e{-\theta{T}x}}\tag{11}假设逻辑回归模型的概率分布是伯努利分布,其概率质量函数为: P(X=n)=\begin{cases}1-p, n=0\\ p,n=1\end{cases}\tag{12} 其似然函数为: L(\theta)=\prod_{i=1}{m}P(y=1|x_i){y_i}P(y=0|x_i)^{1-y_i}\tag{13} 对数似然函数为: \ln L(\theta)=\sum_{i=1}^{m}[y_i\ln{P(y=1|x_i)}+(1-y_i)\ln{P(y=0|x_i)}]\\ =\sum_{i=1}^m[y_i\ln{P(y=1|x_i)}+(1-y_i)\ln(1-P(y=1|x_i))]\tag{14}对数函数在单个数据点上的定义为: cost(y,p(y|x))=-y\ln{p(y|x)-(1-y)\ln(1-p(y|x))}\tag{15}则全局样本损失函数为:cost(y,p(y|x)) = -\sum_{i=1}^m[y_i\ln p(y_i|x_i)+(1-y_i)\ln(1-p(y_i|x_i))]\tag{16}由此可看出,对数损失函数与极大似然估计的对数似然函数本质上是相同的。所以**逻辑回归直接采用对数损失函数**。


2.6.4:对数损失函数是如何度量损失的

例如,在高斯分布中,我们需要确定均值和标准差。 如何确定这两个参数?

最大似然估计是比较常用的方法。最大似然的目标是找到一些参数值,这些参数值对应的分布可以最大化观测到数据的概率。

因为**需要计算观测到所有数据的全概率,即所有观测到的数据点的联合概率**。现考虑如下简化情况:

(1)假设观测到每个数据点的概率和其他数据点的概率是独立的。

(2)取自然对数。

假设观测到单个数据点 x_i(i=1,2,…n) 的概率为: P(x_i;\mu,\sigma)=\frac{1}{\sigma \sqrt{2\pi}}\exp \left( - \frac{(x_i-\mu)2}{2\sigma2} \right)\tag{17}

其联合概率为: P(x_1,x_2,…,x_n;\mu,\sigma)=\frac{1}{\sigma \sqrt{2\pi}}\exp \left( - \frac{(x_1-\mu)2}{2\sigma2} \right) \\ \times \frac{1}{\sigma \sqrt{2\pi}}\exp \left( - \frac{(x_2-\mu)2}{2\sigma2} \right) \times … \times \frac{1}{\sigma \sqrt{2\pi}}\exp \left( - \frac{(x_n-\mu)2}{2\sigma2} \right) \tag{18}对上式取自然对数,可得: \ln(P(x_1,x_2,…x_n;\mu,\sigma))= \ln \left(\frac{1}{\sigma \sqrt{2\pi}} \right) - \frac{(x_1-\mu)2}{2\sigma2} \\ + \ln \left( \frac{1}{\sigma \sqrt{2\pi}} \right) - \frac{(x_2-\mu)2}{2\sigma2} +…+ \ln \left( \frac{1}{\sigma \sqrt{2\pi}} \right) - \frac{(x_n-\mu)2}{2\sigma2}\tag{19}

根据对数定律,上式可以化简为: \ln(P(x_1,x_2,…x_n;\mu,\sigma))=-n\ln(\sigma)-\frac{n}{2} \ln(2\pi)\\ -\frac{1}{2\sigma2}[(x_1-\mu)2+(x_2-\mu)2+…+(x_n-\mu)2]\tag{20}

然后求导为: \frac{\partial\ln(P(x_1,x_2,…,x_n;\mu,\sigma))}{\partial\mu}= \frac{1}{\sigma^2}[n\mu - (x_1+x_2+…+x_n)] \tag{21}上式左半部分为对数损失函数。损失函数越小越好,因此我们令等式左半的对数损失函数为0,可得: \mu=\frac{x_1+x_2+…+x_n}{n}\tag{22} 同理,可计算 \sigma 。


2.7:梯度下降法

梯度下降法(Gradient Descent,GD)是一个最优化算法,常用于机器学习和人工智能中递归性逼近最小偏差模型。

2.7.1:机器学习中为什么需要梯度下降

梯度下降是机器学习中常见优化算法之一,梯度下降法有以下几个作用:

  • (1)梯度下降是迭代法的一种,可以用于**求解最小二乘**问题。
  • (2)在求解机器学习算法的模型参数,即**无约束优化问题**时,主要有梯度下降法(Gradient Descent)和最小二乘法。
  • (3)在**求解损失函数的最小值**时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。
  • (4)如果我们需要**求解损失函数的最大值**,可通过梯度上升法来迭代。梯度下降法和梯度上升法可相互转换。
  • (5)在机器学习中,梯度下降法主要有**随机梯度下降法批量梯度下降法**。

2.7.2:梯度下降法直观理解

梯度下降法经典图示如下图2.7所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图2.7 梯度下降法经典图示

假如最开始,我们在一座大山上的某处位置,因为到处都是陌生的,不知道下山的路,所以只能摸索着根据直觉,走一步算一步,在此过程中,每走到一个位置的时候,都会求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。不断循环求梯度,就这样一步步地走下去,一直走到我们觉得已经到了山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山势低处。

由此,从上面的解释可以看出,梯度下降不一定能够找到全局的最优解,有可能是一个局部的最优解。当然,如果损失函数是**凸函数**,梯度下降法得到的解就一定是全局最优解。

核心思想归纳:

(1)初始化参数,随机选取取值范围内的任意数;

(2)迭代操作:

  • a)计算当前梯度;
  • b)修改新的变量;
  • c)计算朝最陡的下坡方向走一步;
  • d)判断是否需要终止,如否,返回a);

(3)得到全局最优解或者接近全局最优解。


2.7.3:梯度下降法算法描述

梯度下降法算法步骤如下:

(1)确定优化模型的假设函数及损失函数

举例,对于线性回归,假设函数为: h_\theta(x_1,x_2,…,x_n)=\theta_0+\theta_1x_1+…+\theta_nx_n \tag1其中, \theta_i,x_i(i=0,1,2,…,n) 分别为模型参数、每个样本的特征值。

对于假设函数,损失函数为: J(\theta_0,\theta_1,…,\theta_n)=\frac{1}{2m}\sum^{m}_{j=0}[h_\theta (x^{(j)}_0 ,x{(j)}_1,…,x{(j)}_n)-y_j]^2\tag2

(2)相关参数初始化

主要初始化 {\theta}_i 、算法迭代步长 {\alpha} 、终止距离 {\zeta} 。初始化时可以根据经验初始化,即 {\theta} 初始化为0,步长 {\alpha} 初始化为1。当前步长记为 {\varphi}_i 。当然,也可随机初始化。

(3)迭代计算

计算当前位置时损失函数的梯度,对 {\theta}_i ,其梯度表示为: \frac{\partial}{\partial \theta_i}J({\theta}_0,{\theta}_1,…,{\theta}_n)=\frac{1}{2m}\sum^{m}_{j=0}[h_\theta (x^{(j)}_0 ,x{(j)}_1,…,x{(j)}_n)-y_j]^2\tag3计算当前位置下降的距离。 {\varphi}_i={\alpha} \frac{\partial}{\partial \theta_i}J({\theta}_0,{\theta}_1,…,{\theta}_n)\tag4判断是否终止。

确定是否所有 {\theta}_i 梯度下降的距离 {\varphi}_i 都小于终止距离 {\zeta} ,如果都小于 {\zeta} ,则算法终止,当然的值即为最终结果,否则进入下一步。

更新所有的 {\theta}_i ,更新后的表达式为: {\theta}_i={\theta}_i-\alpha \frac{\partial}{\partial \theta_i}J({\theta}_0,{\theta}_1,…,{\theta}_n)\tag5\theta_i=\theta_i - \alpha \frac{1}{m} \sum^{m}_{j=0}(h_\theta (x^{(j)}_0 ,x{(j)}_1,…,x{(j)}_n)-y_j)x^{(j)}_i \tag6令上式 x^{(j)}_0=1 ,更新完毕后转入步骤(1)。

由此,可看出,当前位置的梯度方向由所有样本决定,上式中 \frac{1}{m}、\alpha \frac{1}{m} 的目的是为了便于理解。


2.7.4:梯度下降法缺点

梯度下降法缺点有以下几点:

  • (1)靠近极小值时收敛速度减慢。
  • (2)直线搜索时可能会产生一些问题。
  • (3)可能会“之字形”地下降。

梯度概念也有需注意的地方:

  • (1)梯度是一个向量,即有方向有大小。
  • (2)梯度的方向是最大方向导数的方向。
  • (3)梯度的值是最大方向导数的值。

2.7.5:如何对梯度下降法进行调优

实际使用梯度下降法时,各项参数指标不能一步就达到理想状态,对梯度下降法调优主要体现在以下几个方面:(1)**算法迭代步长\alpha选择。** 在算法参数初始化时,有时根据经验将步长初始化为1。实际取值取决于数据样本。可以从大到小,多取一些值,分别运行算法看迭代效果,如果损失函数在变小,则取值有效。如果取值无效,说明要增大步长。但步长太大,有时会导致迭代速度过快,错过最优解。步长太小,迭代速度慢,算法运行时间长。(2)**参数的初始值选择。** 初始值不同,获得的最小值也有可能不同,梯度下降有可能得到的是局部最小值。如果损失函数是凸函数,则一定是最优解。由于有局部最优解的风险,需要多次用不同初始值运行算法,关键损失函数的最小值,选择损失函数最小化的初值。(3)**标准化处理。** 由于样本不同,特征取值范围也不同,导致迭代速度慢。为了减少特征取值的影响,可对特征数据标准化,使新期望为0,新方差为1,可节省算法运行时间。


2.7.6:随机梯度下降和批量梯度下降的区别

随机梯度下降(SDG)和批量梯度下降(BDG)是两种主要梯度下降法,其目的是**增加某些限制来加速运算求解**。

下面通过介绍两种梯度下降法的求解思路,对其进行比较。

**假设函数为: h_\theta (x_0,x_1,…,x_3) = \theta_0 x_0 + \theta_1 x_1 + … + \theta_n x_n\tag1损失函数**为: J(\theta_0, \theta_1, … , \theta_n) = \frac{1}{2m} \sum^{m}_{j=0}(h_\theta (x^{j}_0 ,x{j}_1,…,x{j}_n)-yj)2\tag2其中, m 为样本个数, j 为参数个数。

1、 批量梯度下降的求解思路

a) 得到每个 \theta 对应的梯度: \frac{\partial}{\partial \theta_i}J({\theta}_0,{\theta}_1,…,{\theta}_n)=\frac{1}{m}\sum^{m}_{j=0}(h_\theta (x^{j}_0 ,x{j}_1,…,x{j}_n)-yj)x{j}_i\tag3 b) 由于是**求最小化风险函数,所以按每个参数 \theta 的梯度负方向更新 \theta_i : \theta_i=\theta_i - \frac{1}{m} \sum^{m}_{j=0}(h_\theta (x^{j}_0 ,x{j}_1,…,x{j}_n)-yj)x{j}_i\tag4 c) 从上式可以注意到,它得到的虽然是一个全局最优解,但每迭代一步,都要用到训练集所有的数据,如果样本数据很大,这种方法迭代速度就很慢**。相比而言,随机梯度下降可避免这种问题。

2、随机梯度下降的求解思路

a) 相比批量梯度下降对应所有的训练样本,随机梯度下降法中损失函数对应的是训练集中每个样本的粒度

损失函数可以写成如下这种形式, J(\theta_0, \theta_1, … , \theta_n) = \frac{1}{m} \sum{m}_{j=0}(yj - h_\theta (x^{j}_0 ,x{j}_1,…,x{j}_n))^2 = \frac{1}{m} \sum^{m}_{j=0} cost(\theta,(xj,yj))\tag5

b)对每个参数 \theta 按梯度方向更新 \theta: \theta_i = \theta_i + (y^j - h_\theta (x^{j}_0, x^{j}_1, … ,x{j}_n))x{j}_i\tag6

c) 随机梯度下降是通过每个样本来迭代更新一次。

随机梯度下降伴随的一个问题是**噪音较批量梯度下降要多**,使得随机梯度下降并不是每次迭代都向着整体最优化方向。

小结:随机梯度下降法、批量梯度下降法相对来说都比较极端,简单对比如下:

方法特点
批量梯度下降a)采用所有数据来梯度下降
b)批量梯度下降法在样本量很大的时候,训练速度慢
随机梯度下降a)随机梯度下降用一个样本来梯度下降
b)训练速度很快
c)随机梯度下降法仅仅用一个样本决定梯度方向,导致解有可能不是全局最优
d)收敛速度来说,随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解

下面介绍能结合两种方法优点的小批量梯度下降法。

3、 小批量(Mini-Batch)梯度下降的求解思路

对于总数为 m 个样本的数据,根据样本的数据,选取其中的 n(1< n< m) 个子样本来迭代。其参数 \theta 按梯度方向更新 \theta_i 公式如下: \theta_i = \theta_i - \alpha \sum^{t+n-1}_{j=t} ( h_\theta (x^{j}_{0}, x^{j}_{1}, … , x^{j}_{n} ) - y^j ) x^{j}_{i}\tag7


2.7.7:各种梯度下降法性能比较

下表简单对比随机梯度下降(SGD)、批量梯度下降(BGD)、小批量梯度下降(Mini-batch GD)、和Online GD的区别:

BGDSGDMini-batch GDOnline GD
训练集固定固定固定固定
单次迭代样本数整个训练集单个样本训练集的子集根据具体算法定
算法复杂度一般
时效性一般一般
收敛性稳定不稳定较稳定不稳定

BGD、SGD、Mini-batch GD,前面均已讨论过,这里介绍一下Online GD。

Online GD与Mini-batch GD/SGD的区别在于,所有训练数据只用一次,然后丢弃。这样做的优点在于**可预测最终模型的变化趋势**。

Online GD在互联网领域用的较多,比如搜索广告的点击率(CTR)预估模型,网民的点击行为会随着时间改变。用普通的BGD算法(每天更新一次)一方面耗时较长(需要对所有历史数据重新训练);另一方面,无法及时反馈用户的点击行为迁移。而Online GD算法可以实时的依据网民的点击行为进行迁移。


未完待续

  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值