所谓的”neural MRF”
“中文 NLP 任务”有个有意思的现象,就是“词向量”和“字向量” 之争:有时候拿字向量作为输入得到的结果最好,有人便解释道“这个任务对词的信息依赖不强,上词向量反而添加噪声”;有时候拿词向量作为输入得到的结果更好,又有人便开始分析表示这是“捕捉到了字与字之间的信息流动”;更多时候是分别训练字向量作输入与词向量作输入的两个模型,再把它们的输出加权平均,这叫做“对模型 ensemble 使性能更好”。在比较完备的语言模型出现后,这种争论才逐渐消失。
我想起一两年前面试某些公司和搜索相关的岗位的时候,发现所有人都不知道什么是 sequential dependence model 或者 Markov random field,并且时常伴随着一种类似便秘的艰难的表情(其实遇到未知的知识不应该兴奋吗,这是在免费送经验,而不是想着“这场子快要压不住了,我的级别受到威胁”),我只好找个理由圆场,比如说“中文的文本都已经做过分词了,不需要这个了,确实不用了,确实不用了”。心里想的却是分词用的大多是 CRF,把分词的部分和搜索的部分拼接起来,和 MRF 的结构没有什么本质的区别。(如果是态度比较顽劣的,像某个要被美国人下令甩卖的公司里有个小白脸一上来就说“听说你是 phd,我要考考你,对你有更高的要求”,我只能表演出一副什么都不会的样子满足他战胜我的愿望,快速结束这场闹剧)
SDM 这种古老的模型知晓原理已属次要,尽管我在香港的时候经常拿来即兴改造让它达到很强的性能,只属自娱自乐。理解 term proximity 这个度量查询的参数比较重要,属于基本功。在业界“做搜索”的人不少是半路出家,从机器学习的工作甚至是前端后端转行而来,做事没有层次感。
回到字向量和词向量这件事上,它们没有任何区别,如果模型中的某个结构碰巧刻画了字与字的条件概率。完备的语言模型构造了复杂的概率图刻画语素的共现性,它们胜过 sequential dependence model 是不言自明的。所有使用 word hashing 的方法同理。