T他的第一个人工神经网络不是计算机内部的抽象概念,而是由旋转的马达和大捆电线组成的实际物理系统。在这里,我将介绍如何使用SnapCircuits(一种儿童电子设备)为自己制作一个。我还将考虑如何使用网络摄像头建立一个光学网络。我会讲述我和艺术家拉尔夫·贝克尔的谈话,他建一种使用绳子、杠杆和铅锤的网络。
去年,我向普林斯顿大学(Princeton University)物理学家约翰·霍普菲尔德(John Hopfield)展示了SnapCircuits网络,他是上世纪80年代神经网络的先驱,他很快就专注于对系统进行调整,看看他能让它做些什么。我是高级研究所的访客,为了我即将出版的一本关于物理和思维的书,我花了几个小时采访了霍普菲尔德。
Hopfield因其网络类型而闻名于世,这与如今驱动图像识别和其他人工智能系统的深层网络略有不同。它仍然由基本的计算单元(“神经元”)组成,这些单元连接在一起,以便每个单元对其他单元的操作做出反应。但是神经元并没有分层排列:没有专门的输入、输出或中间阶段。相反,网络是一个信号的大缠结,可以自我循环,形成一个高度动态的系统。
你可以草率地设计一个三神经元网络,但如果是四个神经元,就需要更加系统化。
每个神经元都是一个开关,它的开启或关闭取决于它的输入。从某个初始状态开始,神经元相互碰撞并重新调整。一个神经元可能会引起另一个神经元的开启,触发一连串神经元的开启或关闭,也许会改变原神经元的状态。理想情况下,网络处于静态或循环模式。这样,该系统就可以集体地进行计算,而不是像传统计算机那样一步一步地进行。
1981年,当时在加州理工学院,Hopfield做了一个关于他的反馈网络的演讲,听众中有一位来访的科学家,John Lambe。Lambe受到启发构建了第一个物理实例化,它由6个由切换开关控制的神经元组成。
它证实了这种设计的网络是稳定的,而不是混乱的循环,这是Hopfield的主要担忧。霍普菲尔德在1984年绘制了电路草图纸.
SnapCircuits设计
SnapCircuits版本有三个神经元,这是观察有趣行为的最小数量。我假设你对SnapCircuits很熟悉,并能从图表和照片中找出如何组装电路。我在这篇文章的最后列出了所需的部分。当我还是个孩子的时候,他们还没有SnapCircuits,我发现有效率地布置电路比看起来要难。毫无疑问,还有比我更好的方法,所以请把你的照片发给我。
电子继电器充当神经元。当它们的输入电压超过某个阈值时,它就会“咔哒”一声打开,照亮一盏灯。继电器的一个问题是记忆效应:一旦打开,就很难再关闭,反之亦然。这可能会导致网络失灵,就像Hopfield在他关于这个话题的第一篇论文中指出的那样。整个网络可以存储信息,但你不希望单个神经元也这样做。为了解决这个问题,我将每个继电器与一个晶体管配对,以控制其输入。
晶体管输入端的可变电阻可以让你微调神经元阈值——它的“偏置”——使其更容易或更难开启或关闭。在SnapCircuits调色板中最小的可变电阻的值比我在电路中其他地方使用的电阻值大得多,所以它的设置的一个小变化会产生巨大的影响,很难得到正确的值。我还将一个电容与继电器输入平行放置,以减慢转换速度,从而更容易观察网络的演变。
最新和最受欢迎的文章投递到您的收件箱!
每个神经元同时产生一个信号和它的逆信号。这些信号进入其他神经元的输入,并由一组6个开关控制。这些开关是通常用于神经网络计算的数学矩阵的物理形式。一个神经元可以激活或抑制另一个神经元,或者完全不起作用。从生物学的角度来看,它们之间的联系要么是兴奋的,要么是抑制的。在我的网络中,选择是通过在输出和它的否定之间拨动开关,在一个中立的位置完全断开连接。请注意,神经元并没有连接到它们自己,否则你就会得到我所说的记忆效应。
每个开关上的电阻器允许增加电压。电阻器的值决定耦合的强度:高电阻意味着低耦合。在这个电路中,我使用了相同的电阻值。这足以证明这样一个简单的网络能够实现的动态范围。
最后,一组开关可以让你设置神经元的初始状态,这在行话中被称为“箝位”。这就是将数据输入网络的方法。简单来说,我电路中的开关只能打开,因为当你第一次通电时,神经元是关闭的。
电路操作
为了暂时只关注两个神经元,将第三个神经元的输入开关设置为中性。两个神经元可以通过三种方式配置:
1.如果你将第一个神经元的输入转换为兴奋性的,而将第二个神经元的输入转换为抑制性的,你就创造了一个不对称的网络。它将以继电器能翻转的最快速度运行所有可能的状态。如果第一个神经元打开了,它就会通过抑制连接关闭第二个神经元。然后第二个通过它的兴奋性连接切断第一个。现在,第一个开关会打开第二个开关,第二个开关又会打开第一个开关,这样循环往复。网络永远不会稳定。
2.如果两个开关都被设置为兴奋状态,则每个神经元会打开另一个神经元。网络会进入一个稳定的状态并停留在那里。
3.如果两个开关都设置为抑制,您最终会得到一些有用的东西:单个内存位。这两个神经元通过相互加强的动力来储存它。如果你按下开关打开第一个神经元,第二个神经元就会被关闭,第二个神经元的作用是打开第一个神经元。所以,如果你松开开关,神经元就会保持在那个状态。同样地,如果你按下开关关闭第一个神经元,第二个神经元就会打开,这种情况也是自我维持的。工程师们把这种安排称为触发器。
要把铅锤解释成细胞自动机的模式需要一些心理训练。
三个神经元变得更有趣。你可以设置一个逻辑或门,其中两个神经元作为输入值,第三个作为输出值。将1-3和2-3连接变为兴奋性连接,并使其他连接失效。如果1或2是开的,神经元3就是开的,否则就是关的。
你也可以做一个有三个神经元的触发器,其中一个神经元打开,两个关闭,打开一个神经元关闭其他神经元。把所有开关都调到抑制性。
接下来,试试环形振荡器。将1-2、2-3和3-1连接设置为抑制,其余连接关闭。网络循环:第一个神经元打开,然后是第三个,第二个,第一个,等等。
在Hopfield的简单演示中,一个神经元出现,然后下一个神经元出现,然后下一个神经元出现。data-credits= " George Musser " style= " width:733px " >
你也可以用计算机科学家Raúl Rojas给出的两个例子进行实验13.3.1节他的教科书在神经网络。
首先,设置1-2、2-1、2-3和3-2连接到兴奋性和1-3,3-1连接到抑制性。同时,降低神经元的倾向性,使激活神经元变得更加困难。现在这些神经元——不管它们最初的状态如何——最终都会关闭并保持关闭状态。但它们经历了一系列中间状态,正如罗哈斯在图13.10中所示。
罗哈斯的第二个例子是相反的配置。设置1-2、2-1、2-3和3-2到抑制性和1-3到兴奋性的连接,并关闭偏见。现在网络将进入两个稳定的端点之一:中间的灯泡打开,其他的关闭,或者相反。这两种状态可以被认为是系统存储的两种记忆。其他状态是系统填充的部分或损坏版本。这就是Hopfield网络作为联想记忆或纠错技术的作用。
使用罗哈斯的第二个例子,您可以尝试训练网络。Hopfield网络是由生物学家和机器学习研究人员所称的Hebbian学习进行训练的:一起发射,连接在一起。按下夹紧按钮打开第一个神经元,并将1-3开关翻转到兴奋状态,使第三个神经元也出现。然后按下夹紧按钮,打开第二个灯泡,翻转1-2、2-3开关至抑压,使其他灯泡关闭。最后,使开关设置对称。你可能需要调整偏见。
更大的版本
如果你有野心,可以试着把神经网络扩展到四个神经元。你需要将神经元之间的连接数量增加一倍。连通性的指数级增长是硬件神经网络的一个普遍问题。“你可以看到这东西被电线填满的速度有多快,”Hopfield告诉我。这就是为什么我们大脑的大部分白质是由神经纤维组成的。此外,您可能需要选择不同的电阻值和增强电源。多神经元网络通常需要对互连的权重进行更精细的控制。你可以草率地设计一个三神经元网络,但如果是四个神经元,就需要更加系统化。
但如果你能达到这个水平,你就能做到实现异或门,这在概念上很重要。一层神经网络无法实现它。XOR函数是奇偶函数的最简单示例,如果位数为奇数则返回1,如果位数为偶数则返回0。奇偶性是一个看似简单的概念,即使是最先进的机器学习系统也会出错。
对于5个神经元,你可能需要从SnapCircuits切换到breadboarding。一个五神经元网络可以有两个吸引子状态,提供一个简单的联想记忆.还可以找到其他五神经元网络在这里和在这里.
至于6个神经元,Hopfield和他的合著者David Tank举了一个例子,你可以用它们做什么科学美国人文章.
另一个有趣的方向是添加随机性元素。在Hopfield网络中,动态是确定的:神经元的状态完全由其相互连接决定。在更高级的网络中,神经元可能会自发翻转。在SnapCircuits中,您可以尝试添加一个开关,让人随意按下它。这样,网络就不会陷入单一状态,神经元就会继续开关。但整个网络仍然处于热平衡状态,再次显示了集体动力学的力量。
摄像头的版本
另一个早期的物理网络是光学.想象一下,把相机对准相机自己图像的屏幕,创造一个反馈循环。如果图像变得更亮,相机就会捕捉到,屏幕就会变得更亮,以此类推,直到亮度达到最大值。如果屏幕变暗,它也会循环,直到变成一片漆黑。通过这种方式,反馈创造了两个稳定的状态,可以作为一个神经元。
为了创造多个神经元,使用纸板面具将屏幕分成多个区域。适当地切割纸板面具可以使每个神经元对其他神经元敏感。如果你做对了,动态将与SnapCircuits网络相同。
无论如何,这就是我的想法。我试着用两部手机运行一个名为阿尔弗雷德的远程摄像头应用程序。我把其中一个的摄像头对准另一个的屏幕。但是掩蔽和对齐是非常棘手的。霍普菲尔德也尝试过这种方法,但他和我都没有成功。
如果你成功了请告诉我。
机械版
艺术家拉尔夫·贝克尔(Ralf Baecker)就有创建一个卓越的机械神经网络模型。
铅锤的位置代表一个位:向上为1,向下为0。杠杆不是门:一端向下时,另一端向上。挂在几根绳子上的铅锤会给你一个OR门:拉任何一根绳子都会举起铅锤。其他的一切都可以从这两扇门中建造出来。
贝克网络权值中的权值是不可调的。这个网络运行着一个固定的程序:细胞自动机,它是一种由自己的物理定律控制的模拟宇宙。网络执行细胞自动机规则110,这可以在Stephen Wolfram的书的封面上找到一种新的科学.110号规则是更广为人知的规则的一维版本生命的游戏细胞自动机并可以创建一个自给自足的宇宙,里面充满了滑翔机——一种可以传输信息和执行计算操作的移动结构。
贝克尔的系统太小,无法显示滑翔机,唉,而且也不能直接“显示”任何东西,无论如何,它需要一些精神体操来解释垂直摆动作为细胞自动机的模式。该安装实现了九个单元,并显示了三个时间步骤在任何时候。每个细胞都在前一个时间步内连接到自己和它的两个邻居。
更新单元格需要8个NOT操作和4个or操作。在每个时间步长之间是一个开关和伺服电机,这引入了一个三秒的延迟,给机械部件时间来稳定。九个单元围绕圆周排列,三个时间步是垂直的。底部反馈到顶部,系统可以连续运行。贝克尔告诉我,在摩擦磨损系统之前,系统将运行几个小时,然后必须重新启动。
“对我来说,重点是过程,而不是实际结果,”Becker说。“机械部件会发出很好听的‘咔哒’声。我通常用耳朵来检查机器是否运转良好。咔哒声在机器周围以特定的圆圈和模式移动,就像蟋蟀一样。”
乔治·马瑟是一位获奖的科学作家,著有幽灵般的远距离行动和《弦理论白痴指南》。关注他@gmusser。
SnapCircuit线路图和零件清单
对于每个神经元,你需要:
Q2晶体管
S3继电器
S2切换
RV2可变电阻10 kΩ
D3二极管
C8电容4700µF
L1灯
R2电阻器1 kΩ
二极管隐藏在上面的照片中,但是被放置在电容器下面以防止电压尖峰-一个所谓的反激二极管。
对于一组开关,你将需要2个以下的每个用于2个神经元,6个用于3个,12个用于4个:
S6开关
R1 100Ω电阻
最后,你还需要:
几个基本网格:我需要四个来组成一个三神经元网络
电源与开关
很多很多的连接条和电线