我使用神经网络和插入符号包编写了一些NN。但是这些神经网络是二维的(我什至不知道这个术语是否存在)
但我很好奇“3D 神经网络”是否存在。在搜索时,我偶然发现了这个网站并找到了这个神经网络。
我对神经网络中的前馈和反向传播概念有很好的理解。如果存在 3d 神经网络,它是如何工作的?R 中是否有任何包可用于为这种类型的神经网络创建模型(和预测)?如果没有,你能推荐任何其他平台吗?
我使用神经网络和插入符号包编写了一些NN。但是这些神经网络是二维的(我什至不知道这个术语是否存在)
但我很好奇“3D 神经网络”是否存在。在搜索时,我偶然发现了这个网站并找到了这个神经网络。
我对神经网络中的前馈和反向传播概念有很好的理解。如果存在 3d 神经网络,它是如何工作的?R 中是否有任何包可用于为这种类型的神经网络创建模型(和预测)?如果没有,你能推荐任何其他平台吗?
“3d 网络”通常可以描述为具有 2d 层的网络。它与任何其他网络没有根本不同,因为激活的原理是相同的。每个单元的激活是其输入的线性组合,通过(通常是非线性的)激活函数传递。从某种意义上说,维度只是绘图的一个属性。你可以在任何你想要的地方绘制单位(使用你想要的任何尺寸)并且功能是相同的。相反,重要的是连接性。
将网络层“组织”成明确定义的形状有几个原因。一个是为了方便思考(例如在处理像图像这样的二维输入的情况下)。当连接受到限制时尤其如此。例如,在处理图像的卷积网络中,每个单元接收来自前一层单元的本地“补丁”的连接。在这里将图层视为 2d 具有直观意义,因为它让我们可以谈论诸如“局部补丁”之类的事情。但是,和以前一样,您可以完全打乱“位置”,只要连接性相同,功能就会相同。
在卷积网络(例如用于图像处理)中,以 2d 表示层还有一个额外的好处。由于这些网络约束权重/连接性的方式,在 2d 中表示层使得在计算层中所有单元的激活时使用 2d 卷积操作成为可能。尽管它不会改变网络的基本功能,但它是一种实现事物的计算效率非常高的方式。这只是一个例子,在其他情况下,在具有某些维度的网格上表示单元可以发挥计算技巧来加快速度(例如在您链接的博客文章中)。
实际上,博客文章中的网络是一个不同的野兽,因为它是一个尖峰网络,它试图比标准人工神经网络更接近地模拟生物神经元。但是,这是一个完全不同的问题。
对于人工神经网络(机器学习中使用的那种),没有“维度”。正如@user20160 所指出的,卷积网络通常以 2D 形式呈现,以帮助我们理解网络的操作,但是任何单元在空间中都没有位置,只是连接到图像的不同部分。在您链接到的网站中,神经网络具有由单元到单元的跳跃距离定义的连接规则,这意味着每个单元都有一个隐式的 3D 空间位置。回答您的问题:我认为 R 中没有针对此类架构的任何包(尽管我没有进行详尽的搜索)。但是,神经元或者 Brian 模拟环境可能让您使用简单的集成和发射单元来完成它。同样,在 R 或 python 中实现它并不难 - 只需为每个神经元定义一个空间点并根据距离设置连接规则。
我要指出:这样的设计是否有用是一个悬而未决的问题。我们在真实大脑中看到了一些依赖于距离的连接模式(参见例如这篇论文),因此可能有充分的理由这样做。不过,据我所知,没有人真正从机器学习的角度证明过一个好的理由。