《机器学习》读书笔记-第一章 引言

《Machine Learning》,作者Tom Mitchell,卡内基梅隆大学。

第一章 引言

1.1 学习问题的标准描述:

机器学习的定义

如果一个计算机程序针对某类任务T的用P衡量的性能根据经验E来自我完善, 那么我们称这个计算机程序在从E中学习,针对某类任务T,它的性能用P来衡量。

例子:

对于学习下西洋跳棋的计算机程序,它可以通过和自己下棋获取经验; 它的任务是参与西洋跳棋对弈; 它的性能用它赢棋的能力来衡量。

学习问题的三个特征

任务的种类, 衡量性能提高的标准, 经验的来源。

(电子书中写作:“衡量任务提高的标准”,系笔误。)

 

西洋跳棋学习问题

任务T: 下西洋跳棋

性能标准P: 比赛中击败对手的百分比

训练经验E:和自己进行对弈(经验的来源,经验可以不可以动态增加,随着经验的增加,该计算机程序还能不能动态地提高自己的赢棋能力?)

除此之外,作者又定义了另外两类机器学习问题:

手写识别学习问题:(模式识别问题的一种)

任务T:识别和分类图像中的手写文字

性能标准P:分类的正确率

训练经验E:已知分类的手写文字数据库(数据库不再动态增加?)

机器人驾驶学习问题

任务T:通过视觉传感器在四车道高速公路上驾驶

性能标准P:平均无差错行驶里程(差错由人监督裁定)

训练经验E:注视人类驾驶时录制的一系列图像和驾驶指令

简单定义:

通过经验提高性能的某类程序。

1.2 设计一个学习系统

设计一个下西洋跳棋的程序,让它进入西洋跳棋世界锦标赛。

1.2.1 选择训练经验

如何选择训练经验的类型?

训练经验的一个关键属性是训练经验能够为系统的决策提供直接或者间接的反馈。拿西洋跳棋举例,直接direct的训练样例包括:各种棋盘状态和相应的正确走子。

与之相反,间接的indirect的训练样例包括:过去对弈的走子序列和最终的结局。

间接的训练经验,有一个信用分配的问题: 也就是,考虑每一次走子对最终结果的贡献程度。

信用分配可能是一个非常难以解决的问题。所以,从直接的训练反馈学习,要比从间接的训练反馈学习容易。

训练经验的第二个关键属性是学习器可以在多大程度上控制训练样例序列。 可能的方式有以下几种:

学习器依赖于施教者选取的棋盘状态和所提供的每一次正确移动;(学习器不控制训练样例序列,由施教者提供训练样例的序列)

学习器可以自己发现它觉得特别困惑的棋局,并向施教者请教正确的走子;(学习器可以控制训练样例序列,这种情况仍然是直接的训练经验)

学习器可以完全控制棋局和训练分类,就像没有施教者,它是自己与自己对弈,并从中学习;(间接的训练经验)

  对于这一种情况,学习器可以回选择两种可能的得到训练经验的方法: 1, 选择它还未考虑过的全新的棋局; 2 , 在它目前发现的最有效的路线上的微小变化上对弈;

除此之外,还有另外一些训练经验序列:

  训练经验是由随机过程提供的;

  学习器可以向施教者提出不同类型的查询;

  学习器通过探索环境,来自动搜索环境中的训练样例。

训练经验的第三个关键属性是, 训练样例的分布能多好的表示实例分布。 一般而言,当训练样例的分布与将来的测试样例的分布相似时,学习具有最大的可信度。

可以看到很多机器学习的理论都假设,训练样例和测试样例的分布是一致的。但是,在实践中,这种假设往往是不成立的。

为了完成西洋跳棋学习问题的学习系统的设计,现在需要选择:

1 要学习的知识的确切类型;

2 对于这个目标知识的表示;

3 一种学习机制

1.2.2 选择目标函数

我们从一个对于任何棋局,都能产生合法legal走子的西洋跳棋博弈程序开始。 那么,最终的程序仅需学会从这些合法走子中选择出最佳走子。

这个学习任务代表了一类学习任务: 合法走子定义了一个已知的巨大搜索空间, 但最佳的搜索策略未知。  很多最优化问题,都可以归于此类。

所以,西洋跳棋学习系统需要学习如何从合法走子中作出选择。  很明显, 要学习的信息类型就是这样一个函数或者程序, 它能从所有的给定的棋局中选出最好的走法, 把此函数称为ChooseMove, 并使用ChooseMove: B->M来表示这个函数接受合法棋局集合中的棋盘状态作为输入, 并从合法走子集合中产生一个走子作为输出。  在关于机器学习的所有讨论中, 我们发现把提高任务T的性能P的问题简化为学习像ChooseMove这样的某个特定的目标函数(target function)的问题是很有益处的。

所以,目标函数的选择是一个关键的设计问题。

但是, 学习这个目标函数是非常困难的,因为提供的训练经验都是间接的。

在本例中,可供选择的另外一个目标函数, 是一个评估函数, 它为任意一个棋局赋予一个数字评分。 这个目标函数定义为V,并用V:B->A来表示V把任意一个棋局B映射到一个实数值。  我们让这个目标函数V给好的棋局赋予较高的评分。 如果系统能够学会这个目标函数V, 那么它就能使用此函数找到当前棋局的最佳走子。

那么, 如何确定函数V呢? 当然, 任何能够对较好的棋局赋予较高分数的评估函数都适用。 对于棋局集合B中的任意棋局状态b, 我们定义如下的目标函数V(b):

1 如果b是一个最终的胜局, 那么V(b)=100;

2 如果b是一个最终的败局,那么V(b)=-100;

3 如果b是一个最终的平局,那么V(b)=0;

4 如果b不是一个最终棋局, 那么V(b)=V(b‘), 其中b‘是从b开始, 双方都采用最优对弈走法后最终达到的终局。

很显然,上述定义是一个递归的定义,对于第四种情况, 对于某一个棋局状态b,要确定它的目标函数值V(b),需要向前搜索到达终局的所有路线。  由于这个定义不能由西洋跳棋程序高效地决定, 这个定义被称为不可操作的定义。

当前的学习目标是发现一个可操作的定义V, 它能够被西洋棋程序采用,并在实际的时间期限内评估棋局,并选取走法。

所以, 学习任务被简化成: 发现一个理想目标函数V的可操作描述。 通常这是非常困难的。  通常情况下,我们仅希望得到一个近似的目标函数,因为这个原因,学习目标函数的过程常常被称为函数逼近。 (function approximation)。 为了区别, 我们一般使用^V来表示程序实际学习到的函数,以便与理想目标函数V进行区分。

1.2.3 选择目标函数的表示

至此,我们已经确定了理想的目标函数V,接下来必须选择一个表示, 被学习程序用来描述要学习的函数^V。 对于这种表示,也有很多种设计选择。 比如:

1 使用一张大表, 对于每一个唯一的棋盘状态, 表中都有一个唯一的表项来确定它的评分值;

2 让程序使用一个规则集合,来匹配棋局的特征, 据此得到它的评分值;

3 采用一个与预定义棋盘特征相关的二次多项式函数;

4 使用人工神经元网络。

选择这个描述包含了一个重要的权衡过程。 为了简化讨论, 现在选择一个简单的表示法:

对于任意给定的棋盘状态, 函数^V可以通过以下棋盘参数的线性组合来计算:

x1: 黑子数量;

x2: 红子数量;

x3:黑王数量;

x4:红王数量;

x5:被红子威胁的黑子数量;(即 会在下一次被红子吃掉的黑子数量)

x6:被黑子威胁的红子数量;

于是,学习程序把^V(b)表示为一个线性函数:

^V(b)= w0 + w1x1 + w2x2 +w3x3 +w4x4 +w5x5 +w6x6

至此,可以看到西洋跳棋程序的部分设计:

任务T: 下西洋跳棋;

性能标准P: 世界锦标赛上击败对手的百分比;

训练经验E:和自己进行对弈;

目标函数:V=Board->A;

目标函数的表示: ^V(b)= w0 + w1x1 + w2x2 +w3x3 +w4x4 +w5x5 +w6x6

其中,前三条定义了这个学习任务;后两条是这个学习任务的设计方案,它们把这个学习任务化简为确定目标函数的表示中的各个参数(权值)的问题。

1.2.4 选择函数逼近算法

为了学习目标函数^V, 需要一组训练样例, 每一个样例表示了一个特定的棋盘状态b和它的训练值Vtran(b)。 也就是说,每一个训练样例是一个形如<b, Vtran(b)>的序偶。

下面我们来描述一个过程, 它先从学习器可以获得的间接训练经验E中得到一组上述的训练样例, 然后基于这些训练样例,调整w1.w6这些参数,使得目标函数的表示能够最佳拟合这些训练样例。

1 估计训练值

注意,训练值是指针对每一个棋局状态b,它所对应的Vtrans(b)值,也就是棋局状态b的目标函数值。

训练值估计法则:

Vtrans(b)<-^V(Successor(b))

这样,我们就可以得到一个序偶集合{<b, Vtran(b)>},也就可以根据这个序偶集合拟合w0到w6这些权值。

2 调整权值(调参数)

为了确定最适合训练样例的序偶集合的权值, 必须定义什么是“最佳拟合(best fit)训练数据”? 一种方法是,使得训练值与使用^V(b)预测出的值得误差的平方和E最小。

已经知道一些算法, 可以得到线性函数的权值,使得这个E值最小。

而在这里,我们还需要一个算法, 它可以在有了新的训练样例时进一步精化权值, 一个这样的付费被称为最小均方法(least mean squares),或者LMS训练法则。

1.2.5 最终设计

西洋跳棋学习程序最终被设计成由4个不同的程序模块组成, 这些模块在很多学习系统中是核心组件。 许多机器学习系统都可以使用这四个通用模块来刻画。

1 执行系统Prefromance System

用学会的目标函数来解决特定的任务。 它把新问题(新一盘棋)的一个实例作为输入, 产生一组解答路线作为输出。

我一开始的理解是,这个执行系统就是用来在比赛中ongoing与人类选手对弈的部分。 但是,执行系统应该仍然是学习系统的一部分。

2 鉴定器

鉴定器的作用是给出一个棋盘实例b与测试样例值Vtrans(b)的序偶的集合,也就是{<b, Vtran(b)>}。

3 泛化器Generalizer

从特定的训练样例出发,猜测一个一般函数, 使得这个函数能够覆盖训练样例集合,以及样例之外的情形。 这也是为什么这个模块被称为泛化器的原因。 泛化器对应LMS算法,输出是一个使用学习到的权值w0到w6描述的函数^V。

4 实验生成器(Experiment Generator)

实验生成器的输入时当前学习到的函数,输出是一个新的问题(比如,一个最初的棋局),供执行系统去探索。

在西洋跳棋学习程序的例子中, 要学习的知识类型被限定为一个单一的线性评估函数, 而这个线性评估函数被限定为仅仅依赖于六个棋盘特征。

如果目标函数真的可以被表示成这些特定参数的线性组合, 那么程序学到这个目标函数的可能性很大。 反之, 则只能希望它能学习到一个目标函数的近似。 因为一个程序不可能学习到它不能表示的东西。

上述设计中, 目标函数V的表示^V太过于简单,只是一个简单的线性函数。 如果我们使用人工神经元网络表示学到的评估函数, 考虑对棋局的完整描述,而不是棋盘的几个参数, 那么这个学习程序的实用性将会大大增强。

1.3 机器学习的一些观点和问题

在机器学习方面, 一个有效的观点是, 机器学习问题经常归结为搜索问题。 即,对一个非常大的假设空间进行搜索, 以确定一个最佳拟合观察到的数据和学习器已有知识的假设。

以西洋跳棋学习器为例, 它输出的假设空间包括, 所有可由权值w0到w6的不同值表示的评估函数。 机器学习的任务就是搜索这个空间, 来定位与训练数据最佳拟合的假设。

在本书的后续章节中,给出了很多基本表示(目标函数的表示,比如线性函数, 人工神经网络等)定义的假设空间的搜索算法。

机器学习的问题

机器学习这门学科致力于回答下面的这些问题:

1 存在什么样的算法,能从特定的训练数据学习一般的目标函数呢?

2 怎样把一个学习任务转换成一个或多个函数逼近问题?

3 关于选择后续的训练经验, 什么样的策略最好?

时间: 2024-11-03 03:26:23

《机器学习》读书笔记-第一章 引言的相关文章

iOS 读书笔记 第一章

1.确定某个实例或类方法是否可用. 1)使用NSObject的类方法instancesRespondToSelector:来确定是否在该类的一个实例中存在一个特定的选择器. NSArray *array = @[@"1",@"2"]; if ([NSArray instancesRespondToSelector:@selector(sortUsingComparator:)]) { //do something use sortUsingComparator: }

《Java并发变成实践》读书笔记---第一章 简介

<Java并发编程实战>深入浅出地介绍了Java线程和并发,是一本完美的Java并发参考手册.书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险.构造线程安全的类及验证线程安全的规则,如何将小的线程安全类组合成更大的线程安全类,如何利用线程来提高并发应用程序的吞吐量,如何识别可并行执行的任务,如何提高单线程子系统的响应性,如何确保并发程序执行预期任务,如何提高并发代码的性能和可伸缩性等内容,最后介绍了一些高级主题,如显式锁.原子变量.非阻塞算法以及

《深入理解Java虚拟机》读书笔记---第一章 走进Java

一.为什么要读此书 <深入理解Java虚拟机>这本书读了很多次,每次读都会有不一样的感受.首先说一下为什么要读这本书,如果把Java比喻成乾坤大挪移,那了解虚拟机的工作原理就是练习九阳神功,java语言是招式,对虚拟机的认识是内功心法,只有内功心法强大,所使的招式才强大,这就是为什么阳顶天只能把乾坤大挪移练到第四层,而张无忌能练到第七层.由于java虚拟机的强大,把很多功能都隐藏了,例如内容管理,垃圾回收机制等,使得很多java程序猿对这一块的知识所有缺失,编码的时候也是似懂非懂的,以至于遇到

Apache Tomcat 7 读书笔记 - 第一章

Apache Tomcat 简介: 开源框架,下载地址:http://tomcat.apache.org/.可以嵌入独立的web应用,也可作为多个web应用的服务器. 基于Java的web应用服务器容器,能托管Servlet和Java Server Pages(JSP)的web应用.我们常用的J2EE框架,Spring MVC, Structs等,部署到Tomcat上去后,Tomcat会将其自动解析成Serlvet与JSP.在前后端开发完全分离的情况下(后台只提供接口,前端调用),不推荐使用原有

【PMP】Head First PMP 学习笔记 第一章引言

第一章 引言 高效的解决项目中同样的问题 最佳的评估你的任务并合理安排,从而保证项目尽可能迅速而高效的完成 计划和跟踪成本的有关技术 如何针对项目中存在的缺陷做出计划并加以防范 项目经理的特征 知识. 关注项目领域的发展动态,可以从每个人的成功和失误中学习经验教训,从而能更好的完成你的工作.知道所有的工具和技术,并且知道何时使用和如何使用. 绩效. 必须付诸行动,要求你认真而有效地工作. 个人技能. 既然你要管理人,就注意哪些方面能够激励他们,哪些方面会对他们造成障碍.作为一个项目经理,你的任务

In-memory Computing with SAP HANA读书笔记 - 第一章:Basic concepts of in-memory

本文为In-memory Computing with SAP HANA on Lenovo X6 Systems第一章Basic concepts of in-memory computing的读书笔记. 作为基础概念,本章非常重要.此Redbook讲得浅显易懂,配图也容易理解.唯一需要深读是DL ACM的那篇论文,后续我会再补充. "卑之,毋甚高论,令今可行也", 本章正符合汉文帝对于张释之的要求. Basic concepts of in-memory computing In-

《淘宝技术这十年》读书笔记——第一章 第二章

引言 ? ? 这本书的作者是子柳先生,子柳本名赵超,2004年加入淘宝网.历任开发工程师.项目经理.产品经理.测试经理,2009年随着淘宝系统的大规模重构和人才的迅速扩张,创办了"淘宝技术大学",因培养内外部工程师众多,人称"校长". ? ? 之所以读这本书,主要想了解淘宝的技术/业务发展过程中遇到过哪些问题,以及他们怎么解决的.在阅读的过程中有很多不懂的地方,主要是知识面确实涵盖的太广,就当拓展视野吧. ? ? 第一章 ? ? 淘宝架构初版 ? ? 淘宝的第一版源

随机过程(方兆本,缪伯其)读书笔记-第一章-引论

第一章 引论 1.1 引言 1.1.1 基本概念和例子 定义1.1: 随机过程就是一族随机变量${X(t), t \in T}$, 其中$t$ 是参数, 属于某个指标集$T$, $T$ 称为参数集. $t$ 一般代表时间. 当$T={0, 1, 2, ,...}$ 也称随机过程为随机序列. 随机变量定义在空间$\Omega$ 上, 所以是随$t$ 与$\omega \in \Omega$ 而变化的, 可以记作$X(t , \omega)$ . 固定一次随机实验, 即取定$\omega_0 \in

读书笔记 第一章

通过第一章的学习,我了解到了Android 是Google开发的基于Linux平台的开源手机操作系统.它包括操作系统.用户界面和应用程序以及移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍.Android采用WebKit浏览器引擎,具备触摸屏.高级图形显示和上网功能,用户能够在手机上查看电子邮件.搜索网址和观看视频节目等,比iPhone等其他手机更强调搜索功能,界面更强大,可以说是一种融入全部Web应用的单一平台. android的系统架构和其操作系统一样,采用了分层的