最近被来自Google AI Language的BERT语言模型刷屏,BERT效果也的确好,我趁公司Hackathon活动,研究了一把BERT,研究BERT是否可以用到推荐系统上面,大家或许会有些疑惑,这是语言模型,怎么可以用到八杆子打不着的推荐系统上面。这篇文章并不想细致地讨论BERT的优势演变之类的话题,如果你有兴趣,来自张俊林的一篇文章[1]把BERT讲解得非常好。当前这篇文章用来总结最近对语言模型和推荐系统思考,想从一个更高层面的视野来看神奇Embedding。
神奇的Embedding
神奇的Embedding在各个领域问题当中都有应用
物品搜索:Airbnb在搜索排序当中利用Embedding[2],此方法最早发表在KDD,题为Real-time Personalization using Embeddings for Search Ranking at Airbnb,也可以参考知乎的一篇论文解读文章[3]。
自然语言处理:我们都知道,机器学习不能直接处理人类语言,需要将其转换成向量才能处理。自然语言处理当中最基础的问题之一是如何用向量表示一句话,最经典的是Bag of Words模型,之后Google推出了Word2Vec模型,可以将语义相近的词映射到向量空间中相近的位置,比如说Girl和Lady的词向量距离会比较近,之后Google提出BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding,BERT可以考虑到相同词在不同位置会有不同含义等信息,利用这个新的语言模型刷新了问答、文本情感分析等多个语言任务的表现。更详细的语言模型的演化过程可以参见,张俊林的知乎文章[1]。
推荐:矩阵分解技术就是学习物品和用户各自的Embedding,相关的文章有Matrix Factorization Techniques for Recommender Systems[4],这个模型获得了2006年NETFLIX大赛的冠军之后大火,另外继Word2Vec大火之后,有人将其思路应用于推荐系统,出现了Item2Vec[5]。Word2Vec在某种程度上和Matrix Factorization的本质是相同的[6, 7]。
更多例子:Facebook提出Embed All The Things![8],表示可以对任何东西都生成其Embedding,并开源了StartSpace[9]。任何可以形成网络结构的东西,都可以有Embedding的表示,Chih-Ming Chen等人[10]把相关的文章罗列出来,非常有参考价值。
自然语言处理:Word2Vec利用词与词之间是否在一个句子当中出现等关系网络,提取词的Embedding表示,来获取词的更多特征,提升各类自然语言处理的表现。Bag of Words模型则只利用了词自有的特征。对于最新的BERT模型,在某种层面上相比于Word2Vec的无向网络,则考虑了词与词之间的有向网络,虽然BERT模型与网络当中的Embedding表示理论没有很显然的关系,但是我总觉得往这个方向思考的确会有一些成果。