第1课 机器学习的动机与应用
无监督学习适用于即使是人也不知道正确答案,但是要进行分类的数据,即对无标签数据进行分类
强化学习可用于机器人领域,实现一些很复杂的、人很难写出每个细节的控制程序,如机器人或机器狗的行走、跨越障碍
第2课 监督学习应用与梯度下降
视频中定义的一些符号:m训练样本数,n特征数,X输入样本,Y输出变量,
θ
参数向量,
(x(i),y(i))
第i个样本,
hθ(x)
假设函数,即一个训练好的模型
大多数情况下,机器学习算法会构建一个目标函数,求解这个目标函数的最优解以获得最佳参数。有两种设计目标函数的方法:使用极大似然函数和使用代价函数,其实人为选定的各种代价函数,如hinge loss、logistic loss、least square loss,其实都是符合概率原理的,参考第4课从指数分布族推导出广义线性模型的讲解(从38:13开始)
代价函数一般是一个损失项加一个正则项,如果代价函数可导,则使用梯度下降法求解代价函数的最小值,如果不可导,无法使用梯度下降法,则需要使用二次规划法求解最优值,使得代价函数取得最小值的参数就是最优模型参数。
极大似然函数的优化目标是使得每个样本出现的概率的乘积最大,这种情形比较适用于能很方便地表示一个样本出现的概率的模型,如logistic回归,很自然地可以用概率表示P(y=1|x)和P(y=0|x),其极大似然函数的最优解没有解析解,所以需要使用梯度下降法求解。
梯度下降法在一般情况下,下降步长的参数应该是手工设定的,但是在sklearn和mllib中直接调用梯度下降法(如lbfgs)即可,不用手工设定步长,因为这两个库使用newton-cg(牛顿法)、lbfgs(拟牛顿法)求解梯度下降,所以步长是自动设定的
通常人工设定的目标函数都是个凸函数,有一个全局最优值,刚开始的梯度比较大,快接近最优值时,梯度会慢慢变小。这些内容有待验证
随机梯度下降为什么比批梯度下降快?参考http://www.zhihu.com/question/40892922?sort=created及《机器学习实战》p84最上方的实际代码例子,更快的原因是一般在机器学习中,我们不需要在训练集上一个最优解,很多时候甚至需要early stop,而sgd会比较快的收敛到一个还不错的解,比gd收敛到这个差不多的解所消耗的时间要短。但是这种解释还是不够完美
最小二乘的解析解推导,从51:05开始到视频结束,64:07将矩阵形式
Y=Xθ
与求和的最小二乘形式
12∑mi=0[y(i)−θTX(i)]2
联系了起来(要注意
Xθ
与
θTX(j)
的区别,前面的
X
是整个输入矩阵,后面的
第3课 欠拟合与过拟合概念
欠拟合使用了过于简单的模型,过拟合使用了过于复杂的模型,这是模型选择的问题,或者某些情况下可以说前者使用了过少的特征,后者使用了过多的特征,也可以说是特征选择的问题。
参数学习方法是一类具有固定数目的参数用来进行数据拟合的算法,对数据进行拟合后,能得到这组固定数目的参数的最优值,这组最优值就表示了一个固定的模型,如logistic回归学习完之后就得到一个固定参数数目的模型,然后用这个模型对所有测试样本进行预测
非参数学习方法是一类参数数量会随着待预测样本数线性增长的算法,用于减轻特征选择引起的欠拟合、过拟合问题。例如,局部加权回归就是一个非参数学习方法(12:35),对于一组非线性的房价预测数据,不必去考虑改用该使用几阶的多项式才可以正确拟合数据,对于一个新样本,选择一个权值函数,使得该新样本附近的样本得到更多的权重来拟合一个线性模型,当使用该线性模型来对这个新样本进行预测。每次对一个新样本进行预测时,都要重新对整个数据集拟合一遍。K近邻算法也是这种思想,每次预测都要重新拟合的代价是高昂的,可以采取KD tree的方法降低代价。非参数方法也有一些参数是需要手工设定的,如局部加权回归的权值函数中的参数、K近邻中的K,如果参数选择不当,也会有欠拟合和过拟合的问题,但是没有参数学习方法中的问题那么严重。
欠拟合和过拟合问题的直观表现在于与训练集上得到的模型不能正确地预测测试样本,本质在于样本之间的差异性,因为整个样本集中有正确样本、错误样本及含噪声的正确样本,如果选择了一个固定的模型,这个固定的模型与真实的模型相比,可能过于简单或过于复杂。如果采用了过于简单的模型,会使得很多正确样本没有被拟合到,如果采用过于复杂的模型,将拟合到错误样本或噪声。因此采用参数化学习方法学习一个固定模型,容易引起欠拟合或过拟合的问题,通常结合交叉验证法来使用参数化学习方法,其原理就是一个一个地去试不同的固定模型,看哪个固定模型的效果好,最终就选择哪个固定模型。(自己的思考)
非参数学习方法没有固定模型,它对每个待预测样本都区别对待,找到与该待预测样本最相似的一组样本子集来学习一个模型,由于该样本子集的样本差异性较小,所以在这个样本子集上学习到的固定模型即使会有欠拟合和过拟合的问题,也只是会影响该待预测样本的预测值,不会影响到其他待预测样本,这在一定程度上减轻了对整个待预测样本集的欠拟合和过拟合的问题。如果将非参数学习方法的所有过程看作一个模型,可以理解为该模型的参数数量是随着待预测样本数量线性增长的,因为它对每个待预测样本都使用了不同的参数。(自己的思考)
选择最小二乘(而不是绝对值或立方)作为损失函数的概率解释(29:46),因为最大化似然函数等价于最小化最小二乘。这也说明了logistic回归可以从极大似然或损失函数的角度进行推导,还说明了很多机器学习方法的背后都可以用概率来解释
用简单线性回归做分类的错误性的解释(51:24),为了使用线性回归适用于分类问题,引入了sigmod函数(也叫logistic函数),将输出值y压缩到(0, 1)范围,从而可以用于分类。令P(y=1|X) = sigmod(w*x),P(y=0|X) = 1-P(y=1|X),这样就得到了logistic回归模型,哪个概率大则将其判为哪一类。logistic回归最后的参数更新规则与普通最小二乘回归是非常相似的(65:51),区别在于假设函数不同。不同的模型,最后的梯度下降法更新规则看起来是相似的公式,但实际上是不一样的。
《统计学习方法》p79得到似然函数之后,直接求该函数对w的偏导数,然后使用梯度上升法更新权值,最终可求得似然函数的极大值,而不是令该函数对w的偏导数为零,因为令偏导为零并不能得到一个解析解,这是以前自己不理解的地方
如果选用阶梯函数将将输出值y压缩到只取0或1,就形成了感知机算法,由于输出只有0和1,所以赋予其概率意义是很困难的。后面将学习理论的时候会再次提到感知机。运用学习理论可以分析某个任务到底能不能用机器学习来完成。感知机是神经网络和SVM的基础
第4课 牛顿方法
使对数似然函数最大化等价于使对数似然函数的导数为零,此时可以使用牛顿法求解使对数似然函数的导数为零的权值,虽然使用牛顿法需要满足一些复杂的条件,但是对logistic回归是适用的。当离最优解足够近时,牛顿法收敛很快,本次迭代的误差是上次迭代的误差的平方,这种性质称为二次收敛,但是由于一些常数因子或其他因素的影响,可能会减缓理论上的二次收敛速度。(牛顿下降法可参考《模式分类》p185公式(15),对应地理解视频14:25)
如何特征的数目比较小,对logistic回归使用牛顿下降法,一般迭代十几次就收敛了。但是郝森矩阵H的大小是n*n,如果特征数目很大,那么求解
H−1
是代价高昂的
高斯分布和伯努利分布都属于指数分布族,很多常见的分布都属于指数分布族。从指数分布族可以推导出广义线性模型(从38:13开始)。三条概率假设(或者说是三条设计决策)其实已经决定了学习到的模型就是广义线性模型,第一条假设:
p(y|x;θ)∼ExpFamily(η)
,第二条假设:Given x, goal is to output E[T(y)|x],意味着假设函数
hθ(x)=E[T(y)|x]
,第三条假设:
η=θTX
(这里的
η
在大多数情况下是实数,如果是n维向量,可以写成
ηi=θTiX
),二三条假设是固定不变的,第一条假设的情形可变,如果
p(y|x;θ)
是伯努利分布(我的理解,应该是二项分布?单次y称为伯努利试验),根据二三假设可推导出
hθ(x)=11+exp−θTX
,这就是logistic回归选择logistic函数的原因。同理,假设y服从高斯分布,将会发现最大化似然函数等价于最小化最小误差平方和,这就是最小二乘回归的来源。
指数分布、泊松分布、多项式分布都对应许多经典的场景,例如许多电子产品的寿命分布一般服从指数分布、汽车站台的候客人数服从泊松分布,重复n次扔骰子服从多项式分布,对于这些分布,从概率上推导将得到不同的
hθ(x)
,但是最终的P(y=1|x)都是logistic函数。如果y有k个取值,即y有k个类别,则y服从多项式分布,由此可以推导出多分类logistic回归(也称为softmax回归)的
hθ(x)
。(52:11开始,67:45就是得到的公式,与《统计学习方法》p80上方的公式一致)
第5课 生成学习算法、朴素伯努利贝叶斯
区分参数化算法和非参数化算法、生成算法和判别算法四个概念,这两对是从不同的角度做区分的,不可混为一谈。
比如一个二分类问题,生成算法会取出所有正样本进行学习得到一个“正样本模型”,再取出所有负样本进行学习得到一个“负样本模型”,当需要对一个新样本进行预测时,将新样本分别与“正样本模型”和“负样本模型”进行匹配,看哪个匹配得好,则将新样本判为哪一类。从概率上解释,生成算法会对P(x|y)和P(y)进行建模。
判别算法不学习“正样本模型”和“负样本模型”,而是直接学习一个能将正样本和负样本区分开的“判别模型”,只学习正负类别之间的差异。从概率上解释,判别算法对P(y|x)建模
区分joint likelihood和conditional likelihood,前者是
∏mi=1P(X(i),Y(i))
,后者是
∏mi=1P(Y(i)|X(i))
假设P(x|y)服从高斯分布,使用高斯判别分析学习了一个模型,模型得到的P(y=1|x)将是一个logistic分布,假设P(x|y)服从泊松分布,得到的P(y=1|x)也是logistic分布,这说明假设P(x|y)服从某种分布是比假设P(y|x)服从logistic分布更强的假设。更为一般的结论是,如果假设P(x|y)服从指数分布族,学习到的模型的P(y=1|x)都是logistic分布,说明logistic函数在建设模型假设方面是鲁棒性很强的。假设P(x|y)服从某种分布是生成学习算法,假设P(y|x)服从logistic分布是判别学习算法,因此从这种现象可以归纳出生成学习算法的好处和坏处,好处是如果假设P(x|y)服从的分布确实是符合真实情况的,或近似真实情况,那么生成学习算法会比判别学习算法的效果更好,且需要的样本更少,因为它是更强的假设,利用了更多的样本信息。反之,如果对P(x|y)做出的假设不符合真实情况,效果一般是不如判别学习算法。(33:52开始)
朴素贝叶斯也是生成学习算法,先估计P(x|y)和P(y),再计算P(y|x)。前面提到过假设P(x|y)服从指数分布族中的某个分布,可以得到某种模型,但是朴素贝叶斯不假设P(x|y)服从某种具体的分布,而是假设x的各特征之间是独立的,因此
P(x|y)=∏ni=1P(xi|y)
,训练好模型之后,对于一个未见过的词
xi
,将得到
P(xi|y)=0
,因此计算
P(xi|y)
的时候需要引入Laplace平滑
第6课 朴素多项式贝叶斯、神经网络、SVM
朴素贝叶斯对P(x|y)做的属性独立的假设仍然属于指数分布族,最后得到的P(y|x)仍然是logistic函数,因此朴素贝叶斯仍然是线性模型
通常神经网络的优化问题是一个非凸优化问题,可能存在多个局部最优值,使得得到全局最优值是困难的,而logistic回归一般是凸优化问题,容易得到一个全局最优值
视频中对神经网络只是播放了一个手写数字识别和语音合成的例子,没有讲述太多
第7课 最优间隔分类器问题
线性支持向量机的原始最优化问题等价于最优化问题
minw,b∑mi=0[1−yi(wTxi+b)]++λ||w||2
,其中
\[1−yi(wTxi+b)\]+
是合页损失函数(hinge loss function)。下标+的含义是:如果z>0,则
\[z\]+=z
,如果z<=0,则
\[z\]+=0
。
SVM的决策函数是
f(x)=sign(wTx+b)
,所以SVM不能输出概率预测值,只能输出类别值
SVM的分离超平面是
wTx+b=0
,缩放w和b得到的是同一个平面,也就是缩放w和b并不会影响优化问题的解。因此为了简化优化问题,我们可以缩放w和b使得函数间隔为1,于是将《统计学习方法》p99的公式(7.11)和(7.12)变成了(7.13)和(7.14)。
SVM原始最优化问题的图形化解释,每一个
yi(wTxi+b)−1>=0
都对应得剔除了半个解空间,考虑到所有的约束后,将得到一小部分可行解空间,然后在这个可行解空间中使用梯度下降法求解最优解,注意到
min||w||2
只有一个全局最优值。(19:31)
原始问题转化为对偶问题:(同时参考《统计学习方法》)
p99的公式(7.13)和(7.14)就是原始问题,它是一个凸优化问题(公式(7.15)、(7.16)、(7.17)),求解凸优化问题一般是构造一个拉格朗日函数(公式(7.18)),于是原始问题可表示为
minw,bmaxαL(w,b,α)
,此时如果约束条件被满足,那么
maxαL(w,b,α)
=
12||w||2
(原因见视频28:30-34:07)。再根据拉格朗日对偶性,
minw,bmaxαL(w,b,α)
的对偶问题是
maxαminw,bL(w,b,α)
,一个事实是maxmin(…)<=minmax(…),这个不等式对于括号中是任何函数都是成立的,大多数情况下前者小于后者,但是有些情况下两者相等,因此两者相等的情况下可以用对偶问题的解作为原始问题的解。SVM就是两者相等的情况,因为SVM的原始问题满足KKT条件(p227的定理C.3),所以可以将求解原始问题等价地转化为求解对偶问题,之后就是p104的推导,最终得到公式(7.22)、(7.23)、(7.24)表示的对偶形式。
50:50之后没有看
第8课 顺序最小最优化算法
没有看
第9课 经验风险最小化
讲解不同机器学习算法的属性,以便在合适的场景选用合适的算法
如果训练误差很小,那么测试误差也不会很大,可以认为训练误差是对测试误差的一个较好的估计,从概率理论上证明了这个结论,这个结论称为一致收敛,“一致”的含义是无论模型选择了哪种假设,最后都会一致地使得训练误差近似等于测试误差。(07:30开始,43:34结束)
讲这些是为了证明欠拟合和过拟合何时会出现,48:25是用途,提出“样本复杂度界”概念
结论:为了满足泛化误差率的要求,所需的训练样本数目有个下界
这些其实就是VC维理论,后面的视频没有接着看完。
第10课 特征选择
接着讲VC维理论,一直讲到36:37(跳过了这部分没有看),然后讲model selection
交叉验证之后得到最佳的超参数,然后重新用100%的数据去训练模型,视频中讲这种方法也很常用,这种做法到底好不好?
假设有n个特征,选择哪些特征用于模型训练是特征选择的问题。n个特征可以构成
2n
个特征子集,这是一个非常庞大的数,逐一尝试每个特征子集,看那个特征子集上得到的模型好,这种方法是不可取的。比较通用的方法是计算每个特征
xi
与标签y的“相关性”,有多种度量相关性的方法,如相关系数
corr(xi,y)
、相互信息
MI(xi,y)
,然后选取“相关性”最高的k个特征作为特征子集,用于模型训练。之后就是选择k的问题,可以手工设定,也可以用交叉验证的方法选择k。
一般直接调用机器学习库中实现的特征选择方法,sklearn中有很多中feature selection的方法,mllib中目前只有ChiSqSelector。如果训练数据是很大的稀疏矩阵,那么只有ChiSqSelector是合适的选择,因为只有它可以不必将矩阵转换为稠密矩阵就可以进行特征选择
第11课 贝叶斯统计正则化
没看
第12课 K-means算法
第13课 高斯混合模型
没看