目前我正在试图建立一个神经网络的信息提取和我非常流畅与神经网络的(基本)概念,除了一个,这似乎百思不得其解。 这可能是很明显的,但我似乎无法找到关于它的信息。
在哪里/如何神经网络存储他们的记忆? (/机器学习)
有相当多的可用约神经网络和机器学习,但他们似乎都跳过存储器的在线信息。 例如重启程序后,它在哪里找到它的内存也要不断地学习/预测? 许多例子似乎网上没有“保留”的内存,但我无法想象这是“安全”真正的/大范围部署。
我有困难的时候,我的措辞问题,所以请让我知道,如果我需要更详细地说明了一下。 谢谢,
编辑: - 要跟进下面的答案
每一个神经网络将拥有与它们相关的边权。 这些边缘权重神经网络的训练中进行调整。
这正是我努力了,怎么办/我应该愿景这个辅助存储器? 这是像RAM? 这似乎并不合乎逻辑的..我之所以这么问,因为我还没有遇到过一个例子在线定义或指定该辅助存储器(在更具体的东西,例如,如XML文件,或甚至是一个巨大的数组)。
内存存储是实现特定的,而不是算法本身的一部分。 这可能是考虑你需要存储,而不是存储方法 是什么更有用。
考虑具有在输入,隐藏层和输出层3,图8,和图5的节点的3层的多层感知器(完全连接),分别为(对于这个讨论,我们可以忽略偏压输入)。 然后以表示所需的权重合理(高效的)的方法是通过两个矩阵:一个3x8
输入和隐藏层和之间的权重矩阵8x5
的隐藏层和输出层之间的权重矩阵。
对于这个例子,你需要存储的权重和网络形状(每层节点的数量)。 有很多方法,你可以存储这些信息。 这可能是在一个XML文件或用户定义的二进制文件。 如果你使用python,你可以两个矩阵保存到一个二进制.npy
文件和编码网络形状的文件名。 如果实现的算法,它是由你如何存储持久性数据。 如果,另一方面,您使用的是现有的机器学习软件包,它可能有用于存储和加载训练的网络自身的I / O功能。
每一个神经网络将拥有与它们相关的边权。 这些边缘权重神经网络的训练中进行调整。 我想你的疑问是关于存储这些边缘权重。 那么,这些值被在辅助存储器分开存储,以便它们可以保留在神经网络将来使用。
我期望模型(神经网络)的设计讨论会保持从实现,其中相似的耐用性数据的要求得到解决的讨论分开。
一个特别的库或框架可能有关于持久存储一个明确的答案,但如果你从头开始滚动您自己,那么它给你。
例如,为什么不只是写在文件中训练的权重和拓扑? 像YAML或XML的东西可以作为一个格式。
此外,当我们在谈论国家/存储和神经网络,你可能有兴趣在调查联想记忆 。
这可以在两个步骤来回答:
- 什么是“记忆”在神经网络(简称NN)?
作为神经网络(NN)进行训练,它建立了一个数学模型,告诉NN什么给为特定的输入输出。 想象一下如果你训练别人讲一门新的语言会发生什么。 人类的大脑产生了语言的典范。 同样,NN创建的您要教它什么数学模型。 它代表从输入到输出的映射作为一系列的功能。 这个数学模型是内存。 这个数学模型是网络中的不同边的权重。 通常情况下,一个神经网络训练和这些权重/连接写入到硬盘(XML,YAML,CSV等)。 每当NN需要使用时,这些值回读和网络重建。
- 你怎么能够使网络忘记了它的内存?
想想别人谁被教导两种语言。 让我们说个人从来不说这些语言的15 - 20年的一个,但使用另一种每一天。 这极有可能是几个新单词将每一天,忘记了那么频繁语言的许多单词学习。 这里的关键部分是一个人的“学习”的每一天。 在一个NN,一个类似的现象可以通过使用新的数据训练网络被观察到。 如果老数据没有新的训练样本中包含,那么底层的数学模型,将改变,以至于旧的训练数据将不再在模型中表示。 有可能通过改变训练过程,以防止NN从“遗忘”的旧模式。 然而,这有副作用,这样的NN不能学习全新的数据样本。
我会说你的做法是错误的。 神经网络是没有的内存转储,因为我们看到在计算机上。 有没有地方的特定内存块所在的地址。 所有神经元一起确保给定的输入导致特定的输出。
让我们从你的大脑进行比较。 当你品尝糖,你的舌头的味蕾上面写着的化学信号和传输电信号到大脑中的输入节点。 大脑然后确定使用电信号的各种组合的味道。
有没有查找表。 没有初级和次级存储器,只有短期和长期记忆。