机器学习基础知识-回归与梯度下降法

一、机器学习的概念
        机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径。它的应用已遍及人工智能的各个分支,如专家系统、自动推理、自然语言理解、模式识别、计算机视觉、智能机器人等领域。

二、按学习形式分类
        1)监督学习(supervised learning)
        监督学习,即在机械学习过程中提供对错指示。一般实在是数据组中包含最终结果(0,1)。通过算法让机器自我减少误差。这一类学习主要应用于分类和预测 (regression & classify)。
        2)非监督学习(unsupervised learning)
        非监督学习又称归纳性学习(clustering)利用K方式(Kmeans),建立中心(centriole),通过循环和递减运算(iteration&descent)来减小误差,达到分类的目的。

三、回归与机器学习
        回归,研究一个随机变量Y对另一个(X)或一组(X1,X2,…,Xk)变量的相依关系的统计分析方法。一般来说,回归分析是通过规定因变量和自变量来确定变量之间的因果关系,建立回归模型,并根据实测数据来求解模型的各个参数,然后评价回归模型是否能够很好的拟合实测数据;如果能够很好的拟合,则可以根据自变量作进一步预测。
直白的讲,回归就是对一组数据集,我们能够找到一个曲线近似的拟合各个点。如果拟合的曲线恰好是一条直线,那么就是线性回归;如果是二次曲线,就是二次回归等等。

        前面的概念中,我们知道机器学习可以简单的理解为计算机系统模拟人类学习知识并根据所学知识产生新的判断输出的过程,我们可以将回归看作一个简单的学习过程,在一个线性回归中,我们需要通过一组数据集建立一个拟合函数h(x)=ax+b来拟合各个数据点,这可以看作是一个学习的过程,直线与各个点拟合越好,我们称其学习的结果越令人满意,当拟合最好时,我们可以通过给其其他的节点,并通过拟合函数来预测新值,当然给定的学习数据不同,最终产生的拟合效果也不同,这和人类学习知识是一致的。

        上述过程阐述了如下图的典型机器学习过程,首先给出一个输入数据,我们的算法会通过一系列的过程得到一个估计的函数,这个函数有能力对没有见过的新数据给出一个新的估计,也被称为构建一个模型。


        为了描述更多关于机器学习的基础,下面给出几个标识符和概念:
        训练数据的输入值和输出值我们用X和Y表示,X为可以是n维向量,代表实际学习对象的特征,例如长、宽、高等;
        拟合的函数(或者称为假设或者模型),一般写做 y = h(x);
        我们用X1,X2..Xn 去描述n维向量X里面的分量,比如x1=房间的面积,x2=房间的朝向,等等,我们可以做出一个估计函数:

        θ在这儿称为参数,在这儿的意思是调整X中每个分量的影响力,就是到底是房屋的面积更重要还是房屋的地段更重要。也就是说对于一个给定的房屋数据X,它邮两部分数据组成,我们需要构造一个线性组合以表达房屋X的具体价值Y。如果我们令X0 = 1,就可以用向量的方式来表示了:

        既然我们能够写出房屋的价值与房屋面积和地段等属性的表达式,那么我们就可以根据任意房屋的相关性质预测或者直接计算房屋的价值,但是,这个表达式是我们猜测的,其中的参数θ如何确定呢?就是利用现有的数据进行“学习”的过程,每一个θ都能够获得一个表达式,那么到底θ为何值时h函数才是最好的呢,我们需要一个机制去评估我们θ是否比较好,所以说需要对我们做出的h函数进行评估,一般这个函数称为损失函数(loss function)或者错误函数(error function),描述h函数不好的程度,在下面,我们称这个函数为J函数。在这儿我们可以做出下面的一个错误函数,具体函数形式为什么是这样子的,我们可以暂时认为是神说的:

image

        形式上看这个错误估计函数应该是去对x(i)的估计值与真实值y(i)差的平方和作为错误估计函数,在做一些常系数的调整方便计算;那么,针对这个错误函数,我们已知X(i),Y(i),m(已知数据个数即学习数据规模)求θ使得错误函数的值最小的过程,关于求这样的最小值问题有很多方法,其中有最小二乘法(min square),是一种完全是数学描述的方法,在stanford机器学习开放课最后的部分会推导最小二乘法的公式的来源,这个来很多的机器学习和数学书上都可以找到,这里就不提最小二乘法,而我们这里按照该门课程的顺序介绍使用梯度下降法求解令J最小的θ。

四、梯度下降法

        梯度下降法,是求解无约束最优化问题的一种常用方法,有实现简单的优点。梯度下降法是迭代算法,每一步需要求解目标函数的梯度向量。首先我们应该清楚,一个多元函数的梯度方向是该函数值增大最陡的方向。具体化到1元函数中时,梯度方向首先是沿着曲线的切线的,然后取切线向上增长的方向为梯度方向,2元或者多元函数中,梯度向量为函数值f对每个变量的导数,该向量的方向就是梯度的方向,当然向量的大小也就是梯度的大小。

 

 

        梯度下降法是利用负梯度方向(梯度方向是求最大值的方向)来决定每次迭代的新的搜索方向,使得每次迭代能使待优化的目标函数逐步减小。一种简单形式是:x(k+1)=x(k)-a*g(k),其中a称为学习速率,可以是较小的常数。g(k)是曲线x(k)在k点的的梯度。对于上述错误函数J,我们使用梯度下降法求解最小值时的θ是按下面的流程进行的:

        1)首先对θ赋值,这个值可以是随机的,也可以让θ是一个全零的向量。
        2)改变θ的值,使得J(θ)按梯度下降的方向进行减少。
        为了更清楚,给出下面的图(当然我不觉得直接给出这么个图大家能看明白,为什么J的曲线是这个样子呢?如果明白最好了,不明白可以暂时不管,认为是神告诉我们的就好了,实际上这是一个表示参数θ与误差函数J(θ)的关系图,红色的部分是表示J(θ)有着比较高的取值(山顶 或者 凸起的顶部),我们需要的是,能够让J(θ)的值尽量的低。也就是深蓝色的部分(山底 或者 凹下的最低点),找到这个地方的θ。(当然θ是由θ0,θ1两个维度组成的二维向量):

 

        在上面提到梯度下降法的第一步是给θ给一个初值,假设随机给的初值是在图上的十字点。
        然后我们将θ按照梯度下降的方向进行调整,就会使得J(θ)往更低的方向进行变化,如图所示,算法的结束将是在θ下降到无法继续下降为止。

 

 

         当然,可能梯度下降的最终点并非是全局最小点,可能是一个局部最小点,因为初始点不同,梯度的方向也可能改变,于是乎可能是下面的情况,那么我么也可以意识到,梯度下降算法所得到的最优解可能是局部最小点,(即陷在某一处的凹坑处,出不来了):

 

        下面我将用根据梯度下降法的简单形式和梯度的概念对J(θ)求解,以下是一些推到过程,(用到的求导过程如果不懂的话就去问神或者查查高等数学知识吧,话说学得高等数学终于知道干什么了),根据梯度下降法形式x(k+1)=x(k)-a*g(k),我们首先应该求解梯度g(θ),即对我们的函数J(θ)求偏导J

        下面是更新的过程,也就是θi会向着梯度最小的方向进行减少。θi表示更新之前的值,-后面的部分表示按梯度方向减少的量,α表示步长,也就是每次按照梯度减少的方向变化多少。

         一个很重要的地方值得注意的是,梯度是有方向的,对于一个向量θ,每一维分量θi都可以求出一个梯度的方向,我们就可以找到一个整体的方向,在变化的时候,我们就朝着下降最多的方向进行变化就可以达到一个最小点,不管它是局部的还是全局的。


参考文章:
        http://baike.sogou.com/v231046.htm

        http://blog.csdn.net/zimohuakai/article/details/6918590?c=8a2ab459604151929a8ea5f995489aab

        http://blog.csdn.net/xiazdong/article/details/7950084

        http://blog.csdn.net/a15620907776/article/details/39299651

        http://v.163.com/movie/2008/1/B/O/M6SGF6VB4_M6SGHJ9BO.html

发布了34 篇原创文章 · 获赞 7 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章