耗时半年,B站UP主终于在「我的天下」实现了首个红石人工智能。

可以说,这是天下上第一个纯红石神经网络。

不仅可以实现15×15手写数字识别,最主要的是,准确率能够达到80%!

目前,这个视频已经有106万播放量,收成无数网友好评关注。

世界首个红石人工智能引爆B站UP主在我的世界搭建LeCun转发

就连图灵奖得主,LeNet架构提出者,Yann LeCun还在社交媒体上转发了这个视频。

首个「红石人工智能」

红石是我的天下中的一种独特的材料。

它是通报红石旗子暗记的紧张元器件,开关、红石火把和红石块等能对导线或物体供应类似电流的能量。

而红石电路能够为玩家建造起来可以用于掌握或激活其他机器的构造。

电路本身既可以被设计为用于相应玩家的手动激活,也可以让其自动事情——或是反复输出旗子暗记,或是相应非玩家引发的变革。

因此,在我的天下中,能够被红石掌握的机器种别险些覆盖了你能够想象到的极限。

小到最大略的机器(如自动门与光开关),大到占地巨大的电梯、自动农场、小游戏平台,乃至游戏内建的打算机。

也便是说,想要扩大在我的天下中可嬉戏的深度,对红石电路的玩转一定要管窥蠡测。

UP主@辰占鳌头创建的天下首个红石神经网络便是个典例。

作者玩梗写了一个择要,提到

我们利用非传统的打算办法——随机打算来实现神经网络,使得设计和布局上比传统的全精度打算大略许多,且单次理论识别韶光仅为5分钟。

就拿作者演示手写的2、5来说吧,可以看出其识别程度和置信度直接拉满。

在详细实现过程中,作者在视频里展示了所包含的元素:

单个神经元:接管多个输入,产生一个输出

乘法器:仅利用随机数和单个逻辑门运算小数乘法

神经元阵列:输出识别结果或通报到下一层

各数字置信度;手写板15×15

其余,作者先容卷积层是用来提取笔画特色。

全连接第一层:压缩信息并分类;激活函数阵列:将数据非线性地映射到高维特色空间;全连接第二、三层:进一步分类并输出识别结果。

不过,UP主提到,受限于Minecraft的运算能力,实际识别韶光超过20分钟。

只管如此,这仍是红石数电领域的重大打破,也可能启示现实中的硬件神经网络。

背后事理

从实际出发考虑,识别手写数字的任务,仅利用深度神经网络即可。

但是为了尽可能压缩打算量和参数量,作者利用了经典的「LeNet-5」卷积神经网络。

「LeNet-5」架构最初便是为了实现手写数字识别而生。
不过,为了进一步减小打算开销,作者将网络的5层构造分别设定成15×15→7×7→30→30→10。

权重也被相应的压缩到[-1,1]。
虽然这样的做法会将识别率从90%降到50%,但是如果网络的输入还算规整,那么它依旧可以得到一个很不错的识别率。

由于在Minecraft中实现反向传播是不现实的,而且权重都是利用pytorch演习好之后,再通过代码编辑到文件中,随后导入Minecraft。

由于权重也是随机串,以是只要编辑随机数天生装置即可。

那么随机数天生的事理又是什么呢?

实在便是由于投掷器投掷物品的随机性,借此可以搭一个随机数天生器。

例如,在这个视频中:将两个投掷器脸对脸放置,用比较器检测个中的一个内容物。
一个放入不可堆叠的物品(矿车),另一个放入可堆叠的物品(混凝土)。

设置矿车输出2格旗子暗记强度,混凝土只输出1格强度。
再将一个侦测器对准一个投掷器,便可以随机切换另一个侦测器里边的物品,此时有50%的概率可以检测到是矿车。

因此,会得到一个「0」、「1」各占一半的串。

通过调度可堆叠物品和不可堆叠物品的比例,可以产生分数概率的随机数。
将两个随机数天生器连接到同门上,便可打算二者的乘积。

经由大略的优化后,就可以得到一个2tick输出一次的高效随机数天生器。
它将天生网络权重。

随后,激活函数会将神经网路中的输入数据非线性地映射到高维度特色空间,然后再进行线性分割。

作者利用的「LeNet-5」架构自然也少不了运用激活函数进行非线性映射。

在该过程中,首先先利用卷积提取笔画特色。

再将提取出来的特色放进全连接层进行分类。

上述过程中的每一层都利用了「非线性映射-线性分割」进行分类。

红石神经网络的宏不雅观流程:

映入眼帘的是输入设备,它包括一个单脉冲式压力板手写板和15x15的坐标屏,手写板每次产生2tick的坐标旗子暗记,然后由屏幕绘制手写的数字。

对应到其微不雅观事理的实现,手写的数字会前辈入卷积层进行卷积运算,并将特色图结果送入下一层。

为了担保网络的非线性输出,输出结果前还会经由ReLU激活函数。

由于卷积核大小为3x3,以是可以直策应用模电运算,并且在输出端自动实现非线性化,之后通过硬连线接得手写板输入上。

全连接层的每一层由多少个神经元构成,每个神经元的输入和输出是「多对一」的关系。
神经元会将每个输入加权求和实现「线性分割」,再经由激活函数进行「维度提升」。
此处利用tanh作为激活函数。

在实际的神经元电路中,输入部分为加权求和,输出便是激活函数。

个中,每一层的权重参数(随机串)会被存放在投掷器,然后输入和权重相乘后再通过模电累加,

接下来,通过模电打算加法,而后转为数电旗子暗记,全加器则改装了2tick流水线加法器,堆叠神经元构成一个全连接层。

末了一层的输出利用一个模电计数器,这个计数器的容量可以达到1024。

在输出层,计数器的高四位会被连接到计数板上,电路随后选取最大的值并显示到输出面板上。

一项震荡眼球的工程便得以实现!

末了,我们看一下网络支配

首先利用PyTorch在「ImageNet」数据集上演习,之后将权重支配到仿照器上调度网络的参数,再将演习好的参数填入.schem文件,随后用小木斧将.schem文件粘贴至存档,粘贴完成后,检讨权重是否精确支配,终极网络版本构造,即15×15→7×7→30→30→10。

小彩蛋

视频末了,作者投了一个小彩蛋。

在更新的1.19手写板中,特意安装了幽匿感测器,能够侦测出声音。

更好玩儿的是,可以直接往这个幽匿感测器触摸屏扔雪球输入图像。

砰砰砰几下,一个手写非常潦草的6就出来了,识别置信度达到了75%。

值得一提的是,UP主@辰占鳌头不是打算机专业的,而且神经网络事理也是从头学起。

2019年,他在Steven Skiena教授辅导下取得了石溪大学的打算机科学博士学位,曾在2014年拿到了复旦大学打算机科学与技能学士学位。

网友热评

看完真正的红石人工智能后,网友调侃道,会红石和会人工智能的都沉默了。

还有人称Pytorch和TensorFlow都过期了!
往后自己写网络就说用的是Minecraft库。

网友还给其取了一个名,「红石卷积神经网络,简称RCNN」。

参考资料:

https://b23.tv/TGELQpU

https://twitter.com/ylecun/status/1543309427893309440?s=21&t=okc8RM9FJdzPgUHXQMLYrw

https://minecraft-archive.fandom.com/wiki/Redstone

https://www.bilibili.com/read/cv17165331

https://alantian.net