将AI拉下神坛(一):黑白纸片摆出的神经网络

笔者只想带领大家做一个有关 25张小纸片 的小游戏。

请准备纸片,其实不准备也ok

1 手工题

现有25张正方形的小纸片,纸片一面涂成黑色,一面保持白色。请用这些小纸片依次摆出 0 ~ 9这10个数字,你能做到么?

看看笔者的答案你的是否一致👇

用黑白小纸片摆出10个数字

2 表示题

接下来,我们希望用一组数字来表示 0 ~ 9 这10个数字,你会怎么做呢?

比如,我们可以:将黑色定义为0,白色定义为1👇

用0、1来表示黑白色块

那么摆出的数字0即可表示为:01110 01010 01010 01010 01110

数字0图片表示为0/1数字串

同理,其他的数字也可以用 0/1 数字串表示,我们即得到0 ~ 9这10个数字的数据表示:
0 = 01110 01010 01010 01010 01110
1 = 00100 01100 00100 00100 01110
2 = 01110 00010 01110 01000 01110
3 = 01110 00010 01110 00010 01110
4 = 01010 01010 01110 00010 00010
5 = 01110 01000 01110 00010 01110
6 = 01110 01000 01110 01010 01110
7 = 01110 00010 00010 00010 00010
8 = 01110 01010 01110 01010 01110
9 = 01110 01010 01110 00010 01110

3 算法体验

我们期望设计一种算法:
输入一个数字的数据,得到这个输入为0 ~ 9 这10个数字的可能性

那么,算法笔者已经设计好啦,我们通过体验来认识一下Ta!

3.1 向算法输入数字0的数据

3.1.1输出0的可能性

计算0的可能性

1)将「输入」「输出」中的0进行连线,并将「连线」的25个值赋值为数字0的25个值;
2)将「输入」「连线」的值中的“0”变换为“-1“;
3)将「输入」「连线」的值分别相乘,然后结果相加;

输入为数字0的可能性计算

4) 得到的25即为输入为数字0的可能性。(数字越大表示可能性越高)

3.1.2 输出其他数字的可能性

计算每个数字的输出可能性

我们得到,算法认为,输入数据为1 ~ 9 的可能性分别为:5,19,19,15,19,21,15,23,21,都没有为0的可能性(25)高,故算法认为识别结果为数字0。

而我们的输入正是数字0的数据,bingo!

3.2 向算法输入其他数字(1 ~ 9)的数据

我们再将1 ~ 9 的数字输入作为输入进行运算呢?算了,把0也放在一起看吧!

(说明:输入改变,连线的值不变)
输入0得到:[25,5,19,19,15,19,21,15,23,21]
输入1得到:[5, 25, 7, 7, 3, 11, 9, 3, 7, 9]
输入2得到:[19, 7, 25, 21, 13, 17, 19, 13, 21, 19]
输入3得到:[19, 7, 21, 25, 17, 21, 19, 17, 21, 23]
输入4得到:[15, 3, 13, 17, 25, 17, 15, 17, 17, 19]
输入5得到:[19, 11, 17, 21, 17, 25, 23, 13, 21, 23]
输入6得到:[21, 9, 19, 19, 15, 23, 25, 11, 23, 21]
输入7得到:[15, 3, 13, 17, 17, 13, 11, 25, 13, 15]
输入8得到:[23, 7, 21, 21, 17, 21, 23, 13, 25, 23]
输入9得到:[21, 9, 19, 23, 19, 23, 21, 15, 23, 25]

发现了么?我们的算法每次都能将输入的数字正确识别哎!(比如输入4的数据,算法输出结果的最大值得为之即为4,位置记得从0计起哦)

看似算法很理想,但是……

3.3 识别非标准数字(其他图片)

但是,25张小纸片,我们或许可以做出更有趣的组合👇

魂淡,好特殊的组合

我们将其转为数据,即为:
组合1:1,1,1,0,0, 1,0,0,0,0, 1,1,1,0,0, 0,0,1,0,0, 1,1,1,0,0
组合2:0,1,1,1,0, 0,1,0,0,0, 0,1,1,1,0, 0,0,0,1,0, 0,1,1,0,0
组合3:0,0,1,1,0, 0,1,0,0,0, 0,1,1,1,0, 0,0,0,1,0, 0,1,1,1,0

输入算法得到发输出(它们为10种数字的概率值),得到:
输入组合1结果:[-1, 7, 5, 5, -3, 5, 3, -3, 1, 3]
输入组合2结果:[17, 9, 15, 19, 15, 23, 21, 11, 19, 21]
输入组合3结果:[17, 13, 15, 19, 15, 23, 21, 11, 19, 21]

算法认为三个组合的数字分别为:1、5、5
但我们看来他们似乎更应该是5、5、5。
那么,三个组合,算法只答对了2个。

4 这就是神经网络

  • 网络
    诺,上面的算法就是一个拥有一个全连接层(Full Connect) 的一层神经网络;

  • 参数(权重)
    计算需要的25 * 10 条连线所代表的值即构成了网络的参数,或说权重。

  • 模型
    网络+参数,即构成一个我们常说的神经网络模型。

  • 训练集、测试集、识别率
    原始的10张标准图片即可理解为训练集,给出的3张特殊图片可理解为测试集,训练过程即为为参数(线条)赋值的过程,当然……该例的训练过程为笔者的”人工“智能。我们发现,笔者的“人工”训练对训练集特别友好,达到100%的识别率!但测试集的识别率就不太理想了,只有66.7%。

  • 分类问题
    该例中,我们进行“数字识别“,但其也可以理解为一个图片分类问题。想象一下,我们输入一批这样的图片,我们的算法是不是可以将其分为0 ~ 9这10种类别,对不对!

看到这里,或许你对神经网络有了一个基本的认识,又或许引发了更多的问题:

  • 神经网络的训练是怎么回事?都是像笔者这样“人工”智能给权重么?
  • 我们常常听到的神经网络卷积操作是什么?为啥完全没有介绍?
  • 神经网络的识别率怎样提高?
  • 好像还有很多很多问题,但暂时都不知道怎么问出来……

太棒了!提出问题并解决就是进步。这些问题我们之后会慢慢解决~

后记:懒惰的作者

文章过程中给出了大量数据的计算结果,难道都是笔者自己一个个手算的么?NONO,作为一个懒到不行的存在,笔者只不过在一段python代码中改几个数字而已啦~

import numpy as np

values = np.array(\
[[0,1,1,1,0, 0,1,0,1,0, 0,1,0,1,0, 0,1,0,1,0, 0,1,1,1,0],\
[0,0,1,0,0, 0,1,1,0,0, 0,0,1,0,0, 0,0,1,0,0, 0,1,1,1,0],\
[0,1,1,1,0, 0,0,0,1,0, 0,1,1,1,0, 0,1,0,0,0, 0,1,1,1,0],\
[0,1,1,1,0, 0,0,0,1,0, 0,1,1,1,0, 0,0,0,1,0, 0,1,1,1,0],\
[0,1,0,1,0, 0,1,0,1,0, 0,1,1,1,0, 0,0,0,1,0, 0,0,0,1,0],\
[0,1,1,1,0, 0,1,0,0,0, 0,1,1,1,0, 0,0,0,1,0, 0,1,1,1,0],\
[0,1,1,1,0, 0,1,0,0,0, 0,1,1,1,0, 0,1,0,1,0, 0,1,1,1,0],\
[0,1,1,1,0, 0,0,0,1,0, 0,0,0,1,0, 0,0,0,1,0, 0,0,0,1,0],\
[0,1,1,1,0, 0,1,0,1,0, 0,1,1,1,0, 0,1,0,1,0, 0,1,1,1,0],\
[0,1,1,1,0, 0,1,0,1,0, 0,1,1,1,0, 0,0,0,1,0, 0,1,1,1,0]])

spInput = np.array(\
[[1,1,1,0,0, 1,0,0,0,0, 1,1,1,0,0, 0,0,1,0,0, 1,1,1,0,0],\
[0,1,1,1,0, 0,1,0,0,0, 0,1,1,1,0, 0,0,0,1,0, 0,1,1,0,0],\
[0,0,1,1,0, 0,1,0,0,0, 0,1,1,1,0, 0,0,0,1,0, 0,1,1,1,0]])

result = []
for i in range(10):
#    v0 = values[9] * 2 - 1;
    v0 = spInput[2] * 2 - 1;
    v1 = values[i] * 2 - 1;
    ms = np.sum(v0 * v1);
    result.append(ms);

print(result)

看不懂?百度百度加加油,将AI拉下神坛,有些努力还是要自己付出的哦~~

未来更精彩

如果你觉得本篇对你有帮助,请关注接下来的篇章吧,笔者会带领大家 训练使用 一个真实可用的手写数字识别模型。你要做的只是 配置好一个python的运行环境。不需要服务器,不需要GPU,数据、代码都交给笔者就好啦。

关注后续的篇章吧,随笔者一起将AI拉下神坛!

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