CS229-note1

刚刚进入机器学习这一领域的学习,一开始看了Andrew Ng的machine learning,又看了点李飞飞的CS231n课程,然后又转战周志华的西瓜书,无奈都是半吊子,最后都因不解概率统计知识放弃。迷茫的时候都是知乎指明了方向,看到知乎上有人说Andrew Ng的课上有基础知识的补充,以及很良心的笔记,只怪我之前没有发现,machine lerning视频,以及笔记。本篇是个人对前四个视频及对应的note1的总结。

介绍

这一部分是Supervised Learning(监督学习)的内容,监督学习,就是你给计算机一组数据时,同时给出每个数据对应的目标值,然后学习算法根据这些数据和目标值训练出一个函数关系,称为hypothesis,当你输入所要求取的数据时,计算机就会根据这个hypothesis输出对应的目标值。有Supervised Learning,自然就有Unsupervised Learning,对于非监督学习,就是当你给出一组数据时,并不给出这些数据的正确答案,即只有这些数据,没有对应的目标值,相应的学习算法只是为了找出这些数据存在的结构特征,并不需要给出标准答案,比如clustering(聚类)问题。在监督学习中,根据target(目标)变量是连续还是离散的,将相应问题称为regression问题和classification问题。

主要分三个部分Linear Regression(线性回归)、Classification ang Logic Regression(分类问题和逻辑回归)及Generalized Linear Models(广义线性模型)。相应内容有:对于特征选择不需要太关注的线性回归的改编——Locally Weighted Regression(局部加权回归)、求线性回归问题时最小化cost function $J(\theta)$的两种方法:gradient descent(梯度下降)及the normal equations(正规方程组)、线性模型的概率解释、求逻辑回归问题时最大化likelihood function(似然函数)的两种方法:gradient ascent(梯度上升)及 Newton’s method(牛顿方法)、the perceptron(感知器) learning algorithm、the exponential family(指数分部族)及GLMs(广义线性模型)。

Generalized Linear Models

The exponential family

现单纯介绍一个概率论问题,定义一类特殊分布——the exponential family,它的分布律或者概率密度满足:$p(y;\eta)=b(y)exp(\eta^TT(y)-a(\eta))$,其中$\eta$称为natural parameter,$T(y)$是sufficient statistic(充分统计量),常取$T(y)=y$,$a(\eta)$称为log partition function(这边我不了解$a$、$b$及$T$这三个函数具体的概念意义,只知道这个分布的特点是以$\eta$为参数,$a$、$b$及$T$是三个未确定的函数,以及这边的$T(y)$在随后的GLMs算法中取期望作为输出量)。

Bernouli分布

对于$Bernouli(\Phi)$分布($\Phi$为数学期望),通过对其分布律公式进行变形,可以得到exponential family distributions的形式,即Bernouli分布是指数分布族的一种,满足$T(y)=y$,

及其他等式(这边只列出$\eta$及$T$函数,因为后面的GLMs算法并未用到$a$和$b$函数)。

Gaussion分布

对于Gaussion($\mu$,$\sigma^2$),$\sigma^2$对我们最后所要选择的模型的$\theta$参数值并没有影响,故在此处,将$\sigma^2$取为1。同样也可得出Gaussion分布也是指数分布族的一种,并有$T(y)=y$,$\mu=\eta$。

多项式分布

对于多项式分布,$y$取值$\{1,2,…,k\}$,对应的概率分别为$\Phi_1$,$\Phi_2$,…$\Phi_k$,也可得出多项式分布也是指数分布族的一种,并有$T(y)\in{R^{k-1}}$,且

由$\eta$表示$\Phi$的函数关系称为softmax函数(得到这些关系的中间过程可参考note1)。此外还有其他许多分布都属于指数分布族。

GLMs

若考虑一个回归或分类问题,根据训练样本我们需要得到一个函数关系,从而进行预测。现作如下假设:

  • $y|x;\theta$ ~ $ExponentialFamily(\eta)$;
  • 输入$x$,目的是输出$E[T(y)|x]$,大多数情况$T(y)=y$,此时输出$h(x)=E[y|x]$;
  • $\eta=\theta^Tx$,如果$\eta$是向量,则${\eta_i=\theta_i}^Tx$(这一条最好称为设计决策)。

从而得到一类很优雅的学习算法——GLMs,即广义线性模型。对于回归或分类问题,若使用GLMs算法,可以先根据target变量(在GLM术语中又称为response变量)是连续还是离散及其他特性选择指数分布族的一种分布来表示条件条件概率$y|x$,然后根据假设二和三得出用参数$\theta$表示的hyphothesis $h_\theta(x)$,最后根据训练样本利用最大似然估计求出$\theta$,使得这个算法能较好地拟合训练数据。求最大似然函数对应的参数值时,方法有梯度下降和牛顿方法。下面用GLMs算法来具体分析。

Linear Regression

考虑target变量y的取值是连续的,用指数分布族中的Gaussion分布作为模型,即条件分布$y|x$~$N(\mu,\sigma^2)$,概率密度

其中$\mu$是$x$的函数,根据GLMs的假设条件及Gaussion分布的指数分布形式,可得出

不同的$\theta$确定了不同的hypothesis,即假设空间,我们需要确定$\theta$找出一个最优的作为决策函数。那$\theta$取多少时,$h_\theta(x)$能很好地拟合训练数据,具有泛化能力,能抓住数据的本质特征,更好地决策未知数据呢,另外,我们又如何评判这个拟合标准呢,这边使用最大似然估计法。

likelihood function

似然函数是什么,看视频时云里雾里,看笔记下了个决心好好百度下,有时候克服克服这种懒性,或许一个小的概念就能解决了(就像朝阳今天写的,需要投之以热爱与投入,坚持不懈,解决问题)。对于概率问题,我们通常都是已知参数求某一件事发生的概率,关注点在于概率,即这件事发生的可能性,而似然性问题,是已知某件事发生的结果,需要用它来估计参数,虽然最后表达式还是概率的形式,但意义变了。试想我们可以表示出某件事发生的概率,现在这件事已经发生了,那不就说明发生的可能性很大,即概率比较大,而这个概率是参数的函数(对于离散型随机变量,概率指的就是它的分布律,对于连续型变量,使用概率密度)就需要找出一个参数值,使这个函数值尽可能的大,就转化为求函数最大时对应的自变量值,这个函数就是似然函数。
现在这件事是什么,是采集了$m$个训练样本,输入$x^{(i)}$对应着输出$y^{(i)}$,$x$有$n$个特征$x_0,x_1,…x_n$,这个概率是条件概率,即在$x$的条件下$y$取某个值的概率,而且如上这个概率服从Gaussion分布,在各个样本独立的情况下,似然函数

现在$x$、$y$都是已知的,$\theta$对结果没影响(关于这个小伙伴可自行百度研究)?接着取对数化简,最大化这个函数就相当于最小化$\frac12\sum_{i=1}^m(y^{(i)}-\theta^Tx^{(i)})^2$,即cost函数$J(\theta)$,这个结果从形式上也可理解,最后的效果就是为了使$h_\theta(x)$接近于$y$,这个结果就相当于使用最小二乘法?

Gradient Descent的理解

下面我们就需要求$\theta$为多少时,$J(\theta)$最小了。关于梯度下降,Andrew Ng是这样讲的,假设你站在一个山上,现在想下山,那你环顾四周,从哪个方向下去最快。山就相当于一个二元函数,即$J(\theta)$是$\theta_0$和$\theta_1$的函数,且有$h_\theta(x)=\theta^Tx=\theta_0+\theta_1x$,这时$x$只有一个特征。复习高数时,理解了下二元函数的方向导数和梯度的关系,二元函数$z=f(x,y)$在空间上就是一个曲面,在定义域组成的平面区域内在点$(x_0,y_0)$处指定一个方向,z关于这个方向上的变化率就称为在该点的方向导数,在该点可指定360度无数个方向,那哪个方向上z的变化率最大呢,事实证明,函数$z$在这点$(x_0,y_0)$的梯度的方向上变化快,那我现在站在山上一个点处,我只要沿着在这点的梯度方向走一段距离到达下一个点,再沿着那个点对应的梯度方向走一段距离,不断更新我的位置,直到走到最低点。这就是梯度下降的思路,我先对$\theta$赋初始值,然后通过减梯度(即减偏导数)不断更新$\theta$,进行迭代,直到最后收敛即$\theta$值基本不变,随着越来越接近最小值,梯度的值也越来越小,步子也迈得越来越小。对于梯度下降有两种实现方法:batch(批)梯度下降和stochastic(随机)梯度下降(见note1)。

正规方程组的理解

试想啊,要求$\theta$为多少时,$J(\theta)$最小,简单啊,偏导数都为0啊,这就是正规方程组的思路。Andrew Ng先介绍了下向量和矩阵梯度的写法,试想啊,二元函数梯度,其实就是求偏导啊,但是可以把两个一阶偏导都放在一起,写成向量的形式;那自变量是$n+1$维向量呢,其实你就可以看成是$n+1$个自变量啦,那它的梯度也就是把$n+1$个一阶偏导放一起咯,组成一个$n+1$维向量,那矩阵的梯度不也是如此。将$J(\theta)$的梯度令为0,经过一些运算,中途用到trace(迹)的性质,最后求解出了$\theta$,是不是很兴奋!根据训练样本$X$和$\vec{y}$就可以直接计算出$\theta$了,带入$h_\theta(x)$就可以得到决策函数了,不用再进行迭代。

Logic Regression

对于二分类,$y\in{\{0,1\}}$,采用指数分布族中的$Bernouli(\Phi)$分布进行建模,

(可以看出$h_\theta(x)$就是在$x$的条件下$y$为1的概率)。同样根据$m$个独立样本,写出$m$个样本在$x^{(i)}$的条件下,$\theta$为后定参数时$y=y^{(i)}$的概率之积,即关于$\theta$的似然函数$L(\theta)$,再将它最大化。
这边求$L(\theta)$最大值对应的参数$\theta$时,用了两种方法,一个是与前面类似的梯度上升法,另一个是牛顿法。
牛顿法也是通过不停更新迭代$\theta$,只是更新速度和收敛速度都快于梯度上升法。又像正规方程组一样,试图将$L(\theta)$对$\theta$偏导数为0的点找出来。对于求函数零点,它的思路是,先给予$\theta$初始值,然后用函数在这点的切线作为函数的逼近,找出切线所在直线的零点,将这个点作为下一个$\theta$值,不断迭代,直到收敛。它的整体想法就是以切线不断逼近原来的函数。

Softmax Regression

对于多分类问题,$y\in{\{1,2,…,k\}}$,采用指数分布族中的多项式分布进行建模。由于这边$T(y)$是一个$k-1$维向量,对其求期望所得的$h_\theta(x)$也就是一个$k-1$维向量,那我输入一个$x$,我需要算法告诉我这个$x$对应哪一类,它却给我一个向量,它指的是什么呢?其实它指的是对于取前$k-1$个类的概率,最后一个类呢?用1减不就好了,我们知道了概率,哪个概率最大不就相当于算法告诉我们它选择哪一个类。这只是决策函数的形式,可是参数$\theta$我们还不知道呢,同样类似上面,最大化似然函数,并使用梯度上升或牛顿法进行求解。

补充

对于局部加权回归,为了弥补线性回归中可能存在的特征选择的问题,比如线性回归可能没有捕捉到数据中的非线性性,从而不能很好地拟合数据,局部加权回归只对所要求解的$x_0$值附近的样本值进行线性拟合,少量的局部数据总是能接近线性关系,这个思路转化为对所有样本数据进行一个加权,$x_0$值附近的样本值加权值比较大,远离$x_0$的加权值比较小。但是局部加权回归有个弊端,就是你每次预测一个值时,都需要使用所有样本数据,进行重新拟合,而单纯的线性回归在训练后得到一个决策函数后就可删除样本数据,直接使用一个函数进行预测。
对于感知器学习算法,我只知道将逻辑回归中的sigmoid函数替代成阈值函数,但其后续的概率解释很难?后续的视频教程应该会有所讲解。
另外,Linear Regression、Logic Regression以及Softmax Regression都是GLMs算法中的一种,在使用GLMs算法时,我们首先需要根据target的性质来选择指数分布族中的一种分布,根据其分布特性及GLMs的三个假设,得出$p(y|x)$及输出$h_\theta(x)$,$h_\theta(x)$即我们最后用来预测的决策函数,但是此时的参数$\theta$未知,我们怎么解出来呢?从概率的角度,借助$p(y|x)$来求得似然函数,最后求出似然函数最大时对应的参数$\theta$值。所有的一切都转化为求函数最大值,这边主要使用了两种方法:梯度上升和牛顿法。
这边,前几日在知乎上看到一句话:按照李航博士的观点,机器学习三要素为:模型、策略、算法。我还没咋去研究,不过总感觉跟这种思路有点类似。

啊,这篇终于写完了,可是真心感觉写的不行,犹记得大物老师说过,当你理解了一点知识,你能用很精简有条理的语言进行总结,而我这篇,怎么这么多,前面的内容好像是在翻译笔记一样。唉,后面改正,舍不得再删掉重写。
天啦噜,昨天晚上写完准备放到博客上去,它竟然提示我有错误,身心俱疲!找了好久,后来发现一篇文档hexo博客MathJax公式渲染问题,原来是这个问题。然而放上去后效果不佳,我明明写的块级公式,为什么一直给我显示成行内公式?中午朝阳过来给我看了下,试了试出现的问题,最后!竟然是我写的不规范?当把块级公式跟其他文字隔开时,哇,清爽的公式这才出现。
关于公示渲染问题可见小阳博客hexo渲染mathjax公式解决方案
呵呵哒,今天遇到的问题有点多,刚刚最后稍稍修饰了一点,本地查看正常,当我发布上去,首页面也正常,可是当我点击阅读全文或直接点击题目查看全文,??,404?发生了什么。最后百度发现一个大小写问题,我查看了一下,果真github网站上博客的文件夹是小写,而本地的是大写,所以我就直接把本地改成了小写,就ok了,但有个教程Hexo 部署到 Github Pages 文件夹大小写问题