machine-learning - 对 DSSM 中的单词散列感到困惑?
问题描述
在这篇论文Learning Deep Structured Semantic Models for Web Search using Clickthrough Data中,它使用词散列技术将单词的单热表示转换为字母三元组的(稀疏)向量。
例如,根据我的理解,一个单词look
首先被分解为字母三元组,[#lo, loo, ook, ok#]
然后表示为一个向量,其中每个三元组都有一个,其他地方则为零。通过这样做,它可以减少单词向量的维度,同时如论文中所说的那样几乎没有冲突。
我的困惑是,通常如果我们使用词袋表示来表示基于 one-hot 表示的文档,我们只计算每个单词的出现次数。但是我可以想象,如果我们使用基于字母三元组的词袋,很容易会有不同的词共享共同的模式,因此通过这种表示来恢复文档中哪些词的信息似乎很困难。
我理解正确吗?这个问题是如何解决的?或者论文中的查询/标题实验并不重要?
解决方案
但是我可以想象,如果我们使用基于字母三元组的词袋,很容易会有不同的词共享共同的模式,因此通过这种表示来恢复文档中哪些词的信息似乎很困难。
这是正确的,因为该模型并没有明确旨在通过使用来自单词的信息来学习后验概率。相反,它使用来自三元组的信息。
这个问题是如何解决的?或者论文中的查询/标题实验并不重要?
这个问题可以通过添加一个 CNN/LSTM 层来表示来自 trigram 输入的更高(接近于单词)抽象来解决。本文报告的研究在三元组输入之上使用了 CNN,如下所示。
推荐阅读
- html - 将 UL 的宽度与输入(过滤器)的宽度对齐
- javascript - HTML 输入值中的文字引号
- python - Python AwkwardArray:如何定义循环数组?
- javascript - 如何检查 react.js 中的多个复选框?
- sql - SQL JOIN 如何更正使 sql 查询
- javascript - 根据第一个匹配的字符进行连续的前瞻匹配
- javascript - 如何使jQuery淡入/淡出元素平滑移入和移出
- date - 如何在颤动中将 TimeOfDay 格式化为字符串
- c# - 使用 Kingswaysoft 将注释上传到 Dynamics 365
- serial-port - 无法读取保持寄存器 PLC 使用 Pymodbus 串行