内容简介:50年代,第一个机器学习的定义来自于Arthur Samuel。他定义机器学习为:他编写了一个西洋棋程序。 这程序神奇之处在于,编程者自己并不是个下棋高手。 但因为他太菜了,于是就通过编程, 让西洋棋程序自己跟自己下了上万盘棋。通过观察 哪种布局(棋盘位置)会赢,哪种布局会输, 久而久之,这西洋棋程序明白了什么是好的布局, 什么样是坏的布局。程序通过学习后, 玩西洋棋的水平超过了Samuel。这绝对是令人注目的成果。 尽管编写者自己是个菜鸟,但因为 计算机有着足够的耐心,去下上万盘的棋, 没有人有这耐心去
早期定义
50年代,第一个机器学习的定义来自于Arthur Samuel。他定义机器学习为: 在特定编程的情况下,给予计算机学习能力的领域。
他编写了一个西洋棋程序。 这程序神奇之处在于,编程者自己并不是个下棋高手。 但因为他太菜了,于是就通过编程, 让西洋棋程序自己跟自己下了上万盘棋。通过观察 哪种布局(棋盘位置)会赢,哪种布局会输, 久而久之,这西洋棋程序明白了什么是好的布局, 什么样是坏的布局。程序通过学习后, 玩西洋棋的水平超过了Samuel。这绝对是令人注目的成果。 尽管编写者自己是个菜鸟,但因为 计算机有着足够的耐心,去下上万盘的棋, 没有人有这耐心去下这么多盘棋。通过这些练习, 计算机获得无比丰富的经验,于是渐渐成为了 比Samuel更厉害的西洋棋手。上述是个有点不正式的定义, 也比较古老。
近期的定义
由来自卡内基梅隆大学的Tom Mitchell提出,机器学习定义如下: 一个程序被认为能从经验E中学习,解决任务 T,达到 性能度量值P,当且仅当,有了经验E后,经过P评判, 程序在处理 T 时的性能有所提升。 在西洋棋那例子中,经验e 就是 程序上万次的自我练习的经验 而任务 t 就是下棋。性能度量值 p呢, 就是它在与一些新的对手比赛时,赢得比赛的概率。
Machine Learning的学习算法
1.Supervised learning(监督学习)
教计算机如何去完成任务
在有监督的学习中,我们得到一个数据集,并且已经知道我们的正确输出应该是什么样的,并且认为输入和输出之间存在关系。
监督学习问题分为“ 回归 ”和“ 分类 ”问题。在回归问题中,我们试图在连续输出中预测结果,这意味着我们正在尝试将输入变量映射到某个连续函数。在分类问题中,我们试图在离散输出中预测结果。换句话说,我们试图将输入变量映射到离散类别。
例子1:
鉴于有关房地产市场房屋面积的数据,请尝试预测房价。作为大小函数的价格是连续输 出,因此这是一个回归问题。 我们可以将这个例子变成一个分类问题,而不是让我们的输出关于房子“卖得多于还是 低于要价”。在这里,我们将基于价格的房屋分为两个不同的类别。 复制代码
例子2:
回归 - 鉴于一个人的照片,我们必须根据给定的图片预测他们的年龄 分类 - 鉴于患有肿瘤的患者,我们必须预测肿瘤是恶性的还是良性的。 复制代码
2.Unsupervised learning(非监督学习)
让计算机自己进行学习
无监督学习使我们能够在很少或根本不知道我们的结果应该是什么样的情况下解决问题。我们可以从数据中导出结构,我们不一定知道变量的影响。
我们可以通过基于数据中变量之间的关系聚类数据来推导出这种结构。
在无监督学习的情况下,没有基于预测结果的反馈。
例子:
聚类:收集1,000,000个不同基因的集合,并找到一种方法将这些基因自动分组成不同 的相似或通过不同变量相关的组,例如寿命,位置,角色等。 非聚类:“鸡尾酒会算法”允许您在混乱的环境中查找结构。(即在鸡尾酒会上从声音网 格中识别个别声音和音乐)。 复制代码
3.Reinforcement learning(强化学习)
4.Recommender system(推荐系统)
线性回归算法
模型表示
为了建立未来使用的符号,我们将使用
表示“输入”变量(本例中的生活区域),也称为输入特征,和
表示我们试图预测的“输出”或目标变量(价格)。一对
被称为训练示例,以及我们将用于学习的数据集 - m个训练样例的列表
称为训练集。请注意,符号中的上标“(i)”只是训练集的索引,与取幂无关。我们还将使用X来表示输入值的空间,并使用Y来表示输出值的空间。在这个例子中,X = Y =ℝ。
为了更加正式地描述监督学习问题,我们的目标是,在给定训练集的情况下,学习函数h:X→Y,使得h(x)是y的对应值的“好”预测器。由于历史原因,该函数h被称为 hypothesis。从图中可以看出,这个过程是这样的:
当我们试图预测的目标变量是连续的时,例如在我们的住房示例中,我们将学习问题称为回归问题。当y只能承担少量离散值时(例如,如果给定生活区域,我们想要预测住宅是房屋还是公寓,请说),我们称之为分类问题。
Cost Function(成本函数)
我们可以使用 成本函数 来衡量我们的假设函数的准确性。这需要假设的所有结果与x和实际输出y的输入之间的平均差异(实际上是平均值的更高版本)。
此函数另外称为“平方误差函数”或“均方误差”。平均值减半(1/2)是为了便于计算梯度下降,因为平方函数的导数项将抵消掉(1/2)。下图总结了成本函数的作用:
如果我们试图用视觉术语来思考它,我们的训练数据集就会分散在xy平面上。我们正试图做一条由hθ(x)定义的直线通过这些分散的数据点。
我们的目标是获得最佳线路。最好的线将是这样的,使得来自线的散射点的平均垂直距离将是最小的。理想情况下,该线应该通过我们的训练数据集的所有点。在这种情况下,J(θ0 ,θ1)的值将为0。
为了方便理解,我们可以先把θ0设为0,
下图是θ1 = 1时:
θ1 = 0.5时:
下图是J(θ1)大概的图像:
因此,我们需要找到一个θ1来使Cost Function最小化,在上面的情况中,θ1 = 1就是我们想要的值。
当同时考虑θ0和θ1的时候,图像是这样的: 这是一个三维曲面图 两个轴分别表示θ0和θ1,随着你改变θ0和θ1的大小,你便会得到不同的代价函数 J(θ0,θ1),对于某个特定的点 (θ0,θ1) 这个曲面的高度 也就是竖直方向的高度 就表示代价函数 J(θ0,θ1) 的值。
下图与上图是同一个意思,下图可以理解成是从上图以俯视的角度去看,而最低点就是同心椭圆形的中心点。
等高线图是包含许多等高线的图形。双变量函数的等高线在同一行的所有点处具有相同的值。
上面绿线上的三个绿点具有相同的值
上图最大限度地最小化成本函数,θ0大约为250,θ1大约为0.12。在我们的图表右侧绘制这些值似乎将我们的点置于最内圈“圆圈”的中心。
梯度下降
所以我们有假设函数,我们有一种方法可以衡量它与数据的匹配程度。现在我们需要估计假设函数中的参数。这就是梯度下降的地方。
想象一下,我们根据其字段θ0、θ1绘制我们的假设函数(实际上我们将成本函数绘制为参数估计的函数)。我们不是绘制x和y本身,而是我们的假设函数的参数范围以及选择一组特定参数所产生的成本。
我们把θ0作为x轴和θ1作为y轴,在垂直z轴上具有成本函数。我们的图上的点将是成本函数的结果,使用我们的假设和那些特定的θ参数。下图描绘了这样的设置。
当我们的成本函数位于图中凹坑的最底部时,即当它的值最小时,我们就会知道我们已经成功了。红色箭头显示图表中的最小点。
我们这样做的方法是采用我们的成本函数的导数(一个函数的切线)。切线的斜率是该点的导数,它将为我们提供一个朝向的方向。我们在最陡下降的方向上降低成本函数。每个步骤的大小由参数α确定,该参数称为learning rate(学习速率)。
例如,上图中每个“星”之间的距离表示由参数α确定的步长。较小的α将导致较小的步长,较大的α将导致较大的步长。每一步的方向由J(θ0,θ1)的偏导数确定。根据图表的开始位置,可能会在不同的点上结束。上图显示了两个不同的起点,最终出现在两个不同的地方。
梯度下降算法是:
重复直到收敛:
j = 0,1表示特征索引号。
在每次迭代j时,应该同时更新参数θ1,θ2,...,θn。在计算另一个参数之前更新特定参数j (th)迭代将导致错误的实现。 如下图:(应该同时更新,而不是更新一个后再更新另一个)
我们可以先从只有一个参数的场景来理解梯度下降并绘制其成本函数以实现梯度下降。
我们的单个参数公式是:
重复直到收敛:
无论
的斜坡的标志如何,θ1最终收敛到最小值。下图显示当斜率为负时,其值为θ1增加,当它是正时,价值θ1降低。
另外,我们应该调整参数α确保梯度下降算法在合理的时间内收敛。没有收敛或太多时间来获得最小值意味着我们的步长是错误的。
梯度下降如何以固定的步长α收敛?
当我们接近凸函数的底部时,
接近0,在最低点,导数总是0,因此我们得到:
在选好合适的步长α的前提下,当我们越来越接近最低点的时候,梯度下降会自动缩小步长,因为斜率的绝对值是越来越小的。所以我们不需要去减少步长α的值。
线性回归的梯度下降
当具体应用于线性回归的情况时,可以导出梯度下降方程的新形式。我们可以替换我们的实际成本函数和我们的实际假设函数,并将等式修改为:
其中m是训练集的大小,θ0和θ1是同时更新的,xi,yi是给定的训练集中的值。
请注意,我们已经把θj分别等于θ0和θ1两种情况分开。以下是推导的一个例子
所有这一切的要点是,如果我们从猜测开始,然后重复应用这些梯度下降方程,我们的假设将变得越来越准确。
因此,这只是原始成本函数J的梯度下降。该方法在每个步骤中查看整个训练集中的每个示例,并称为批量梯度下降。需要注意的是,虽然梯度下降一般可以对局部最小值敏感,但我们在线性回归中提出的优化问题只有一个全局,而没有其他局部最优; 因此,梯度下降总是收敛(假设学习率α不是太大)到全局最小值。实际上,J是凸二次函数。下面是梯度下降的示例,因为它是为了最小化二次函数而运行的。
上面显示的椭圆是二次函数的轮廓。还示出了梯度下降所采用的轨迹,其在(48,30)处初始化。图中的x(由直线连接)标记了渐变下降经历的θ的连续值,当它收敛到其最小值时。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 从 0 开始机器学习 - 机器学习算法诊断
- 浅谈机器学习原理及机器学习平台
- 机器学习基础概念和统计机器学习基本算法
- [机器学习]机器学习笔记整理09- 基于SVM图像识别
- 第一届机器学习会议与机器学习的五大趋势
- 机器学习业务实践之路:如何通过机器学习算法快速解决实际业务
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
一站式学习C编程
宋劲杉 / 电子工业出版社 / 2011-3 / 59.00元
《一站式学习c编程》有两条线索,一条线索是以linux平台为载体全面深入地介绍c语言的语法和程序的工作原理,另一条线索是介绍程序设计的基本思想和开发调试方法。本书分为两部分:第一部分讲解编程语言和程序设计的基本思想方法,让读者从概念上认识c语言;第二部分结合操作系统和体系结构的知识讲解程序的工作原理,让读者从本质上认识c语言。 《一站式学习c编程》适合做零基础的初学者学习c语言的第一本教材,......一起来看看 《一站式学习C编程》 这本书的介绍吧!