白话机器学习 - 感知机

在机器学习里面,有一大类叫做神经网络。神经网络里面,大名鼎鼎的有卷积神经网络CNN,循环神经网络RNN。其中,卷积神经网络在图形图像处理方面,有着很出色的成果。例如识别图像的功能,通过基于CNN的深度学习技术,现在机器已经可以识别出很多东西了。下面这个图是电视剧《三生三世 十里桃花》的剧照,使用Tensorflow和ImageNet,机器告诉我们,这张图是 kimono(和服)的可能性是 0.86。gown(长外衣;外罩)0.05.
图像识别技术

如果是一些简单的图片,例如键盘,鼠标,水杯等,识别准确度还是蛮靠谱的。
Paste_Image.png

神经网络的如果要用图来表示的话,应该就是下面这个样子的。最左边的是输入,最右边的是输出。然后中间有很多隐藏层。

感知机示意图

这个图中隐藏层只有一层,但是大部分用于真实计算的神经网络,都会有很多隐藏层。

复杂神经网络

无论是简单的,还是复杂的神经网络,其中最小的单元就是感知器。
对于感知器的介绍,可以参考网络上的文章:
零基础入门深度学习(1) - 感知器 
感知器

既然是白话,那么我们就用讲故事的方法来说一下。(假设读者已经阅读了上面的文章)
假设有一次考试,分为语文,数学,英语,满分都是100分。但是,语文,数学,英语占的权重(weight)不一样。同时,我们还需要根据考试难度,在最后总分上面,进行一些加分或者减分的调整(bias)。最后,根据一个标准(激活函数 Step Function)来定考试合格或者不合格(output)。

如果教务处说,我们是外国语学校,对于英语成绩比较看重,则我们给予这样的英语比较高的权重。
X1:语文成绩 W1:0.3
X2:数学成绩 W2:0.2
X3:英语成绩 W3: 0.5

然后,由于这次考试难度比较高,则每个人都加5分 (这个其实叫做 偏置项 bias)

X0 = 1 W0 = 5

成绩 = X0 * W0 + X1 * W1 + X2 * W2 + X3 * W3
然后,如果成绩为60分及以上则为合格。(激活函数 Step Function)
如果 成绩 >= 60 ,则合格
成绩 < 60 ,则不合格

OK,这样一个简单的感知机就做成了。在权重(W0,W1,W2,W3)和 Step Function(合格标准)定下来的时候,它可以根据输入(各科成绩),求得输出(是否合格)了。

例如:

语文成绩 50 * 0.3 = 15
数学成绩 40 * 0.2 = 8
英语成绩 80 * 0.5 = 40
附加分 5
成绩 15 + 8 + 40 + 5 = 68 =>合格

语文成绩 80 * 0.3 = 24
数学成绩 50 * 0.2 = 10
英语成绩 40 * 0.5 = 20
附加分 5
成绩 24 + 10 + 20 + 5 = 59 => 不合格

当然,一般来讲,感知机往往是激活函数(StepFunction)是事先决定的,作为训练数据的输入,输出是已知的,权重则是需要通过机器学习来获得的。我们的例子中,合格标准是事先决定的,60分及格,然后给出一部分数据:某些人的语文成绩,数学成绩,英语成绩 ,是否合格,然后通过机器学习,将各科的权重计算出来,获得一个模型。然后利用这个模型,通过输入 语文成绩,数学成绩,英语成绩,来判定是否合格。

当然,如果在训练数据比较少的时候,这个权重可能计算的不是很准确,数据越多,权重越准确。

语文成绩 50 数学成绩 40 数学成绩 40 附加分 5 合格
语文成绩 80 数学成绩 50 数学成绩 40 附加分 5 不合格

能够满足这样条件的权重有很多很多,所以机器学习的结果可能不是很好。
但是如果有足够的数据,则权重的计算结果则会非常理想。

最后再回来说一下,为什么叫感知机,其实最简单的,最原始的时候,感知机的输出就是 0(不合格) 或者 1(合格).结果能被感知,或者不能被感知。当然,随着研究的深入,则输出形式也越来越丰富了,不仅限于是否,也可以是数值或者其他形式的东西。例如,感知机做线性回归的时候,则是数值作为输出。

关注公众号 TensorFlow教室 深度学习,机器学习,自然语言处理。

posted @ 2017-03-22 10:11  灰毛毛  阅读(1655)  评论(1编辑  收藏  举报