我有一个棘手的问题,需要一些建议:
假设我有一组可变长度的序列,其中许多序列是独一无二的--想象一下下棋的动作,例如
..。
对于这个集合中的每一项,我都有另一组由人类生成的描述(想想注释- comment_1: "cool game", comment_2: "awesome sacrifice")。
目的是挖掘注释和序列之间的关联,为搜索目的使用人类可读的标签标记序列。
我曾经考虑过标签生成+聚类/序列分组的主题建模,但是我想不出如何做类似于集群游戏的事情。我有数以百万计的例子,如果这有帮助的话。你知道我怎么能测量这样的序列之间的距离/相似性吗?某种嵌入?我考虑过尝试一种word2vec / doc2vec方法,但还没有进行测试。
理想情况下,我可以输入一个看不见的序列,并为这个序列建议标签/人类可读的描述。
发布于 2018-05-09 02:34:41
虽然使用一个热编码动作的RNN是可能的,但我建议您的模型需要在更深的层次上理解国际象棋(或类似的复杂游戏),以便能够将评论与位置联系起来。
我会对位置本身进行编码(如α-零文件中的分层表示),并通过conv来建模与注释对应的位置之间的时间关系。(也许你可以找到一个预先训练过的评估模型作为基线)。
我读了相当多的国际象棋评论,有一件事很常见,那就是一次有一个动作和几个动作的评论(比如开场白,或者被迫继续),这是相当离散的(我的“10步牺牲”和我的“15步失误”与隐藏状态无关)。这导致我认为,与RNN模型不同,您实际上是在尝试首先分区,然后将移动嵌入到注释空间中--这将导致一个模型,该模型首先是一个RNN,该模型可能会学习可能需要注释的移动分区,然后另一个模型,也许是条件自动编码器,将联合训练(position _注释)子序列(此时您仍然应该有大量的功能可以处理,所以不必担心微弱的信号)。
这里的“搜索”功能不是指纯粹的深度学习模型,因为您希望找到特定的位置实例,而不是带有该注释的典型位置(即对潜在空间进行抽样)。这使我认为,您创建了一个显式的数据结构,将最终嵌入空间中的点映射到它们的位置。因此,如果您想搜索“尼斯牺牲”,模型将在“注释空间”中找到最近的点,然后使用余弦距离之类的方法返回这些游戏,或者最后一步是对(position )空间进行聚类。
无论哪种方式,有趣的问题,先尝试更简单的事情。
发布于 2018-02-07 22:22:57
我对国际象棋表示法不太了解,但看起来你可以在某种程度上把这些动作编码成几个类别。然后,每一个动作都是你(输入)顺序中的一个时间步骤。您可以尝试使用seq2seq模型将您的输入序列(游戏进展)映射到输出语句。我确实认为,将输入建模为一个循环单元是非常可能的,但是预测原始文本输出可能很难正确提取,因为信号太薄,很难捕获。您可以考虑将这些注释分类为几个类别,并将其转化为RNN分类问题,这可能会带来更好的结果。
https://datascience.stackexchange.com/questions/27575
复制相似问题