使用神经网络提供建议

时间:2017-06-11 08:42:51

标签: neural-network deep-learning artificial-intelligence recommendation-engine fann

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

例如,

用户X 与ids [1, 2, 3]

的记录有关系

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

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

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

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

问题:是否可以通过神经网络解决此类问题?我应该从哪里开始搜索解决方案?

1 个答案:

答案 0 :(得分:1)

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

  

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

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

那怎么会有效呢?首先,您对输入和输出进行一次热编码。所以基本上,你想要预测用户已经与之交互的一组标签后最有可能的标签。

如果您有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