首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我能否用一些新的特征来进一步训练一个经过训练的神经网络呢?

我能否用一些新的特征来进一步训练一个经过训练的神经网络呢?
EN

Software Engineering用户
提问于 2017-05-16 22:00:15
回答 3查看 203关注 0票数 0

我想为脱机手写文档制作一个半自动的OCR软件,其中OCR试图识别单词,用户可以通过定义错误识别的字符来纠正识别器的错误。

我发现了一个类似的问题,但没有真正回答我的问题:https://stackoverflow.com/questions/13117761/encog-neuroph-save-neural-network

我的第一个方法是:我先训练一个神经网络,然后在选定的文档上运行第一个识别,然后当用户定义一些特定的字符(例如,用户在图像上选择一个字符,并说它是一个"a“字母)时,它只修改神经网络(运行时)中的权重,然后在文档上重新启动识别。是否有可能“快速训练”整个网络只有一些新的规格字符,以使原来的字符仍然可以识别?

我的第二个方法:我创建两个独立的神经网络。第一个是上面提到的普遍性,第二个是空的。在“通用”网完成识别后,我只需添加新的指定字符来训练第二个空神经网络,然后使用该神经网络重新启动识别。

EN

回答 3

Software Engineering用户

发布于 2017-05-16 22:24:54

只要你没有做任何巩固训练的工作,就有可能。

一个神经网络开始随机称重。当你训练它的时候,权值逐渐呈现出你想要的输出值(通过反馈循环)。一旦你满意,你就停止训练。

现在,您想要添加新的东西供网络识别。很好。要么随机重新开始,要么从你现在的位置开始。很难说哪一个能更快地把你送到那里。

而且,只要你没有把神经元的数量减少到所需的最低限度,就有可能用一个新的角色来训练它。

但是,不要认为您的旧角色可以简单地从培训集中删除。经过足够的训练,他们将被遗忘。

票数 2
EN

Software Engineering用户

发布于 2017-05-17 03:27:16

虽然训练和识别有很大的不同,但从理论上讲,即使是在终端用户设备上,也可以在初始训练之后继续进行训练。然而,神经网络训练是通过消耗大量的数据集来完成的。似乎可疑的是,最终用户将能够为培训调整提供足够大的数据集,以便将NN完全更新给该用户。例如,将原始培训集的大小与最终用户在几个月内可能做的事情进行比较,这可能是数据集大小在几个数量级以上的差异。

票数 0
EN

Software Engineering用户

发布于 2017-05-17 09:43:23

有一些技术,如随机梯度下降,执行在线培训(即,您一次培训一个网络,您可以添加更多)。

您可以通过抽动超参数来使其更灵活地适应新的示例。

只要用户做了足够的修正,它最终将提高准确性。

很长一段时间,我会考虑如何改进原有的网络。一个建议是存储用户的更正,收集匿名数据并将它们添加到您的培训集中。

我不认为这在您的情况下是有用的,我将提到知识转移1,因为它可能是值得研究的。已经观察到,网络的第一层是完全相同的(例如,在图像识别中,第一层几乎总是一个Gabor滤波器或色块)。知识转移意味着取网络的前n层,随机初始化最后m层并重新训练整个网络。这可能需要更小的数据集和更少的计算能力,因此您可能能够在用户的机器上完成。

1 - http://www.evolvingai.org/files/2014-YosinskiEtAl-HowTransferableAreFeaturesInDNNs-NIPS.pdf

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/349110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档