美文网首页
机器学习(六)

机器学习(六)

作者: going_hlf | 来源:发表于2018-03-08 23:48 被阅读31次
方格游戏.jpg

这篇文章中,我们一起来看下究竟什么是特征。如果拿图像来看可能会比较直观,但是对于非图像类的特征,往往十分抽象,本文通过经典的方格游戏,来说明下机器学习的特征是如何选取的(限于篇幅,方格游戏的规则在这里不再介绍,请读者自行查阅)。

我们首先需要拿到这个游戏的已知对战棋谱,学习胜的一方走棋步骤,即在某个棋面下,走哪一步棋能够获胜的?我们假设两个玩家的某一盘棋,第一个玩家的棋子为A1,B1,C1,...;第二个玩家的棋子为A2,B2,C2,....;他们走子的顺序为A1A2B1B2C1C2...,且最后第二个玩家胜。那么我们学习的过程就是学习第二个玩家的走棋过程。在棋盘上只有A1的情况下,我们认为走A2获胜的概率比较大,在棋盘上有A1A2B1的情况下,我们认为走B2获胜的概率比较大,在棋盘上有A1A2B1B2C1的情况下,我们认为走C2获胜的概率比较大。
因此我们的特征和标签就有了,如下表1:

表1

特征1(当前棋盘) 标签 (下一步棋)
A1 A2
A1A2B1 B2
A1A2B1B2C1 C2

那么特征和标签该如何表示呢?总不能用字符串去表示吧,字符串没有办法进行卷积之类的数学运算。其实,可以把对应的字母转换为数字,从而将字母字符串转换为数字向量,具体如何表示字母和数字的对应关系,只要数字能够区分这些特征字符串即可。标签只有一个字母,一般用onehot编码,即把所有可能的特征信息进行二进制编码,每个二进制序列只包含一个1,其它位全0,用于唯一标识一个特征。例如某种特征有三种形式,我们可以用二进制串表示为001,010,100。
我们表1 内容数字化如表2:

表2

特征1(当前棋盘) 标签 (下一步棋)
A1 (100000...) A2(001...)
A1A2B1(121000...) B2(010...)
A1A2B1B2C1(121210...) C2(100...)

此时特征1即为机器学习的输入x,标签即为期望的输出y,通过大量的样本训练,从而训练出一组权值。

对于一个复杂的游戏,选取一个特征作为训练的输入是远远不够的。就像我们认识事物,还拿前面的汽车为例,如果我们只知道轮子这一个特征,那么我们可能会误学到飞机也是汽车。

那么对于方格游戏,还有哪些特征可以选取呢?一般来讲,对这个游戏的理解越深,越方便于特征选取。例如,一般高手在玩方格游戏的时候,走某一步棋后,一定会想法设法为自己多创造角点,并且想法设法减少敌人产生角点的个数。所以角点数可以作为一个输入特征(至于角点用什么数字表示,依然是根据你的游戏设计而定)。
加入角点数后,如表3:

特征1(当前棋盘) 特征2(我方角点) 特征3(敌方角点) 标签 (下一步棋)
A1 (100000...) 123... 10... A2(001...)
A1A2B1(121000...) 0... 2... B2(010...)
A1A2B1B2C1(121210...) 1234... 34... C2(100...)

通过加入角点特征,作为输入的x更加丰富了,从而能够使得学习更加准确,训练收敛速度更快。

以此类推,可以继续选择更多特征。总之对游戏的理解越深刻,特征的选取越准确,也就越有效。因此,机器学习除了需要软件高手之外,领域专家同样不可或缺。

再看看最近几年炙手可热的AlphaGo,它其实跟方格游戏的训练过程很相似。它的特征选取用到了围棋的气、势、空等概念,当然还有更加深刻的超出外行理解的一些特征和算法。但不管怎么说,机器学习的过程和原理基本类似。希望这篇文章会让你对机器学习的特征选取有一个初步概念。

相关文章

网友评论

      本文标题:机器学习(六)

      本文链接:https://www.haomeiwen.com/subject/rdakfftx.html