梯度下降算法学习笔记

内容来自于斯坦福大学《机器学习与数据挖掘公开课》。

介于算法中用到了许多线性代数的知识。所以我感觉有必要先对线性代数的基础知识做一个回顾和梳理。

1基础概念和记号

线性代数对于线性方程组可以提供一种简便的表达和操作方式,例如对于如下的方程组:

4x1-5x2=13

-2x1+3x2=-9

可以简单的表示成下面的方式:

X也是一个矩阵,为(x1,x2)T,当然你可以看成一个列向量。

1.1基本记号

用A ∈表示一个矩阵A,有m行,n列,并且每一个矩阵元素都是实数。

用x ∈ , 表示一个n维向量. 通常是一个列向量. 如果要表示一个行向量的话,通常是以列向量的转置(后面加T)来表示。

1.2向量的内积和外积

根据课内的定义,如果形式如xT y,或者yT x,则表示为内积,结果为一个实数,表示的是:,如果形式为xyT,则表示的为外积:

1.3矩阵-向量的乘法

给定一个矩阵A ∈ Rm×n,以及一个向量x ∈ Rn,他们乘积为一个向量y = Ax ∈ Rm。也即如下的表示:

如果A为行表示的矩阵(即表示为),则y的表示为:

相对的,如果A为列表示的矩阵,则y的表示为:

即:y看成A的列的线性组合,每一列都乘以一个系数并相加,系数由x得到。

同理,

yT=xT*A表示为:

yT是A的行的线性组合,每一行都乘以一个系数并相加,系数由x得到。

1.4矩阵-矩阵的乘法

同样有两种表示方式:

第一种:A表示为行,B表示为列

第二种,A表示为列,B表示为行:

本质上是一样的,只是表示方式不同罢了。

1.5矩阵的梯度运算(这是老师自定义的)

定义函数f,是从m  x  n矩阵到实数的一个映射,那么对于f在A上的梯度的定义如下:

这里我的理解是,f(A)=关于A中的元素的表达式,是一个实数,然后所谓的对于A的梯度即是和A同样规模的矩阵,矩阵中的每一个元素就是f(A)针对原来的元素的求导。

1.6其他概念

因为篇幅原因,所以不在这里继续赘述,其他需要的概念还有单位矩阵、对角线矩阵、矩阵转置、对称矩阵(AT=A)、反对称矩阵(A=-AT)、矩阵的迹、向量的模、线性无关、矩阵的秩、满秩矩阵、矩阵的逆(当且仅当矩阵满秩时可逆)、正交矩阵、矩阵的列空间(值域)、行列式、特征向量与特征值……

2用到的公式

在课程中用到了许多公式,罗列一下。嗯,部分公式的证明很简单,部分难的证明我也不会,也懒得去细想了,毕竟感觉上数学对于我来说更像是工具吧。

转置相关:

• (AT)T = A
• (AB)T = BT AT
• (A + B)T = AT + BT

迹相关:

• For A ∈ Rn×n, trA = trAT .
• For A, B ∈ Rn×n, tr(A + B) =trA + trB.
• For A ∈ Rn×n, t ∈ R, tr(tA) = t trA.
• For A, B such that AB issquare, trAB = trBA.
• For A, B, C such that ABC issquare, trABC = trBCA = trCAB。 当乘法变多时也一样,就是每次从末尾取一个矩阵放到前面去,这样的矩阵乘法所得矩阵的迹是一致的。

秩相关

• For A ∈ Rm×n,rank(A) ≤ min(m, n). If rank(A) = min(m, n), 则A称为满秩
• For A ∈ Rm×n,rank(A) = rank(AT).
• For A ∈ Rm×n, B ∈ Rn×p,rank(AB) ≤ min(rank(A), rank(B)).
• For A, B ∈ Rm×n,rank(A + B) ≤ rank(A) +rank(B).

逆相关:

• (A−1)−1 = A
• If Ax = b, 左右都乘以A−1 得到 x = A−1b.
• (AB)−1 = B−1A−1
• (A−1)T = (AT)−1. F通常表示为A−T.

行列式相关:

• For A ∈ Rn×n, |A| = |AT |.
• For A, B ∈ Rn×n, |AB| = |A||B|.
• For A ∈ Rn×n, |A| = 0,表示矩阵A是奇异矩阵,不可逆矩阵
• For A ∈ Rn×n and A 可逆, |A|−1 = 1/|A|.

梯度相关:

• ∇x(f(x) + g(x)) = ∇xf(x) + ∇xg(x).
• For t ∈ R, ∇x(t f(x)) = t∇xf(x).

• ∇xbT x = b
• ∇xxT Ax = 2Ax (if A 对称)
• ∇2xxT Ax = 2A (if A 对称)

• ∇A|A| =(adj(A))T = |A|A−T . adj=adjoint

3梯度下降算法和正规方程组实例应用

例子用的是上节课的房价的例子,有一组数据,有房子面积和房子价格,输入格式举例:

老师定义的变量如下:

m:训练样本的数目

x:输入的变量(输入的特征,在这个例子中为房子面积,后来又加了一个房子的卧室数目)

y :输出变量(目标变量,这个例子中就是房价)

(x,y):表示的是一个样本

:表示的第i个样本,表示为

3.1监督学习概念

所谓的监督学习即为告诉算法每个样本的正确答案,学习后的算法对新的输入也能输入正确的答案 。监督指的是在训练样本答案的监督下,h即为监督学习函数。

此例中我们假设输出目标变量是输入变量的线性组合,也就是说,我们的假设是存下如下的h(x):

Theta表示是特征前面的参数(也称作特征权重)。也就是经过h(x)之后得到的就是预测的结果了。

如果假设x0=1,那么原来的h(x)就可以简单的表示为如下形式:

,其中n为特征数目,我们为了表达简便,把theta和x都写成向量的形式。下面就是如何求出θ(向量)使得h(x)尽可能接近实际结果的,至少在训练集内接近训练集中的正确答案。

我们定义一个花费函数(costfunction),针对每一组θ,计算出h(x)与实际值的差值。定义如下:

  这也是用的最小二乘法的思想,但是之所以乘以1/2是为了简化后面的计算。针对训练集中的每一组数据。剩下的问题就是求得minJ(θ)时的θ取值,因为J(θ)是随着θ变化而变化,所以我们要求得minJ(θ)时的θ就是我们想要的θ(这个min也叫做最小花费函数),怎么样求出这组theta呢?采用的方法就是梯度下降算法和正规方程组。我们首先来看梯度下降算法。

3.2梯度下降算法

梯度下降算法是一种搜索算法,基本思想可以这样理解:我们从山上的某一点出发,找一个最陡的坡走一步(也就是找梯度方向),到达一个点之后,再找最陡的坡,再走一步,直到我们不断的这么走,走到最“低”点(最小花费函数收敛点)。

如上图所示,x,y表示的是theta0和theta1,z方向表示的是花费函数,很明显出发点不同,最后到达的收敛点可能不一样。当然如果是碗状的,那么收敛点就应该是一样的。

算法的theta更新表示如下:

对每一个theta(j),都先求J(θ)对theta(j)的偏导(梯度方向),然后减少α,然后将现在的theta(j)带入,求得新的theta(j)进行更新。其中α为步长,你可以理解为我们下山时走的步子的大小。步子太小了,收敛速度慢,步子太大了,可能会在收敛点附近来回摆动导致无法到达最低点。P.S.这个符号根据老师所说理解为程序中的赋值符号(=号),如果是=号,则理解为值是相等的(编程里面的==号)。

下面我们先理解下,假设现在训练集只有一组数据求关于theta(j)的偏导:

带入可以得到关于一组数据的theta(j)的表达式,不妨,这组数据就是第i组,则表示为:

然后我们将这个更新theta(j)的方法扩充到m个训练样本中,就可以得到下面的式子:

P.S.最外面的那个xj(i)的理解为:第i组数据中的第j个特征(feature)值。

3.2.1批量梯度下降算法(batch gxxxx dxxxx algorithm)

重复执行上面的这个更新步骤,直到收敛,就可以得到这组θ的值了。就是这个过程:

这个算法就是批量梯度下降算法,为什么叫批量梯度下降?因为注意到上式中每更新一个θj都需要计算所有的样本取值,所以当样本数目非常大的时候(例如上万条甚至数十万条的时候),这样的更新非常慢,找θ也非常慢,所以就有了另外一种改进的梯度下降算法。

3.2.2随机梯度下降算法/增量梯度下降算法

做一个小小的改进,用一个样本theta的更新。这种方法的好处是速度上肯定比批量梯度下降算法快,而且样本数据越多,体现应该就越明显。劣势是得到的收敛点的值和批量梯度算法比起来也许不是最优的值。

3.2.3梯度下降算法总结

不管是批量梯度算法还是随机梯度下降算法,他们的共同点有以下:

1.时间复杂度都是O(mn)   (m为样本数目,n为特征值/影响因子数目)

2.都有梯度下降性质:接近收敛时,每次“步子”(指实际减去的数,而不是前面定义的α,α是手动设置参数,人为改变才会变)会越来越小。其原因是每次减去α乘以梯度,但是随着收敛的进行,梯度会越来越小,所以减去的值会。

3.判定收敛的方法都是如下两种:

1)两次迭代值改变量极小极小

2)J(θ)的值改变量极小极小

3.3正规方程组

写在前面:这种方法是另一种方法了,和梯度下降算法就没啥联系了!!!!!!

首先回顾下前面定义的矩阵梯度运算:

例如:

则:

定义一个矩阵,称作设计矩阵,表示的是所有的样本的输入:

因为前面得到的结论:(θT*x(i)和x(i)的转置*θ结果是一样),可以得到可以写成如下的形式:

又因为对于任意向量,,所以可以得到:

运用下面介绍的一系列性质:

(5)是由(2)和(3)得到的,进行下面的推导

中间加tr不变的原因是因为是一个实数(看成1x1矩阵)加迹等于他本身。

将上式设为0,得到正规方程组

求解得到

梯度下降算法和正规方程组学习笔记相关推荐

  1. 线性规划、梯度下降、正规方程组——斯坦福ML公开课笔记1-2

    转载请注明链接:http://blog.csdn.net/xinzhangyanxiang/article/details/9101621 最近在看Ng的机器学习公开课,Ng的讲法循循善诱,感觉提高了 ...

  2. 线性回归的梯度下降和正规方程组求解

    1.  线性回归 在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析.这种函数是一个或多个称为回归系 ...

  3. 3. 机器学习中为什么需要梯度下降?梯度下降算法缺点?_一起学习西瓜书2

    今天的这两章比较枯燥!线性模型和决策树!其实机器学习说白了就是回归和分类. 机器学习之线性模型 1.一元线性回归模型 2.多元线性回归模型 3.逻辑回归模型(对数几率回归) Logistic回归模型的 ...

  4. python sklearn 梯度下降法_Python- sklearn之梯度下降算法原理

    给定一个矩阵A∈Rm×n,以及一个向量x∈Rn,他们乘积为一个向量y = Ax∈Rm.也即如下的表示: 如果A为行表示的矩阵(即表示为 ),则y的表示为: 相对的,如果A为列表示的矩阵,则y的表示为: ...

  5. opencv学习笔记17:梯度运算之laplacian算子及其应用

    laplacian算子理论 前文介绍了sobel算子及其函数使用 和scharr算子及其函数使用 使用方法 不同算子比较 sobel,和scharr算子:右边121列-左边121列.右边-3,10,3 ...

  6. opencv学习笔记16:梯度运算之scharr算子及其函数使用

    前文介绍了sobel算子 opencv学习笔记14:sobel算子及其函数使用 scharr算子理论 系数和sobel不一样,其他一样. scharr函数使用 dst=cv2.Scharr(src,d ...

  7. 李航·《统计学习方法》学习笔记

    第一章 统计学习的方法概论 1.1 统计学习概述 1. 统计学习的过程: 2. 统计学习的分类: 3. 监督学习的分类 3.1 生成方法与判别模方法 3.1.1 生成方法 3.1.1 判别方法 3.2 ...

  8. 资料:高等数学学习笔记——高等数学(四)学习笔记汇总

    高等数学四(共21讲)课程大纲及对应的学习笔记 第一讲 多元函数的概念 (1.问题引入 2.1.点集的基本知识--邻域的概念 2.2.点集的基本知识--区域的概念 3.多元函数定义 4.二元函数的几何 ...

  9. 一文清晰讲解机器学习中梯度下降算法(包括其变式算法)

    本篇文章向大家介绍梯度下降(Gradient Descent)这一特殊的优化技术,我们在机器学习中会频繁用到. 前言 无论是要解决现实生活中的难题,还是要创建一款新的软件产品,我们最终的目标都是使其达 ...

最新文章

  1. CUDA学习笔记之 CUDA存储器模型
  2. 博士申请 | 佐治亚理工学院陈永昕教授招收机器学习理论方向博士生
  3. java 微型数据库_Java 9代码工具:使用Java微型基准测试工具的实践会话
  4. echarts中datazoom相关配置
  5. Confluence 6 导入 Active Directory 服务器证书 - UNIX
  6. 运动matlab分析机械振动,《运用Matlab分析机械振动》-毕业论文.doc
  7. springBoot Vue 项目实战
  8. qt设置文本背景透明_QT透明显示文字
  9. javascript 属性的特性 二十五
  10. html写樱花树,写樱花树的作文
  11. Python代码爬取下载应用宝所有APP软件
  12. 什么是操作系统?操作系统介绍
  13. Python实现PDF转文字.
  14. 在线文档可以直接打印吗?哪里可以打印在线文档
  15. 查询数据库表空间文件位置及扩充表空间,查询表空间容量
  16. 李宏毅机器学习课程 思维导图
  17. 计算机数据表格方框,WPS表格使用心得:不容小觑的小方框 -电脑资料
  18. 新库上线 | CnOpenData 新三板公司专利及引用被引用数据
  19. Win7 用户文件夹转移方法
  20. 天基实业要拥有投资理财智慧

热门文章

  1. mysqldb mysql config_python 安装MySQLdb mysql_config not fount原因
  2. 【C语言】如何去求最大公约数和最小公倍数?
  3. windows之wps卸载不干净解决
  4. 数据结构:求两个有序列表的交集,并集
  5. 数据库主流容灾方案对比分析
  6. matlab命令行窗口显示长度设置_MATLAB中如何设置坐标轴的显示长度?
  7. 剑指offer刷题答案
  8. 激活ltsb2016_激活windows10 LTSB 2016
  9. MySQL使用数据库
  10. 最全:半导体上下游供应商汇总