2017年就这么悄无声息地过去了。在工业界,2016年是推荐的元年,2017年是中国的AI元年,这意味着路漫漫其修远兮~,而学术界往往会超前于工业界,有些时候难免会一厢情愿。过去的一年在nlp领域里,知识图谱的发展是最为耀眼的,最为尴尬的仍然是chatbot的多轮对话。知识图谱底层更高于RDF层次的语言被提出并进行研究中,而学术界的玩票现象并没有终止,比如在nlp领域里研究GAN,强化学习等等,全都是扯淡,玩票儿……chatbot的对话策略以及评价标准目前工业界仍然茫然~
nlp的核心是语义理解,语义理解,一方面要有更加丰富的,灵活的,自适应能力强的语义表示,另一方面,又要有好的理解用户对话的策略,完全依赖某一种技术手段,比如无限夸大深度学习是不切实际的的天真想法。在语义理解方面,历来都是归纳总结能力和演绎推理能力结合,也就是深度学习和知识图谱,语言规则,对话策略,状态结合起来。因为语言属于认知层面,要高于图像和语音的感知层面。本人相信,在语义理解方面,单纯依靠联结主义,很快就会遇到天花板(已经遇到了),这也是近几年知识图谱,多轮对话的状态跟踪,上下文建模越来越重要的原因。前面提到的第一方面,其实就是用深度学习学习语言的语义向量表示,不同的是,我提出了丰富,灵活和自适应这些关键性的词语。有什么不同呢,下文会有详细论述。关于第二方面,由于本人刚接触,不敢妄加评论,本paper主要论述第一方面,接下来进入重点。
关于第一方面,语义表示,获取到它之后做相似度运算是nlp里经常遇到的场景,我就把他作为切入点。语义表示,我个人有一条主线:词语——>句子——>文章。先说词语,词语是一句话的基本单元,每个词语对句子的语义贡献度是不同的,很多词语有歧义现象,个别词语是不常见词,每个词语在句子中都有固定的位置和顺序,词语与词语之间存在着近义,反义和不相关的关系。联结主义如何捕捉到这些特性是词语语义表示的研究方向!如果能捕捉到这些特性,将大大增加语义理解能力,这点是毋庸置疑的。我们先说一下著名的word2vector,看看他捕捉到了哪些特性,看看他有哪些缺陷,如何寻求改进。首先可以肯定的是,w2v解决了词语之间的近义,反义问题,但是并不完美。解决词语之间的关系,主要依靠上下文,每个词语的语义,与他的上下文概率分布是对应的,这是word2vector成功的地方,同时也是他失败的地方:①对于多义词,他的上下文概率分布是多个,不是单一的,而word2vector的建模,显然是hard的②在建模时没有考虑到上下文的顺序,比如A:谢霆锋的爸爸是谁?B:谢霆锋是谁的爸爸?这两句中的爸爸是不同的含义,w2v是无能为力的。除此之外,词语的语义平滑处理,增加自适应能力也是必要的。另外,在训练过程中,由于语料分布的不均匀性,必然会出现语义倾斜问题,这是不可抗拒的因素(在机器学习训练中,数据倾斜是常见的现象)。基于以上问题,提出以下改进方案:①用高斯混合分布改进w2v的建模,让获取的词语向量表示能够做到上下文交叉②基于第一点,在此基础上融合TF_IDF思想,进行语义平滑处理,并且在有必要的情况下进行降维处理,注意,我这里强调的是必要的情况下,也就是不是必须的,看场景,因为在情感分析中,他不是必须的③关于上下文的顺序问题,目前还只能与RNN结合,并没有成型的方案出来。以前在多义词的理解上,更多的是用CRF进行序列化识别,大量依赖人工语义标注,如果能在语义表示上获得突破,实现非监督学习的预测,是最佳的。比如苹果这个词,他可能是电脑,手机,logo等等。如果在一句话中,比如我想吃苹果,用高斯混合分布模型做出的w2v就可以捕捉到苹果的多个上下文的概率分布,吃是它的上文,这么简短的句子,把他的上文吃和苹果本身累加起来就可以了,不用全部累加,然后与电脑,水果,手机的词的embedding做元积,运用非监督学习的方法就可以识别出来他的语义了。这是本人理论上的猜想,2018年将重点攻破这个难题。另外一方面,过去一年SIF的提出,有可借鉴的地方,用非监督学习方法做句子的语义表示,下面我们来说说句子语义表示。
关于句子的语义表示,大多是监督学习方法,而SIF是非监督学习方法。仍然以A:谢霆锋的爸爸是谁?B:谢霆锋是谁的爸爸?为例,如果用SIF做相似度运算的话,这两句话的语义是相同的,是不是很失败?没错,任何一个算法都有他的缺陷和适用场景!对于初学者来说,对于算法的理解,前期可能更加关注于公式推导上面,其实他不是算法的核心。本人认为,一个算法的提出,一定是先有场景和需求,或者是前面的算法有改进的空间。场景高于算法这点是毋庸置疑的。因为SIF仍然依赖于w2v,也就是说SIF改进w2v的同时也继承了他的缺点,呵呵。对于词语上下文的顺序,目前只能依赖于RNN。RNN模型里,最著名的就是LSTM和BiLSTM了,他的性能瓶颈是句子长度超过30步以后,记忆能力直线下降,原因是大家都会的BPTT。也就是LSTM只是缓解了RNN的记忆消失问题,没有从根本上解决,因为这个东西无法根本解决。人在阅读长文本的时候,也存在记忆消失,这是正常现象。说到这里,很多人想到了attention model,没错!过去一年,谷歌发布了Attention is all you need的paper,并且开源了代码,关于Hierarchical attention的paper,dual global and local attention的研究都是热点。在情感分析,个性化推荐,摘要领域里大放异彩。注意力的对齐模型的改进,进展也很迅速。global 和local attention分别捕捉句子的全局特征的局部特征,在语义理解方面是非常必要的。比如A用户购买一条裙子后,发布了评论:整体情况还是可以的,虽然这条裙子有点儿小瑕疵,但是,我很喜欢她的颜色,感觉特别温暖。然后给了4分。接下来,B用户也买了同样的裙子,评论:这条裙子穿起来特别舒服,真心喜欢它的布料,摸起来超好。然后也给了4分。大家有没有注意到,前面提到2016年才是中国的搜索推荐元年,为什么这么晚?之前的传统的基于内容的推荐,基于协同过滤的算法,FP_GROWTH增长树,ALS矩阵分解等等算法,都无法真正做到个性化。why?目前的国内的个性化推荐,还很初级,挑战还是很大的。我说一下我个人对个性化的看法。
关于个性化,我个人的理解是,比如A和B同时喜欢一个视频,A用户是喜欢它里面的插曲,比如莲花争霸里面的笑红尘,B用户喜欢里面的孙二娘的妹妹,长得漂亮。如果你用传统的算法, 捕捉到了用户浏览过这个视频很多次,然后就天真地认为用户喜欢武侠视频,给他疯狂地推荐这种类型的视频,我想用户是崩溃的,即使用户有了类似于上面的评论,你做情感分析预测,如果不能捕捉句子语义的多个维度,也是失败的。why?很多用户使用了今日头条时间久了都疲乏了,感觉推荐的东西都不太适合。现在我要正式地阐述一下本人对个性的理解:1.推荐的本质是用户特征和商品特征的语义相似度问题,没错,我把它归类于nlp中的语义相似度范畴,而并不是粗糙地分类问题。2.既然是语义相似度问题,如何捕捉到两者的特征是关键,这关系到个性化。所谓个性化,本人认为,因为用户是活人,不是死的,其兴趣必然会变化,而且个人喜好不同,就像上面的,A打4分,B用户也打4分,但是明显B用户非常喜欢那条裙子。个性化就是要捕捉到:①时序性:用户的兴趣变化②个人习惯特征:差异化。如果在特征抽取时把这两点结合起来,分别得到用户和商品的语义表示,做到动态变化的模型,然后做语义相似度运算,效果一定高于传统的cf。比如前面提到的是视频,如果能做到针对不同的用户,抽取出不同的局部特征,比如A用户喜欢里面的插曲,B用户喜欢里面的演员颜值,还有虽然都是打4分,但是情感倾向明显不同。这些问题,现有的技术可以尝试和解决,只不过需要方案和技术整合。
再回到句子的语义表示问题,有了这些表示,接下来可以进行语义相似度运算了。过去一年,SIF和siamese lstm表现优异。先说场景:我们做句子语义相似度运算,达到的效果是相似度为85%,91%等等,并不是粗糙地分类为0和1这么简单!因此convnet,DSSM等根本达不到我的要求,不能达到 state of the art。去年在siamese lstm的实验里,这个模型的核心是需要保留的,但还是有些粗糙,需要引入attention model(self_attention),进一步提升语义理解的能力,不做详细论述了。
下面到篇章的语义。过去一年,文章摘要的研究进展缓慢一些,之前本人提出的方案为siamese lstm + hierarchical attention,本质为:①上下文压缩②语义相似度运算。这是典型的抽取式的摘要。但实际上,有很多机器写作的需求,比如代替人工写新闻,咨询。或者是复述,这都属于生成式的摘要。而本人的研究方向为两者结合。对于一些相对较短的新闻资讯,抽取式的可以满足,而且目前抽取式的比生成式的容易一些,准确率也高。
以上是对语义表示的简单总结,语义理解除了语义表示和相似度运算外,今后更多的场景是与知识图谱融合,与语言逻辑结合,依赖多轮对话,slot填充策略,DST,DM,这也是今年的研究重点。总结起来,今年要做的研究:①个性化推荐的突破②高斯混合分布的w2v模型改进,非监督学习的语义理解③抽取式的和生成式的摘要结合。在自然语言生成这块儿,重点突破seq2seq生成语句的可读性。
语义理解是复杂的,是一个完整的生态圈儿,需要研发平台级别的,而不是简简单单一个音箱之类的。这意味着,做产品的AI创业公司,是游走在边缘的,很容易被淘汰。好了,到此为止,不多说了。
下篇博客,深入细化语义理解:http://blog.csdn.net/randy_01/article/details/79367590