[自学笔记]Tom Mitchell《机器学习》

来源:互联网 发布:php简历管理系统 编辑:程序博客网 时间:2024/06/05 15:52

一、机器学习的一些成功应用

1. 识别人类语言:SPHINX系统 - 识别基本的音素(phoneme)单词/神经网络学习&隐马尔可夫模型的应用

2. 学习车辆驾驶:ALVINN系统 - 基于传感器的控制问题,在车辆中进行穿行驾驶

3. 分类新的天文结构:从各种大规模数据库中发现隐藏的一般规律 - 决策树算法被NASA用于天体分类

4. 博弈类棋局:Alpha Go - 围棋


二、关联学科

1. 人工智能:学习概念的符号表示。作为搜索问题的机器学习,利用先验知识和训练数据一起引导学习

2. 贝叶斯方法:作为计算假设概率基础的贝叶斯法则。朴素贝叶斯分类器。

3. 计算复杂性理论

4. 控制论

5. 信息论:熵和信息量的度量。学习最小描述长度

6. 哲学

7. 心理学和神经生物学:实践的幂定律(power law of practice)- 对于很大范围内的学习问题,人的反应速度会随着实践次数的幂级提升

8. 统计学


三、学习问题的标准描述

1. 定义:如果,一个计算机程序针对某些任务T的、用P衡量的性能、根据经验E来自我完善,

               那么,我们称这个计算机程序从经验E中学习,针对某些任务T,它的性能用P来衡量。

2. 为了完成一个学习系统的设计,除了确定ETP,还需要选择:要学习的知识的确切类型+对这个目标知识的表示(目标函数)+一种学习机制

  【举例】

   AlphaGo: 任务T是围棋博弈;性能P是赢得博弈;经验E是与自己博弈/过往的棋局。


3. 选择训练经验的3个关键属性:

    (1)训练经验能否为系统的决策提供直接/间接反馈(直接反馈:如棋盘状态或相应的正确走子;间接反馈:过往对弈的走子序列及其最终结局)

             对于间接反馈,还涉及到信用分配问题:每一步行动对最终结果的权重/贡献程度

    (2)学习器能在多大程度上控制训练样例序列

             - 学习器依赖于施教者选取的棋盘状态和所提供的每一次正确移动

            - 学习器提出它发现的特别困惑的棋局,并向施教者询问正确的走子

            - 学习器可以完全控制棋盘状态和训练分类

               *对于最后1种学习器的控制,有2种情况:1.试验它从未考虑过的全新棋局;2.在它目前发现的最优路线上的微小变化上对弈

           (对于学习器的控制程度,后续章节会提到一些学习框架,包括了训练经验以随机过程提供;学习器可以提出查询;学习器自动探索来搜索训练样例)

    (3)训练样例能多好地代表实例分布


4.选择目标函数

    (1)合法(legal)走子:定义了某个巨大的搜索空间,但是搜索策略未知

    (2)目标函数:学习从合法走子中做出选择,要学习的信息类型是1个函数或程序,它对任何给定的棋局能选出最好的走法

             优点:通过目标函数的设计,我们把【提高任务T的性能P】这一问题简化为【选择某个目标函数(如ChooseMove)

                        *在棋局的例子中,可以定义这个函数为ChooseMove,

                         并用ChooseMove:B-->M来表示这个函数接受合法走子中的期盼状态作为输入,并以某种走法作为输出

             缺点:学习难度大,因为提供给系统的是间接的训练经验

    (3)替代方案:给可选择的目标函数定义一个【评价函数】(V:B-->R,R表示实属域)

             举例:赢局V(b)=+100;输局V(b)=-100;平局V(b)=0 (其中b是任意的期盼状态)

             缺点:这个方案【不可操作!】,为了能够确定V(b),需要在b的基础上向前搜索所有的路线

             思路:因此,我们需要把问题简化为【发现一个理想目标函数V的可操作描述】。

                        然而要得到一个完美函数是困难的,因此我们要用【近似】的思路来求解,例如使用【函数逼近】的方法(确定V^)。


5.选择目标函数的表示(V^)

    (1)表示的方式:- 列表法: 对于每个唯一的棋盘状态,都有一个唯一对应的状态值(V^=V^(b))

                                  - 规则集合法:将某个棋盘状态的有限集合定义为一种规则,并且给这个规则定义一个状态值(可以采用二次多项式函数)

                                  - 人工神经元网络

    (2)对于状态参数x1,x2,x3,...xn,定义V^(b) = w0 + w1*x1 + w2*x2 + w3*x3 + ... + wn*xn(其中w1,w2,w3,...,wn称为权/权重)

    (3)选择函数逼近算法

             i. 估计训练值:通常使用后续棋局进行估计,称为【迭代估计训练值】

                                     

             ii. 调整权值:为这个算法,确定最合适的权向量(w0,w1,...,wn)。

                                   为了做到这一点,我们定义最佳拟合(Best Fit)的概念【误差平方和

                         

             iii. 确定最小化E的方法,如LMS(Least Mean Squares) - 最小均方误差法。

                                                    具体思路是:每一次训练,都将权向量往减小误差的方向做调整

                                                                          - 使用当前的权向量,计算V^(b)

                                                                          -     对权向量的每一个wi,进行如下更新:

                                     

6.最终设计


1. 执行系统(Performance System)- 用学会的函数解决给定的某个任务,以新问题/新参数作为输入,同时输出新结果。策略由V^(b)函数来评估

2. 鉴定器(Critic)- 以对弈的路线或历史记录作为输入,输出目标函数的一系列训练样例 - V(train)

3. 泛化器(Generlizer)- 以训练样例作为输入,产生一个输出假设,作为它对目标函数的估计。它从特定的训练样例中泛化出一个一般函数

                                         例如在上述例子中,泛化器就是LMS算法,输出假设是用学习到的权向量(w0,w1,w2,...,wn)

4. 实验生成器(Experiment Generator) - 以当前假设(以前学到的)作为输入,输出一个新的问题供执行系统去探索,从而获得新的知识



四、机器学习的一些观点

1. 机器学习通常归结为搜索问题,即在一个假设空间内进行搜索,从而找到最佳拟合观察到的数据和学习器已有知识的假设

2. 机器学习要解答的一些关键问题:

    - 存在什么样的算法,能够从特定的训练数据学习一般的目标函数呢?如果提供了充足的训练数据,什么样的条件下能够让特定的算法收敛到期望的函数?

    - 多少训练数据是充足的?假设的置信度、训练数据的数量以及提供给学习器的假设空间特征,三者之间的关系?

    - 学习器拥有的先验知识,如何引导从样例进行泛化的过程?先验知识只是近似正确的时候,它们有帮助吗?

    - 关于选择有效的后续训练经验,什么样的策略是最好的?这个策略会如何影响学习问题的复杂性?

    - 怎样把学习任务简化成一个或多个函数逼近问题?系统应该学习哪些函数形式?(不一定是二次多项式函数)这个过程本身能否自动化?

    - 学习器如何自动地改变表示法来提供表示和学习目标函数的能力?



原创粉丝点击