毛虫和瓢虫——简单分类器,理论不简单

《Python神经网络编程》里有一个例子,也算是在讲解神经网络之前引入的一个例子,是用线性分类方式来进行毛虫和瓢虫的分类。可以说例子是很简单的,但是提到的理论却并不算简单,而是很有意思。

不过我早期在读这一段的时候,其实算是跳跃式的过了。第一,我之前已经接触了神经网络,觉得这个只是在讲线性分类,算是基础中的基础;第二,也不知道为什么,看这一段比起后面的神经网络,好像更看不进去。不过今天我翻了翻,发现还是遗漏了一些里面想要表达的,为神经网络铺垫的一些知识。

虽然简书的读者们未必对AI编程感兴趣,但是AI本身来说还是挺有意思的一门科学。所以呢,掌握一些基础知识,也是挺好的。如果因此而感兴趣甚至入门,那就更好啦。

首先先观察一下上面那个图(源自这本书),毛虫是长条形的,瓢虫是椭圆形的,所以上述打点我们很清晰的可以看到两团,一团是毛虫,一团是瓢虫。但是,对于机器,该如何有效的将其分离开呢?

机器并没有直觉,所以它需要计算。那么该怎么计算呢?

我们可以用一条直线来进行分割。直线的方程是y = ax +  b,不过为了简化问题,我们其实可以先别管b,只用考虑y = ax(简化问题也是科学研究中经常干的事儿,比如我们在参考生物神经元的时候,就不用把神经元的所有生物和化学行为都模拟出来,而是提炼出了最关键的特性,如输入输出,激活门限等,但这样的话我们也别自豪的说它是生物神经元的“模拟”,可以说已经是两个完全不同的东西,它成了一个数学模型)。

如果仅凭直觉,那么我们很容易给出一个挺不错的直线斜率结果。比如y = x,就不错。但是这样做是有问题的,因为这又是你这个“人”在识别出结果,而人的大脑里的算法是不透明的,无法直接复制给机器。

那么我们停下来思考一下,在没有这些辅助的情况下,该怎么办?我们手上有什么?我们手上有一堆虫子的数据,也就是它们的长和宽。比如说有一只瓢虫,它的宽是3,长是1(有点奇怪,好扁啊),即x=3, y=1。

于是我们可以用一条直线 y = 1/3 x来进行区分,但这合适吗?也不合适,因为这条直线正好通过了这个点,等于是没有做区分。我们可以用如下的方式来进行尝试:

假设有一个初始位置的分类直线,如 y = 0.25 x (初始位置并不重要),我们看下对于这个样本,分类是否OK。

当x=3代入时,y=0.75,但实际上采样点y=1。倒不是说这样分就不对,只是“误差”(其实一个样本还看不出啥,不能说这个“误差”就会带来多大的影响)大了点,达到了0.25。这个误差,应该是多大呢?似乎应该是1-0.75=0.25,但实际上并不是,因为如果我们选择的正确位置如果正好是1,那就是直线正好通过这个采样点,而我们想要的是毛虫尽可能在直线的上方,瓢虫在下方。所以,设置一个比1大一点的值比如说1.1,如果按这样的话算出来误差应该是0.35。

这个时候,我们就要思考下,我要尽可能靠近采样值,x要调整多少呢?学过线性方程的人当然可以自己直接得出答案,但是为了考虑普遍性(谁说下回就一定用线性方程呢?),就要用那么一点高等数学的知识。现在有关导数等其实也已经是中学课本内容了,所以这块理解起来应该也没有大的难度。为了方便书写,我把代尔塔简单的用d表示,大家能看懂就行。

当 a' = a + da(斜率增加了一点点),那么 y' = a'x  =  (a + da)x 。如果用新式子左右减去 y = ax,就得出:dy = da x,即 da = dy/x。在刚才的例子里,dy = 0.35,而 x = 3,则da = 0.35 / 3 = 0.1167。所以,只要原本假设的斜率0.25,加上0.1167,得出0.3667即可。这个时候可以验算下,y = 0.3667 x, 当 x = 3 时,y 接近 1.1,成功。

刚才是一个样本,如果有很多样本呢?还能这样来操作吗?你可以试一试,是不是会发现一个问题?你的每一次操作,都跟新导入的这个样本强相关,而之前的“训练”数据似乎都丢失了。那么,有没有更好的办法来改善这个问题呢?可以先消化消化,下回咱们再来讨论如何改善的问题。

上述的方式,其实带入几个关键点:

1)从机器计算(算法)的角度,来思考如何基于样本进行训练;

2)使用输出的变化来反推调整输入的变化,这个理念非常重要,因为神经网络的反向传播也是基于这样的理念来实现的。通过输出与输入的关联(即偏导数),通过梯度下降法向梯度方向走出一小步,反算出权重参数(此时有多个,往往是很多个)应该变化多大,从而不断的进行调优。虽然有时也会出现不小心进入局部最小值的窘境,但总体来说,反向传播大大降低了计算难度,使得深度计算最终进入AI专家的视野。这些看不懂是很正常的,即便是多次学过梯度算法、反向传播,有的概念还是含含糊糊,不过没关系,今天的一小步,就是明天的一大步。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容