Large-Scale Music Annotation and Retrieval:Learning to Rank in Joint Semantic Spaces

这篇文章主要介绍联合多个空间(下面介绍有哪些空间)进行学习,使用learning to rank 训练得到排序函数,完成音乐方面的预测任务
每一个预测任务可任务是一个空间:
1.Artist prediction:输入一首歌曲,或一个音乐片段,返回一个有序的歌手列表
2.Song prediction:输入一个歌手,返回一个有序的歌曲列表
3.Similar Artists:输入一个歌手,返回一个有序的相似歌手列表
4.Similar Songs:输入一首歌曲,返回一个有序的相似歌曲的列表
5.Tag prediction:输入一首歌曲,返回一个适合该歌曲的标签列表

模型结构:
文章假设跟音乐相关的歌曲,歌手,标签都可以用一个d维的向量来表征,两个向量的相似性用点积(dot product)来衡量

歌手:
对于一个给定的歌手,下标用j表示,j ∈ 1, . . . , |A|,这个歌手的特征向量表示为:
ΦArtist(i):{1,...,|A|}→Rd = Ai
其中A = [A1,...,A|A|] ,A是一个d × |A|大小的矩阵,d表示用于表征歌手特征向量的维度, |A|表示歌手的个数,矩阵A将在学习中获得

标签:
相似的,对于一个标签,用j表示下标,j ∈ 1, . . . , |T |,这个标签的特征向量表示为:
ΦTag(i):{1,...,|T|}→Rd = Ti
其中T = [T1,...,T|T|],A是一个d × |T|大小的矩阵,d表示用于表征标签特征向量的维度, |T|表示标签的个数,矩阵T将在学习的获得

歌曲:
最后,对于一首歌曲,其声学特征向量用s′表示,我们使用线性转移矩阵V,将声学特征转移到d维向量上:
ΦSong(s′):R|S|→ Rd = Vs′
矩阵V是一个d × |S|大小的矩阵,矩阵V也将在学习阶段获得

这样便获得了歌手,歌曲,标签的表征方法
实体类别

特征向量

大小

获得方式

歌手

ΦArtist(i)=Ai

d × |A|

A:学习获得

歌曲

ΦTag(i)=Ti

d × |T|

T:学习获得

标签

ΦSong(s′)=Vs′

d × |S|

V:学习获得,s`声学特征

那么针对之前提到的预测任务,我们用f(x)表示排序函数,例如Artist prediction:



其中候选的歌手i ∈ {1, . . . , |A|}会根据fi(x)的magnitude大小进行排序,高的排在前面,对于其他的task也有相似的排序函数:





从上面的排序函数中可以看出,许多预测任务都含有相同的参数。例如song prediction 和 similar artist都用到歌手的特征矩阵A,tag prediction 和song prediction 都用到了线性转移矩阵V。因此,我们可以在多个任务下,同时训练参数矩阵A,T,V,使得系统获得更好的效果。

训练模型:

multi-Task Training

假设任务是tag prediction 和artist prediction,可以将这两个任务联合起来训练参数,目标函数定义为:



这里err表示损失函数

文章中一共使用了两种损失函数:
1.AUC Marginine Ranking Loss


其中x表示输入,y表示输出(标注集),这个损失函数考虑所有的可能的输出,根据排序函数f计算magnitude,只要k(不在标注集的所有结果)的模大于标注集里任意结果,或者两者只差小于1,都会累加到损失结果中。如果两个输出结果的margin violation(损失函数值)相同,那这个两个结果将被视为等同的。随意这个损失函数在优化前k个排序结果时,不太适用。

2.WARP Loss
*WARP Loss这个损失函数最初设计的时候用于学习得到矩阵参数,给图片打标签,并且标签之间是没有序的
这个损失函数定义为:



其中ranky(f(x))是通过矩阵函数f(x)计算得到的实际排名:



其中I()为指示函数,I(True) = 1, I(False) = 0,L()将这个排名转换成一种惩罚度

接着原作者将指示函数做了调整,使用hinge loss,使得损失函数是代替指示函数连续的。(没看懂)



其中|t|+表示正数部分,如果t<0 ,则|t|+ = 0,
,表示带有边缘惩罚的排名,那么我们的目标就是最小化风险函数:

对于P(x,y)上的任意一点
,其中
,对整个风险函数的贡献是:

使得改点的积分为0,一次来更新参数矩阵A,T,V

其中βt表示参数矩阵,βt+1表示更新后的参数矩阵。问章采用的就是这种随机梯度下降的方式更新参数矩阵,具体步骤如下:

其中

*疑问:这个随时函数可以通过训练学习计算给定输出情况下,哪些输出合理,但并没有考虑输出结果的顺序

你可能感兴趣的:(Large-Scale Music Annotation and Retrieval:Learning to Rank in Joint Semantic Spaces)