基于会话记录的Word2Vec音乐推荐算法研究*
2019-04-30周航帆周莲英
周航帆,周莲英
(江苏大学 计算机科学与通信工程学院,江苏 镇江 212013)
0 引 言
近年来,流媒体音乐服务在全球市场的强势崛起,越来越多的听众愈加倾向于流媒体服务来欣赏音乐。与此同时,其产生庞大的异构音乐数据无疑超出了听众有限的承受能力。因此个性化音乐推荐帮助用户过滤大量“冗余”音乐,为用户定制个性化听歌模式显得尤为重要。大多数传统推荐算法往往更注重用户的历史兴趣,却忽视了用户短时间内的偏好趋向,而听音乐是一种典型对于短时间内背景环境依赖的行为[1],例如:在锻炼时,人们通常喜欢大声,精力充沛的音乐,休息时享受安静的音乐。随着一系列电子产品的广泛普及,人们可以随时随地的欣赏音乐。但是我们却很难直接获取用户的实时的背景信息。
基于会话记录[2]推荐的提出很好的解决了上文描述的情况,会话记录(session)指的是用户短时间内一连串的交互操作行为,典型场景比如购物车,服务器端为特定的对象创建了一定时间内特定的会话记录,用于标识这个对象,并且跟踪用户的浏览点击行为,可以将其理解为具有局部关系的一些记录序列。然而因为涉及隐私等问题无法直接获得会话数据集,在论文中我们将历史记录数据集以会话分割以及一些预处理方式形成会话记录,关键在于时间戳相隔时间Δt超过30分钟定义成两个不同的会话记录。通过这种形式合理模拟出会话记录,满足本文所需解决问题。
在论文中,提出了一种基于会话记录的Word2Vec音乐推荐算法,可根据用户当前所处背景实时个性化推荐。具体研究思路如下:通过基于负采样(Negative Sampling)加速训练的连续词袋模型(Continuous Bag-of-Words Model,CBOW)学习会话记录中音乐的低维、稠密的词向量。其可描述基于会话记录大数据背景下的音乐内在本质。同时会话记录前驱的词向量均值代表用户,给其推荐处于当前背景下的最相似歌曲。为了验证提出算法的有效性,在会话分割后的Last.fm数据集进行了实验分析。实验结果表明。本文提出基于会话记录的Word2Vec推荐算法效用性明显高于通用推荐算法。意味着用户在短期会话过程中,用户的即时心境受各种因素影响,当前歌曲的播放对用户后续的听歌状态也有着关键的影响,基于会话分割后的即时会话序列更好地捕捉用户心理的细腻变化。
1 相关工作
1.1 个性化音乐推荐
现阶段一般物品所使用的推荐算法都是基于用户的历史记录进行分析,在此基础上给用户推荐其想要的东西,因此基于内容的推荐算法、协同过滤推荐和混合推荐算法等传统推荐算法同样适用于音乐推荐系统。
Kuo等人分析用户播放音乐的节拍和旋律,进一步对利用旋律偏好分类器分类。给用户推荐相似节拍和旋律的歌曲[3]。
于帅等人提出大规模隐式反馈的词向量音乐推荐模型原理类似于协同过滤算法,通过词向量模型挖掘了用户的长期历史偏好,保证推荐效果的同时,模型收敛速度更快,扩展性强[4]。
李博等人将音频特征分析与协同过滤算法相结合,通过基于狄利克雷分布主题挖掘模型(Latent Dirichlet Allocation,LDA)向用户推荐音乐,取得了不错的效果[5]。
但是相较于一般物品推荐,用户在某个时间段内选择的音乐更易反映用户当时的心理状态与需求,且一段时间内播放的音乐之间具备强关联特性。
Karatzoglou A等人将单个用户切分成多个重叠子文件,通过对子文件分析在特定上下文对用户进行推荐,但是仅将一天分为两个时间段,不足以挖掘用户的潜在特征[6]。
Zimdars A等人基于马尔科夫链提出一种序列推荐模型,推荐思想主要依据邻居物品之间的转移概率进行简单的计算[7]。
Wang X等人具体分析不同日常活动下的听歌习惯进而满足用户在不同情境下的听歌偏好[8]。
1.2 词的分布式表示
词的概念通常在自然语言处理任务中,我们需将任务语料转化成数学的形式交给机器学习算法处理。最初词语的表示通过独热编码的方式(One-hot Representation)表达,即对于词典中D中的一个词w,通过一个很长的向量表示,向量长度即词典D的大小N,向量的分量只有一个1,其余全为0,1的位置对应词w在词典中的索引,然而在实际运用中,词典规模大小通常在上万甚至百万,且不断有新词出现,故独热编码方式不可取,总结而言,使用独热编码存在以下缺陷:
(1)无法体现语义或者语法相似词之间的关联性。
(2)随着数据样本的不断增加,向量维度也会增加,从而导致“维度灾难”以及数据稀疏性问题。
于是人们为了能让计算机充分理解语料中各个词自身的含义,以及各词之间的关联,分布式假设概念的提出完美的诠释了这个问题。何为分布式假设,若两个词的上下文内容相似,这两个词具有相似的语义。如今的词表示模型都是以此为基础,1986年,Hindon首次提出分布式表示(Distributed Representation)模型[9],该模型的目的通过训练获得词的固定维度形式表示出来,词维度范围通常在[50,400]之间,远小于独热编码的维度。这种做法大大减少了自然语言处理时的计算量,将原本稀疏的独热编码表示形式压缩嵌入至小维度空间,故又称为词向量或词嵌入。且词与词之间的关联也可以通过余弦相似度衡量,余弦相似度定义:
词的分布式表示具有以下优势:
(1)通过无监督学习模型充分反映词的隐式特性。
(2)以低维、紧密的向量表示,捕捉语义或者语法之间的关联信息。
词的分布式表示特性具有重大意义,具备代表性的词向量模型如下所示:
Bengio提出神经概率语言模型(Neural Probabilistic Language Model,NPLM),模型主要思想即通过词上下文预测该词,但是其非线性隐层以及最后的softmax层导致模型训练大型语料库时非常耗时[10]。
谷歌Mikolov团队基于NPLM进一步改进并于2013年开源了Word2Vec框架,去除了NNLM最耗时的非线性隐层且所有词共享,可以快速有效的训练词向量[11]。
2 基于会话记录的Word2Vec音乐模型搭建
2.1 问题的形式化定义
基于用户会话记录的音乐推荐问题形式化定义如下。令U={u1,u2,…,um}表示用户集合,M={m1,m2,…,mn}表示音乐集合,用户u历史听歌记录中存在x条会话记录表示为H会话记录具体可表示为当前时段播放音乐构成的集合其中会话记录由会话前驱和目标歌曲两部分组成,目的就是给定会话记录Su中前驱内容,预测下一首音乐是否存在于推荐列表中,换句话说,推荐结果是否符合用户期望,论文问题的求解通过CBOW模型训练完后,获得输入层至投影层权重矩阵即为每个词的词向量。用户向量取其会话前驱音乐词向量均值,衡量用户词向量与曲库中歌曲词向量余弦相似度,给其推荐K首最易被用户接受的歌曲。图1为用户-歌曲空间嵌入模型示意图。
图1 用户-歌曲空间嵌入示意
2.2 基于会话记录的音乐词向量建模
Word2vec是一种神经网络模型,起初用于学习各种自然语言的实数向量表示形式。最近几年,这项技术被更广泛地用到其他机器学习问题上,如产品推荐。神经网络分析输入的文本语料库,对词汇表中的每个单词生成代表这个单词的向量。这些向量数字就是我们所需要的,因为这些向量编码了词义与上下文的关系这一重要信息,其中定义了两个主要模型:连续词袋模型(Continuous Bagof-Words Model,CBOW)和跳字模型(Continuous Skip-gram Model,Skip-gram),CBOW模型假设基于某中心词在文本序列前后的背景词生成该中心词,Skip-gram模型假设基于某个词生成它在文本序列周围的词。
由于在局部时间段内,用户偏好稳定。我们可以认为会话记录内一系列的歌曲具有一定的相似性,而CBOW模型恰好可以让用户当前时刻听的音乐与其上下文内容紧密关联,通过学习用户会话记录中心词与上下文的关联信息,得到音乐低维,稠密的分布式向量表示,即会话记录中各种因素综合影响下的特征表示。基于会话记录的音乐词向量训练模型如图2所示。我们对会话记录进行建模,从而通过CBOW模型训练学习出音乐在会话环境背景影响下的属性表达,每一首音乐可通过唯一的属性特征向量进行表达,其中特征向量的每一个取值都表征着音乐的该属性对于音乐的贡献程度。
图2 基于会话记录的音乐词向量模型
2.3 音乐词向量提取理论推导
我们将会话记录看作Word2Vec处理文本时的一个句子,将其中的每一首音乐类比句中的每一个词。给定一个会话序列S={m1,m2,…,mT},会话中每个时间戳对应的音乐为mt,背景窗口大小设置为w。构造CBOW模型的目标函数,目的是最大化会话序列中的背景词生成任一中心词的概率:
设vi∈Rd和ui∈Rd分别表示音乐词典中索引为i的音乐作为背景词和中心词的向量,设中心词mc在词典中的索引为c,背景词mo1,…,mo2w在词典中的索引为o1,…,o2w,给定背景词生成中心词的条件概率为:
从式(3)分母可以看出,softmax运算取决于音乐词典规模,对于一个成熟的音乐系统,音乐规模量级通常达到百万级别,每一步的梯度计算都包含了词典规模项累加,计算开销难以承受,为了减少计算开销,本文选用负采样(Negative Sampling)近似训练,即使用一个二分类激活函数sigmoid在同一个上下文背景中从neg(m)个虚构的噪声词中区分出真正的中心词,论文中正例只有中心词mc一个,负例服从噪声词分布P(m),随机生成neg(m)个非中心词的其余词,词频越高被选为噪声词的概率越大,那么采样词p∈mc∪neg(m),在该二分类器中,当给定背景词对应正例(中心词)标记为正样本D(p)=1,当给定背景词对应负例(噪声词)标记为负样本D(p)=0,模型优化目的即最大化预测准确中心词的概率,同时最小化预测出噪声词的概率。条件概率被近似表示为:
将式(4)取log值代入式(2),负采样后单个会话记录的损失函数为:
通过式(5)明显发现计算开销由O(|M|)降至O(|neg(m)|),其中neg(m)<<M,近似训练的同时,大幅度提升计算效率。将式(5)中(vo1+…+vo2w)/2w简记为,大括号内容记作L(u,),即:p
下面我们给出基于Negative Sampling的CBOW模型音乐词向量更新伪代码:
Step1∶neule=0
当损失函数值收敛,结束权重迭代,算法结束。
3 实验及分析
3.1 数据集
本文实验采用Last.fm Dataset-1k users音乐数据集(http∶//www.last.fm),该数据集收集了992个用户的19 150 868条收听记录,其中包含<user,timestamp,artist,song>四元组,同时Last.fm也提供了开放接口Last.fm API方便获取用户近期播放记录,具体数据集参数见表1。
表1 Last.fm Dataset-1k users数据集
3.2 会话分割及会话记录预处理
实验中将时间戳相隔时间Δt超过30 min(1 800 s)定义成两个不同的会话记录。同时为了减少原始数据中的噪声信息对数据做了必要的预处理操作,主要包括下面三点:
(1)推荐系统目的预测相似并非相同,重复推荐导致推荐新颖度降低,本文实验中仅将会话记录中连续重复歌曲当作一首歌曲。
(2)去除会话记录小于5首,会话记录超过40首,即去除短序列会防止用户误操作,去除过长序列防止播放器未关闭。
(3)设置会话记录长度L最长为20首,当会话记录20<L≤40时,分割成两个序列,分割长序列的目的因为20首以后的歌曲与前文歌曲依赖性降低。
经过会话分割以及预处理过后,会话记录规模大小为849 302,单个用户交互历史过程中产生的会话记录约864.9,平均每条会话记录中约有12.3首歌曲。
3.3 实验设计
为了符合真实情景,我们将每个用户的会话记录以7∶1∶2的比例分成训练集、验证集和测试集三部分,若用户的历史记录中共存在10个会话记录,按时间戳顺序,将其前7个作为训练集拟合模型,后1个验证模型拟合度,最后2个测试模型推荐效果,本文实验在安装了操作系统Ubuntu 16.04的个人计算机上进行,具体计算机硬件配置如表2所示。
表2 硬件环境配置参数
3.4 实验结果度量标准
F测度(F1-Score):综合正确率(Precision)和召回率(Recall)评估指标,反映推荐算法整体性能,论文通过对F测度评估合理选择模型最佳参数。
因为本文推荐任务较特殊,引入平均倒数排名指数,以下做简单介绍。
平均倒数排名指数(Mean Reciprocal Rank,MRR):将标准答案位于推荐列表中的具体位置作为推荐效果评估准则。衡量模型推荐效用性,用户最终在推荐列表中点击的音乐排名越靠前,模型效用性越高。
其中,|Q|表示推荐列表集合数量,ranki表示用户在第i个推荐列表中用户第一个点击物品所在推荐列表位置。
3.5 实验结果分析
实验一:词向量模型在不同窗口大小和维度大小下,评估F测度。论文选用Top-K推荐方式,在本次实验中K取值为5。针对窗口大小w取值对于F测度影响做了实验,固定维度大小为100,窗口取值w取值分别为2、4、6、8、10。图3横轴表示窗口取值,纵轴表示F1测度。
图3 不同窗口取值对于F测度的影响
从图3可以看出,当窗口取值较小时,窗口内的歌曲量过少,然而实际情况是中心歌曲很可能与窗口外歌曲仍具有联系,却未参与训练过程之中,推荐准确性较低。当窗口取值过大时,包含了中心歌曲周围更多的歌曲,会话记录中播放间隔较长的两首歌曲之间的关联已慢慢减弱,虽会话记录已经过处理,但合理的窗口取值在仍对推荐算法具有一定意义。
针对投影层维度N取值对于F测度影响做了实验,固定窗口大小为6,维度N取值分别为50、75、100、125、150、175、200、225、250、275、300。图4横轴表示维度取值,纵轴表示F1测度。
图4 不同维度取值对于F测度的影响
从图4可以看出,当选择的维度较小时,词向量不足以表征歌曲的所有信息,逐渐加大维度,推荐准确率显著提升,当维度达到150时,准确率上升幅度大幅减缓,然而当维度选择过高时,反而出现下降趋势,歌曲属性通过大量神经元时表征反而显得过于稀疏,且大幅度提升模型计算复杂度。
随机抽取100首音乐经过t-SNE将词向量降至2维,可视化效果图如图5所示,直观的可以观察到相似‘语义’的歌曲在二维空间中紧密相连。
图5 t-SNE降维可视化效果
图5 中可以观察到,同一艺术家的音乐作品在空间中的分布更加靠近,如Queens of the Stone Age创作的《In My Head》,《Little Sister》,《Go With the Flow》,《No One Knows》紧紧挨在一块。查看last.fm标签信息发现,这四首歌曲共有标签包括stonerrock、alternativerock、fip等,标签具有很高的重合度,同时分析每首歌每分钟的节拍数,通过BPM测试软件(MixMeister BPM Analyzer)自动分析每首歌的歌曲速率,发现BPM值分别为134、176、162、85,都属于中快类型节奏的歌曲,说明歌曲之间相似性也可以从节奏节拍反映出来。
实验二:为了验证基于会话分割后Word2Vec推荐算法的效用性,推荐序列长度K值取5、10、15、20,与以下基准方法进行实验对比:
Session-pop:推荐当前会话中最受欢迎的物品。
Item-based CF:根据用户选择物品的历史行为,通过评估用户之前选择的物品与待推荐物品间的相似度来给用户推荐物品。该算法首先计算物品之间的相似度,其次通过物品的相似度和用户的历史行为生成推荐物品的列表。
贝叶斯个性化排序算法(Bayesian Personalized Ranking-Matrix Factorization,BPR-MF):BPR-MF方法为BPR模型与矩阵分解模型的结合,融合了用户或物品的属性,该模型较好地解决冷启动问题。其通过梯度下降法优化了一个pairwise的排序目标函数。一般来说,由于新会话中缺少隐藏向量的表示,所以矩阵分解方法只能通过间接的方法应用于基于会话的推荐任务中,如用当前长度会话中物品隐藏因子向量的平均值来表示新会话。通过这种方法,最后的推荐分值可以由候选物品的隐藏因子和会话中每个物品的隐藏因子的相似度来表示。
经图6发现,论文提出的session-Word2Vec在效用性方面取得不错的效果,随着推荐列表取值的增加,效用值MRR也逐渐增长,而后趋于平缓,当推荐列表取值为5时,列表直接命中用户喜欢的物品概率较低,即使命中也有可能物品处于此推荐列表靠后的位置,所以MRR值较低。推荐列表取值为20时,列表中直接命中物品的概率增加。推荐列表长度再增加时,ranki值增加,用户可能并不会对过长推荐列表中位置靠后的物品感兴趣,所以MRR值趋于平缓。
图6 不同推荐算法的效用性
4 结 语
论文提出Word2Vec结合会话记录中的上下文信息学习出每首歌曲的词向量强化了短期行为关联性对于推荐效果的影响,不仅适用于时间,同样也适用于地点、职业、爱好等具有范围特征的推荐算法,然而本文仍然存在以下两点不足:
(1)短期推荐并不是完全否定长期推荐,相反,结合用户长期的历史行为特征更有利于精准挖掘用户的听歌偏好。
(2)从Word2Vec模型架构上明显发现输入样本之间没有连接,意味着音乐之间没有考虑到序列信息,对于存在连贯性和次序性特征的音乐序列可做进一步研究。