3

在我的世界中,B站UP主搭建世界首个纯红石神经网络,图灵奖得主Yann LeCun转赞

 1 year ago
source link: https://www.51cto.com/article/713105.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在我的世界中,B站UP主搭建世界首个纯红石神经网络,图灵奖得主Yann LeCun转赞-51CTO.COM

f9269ea3c054265d17df7f169c872b01.jpg
在我的世界中,B站UP主搭建世界首个纯红石神经网络,图灵奖得主Yann LeCun转赞
作者:机器之心 2022-07-04 11:33:50
神奇的红石,神奇的我的世界,不可思议的 UP 主。

在我的世界(Minecraft)中,红石是一种非常重要的物品。它是游戏中的一种独特材料,开关、红石火把和红石块等能对导线或物体提供类似电流的能量。

图片

红石电路可以为你建造用于控制或激活其他机械的结构,其本身既可以被设计为用于响应玩家的手动激活,也可以反复输出信号或者响应非玩家引发的变化,如生物移动、物品掉落、植物生长、日夜更替等等。

因此,在我的世界中,红石能够控制的机械类别极其多,小到简单机械如自动门、光开关和频闪电源,大到占地巨大的电梯、自动农场、小游戏平台甚至游戏内建的计算机。

近日,B 站 UP 主 @辰占鳌头等人在我的世界中实现了真正的「红石人工智能」,他们耗时六个月,构建了世界上首个纯红石神经网络,任务是识别 15×15 手写数字。

作者表示,他们使用非传统的计算方式——随机计算来实现神经网络,在设计和布局上比传统全精度计算简单许多,并且单次理论识别时间仅为 5 分钟。

95d82227539ea4e4eb913956c49a5c7ac0320d.jpg

这个纯红石神经网络完成了机器学习领域常见的图像识别任务——手写数字识别,并且准确率达到了 80%(在 MNIST 数据集上模拟)。

5244cb048e13ee9b6ef56514bec173e653e4ce.jpg

在实现的过程中,作者使用到的各种元素包括如下:

单个神经元接受多个输入并产生一个输出。

加入「乘法器」,仅使用随机数和单个逻辑门运算小数乘法。

图片

神经元阵列输出识别结果或传递到下一层。

各数字的置信度。

97099c1264202310e0e36914e082f85edea915.jpg

卷积层用来提取笔画特征。

全连接第一层:压缩信息并分类。

激活函数阵列:将数据非线性地映射到高维特征空间。

全连接第二、三层:进一步分类并输出识别结果。

作者表示,该网络使用的架构是压缩的 LeNet-5,准确率达到 80%。

不过,受限于 Minecraft 的运算能力,实际识别时间超过 20 分钟。尽管如此,这仍是红石数电领域的重大突破,也可能启发现实中的硬件神经网络。

目前,视频的播放量已经超过 80 万,全 B 站排行榜最高第 39 名,让各路网友叹为观止。就连图灵奖得主 Yann LeCun 也在 Facebook 上转发了该视频,表示「一位非常有耐心且坚持不懈的人使用红石在我的世界中实现了 LeNet-5。」LeCun 是 LeNet 架构提出者。

图片

【Minecraft】世界首个纯红石神经网络!真正的红石人工智能(中文/English)【Minecraft】红石卷积神经网络——原理

背后的原理

在另外一个视频《【Minecraft】红石卷积神经网络——原理》中,作者详细解释了红石卷积神经网络的原理。

总的来说,他们使用的是压缩的 LeNet-5 卷积神经网络,卷积是网络的第一步计算,使用一个带权重的窗口(卷积核)逐次扫描图像并提取笔画特征。

图片

然后将这些笔画特征馈入到深度神经网络(全连接层)进行分类识别。

图片

在我的世界中实现红石神经网络​

作者首先列出了输入设备,包括一个单脉冲式压力板手写板和 15×15 坐标屏。其中手写板每次产生 2tick 的坐标信号,接着由屏幕绘制。

1455b051499883aa368712109ea8b2202ddc2a.jpg

随后输入的手写数字进入卷积层,计算方法是累加卷积核被遮盖的部分,并将结果输出到下一层。并且,为了保证非线性,输出还经过了 ReLU 函数。

e949c9454a9e99f3340570fb7161863587dd0c.jpg

由于卷积核只有 3×3,因而作者直接使用了电模运算,并在输出端自动进行 ReLU。

f930baf782e59f8159b596a954712216eac713.jpg

另外,又由于卷积无法像动画里那样移动,所以采用了直接堆叠的方式,再通过硬连线连接到手写板输入上。

c1b1519639cb19ad752324e8f2a3f95f90bdbb.jpg

到了全连接层,它的每层由若干神经网络构成。每个神经元都连接多个输入,并产生一个输出。神经元将每个输入加权累加,然后带入一个激活函数输出。需要注意的是,加权求和是「线性分割」,而激活函数一定是非线性的,用于提升维度。作者使用了 tanh(双曲正切)作为了激活函数。

图片

反映到实际的神经元电路中,如下图所示。

b730e5275ff3bce3836885be9b286d95fce073.jpg

同时,权重被储存在投掷器(用来调整物品配比生成不同频率的随机串)中,输入乘以权重后通过模电累加。

图片

最终电路实现

关于电路实现,首先通过模电计算加法,然后转为数电信号。

d5e3d73362517e8bb01520586da2380f33f198.jpg

累加器则是改装了另一位 Up 主提供的 2tick 流水线加法器,使之不会溢出。

c69fe47136ddf5918d370611fe2babaca976ab.jpg

接着堆叠神经元,构成一个全连接层。

941218d1740bd51d5cc21534539ce99c8bc67c.jpg

最后一层的输出以及层间缓存使用如下模电计数器,它可以统计 5Hz 串中「1」的数量,容量则为 1024。

8473dda94f87a1bf50d3487f9f157d69e2e9c9.jpg

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

f857906899d7cb8faed7209193c019e428ca5a.jpg

视频最后,作者展示了最终的网络结构,如下图所示。其中,权重范围为 [-1, 1],随机串长度为 1024,MNIST 数据集上的准确率约为 80%。不过当串长为 256 时,准确率仅为 62%。

图片


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK