CN108197327A - 歌曲推荐方法、装置及存储介质 - Google Patents
歌曲推荐方法、装置及存储介质 Download PDFInfo
- Publication number
- CN108197327A CN108197327A CN201810121493.2A CN201810121493A CN108197327A CN 108197327 A CN108197327 A CN 108197327A CN 201810121493 A CN201810121493 A CN 201810121493A CN 108197327 A CN108197327 A CN 108197327A
- Authority
- CN
- China
- Prior art keywords
- song
- sequence
- mask
- history
- hidden layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/60—Information retrieval; Database structures therefor; File system structures therefor of audio data
- G06F16/63—Querying
- G06F16/635—Filtering based on additional data, e.g. user or group profiles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/243—Classification techniques relating to the number of classes
- G06F18/24323—Tree-organised classifiers
Abstract
本发明公开了一种歌曲推荐方法、装置及存储介质,属于信息推荐领域。该方法包括:获取智能终端上的触摸操作对应的听歌行为;根据听歌行为,获取歌曲序列信息;将歌曲序列信息作为指定RNN模型的输入,通过指定RNN模型确定多个候选歌曲标识中推荐概率最大的候选歌曲标识,该指定RNN模型是基于历史听歌序列对待训练RNN模型进行训练得到;将推荐概率最大的候选歌曲标识对应的歌曲确定为推荐歌曲,对推荐歌曲进行推荐。由于指定RNN模型能够基于历史听歌序列挖掘出用户听歌过程中的兴趣变化规律,因此基于用户的最近听歌行为和该指定RNN模型推荐的歌曲能够更加符合用户当前的兴趣变化和听歌需求,提高了歌曲推荐的准确度。
Description
技术领域
本发明实施例涉及信息推荐领域,特别涉及一种歌曲推荐方法、装置及存储介质。
背景技术
目前,为了满足用户的听歌需求,音乐平台通常需要根据用户的听歌偏好,向用户推荐感兴趣的歌曲。
相关技术中,提供了一种歌曲推荐方法,包括:获取用户的长期历史听歌数据,根据用户的长期历史听歌数据,通过RBM(Restricted Boltzmann Machines,受限玻尔兹曼机)或LFM(latent factor model,隐语义模型)等典型的协同过滤方法深度挖掘用户的听歌偏好,根据用户的听歌偏好对存储的所有歌曲进行评分,按照评分从大到小的顺序对所有歌曲进行排序,将排序结果中的前N个歌曲确定为推荐歌曲,N为需要推荐的歌曲数目,然后对推荐歌曲进行推荐。
在典型的协同过滤方法中,长期历史听歌数据中的每首歌曲对用户的听歌偏好的影响相同,因此仅能将长期历史听歌数据作为一个整体挖掘出用户的长期听歌偏好,但是在实际听歌场景中,用户的听歌时间通常比较分散,且每次听歌受环境和心情的影响因素较大,因此根据长期听歌偏好为用户推荐的歌曲可能不符合用户当前的听歌需求,导致歌曲推荐的准确度较低。
发明内容
为了解决相关技术中存在的根据长期听歌偏好为用户推荐的歌曲可能不符合用户当前的听歌需求,导致歌曲推荐的准确度较低的问题,本发明实施例提供了一种歌曲推荐方法、装置及存储介质。所述技术方案如下:
第一方面,提供了一种歌曲推荐方法,所述方法应用于智能终端,所述方法包括:
检测所述智能终端上的触摸操作;
获取所述触摸操作对应的听歌行为;
根据所述听歌行为,获取歌曲序列信息,所述歌曲序列信息是指当前时刻和当前时刻之前且在阈值时间范围内的听歌行为所对应的歌曲信息;
将所述歌曲序列信息作为指定RNN模型的输入,通过所述指定RNN模型确定多个候选歌曲标识中推荐概率最大的候选歌曲标识,所述推荐概率用于指示候选歌曲标识对应的歌曲为推荐歌曲的概率,所述指定RNN模型是基于历史听歌序列对待训练RNN模型进行训练得到,所述历史听歌序列是由历史上连续播放的多个歌曲的歌曲信息按照歌曲播放的先后顺序组合得到;
将所述推荐概率最大的候选歌曲标识对应的歌曲确定为推荐歌曲,对所述推荐歌曲进行推荐。
可选地,所述歌曲信息包括歌曲属性、播放时长和听歌操作信息,听歌操作包括收藏操作、下载操作、切歌操作或删除操作。
可选地,所述指定RNN模型包括第一输入层、第一隐藏层和第一输出层,所述第一输出层设置有所述多个候选歌曲标识;
所述通过所述指定RNN模型确定多个候选歌曲标识中推荐概率最大的候选歌曲标识,包括:
当所述第一输出层为二叉树输出层时,基于所述歌曲序列信息,通过所述第一输入层和所述第一隐藏层确定得到隐藏层输出数据;基于所述隐藏层输出数据,通过所述二叉树输出层确定得到指定推荐概率,所述指定推荐概率为所述多个候选歌曲标识的推荐概率中的最大推荐概率;将所述指定推荐概率对应的候选歌曲标识确定为所述推荐概率最大的候选歌曲标识;
当所述第一输出层为非二叉树输出层时,基于所述歌曲序列信息,通过所述第一输入层和所述第一隐藏层确定得到隐藏层输出数据;基于所述隐藏层输出数据,通过所述非二叉树输出层确定得到所述多个候选歌曲标识的推荐概率;基于所述多个候选歌曲标识的推荐概率,从所述多个候选歌曲标识中确定所述推荐概率最大的候选歌曲标识。
可选地,所述将所述推荐概率最大的候选歌曲标识对应的歌曲确定为推荐歌曲,包括:
当所述推荐概率最大的候选歌曲标识为候选歌曲标签时,将所述候选歌曲标签指示的歌曲确定为所述推荐歌曲;
当所述推荐概率最大的候选歌曲标识为候选歌曲流派标签时,确定所述候选歌曲流派标签指示的候选歌曲流派所包括的歌曲,基于所述候选歌曲流派所包括的歌曲确定所述推荐歌曲。
可选地,所述指定RNN模型为长短期记忆LSTM网络模型或者门控递归单元GRU网络模型。
可选地,所述通过所述指定RNN模型确定多个候选歌曲标识中推荐概率最大的候选歌曲标识之前,还包括:
获取所述历史听歌序列,所述历史听歌序列中的每个歌曲设置有样本标记,所述样本标记由对应歌曲的歌曲信息确定得到;
其中,所述样本标记为正样本标记或负样本标记,所述正样本标记用于指示对应歌曲为感兴趣歌曲,所述负样本标记用于指示对应歌曲为不感兴趣歌曲;
基于所述历史听歌序列,按照序列顺序对待训练RNN模型进行训练,得到所述指定RNN模型。
可选地,所述获取所述历史听歌序列,包括:
获取历史上连续播放的多个歌曲的歌曲信息;
基于所述多个歌曲中每个歌曲的歌曲信息,为每个歌曲设置样本标记;
将所述多个歌曲的歌曲信息和样本标记按照歌曲播放的先后顺序进行序列组合,得到所述历史听歌序列。
可选地,所述历史听歌序列中的每个歌曲的歌曲信息包括歌曲属性、播放时长和听歌操作信息;
所述基于所述多个歌曲中每个歌曲的歌曲信息,为每个歌曲的歌曲信息设置样本标记,包括:
对于所述历史听歌序列中的任一歌曲A,当所述歌曲A的播放时长大于或等于预设时长,和/或,所述歌曲A的听歌操作信息指示对所述歌曲A进行了收藏操作或下载操作时,为所述歌曲A设置正样本标记;
当所述歌曲A的播放时长小于预设时长,和/或,所述歌曲A的听歌操作信息指示对所述歌曲A进行了切歌操作或删除操作时,为所述歌曲A设置负样本标记。
可选地,所述基于所述历史听歌序列,按照序列顺序对待训练RNN模型进行训练,得到所述指定RNN模型,包括:
当所述历史听歌序列包括多个历史听歌子序列,且所述多个历史听歌子序列的序列长度不同时,从所述多个历史听歌子序列中选择序列长度最长的历史听歌子序列,每个历史听歌子序列的序列长度用于指示对应历史听歌子序列包括的歌曲数目;
按照选择的历史听歌子序列的序列长度,基于空白歌曲对其他历史听歌子序列进行序列补齐,以使所述多个历史听歌子序列的序列长度相等;
将序列补齐后的每个历史听歌子序列中的空白歌曲的掩码设置为第一预设值,其他歌曲的掩码设置为第二预设值;
基于序列补齐后的所述多个历史听歌子序列和序列补齐后的各个历史听歌子序列中每个歌曲的掩码,按照序列顺序并行对待训练RNN模型进行训练,得到所述指定RNN模型。
可选地,所述待训练RNN模型包括第二输入层、第二隐藏层和第二输出层;
所述基于序列补齐后的所述多个历史听歌子序列和序列补齐后的各个历史听歌子序列中每个歌曲的掩码,按照序列顺序并行对待训练RNN模型进行训练,包括:
对于序列补齐后的所述多个历史听歌子序列中的任一历史听歌子序列A,从所述历史听歌子序列A中选择出一个歌曲,对选择出的歌曲执行以下处理,直至处理完所述历史听歌子序列A中的最后一个歌曲的上一个歌曲为止:
基于上一处理过程中得到的掩码状态数据和掩码输出数据,以及所述选择出的歌曲的歌曲信息和掩码,通过所述第二输入层和所述第二隐藏层确定得到所述第二隐藏层在当前处理过程中的掩码状态数据和掩码输出数据,所述上一处理过程是指对所述历史听歌子序列A中所述选择出的歌曲的上一个歌曲进行处理的过程;
其中,当所述选择出的歌曲为所述历史听歌子序列A中的第一个歌曲时,所述上一处理过程中得到的掩码状态数据和掩码输出数据分别为预设的初始状态数据和初始输出数据;
基于所述第二隐藏层在当前处理过程中的掩码输出数据和所述历史听歌子序列A中所述选择出的歌曲的下一个歌曲的歌曲信息,通过所述第二输出层确定所述选择出的歌曲对应的目标函数,所述目标函数用于对所述待训练RNN模型的模型参数进行调整;
当通过上述处理得到所述历史听歌子序列A中除所述最后一个歌曲之外的每个歌曲对应的目标函数时,基于所述历史听歌子序列A中除所述最后一个歌曲之外的每个歌曲对应的目标函数,确定所述历史听歌子序列A的目标函数;
当确定得到每个历史听歌子序列的目标函数时,基于每个历史听歌子序列的目标函数对所述待训练RNN模型进行调整,得到所述指定RNN模型。
可选地,所述基于上一处理过程中得到的掩码状态数据和掩码输出数据,以及所述选择出的歌曲的歌曲信息和掩码,通过所述第二输入层和所述第二隐藏层确定得到所述第二隐藏层在当前处理过程中的掩码状态数据和掩码输出数据,包括:
基于所述上一处理过程中得到的掩码状态数据和掩码输出数据,以及所述选择出的歌曲的歌曲信息,通过所述第二输入层和所述第二隐藏层确定所述第二隐藏层在当前处理过程中的实际状态数据;
基于所述选择出的歌曲的掩码、所述第二隐藏层在当前处理过程中的实际状态数据、所述上一处理过程中得到的掩码状态数据,确定所述第二隐藏层在当前处理过程中的掩码状态数据;
基于所述第二隐藏层在当前处理过程中的掩码状态数据,确定所述第二隐藏层在当前处理过程中的实际输出数据;
基于所述选择出的歌曲的掩码、所述第二隐藏层在当前处理过程中的实际输出数据、所述上一处理过程中得到的掩码输出数据,确定所述第二隐藏层在当前处理过程中的掩码输出数据。
可选地,所述第一预设值为0,第二预设值为1;
所述基于所述选择出的歌曲的掩码、所述第二隐藏层在当前处理过程中的实际状态数据、所述上一处理过程中得到的掩码状态数据,确定所述第二隐藏层在当前处理过程中的掩码状态数据,包括:
基于所述选择出的歌曲的掩码、所述第二隐藏层在当前处理过程中的实际状态数据、所述上一处理过程中得到的掩码状态数据,采用如下公式(1)确定所述第二隐藏层在当前处理过程中的掩码状态数据:
c′T=mask*cT+(1-mask)*c′T-1 (1)
其中,所述T是指所述当前处理过程,所述T-1是指所述上一处理过程,所述c′T和所述cT分别为所述第二隐藏层在当前处理过程中的掩码状态数据和实际状态数据,所述mask为所述选择出的歌曲的掩码,所述c′T-1为所述上一处理过程中得到的掩码状态数据。
可选地,所述第一预设值为0,第二预设值为1;
所述基于所述选择出的歌曲的掩码、所述第二隐藏层在当前处理过程中的实际输出数据、所述上一处理过程中得到的掩码输出数据,确定所述第二隐藏层在当前处理过程中的掩码输出数据,包括:
基于所述选择出的歌曲的掩码、所述第二隐藏层在当前处理过程中的实际输出数据、所述上一处理过程中得到的掩码输出数据,采用以下公式(2)确定所述第二隐藏层在当前处理过程中的掩码输出数据:
s′T=mask*sT+(1-mask)*s′T-1 (2)
其中,所述T是指所述当前处理过程,所述T-1是指所述上一处理过程,所述s′T和所述sT分别为所述第二隐藏层在当前处理过程中的掩码输出数据和实际输出数据,所述mask为所述选择出的歌曲的掩码,所述s′T-1为所述上一处理过程中得到的掩码输出数据。
第二方面,提供了一种歌曲推荐装置,所述装置应用于智能终端,所述装置包括:
检测模块,用于检测所述智能终端上的触摸操作;
第一获取模块,用于获取所述触摸操作对应的听歌行为;
第二获取模块,用于根据所述听歌行为,获取歌曲序列信息,所述歌曲序列信息是指当前时刻和当前时刻之前且在阈值时间范围内的听歌行为所对应的歌曲信息;
确定模块,用于将所述歌曲序列信息作为指定RNN模型的输入,通过所述指定RNN模型确定多个候选歌曲标识中推荐概率最大的候选歌曲标识,所述推荐概率用于指示候选歌曲标识对应的歌曲为推荐歌曲的概率,所述指定RNN模型是基于历史听歌序列对待训练RNN模型进行训练得到,所述历史听歌序列是由历史上连续播放的多个歌曲的歌曲信息按照歌曲播放的先后顺序组合得到;
推荐模块,用于将所述推荐概率最大的候选歌曲标识对应的歌曲确定为推荐歌曲,对所述推荐歌曲进行推荐。
可选地,所述歌曲信息包括歌曲属性、播放时长和听歌操作信息,听歌操作包括收藏操作、下载操作、切歌操作或删除操作。
可选地,所述指定RNN模型包括第一输入层、第一隐藏层和第一输出层,所述第一输出层设置有所述多个候选歌曲标识;
所述确定模块具体用于:
当所述第一输出层为二叉树输出层时,基于所述歌曲序列信息,通过所述第一输入层和所述第一隐藏层确定得到隐藏层输出数据;基于所述隐藏层输出数据,通过所述二叉树输出层确定得到指定推荐概率,所述指定推荐概率为所述多个候选歌曲标识的推荐概率中的最大推荐概率;将所述指定推荐概率对应的候选歌曲标识确定为所述推荐概率最大的候选歌曲标识;
当所述第一输出层为非二叉树输出层时,基于所述歌曲序列信息,通过所述第一输入层和所述第一隐藏层确定得到隐藏层输出数据;基于所述隐藏层输出数据,通过所述非二叉树输出层确定得到所述多个候选歌曲标识的推荐概率;基于所述多个候选歌曲标识的推荐概率,从所述多个候选歌曲标识中确定所述推荐概率最大的候选歌曲标识。
可选地,所述推荐模块具体用于:
当所述推荐概率最大的候选歌曲标识为候选歌曲标签时,将所述候选歌曲标签指示的歌曲确定为所述推荐歌曲;
当所述推荐概率最大的候选歌曲标识为候选歌曲流派标签时,确定所述候选歌曲流派标签指示的候选歌曲流派所包括的歌曲,基于所述候选歌曲流派所包括的歌曲确定所述推荐歌曲。
可选地,所述指定RNN模型为长短期记忆LSTM网络模型或者门控递归单元GRU网络模型。
可选地,所述装置还包括:
第三获取模块,用于获取所述历史听歌序列,所述历史听歌序列中的每个歌曲设置有样本标记,所述样本标记由对应歌曲的歌曲信息确定得到;
其中,所述样本标记为正样本标记或负样本标记,所述正样本标记用于指示对应歌曲为感兴趣歌曲,所述负样本标记用于指示对应歌曲为不感兴趣歌曲;
训练模块,用于基于所述历史听歌序列,按照序列顺序对待训练RNN模型进行训练,得到所述指定RNN模型。
可选地,所述第三获取模块包括:
获取单元,用于获取历史上连续播放的多个歌曲的歌曲信息;
标记单元,用于基于所述多个歌曲中每个歌曲的歌曲信息,为每个歌曲设置样本标记;
组合单元,用于将所述多个歌曲的歌曲信息和样本标记按照歌曲播放的先后顺序进行序列组合,得到所述历史听歌序列。
可选地,所述历史听歌序列中的每个歌曲的歌曲信息包括歌曲属性、播放时长和听歌操作信息;
所述标记单元具体用于:
对于所述历史听歌序列中的任一歌曲A,当所述歌曲A的播放时长大于或等于预设时长,和/或,所述歌曲A的听歌操作信息指示对所述歌曲A进行了收藏操作或下载操作时,为所述歌曲A设置正样本标记;
当所述歌曲A的播放时长小于预设时长,和/或,所述歌曲A的听歌操作信息指示对所述歌曲A进行了切歌操作或删除操作时,为所述歌曲A设置负样本标记。
可选地,所述训练模块包括:
选择单元,用于当所述历史听歌序列包括多个历史听歌子序列,且所述多个历史听歌子序列的序列长度不同时,从所述多个历史听歌子序列中选择序列长度最长的历史听歌子序列,每个历史听歌子序列的序列长度用于指示对应历史听歌子序列包括的歌曲数目;
序列补齐单元,用于按照选择的历史听歌子序列的序列长度,基于空白歌曲对其他历史听歌子序列进行序列补齐,以使所述多个历史听歌子序列的序列长度相等;
掩码设置单元,用于将序列补齐后的每个历史听歌子序列中的空白歌曲的掩码设置为第一预设值,其他歌曲的掩码设置为第二预设值;
训练单元,用于基于序列补齐后的所述多个历史听歌子序列和序列补齐后的各个历史听歌子序列中每个歌曲的掩码,按照序列顺序并行对待训练RNN模型进行训练,得到所述指定RNN模型。
可选地,所述待训练RNN模型包括第二输入层、第二隐藏层和第二输出层;
所述训练单元具体用于:
对于序列补齐后的所述多个历史听歌子序列中的任一历史听歌子序列A,从所述历史听歌子序列A中选择出一个歌曲,对选择出的歌曲执行以下处理,直至处理完所述历史听歌子序列A中的最后一个歌曲的上一个歌曲为止:
基于上一处理过程中得到的掩码状态数据和掩码输出数据,以及所述选择出的歌曲的歌曲信息和掩码,通过所述第二输入层和所述第二隐藏层确定得到所述第二隐藏层在当前处理过程中的掩码状态数据和掩码输出数据,所述上一处理过程是指对所述历史听歌子序列A中所述选择出的歌曲的上一个歌曲进行处理的过程;
其中,当所述选择出的歌曲为所述历史听歌子序列A中的第一个歌曲时,所述上一处理过程中得到的掩码状态数据和掩码输出数据分别为预设的初始状态数据和初始输出数据;
基于所述第二隐藏层在当前处理过程中的掩码输出数据和所述历史听歌子序列A中所述选择出的歌曲的下一个歌曲的歌曲信息,通过所述第二输出层确定所述选择出的歌曲对应的目标函数,所述目标函数用于对所述待训练RNN模型的模型参数进行调整;
当通过上述处理得到所述历史听歌子序列A中除所述最后一个歌曲之外的每个歌曲对应的目标函数时,基于所述历史听歌子序列A中除所述最后一个歌曲之外的每个歌曲对应的目标函数,确定所述历史听歌子序列A的目标函数;
当确定得到每个历史听歌子序列的目标函数时,基于每个历史听歌子序列的目标函数对所述待训练RNN模型进行调整,得到所述指定RNN模型。
可选地,所述训练单元具体用于:
基于所述上一处理过程中得到的掩码状态数据和掩码输出数据,以及所述选择出的歌曲的歌曲信息,通过所述第二输入层和所述第二隐藏层确定所述第二隐藏层在当前处理过程中的实际状态数据;
基于所述选择出的歌曲的掩码、所述第二隐藏层在当前处理过程中的实际状态数据、所述上一处理过程中得到的掩码状态数据,确定所述第二隐藏层在当前处理过程中的掩码状态数据;
基于所述第二隐藏层在当前处理过程中的掩码状态数据,确定所述第二隐藏层在当前处理过程中的实际输出数据;
基于所述选择出的歌曲的掩码、所述第二隐藏层在当前处理过程中的实际输出数据、所述上一处理过程中得到的掩码输出数据,确定所述第二隐藏层在当前处理过程中的掩码输出数据。
可选地,所述第一预设值为0,第二预设值为1;
所述训练单元具体用于:
基于所述选择出的歌曲的掩码、所述第二隐藏层在当前处理过程中的实际状态数据、所述上一处理过程中得到的掩码状态数据,采用如下公式(1)确定所述第二隐藏层在当前处理过程中的掩码状态数据:
c′T=mask*cT+(1-mask)*c′T-1 (1)
其中,所述T是指所述当前处理过程,所述T-1是指所述上一处理过程,所述c′T和所述cT分别为所述第二隐藏层在当前处理过程中的掩码状态数据和实际状态数据,所述mask为所述选择出的歌曲的掩码,所述c′T-1为所述上一处理过程中得到的掩码状态数据。
可选地,所述第一预设值为0,第二预设值为1;
所述训练单元具体用于:
基于所述选择出的歌曲的掩码、所述第二隐藏层在当前处理过程中的实际输出数据、所述上一处理过程中得到的掩码输出数据,采用以下公式(2)确定所述第二隐藏层在当前处理过程中的掩码输出数据:
s′T=mask*sT+(1-mask)*s′T-1 (2)
其中,所述T是指所述当前处理过程,所述T-1是指所述上一处理过程,所述s′T和所述sT分别为所述第二隐藏层在当前处理过程中的掩码输出数据和实际输出数据,所述mask为所述选择出的歌曲的掩码,所述s′T-1为所述上一处理过程中得到的掩码输出数据。
第三方面,提供了一种歌曲推荐装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器被配置为执行上述第一方面所述的任一种歌曲推荐方法的步骤。
第四方面,提供了一种计算机可读存储介质,其特征在于,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的任一种歌曲推荐方法。
本发明实施例提供的技术方案可以包括以下有益效果:
本发明实施例中,由于该指定RNN模型是基于历史听歌序列对待训练RNN模型进行训练得到,且该历史听歌序列是由历史上连续播放的多个歌曲的歌曲信息按照歌曲播放的先后顺序组合得到,因此在训练过程中待训练RNN模型可以自动学习到任意连续播放的两首歌之间的变化关系,并可以根据整个历史听歌序列挖掘出用户听歌过程中的兴趣变化规律。之后可以获取智能终端上的触摸操作对应的听歌行为,根据该听歌行为获取歌曲序列信息,并基于该歌曲序列信息通过指定RNN模型进行推荐歌曲,而且在基于该歌曲序列信息通过指定RNN模型进行推荐歌曲的过程中,能够结合用户最近的听歌行为和挖掘出的兴趣变化规律进行歌曲推荐,使得推荐的歌曲更加符合用户当前的兴趣变化和听歌需求,提高了歌曲推荐的准确度。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是本发明实施例提供的一种RNN模型的逻辑结构示意图;
图1B是本发明实施例提供的一种LSTM层的逻辑结构示意图;
图1C是本发明实施例提供的一种歌曲推荐方法的流程图;
图2A是本发明实施例提供的一种歌曲推荐方法的流程图;
图2B是本发明实施例提供的一种指定RNN模型的网络结构示意图;
图2C是本发明实施例提供的一种二叉树的示意图;
图2D是本发明实施例提供的一种候选歌曲流派标签体系的示意图;
图3A是本发明实施例提供的另一种歌曲推荐方法的流程图;
图3B是本发明实施例提供的一种待训练RNN模型的网络结构示意图;
图3C是本发明实施例提供的一种历史听歌序列的示意图;
图3D是本发明实施例提供的一种历史听歌序列中各个歌曲的掩码示意图;
图4是本发明实施例提供的一种歌曲推荐装置的结构示意图;
图5是本发明实施例提供的一种服务器500的结构示意图;
图6是本发明实施例提供的一种终端600的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在对本发明实施例提供的歌曲推荐方法进行详细介绍之前,首先对本发明实施例的涉及的名词进行说明。
RNN(Recurrent Neural Network,递归神经网络)模型
RNN模型即是一种具有反馈结构的神经网络模型,可以利用反馈结构将之前的输出进行反馈,使得RNN模型每次的输出不仅与当前输入有关,还与之前的输出有关。传统的神经网络没有反馈功能,仅能对相互独立的没有关联关系的输入数据进行处理。但是实际应用中,有些输入数据是一些有明显上下文关联关系的序列化输入数据,此时神经网络的每次输出必须依赖上一次的输入,对于这种序列化输入数据可以利用RNN模型进行处理,如利用RNN模型对本申请的历史听歌序列进行处理。
图1A是本发明实施例提供的一种RNN模型的逻辑结构示意图,如图1A左侧所示,该RNN模型包括输入层、隐藏层和输出层三层结构,且隐藏层为环形结构。其中,输入层和隐藏层相连,隐藏层和输出层相连。U表示输入层与隐藏层之间权重参数,W表示隐藏层之间即当前时刻的隐藏层与下一时刻的隐藏层之间的权重参数、V分别表示隐藏层与输出层之间的权重参数,x表示输入层的输入数据,s表示隐藏层的输出数据,y表示输出层的输出数据。
由于RNN模型的输入层接收到的输入数据为按照一定时间序列排序的数据,也即输入层接收到的输入数据为序列数据,为了便于说明,将该序列数据标记为x1、x2、…、xi、…、xn,该序列数据中的各个数据分别对应的时刻为t1、t2、…、ti、…、tn,将隐藏层对x1、x2、…、、xi、…、xn分别进行处理得到的隐藏层的输出数据标记为s1、s2、…、si、…、sn,将输出层基于s1、s2、…、si、…、sn分别得到的输出层的输出数据标记为y1、y2、…、yi、…、yn。其中,n为序列化输入数据的序列个数。
为了便于说明该RNN模型的功能,将图1A左侧所示的RNN模型的结构按照时间顺序进行展开,可以得到如图1A右侧所示的结构。如图1A右侧所示,在展开之后的RNN模型中,t1时刻输入层接收到的输入数据为x1,并将x1传输至隐藏层,隐藏层对x1进行处理得到t1时刻隐藏层的输出数据s1,并将s1传输至输出层以及下一时刻的隐藏层,输出层对s1进行处理可以得到t1时刻输出层的输出数据y1。t2时刻输入层接收到的输入数据为x2,并将x2传输至隐藏层,此时隐藏层可以根据t1时刻隐藏层的输出数据s1对x2进行处理得到t2时刻隐藏层的输出数据s2,并将s2传输至输出层以及下一时刻的隐藏层,输出层对s2进行处理可以得到t2时刻输出层的输出数据y2。也即,在任意时刻ti,隐藏层除了接收到ti时刻输入层传输的输入数据xi,还接收到ti-1时刻隐藏层的输出数据si-1,并根据si-1对xi进行处理得到ti时刻隐藏层的输出数据si,然后将si传输至输出层进行处理得到ti时刻隐藏层的输出数据yi。
LSTM(Long Short-Term Memory,长短期记忆)网络模型
LSTM网络模型是一种特殊的RNN模型,传统的RNN模型无法学习长期依赖信息,LSTM网络模型能够学习长期依赖信息,适用于处理和预测时间序列中间隔和延迟相对较长的重要事件。而且传统的RNN模型在序列中的每一时刻对当前的输入数据和过去的信息的处理策略都是一致的,而LSTM模型可以根据每一时刻输入数据的不同,对输入数据和过去的信息采用不同的处理策略。
LSTM网络模型也包括输入层、隐藏层和输出层,且隐藏层也为图1A所示的环形结构,与传统RNN模型不同的是,LSTM网络模型在隐藏层中引入了细胞状态(cell state)来保留过去的记忆信息。
具体地,LSTM网络模型的隐藏层包括LSTM层。图1B是本发明实施例提供的一种LSTM层的逻辑结构示意图,参见图1B,LSTM层设置有忘记门(forget gate)、输入门(inputgate)和输出门(output gate),在每个时间步骤可以基于设置的忘记门、输入门和输出门对输入数据进行处理。且忘记门和输入门可以组成隐藏层的记忆状态,并可以根据忘记门的输出数据和输入门的输出数据确定隐藏层的状态数据。
为了便于说明,可以将忘记门、输入门和输出门的输出数据以及隐藏层的状态数据分别用f、i、o和c来表示。且对于LSTM网络模型,其输出层与隐藏层之间的权重参数W包括Wf、Wi、Wo和Wc,分别表示忘记门、输入门、输出门以及记忆状态对应的W;隐藏层之间的权重参数U包括Uf、Ui、Uo和Uc,分别表示忘记门、输入门、输出门以及记忆状态对应的U。
忘记门用于决定要从前面的记忆信息中丢弃哪些信息或丢弃多少信息,具体可以通过sigmoid函数来实现。sigmoid函数是一种激活函数,其函数值在0到1之间,当sigmoid函数值越接近于1时,表示当前时刻保留的记忆信息就越多,并可以将保留的记忆信息带到下一个阶段;当sigmoid函数值越接近于0时,表示当前时刻丢弃的记忆信息就越多。忘记门的输出数据可以通过以下公式(3)计算得到:
ft=sigmoid(Wf*st-1+Uf*xt+bf) (3)
其中,ft为t时刻忘记门的输出数据,st-1为t时刻的上一时刻即t-1时刻隐藏层的输出数据,xt为t时刻输入层的输入数据,bf为忘记门对应的偏移量。
输入门由两部分构成,第一部分用于决定当前时刻的输入数据中有多少信息会被加入到新的记忆信息中,从而生成输入门的输出数据;第二部分用于决定当前阶段产生的实际数据信息即隐藏层的辅助数据,该辅助数据可以用表示,具体可以通过tanh函数把之前的记忆信息与当前的输入数据结合生成该辅助数据,tanh函数为双曲正切函数。输入门的输出数据和辅助数据可以分别通过以下公式(4)和(5)计算得到:
it=sigmoid(Wi*st-1+Ui*xt+bi) (4)
其中,it为t时刻输入门的输出数据,st-1为t时刻的上一时刻即t-1时刻隐藏层的输出数据,xt为t时刻输入层的输入数据,bi为输入门对应的偏移量,为t时刻的辅助数据,bc为记忆状态对应的偏移量。
通过上述忘记门和输入门的设计,可以把过去的状态数据与忘记门相结合,以丢弃不需要的信息,并可以把当前的输入数据与输入门相结合,加入新的输入数据信息。也即是,通过忘记门和输入门可以对隐藏层的记忆状态进行更新,得到隐藏层的状态数据。隐藏层的状态数据可以通过以下公式(6)计算得到:
其中,ct为t时刻隐藏层的状态数据。
输出门用于控制记忆信息流向下一步的大小,以决定哪些信息适合向后传播。输出门的输出数据可以通过以下公式(7)计算得到:
ot=sigmoid(Wo*st-1+Uo*xt+bo) (7)
其中,ot为t时刻输出门的输出数据,st-1为t时刻的上一时刻即t-1时刻隐藏层的输出数据,xt为t时刻输入层的输入数据,bo为输出门对应的偏移量。
之后,根据隐藏层的状态数据和输入门的输入数据即可得到隐藏层的输出数据,具体地,隐藏层的输出数据可以通过以下公式(8)计算得到:
st=ot*tanh(ct) (8)
其中,st为t时刻隐藏层的输出数据,ot为t时刻输出门的输出数据,st-1为t时刻的上一时刻即t-1时刻隐藏层的输出数据,xt为t时刻输入层的输入数据,bo为输出门对应的偏移量。
参见图1B,对于t时刻的输入数据xt,LSTM层可以基于t-1时刻隐藏层的输出数据st-1和状态数据ct-1,通过忘记门、输入门和输出门对xt进行处理,得到t时刻隐藏层的状态数据ct和输出数据st。也即是,LSTM层在t时刻的输入包括xt、st-1和ct-1,输出数据为st。
GRU(Gated Recurrent Unit,门控递归单元)网络模型
GRU网络模型属于LSTM网络模型的变体,也包括输入层、隐藏层和输出层,其隐藏层包括GRU层,GRU层与LSTM层具有类似的功能,仅在各种门的设计和各种门的输出数据的计算公式上稍有不同。
接下来对发明实施例的应用场景进行简单介绍。
当用户通过音乐平台听歌时,为了避免用户需要被动地从音乐平台的歌曲数据库中选择感兴趣的歌曲进行收听,音乐平台可以根据用户的听歌偏好主动向用户推荐感兴趣的歌曲,以简化用户的操作,满足用户的个性化听歌需求。其中,该音乐平台可以为音乐网站或听歌应用等。
具体地,本发明实施例提供的方法可以应用于电台类的歌曲推荐场景和列表式的歌曲推荐场景,当然也可以应用于其他歌曲推荐场景。
例如,在电台类的歌曲推荐场景中,音乐平台可以在显示界面上显示诸如个性电台或随心听等的歌曲推荐电台,当用户点击歌曲推荐电台听歌时,该歌曲推荐电台即可结合用户的最近听歌行为和指定RNN模型为用户推荐歌曲,而且在用户听歌过程中,该歌曲推荐电台还可以结合用户的最近听歌行为对应的歌曲序列信息和指定RNN模型确定下一首推荐歌曲。
例如,在列表式的歌曲推荐场景中,音乐平台可以结合用户的最近听歌行为和指定RNN模型一次性确定多首推荐歌曲,然后将由该多首推荐歌曲组成的歌曲推荐列表显示在显示界面中,如显示每日精选30首等。而且在用户听完该歌曲推荐列表中的歌曲或对该歌曲推荐列表进行刷新后,音乐平台还可以基于用户对该歌曲推荐列表的听歌操作对该指定RNN模型进行调整,然后基于用户的最近听歌行为和调整后的指定RNN模型确定下一个歌曲推荐列表。
其中,用户的最近听歌行为对应的歌曲序列可以包括用户正在听的歌曲、最近听的歌曲、最近收藏的歌曲或最近下载的歌曲等。
接下来对本发明实施例涉及的实施环境进行介绍。
本发明实施例提供的歌曲推荐方法可以应用于歌曲推荐装置,该歌曲推荐装置可以为服务器或终端等,该服务器可以为音乐平台的后台服务器,该终端可以为承载音乐平台的终端。该终端可以为手机、平板电脑等智能终端,也可以为计算机等。接下来将以该歌曲推荐方法应用于智能终端为例进行说明。
图1C是本发明实施例提供的一种歌曲推荐方法的流程图,该方法可以应用于智能终端中,如图1C所示,该方法包括如下步骤:
步骤101:检测智能终端上的触摸操作。
步骤102:获取该触摸操作对应的听歌行为。
步骤103:根据该听歌行为,获取歌曲序列信息,该歌曲序列信息是指当前时刻和当前时刻之前且在阈值时间范围内的听歌行为所对应的歌曲信息。
步骤104:将该歌曲序列信息作为指定RNN模型的输入,通过该指定RNN模型确定多个候选歌曲标识中推荐概率最大的候选歌曲标识,该指定RNN模型是基于历史听歌序列对待训练RNN模型进行训练得到。
其中,该推荐概率用于指示候选歌曲标识对应的歌曲为推荐歌曲的概率,该历史听歌序列是由历史上连续播放的多个歌曲的歌曲信息按照歌曲播放的先后顺序组合得到。
步骤105:将该推荐概率最大的候选歌曲标识对应的歌曲确定为推荐歌曲,对该推荐歌曲进行推荐。
可选地,该歌曲信息包括歌曲属性、播放时长和听歌操作信息,听歌操作包括收藏操作、下载操作、切歌操作或删除操作。
可选地,该指定RNN模型包括第一输入层、第一隐藏层和第一输出层,该第一输出层设置有该多个候选歌曲标识;
该通过该指定RNN模型确定多个候选歌曲标识中推荐概率最大的候选歌曲标识,包括:
当该第一输出层为二叉树输出层时,基于该歌曲序列信息,通过该第一输入层和该第一隐藏层确定得到隐藏层输出数据;基于该隐藏层输出数据,通过该二叉树输出层确定得到指定推荐概率,该指定推荐概率为该多个候选歌曲标识的推荐概率中的最大推荐概率;将该指定推荐概率对应的候选歌曲标识确定为该推荐概率最大的候选歌曲标识;
当该第一输出层为非二叉树输出层时,基于该歌曲序列信息,通过该第一输入层和该第一隐藏层确定得到隐藏层输出数据;基于该隐藏层输出数据,通过该非二叉树输出层确定得到该多个候选歌曲标识的推荐概率;基于该多个候选歌曲标识的推荐概率,从该多个候选歌曲标识中确定该推荐概率最大的候选歌曲标识。
可选地,该将该推荐概率最大的候选歌曲标识对应的歌曲确定为推荐歌曲,包括:
当该推荐概率最大的候选歌曲标识为候选歌曲标签时,将该候选歌曲标签指示的歌曲确定为该推荐歌曲;
当该推荐概率最大的候选歌曲标识为候选歌曲流派标签时,确定该候选歌曲流派标签指示的候选歌曲流派所包括的歌曲,基于该候选歌曲流派所包括的歌曲确定该推荐歌曲。
可选地,该指定RNN模型为长短期记忆LSTM网络模型或者门控递归单元GRU网络模型。
可选地,该通过该指定RNN模型确定多个候选歌曲标识中推荐概率最大的候选歌曲标识之前,还包括:
获取该历史听歌序列,该历史听歌序列中的每个歌曲设置有样本标记,该样本标记由对应歌曲的歌曲信息确定得到;
其中,该样本标记为正样本标记或负样本标记,该正样本标记用于指示对应歌曲为感兴趣歌曲,该负样本标记用于指示对应歌曲为不感兴趣歌曲;
基于该历史听歌序列,按照序列顺序对待训练RNN模型进行训练,得到该指定RNN模型。
可选地,该获取该历史听歌序列,包括:
获取历史上连续播放的多个歌曲的歌曲信息;
基于该多个歌曲中每个歌曲的歌曲信息,为每个歌曲设置样本标记;
将该多个歌曲的歌曲信息和样本标记按照歌曲播放的先后顺序进行序列组合,得到该历史听歌序列。
可选地,该历史听歌序列中的每个歌曲的歌曲信息包括歌曲属性、播放时长和听歌操作信息;
该基于该多个歌曲中每个歌曲的歌曲信息,为每个歌曲的歌曲信息设置样本标记,包括:
对于该历史听歌序列中的任一歌曲A,当该歌曲A的播放时长大于或等于预设时长,和/或,该歌曲A的听歌操作信息指示对该歌曲A进行了收藏操作或下载操作时,为该歌曲A设置正样本标记;
当该歌曲A的播放时长小于预设时长,和/或,该歌曲A的听歌操作信息指示对该歌曲A进行了切歌操作或删除操作时,为该歌曲A设置负样本标记。
可选地,该基于该历史听歌序列,按照序列顺序对待训练RNN模型进行训练,得到该指定RNN模型,包括:
当该历史听歌序列包括多个历史听歌子序列,且该多个历史听歌子序列的序列长度不同时,从该多个历史听歌子序列中选择序列长度最长的历史听歌子序列,每个历史听歌子序列的序列长度用于指示对应历史听歌子序列包括的歌曲数目;
按照选择的历史听歌子序列的序列长度,基于空白歌曲对其他历史听歌子序列进行序列补齐,以使该多个历史听歌子序列的序列长度相等;
将序列补齐后的每个历史听歌子序列中的空白歌曲的掩码设置为第一预设值,其他歌曲的掩码设置为第二预设值;
基于序列补齐后的该多个历史听歌子序列和序列补齐后的各个历史听歌子序列中每个歌曲的掩码,按照序列顺序并行对待训练RNN模型进行训练,得到该指定RNN模型。
可选地,该待训练RNN模型包括第二输入层、第二隐藏层和第二输出层;
该基于序列补齐后的该多个历史听歌子序列和序列补齐后的各个历史听歌子序列中每个歌曲的掩码,按照序列顺序并行对待训练RNN模型进行训练,包括:
对于序列补齐后的该多个历史听歌子序列中的任一历史听歌子序列A,从该历史听歌子序列A中选择出一个歌曲,对选择出的歌曲执行以下处理,直至处理完该历史听歌子序列A中的最后一个歌曲的上一个歌曲为止:
基于上一处理过程中得到的掩码状态数据和掩码输出数据,以及该选择出的歌曲的歌曲信息和掩码,通过该第二输入层和该第二隐藏层确定得到该第二隐藏层在当前处理过程中的掩码状态数据和掩码输出数据,该上一处理过程是指对该历史听歌子序列A中该选择出的歌曲的上一个歌曲进行处理的过程;
其中,当该选择出的歌曲为该历史听歌子序列A中的第一个歌曲时,该上一处理过程中得到的掩码状态数据和掩码输出数据分别为预设的初始状态数据和初始输出数据;
基于该第二隐藏层在当前处理过程中的掩码输出数据和该历史听歌子序列A中该选择出的歌曲的下一个歌曲的歌曲信息,通过该第二输出层确定该选择出的歌曲对应的目标函数,该目标函数用于对该待训练RNN模型的模型参数进行调整;
当通过上述处理得到该历史听歌子序列A中除该最后一个歌曲之外的每个歌曲对应的目标函数时,基于该历史听歌子序列A中除该最后一个歌曲之外的每个歌曲对应的目标函数,确定该历史听歌子序列A的目标函数;
当确定得到每个历史听歌子序列的目标函数时,基于每个历史听歌子序列的目标函数对该待训练RNN模型进行调整,得到该指定RNN模型。
可选地,该基于上一处理过程中得到的掩码状态数据和掩码输出数据,以及该选择出的歌曲的歌曲信息和掩码,通过该第二输入层和该第二隐藏层确定得到该第二隐藏层在当前处理过程中的掩码状态数据和掩码输出数据,包括:
基于该上一处理过程中得到的掩码状态数据和掩码输出数据,以及该选择出的歌曲的歌曲信息,通过该第二输入层和该第二隐藏层确定该第二隐藏层在当前处理过程中的实际状态数据;
基于该选择出的歌曲的掩码、该第二隐藏层在当前处理过程中的实际状态数据、该上一处理过程中得到的掩码状态数据,确定该第二隐藏层在当前处理过程中的掩码状态数据;
基于该第二隐藏层在当前处理过程中的掩码状态数据,确定该第二隐藏层在当前处理过程中的实际输出数据;
基于该选择出的歌曲的掩码、该第二隐藏层在当前处理过程中的实际输出数据、该上一处理过程中得到的掩码输出数据,确定该第二隐藏层在当前处理过程中的掩码输出数据。
可选地,该第一预设值为0,第二预设值为1;
该基于该选择出的歌曲的掩码、该第二隐藏层在当前处理过程中的实际状态数据、该上一处理过程中得到的掩码状态数据,确定该第二隐藏层在当前处理过程中的掩码状态数据,包括:
基于该选择出的歌曲的掩码、该第二隐藏层在当前处理过程中的实际状态数据、该上一处理过程中得到的掩码状态数据,采用如下公式(1)确定该第二隐藏层在当前处理过程中的掩码状态数据:
c′T=mask*cT+(1-mask)*c′T-1 (1)
其中,该T是指该当前处理过程,该T-1是指该上一处理过程,该c′T和该cT分别为该第二隐藏层在当前处理过程中的掩码状态数据和实际状态数据,该mask为该选择出的歌曲的掩码,该c′T-1为该上一处理过程中得到的掩码状态数据。
可选地,该第一预设值为0,第二预设值为1;
该基于该选择出的歌曲的掩码、该第二隐藏层在当前处理过程中的实际输出数据、该上一处理过程中得到的掩码输出数据,确定该第二隐藏层在当前处理过程中的掩码输出数据,包括:
基于该选择出的歌曲的掩码、该第二隐藏层在当前处理过程中的实际输出数据、该上一处理过程中得到的掩码输出数据,采用以下公式(2)确定该第二隐藏层在当前处理过程中的掩码输出数据:
s′T=mask*sT+(1-mask)*s′T-1 (2)
其中,该T是指该当前处理过程,该T-1是指该上一处理过程,该s′T和该sT分别为该第二隐藏层在当前处理过程中的掩码输出数据和实际输出数据,该mask为该选择出的歌曲的掩码,该s′T-1为该上一处理过程中得到的掩码输出数据。
本发明实施例中,由于该指定RNN模型是基于历史听歌序列对待训练RNN模型进行训练得到,且该历史听歌序列是由历史上连续播放的多个歌曲的歌曲信息按照歌曲播放的先后顺序组合得到,因此在训练过程中待训练RNN模型可以自动学习到任意连续播放的两首歌之间的变化关系,并可以根据整个历史听歌序列挖掘出用户听歌过程中的兴趣变化规律。之后可以获取智能终端上的触摸操作对应的听歌行为,根据该听歌行为获取歌曲序列信息,并基于该歌曲序列信息通过指定RNN模型进行推荐歌曲,而且在基于该歌曲序列信息通过指定RNN模型进行推荐歌曲的过程中,能够结合用户最近的听歌行为和挖掘出的兴趣变化规律进行歌曲推荐,使得推荐的歌曲更加符合用户当前的兴趣变化和听歌需求,提高了歌曲推荐的准确度。
图2A是本发明实施例提供的一种歌曲推荐方法的流程图,该方法可以应用于智能终端,如图2A所示,该方法包括如下步骤:
步骤201:检测智能终端上的触摸操作。
在智能终端开启之后,用户可以在智能终端上执行触摸操作,而智能终端可以检测触摸操作,并对检测到的触摸操作进行响应。其中,该触摸操作可以包括点击操作、按压操作或滑动操作等,本发明实施例对此不做限定。
本发明实施例中,该触摸操作可以为用户在听歌过程中执行的触摸操作,智能终端可以对用户听歌过程中执行的触摸操作进行检测,并对检测到的触摸操作进行分析。其中,该触摸操作用于反映用户的听歌行为,比如该触摸操作可以用于指示智能终端播放歌曲、暂停播放歌曲、切换至下一首歌曲、收藏歌曲、下载歌曲或删除歌曲等。
比如,该触摸操作可以为在智能终端显示的听歌界面上执行的触摸操作,智能终端可以检测听歌界面上的触摸操作。例如,该触摸操作可以包括点击播放按钮的操作、点击暂停按钮的操作、点击切换按钮的操作、点击收藏按钮的操作、点击下载按钮的操作或点击删除按钮的操作等。示例的,该触摸操作可以为用户在听歌界面上执行的一系列的点击操作,本发明实施例中,可以将这一系列的点击操作作为连续的点击序列。
步骤202:获取触摸操作对应的听歌行为。
智能终端检测到触摸操作之后,可以分析该触摸操作对应的听歌行为。实际应用中,该智能终端可以在需要向用户推荐歌曲时,获取触摸操作对应的听歌行为。例如,可以在检测到用户打开歌曲推荐电台时,获取触摸操作对应的听歌行为。
其中,该触摸操作对应的听歌行为可以包括播放歌曲的行为、暂停播放歌曲的行为、切换至下一首歌曲的行为、收藏歌曲的行为、下载歌曲的行为或删除歌曲的行为等,当然也可以包括用户在听歌过程中可能产生的其他听歌行为。
本发明实施例中,为了获取用户的最近听歌行为,以便利用用户的最近听歌行为预测之后用户感应趣的歌曲,该智能终端可以检测当前时刻和当前时刻之前且在阈值时间范围内的触摸操作,并获取当前时刻和当前时刻之前且在阈值时间范围内的触摸操作对应的听歌行为。其中,当前时刻和当前时刻之前且在阈值时间范围内的触摸操作对应的听歌行为即为用户的最近听歌行为。
其中,该阈值时间范围可以预先设置,且可以由智能终端默认设置,也可以由用户根据需要进行设置,本发明实施例对此不做限定。实际应用中,该阈值时间范围通常为一个较短的时间范围,例如,该阈值时间范围可以为30秒、1分钟、5分钟或10分钟等。
步骤203:根据该听歌行为,获取歌曲序列信息,该歌曲序列信息是指当前时刻和当前时刻之前且在阈值时间范围内的听歌行为所对应的歌曲信息。
其中,该歌曲序列信息是指当前时刻和当前时刻之前且在阈值时间范围内的听歌行为所对应的歌曲的歌曲信息,也即是,该歌曲序列信息是指用户的最近听歌行为对应的歌曲的歌曲信息,用于反映用户的最近听歌行为。例如,该歌曲序列信息可以包括用户当前时刻正在听的歌曲、最近听过的歌曲、最近收藏的歌曲或最近下载的歌曲等歌曲的歌曲信息。
其中,歌曲信息可以包括歌曲属性、播放时长和听歌操作信息。歌曲属性可以包括歌曲名称、歌手信息、所属专辑信息或者所属歌曲流派信息等,歌曲流派可以包括抒情、摇滚、流行、轻音乐等流派。播放时长是指用户收听歌曲的时长。听歌操作信息用于指示针对歌曲的听歌操作,该听歌操作可以为收藏操作、下载操作、切歌操作或删除操作等。
由于歌曲的播放时长和听歌操作信息能够反映该歌曲是否为用户感兴趣的歌曲以及用户对该歌曲的感兴趣程度,因此本发明实施例可以利用该歌曲序列信息预测之后的听歌兴趣,也即是根据该歌曲序列信息指示下一步是否要向用户推荐与该歌曲序列信息中的歌曲类似的歌曲。
需要说明的是,本发明实施例仅是以通过智能终端的触摸操作获取用户的听歌行为为例,而实际应用中,也可以通过计算机等终端上的点击操作获取用户的听歌行为,本发明实施例对此不做限定。
本发明实施例中,在获取歌曲序列信息之后,可以基于该歌曲序列信息,通过指定RNN模型确定推荐歌曲。具体地,基于该歌曲序列信息,通过指定RNN模型确定推荐歌曲的实现过程可以包括如下步骤204-205。
步骤204:将该歌曲序列信息作为指定RNN模型的输入,通过该指定RNN模型确定多个候选歌曲标识中推荐概率最大的候选歌曲标识,该指定RNN模型是基于历史听歌序列对待训练RNN模型进行训练得到。
其中,该历史听歌序列是由历史上连续播放的多个歌曲的歌曲信息按照歌曲播放的先后顺序组合得到,例如,该历史听歌序列可以为图1A所示的序列输入数据x1、x2、…、xi、…、xn,xi表示连续播放的第i个歌曲的歌曲信息。基于历史听歌序列对待训练RNN模型进行训练得到指定RNN模型的具体训练过程将在下述图3A实施例进行详细介绍,本发明实施例先不做赘述。
进一步地,该指定RNN模型可以为LSTM网络模型或者GRU网络模型等,当然也可以为其他LSTM网络模型的变体。
由于LSTM网络模型、GRU网络模型或者其他LSTM网络模型的变体的隐藏层中引入了各种门结构的设计,因此可以通过各种门结构的设计根据歌曲是否为感兴趣的歌曲对歌曲进行区分处理,以实现如果歌曲序列信息中的歌曲是感兴趣歌曲,则对后面歌曲推荐策略影响较大,如果歌曲序列信息中的歌曲不是感兴趣歌曲,则对后面歌曲推荐策略影响较小,从而提高歌曲推荐的准确度。
例如,当该指定RNN模型为LSTM网络模型时,可以通过其中LSTM层中的输入门来实现对歌曲的区分处理。如上述公式(4)所示,当t时刻的输入数据xt为目标歌曲的歌曲信息时,对于待传递到下一阶段的输入门的输出数据it来说,当目标歌曲为感兴趣歌曲时,xt值越大时,公式(4)的sigmoid函数值越接近1,能够向下一阶段传递的目标歌曲的歌曲信息就越多;当目标歌曲为不感兴趣歌曲时,xt值越小时,公式(4)的sigmoid函数值越接近0,能够向下一阶段传递的目标歌曲的歌曲信息就越少。其中,该目标歌曲可以为歌曲序列信息中的任一歌曲。
其中,由于xt中包括目标歌曲的播放时长,因此当目标歌曲为感兴趣歌曲时,播放时长越长,相应地xt值就越大,当目标歌曲为不感兴趣歌曲时,播放时长越小,相应地xt值就越小。进一步地,还可以将听歌操作信息转换为播放时长,例如,当听歌操作为收藏操作或下载操作时,将播放时长增加第一预设播放时长,当听歌操作为切歌操作或删除操作时,将播放时长减小第二预设播放时长。
其中,该指定RNN模型可以包括第一输入层、第一隐藏层和第一输出层,当该指定RNN模型为LSTM网络模型时,该第一隐藏层为LSTM层,当该指定RNN模型为GRU网络模型时,该第一隐藏层为GRU层。
进一步地,该指定RNN模型还可以包括第一嵌入层,该第一嵌入层位于第一输入层和第一隐藏层之间,用于对第一输入层输入的输入数据进行降维处理,然后将降维处理后的输入数据输入该第一隐藏层。通过在第一输入层和第一隐藏层之间添加第一嵌入层对输入数据进行降维处理,可以减小该指定RNN模型的计算量。
进一步地,该指定RNN模型还可以包括第一dropout(断开)层,该第一dropout位于第一隐藏层和第一输出层之间,用于避免在模型训练过程中当训练样本较少时出现的模型过拟合问题。
例如,以该指定RNN模型为LSTM网络模型为例,该LSTM网络模型的模型结构可以如图2B所示。参见图2B,该LSTM网络模型包括第一输入层、第一嵌入层、LSTM层、第一dropout层和第一输出层,且各层依次相连。
其中,多个候选歌曲标识为该指定RNN模型预先设置的多个待推荐的歌曲对应的标识,每个候选歌曲标识的推荐概率用于指示该候选歌曲标识对应的歌曲为推荐歌曲的概率。候选歌曲标识可以为候选歌曲标签或候选歌曲流派标签等。候选歌曲标签用于指示特定的候选歌曲,具体可以为候选歌曲的名称或编号等;候选歌曲流派标签用于指示特定的候选歌曲流派,具体可以为候选歌曲流派的名称或编码等。
本发明实施例中,该指定RNN模型既可以预先设置多个候选歌曲标签,也可以预先设置多个候选歌曲流派标签。当该指定RNN模型预先设置了多个候选歌曲标签时,可以通过该指定RNN模型确定出推荐概率最大的候选歌曲;当该指定RNN模型预先设置了多个候选歌曲流派标签时,可以通过该指定RNN模型确定出推荐概率最大的候选歌曲流派。由于候选歌曲流派标签的数量相对于歌曲总量来说要小得多,因此通过设置候选歌曲流派标签可以减小指定RNN模型的计算量。
需要说明的是,由于该指定RNN模型是基于历史听歌序列对待训练RNN模型进行训练得到的,因此在训练过程中待训练RNN模型可以自动学习到任意连续播放的前后两首歌之间的变化关系,并可以根据整个历史听歌序列挖掘出用户听歌过程中的兴趣变化规律。之后,将该歌曲序列信息作为指定RNN模型的输入,该指定RNN模型即能够结合用户的最近听歌行为和预先挖掘出的该用户的兴趣变化规律,准确地从多个候选歌曲标识中确定出推荐概率最大的候选歌曲标识。
进一步地,根据指定RNN模型的输出层的设置方式的不同,通过该指定RNN模型确定多个候选歌曲标识中推荐概率最大的候选歌曲标识的方式也相应有所不同。
在一个具体实施例中,该指定RNN模型包括第一输入层、第一隐藏层和第一输出层,该第一输出层设置有多个候选歌曲标识;相应地,通过该指定RNN模型确定多个候选歌曲标识中推荐概率最大的候选歌曲标识可以包括如下两种实现方式:
第一种实现方式:当该第一输出层为非二叉树输出层时,基于该歌曲序列信息,通过该第一输入层和该第一隐藏层确定得到隐藏层输出数据;基于该隐藏层输出数据,通过该非二叉树输出层确定得到该多个候选歌曲标识的推荐概率;基于该多个候选歌曲标识的推荐概率,从该多个候选歌曲标识中确定该推荐概率最大的候选歌曲标识。
具体地,可以将该歌曲序列信息作为该第一输入层的输入,通过该第一输入层将该歌曲序列信息传输至该第一隐藏层,并通过该第一隐藏层对该歌曲序列信息进行处理,得到隐藏层输出数据,之后将该隐藏层输出数据作为该非二叉树输出层的输入,并通过该非二叉树输出层对该隐藏层输出数据进行处理,得到多个候选歌曲标识的推荐概率。
其中,非二叉树输出层是RNN模型经常采用的常规的输出层,一般为softmax输出层。当该第一输出层为常规的非二叉树输出层时,对于预先设置的多个候选歌曲标识,通过该第一输出层需要输出每个候选歌曲标识的推荐概率,然后再从中选取推荐概率最大的候选歌曲标识。
需要说明的是,实际应用中,当候选歌曲标识很少时,比如具有几千个候选歌曲标识时,通过上述第一种实现方式进行处理比较简单方便,但是当候选歌曲标识较多时,比如具有上百万甚至上千万个候选歌曲标识时,如果计算每个候选歌曲标识的推荐概率,复杂度较高。因此,当候选歌曲标识较多时,为了简化输出层处理的复杂度,可以采用下述第二种实现方式进行处理。
第二种实现方式:当该第一输出层为二叉树输出层时,基于该歌曲序列信息,通过该第一输入层和该第一隐藏层确定得到隐藏层输出数据;基于该隐藏层输出数据,通过该二叉树输出层确定得到指定推荐概率,该指定推荐概率为该多个候选歌曲标识的推荐概率中的最大推荐概率;将该指定推荐概率对应的候选歌曲标识确定为该推荐概率最大的候选歌曲标识。
具体地,可以将该歌曲序列信息作为该第一输入层的输入,通过该第一输入层将该歌曲序列信息传输至该第一隐藏层,并通过该第一隐藏层对该歌曲序列信息进行处理,得到隐藏层输出数据,之后将该隐藏层输出数据作为该二叉树输出层的输入,并通过该二叉树输出层对该隐藏层输出数据进行处理,得到指定推荐概率。
二叉树输出层是一种二分类的输出层,对于二叉树输出层,可以在二叉树输出层中预先根据歌曲信息构建一个二叉树,比如可以根据歌曲的热度作为初始权值构建二叉树。实际应用中,该二叉树输出层可以为Hierarchical(哈夫曼)softmax输出层等,对于Hierarchical softmax输出层来说,其对应的二叉树为Hierarchical树。
如图2C所示,二叉树可以包括起始的根节点和最后一层的多个叶子节点,每个叶子节点代表一个候选歌曲标识,根节点与叶子节点之间的节点代表歌曲分类信息。而且,从根节点到任一叶子节点之间会产生L-1个分支,每一个分支都可以看成一个二元分类,每一个分类会产生一个推荐概率。二叉树输出层具体计算过程中,从根节点流向下一层的每个分支时,总会选择概率较大的那个分支路径,直到流向指定叶子节点,因此从根节点到叶子节点的路径是唯一的。之后将每个分支节点的概率相乘即可得到该指定叶子节点对应的候选歌曲标识的推荐概率,且该推荐概率是多个候选歌曲标识的推荐概率中的最大推荐概率。
由上可知,对于二叉树输出层来说,可以直接输出推荐概率最大的候选歌曲标识的推荐概率,而无需计算每个候选歌曲标识的推荐概率,复杂度较低。
进一步地,对于歌曲流派标签来说,在输出层中还可以根据歌曲流派层次来建模,使得候选歌曲流派标签体系包括多层标签,且各层标签之间具有层级递进关系,输出层可以确定最后一层候选歌曲流派标签中推荐概率最大的候选歌曲流派标签。例如,如图2D所示,第一层为一级标签,第一标签可以包括流行、摇滚和轻音乐等标签。第二层为二级标签,且每个一级标签具有多个二级标签,如摇滚标签的二级标签可以包括普通摇滚、朋克等标签。第三层为三级标签,且每个二级标签具有多个三级标签。
步骤205:将该推荐概率最大的候选歌曲标识对应的歌曲确定为推荐歌曲。
本发明实施例中,根据候选歌曲标识的不同,确定推荐歌曲的方式相应不同。具体地,将该推荐概率最大的候选歌曲标识对应的歌曲确定为推荐歌曲的过程可以包括如下两种实现方式:
第一种实现方式:当该推荐概率最大的候选歌曲标识为候选歌曲标签时,将该候选歌曲标签指示的歌曲确定为该推荐歌曲。
第二种实现方式:当该推荐概率最大的候选歌曲标识为候选歌曲流派标签时,确定该候选歌曲流派标签指示的候选歌曲流派所包括的歌曲,基于该候选歌曲流派所包括的歌曲确定该推荐歌曲。
具体地,可以从该候选歌曲流派所包括的多个歌曲中进行选择,得到该推荐歌曲。实际应用中,可以采用多种算法进行选择,本发明实施例对此不做限定。例如,所选择的歌曲可以为该多个歌曲中热度最大的歌曲,如听歌次数最多的歌曲或收藏次数最多的歌曲等。
例如,当该候选歌曲流派标签指示的候选歌曲流派为摇滚流派时,可以从属于摇滚流派的多个歌曲中选择热度最大的歌曲,作为该推荐歌曲。
步骤206:对该推荐歌曲进行推荐。
实际应用中,可以在歌曲推荐电台中对该推荐歌曲进行推荐,也可以在显示界面的推荐列表中进行推荐,本发明实施例对此不做限定。
进一步地,当需要推荐的歌曲数目N等于1时,可以直接将根据歌曲序列信息和该指定RNN模型确定的推荐歌曲进行推荐,如在歌曲推荐电台中进行推荐。而且在用户收听该推荐歌曲的过程中,还可以基于该推荐歌曲的歌曲信息和该指定RNN模型确定下一首推荐歌曲,并在用户听完该推荐歌曲或者用户切歌时,将该下一首推荐歌曲推荐给用户。
进一步地,当需要推荐的歌曲数目N大于1时,得到根据歌曲序列信息和该指定RNN模型确定的一首推荐歌曲之后,还可以继续结合该推荐歌曲的歌曲信息和该指定RNN模型确定第二首推荐歌曲,然后判断所得到的推荐歌曲的数目是否等于N,当所得到的推荐歌曲的数目小于N时,继续结合第二首推荐歌曲的歌曲信息和该指定RNN模型确定第三首推荐歌曲,直至所得到的推荐歌曲的数目等于N时,将所得到N首推荐歌曲进行推荐。例如,将该N首推荐歌曲显示在显示界面的推荐列表中。
进一步地,对于需要推荐的歌曲数目N大于1的推荐场景来说,在用户听完所推荐的N首歌曲或刷新时,还可以基于用户对该N首歌曲的听歌操作对该指定RNN模型进行调整,然后基于用户的最近听歌行为和调整后的指定RNN模型确定下一次待推荐的N首推荐歌曲。也即是,可以将当前所推荐的N首推荐歌曲的歌曲信息继续作为指定RNN模型的历史听歌序列,并基于该历史听歌序列对该指定RNN模型进行训练,在训练过程中对该指定RNN模型的模型参数进行调整,以得到推荐效果更好的指定RNN模型。
其中,基于历史听歌序列对该指定RNN模型进行训练的方式与下述图3A实施例中所述的基于历史听歌序列对待训练RNN模型进行训练的方式相同,本发明实施例在此不再赘述。
当然,也可以直接基于该歌曲推荐信息和该指定RNN模型,确定多首推荐歌曲,本发明实施例对推荐歌曲的数目不做限定。
需要说明的是,本发明实施例仅是以由智能终端检测触摸操作,并通过执行上述步骤202-206进行歌曲推荐为例进行说明,而实际应用中,还可以由服务器进行歌曲推荐,也即是,可以由服务器执行上述步骤202-206。
例如,以该服务器为听歌软件的后台服务器为例,智能终端可以检测听歌软件上的触摸操作,并将触摸操作上传给后台服务器,由服务器获取触摸操作对应的听歌行为,进行歌曲推荐。
本发明实施例中,由于该指定RNN模型是基于历史听歌序列对待训练RNN模型进行训练得到,且该历史听歌序列是由历史上连续播放的多个歌曲的歌曲信息按照歌曲播放的先后顺序组合得到,因此在训练过程中待训练RNN模型可以自动学习到任意连续播放的两首歌之间的变化关系,并可以根据整个历史听歌序列挖掘出用户听歌过程中的兴趣变化规律。之后可以获取智能终端上的触摸操作对应的听歌行为,根据该听歌行为获取歌曲序列信息,并基于该歌曲序列信息通过指定RNN模型进行推荐歌曲,而且在基于该歌曲序列信息通过指定RNN模型进行推荐歌曲的过程中,能够结合用户最近的听歌行为和挖掘出的兴趣变化规律进行歌曲推荐,使得推荐的歌曲更加符合用户当前的兴趣变化和听歌需求,提高了歌曲推荐的准确度。
进一步地,在进行歌曲推荐之前,为了得到能够深度挖掘出用户兴趣变化规律的指定RNN模型,还需要预先基于历史听歌序列对待训练RNN模型进行训练,接下来将对指定RNN模型的模型训练方法进行详细介绍。图3A是本发明实施例提供的另一种歌曲推荐方法的流程图,如图3A所示,步骤101之前还可以包括如下步骤301-302:
步骤301:获取历史听歌序列,该历史听歌序列是由历史上连续播放的多个歌曲的歌曲信息按照歌曲播放的先后顺序组合得到。
也即是,该历史听歌序列是由用户过去连续所听的多个歌曲的歌曲信息进行序列组合得到。例如,该历史听歌序列可以为图1A所示的序列输入数据x1、x2、…、xi、…、xn,xi表示连续播放的第i个歌曲的歌曲信息。
其中,该历史听歌序列中每个歌曲的歌曲信息可以包括该歌曲的歌曲属性、播放时长和听歌操作信息,听歌操作包括收藏操作、下载操作、切歌操作或删除操作等。
进一步地,该历史听歌序列中的每个歌曲设置有样本标记,该样本标记基于对应歌曲的歌曲信息确定得到。其中,该样本标记包括正样本标记或负样本标记,正样本标记用于指示对应歌曲为感兴趣歌曲,负样本标记用于指示对应歌曲为不感兴趣歌曲。
实际应用中,历史听歌序列中每个歌曲的样本标记可以由人工根据对应歌曲的歌曲信息进行标记,也可以由机器自动标记,本发明实施例对此不做限定。例如,技术人员可以为播放时长较长的歌曲设置正样本标记,为播放时长较短的歌曲设置负样本标记,或者为用户收藏或下载的歌曲设置正样本标记,或者为用户切歌或删除的歌曲设置负样本标记。
以由机器自动标记为例,获取该历史听歌序列的过程可以包括:获取历史上连续播放的多个歌曲的歌曲信息;基于该多个歌曲中每个歌曲的歌曲信息,为每个歌曲设置样本标记;将该多个歌曲的歌曲信息和样本标记按照歌曲播放的先后顺序进行序列组合,得到该历史听歌序列。
进一步地,当该历史听歌序列中的每个歌曲的歌曲信息包括歌曲属性、播放时长和听歌操作信息时,基于该多个歌曲中每个歌曲的歌曲信息,为每个歌曲的歌曲信息设置样本标记的过程可以包括:对于该历史听歌序列中的任一歌曲A,当该歌曲A的播放时长大于或等于预设时长,和/或,该歌曲A的听歌操作信息指示对该歌曲A进行了收藏操作或下载操作时,为该歌曲A设置正样本标记;当该歌曲A的播放时长小于预设时长,和/或,该歌曲A的听歌操作信息指示对该歌曲A进行了切歌操作或删除操作时,为该歌曲A设置负样本标记。
其中,该预设时长可以预先设置得到,且可以由该智能终端默认设置,也可以由技术人员根据经验进行设置,本发明实施例对此不做限定。例如,该预设时长可以为20s、30s或40s等。
进一步地,该预设时长还可以包括第一预设时长和第二预设时长,且第一预设时长小于第二预设时长,基于该多个歌曲中每个歌曲的歌曲信息,为每个歌曲的歌曲信息设置样本标记的过程还可以包括:当歌曲A的播放时长大于第二预设时长时,为该歌曲A设置正样本标记;或者,当歌曲A的播放时长大于第一预设时长且小于第二预设时长且歌曲A的听歌操作信息指示对该歌曲A进行了收藏操作或下载操作时,为该歌曲A设置正样本标记;或者,当歌曲A的歌曲播放时长小于第一预设时长时,为该歌曲A设置负样本标记;或者当该歌曲A的歌曲播放时长大于第一预设时长且小于第二预设时长且歌曲A的听歌操作信息指示对该歌曲A进行了切歌操作或删除操作时,为该歌曲A设置负样本标记。
当然也可以采用其他方式基于该多个歌曲中每个歌曲的歌曲信息,为每个歌曲的歌曲信息设置样本标记,本发明实施例对此不做限定。
步骤302:基于该历史听歌序列,按照序列顺序对待训练RNN模型进行训练,得到该指定RNN模型。
其中,该待训练RNN模型可以为LSTM网络模型或者GRU网络模型等,当然也可以为其他LSTM网络模型的变体。
由于LSTM网络模型、GRU网络模型或者其他LSTM网络模型的变体在隐藏层中引入了各种门结构的设计,因此在训练过程中,可以通过各种门结构的设计根据输入数据是否为感兴趣的歌曲对输入数据进行区分处理,以实现如果输入数据是感兴趣歌曲,则对后面歌曲推荐策略影响较大,如果输入数据不是感兴趣歌曲,则对后面歌曲推荐策略影响较小,或者使得后面的推荐策略避免类似歌曲的出现,从而提高训练的准确度。例如,当该待训练RNN模型为LSTM模型是,可以通过LSTM层中的输入门来实现对输入数据的区分处理。
其中,该待训练RNN模型可以包括第二输入层、第二隐藏层和第二输出层,当该待训练RNN模型为LSTM网络模型时,该第二隐藏层为LSTM层,当该指定RNN模型为GRU网络模型时,该第二隐藏层为GRU层。
进一步地,该待训练RNN模型还可以包括第二嵌入层,该第二嵌入层位于第二输入层和第二隐藏层之间,用于对第二输入层输入的输入数据进行降维处理,然后将降维处理后的输入数据输入该第二隐藏层。通过在第二输入层和第二隐藏层之间添加第二嵌入层对输入数据进行降维处理,可以减小该待训练定RNN模型的计算量。
进一步地,该待训练RNN模型还可以包括第二dropout层,该第二dropout位于第二隐藏层和第二输出层之间,用于避免在模型训练过程中当训练样本较少时出现模型过拟合问题。具体的,在每次训练过程中,第二dropout层可以随机地让各个网络层的某些神经元节点不参与训练,相应地,该神经元对应的模型参数在该次训练过程中也不会进行更新。
例如,以该待训练RNN模型为LSTM网络模型为例,该LSTM网络模型的模型结构可以如图3B所示。参见图3B,该LSTM网络模型包括第二输入层、第二嵌入层、LSTM层、第二dropout层和第二输出层,且各层依次相连。
具体地,在基于该历史听歌序列,按照序列顺序对待训练RNN模型进行训练的过程中,可以将该历史听歌序列作为该待训练RNN模型的输入,得到每个歌曲的歌曲信息对应的输出数据,其中,每个歌曲的歌曲信息对应的输出数据用于指示该待训练RNN模型基于该歌曲的歌曲信息所确定的推荐歌曲,然后将每个歌曲的歌曲信息对应的输出数据与该历史听歌序列中该歌曲的下一首歌曲进行比较,并根据比较结果对该待训练RNN模型的模型参数进行调整,然后基于调整后的待训练RNN模型确定该指定RNN模型。
另外,在根据比较结果对该待训练RNN模型的模型参数进行调整的过程中,还需要结合下一首歌曲的样本标记进行调整。具体地,当下一首歌曲的样本标记为正样本标记时,需要根据比较结果,按照使得该待训练RNN模型的输出数据尽量趋近该下一首歌曲的原则对该待训练RNN模型的模型参数进行调整,当下一首歌曲的样本标记为负样本标记时,需要根据比较结果,按照使得该待训练RNN模型的输出数据尽量远离该下一首歌曲的原则对该待训练RNN模型的模型参数进行调整。
另外,实际听歌场景中,用户的听歌时间往往比较分散,因此该历史听歌序列还可能包括多个历史听歌子序列,每个历史听歌子序列用于指示一个听歌时间段内用户连续所听的多个歌曲,即每个历史听歌子序列由一个历史听歌时间段内连续播放的多个歌曲的歌曲信息按照歌曲播放的先后顺序组成得到。
当该历史听歌序列还包括多个历史听歌子序列时,为了提高训练效率,可以通过待训练RNN模型对该多个历史听歌子序列并行进行训练。但是实际应用中,各个历史听歌子序列长度可能不同,即各个历史听歌子序列所包括的歌曲数目不相等,对于这种历史听歌子序列只能分别单独进行训练。
本发明实施例中,为了提高训练效率,实现对多个历史听歌子序列的并行训练,可以预先对序列长度不同的多个历史听歌子序列进行序列补齐,以使该多个历史听歌子序列的序列长度相等,然后再对序列补齐后的多个历史听歌子序列进行并行训练。
具体地,基于该历史听歌序列,按照序列顺序对待训练RNN模型进行训练,得到该指定RNN模型的实现过程可以包括以下步骤3021)-3024):
3021)当该历史听歌序列包括多个历史听歌子序列,且该多个历史听歌子序列的序列长度不同时,从该多个历史听歌子序列中选择序列长度最长的历史听歌子序列,每个历史听歌子序列的序列长度用于指示对应历史听歌子序列包括的歌曲数目。
3022)按照选择的历史听歌子序列的序列长度,基于空白歌曲对其他历史听歌子序列进行序列补齐,以使该多个历史听歌子序列的序列长度相等。
例如,参见图3C,该历史听歌序列包括3个历史听歌子序列,分别为子序列1-3。其中,子序列1的序列长度为8,子序列2的序列长度为5,子序列3的序列长度为7。在这种情况下,可以按照子序列1的序列长度对其他子序列进行补齐,即在子序列2中增加3个空白歌曲,则子序列3中增加1个空白歌曲,从而使得这3个子序列的序列长度均为8。
3023)为序列补齐后的各个历史听歌子序列中的每个歌曲设置掩码。
为了区分实际歌曲和空白歌曲,还可以为序列补齐后的各个历史听歌子序列中的每个歌曲设置掩码,以通过掩码来区分。
具体地,对于序列补齐后的每个历史听歌子序列,可以将其中的空白歌曲的掩码设置为第一预设值,其他歌曲的掩码设置为第二预设值。例如,假设第一预设值为0,第二预设值为1时,图3C中各个歌曲对应的掩码可以如图3D所示。
3024)基于序列补齐后的该多个历史听歌子序列和序列补齐后的各个历史听歌子序列中每个歌曲的掩码,按照序列顺序并行对待训练RNN模型进行训练,得到该指定RNN模型。
对于序列补齐后的每个历史听歌子序列,在训练过程中根据其中的空白歌曲对待训练RNN模型的模型参数进行调整,将导致模型训练错误,而本发明实施例中,通过根据序列补齐后的各个历史听歌子序列中每个歌曲的掩码对待训练RNN模型进行训练,则可以解决这个问题。
具体地,对于该序列补齐后的多个历史听歌子序列中的任一历史听歌子序列,将该历史听歌子序列中的任一歌曲的歌曲信息作为该待训练RNN模型输入之后,在通过该待训练RNN模型的隐藏层对该歌曲的歌曲信息进行处理的过程中,可以分别计算得到当前处理步骤中隐藏层的输出数据和状态数据,然后再根据该歌曲的掩码确定最终当前处理步骤中隐藏层的输出数据和状态数据。
当该歌曲的掩码为第二预设值时,可以将计算得到当前处理步骤中隐藏层的输出数据st和状态数据ct确定为最终当前处理步骤中隐藏层的输出数据和状态数据;当该歌曲的掩码为第一预设值时,可以退回至上一处理步骤,将上一处理步骤中隐藏层的输出数据st-1和状态数据ct-1确定为最终当前处理步骤中隐藏层的输出数据和状态数据。
为了便于说明,本发明实施例将基于当前输入数据计算得到的当前处理步骤中隐藏层的输出数据和状态数据分别称为实际输出数据和实际状态数据,将最终确定的当前处理步骤中隐藏层的输出数据和状态数据分别称为掩码输出数据和掩码状态数据。实际应用中,可以将该歌曲的歌曲信息作为输入数据xt,采用上述公式(3)-(8)计算得到当前处理步骤中隐藏层的输出数据st和状态数据ct,然后根据歌曲的掩码和计算得到当前处理步骤中隐藏层的实际输出数据st和实际状态数据ct,确定得到当前处理步骤中隐藏层的掩码输出数据s′T和掩码状态数据c′T。
具体地,步骤3024)的操作可以为对于序列补齐后的该多个历史听歌子序列中的任一历史听歌子序列A,从该历史听歌子序列A中选择出一个歌曲,对选择出的歌曲执行以下处理,直至处理完该历史听歌子序列A中的最后一个歌曲的上一个歌曲为止:
基于上一处理过程中得到的掩码状态数据和掩码输出数据,以及该选择出的歌曲的歌曲信息和掩码,通过该第二输入层和该第二隐藏层确定得到该第二隐藏层在当前处理过程中的掩码状态数据和掩码输出数据;基于该第二隐藏层在当前处理过程中的掩码输出数据和该历史听歌子序列A中该选择出的歌曲的下一个歌曲的歌曲信息,通过该第二输出层确定该选择出的歌曲对应的目标函数。
当通过上述处理得到该历史听歌子序列A中除该最后一个歌曲之外的每个歌曲对应的目标函数时,基于该历史听歌子序列A中除该最后一个歌曲之外的每个歌曲对应的目标函数,确定该历史听歌子序列A的目标函数;当确定得到每个历史听歌子序列的目标函数时,基于每个历史听歌子序列的目标函数对该待训练RNN模型进行调整,得到该指定RNN模型。
其中,该上一处理过程是指对该历史听歌子序列A中该选择出的歌曲的上一个歌曲进行处理的过程。而且,当该选择出的歌曲为该历史听歌子序列A中的第一个歌曲时,该上一处理过程中得到的掩码状态数据和掩码输出数据分别为预设的初始状态数据和初始输出数据;当选择出的歌曲不是该历史听歌子序列A中的第一个歌曲时,该上一处理过程中得到的掩码状态数据和掩码输出数据分别为对该历史听歌子序列A中该选择出的歌曲的上一个歌曲进行处理得到的掩码状态数据和掩码输出数据。实际应用中,初始状态数据和初始输出数据可以分别设置为0,当然也可以根据实际需要设置为其他数据,本发明实施例对此不做限定。
其中,该目标函数用于对该待训练RNN模型的模型参数进行调整,例如,该目标函数可以为损失函数。
具体地,基于上一处理过程中得到的掩码状态数据和掩码输出数据,以及该选择出的歌曲的歌曲信息和掩码,通过该第二输入层和该第二隐藏层确定得到该第二隐藏层在当前处理过程中的掩码状态数据和掩码输出数据的操作可以包括如下步骤1)-4):
1)基于该上一处理过程中得到的掩码状态数据和掩码输出数据,以及该选择出的歌曲的歌曲信息,通过该第二输入层和该第二隐藏层确定该第二隐藏层在当前处理过程中的实际状态数据。
具体地,可以将选择出的歌曲的歌曲信息和掩码作为第二输入层的输入,通过第二输入层将择出的歌曲的歌曲信息和掩码传输至第二隐藏层,通过第二隐藏层基于上一处理过程中得到的掩码状态数据和掩码输出数据,对选择出的歌曲的歌曲信息进行处理,得到第二隐藏层在当前处理过程中的实际状态数据。
在第二隐藏层对选择出的歌曲的歌曲信息进行处理的过程中,可以将选择出的歌曲的歌曲信息作为上述公式3)-6)中的xt,并将上述公式3)-6)中的st-1和ct-1分别替换为上一处理过程中得到的掩码输出数据s′T-1和掩码状态数据c′T-1,采用替换后的公式3)-6)计算得到第二隐藏层在当前处理过程中的实际状态数据ct。
2)基于该选择出的歌曲的掩码、该第二隐藏层在当前处理过程中的实际状态数据、该上一处理过程中得到的掩码状态数据,确定该第二隐藏层在当前处理过程中的掩码状态数据。
得到第二隐藏层在当前处理过程中的实际状态数据之后,第二隐藏层即可基于该选择出的歌曲的掩码、该第二隐藏层在当前处理过程中的实际状态数据、该上一处理过程中得到的掩码状态数据,确定得到该第二隐藏层在当前处理过程中的掩码状态数据。
具体地,以第一预设值为0,第二预设值为1为例,可以基于该选择出的歌曲的掩码、该第二隐藏层在当前处理过程中的实际状态数据、该上一处理过程中得到的掩码状态数据,采用如下公式(1)确定该第二隐藏层在当前处理过程中的掩码状态数据:
c′T=mask*cT+(1-mask)*c′T-1 (1)
其中,该T是指该当前处理过程,该T-1是指该上一处理过程,该c′T和该cT分别为该第二隐藏层在当前处理过程中的掩码状态数据和实际状态数据,该mask为该选择出的歌曲的掩码,该c′T-1为该上一处理过程中得到的掩码状态数据。
3)基于该第二隐藏层在当前处理过程中的掩码状态数据,确定该第二隐藏层在当前处理过程中的实际输出数据。
具体地,可以将上述公式8)中的ct替换为第二隐藏层在当前处理过程中的掩码状态数据c′T,采用替换后的公式8)计算第二隐藏层在当前处理过程中的实际输出数据st。
4)基于该选择出的歌曲的掩码、该第二隐藏层在当前处理过程中的实际输出数据、该上一处理过程中得到的掩码输出数据,确定该第二隐藏层在当前处理过程中的掩码输出数据。
具体地,以第一预设值为0,第二预设值为1为例,可以基于该选择出的歌曲的掩码、该第二隐藏层在当前处理过程中的实际输出数据、该上一处理过程中得到的掩码输出数据,采用以下公式(2)确定该第二隐藏层在当前处理过程中的掩码输出数据:
s′T=mask*sT+(1-mask)*s′T-1 (2)
其中,该T是指该当前处理过程,该T-1是指该上一处理过程,该s′T和该sT分别为该第二隐藏层在当前处理过程中的掩码输出数据和实际输出数据,该mask为该选择出的歌曲的掩码,该s′T-1为该上一处理过程中得到的掩码输出数据。
通过上述基于掩码的操作,即可实现当该歌曲的掩码为1时,将计算得到当前处理步骤中隐藏层的实际输出数据st和实际状态数据ct作为当前处理步骤中隐藏层的掩码输出数据s′T和掩码状态数据c′T;当该歌曲的掩码为0时,可以退回至上一处理步骤,将上一处理步骤中隐藏层的掩码输出数据s′T-1和掩码状态数据c′T-1确定为当前处理步骤中隐藏层的掩码输出数据s′T和掩码状态数据c′T。
例如,对于图3C中的子序列2,通过待训练RNN模型对第8首空白歌曲进行处理得到的掩码输出数据和掩码状态数据将为对第5首歌曲进行处理得到的实际输出数据和实际状态数据。对于图3C中的子序列3,通过待训练RNN模型对第8首空白歌曲进行处理得到的掩码输出数据和掩码状态数据将为对第7首歌曲进行处理得到的实际输出数据和实际状态数据。
具体地,基于该历史听歌子序列A中除该最后一个歌曲之外的每个歌曲对应的目标函数,确定该历史听歌子序列A的目标函数的操作可以为:将历史听歌子序列A中除该最后一个歌曲之外的各个歌曲对应的目标函数进行相乘,将相乘结果确定为该历史听歌子序列A的目标函数。
具体地,基于每个历史听歌子序列的目标函数对该待训练RNN模型进行调整的操作可以为:将该历史听歌序列中的各个历史听歌子序列的目标函数进行相加,将相加结果确定为该历史听歌序列的目标函数,基于该历史听歌序列的目标函数对该待训练RNN模型的模型参数进行调整,以得到该指定RNN模型。
进一步地,当该待训练RNN模型为LSTM模型时,在该LSTM网络模型的LSTM层对历史听歌序列中的任一歌曲的歌曲信息进行处理时,可以将该歌曲的歌曲信息作为输入数据xt,采用上述公式(3)-(8)计算得到隐藏层的输出数据st。
而且,由上述公式(3)-(8)可知,忘记门、输入门、输出门和记忆状态的计算过程除了激活函数稍有不同外,它们具有下面相同的线性操作公式(9):
W*st-1+U*xt+b (9)
因此为了提高隐藏层的处理效率,在计算隐藏层的输出数据的过程中,可以将忘记门、输入门、输出门和记忆状态的权重参数合并进行并行化处理,即将Wf、Wi、Wo和Wc合并为W,将Uf、Ui、Uo和Uc合并为U,将bf、bi、bo和bc合并为b,这样每次处理过程中需要单独4步的操作,经过权重参数合并后,只需进行一次矩阵运算即可完成,从而提高了模型训练效率。
需要说明的是,本发明实施例仅是以由智能终端获取历史听歌序列,并基于历史听歌序列训练得到指定RNN为例进行说明,而实际应用中,还可以由服务器或其他设备获取历史听歌序列,并基于历史听歌序列训练得到指定RNN,也即是,上述步骤301-302的执行主体也可以为服务器或其他设备。
本发明实施例中,可以基于历史听歌序列对待训练RNN模型进行训练,得到指定RNN模型,由于该历史听歌序列是由历史上连续播放的多个歌曲的歌曲信息按照歌曲播放的先后顺序组合得到,因此在训练过程中待训练RNN模型可以自动学习到任意连续播放的两首歌之间的变化关系,并可以根据整个历史听歌序列挖掘出用户听歌过程中的兴趣变化规律。之后在基于该指定RNN模型进行歌曲推荐时,根据挖掘出的兴趣变化规律进行歌曲推荐,使得推荐的歌曲更加符合用户当前的兴趣变化和听歌需求,提高了歌曲推荐的准确度。
图4是本发明实施例提供的一种歌曲推荐装置的结构示意图,如图4所示,该歌曲推荐装置包括检测模块401、第一获取模块402、第二获取模块403、确定模块404和推荐模块405。
检测模块401,用于检测智能终端上的触摸操作;
第一获取模块402,用于获取该触摸操作对应的听歌行为;
第二获取模块403,用于根据该听歌行为,获取歌曲序列信息,该歌曲序列信息是指当前时刻和当前时刻之前且在阈值时间范围内的听歌行为所对应的歌曲信息;
确定模块404,用于将该歌曲序列信息作为指定RNN模型的输入,通过该指定RNN模型确定多个候选歌曲标识中推荐概率最大的候选歌曲标识,该推荐概率用于指示候选歌曲标识对应的歌曲为推荐歌曲的概率,该指定RNN模型是基于历史听歌序列对待训练RNN模型进行训练得到,该历史听歌序列是由历史上连续播放的多个歌曲的歌曲信息按照歌曲播放的先后顺序组合得到;
推荐模块405,用于将该推荐概率最大的候选歌曲标识对应的歌曲确定为推荐歌曲,对该推荐歌曲进行推荐。
可选地,该歌曲信息包括歌曲属性、播放时长和听歌操作信息,听歌操作包括收藏操作、下载操作、切歌操作或删除操作。
可选地,该指定RNN模型包括第一输入层、第一隐藏层和第一输出层,该第一输出层设置有多个候选歌曲标识;
该确定模块具体用于:
当该第一输出层为二叉树输出层时,基于该歌曲序列信息,通过该第一输入层和该第一隐藏层确定得到隐藏层输出数据;基于该隐藏层输出数据,通过该二叉树输出层确定得到指定推荐概率,该指定推荐概率为该多个候选歌曲标识的推荐概率中的最大推荐概率;将该指定推荐概率对应的候选歌曲标识确定为该推荐概率最大的候选歌曲标识;
当该第一输出层为非二叉树输出层时,基于该歌曲序列信息,通过该第一输入层和该第一隐藏层确定得到隐藏层输出数据;基于该隐藏层输出数据,通过该非二叉树输出层确定得到该多个候选歌曲标识的推荐概率;基于该多个候选歌曲标识的推荐概率,从该多个候选歌曲标识中确定该推荐概率最大的候选歌曲标识。
可选地,该推荐模块具体用于:
当该推荐概率最大的候选歌曲标识为候选歌曲标签时,将该候选歌曲标签指示的歌曲确定为该推荐歌曲;
当该推荐概率最大的候选歌曲标识为候选歌曲流派标签时,确定该候选歌曲流派标签指示的候选歌曲流派所包括的歌曲,基于该候选歌曲流派所包括的歌曲确定该推荐歌曲。
可选地,该指定RNN模型为长短期记忆LSTM网络模型或者门控递归单元GRU网络模型。
可选地,该装置还包括:
第三获取模块,用于获取该历史听歌序列,该历史听歌序列中的每个歌曲设置有样本标记,该样本标记由对应歌曲的歌曲信息确定得到;
其中,该样本标记为正样本标记或负样本标记,该正样本标记用于指示对应歌曲为感兴趣歌曲,该负样本标记用于指示对应歌曲为不感兴趣歌曲;
训练模块,用于基于该历史听歌序列,按照序列顺序对待训练RNN模型进行训练,得到该指定RNN模型。
可选地,该第三获取模块包括:
获取单元,用于获取历史上连续播放的多个歌曲的歌曲信息;
标记单元,用于基于该多个歌曲中每个歌曲的歌曲信息,为每个歌曲设置样本标记;
组合单元,用于将该多个歌曲的歌曲信息和样本标记按照歌曲播放的先后顺序进行序列组合,得到该历史听歌序列。
可选地,该历史听歌序列中的每个歌曲的歌曲信息包括歌曲属性、播放时长和听歌操作信息;
该标记单元具体用于:
对于该历史听歌序列中的任一歌曲A,当该歌曲A的播放时长大于或等于预设时长,和/或,该歌曲A的听歌操作信息指示对该歌曲A进行了收藏操作或下载操作时,为该歌曲A设置正样本标记;
当该歌曲A的播放时长小于预设时长,和/或,该歌曲A的听歌操作信息指示对该歌曲A进行了切歌操作或删除操作时,为该歌曲A设置负样本标记。
可选地,该训练模块包括:
选择单元,用于当该历史听歌序列包括多个历史听歌子序列,且该多个历史听歌子序列的序列长度不同时,从该多个历史听歌子序列中选择序列长度最长的历史听歌子序列,每个历史听歌子序列的序列长度用于指示对应历史听歌子序列包括的歌曲数目;
序列补齐单元,用于按照选择的历史听歌子序列的序列长度,基于空白歌曲对其他历史听歌子序列进行序列补齐,以使该多个历史听歌子序列的序列长度相等;
掩码设置单元,用于将序列补齐后的每个历史听歌子序列中的空白歌曲的掩码设置为第一预设值,其他歌曲的掩码设置为第二预设值;
训练单元,用于基于序列补齐后的该多个历史听歌子序列和序列补齐后的各个历史听歌子序列中每个歌曲的掩码,按照序列顺序并行对待训练RNN模型进行训练,得到该指定RNN模型。
可选地,该待训练RNN模型包括第二输入层、第二隐藏层和第二输出层;
该训练单元具体用于:
对于序列补齐后的该多个历史听歌子序列中的任一历史听歌子序列A,从该历史听歌子序列A中选择出一个歌曲,对选择出的歌曲执行以下处理,直至处理完该历史听歌子序列A中的最后一个歌曲的上一个歌曲为止:
基于上一处理过程中得到的掩码状态数据和掩码输出数据,以及该选择出的歌曲的歌曲信息和掩码,通过该第二输入层和该第二隐藏层确定得到该第二隐藏层在当前处理过程中的掩码状态数据和掩码输出数据,该上一处理过程是指对该历史听歌子序列A中该选择出的歌曲的上一个歌曲进行处理的过程;
其中,当该选择出的歌曲为该历史听歌子序列A中的第一个歌曲时,该上一处理过程中得到的掩码状态数据和掩码输出数据分别为预设的初始状态数据和初始输出数据;
基于该第二隐藏层在当前处理过程中的掩码输出数据和该历史听歌子序列A中该选择出的歌曲的下一个歌曲的歌曲信息,通过该第二输出层确定该选择出的歌曲对应的目标函数,该目标函数用于对该待训练RNN模型的模型参数进行调整;
当通过上述处理得到该历史听歌子序列A中除该最后一个歌曲之外的每个歌曲对应的目标函数时,基于该历史听歌子序列A中除该最后一个歌曲之外的每个歌曲对应的目标函数,确定该历史听歌子序列A的目标函数;
当确定得到每个历史听歌子序列的目标函数时,基于每个历史听歌子序列的目标函数对该待训练RNN模型进行调整,得到该指定RNN模型。
可选地,该训练单元具体用于:
基于该上一处理过程中得到的掩码状态数据和掩码输出数据,以及该选择出的歌曲的歌曲信息,通过该第二输入层和该第二隐藏层确定该第二隐藏层在当前处理过程中的实际状态数据;
基于该选择出的歌曲的掩码、该第二隐藏层在当前处理过程中的实际状态数据、该上一处理过程中得到的掩码状态数据,确定该第二隐藏层在当前处理过程中的掩码状态数据;
基于该第二隐藏层在当前处理过程中的掩码状态数据,确定该第二隐藏层在当前处理过程中的实际输出数据;
基于该选择出的歌曲的掩码、该第二隐藏层在当前处理过程中的实际输出数据、该上一处理过程中得到的掩码输出数据,确定该第二隐藏层在当前处理过程中的掩码输出数据。
可选地,该第一预设值为0,第二预设值为1;该训练单元具体用于:
基于该选择出的歌曲的掩码、该第二隐藏层在当前处理过程中的实际状态数据、该上一处理过程中得到的掩码状态数据,采用如下公式(1)确定该第二隐藏层在当前处理过程中的掩码状态数据:
c′T=mask*cT+(1-mask)*c′T-1 (1)
其中,该T是指该当前处理过程,该T-1是指该上一处理过程,该c′T和该cT分别为该第二隐藏层在当前处理过程中的掩码状态数据和实际状态数据,该mask为该选择出的歌曲的掩码,该c′T-1为该上一处理过程中得到的掩码状态数据。
可选地,该第一预设值为0,第二预设值为1;该训练单元具体用于:
基于该选择出的歌曲的掩码、该第二隐藏层在当前处理过程中的实际输出数据、该上一处理过程中得到的掩码输出数据,采用以下公式(2)确定该第二隐藏层在当前处理过程中的掩码输出数据:
s′T=mask*sT+(1-mask)*s′T-1 (2)
其中,该T是指该当前处理过程,该T-1是指该上一处理过程,该s′T和该sT分别为该第二隐藏层在当前处理过程中的掩码输出数据和实际输出数据,该mask为该选择出的歌曲的掩码,该s′T-1为该上一处理过程中得到的掩码输出数据。
本发明实施例中,由于该指定RNN模型是基于历史听歌序列对待训练RNN模型进行训练得到,且该历史听歌序列是由历史上连续播放的多个歌曲的歌曲信息按照歌曲播放的先后顺序组合得到,因此在训练过程中待训练RNN模型可以自动学习到任意连续播放的两首歌之间的变化关系,并可以根据整个历史听歌序列挖掘出用户听歌过程中的兴趣变化规律。之后可以获取智能终端上的触摸操作对应的听歌行为,根据该听歌行为获取歌曲序列信息,并基于该歌曲序列信息通过指定RNN模型进行推荐歌曲,而且在基于该歌曲序列信息通过指定RNN模型进行推荐歌曲的过程中,能够结合用户最近的听歌行为和挖掘出的兴趣变化规律进行歌曲推荐,使得推荐的歌曲更加符合用户当前的兴趣变化和听歌需求,提高了歌曲推荐的准确度。
需要说明的是:上述实施例提供的歌曲推荐装置在进行歌曲推荐时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的歌曲推荐装置与歌曲推荐实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图5是本发明实施例提供的一种服务器500的结构示意图。该服务器500可以是音乐平台的后台服务器。具体来讲:
服务器500包括中央处理单元(CPU)501、包括随机存取存储器(RAM)502和只读存储器(ROM)503的系统存储器504,以及连接系统存储器504和中央处理单元501的系统总线505。服务器500还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)506,和用于存储操作系统513、应用程序514和其他程序模块515的大容量存储设备507。
基本输入/输出系统506包括有用于显示信息的显示器508和用于用户输入信息的诸如鼠标、键盘之类的输入设备509。其中显示器508和输入设备509都通过连接到系统总线505的输入输出控制器510连接到中央处理单元501。基本输入/输出系统506还可以包括输入输出控制器510以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器510还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备507通过连接到系统总线505的大容量存储控制器(未示出)连接到中央处理单元501。大容量存储设备507及其相关联的计算机可读介质为服务器500提供非易失性存储。也就是说,大容量存储设备507可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器504和大容量存储设备507可以统称为存储器。
根据本发明的各种实施例,服务器500还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器500可以通过连接在系统总线505上的网络接口单元511连接到网络512,或者说,也可以使用网络接口单元511来连接到其他类型的网络或远程计算机系统(未示出)。
上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行,所述一个或者一个以上程序包含用于进行上述图1C、图2A或图3A实施例所述的歌曲推荐方法的指令。
在另一实施例中,还提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述图1C、图2A或图3A实施例所述的歌曲推荐方法。
图6示出了本发明一个示例性实施例提供的终端600的结构框图。该终端600可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio LayerIV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端600还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端600包括有:处理器601和存储器602。
处理器601可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器601可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器601可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器601还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器602中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器601所执行以实现本申请中方法实施例提供的歌曲推荐方法。
在一些实施例中,终端600还可选包括有:外围设备接口603和至少一个外围设备。处理器601、存储器602和外围设备接口603之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口603相连。具体地,外围设备包括:射频电路604、触摸显示屏605、摄像头606、音频电路607、定位组件608和电源609中的至少一种。
外围设备接口603可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器601和存储器602。在一些实施例中,处理器601、存储器602和外围设备接口603被集成在同一芯片或电路板上;在一些其他实施例中,处理器601、存储器602和外围设备接口603中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路604用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路604通过电磁信号与通信网络以及其他通信设备进行通信。射频电路604将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路604包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路604可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路604还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏605用于显示UI(UserInterface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏605是触摸显示屏时,显示屏605还具有采集在显示屏605的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器601进行处理。此时,显示屏605还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏605可以为一个,设置终端600的前面板;在另一些实施例中,显示屏605可以为至少两个,分别设置在终端600的不同表面或呈折叠设计;在再一些实施例中,显示屏605可以是柔性显示屏,设置在终端600的弯曲表面上或折叠面上。甚至,显示屏605还可以设置成非矩形的不规则图形,也即异形屏。显示屏605可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件606用于采集图像或视频。可选地,摄像头组件606包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(VirtualReality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件606还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路607可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器601进行处理,或者输入至射频电路604以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端600的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器601或射频电路604的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路607还可以包括耳机插孔。
定位组件608用于定位终端600的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件608可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
电源609用于为终端600中的各个组件进行供电。电源609可以是交流电、直流电、一次性电池或可充电电池。当电源609包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端600还包括有一个或多个传感器610。该一个或多个传感器610包括但不限于:加速度传感器611、陀螺仪传感器612、压力传感器613、指纹传感器614、光学传感器615以及接近传感器616。
加速度传感器611可以检测以终端600建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器611可以用于检测重力加速度在三个坐标轴上的分量。处理器601可以根据加速度传感器611采集的重力加速度信号,控制触摸显示屏605以横向视图或纵向视图进行用户界面的显示。加速度传感器611还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器612可以检测终端600的机体方向及转动角度,陀螺仪传感器612可以与加速度传感器611协同采集用户对终端600的3D动作。处理器601根据陀螺仪传感器612采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器613可以设置在终端600的侧边框和/或触摸显示屏605的下层。当压力传感器613设置在终端600的侧边框时,可以检测用户对终端600的握持信号,由处理器601根据压力传感器613采集的握持信号进行左右手识别或快捷操作。当压力传感器613设置在触摸显示屏605的下层时,由处理器601根据用户对触摸显示屏605的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器614用于采集用户的指纹,由处理器601根据指纹传感器614采集到的指纹识别用户的身份,或者,由指纹传感器614根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器601授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器614可以被设置终端600的正面、背面或侧面。当终端600上设置有物理按键或厂商Logo时,指纹传感器614可以与物理按键或厂商Logo集成在一起。
光学传感器615用于采集环境光强度。在一个实施例中,处理器601可以根据光学传感器615采集的环境光强度,控制触摸显示屏605的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏605的显示亮度;当环境光强度较低时,调低触摸显示屏605的显示亮度。在另一个实施例中,处理器601还可以根据光学传感器615采集的环境光强度,动态调整摄像头组件606的拍摄参数。
接近传感器616,也称距离传感器,通常设置在终端600的前面板。接近传感器616用于采集用户与终端600的正面之间的距离。在一个实施例中,当接近传感器616检测到用户与终端600的正面之间的距离逐渐变小时,由处理器601控制触摸显示屏605从亮屏状态切换为息屏状态;当接近传感器616检测到用户与终端600的正面之间的距离逐渐变大时,由处理器601控制触摸显示屏605从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图6中示出的结构并不构成对终端600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在本实施例中,终端还包括有一个或者一个以上的程序,这一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行,所述一个或者一个以上程序包含用于进行上述图1C、图2A或图3A实施例所述的歌曲推荐方法的指令。
在另一实施例中,还提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述图1C、图2A或图3A实施例所述的歌曲推荐方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (28)
1.一种歌曲推荐方法,所述方法应用于智能终端,其特征在于,所述方法包括:
检测所述智能终端上的触摸操作;
获取所述触摸操作对应的听歌行为;
根据所述听歌行为,获取歌曲序列信息,所述歌曲序列信息是指当前时刻和当前时刻之前且在阈值时间范围内的听歌行为所对应的歌曲信息;
将所述歌曲序列信息作为指定RNN模型的输入,通过所述指定RNN模型确定多个候选歌曲标识中推荐概率最大的候选歌曲标识,所述推荐概率用于指示候选歌曲标识对应的歌曲为推荐歌曲的概率,所述指定RNN模型是基于历史听歌序列对待训练RNN模型进行训练得到,所述历史听歌序列是由历史上连续播放的多个歌曲的歌曲信息按照歌曲播放的先后顺序组合得到;
将所述推荐概率最大的候选歌曲标识对应的歌曲确定为推荐歌曲,对所述推荐歌曲进行推荐。
2.如权利要求1所述的方法,其特征在于,所述歌曲信息包括歌曲属性、播放时长和听歌操作信息,听歌操作包括收藏操作、下载操作、切歌操作或删除操作。
3.如权利要求1所述的方法,其特征在于,所述指定RNN模型包括第一输入层、第一隐藏层和第一输出层,所述第一输出层设置有所述多个候选歌曲标识;
所述通过所述指定RNN模型确定多个候选歌曲标识中推荐概率最大的候选歌曲标识,包括:
当所述第一输出层为二叉树输出层时,基于所述歌曲序列信息,通过所述第一输入层和所述第一隐藏层确定得到隐藏层输出数据;基于所述隐藏层输出数据,通过所述二叉树输出层确定得到指定推荐概率,所述指定推荐概率为所述多个候选歌曲标识的推荐概率中的最大推荐概率;将所述指定推荐概率对应的候选歌曲标识确定为所述推荐概率最大的候选歌曲标识;
当所述第一输出层为非二叉树输出层时,基于所述歌曲序列信息,通过所述第一输入层和所述第一隐藏层确定得到隐藏层输出数据;基于所述隐藏层输出数据,通过所述非二叉树输出层确定得到所述多个候选歌曲标识的推荐概率;基于所述多个候选歌曲标识的推荐概率,从所述多个候选歌曲标识中确定所述推荐概率最大的候选歌曲标识。
4.如权利要求1所述的方法,其特征在于,所述将所述推荐概率最大的候选歌曲标识对应的歌曲确定为推荐歌曲,包括:
当所述推荐概率最大的候选歌曲标识为候选歌曲标签时,将所述候选歌曲标签指示的歌曲确定为所述推荐歌曲;
当所述推荐概率最大的候选歌曲标识为候选歌曲流派标签时,确定所述候选歌曲流派标签指示的候选歌曲流派所包括的歌曲,基于所述候选歌曲流派所包括的歌曲确定所述推荐歌曲。
5.如权利要求1所述的方法,其特征在于,所述指定RNN模型为长短期记忆LSTM网络模型或者门控递归单元GRU网络模型。
6.如权利要求1-5任一所述的方法,其特征在于,所述通过所述指定RNN模型确定多个候选歌曲标识中推荐概率最大的候选歌曲标识之前,还包括:
获取所述历史听歌序列,所述历史听歌序列中的每个歌曲设置有样本标记,所述样本标记由对应歌曲的歌曲信息确定得到;
其中,所述样本标记为正样本标记或负样本标记,所述正样本标记用于指示对应歌曲为感兴趣歌曲,所述负样本标记用于指示对应歌曲为不感兴趣歌曲;
基于所述历史听歌序列,按照序列顺序对待训练RNN模型进行训练,得到所述指定RNN模型。
7.如权利要求6所述的方法,其特征在于,所述获取所述历史听歌序列,包括:
获取历史上连续播放的多个歌曲的歌曲信息;
基于所述多个歌曲中每个歌曲的歌曲信息,为每个歌曲设置样本标记;
将所述多个歌曲的歌曲信息和样本标记按照歌曲播放的先后顺序进行序列组合,得到所述历史听歌序列。
8.如权利要求7所述的方法,其特征在于,所述历史听歌序列中的每个歌曲的歌曲信息包括歌曲属性、播放时长和听歌操作信息;
所述基于所述多个歌曲中每个歌曲的歌曲信息,为每个歌曲的歌曲信息设置样本标记,包括:
对于所述历史听歌序列中的任一歌曲A,当所述歌曲A的播放时长大于或等于预设时长,和/或,所述歌曲A的听歌操作信息指示对所述歌曲A进行了收藏操作或下载操作时,为所述歌曲A设置正样本标记;
当所述歌曲A的播放时长小于预设时长,和/或,所述歌曲A的听歌操作信息指示对所述歌曲A进行了切歌操作或删除操作时,为所述歌曲A设置负样本标记。
9.如权利要求6所述的方法,其特征在于,所述基于所述历史听歌序列,按照序列顺序对待训练RNN模型进行训练,得到所述指定RNN模型,包括:
当所述历史听歌序列包括多个历史听歌子序列,且所述多个历史听歌子序列的序列长度不同时,从所述多个历史听歌子序列中选择序列长度最长的历史听歌子序列,每个历史听歌子序列的序列长度用于指示对应历史听歌子序列包括的歌曲数目;
按照选择的历史听歌子序列的序列长度,基于空白歌曲对其他历史听歌子序列进行序列补齐,以使所述多个历史听歌子序列的序列长度相等;
将序列补齐后的每个历史听歌子序列中的空白歌曲的掩码设置为第一预设值,其他歌曲的掩码设置为第二预设值;
基于序列补齐后的所述多个历史听歌子序列和序列补齐后的各个历史听歌子序列中每个歌曲的掩码,按照序列顺序并行对所述待训练RNN模型进行训练,得到所述指定RNN模型。
10.如权利要求9所述的方法,其特征在于,所述待训练RNN模型包括第二输入层、第二隐藏层和第二输出层;
所述基于序列补齐后的所述多个历史听歌子序列和序列补齐后的各个历史听歌子序列中每个歌曲的掩码,按照序列顺序并行对待训练RNN模型进行训练,包括:
对于序列补齐后的所述多个历史听歌子序列中的任一历史听歌子序列A,从所述历史听歌子序列A中选择出一个歌曲,对选择出的歌曲执行以下处理,直至处理完所述历史听歌子序列A中的最后一个歌曲的上一个歌曲为止:
基于上一处理过程中得到的掩码状态数据和掩码输出数据,以及所述选择出的歌曲的歌曲信息和掩码,通过所述第二输入层和所述第二隐藏层确定得到所述第二隐藏层在当前处理过程中的掩码状态数据和掩码输出数据,所述上一处理过程是指对所述历史听歌子序列A中所述选择出的歌曲的上一个歌曲进行处理的过程;
其中,当所述选择出的歌曲为所述历史听歌子序列A中的第一个歌曲时,所述上一处理过程中得到的掩码状态数据和掩码输出数据分别为预设的初始状态数据和初始输出数据;
基于所述第二隐藏层在当前处理过程中的掩码输出数据和所述历史听歌子序列A中所述选择出的歌曲的下一个歌曲的歌曲信息,通过所述第二输出层确定所述选择出的歌曲对应的目标函数,所述目标函数用于对所述待训练RNN模型的模型参数进行调整;
当通过上述处理得到所述历史听歌子序列A中除所述最后一个歌曲之外的每个歌曲对应的目标函数时,基于所述历史听歌子序列A中除所述最后一个歌曲之外的每个歌曲对应的目标函数,确定所述历史听歌子序列A的目标函数;
当确定得到每个历史听歌子序列的目标函数时,基于每个历史听歌子序列的目标函数对所述待训练RNN模型进行调整,得到所述指定RNN模型。
11.如权利要求10所述的方法,其特征在于,所述基于上一处理过程中得到的掩码状态数据和掩码输出数据,以及所述选择出的歌曲的歌曲信息和掩码,通过所述第二输入层和所述第二隐藏层确定得到所述第二隐藏层在当前处理过程中的掩码状态数据和掩码输出数据,包括:
基于所述上一处理过程中得到的掩码状态数据和掩码输出数据,以及所述选择出的歌曲的歌曲信息,通过所述第二输入层和所述第二隐藏层确定所述第二隐藏层在当前处理过程中的实际状态数据;
基于所述选择出的歌曲的掩码、所述第二隐藏层在当前处理过程中的实际状态数据、所述上一处理过程中得到的掩码状态数据,确定所述第二隐藏层在当前处理过程中的掩码状态数据;
基于所述第二隐藏层在当前处理过程中的掩码状态数据,确定所述第二隐藏层在当前处理过程中的实际输出数据;
基于所述选择出的歌曲的掩码、所述第二隐藏层在当前处理过程中的实际输出数据、所述上一处理过程中得到的掩码输出数据,确定所述第二隐藏层在当前处理过程中的掩码输出数据。
12.如权利要求11所述的方法,其特征在于,所述第一预设值为0,第二预设值为1;
所述基于所述选择出的歌曲的掩码、所述第二隐藏层在当前处理过程中的实际状态数据、所述上一处理过程中得到的掩码状态数据,确定所述第二隐藏层在当前处理过程中的掩码状态数据,包括:
基于所述选择出的歌曲的掩码、所述第二隐藏层在当前处理过程中的实际状态数据、所述上一处理过程中得到的掩码状态数据,采用如下公式(1)确定所述第二隐藏层在当前处理过程中的掩码状态数据:
c′T=mask*cT+(1-mask)*c′T-1 (1)
其中,所述T是指所述当前处理过程,所述T-1是指所述上一处理过程,所述c′T和所述cT分别为所述第二隐藏层在当前处理过程中的掩码状态数据和实际状态数据,所述mask为所述选择出的歌曲的掩码,所述c′T-1为所述上一处理过程中得到的掩码状态数据。
13.如权利要求11所述的方法,其特征在于,所述第一预设值为0,第二预设值为1;
所述基于所述选择出的歌曲的掩码、所述第二隐藏层在当前处理过程中的实际输出数据、所述上一处理过程中得到的掩码输出数据,确定所述第二隐藏层在当前处理过程中的掩码输出数据,包括:
基于所述选择出的歌曲的掩码、所述第二隐藏层在当前处理过程中的实际输出数据、所述上一处理过程中得到的掩码输出数据,采用以下公式(2)确定所述第二隐藏层在当前处理过程中的掩码输出数据:
s′T=mask*sT+(1-mask)*s′T-1 (2)
其中,所述T是指所述当前处理过程,所述T-1是指所述上一处理过程,所述s′T和所述sT分别为所述第二隐藏层在当前处理过程中的掩码输出数据和实际输出数据,所述mask为所述选择出的歌曲的掩码,所述s′T-1为所述上一处理过程中得到的掩码输出数据。
14.一种歌曲推荐装置,所述装置应用于智能终端,其特征在于,所述装置包括:
检测模块,用于检测所述智能终端上的触摸操作;
第一获取模块,用于获取所述触摸操作对应的听歌行为;
第二获取模块,用于根据所述听歌行为,获取歌曲序列信息,所述歌曲序列信息是指当前时刻和当前时刻之前且在阈值时间范围内的听歌行为所对应的歌曲信息;
确定模块,用于将所述歌曲序列信息作为指定RNN模型的输入,通过所述指定RNN模型确定多个候选歌曲标识中推荐概率最大的候选歌曲标识,所述推荐概率用于指示候选歌曲标识对应的歌曲为推荐歌曲的概率,所述指定RNN模型是基于历史听歌序列对待训练RNN模型进行训练得到,所述历史听歌序列是由历史上连续播放的多个歌曲的歌曲信息按照歌曲播放的先后顺序组合得到;
推荐模块,用于将所述推荐概率最大的候选歌曲标识对应的歌曲确定为推荐歌曲,对所述推荐歌曲进行推荐。
15.如权利要求14所述的装置,其特征在于,所述歌曲信息包括歌曲属性、播放时长和听歌操作信息,听歌操作包括收藏操作、下载操作、切歌操作或删除操作。
16.如权利要求14所述的装置,其特征在于,所述指定RNN模型包括第一输入层、第一隐藏层和第一输出层,所述第一输出层设置有所述多个候选歌曲标识;所述确定模块具体用于:
当所述第一输出层为二叉树输出层时,基于所述歌曲序列信息,通过所述第一输入层和所述第一隐藏层确定得到隐藏层输出数据;基于所述隐藏层输出数据,通过所述二叉树输出层确定得到指定推荐概率,所述指定推荐概率为所述多个候选歌曲标识的推荐概率中的最大推荐概率;将所述指定推荐概率对应的候选歌曲标识确定为所述推荐概率最大的候选歌曲标识;
当所述第一输出层为非二叉树输出层时,基于所述歌曲序列信息,通过所述第一输入层和所述第一隐藏层确定得到隐藏层输出数据;基于所述隐藏层输出数据,通过所述非二叉树输出层确定得到所述多个候选歌曲标识的推荐概率;基于所述多个候选歌曲标识的推荐概率,从所述多个候选歌曲标识中确定所述推荐概率最大的候选歌曲标识。
17.如权利要求14所述的装置,其特征在于,所述推荐模块具体用于:
当所述推荐概率最大的候选歌曲标识为候选歌曲标签时,将所述候选歌曲标签指示的歌曲确定为所述推荐歌曲;
当所述推荐概率最大的候选歌曲标识为候选歌曲流派标签时,确定所述候选歌曲流派标签指示的候选歌曲流派所包括的歌曲,基于所述候选歌曲流派所包括的歌曲确定所述推荐歌曲。
18.如权利要求14所述的装置,其特征在于,所述指定RNN模型为长短期记忆LSTM网络模型或者门控递归单元GRU网络模型。
19.如权利要求14-18任一所述的装置,其特征在于,所述装置还包括:
第三获取模块,用于获取所述历史听歌序列,所述历史听歌序列中的每个歌曲设置有样本标记,所述样本标记由对应歌曲的歌曲信息确定得到;
其中,所述样本标记为正样本标记或负样本标记,所述正样本标记用于指示对应歌曲为感兴趣歌曲,所述负样本标记用于指示对应歌曲为不感兴趣歌曲;
训练模块,用于基于所述历史听歌序列,按照序列顺序对待训练RNN模型进行训练,得到所述指定RNN模型。
20.如权利要求19所述的装置,其特征在于,所述第三获取模块包括:
获取单元,用于获取历史上连续播放的多个歌曲的歌曲信息;
标记单元,用于基于所述多个歌曲中每个歌曲的歌曲信息,为每个歌曲设置样本标记;
组合单元,用于将所述多个歌曲的歌曲信息和样本标记按照歌曲播放的先后顺序进行序列组合,得到所述历史听歌序列。
21.如权利要求20所述的装置,其特征在于,所述历史听歌序列中的每个歌曲的歌曲信息包括歌曲属性、播放时长和听歌操作信息;
所述标记单元具体用于:
对于所述历史听歌序列中的任一歌曲A,当所述歌曲A的播放时长大于或等于预设时长,和/或,所述歌曲A的听歌操作信息指示对所述歌曲A进行了收藏操作或下载操作时,为所述歌曲A设置正样本标记;
当所述歌曲A的播放时长小于预设时长,和/或,所述歌曲A的听歌操作信息指示对所述歌曲A进行了切歌操作或删除操作时,为所述歌曲A设置负样本标记。
22.如权利要求19所述的装置,其特征在于,所述训练模块包括:
选择单元,用于当所述历史听歌序列包括多个历史听歌子序列,且所述多个历史听歌子序列的序列长度不同时,从所述多个历史听歌子序列中选择序列长度最长的历史听歌子序列,每个历史听歌子序列的序列长度用于指示对应历史听歌子序列包括的歌曲数目;
序列补齐单元,用于按照选择的历史听歌子序列的序列长度,基于空白歌曲对其他历史听歌子序列进行序列补齐,以使所述多个历史听歌子序列的序列长度相等;
掩码设置单元,用于将序列补齐后的每个历史听歌子序列中的空白歌曲的掩码设置为第一预设值,其他歌曲的掩码设置为第二预设值;
训练单元,用于基于序列补齐后的所述多个历史听歌子序列和序列补齐后的各个历史听歌子序列中每个歌曲的掩码,按照序列顺序并行对待训练RNN模型进行训练,得到所述指定RNN模型。
23.如权利要求22所述的装置,其特征在于,所述待训练RNN模型包括第二输入层、第二隐藏层和第二输出层,所述训练单元具体用于:
对于序列补齐后的所述多个历史听歌子序列中的任一历史听歌子序列A,从所述历史听歌子序列A中选择出一个歌曲,对选择出的歌曲执行以下处理,直至处理完所述历史听歌子序列A中的最后一个歌曲的上一个歌曲为止:
基于上一处理过程中得到的掩码状态数据和掩码输出数据,以及所述选择出的歌曲的歌曲信息和掩码,通过所述第二输入层和所述第二隐藏层确定得到所述第二隐藏层在当前处理过程中的掩码状态数据和掩码输出数据,所述上一处理过程是指对所述历史听歌子序列A中所述选择出的歌曲的上一个歌曲进行处理的过程;
其中,当所述选择出的歌曲为所述历史听歌子序列A中的第一个歌曲时,所述上一处理过程中得到的掩码状态数据和掩码输出数据分别为预设的初始状态数据和初始输出数据;
基于所述第二隐藏层在当前处理过程中的掩码输出数据和所述历史听歌子序列A中所述选择出的歌曲的下一个歌曲的歌曲信息,通过所述第二输出层确定所述选择出的歌曲对应的目标函数,所述目标函数用于对所述待训练RNN模型的模型参数进行调整;
当通过上述处理得到所述历史听歌子序列A中除所述最后一个歌曲之外的每个歌曲对应的目标函数时,基于所述历史听歌子序列A中除所述最后一个歌曲之外的每个歌曲对应的目标函数,确定所述历史听歌子序列A的目标函数;
当确定得到每个历史听歌子序列的目标函数时,基于每个历史听歌子序列的目标函数对所述待训练RNN模型进行调整,得到所述指定RNN模型。
24.如权利要求23所述的装置,其特征在于,所述训练单元具体用于:
基于所述上一处理过程中得到的掩码状态数据和掩码输出数据,以及所述选择出的歌曲的歌曲信息,通过所述第二输入层和所述第二隐藏层确定所述第二隐藏层在当前处理过程中的实际状态数据;
基于所述选择出的歌曲的掩码、所述第二隐藏层在当前处理过程中的实际状态数据、所述上一处理过程中得到的掩码状态数据,确定所述第二隐藏层在当前处理过程中的掩码状态数据;
基于所述第二隐藏层在当前处理过程中的掩码状态数据,确定所述第二隐藏层在当前处理过程中的实际输出数据;
基于所述选择出的歌曲的掩码、所述第二隐藏层在当前处理过程中的实际输出数据、所述上一处理过程中得到的掩码输出数据,确定所述第二隐藏层在当前处理过程中的掩码输出数据。
25.如权利要求24所述的装置,其特征在于,所述第一预设值为0,第二预设值为1;
所述训练单元具体用于:
基于所述选择出的歌曲的掩码、所述第二隐藏层在当前处理过程中的实际状态数据、所述上一处理过程中得到的掩码状态数据,采用如下公式(1)确定所述第二隐藏层在当前处理过程中的掩码状态数据:
c′T=mask*cT+(1-mask)*c′T-1 (1)
其中,所述T是指所述当前处理过程,所述T-1是指所述上一处理过程,所述c′T和所述cT分别为所述第二隐藏层在当前处理过程中的掩码状态数据和实际状态数据,所述mask为所述选择出的歌曲的掩码,所述c′T-1为所述上一处理过程中得到的掩码状态数据。
26.如权利要求24所述的装置,其特征在于,所述第一预设值为0,第二预设值为1;
所述训练单元具体用于:
基于所述选择出的歌曲的掩码、所述第二隐藏层在当前处理过程中的实际输出数据、所述上一处理过程中得到的掩码输出数据,采用以下公式(2)确定所述第二隐藏层在当前处理过程中的掩码输出数据:
s′T=mask*sT+(1-mask)*s′T-1 (2)
其中,所述T是指所述当前处理过程,所述T-1是指所述上一处理过程,所述s′T和所述sT分别为所述第二隐藏层在当前处理过程中的掩码输出数据和实际输出数据,所述mask为所述选择出的歌曲的掩码,所述s′T-1为所述上一处理过程中得到的掩码输出数据。
27.一种歌曲推荐装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器被配置为执行权利要求1-13所述的任一项方法的步骤。
28.一种计算机可读存储介质,其特征在于,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-13任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810121493.2A CN108197327B (zh) | 2018-02-07 | 2018-02-07 | 歌曲推荐方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810121493.2A CN108197327B (zh) | 2018-02-07 | 2018-02-07 | 歌曲推荐方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108197327A true CN108197327A (zh) | 2018-06-22 |
CN108197327B CN108197327B (zh) | 2020-07-31 |
Family
ID=62593136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810121493.2A Active CN108197327B (zh) | 2018-02-07 | 2018-02-07 | 歌曲推荐方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108197327B (zh) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984731A (zh) * | 2018-07-12 | 2018-12-11 | 腾讯音乐娱乐科技(深圳)有限公司 | 歌单推荐方法、装置及存储介质 |
CN109085980A (zh) * | 2018-08-02 | 2018-12-25 | 肇庆市高新区甜慕新能源技术有限公司 | 一种控制媒体文件播放的设备及方法 |
CN109543132A (zh) * | 2018-11-22 | 2019-03-29 | 深圳墨世科技有限公司 | 内容推荐方法、装置、电子设备及存储介质 |
CN109710805A (zh) * | 2018-12-13 | 2019-05-03 | 百度在线网络技术(北京)有限公司 | 基于兴趣簇的视频交互方法和装置 |
CN110232911A (zh) * | 2019-06-13 | 2019-09-13 | 南京地平线集成电路有限公司 | 跟唱识别方法、装置、存储介质及电子设备 |
CN110276446A (zh) * | 2019-06-26 | 2019-09-24 | 北京百度网讯科技有限公司 | 模型训练和选择推荐信息的方法和装置 |
CN110413894A (zh) * | 2019-07-31 | 2019-11-05 | 腾讯科技(深圳)有限公司 | 内容推荐模型的训练方法、内容推荐的方法及相关装置 |
CN110457585A (zh) * | 2019-08-13 | 2019-11-15 | 腾讯科技(深圳)有限公司 | 负面文本的推送方法、装置、系统及计算机设备 |
CN110781386A (zh) * | 2019-10-10 | 2020-02-11 | 支付宝(杭州)信息技术有限公司 | 信息推荐、布隆过滤器的创建方法及装置 |
WO2020029332A1 (zh) * | 2018-08-09 | 2020-02-13 | 厦门亿联网络技术股份有限公司 | 一种基于rnn的实时会议降噪方法及装置 |
CN110807693A (zh) * | 2019-11-04 | 2020-02-18 | 上海喜马拉雅科技有限公司 | 专辑的推荐方法、装置、设备和存储介质 |
CN110830595A (zh) * | 2019-12-17 | 2020-02-21 | 詹华洋 | 一种个性化音乐推送方法及系统 |
CN110909201A (zh) * | 2019-11-27 | 2020-03-24 | 掌阅科技股份有限公司 | 基于播放页面的内容分发方法、计算设备及计算机存储介质 |
CN110930969A (zh) * | 2019-10-14 | 2020-03-27 | 科大讯飞股份有限公司 | 背景音乐的确定方法及相关设备 |
CN110990621A (zh) * | 2019-12-16 | 2020-04-10 | 腾讯科技(深圳)有限公司 | 歌曲推荐方法及装置 |
CN111046286A (zh) * | 2019-12-12 | 2020-04-21 | 腾讯科技(深圳)有限公司 | 一种对象推荐方法、装置、以及计算机存储介质 |
CN111199728A (zh) * | 2018-10-31 | 2020-05-26 | 阿里巴巴集团控股有限公司 | 训练数据获取方法及装置和智能音箱、智能电视 |
CN111316199A (zh) * | 2018-10-16 | 2020-06-19 | 华为技术有限公司 | 一种信息处理方法及电子设备 |
CN111753124A (zh) * | 2019-03-29 | 2020-10-09 | Tcl集团股份有限公司 | 一种音乐推荐方法及服务器 |
CN111898018A (zh) * | 2019-05-06 | 2020-11-06 | 北京达佳互联信息技术有限公司 | 一种虚拟资源的发送方法、装置、电子设备及存储介质 |
CN113781087A (zh) * | 2021-01-29 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 推荐对象的召回方法及装置、存储介质、电子设备 |
CN114461168A (zh) * | 2022-01-06 | 2022-05-10 | 斑马网络技术有限公司 | 一种数据获取的方法、装置、系统和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970873A (zh) * | 2014-05-14 | 2014-08-06 | 中国联合网络通信集团有限公司 | 一种音乐推荐方法和系统 |
CN104217729A (zh) * | 2013-05-31 | 2014-12-17 | 杜比实验室特许公司 | 音频处理方法和音频处理装置以及训练方法 |
CN105959374A (zh) * | 2016-05-12 | 2016-09-21 | 腾讯科技(深圳)有限公司 | 一种数据推荐方法及其设备 |
US20170139912A1 (en) * | 2013-03-18 | 2017-05-18 | Spotify Ab | Cross media recommendation |
-
2018
- 2018-02-07 CN CN201810121493.2A patent/CN108197327B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170139912A1 (en) * | 2013-03-18 | 2017-05-18 | Spotify Ab | Cross media recommendation |
CN104217729A (zh) * | 2013-05-31 | 2014-12-17 | 杜比实验室特许公司 | 音频处理方法和音频处理装置以及训练方法 |
CN103970873A (zh) * | 2014-05-14 | 2014-08-06 | 中国联合网络通信集团有限公司 | 一种音乐推荐方法和系统 |
CN105959374A (zh) * | 2016-05-12 | 2016-09-21 | 腾讯科技(深圳)有限公司 | 一种数据推荐方法及其设备 |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984731A (zh) * | 2018-07-12 | 2018-12-11 | 腾讯音乐娱乐科技(深圳)有限公司 | 歌单推荐方法、装置及存储介质 |
CN109085980A (zh) * | 2018-08-02 | 2018-12-25 | 肇庆市高新区甜慕新能源技术有限公司 | 一种控制媒体文件播放的设备及方法 |
WO2020029332A1 (zh) * | 2018-08-09 | 2020-02-13 | 厦门亿联网络技术股份有限公司 | 一种基于rnn的实时会议降噪方法及装置 |
CN111316199B (zh) * | 2018-10-16 | 2022-08-19 | 华为技术有限公司 | 一种信息处理方法及电子设备 |
CN111316199A (zh) * | 2018-10-16 | 2020-06-19 | 华为技术有限公司 | 一种信息处理方法及电子设备 |
CN111199728A (zh) * | 2018-10-31 | 2020-05-26 | 阿里巴巴集团控股有限公司 | 训练数据获取方法及装置和智能音箱、智能电视 |
CN109543132A (zh) * | 2018-11-22 | 2019-03-29 | 深圳墨世科技有限公司 | 内容推荐方法、装置、电子设备及存储介质 |
CN109710805B (zh) * | 2018-12-13 | 2022-03-04 | 百度在线网络技术(北京)有限公司 | 基于兴趣簇的视频交互方法和装置 |
CN109710805A (zh) * | 2018-12-13 | 2019-05-03 | 百度在线网络技术(北京)有限公司 | 基于兴趣簇的视频交互方法和装置 |
CN111753124A (zh) * | 2019-03-29 | 2020-10-09 | Tcl集团股份有限公司 | 一种音乐推荐方法及服务器 |
CN111898018A (zh) * | 2019-05-06 | 2020-11-06 | 北京达佳互联信息技术有限公司 | 一种虚拟资源的发送方法、装置、电子设备及存储介质 |
CN110232911A (zh) * | 2019-06-13 | 2019-09-13 | 南京地平线集成电路有限公司 | 跟唱识别方法、装置、存储介质及电子设备 |
CN110232911B (zh) * | 2019-06-13 | 2022-04-05 | 南京地平线集成电路有限公司 | 跟唱识别方法、装置、存储介质及电子设备 |
CN110276446A (zh) * | 2019-06-26 | 2019-09-24 | 北京百度网讯科技有限公司 | 模型训练和选择推荐信息的方法和装置 |
CN110276446B (zh) * | 2019-06-26 | 2021-07-02 | 北京百度网讯科技有限公司 | 模型训练和选择推荐信息的方法和装置 |
CN110413894A (zh) * | 2019-07-31 | 2019-11-05 | 腾讯科技(深圳)有限公司 | 内容推荐模型的训练方法、内容推荐的方法及相关装置 |
CN110413894B (zh) * | 2019-07-31 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 内容推荐模型的训练方法、内容推荐的方法及相关装置 |
CN110457585B (zh) * | 2019-08-13 | 2023-11-07 | 腾讯科技(深圳)有限公司 | 负面文本的推送方法、装置、系统及计算机设备 |
CN110457585A (zh) * | 2019-08-13 | 2019-11-15 | 腾讯科技(深圳)有限公司 | 负面文本的推送方法、装置、系统及计算机设备 |
CN110781386A (zh) * | 2019-10-10 | 2020-02-11 | 支付宝(杭州)信息技术有限公司 | 信息推荐、布隆过滤器的创建方法及装置 |
CN110930969A (zh) * | 2019-10-14 | 2020-03-27 | 科大讯飞股份有限公司 | 背景音乐的确定方法及相关设备 |
CN110930969B (zh) * | 2019-10-14 | 2024-02-13 | 科大讯飞股份有限公司 | 背景音乐的确定方法及相关设备 |
CN110807693A (zh) * | 2019-11-04 | 2020-02-18 | 上海喜马拉雅科技有限公司 | 专辑的推荐方法、装置、设备和存储介质 |
CN110909201A (zh) * | 2019-11-27 | 2020-03-24 | 掌阅科技股份有限公司 | 基于播放页面的内容分发方法、计算设备及计算机存储介质 |
CN111046286A (zh) * | 2019-12-12 | 2020-04-21 | 腾讯科技(深圳)有限公司 | 一种对象推荐方法、装置、以及计算机存储介质 |
CN110990621A (zh) * | 2019-12-16 | 2020-04-10 | 腾讯科技(深圳)有限公司 | 歌曲推荐方法及装置 |
CN110990621B (zh) * | 2019-12-16 | 2023-10-13 | 腾讯科技(深圳)有限公司 | 歌曲推荐方法及装置 |
CN110830595A (zh) * | 2019-12-17 | 2020-02-21 | 詹华洋 | 一种个性化音乐推送方法及系统 |
CN113781087A (zh) * | 2021-01-29 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 推荐对象的召回方法及装置、存储介质、电子设备 |
CN114461168A (zh) * | 2022-01-06 | 2022-05-10 | 斑马网络技术有限公司 | 一种数据获取的方法、装置、系统和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108197327B (zh) | 2020-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108197327A (zh) | 歌曲推荐方法、装置及存储介质 | |
CN108304441A (zh) | 网络资源推荐方法、装置、电子设备、服务器及存储介质 | |
CN109740068A (zh) | 媒体数据推荐方法、装置及存储介质 | |
CN108874967A (zh) | 对话状态确定方法及装置、对话系统、终端、存储介质 | |
KR101927706B1 (ko) | 상황별 음악 추천 방법 및 이를 이용하는 장치 | |
CN107885889A (zh) | 搜索结果的反馈方法、展示方法及装置 | |
CN110149541A (zh) | 视频推荐方法、装置、计算机设备及存储介质 | |
CN109086709A (zh) | 特征提取模型训练方法、装置及存储介质 | |
CN107978323A (zh) | 音频识别方法、装置及存储介质 | |
CN110263213A (zh) | 视频推送方法、装置、计算机设备及存储介质 | |
CN110147805A (zh) | 图像处理方法、装置、终端及存储介质 | |
US10534806B2 (en) | System and method for organizing artistic media based on cognitive associations with personal memories | |
CN109640125A (zh) | 视频内容处理方法、装置、服务器及存储介质 | |
CN107918653A (zh) | 一种基于喜好反馈的智能播放方法和装置 | |
CN110110203A (zh) | 资源信息推送方法及服务器、资源信息展示方法及终端 | |
CN110377365A (zh) | 展示小程序的方法和装置 | |
CN109379643A (zh) | 视频合成方法、装置、终端及存储介质 | |
CN108683927A (zh) | 主播推荐方法、装置及存储介质 | |
CN109784351A (zh) | 数据分类方法、分类模型训练方法及装置 | |
CN109874312A (zh) | 播放音频数据的方法和装置 | |
CN108270794A (zh) | 内容发布方法、装置及可读介质 | |
CN110458360A (zh) | 热门资源的预测方法、装置、设备及存储介质 | |
CN110334352A (zh) | 引导信息显示方法、装置、终端及存储介质 | |
CN110166786A (zh) | 虚拟物品转移方法及装置 | |
CN109729372A (zh) | 直播间切换方法、装置、终端、服务器及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |