Neural network 基于神经网络的文本转换

Neural network 基于神经网络的文本转换,neural-network,Neural Network,我以前使用过神经网络,但只是为了好玩,主要是将它们与标准化的分类(enum)、数字和位(bool)值一起使用。我知道NNs很难理解字符,但我想知道他们是否能理解如何转换文本 例如,是否有可能对NN进行以下培训: 13/20=20 aa/bb=bb 20/10=10 或(d替换为f) abcde=abcfe tdfg=tffg ddhj=ffhj 如果是,可靠性如何?或者可能有更适合这份工作的东西?一切都取决于转换的复杂性。如果你对这些例子感兴趣,那么,当然是的,这是可行和可靠的。第二个例

我以前使用过神经网络,但只是为了好玩,主要是将它们与标准化的分类(enum)、数字和位(bool)值一起使用。我知道NNs很难理解字符,但我想知道他们是否能理解如何转换文本

例如,是否有可能对NN进行以下培训:

  • 13/20=20
  • aa/bb=bb
  • 20/10=10
或(d替换为f)

  • abcde=abcfe
  • tdfg=tffg
  • ddhj=ffhj

如果是,可靠性如何?或者可能有更适合这份工作的东西?

一切都取决于转换的复杂性。如果你对这些例子感兴趣,那么,当然是的,这是可行和可靠的。第二个例子很简单,您只需在一个时间内呈现NN一个字符,将输入和输出编码为一个热向量(每个字符一个神经元),它就可以完成这项工作。第一个示例可以通过将左、右部分转换为一个热输入向量来解决,该热输入向量表示两个符号的所有可能组合之一,并具有两个输出,要求NN选择是否应选择第一部分或第二部分(存在更好的输入编码方法,尤其是对于长字符串)。如果你有足够的训练例子,一切都会很好


一般来说,NNs处理文本的困难令人望而却步的日子早已一去不复返了。现在,NNs可以被训练来进行机器翻译(比任何其他方法都好),甚至在某种程度上,还可以训练来预测基于程序字符串的简单计算机程序的输出(但这对于NNs来说仍然是一项困难的任务)

这个问题与实现无关,但由于我刚刚完成了一个类似主题的实验,以下是一些实用技巧:

使用RNN网络以这种方式转换文本是非常可能和容易的。克隆此()存储库,并使用放置在data/folder/input.txt中的文件对其进行训练,该文件的大小与您希望输出的格式相同:

abcde = abcfe
tdfg = tffg
ddhj = ffhj
abcd = abcf
使用此命令培训:

th train.lua -data_dir data/folder
测试网络时,它应该能够根据您提供的种子文本生成正确的输出:

th sample.lua cv/[latest_sample] -primetext "abcd" -length 7
应能够产生以下输出:

abcde = abcfe
tdfg = tffg
ddhj = ffhj
abcd = abcf

谢谢,我已经有一段时间没有和NNs合作了。我想我将不得不运行一些测试,看看有什么限制,但仅仅是确认NN可以处理它,是很多。我理解你关于第一个例子的部分回答,但问题是我不知道字符串是如何改变的,我只有源代码和结果,我必须训练它,使它从我的输入中产生相同的结果。因此,每个字符有36个1/0的输入,这就是我想象它是如何完成的。注意,如果你的转换也依赖于过去的历史,而不仅仅是当前的字符,你应该使用递归神经网络,任意的长时间依赖性可能很难处理。如果您的数据源很复杂,您可能希望生成一些具有已知转换和第一次过期的合成数据,以获得一些信心。非常好的概念证明,我接受它作为答案。