《机器学习》 第一章

图书馆借了本机器学习,作者是:Tom M.Mitchell,亚马逊这本书排名挺靠前的。

好了,直接开篇。

 

定义一个学习问题,必须由三个特征:任务种类,衡量任务提高的标准,经验来源。

接下来大篇幅讲述了,如何挑选训练经验,选择目标函数,目标函数的表示,选择函数逼近算法。

整个设计下来,分为了四大模块:执行系统、鉴定器、泛化器、实验生成器。

看过这本书的都会被第一章的跳棋学习深深吸引了,从豆瓣上面就可以看出来,那么接下来就从四大模块进行讲述。

 

任务:下跳棋

标准:取胜的百分比

训练经验:自己跟自己训练。

目标函数:将棋盘上的棋局映射为一个数字

目标函数的表示:V(b)=w0+x1*w1+x2*w2+x3*w3+x4*w4+x5*w6+x1*w6

PS(x1~x6分别代表:棋盘上的黑子数量、红字数量、黑王数量、红王数量、被威胁的黑子数量、被威胁的红字数量,w0~w6是参数,可进行初始化,电脑的学习就是把参数进行调整。

 

ok,以上是对跳棋学习任务的描述,接下来就看,实际上是怎么运行的:

 

执行系统:

输入:棋局

输出:整盘琪玩下来的记录

也就是说,执行系统通过对一个棋局的分析,做出了走哪一步棋的决定,请注意,在整个过程,电脑都是在和自己下棋,所以它能够把这盘棋下完。

关键在于,电脑是怎么做出走下一步棋的决定的?是这样的,电脑在拿到一个棋局之后,会算出所有所有合法的走法,然后根据

V(b)=w0+x1*w1+x2*w2+x3*w3+x4*w4+x5*w6+x1*w6,算出每个走法的数值,然后选取数值最大的那个走法。

是的,就这样,一步步下去,电脑就能跟自己走完一盘棋了。

 

鉴定器:

输入:整盘琪玩下来的记录

输出:每一步棋真正的数值

你会很好奇,为什么输出每一步棋真正的数值?刚才不是算过了吗?是这样的,电脑算出来的,是它认为的值,可能在这个棋局之中,电脑认为的值与现实有偏差,你应该告诉它,你错了,这个值是有偏差的。注意,正是这种电脑计算之后你告诉他对不对的过程,才让电脑不断调整w0~w6,使得它自己认为的值与事实上的更加相似。

那么,你鬼知道某一盘棋的数值啊!是的,你不知道,你知道了也没用,你不可能告诉电脑每一个棋局的数值,不然会累死你,那就让它自己算吧。怎么算?作者提出

让:V(b)=V(在b棋局情况下,我走完了而且对方也走完的另一个棋局)

我自己对这个也有疑问,但是作者说,13章会告诉你,这方法是可行的。

 

泛化器:

输入:某个棋局与这个棋局真正的数值

输出:w0~w6

是的,有了每个棋局真正应得的数值,以及电脑自己认为的值,那么我们就能使用各种方法调整参数,例如可以使用梯度下降的方法,这个后面会讲。

 

实验生成器

输入:w0~w6

输出:初始棋局

这个没啥好说的,为执行系统提供初始棋局罢了,一个好的学习方法应该会有好的开始。但是书里只是不断为执行系统提供同一个初始棋局。

 

是的,讲完了。

posted @ 2013-06-22 20:40  yutoulck  阅读(264)  评论(0编辑  收藏  举报