机器学习


(这篇是由英文原文翻译的。)

机器学习是本人非常喜欢的学术之一(虽然本人在此项领域并非很深入了解)。当我第一次接触到它的时候,我就非常惊叹,机器是如何能够学习的?若说用电脑来寻找迷宫的出路或是寻找最理想的捷径,我都能理解。因为那是用尝试错误法,就可以找到的。但究竟机器如何能够学习?

机器学习的方法

感知器(Perceptron)是机器学习的最单间的方法。它是人工神经网络(Artificial Neural Network)的基本概念。它可以用来学习很单间的样式或规律。感知器是模仿头脑的脑神经。当人学习某样东西的时候,这些脑神经之间的连接会变得更强。而在感知器中,这连接则由“重量”(weight)来表达,连接越强,重量就越强。

当电信号的能量到达了一个门槛的时候,神经细胞就会被激活,因而传达讯息。相似的,感知器的设计也运用了函数(function),称为激活函数(activation function)。但信号达到了门槛,这个函数就会被激活并将数值传送到下一个神经元(neuron)。

感知器是一种监督式学习(supervised learning)。即一个机器必须通过监督者,告知机器它学习时的输出(output)是对还是错。若机器的实际输出(actual output)和监督者所期望的输出(desired output)是不一样的时候,两种输出的相差数值即是错误(error)。因此,学习的目的就是要减少这个错误数值,好让实际输出的数值能够非常接近所期望的输出数值。这种监督式学习,如同小孩开始学习的时候,都是由长辈们监督着的。

为了让机器学习,则需要训练样本(training samples)。机器会通过学习来更新重量。每一次学习就会更新一次重量。而训练样本的数量应当庞大且多样化,这才能让感知器“体验”到各种不一样的状况。每个样本可以用来训练多次。样本训练的次序应当是随机的。每一轮的训练,称为epoch(时代?)。因此,经过多个epoch后,理论上均方差(mean squared error)会渐渐减少。

机器学习的学习过程可以通过三种方式而停止。1)当均方差接近零的时候。因为这表示说这机器可以得出非常接近所期望的数值。2)当经过连续非常多次的学习后,均方差也不会再减少时,学习就可以停止了。因为这表示无论再多的学习,机器也不会再进步,重量也不会更好的改变。(应当知道,不是所有的资料都有规律,例如随机组成的多个号码是没有规律的,因此这样的资料是无法学习的。)

3)当学习的epoch量已达到了使用者定义的数目,如1000或更多。因为这表示通过长久的学习,重量既不稳定,均方差也不减少。因此,这样的学习是可以停止的了。

经过训练的机器可以给予测试样本(testing samples)。测试样本不应该是由训练样本而来。这测试样本是为了评价经过训练后的机器的性能。零错误的训练结果并不代表在测试样本的测试下也会零错误。通常,测试样本是由真实的数据而来的。只有在测试以后还能表现出满意的结果,那样的机器才算是成功。

学习率(Learning rate)

机器学习,尤其是感知器中,有一个非常有趣的数学公式。为了更新重量,重量必须加(或是减)某个数值。算法如下:

wi(t+1) = wi(t) + α ⋅ e ⋅ xi(t)

wi(t+1) 是更新后的重量, wi(t) 是现在的重量, α 是学习率e 是错误, xi(t) 是目前神经元的输入值。

有趣的地方是学习率。这学习率是在0与1之间。若学习率越高,每一回重量更新的变化就更大;若学习率较低,每一回的重量更新的变化就小。高学习率,学习得快,但并不保证会得到最好的结果(因为变化太大);低学习率,学习得慢,但却可以得到比高学习率更好的结果。

我们的学习也是如此。有些小孩,学习得快,但当他们成长到某个阶段后,学习能力就开始下降(所谓小时了了大未必佳)。但一些学习较慢的小孩,学习的表现则随着年龄的增长而更好。

过度训练

训练用的样本,若其样式有限,然而现实中的问题包含更多的样式,并将这有限的训练样本给予机器彻底的学习,结果就造成过度训练。即是,机器的神经元间的重量已经达到饱和,适应了训练样本。当给予其它拥有不一样的样式的训练样本时,机器就难以适应新的训练。这也是为何需要在训练时将训练样本随机化。

这与我们相似。若我们过度训练某种东西时,我们就会依附于那种习惯,而难以改变。这就好像我们的语言、习惯、字体等等。

动力(Momentum)

在人工神经网络学习过程中,有时会遇到长时没有进步的阶段。这叫做局部最优解(local optima),即我们认为是最好的结果了。但事实上,继续的训练,也许能够突破局部最优解而达到更好的结果,即全局最优解(global optima)。

比喻式的说法,这就像将一颗球从高处滚到低处,因为表面不平,而球到某个位置时就停了下来。因此我们以为这个位置是最好的。但是通过动力来推动这颗球,这球就有可能突破那些小高峰,而达到更低的位置。(越高的位置,即越大的错误;越低的位置即越小的错误。)

有趣的是,当我们在现实中学习时,往往会遇到瓶颈。这瓶颈令我们觉得没有进步,也很无聊。但坚持就好像动力一般,有可能让我们突破那瓶颈,而达到更高的学习层次。

含义

通过了学习这“机器学习”,我也学到了关于学习的道理。

  • 机器只需要两个输入的神经元和一个输出的神经元,就可以示范如何学习。而我等的头脑是何等复杂,怎么可能不能学习?
  • 机器可以接着监督而学习。同样,前辈的监督对于新学者来说是非常重要的。
  • 当我们学习时,我们就像是要找出那某种规律,如游戏的规律,数学的规律,语言的规律,技巧的规律等。例如,当我们学习数学时,数学题做得越多,我们的数学能力就越好。因为我们接触到了各种各样的题目。这就好像通过大量的训练样本,就能够提升机器的学习效果。
  • 当我们学习了书上或其它资源的某种技能,而且我们能够用那技能来完美地解决书上的问题,这并不表示我们可以解决现实中的真实问题。这就像训练样本和测试样本的差别一样。
  • 学习较慢的人,未必比较差。稳当且顺利的学习,才是比较好的。
  • 当一个人过度训练于某种式样,他就会依附于那个式样,难以改变。
  • 想要突破瓶颈,坚持是必须的。

非监督式学习

另一个有趣的,感知器的运算法则是1957年所开发的。之后才有了非监督式学习。我个人认为,这些开发运算法则的过程,如同人生一样。当我们还是小孩时,我们需要父母及师长们监督我们的学习,好让我们知道什么是对与错。当我们到了理智的年岁时,我们就渐渐地能够自己学习了。这正是非监督式的学习方式。

 

附言:父母能够辨别双胞胎,正是因为他们过度训练了如何分辨他们。对外人而言,因为少接触,双胞胎几乎是一样的。但父母则天天见面,久而久之,就从中学习了其间微妙的差别。

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google+ photo

You are commenting using your Google+ account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s