1

所以我开始使用 FANN ( http://leenissen.dk/ ) 来创建一个简单的推荐引擎。

例如,

用户 X与具有 id 的记录有关系[1, 2, 3]

其他用户与以下 id 有关系:

  • 用户 A: [1, 2, 3, 4]
  • 用户乙: [1, 2, 3, 4]

那么,很自然,用户 X 也有可能对带有 id 的记录感兴趣,4并且它应该是推荐引擎的期望输出。

感觉这将是神经网络可以完成的事情。然而,通过尝试 FANN 和谷歌搜索,似乎需要与数据和结果建立某种数学关系。这里有 ids 没有;id 也可以是任何符号。

问题:是否有可能用神经网络解决这类问题,我应该从哪里开始寻找解决方案?

4

1 回答 1

1

您正在寻找的是某种递归神经网络;以某种方式存储“上下文”的网络。此类网络的示例是LSTMGRU。所以基本上,你必须按顺序输入你的数据。根据上下文和当前输入,网络将预测哪个标签最有可能。

似乎需要与数据和结果建立某种数学关系。这里有 ids 没有;id 也可以是任何符号。

数据和结果之间存在一定的关系,这可以通过权重和偏差来表示。

那么它将如何工作?首先,您对输入和输出进行一次性编码。因此,基本上,您希望在用户已经与之交互的一组标签之后预测哪个标签最有可能。

如果您有 5 个标签:A、B、C、D、E,这意味着您将有 5 个输入和输出:[0, 0, 0, 0, 0].

如果您的标签为 A,则数组将为[1, 0, 0, 0, 0],如果为 D,则为[0, 0, 0, 1, 0]

所以 LSTM 和 GRU 的关键是数据应该是连续的。因此,基本上,您将所有观看的标签一一输入。因此,如果用户观看了 A、B 和 C:

activate: [1,0,0,0,0] 
activate: [0,1,0,0,0]

// the output of this activation will be the next predicted label
activate: [0,0,1,0,0]
// output: [0.1, 0.3, 0.2, 0.7, 0.5], so the next label is D

而且您应该始终训练网络,使 IN t 的输出为IN t +1

于 2017-06-11T10:44:56.603 回答