构建您自己的人工神经网络

2020-10-01 03:24:38

最初的人工神经网络不是计算机内部的抽象概念,而是由旋转的马达和大束电线组成的实际物理系统。在这里,我将描述如何使用SnapCircuit(儿童电子工具包)为自己构建一个。我还将思考如何建立一个使用网络摄像头进行光学工作的网络。我将讲述我与艺术家拉尔夫·贝克(Ralf Baecker)交谈时学到的东西,他用绳子、杠杆和铅重构建了一个网络。

去年,我向普林斯顿大学(Princeton University)物理学家约翰·霍普菲尔德(John Hopfield)展示了SnapCircuit网络,他在20世纪80年代开创了神经网络的先河,他很快就专注于调整系统,看看他能让它做些什么。我是高等研究院的参观者,花了几个小时采访霍普菲尔德,为我即将出版的关于物理和心灵的书。

Hopfield成名的网络类型与今天为图像识别和其他人工智能系统提供动力的深层网络略有不同。它仍然由连接在一起的基本计算单元-“神经元”组成,以便每个单元对其他单元正在做的事情做出反应。但是神经元没有排列成层:没有专门的输入、输出或中间阶段。取而代之的是,网络是一个巨大的信号纠结,可以自我循环,形成一个高度动态的系统。

每个神经元都是一个开关,根据其输入来开启或关闭。神经元从某些初始状态开始,相互碰撞和重新调整。一个神经元可能会导致另一个神经元开启,触发一连串的神经元开启或关闭,可能会改变原始神经元的状态。理想情况下,网络稳定在静态或循环模式中。因此,该系统集体执行计算,而不是像传统计算机那样遵循逐步过程。

1981年,当时在加州理工学院,霍普菲尔德发表了一场关于他的反馈网络的演讲,听众中有一位来访的科学家约翰·兰贝(John Lambe)。Lambe受到启发,建立了第一个物理实例化,由六个由拨动开关控制的神经元组成。

它证实了这种设计的网络是稳定的,而不是环路混乱,这是霍普菲尔德主要担心的问题。霍普菲尔德在1984年的一篇论文中勾勒出了电路的草图。

SnapCircuit版本有三个神经元,这是观察有趣行为的最小数量。我假设您大致熟悉SnapCircuit,并能从图表和照片中找出如何组装电路。我已经在这篇帖子的末尾列出了所需的部件。当我还是个孩子的时候,他们没有SnapCircuit,我发现要有效地布置电路比看起来要难。毫无疑问,有比我更好的方法,所以请把你的照片寄给我。

电继电器充当神经元。当它们的输入电压超过某个阈值时,它就会发出令人满意的咔哒声,照亮一盏灯。继电器的一个问题是记忆效应:一旦开启,它们就很难再次关闭,反之亦然。正如霍普菲尔德在他关于这个主题的第一篇论文中指出的那样,这可能会导致网络停滞。网络作为一个整体可以存储信息,但你不希望单个神经元也这样做。为了解决这个问题,我将每个继电器与一个晶体管配对以控制其输入。

晶体管输入端的可变电阻可以让你微调神经元阈值--它的“偏置”--使开启和关闭变得更容易或更难。SnapCircuit调色板中最小的可变电阻器的值比我在电路中其他地方使用的电阻值大得多,因此对其设置的微小更改会产生巨大的影响,而且很难正确使用。我还在继电器输入端平行放置了一个电容器,以减慢转换速度,从而更容易观察网络的发展。

每个神经元都会产生一个信号及其相反的信号。这些连接到其他神经元的输入,并由一组六个开关控制。开关是通常用于神经网络计算的数学矩阵的物理形式。一个神经元既可以激活另一个神经元,也可以抑制另一个神经元,或者根本不起作用。在生物学方面,它们的联系要么是兴奋的,要么是抑制的。在我的网络中,选择是通过翻转输出或其否定之间的开关来做出的,并在空档位置完全断开连接。注意神经元不会连接到自己,否则你会得到我所说的记忆效应。

每个开关上的电阻器允许电压相加。电阻值决定耦合的强度:高电阻意味着低耦合。在这个电路中,我使用了相等的电阻值。这足以证明这样一个简单的网络能够实现的动态范围。

最后,一组开关可以让您设置神经元的初始状态,用行话说就是“钳位”。这就是将数据输入网络的方式。为简单起见,我的电路中的开关只能钳位到接通,因为当你第一次通电时,神经元是关闭的。

要暂时只关注两个神经元,请将第三个神经元的输入开关设置为中性。可以通过三种方式配置两个神经元:

1.如果你将第一个神经元的输入反转为兴奋性,将第二个神经元的输入反转为抑制性,你就创建了一个不对称的网络。它将以继电器翻转的速度运行所有可能的状态。如果第一个神经元是打开的,它就会通过抑制性连接关闭第二个神经元。然后第二个通过它的兴奋性连接关闭第一个。现在,第一个将打开第二个,这会将第一个重新打开,然后循环重复。网络永远不会稳定。

2.如果两个开关都设置为兴奋性,每个神经元都会打开另一个。网络进入稳定状态并保持在那里。

3.如果两个开关都设置为抑制性,你最终会得到一些有用的东西:一小块内存。这两个神经元通过它们相互加强的动力来储存它。如果你按下开关打开第一个神经元,第二个神经元将被强制关闭,这会打开第一个神经元。所以,如果你放开开关,神经元就会保持在那个状态。同样,如果你按下开关关闭第一个神经元,就会打开第二个神经元,而且这种情况也是自我维持的。工程师们将这种布置称为触发器。

三个神经元变得更加有趣。您可以设置一个逻辑OR门,其中两个神经元用作输入值,第三个神经元用作输出。将1-3和2-3连接转到激励式,并禁用所有其他连接。现在,如果1或2处于打开状态,则神经元3将处于打开状态,否则将处于关闭状态。

你也可以做一个三个神经元版本的触发器,其中一个神经元打开,两个神经元关闭,打开一个神经元就会关闭其他神经元。只要把所有的开关都调到抑制状态就行了。

接下来,试试环形振荡器。将1-2、2-3和3-1连接设置为抑制,其余设置为关闭。网络循环:第一个神经元开启,然后是第三个、第二个、第一个,依此类推。

在霍普菲尔德的这个简单演示中,一个神经元出现了,然后是下一个,然后是下一个。“。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中所示。

Rojas的第二个示例是相反的配置。将1-2、2-1、2-3和3-2连接设置为抑制,将1-3和3-1设置为兴奋,并关闭偏置。现在,网络将固定在两个稳定的端点之一:中间的灯泡亮起,其他灯泡熄灭,反之亦然。这两个状态可以被认为是系统存储的两个存储器。其他状态是系统填充的部分或损坏版本。这就是Hopfield网络作为联想存储器或纠错技术的作用。

使用Rojas的第二个示例,您可以尝试训练网络。Hopfield网络是由生物学家和机器学习研究人员所说的Hebbian学习来训练的:一起点火,一起连接。按下钳位按钮,打开第一个神经元,并将1-3开关调到兴奋状态,使第三个神经元也打开。然后按下夹紧按钮打开第二个灯泡,将1-2和2-3开关翻转到抑制状态,使其他灯泡关闭。最后,使交换机设置对称。您可能需要调整这些偏差。

如果你雄心勃勃,试着把这个网络扩展到四个神经元。你需要将神经元互连的数量增加一倍。连通性的指数增长是硬件神经网络的一个普遍问题。霍普菲尔德告诉我:“你看到的一件事是,这东西塞满电线的速度有多快。”这就是为什么我们大脑的大部分--白质--由神经纤维组成。此外,您可能需要选择不同的电阻值并增强电源。多神经元网络通常需要对互连的权重进行更精细的控制。对于一个三个神经元的网络,你可以进行草率的设计,但对于四个神经元的网络,你需要更加系统化。

但是如果您确实达到了这个级别,就可以实现XOR门,这在概念上很重要。单层神经网络不能实现它。XOR函数是奇偶校验函数的最简单示例,如果位数是奇数,则返回1,如果是偶数,则返回0。奇偶校验是一个看似简单的想法,即使是最先进的机器学习系统也会出错。

对于五个神经元,你可能不得不从SnapCircuit切换到面包板。一个五神经元网络可以有两个吸引子状态,这两个吸引子状态提供一个简单的联想记忆。其他五个神经元网络可以在这里和这里找到。

至于六个神经元,霍普菲尔德和他的合著者大卫·坦克(David Tank)在《科学美国人》的一篇文章中给出了一个例子,说明你可以用它们做什么。

另一个有趣的方向是增加随机性的元素。在Hopfield网络中,动力学是确定性的:神经元的状态完全由其互连决定。在更高级的网络中,神经元可能会自发翻转。在SnapCircuit中,您可以尝试添加一个开关并让人随意按下它。那么这个网络就不会停留在一个单一的状态,神经元将继续起伏不定。但作为一个整体,网络仍然处于热平衡状态,再次显示了集体动力的力量。

另一个早期的物理网络是光网络。想象一下,将相机指向相机自己图像的屏幕,创建一个反馈循环。如果图像变得更亮,相机就会捕捉到它,屏幕就会变得更亮,以此类推,直到达到最大亮度。如果屏幕变暗,它也会循环,直到变得漆黑。通过这种方式,反馈产生了两种稳定的状态,可以作为神经元使用。

要创建多个神经元,请使用纸板遮罩将屏幕划分为多个区域。明智地切割纸板面罩可以使每个神经元对其他神经元敏感。如果操作正确,动态效果将与SnapCircuit网络中的效果相同。

无论如何,这就是我们的想法。我试着用两部运行远程网络摄像头应用程序Alfred的手机来做这件事。我把其中一个的相机对准了另一个的屏幕。但是遮罩和对齐是非常棘手的。霍普菲尔德也做过这样的实验,但他和我都没有成功。

铅锤的位置代表一个比特:向上表示1,向下表示0。杠杆是一个非门:当一端向下时,另一端是向上的。一个悬挂在几根弦上的铅锤会给你一个OR门:拉任何一根弦都会把它抬起来。其他的一切都可以用这两扇门来建造。

贝克网络权重中的权重是不可调整的。这个网络运行着一个固定的程序:细胞自动机,这是一种受自己的物理定律支配的模拟宇宙。该网络执行元胞自动机规则110,该规则可在斯蒂芬·沃尔夫拉姆的书“一种新的科学”的封面上找到。规则110是更知名的生命游戏细胞自动机的一维版本,可以创建一个自包含的宇宙,里面充满了滑翔机-可以传输信息和执行计算操作的移动结构。

唉,贝克的系统太小了,不能显示滑翔机,而且也不能直接“显示”任何东西--它需要一些脑力体操才能将垂直摆动解释为细胞自动机中的模式。该安装实现了9个单元格,并在任何时刻显示三个时间步长。在前一个时间步长中,每个单元格都连接到它自己和它的两个邻居。

更新单元格需要8个NOT运算和4个OR运算。在每个时间步长之间是一个开关和伺服电机,它引入了三秒的延迟,让机械部件有时间稳定下来。九个单元格围绕圆周排列,三个时间步长是垂直的。底部反馈到顶部,系统可以连续运行。贝克告诉我,系统将在摩擦磨损之前运行几个小时,必须重新启动。

“对我来说,重点是过程,而不是实际结果,”贝克尔说。“机械部件发出很好听的‘咔嗒’声。我通常用耳朵检查机器是否运转良好。点击在机器周围以特定的圆圈和模式移动,就像蟋蟀一样。“。

乔治·马瑟是一位屡获殊荣的科普作家,也是《远处的幽灵行动》(The Spooky Action At A Distance)和《完整的白痴弦理论指南》(The Complete Idiot‘s Guide to String They)一书的作者。我们可以通过@gmusser关注他。

Q2晶体管S3继电器S2开关RV2可变电阻器10kΩD3二极管C8电容器4700µF L1灯R2电阻器1kΩ。

二极管隐藏在上面的照片中,但放置在电容器下面是为了防止电压尖峰-所谓的反激式二极管。

对于开关组,两个神经元需要以下各两个,三个神经元需要六个,四个神经元需要12个:

几个基本网格:我需要四个作为三个神经元网络的电源,并切换很多很多的连接条和电线