我对这个领域还比较陌生,所以这个问题可能看起来有点奇怪。不过,在提问之前,我已经阅读了一些关于机器学习的关键点和神经网络作用部分的入门文章。其中包括非常有用的什么是机器学习这篇文章。根据我的理解,一个经过训练的神经网络(如果有误请纠正):
- 是一组神经元之间的连接(可能有自连接,可能有门控等)。
- 在每个连接上形成的激活概率。
这两者在训练过程中都会进行调整,以尽可能接近预期的输出。那么,当我们对一个经过训练的神经网络满意时,我们会将测试数据子集加载到其中,并检查其表现如何。但如果我们对测试结果满意,并希望存储这些“教育成果”,而不是在数据集有新值时再次运行训练,该怎么办呢?
所以我的问题是——除了RAM之外,这些教育知识是否存储在其他地方?是否可以像对象序列化那样导出,以便明天或以后获取新数据时不需要再次训练神经网络?
现在,我正在尝试使用我的数据集制作一个简单的演示,使用synaptic.js,但我在项目wiki中找不到关于保存教育成果的概念。这个库只是一个例子,如果你能提到一些Python库会更好!
回答:
在我的回答中,我假设你正在使用一个简单的多层感知器(MLP),尽管我的回答也适用于其他网络。
“训练”MLP的目的是找到正确的突触权重,以最小化网络输出的错误。
当一个神经元连接到另一个神经元时,其输入会被赋予一个权重。神经元执行一个函数,比如所有输入的加权和,然后输出结果。
一旦你训练了你的网络,并找到了这些权重,你可以使用一个验证集来验证结果。
如果你对网络的表现满意,你只需记录你应用到每个连接的权重。你可以将这些权重存储在任何你喜欢的地方(连同网络结构的描述),然后稍后检索它们。每次你想使用这个网络时,都不需要重新训练它。
希望这对你有帮助。