导言
对于几乎所有机器学习算法,无论是有监督学习、无监督学习,还是强化学习,最后一般都归结为求解最优化问题。因此,最优化方法在机器学习算法的推导与实现中占据中心地位。在这篇文章中,SIGAI将对机器学习中所使用的优化算法做一个全面的总结,并理清它们直接的脉络关系,帮你从全局的高度来理解这一部分知识。
机器学习要求解的数学模型
几乎所有的机器学习算法最后都归结为求一个目标函数的极值,即最优化问题,例如对于有监督学习,我们要找到一个最佳的映射函数f (x),使得对训练样本的损失函数最小化(最小化经验风险或结构风险):
在这里,N为训练样本数,L是对单个样本的损失函数,w是要求解的模型参数,是映射函数的参数,xi为样本的特征向量,yi为样本的标签值。
或是找到一个最优的概率密度函数p(x),使得对训练样本的对数似然函数极大化(最大似然估计):
在这里,θ是要求解的模型参数,是概率密度函数的参数。
对于无监督学习,以聚类算法为例,算法要是的每个类的样本离类中心的距离之和最小化:
在这里k为类型数,x为样本向量,μi为类中心向量,Si为第i个类的样本集合。
对于强化学习,我们要找到一个最优的策略,即状态s到动作a的映射函数(确定性策略,对于非确定性策略,是执行每个动作的概率):
使得任意给定一个状态,执行这个策略函数所确定的动作a之后,得到的累计回报最大化:
这里使用的是状态价值函数。
总体来看,机器学习的核心目标是给出一个模型(一般是映射函数),然后定义对这个模型好坏的评价函数(目标函数),求解目标函数的极大值或者极小值,以确定模型的参数,从而得到我们想要的模型。在这三个关键步骤中,前两个是机器学习要研究的问题,建立数学模型。第三个问题是纯数学问题,即最优化方法,为本文所讲述的核心。
最优化算法的分类
对于形式和特点各异的机器学习算法优化目标函数,我们找到了适合它们的各种求解算法。除了极少数问题可以用暴力搜索来得到最优解之外,我们将机器学习中使用的优化算法分成两种类型(不考虑随机优化算法如模拟退火、遗传算法等,对于这些算法,我们后面会专门有文章进行介绍):
公式解
数值优化
前者给出一个最优化问题精确的公式解,也称为解析解,一般是理论结果。后者是在要给出极值点的精确计算公式非常困难的情况下,用数值计算方法近似求解得到最优点。除此之外,还有其他一些求解思想,如分治法,动态规划等。我们在后面单独列出。一个好的优化算法需要满足:
能正确的找到各种情况下的极值点
速度快
下图给出了这些算法的分类与它们之间的关系:
接下来我们将按照这张图来展开进行讲解。
费马定理
对于一个可导函数,寻找其极值的统一做法是寻找导数为0的点,即费马定理。微积分中的这一定理指出,对于可导函数,在极值点处导数必定为0:
对于多元函数,则是梯度为0:
导数为0的点称为驻点。需要注意的是,导数为0只是函数取得极值的必要条件而不是充分条件,它只是疑似极值点。是不是极值,是极大值还是极小值,还需要看更高阶导数。对于一元函数,假设x是驻点:
如果f''(x)>0,则在该点处去极小值
如果f''(x)<0,则在该点处去极大值
如果f''(x)>=0,还要看更高阶导数
对于多元函数,假设x是驻点:
如果Hessian矩阵正定,函数在该点有极小值
如果Hessian矩阵负定,函数在该点有极大值
如果Hessian矩阵不定,还需要看更(此处误)
在导数为0的点处,函数可能不取极值,这称为鞍点,下图是鞍点的一个例子(来自SIGAI云端实验室):
除鞍点外,最优化算法可能还会遇到另外一个问题:局部极值问题,即一个驻点是极值点,但不是全局极值。如果我们对最优化问题加以限定,可以有效的避免这两种问题。典型的是凸优化,它要求优化变量的可行域是凸集,目标函数是凸函数。关于凸优化的详细讲解可以阅读SIGAI之前的公众号文章“理解凸优化”。
虽然驻点只是函数取得极值的必要条件而不是充分条件,但如果我们找到了驻点,再判断和筛选它们是不是极值点,比之前要容易多了。无论是理论结果,还是数值优化算法,一般都以找驻点作为找极值点的目标。对于一元函数,先求导数,然后解导数为0的方程即可找到所有驻点。对于多元函数,对各个自变量求偏导数,令它们为0,解方程组,即可达到所有驻点。这都是微积分中所讲授的基础方法。幸运的是,在机器学习中,很多目标函数都是可导的,因此我们可以使用这套方法。
拉格朗日乘数法
费马定理给出的不带约束条件下的函数极值的必要条件。对于一些实际应用问题,一般还带有等式或者不等式约束条件。对于带等式约束的极值问题,经典的解决方案是拉格朗日乘数法。
对于如下问题:
构造拉格朗日乘子函数:
在最优点处对x和乘子变量λi的导数都必须为0:
解这个方程即可得到最优解。对拉格朗日乘数法更详细的讲解可以阅读任何一本高等数学教材。机器学习中用到拉格朗日乘数法的地方有:
主成分分析
线性判别分析
流形学习中的拉普拉斯特征映射
隐马尔可夫模型
KKT条件
KKT条件是拉格朗日乘数法的推广,用于求解既带有等式约束,又带有不等式约束的函数极值。对于如下优化问题:
和拉格朗日对偶的做法类似,KKT条件构如下乘子函数:
λ和μ称为KKT乘子。在最优解处x*应该满足如下条件:
等式约束hj (x*)=0和不等式约束gk (x*)<=0是本身应该满足的约束,▽xL(x*)=0和之前的拉格朗日乘数法一样。唯一多了关于gi (x)的条件:
KKT条件只是取得极值的必要条件而不是充分条件。在机器学习中用到KKT条件的地方有:
支持向量机(SVM)
具体的推导可以阅读SIGAI之前的公众号文章“用一张图理解SVM的脉络”。
数值优化算法
前面讲述的三种方法在理论推导、某些可以得到方程组的求根公式的情况(如线性函数,正态分布的最大似然估计)中可以使用,但对绝大多数函数来说,梯度等于0的方程组是没法直接解出来的,如方程里面含有指数函数、对数函数之类的超越函数。对于这种无法直接求解的方程组,我们只能采用近似的算法来求解,即数值优化算法。这些数值优化算法一般都利用了目标函数的导数信息,如一阶导数和二阶导数。如果采用一阶导数,则称为一阶优化算法。如果使用了二阶导数,则称为二阶优化算法。
工程上实现时通常采用的是迭代法,它从一个初始点x0开始,反复使用某种规则从xk移动到下一个点xk 1,构造这样一个数列,直到收敛到梯度为0的点处。即有下面的极限成立:
这些规则一般会利用一阶导数信息即梯度;或者二阶导数信息即Hessian矩阵。这样迭代法的核心是得到这样的由上一个点确定下一个点的迭代公式:
梯度下降法
梯度下降法沿着梯度的反方向进行搜索,利用了函数的一阶导数信息。梯度下降法的迭代公式为:
根据函数的一阶泰勒展开,在负梯度方向,函数值是下降的。只要学习率设置的足够小,并且没有到达梯度为0的点处,每次迭代时函数值一定会下降。需要设置学习率为一个非常小的正数的原因是要保证迭代之后的xk 1位于迭代之前的值xk的邻域内,从而可以忽略泰勒展开中的高次项,保证迭代时函数值下降。
梯度下降法及其变种在机器学习中应用广泛,尤其是在深度学习中。对梯度下降法更全面的介绍可以阅读SIGAI之前的公众号文章“理解梯度下降法”。
动量项
为了加快梯度下降法的收敛速度,减少震荡,引入了动量项。动量项累积了之前迭代时的梯度值,加上此项之后的参数更新公式为:
其中Vt 1是动量项,它取代了之前的梯度项。动量项的计算公式为:
它是上一时刻的动量项与本次梯度值的加权平均值,其中α是学习率,μ是动量项系数。如果按照时间t进行展开,则第t次迭代时使用了从1到t次迭代时的所有梯度值,且老的梯度值安μt的系数指数级衰减:
动量项累积了之前迭代时的梯度值,使得本次迭代时沿着之前的惯性方向向前走。
AdaGrad算法
AdaGrad算法是梯度下降法最直接的改进。梯度下降法依赖于人工设定的学习率,如果设置过小,收敛太慢,而如果设置太大,可能导致算法那不收敛,为这个学习率设置一个合适的值非常困难。
AdaGrad算法根据前几轮迭代时的历史梯度值动态调整学习率,且优化变量向量X的每一个分量xi都有自己的学习率。参数更新公式为:
其中α是学习因子,gt是第t次迭代时参数的梯度向量,ε是一个很小的正数,为了避免除0操作,下标i表示向量的分量。和标准梯度下降法唯一不同的是多了分母中的这一项,它累积了到本次迭代为止梯度的历史值信息用于生成梯度下降的系数值。根据上式,历史导数值的绝对值越大分量学习率越小,反之越大。虽然实现了自适应学习率,但这种算法还是存在问题:需要人工设置一个全局的学习率α,随着时间的累积,上式中的分母会越来越大,导致学习率趋向于0,参数无法有效更新。
RMSProp算法
RMSProp算法是对AdaGrad的改进,避免了长期累积梯度值所导致的学习率趋向于0的问题。具体做法是由梯度值构造一个向量RMS,初始化为0,按照衰减系数累积了历史的梯度平方值。更新公式为:
AdaGrad直接累加所有历史梯度的平方和,而这里将历史梯度平方值按照δt衰减之后再累加。参数更新公式为:
其中δ是人工设定的参数,与AdaGrad一样,这里也需要人工指定的全局学习率α。
AdaDelta算法
AdaDelta算法也是对AdaGrad的改进,避免了长期累积梯度值所导致的学习率趋向于0的问题,另外,还去掉了对人工设置的全局学习率的依赖。假设要优化的参数为x,梯度下降法第t次迭代时计算出来的参数梯度值为gt。算法首先初始化如下两个向量为0向量:
其中E[g2]是梯度平方(对每个分量分别平分)的累计值,更新公式为:
在这里g2是向量每个元素分别计算平方,后面所有的计算公式都是对向量的每个分量进行。接下来计算如下RMS量:
这也是一个向量,计算时分别对向量的每个分量进行。然后计算参数的更新值:
RMS[Δx]t-1的计算公式和这个类似。这个更新值同样通过梯度来构造,只不过学习率是通过梯度的历史值确定的。更新公式为:
参数更新的迭代公式为:
Adam算法
Adam算法整合了自适应学习率与动量项。算法用梯度构造了两个向量m和v,前者为动量项,后者累积了梯度的平方和,用于构造自适应学习率。它们的初始值为0,更新公式为:
其中β1,β2是人工指定的参数,i为向量的分量下标。依靠这两个值构造参数的更新值,参数的更新公式为:
在这里,m类似于动量项,用v来构造学习率。
随机梯度下降法
假设训练样本集有N个样本,有监督学习算法训练时优化的目标是这个数据集上的平均损失函数:
其中L(w,xi,yi )是对单个训练样本(xi,yi )的损失函数,w是需要学习的参数,r(w)是正则化项,λ是正则化项的权重。在训练样本数很大时,如果训练时每次迭代都用所有样本,计算成本太高,作为改进可以在每次迭代时选取一批样本,将损失函数定义在这些样本上。
批量随机梯度下降法在每次迭代中使用上面目标函数的随机逼近值,即只使用M《N个随机选择的样本来近似计算损失函数。在每次迭代时要优化的目标函数变为:
随机梯度下降法在概率意义下收敛。
牛顿法
牛顿法是二阶优化技术,利用了函数的一阶和二阶导数信息,直接寻找梯度为0的点。牛顿法的迭代公式为:
其中H为Hessian矩阵,g为梯度向量。牛顿法不能保证每次迭代时函数值下降,也不能保证收敛到极小值点。在实现时,也需要设置学习率,原因和梯度下降法相同,是为了能够忽略泰勒展开中的高阶项。学习率的设置通常采用直线搜索(line search)技术。
在实现时,一般不直接求Hessian矩阵的逆矩阵,而是求解下面的线性方程组:
其解d称为牛顿方向。迭代终止的判定依据是梯度值充分接近于0,或者达到最大指定迭代次数。
牛顿法比梯度下降法有更快的收敛速度,但每次迭代时需要计算Hessian矩阵,并求解一个线性方程组,运算量大。另外,如果Hessian矩阵不可逆,则这种方法失效。对牛顿法更全面的介绍可以阅读SIGAI之前的公众号文章“理解牛顿法”。
牛顿法在logistic回归,AdaBoost算法等机器学习算法中有实际应用。
拟牛顿法
牛顿法在每次迭代时需要计算出Hessian矩阵,并且求解一个以该矩阵为系数矩阵的线性方程组,Hessian矩阵可能不可逆。为此提出了一些改进的方法,典型的代表是拟牛顿法。拟牛顿法的思路是不计算目标函数的Hessian矩阵然后求逆矩阵,而是通过其他手段得到一个近似Hessian矩阵逆的矩阵。具体做法是构造一个近似Hessian矩阵或其逆矩阵的正定对称矩阵,用该矩阵进行牛顿法的迭代。
所有这些主要的数值优化算法都可以在SIGAI云端实验室上免费完成实验:
www.sigai.cn
通过构造目标函数,指定优化算法的参数与初始化迭代值,可以可视化的显示出算法的运行过程,并对不同参数时的求解结果进行比较。
可信域牛顿法
标准牛顿法可能不会收敛到一个最优解,也不能保证函数值会按照迭代序列递减。解决这个问题可以通过调整牛顿方向的步长来实现,目前常用的方法有两种:直线搜索和可信区域法。可信域牛顿法是截断牛顿法的一个变种,用于求解带界限约束的最优化问题。在可信域牛顿法的每一步迭代中,有一个迭代序列xk,一个可信域的大小Δk,以及一个二次目标函数:
这个式子可以通过泰勒展开得到,忽略二次以上的项,这是对函数下降值:
的近似。算法寻找一个sk,在满足约束条件||S||<=Δk下近似最小化qk(S)。接下来检查如下比值以更新wk和Δk:
这是函数值的实际减少量和二次近似模型预测方向导致的函数减少量的比值。根据之前的计算结果,再动态调整可信域的大小。
可信域牛顿法在logistic回归,线性支持向量的求解时有实际的应用,具体可以阅读liblinear开源库。
分治法
分治法是一种算法设计思想,它将一个大的问题分解成子问题进行求解。根据子问题解构造出整个问题的解。在最优化方法中,具体做法是每次迭代时只调整优化向量的一部分分量,其他的分量固定住不动。
坐标下降法
坐标下降法的基本思想是每次对一个变量进行优化,这是一种分治法。假设要求解的优化问题为;
坐标下降法求解流程为每次选择一个分量xi进行优化,将其他分量固定住不动,这样将一个多元函数的极值问题转换为一元函数的极值问题。如果要求解的问题规模很大,这种做法能有效的加快速度。
坐标下降法在logistic回归,线性支持向量的求解时有实际的应用,具体可以阅读liblinear开源库。
SMO算法
SMO算法也是一种分治法,用于求解支持向量机的对偶问题。加上松弛变量和核函数后的对偶问题为:
SMO算法的核心思想是每次在优化变量中挑出两个分量αi 和 αj进行优化,让其他分量固定,这样能保证满足等式约束条件。之所以要选择两个变量进行优化而不是选择一个变量,是因为这里有等式约束,如果只调整一个变量的值,将会破坏等式约束。
假设选取的两个分量为αi 和 αj,其他分量都固定即当成常数。对这两个变量的目标函数是一个二元二次函数。这个问题还带有等式和不等式约束条件。对这个子问题可以直接求得公式解,就是某一区间内的一元二次函数的极值。
分阶段优化
分阶段优化的做法是在每次迭代时,先固定住优化变量X一部分分量a不动,对另外一部分变量b进行优化;然后再固定住b不动,对b进行优化。如此反复,直至收敛到最优解处。
AdaBoost算法是这种方法的典型代表。AdaBoost算法在训练时采用了指数损失函数:
由于强分类器是多个弱分类器的加权和,代入上面的损失函数中,得到算法训练时要优化的目标函数为:
这里将指数损伤函数拆成了两部分,已有的强分类器Fj−1,以及当前弱分类器f对训练样本的损失函数,前者在之前的迭代中已经求出,因此可以看成常数。这样目标函数可以简化为:
其中:
这个问题可以分两步求解,首先将弱分类器权重β看成常数,得到最优的弱分类器f。得到弱分类器之后,再优化它的权重系数β。
动态规划算法
动态规划也是一种求解思想,它将一个问题分解成子问题求解,如果整个问题的某个解是最优的,则这个解的任意一部分也是子问题的最优解。这样通过求解子问题,得到最优解,逐步扩展,最后得到整个问题的最优解。
隐马尔可夫模型的解码算法(维特比算法),强化学习中的动态规划算法是这类方法的典型代表,此类算法一般是离散变量的优化,而且是组合优化问题。前面讲述的基于导数的优化算法都无法使用。动态规划算法能高效的求解此类问题,其基础是贝尔曼最优化原理。一旦写成了递归形式的最优化方程,就可以构造算法进行求解。
SIGAI推荐
雷老师《机器学习》课程
精品课程《机器学习》由SIGAI一系列畅销技术文章主创作者雷老师亲自设计和制作,总计31集,按主题分成小节,内容系统全面,覆盖所有算法,具体课程大纲如下:
课程大纲
▲向上滑动查看全部课程内容
第 1 集机器学习简介
1.1 课程介绍
1.2 本集介绍
1.3 推荐的参考书
1.4 人工智能简介 1.5 机器学习简介 1.6 为什么需要机器学习
1.7 机器学习的发展历史
1.8 机器学习的典型应用
1.9 业内主要公司介绍
1.10 本课程讲授的算法
1.11 本集总结
第 2 集数学知识-1
2.1 本集内容简介
2.2 学好机器学习需要哪些数学知识
2.3 推荐的参考书 2.4 本集所讲的知识点 2.5 机器学习算法所用的数学知识
2.6 导数
2.7 高阶导数
2.8 导数与函数的性质
2.9 一元函数的泰勒展开
2.10 向量 2.11 矩阵 2.12 行列式 2.13 偏导数 2.14 高阶偏导数 2.15 梯度 2.16 雅可比矩阵 2.17 Hessian 矩阵 2.18 极值判别法则 2.19 二次型 2.20 特征值与特征向量
2.21 特征值分解 2.22 多元函数的泰勒展开
2.23 矩阵和向量求导公式
2.24 奇异值分解 2.25 为什么需要概率论
2.26 随机事件与概率
2.27 条件概率与贝叶斯公式
2.28 随机事件的独立性
2.29 随机变量 2.30 数学期望与方差
2.31 常用的概率分布
2.32 随机向量 2.33 随机变量的独立性
2.34 协方差
2.35 常用的多维概率分布
2.36 最大似然估计 2.37 本集总结
第 3 集数学知识-2
3.1 本集内容简介
3.2 最优化中的基本概念
3.3 为什么要用迭代法
3.4 梯度下降法 3.5 牛顿法
3.6 坐标下降法
3.7 优化算法面临的问题
3.8 拉格朗日乘数法 3.9 凸优化简介 3.10 凸集 3.11 凸函数 3.12 凸优化的性质 3.13 凸优化的一般表述
3.14 拉格朗日对偶 3.15 KKT 条件 3.16 本集总结
第 4 集基本概念
4.1 本集介绍
4.2 监督信号
4.3 有监督学习
4.4 无监督学习 4.5 强化学习 4.6 分类问题 4.7 回归问题 4.8 线性回归 4.9 判别模型与生成模型
4.10 准确率
4.11 回归误差
4.12 精度与召回率
4.13 ROC 曲线
4.14 混淆矩阵
4.15 交叉验证 4.16 欠拟合 4.17 过拟合 4.18 欠拟合与过拟合总结
4.19 偏差与方差分解
4.20 正则化
4.21 岭回归
4.22 本集总结
第 5 集贝叶斯分类器
5.1 本集简介
5.2 贝叶斯公式
5.3 朴素贝叶斯分类器
5.4 正态贝叶斯分类器
5.5 实验环节 5.6 实际应用 5.7 本集总结
第 6 集决策树 6.1 本集内容介绍
6.2 树与二叉树简介
6.3 决策树简介 6.4 决策树的表示能力 6.5 训练算法要解决的核心问题
6.6 递归分裂过程
6.7 寻找最佳分裂
6.8 叶子节点值的设定
6.9 属性缺失与替代分裂
6.10 过拟合与剪枝 6.11 实验环节 6.12 实际应用 6.13 本集总结
第 7 集k近邻算法
7.1 本集简介
7.2 k 近邻算法
7.3 预测算法 7.4 距离函数 7.5 距离度量学习
7.6 实验环节
7.7 实际应用
7.8 本集总结
第 8 集数据降维1
8.1 本集内容简介
8.2 为什么需要数据降维
8.3 PCA 简介 8.4 计算投影矩阵 8.5 完整的算法流程
8.6 实验环节
8.7 实际应用
8.8 本集总结
第 9 集数据降维2 9.1 本集内容简介
9.2 非线性降维技术简介
9.3 流形简介 9.4 流形学习简介 9.5 局部线性嵌入
9.6 拉普拉斯特征映射
9.7 局部保持投影 9.8 等距映射 9.9 实验环节
9.10 本集总结
第 10 集线性判别分析 10.1 本集内容简介 10.2 LDA 的基本思想 10.3 寻找最佳投影方向 10.4 推广到高维和多类的情况
10.5 PCA 与 LDA 的比较
10.6 实验环节
10.7 实际应用
10.8 本集总结
第 11 集人工神经网络 1 11.1 本集内容简介 11.2 动物神经系统的基本原理
11.3 人工神经网络的基本思想
11.4 神经元的原理 11.5 sigmiod 函数 11.6 神经网络的结构 11.7 神经网络每一层完成的变换
11.8 正向传播算法 11.9 神经网络的本质 11.10 怎样用于实际问题
第 12 集人工神经网络 2
12.1 本集内容简介 12.2 反向传播算法概述
12.3 反向传播算法的历史
12.4 正向传播算法回顾
12.5 优化目标函数
12.6 欧氏距离的求导公式
12.7 链式法则 12.8 基础求导公式 12.9 求导的整体思路 12.10 权重和偏置的求导公式
12.11 输出层的求导
12.12 误差项的计算
12.13 完整的算法
12.14 算法总结
12.15 工程实现细节
12.16 本集总结
第 13 集人工神经网络 3
13.1 本集内容简介
13.2 实验环节 13.3 理论分析
13.4 理论分析-拟合能力
13.5 理论分析-与神经系统的关系
13.6 实现细节问题 13.7 输入与输出值的设定 13.8 网络的规模 13.9 激活函数 13.10 损失函数 13.11 参数初始化 13.12 正则化 13.13 学习率的设定 13.14 动量项 13.15 挑战与改进措施 13.16 梯度消失问题 13.17 退化 13.18 局部极小值 13.19 鞍点问题 13.20 损失函数曲面分析 13.21 实际应用 13.22 实践项目 13.23 本集总结
第 14 集支持向量机 1
14.1 本集内容简介
14.2 支持向量机简介 14.3 线性分类器 14.4 分类间隔 14.5 线性可分的原问题
14.6 线性可分的对偶问题
14.7 线性可分的实验 14.8 线性不可分的原问题
14.9 线性不可分的对偶问题
14.10 KKT 条件的使用 14.11 线性不可分的实验
14.12 核函数实验 14.13 核映射与核函数
14.14 本集总结
第 15 集支持向量机 2 15.1 本集内容简介 15.2 对偶问题求解面临的问题
15.3 SMO 算法简介 15.4 求解子问题 15.5 子问题是凸优化问题的证明
15.6 SMO 算法的收敛性 15.7 优化变量的选择 15.8 完整的算法 15.9 实现细节问题 15.10 本集总结
第 16 集支持向量机 3
16.1 本集内容简介
16.2 多分类问题
16.3 libsvm 简介
16.4 实验环节
16.5 实际应用
16.6 应用时的细节问题 16.7 SVM 整体推导思路的总结
第 17 集线性模型 1 17.1 本集内容简介 17.2 线性模型 17.3 logistic 回归的基本思想
17.4 预测函数
17.5 试验
17.6 优化目标函数
17.7 凸优化证明
17.8 梯度下降法求解
17.9 另一种形式的对数似然函数
17.10 L2 正则化 logistic 回归
17.11 L1 正则化 logistic 回归
17.12 liblinear 简介 17.13 实验 17.14 softmax 回归 17.15 实际应用 17.16 本集总结
第 18 集线性模型 2 18.1 本集内容简介 18.2 线性支持向量机简介
18.3 L2 正则化 L1-loss 原问题
18.4 L2 正则化 L2-loss 原问题
18.5 L2 正则化对偶问题 18.6 L1 正则化 L2-loss 原问题
18.7 多类线性支持向量机
18.8 实验 18.9 libsvm 和 liblinear 的比较
18.10 实际应用 18.11 本集总结
第 19 集随机森林 19.1 本集内容简介 19.2 集成学习简介 19.3 Bootstrap 抽样 19.4 Bagging 算法 19.5 随机森林的基本原理
19.6 训练算法 19.7 包外误差 19.8 计算变量的重要性
19.9 实验 19.10 实际应用 19.11 本集总结
第 20 集AdaBoost算法1
20.1 本集内容简介 20.2 再论集成学习算法
20.3 Boosting 算法简介
20.4 AdaBoost 的预测算法
20.5 训练算法
20.6 训练算法的解释
20.7 算法的总结
20.8 与随机森林的比较
20.9 训练误差分析
第 21 集AdaBoost算法2 21.1 本集内容简介 21.2 广义加法模型 21.3 指数损失函数 21.4 AdaBoost 训练算法的推导
21.5 实现细节问题
21.6 弱分类器的选择
21.7 弱分类器数量的确定
21.8 样本权重削减
第 22 集AdaBoost算法3
22.1 本集内容简介
22.2 实验环节 22.3 应用简介
22.4 VJ 框架简介
22.5 滑动窗口技术 22.6 分类器级联 22.7 Haar 特征 22.8 积分图 22.9 训练算法的原理
22.10 训练自己的模型
22.11 VJ 框架的改进
22.12 AdaBoost 算法总结
第 23 集高斯混合模型与 EM 算法
23.1 本集内容简介 23.2 高斯混合模型简介 23.3 实际例子
23.4 训练算法面临的问题
23.5 EM 算法 23.6 实现细节与面临的问题
23.7 应用-视频背景建模
23.8 本集总结
第 24 集聚类算法 1 24.1 本集内容简介
24.2 聚类问题简介
24.3 聚类算法的分类
24.4 层次聚类流程
24.5 层次聚类的实例
24.6 簇距离的定义
24.7k 均值算法的基本思想
24.8k 均值算法的流程 24.9 实现细节问题与改进方案
24.10 实验
24.11EM 算法简介
24.12Jensen 不等式
24.13EM 算法的推导
24.14EM 算法的流程
24.15EM 算法收敛性的证明
第 25 集聚类算法 2 25.1 本集内容简介 25.2 基于密度的算法简介
25.3DBSCAN 算法简介 25.4 基本概念 25.5DBSCAN 算法的核心思想
25.6DBSCAN 算法的流程 25.7 实现细节问题 25.8 实验 25.9DBSCAN 算法的优缺点
25.10OPTICS 算法简介 25.11 基本概念 25.12 算法的流程 25.13 根据排序结果得到聚类结果
25.14 实验 25.15Mean Shift 算法 25.16Mean Shift 算法的流程
25.17 谱聚类算法简介 25.18 图切割问题 25.19 优化目标函数 25.20 算法的流程 25.21 聚类算法的评价指标 25.22 实际应用 25.23 聚类算法总结
第 26 集隐马尔可夫模型
26.1 本集内容简介 26.2 概率图模型简介
26.3 马尔可夫模型简介
26.4 状态与状态转移矩阵
26.5 马尔可夫性
26.6 马尔可夫模型
26.7 模型的训练 26.8 隐马尔可夫模型简介
26.9 隐马尔可夫模型的核心问题
26.10 估值问题 26.11 解码问题 26.12 训练问题
26.13 实际应用
26.14 本集总结
第 27 集强化学习 1 27.1 本集内容简介
27.2 强化学习简介
27.3 马尔可夫决策过程
27.4 状态价值函数
27.5 策略价值函数
27.6 贝尔曼最优性方程
27.7 动态规划算法简介
27.8 策略迭代算法
27.9 价值迭代算法
第 28 集强化学习 2
28.1 本集内容简介 28.2 无模型算法简介 28.3 蒙特卡洛算法简介 28.4 状态价值函数估计 28.5 动作价值函数估计 28.6 蒙特卡洛控制 28.7 蒙特卡洛算法存在的问题
28.8 时序差分算法简介
28.9Sarsa 算法 28.10Q 学习算法 28.11 强化学习总结
第 29 集工程实践问题
29.1 本集内容简介
29.2 样本与标注
29.3 特征构造
29.4 特征预处理
29.5 模型选择问题
29.6 过拟合问题
29.7 参数调优
29.8 本集总结
第 30 集实践项目 30.1 实践项目说明 30.2 用 HOG 线性支持向量机进行目标检测
30.3 用 logistic 回归进行数据预测
30.4 用全连接神经网络进行图像分类
30.5 用 AdaBoost 算法进行目标检测
30.6 用支持向量机进行文本分类
30.7 用随机森林进行数据预测 30.8 用 PCA LDA 进行人脸识别 30.9 用聚类算法进行数据分析
第 31 集各种算法总结
现在注册,免费试听前三集
www.sigai.cn
平台提供云端实验室让你轻松学算法
雷老师的讲解深入浅出,层次分明,收获同学们一路好评,是市面上少有的《机器学习》良心课程:
同学好评
<< 滑动查看更多好评 >>
▲向上滑动查看更多推荐文章
科普类
【获取码】SIGAI0413
机器学习——波澜壮阔四十年
【获取码】SIGAI0620
理解计算:从√2到AlphaGo ——第1季 从√2谈起
【获取码】SIGAI0704
理解计算:从√2到AlphaGo ——第2季 神经计算的历史背景
【获取码】SIGAI0713
理解计算:从√2到AlphaGo ——第3季 神经计算的数学模型
【获取码】SIGAI0815
理解计算:从√2到AlphaGo ——第4季 凛冬将至
【获取码】SIGAI0802
机器学习和深度学习中值得弄清楚的一些问题
数学类
【获取码】SIGAI0417
学好机器学习需要哪些数学知识
【获取码】SIGAI0511
理解梯度下降法
【获取码】SIGAI0518
理解凸优化
【获取码】SIGAI0531
理解牛顿法
机器学习类
【获取码】SIGAI0428
用一张图理解SVM的脉络
【获取码】SIGAI0505
理解神经网络的激活函数
【获取码】SIGAI0522
【实验】理解SVM核函数和参数的作用
【获取码】SIGAI0601
【群话题精华】五月集锦—机器学习和深度学习中一些值得思考的问题
【获取码】SIGAI0602
大话AdaBoost算法
【获取码】SIGAI0606
理解主成分分析(PCA)
【获取码】SIGAI0611
理解决策树
【获取码】SIGAI0613
用一句话总结常用的机器学习算法
【获取码】SIGAI0618
理解过拟合
【获取码】SIGAI0627
k近邻算法
【获取码】SIGAI0704
机器学习算法地图
【获取码】SIGAI0706
反向传播算法推导—全连接神经网络
【获取码】SIGAI0711
如何成为一名优秀的算法工程师
【获取码】SIGAI0723
流形学习概述
【获取码】SIGAI0725
随机森林概述
深度学习类
【获取码】SIGAI0426
卷积神经网络为什么能够称霸计算机视觉领域?
【获取码】SIGAI0508
深度卷积神经网络演化历史及结构改进脉络-40页长文全面解读
【获取码】SIGAI0515
循环神经网络综述—语音识别与自然语言处理的利器
【获取码】SIGAI0625
卷积神经网络的压缩与加速
【获取码】SIGAI0709
生成式对抗网络模型综述
【获取码】SIGAI0718
基于深度负相关学习的人群计数方法
【获取码】SIGAI0723
关于感受野的总结
【获取码】SIGAI0806
反向传播算法推导--卷积神经网络
【获取码】SIGAI0810
理解Spatial Transformer Networks
机器视觉类
【获取码】SIGAI0420
人脸识别算法演化史
【获取码】SIGAI0424
基于深度学习的目标检测算法综述
【获取码】SIGAI0503
人脸检测算法综述
【获取码】SIGAI0525
【SIGAI综述】行人检测算法
【获取码】SIGAI0604
FlowNet到FlowNet2.0:基于卷积神经网络的光流预测算法
【获取码】SIGAI0608
人体骨骼关键点检测综述
【获取码】SIGAI0615
目标检测算法之YOLO
【获取码】SIGAI0622
场景文本检测——CTPN算法介绍
【获取码】SIGAI0629
自然场景文本检测识别技术综述
【获取码】SIGAI0716
人脸检测算法之S3FD
【获取码】SIGAI0727
基于内容的图像检索技术综述——传统经典方法
【获取码】SIGAI0817
基于内容的图像检索技术综述——CNN方法
自然语言处理
【获取码】SIGAI0803
基于深度神经网络的自动问答概述
【获取码】SIGAI0820
文本表示简介
工业应用类
【获取码】SIGAI0529
机器学习在自动驾驶中的应用-以百度阿波罗平台为例【上】
本文为SIGAI原创
如需转载,欢迎发消息到本订号