机器学习这门学科所关注的问题是:计算机程序如何随着经验积累自动提高性能?
机器学习的宽广定义:
定义: 对于某类任务T和性能度量P,如果一个计算机程序在T上以P衡量的性能随着经验E而自我完善,那么我们称这个计算机程序在从经验E学习。
例子:
西洋跳棋学习问题:
• 任务T:下西洋跳棋
• 性能标准P:比赛中击败对手的百分比
• 训练经验E:和自己进行对弈
手写识别学习问题:
• 任务T:识别和分类图像中的手写文字
• 性能标准P:分类的正确率
• 训练经验E:已知分类的手写文字数据库
机器人驾驶学习问题:
• 任务T:通过视觉传感器在四车道高速公路上驾驶
• 性能标准P:平均无差错行驶里程(差错由人类的监督裁定)
• 训练经验E:注视人类驾驶时录制的一系列图像和驾驶指令
设计一个学习系统
西洋跳棋学习问题:
• 任务T:下西洋跳棋
• 性能标准P:世界锦标赛上击败对手的百分比
• 训练经验E:和自己进行对弈
为了完成这个学习系统的设计,现在需要选择:
1. 要学习的知识的确切类型
2. 对于这个目标知识的表示
3. 一种学习机制
选择目标函数
我们发现可以把对任务T提高性能P的问题简化为学习象ChooseMove这样某个特定的目标函数(target function)的问题。所以目标函数的选择是一个关键的设计问题。
ChooseMove函数可以是目标函数,即下一步棋落子位置计算。
但是要学习它会很难,因为我们学习的材料是间接的。
还可以是一个评估函数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开始双方都采取最优对弈后可达到的终局。
但是这效率低下,是不可操作的。
这样,这种情况的学习任务被简化成发现一个理想目标函数V的可操作描述。
对于任何给定的棋盘状态,函数Vˆ可以通过以下棋盘参数的线性组合来计算: ( V^有很多形式,越逼近理想函数V也就越复杂)
于是,学习程序把:被黑子威胁的红子数量
Vˆ(b)表示为一个线性函数
Vˆ(b)=w0+w1x1+w2x2+w3x3+w4x4+w5x5+w6x6
小结:
西洋跳棋程序的部分设计
• 任务T:下西洋跳棋
• 性能标准P:世界锦标赛上击败对手的百分比
• 训练经验E:和自己进行训练对弈
• 目标函数:V:B→R
• 目标函数的表示:Vˆ(b)=w0+w1x1+w2x2+w3x3+w4x4+w5x5+w6x6
前三条是对学习任务的说明,后两条制定了为实现这个学习程序的设计方案。注意这个设计的关键作用是把学习西洋跳棋战略的问题简化为学习目标函数描述中系数w0到w6