尝试创建具有一个字符记忆的 RNN

数据挖掘 神经网络 rnn
2022-02-12 07:47:38

我正在尝试创建一个具有单字符记忆的 RNN。这是我基于 M-GRU(最小门控循环单元)的模型:

ft=σ(Wf[ht,xt]+bf)
ht~=tanh(Wh[ht,xt]+bh)
ht+1=(1ft)ht~+ftht

xt是输入和ht是RNN的隐藏状态。f是状态的更新门。

然后我有向量的第一个和第二个元素ht具有特殊的意义,是设置或获取记忆的力量。s=ht[0],g=ht[1]

这将输入添加到记忆中的强度s然后softmaxed

mt+1=softmax(mt+sxt)

然后候选输出是(如果没有 tanh,它似乎泛化得不太好,但收敛得更好):

c=tanh(Wcht+1+bc)

然后通过添加强度为 g 的内存来给出实际输出:

ot+1=softmax(c+gmt+1)

然后它通过ht+1mt+1进入下一个时间步。

然后我在一些数据“21(22)52(33)5421(44)32112(99)1232(33)132 ...”上进行了尝试,其中除了括号内之外基本上是随机数。然后我尝试给它一个起始字符串“(x”,如果它成功工作它应该输出“x)”,即使它以前从未见过字符“x”。

它几乎可以工作,但并不能很好地融合。这是一个典型的输出:

“(xx)7456725(11)9756x89994x548(33)383351051)(44)9887))1039(11))5407(77)953201(99)x1x85)53)(99))3846”

你知道有没有更好的模型可以做得更好(但比神经图灵机更简单)?

0个回答
没有发现任何回复~