根据分布之间距离或者相似度不同的衡量标准,可构成不同的优化目标。下面采用KL散度作为概率分布之间的距离:
θ∗=argminθ∑i∑j(dyjxiln dyjxip(yj|xi;θ))=argmaxθ∑i∑jdyjxiln p(yj|xi;θ) 利用 ln (x/y)=ln x−ln y 很容易得到。其中 dxi 表示表示样本 xi 的标签分布,例如当 yi 具有5个取值时, dxi={dy1xi,dy2xi,dy3xi,dy4xi,dy5xi}={0.1,0.1,0.4,0.2,0.2} ,其和为1。 p(yj|xi;θ) 表示在参数为 θ 的分布下,样本 xi 的“真实标签” yj 的取值或者说概率。因此我们的主要任务就变成了如何学习模型参数 θ ,但是函数 p(yj|xi;θ) 具体形式还未确定,下面来确定一下其具体的表达式。采用最大熵模型来定义函数: p(yj|xi;θ) :
p(yj|xi;θ)=1Zexp (∑kθyj,kgk(xi)) 其中 Z=∑yexp(∑kθy,kgk(xi)) , y 的为标签分布的取值空间,k为特征长度的取值空间。(文字描述的不严格,请详细理解)因此,完整的损失函数为:
θ∗=argmaxθf(θ)=argmaxθ∑i∑jdyjxiln p(yj|xi;θ)=argmaxθ∑i∑jdyjxi ln 1∑yexp(∑kθy,kgk(x))exp (∑kθyj,kgk(xi)) 很容易证明函数 f(θ) 是凹函数。 f(θ)=∑i∑jdyjxi ln 1∑yexp(∑kθy,kgk(x))exp (∑kθyj,kgk(xi)) 其中 dyjxi≥0 ,我们只需要证明下面的子函数为凹函数即可:g(θ)= ln 1∑yexp(∑kθy,kgk(xi))exp (∑kθyj,kgk(xi))= ln exp(∑kθyj,kgk(xi))− ln ∑yexp(∑kθy,kgk(xi))=∑kθyj,kgk(xi)− ln ∑yexp(∑kθy,kgk(xi)) 红色部分是仿射函数的线性组合,其是凹函数(或凸函数)。 已知函数: h(z)= log (∑i=1kezi) 是凸函数 [4],并且 ∑kθy,kgk(xi)) 是凸函数(或凹函数),那么蓝色的部分为凸函数。但是前面有个负号,因此是凹函数。则凹函数+凹函数,还是一个凹函数。因此函数 f(θ) 是凹函数。
函数 f(θ) 的表达式中,还有三个叠加符号,即涉及到对样本 i ,标签分布j,以及特征索引 k 的求和运算。在算法中可能要涉及到函数值的求解,因此我们也不可能在Matlab中套用三层for循环来求解。
假定训练数据具有格式(详细参考[5]):
trainFeature 为 [2000 2045]的矩阵,其中2000为样本的数量,2045为特征的长度. trainDistribution 为[2000 5]的矩阵,其中2000为样本数量,5为标签分布,并且满足,每行元素之和为1. modProb = exp(trainFeature * weights); % size_sam * size_Y sumProb = sum(modProb, 2); modProb = modProb ./ (repmat(sumProb,[1 size(modProb,2)])); target = -sum(sum(trainDistribution.*log(modProb)));由上述代码中可以看出,target= −f(θ) ,其中 θ 就是weights.其是大小为2045*5(特征长度*标签分布)
从上述公式 g0(θ)=dyjxi∗g(θ) ,其相当于单个样本 xi 对参数 θy,k 的变更。(注意这里的 θ 只是总的参数的一个分量):
∂g0(θ)∂θ=dyjxi(g(xi)−∂ ln ∑yexp(∑kθy,kgk(xi))∂θ)=dyjxig(xi)−dyjxi1∑yexp(∑kθy,kgk(xi))∗∑y(exp(∑kθy,kgk(x))∗g(xi)) 上述公式表达不够准确,其中第一项对应一个矢量,第二个项对应为一个矩阵。 ∑y 中的y控制更新那一列。梯度是一个矩阵的形式。那么针对其中一个元素的偏导数为: ∂g0(θ)∂θyj,k=dyjxigk(xi)−dyjxi1∑yexp(∑kθy,kgk(xi))∗(exp(∑kθyj,kgk(x))∗gk(xi))=gk(xi)∗(dyjxi−1∑yexp(∑kθy,kgk(xi))∗exp(∑kθyj,kgk(x)))代码为:
gradient = trainFeature'*(modProb-trainDistribution)我们同样的我们注意到其是求解 −f(θ) 的梯度。
参考文献: 1. 标记分布学习及其应用. [季荣姿] 2. Label Distribution Learning [ tkde 2016] 3. http://cse.seu.edu.cn/people/xgeng/index.htm [geng xin professor] 4. 凸优化 [stephen Boyd] 5. LDLPackage_v1.2