31.1 半监督SVM
我们知道 SVM 试图找到最大间隔划分超平面。半监督支持向量机 (Semi-Supervised Support Vector Machine,简称S3VM) 试图找到能将两类有标记样本分开,且穿过数据低密度区域的划分超平面 -- 显然,这里的基本假设是"++低密度分隔++" (low-density separation),这是聚类假设在考虑了线性超平面划分后的推广。
31.1.1 TSVM
半监督支持向量机中最著名的是TSVM (Transductive 直推式 Support Vector Machine)[Joachims,1999]。与标准SVM一样,TSVM也是针对二分类问题的学习方法。TSVM尝试将每个未标记样本进行++标记指派++ (label assignment) 即指派为正例或反例,然后在所有样本 (包括有标记样本和进行了标记指派的未标记样本) 上找到间隔最大化的划分超平面。++一旦划分超平面得以确定,未标记样本的最终标记指派就是其预测结果++。
31.1.2 TSVM算法解读
形式化:给定 Dl={(x1,y1), (x2,y2), ..., (xl,yl)} 和 Du={xl+1, xl+2, ..., xl+u},其中yi∈{-1,+1}, l≪u, l+u=m。TSVM的学习目标是为Du中的未标记样本给出预测标记,使得
++min(w,b,y',ε)++ ++1/2||w||^2++ + ++ClΣ(i=1,l)εi++ + ++CuΣ(i=1+1,m)εi <TSVM 优化目标>++
s.t. yi(wᵀxi+b) ≥ 1-εi (i=1,2,...,l)
y'i(wᵀxi+b) ≥ 1-εi (i=l+1,l+2,...,m)
εi≥0 (i=1,2,...,m)
其中,(w,b)确定一个划分超平面;ε为松弛向量,εi (i=1,2,...,l)对应于有标记样本,εi (i=l+1,l+2,...,m)对应于未标记样本;
Cl与Cu是由用户指定的用于平衡模型复杂度、有标记样本与未标记样本重要程度的比例参数。
TSVM算法流程与解读:
使用有标记样本 Dl 训练一个SVM
使用这个 SVM 对未标记数据 Du 进行标记指派,得到 y' = (y'l+1, y'l+2, ..., y'l+u)
初始化Cu≪Cl
<此时未标记样本的伪标记很可能不准确,因此 Cu 要设置为比 Cl 小的值,使有标记样本起更大作用>while Cu < Cl do
基于当前Dl, Du, ++y', Cl, Cu++,将其代入TSVM优化目标表达式,得到一个标准SVM问题,可求解出划分超平面(w,b)和松弛向量ε
while {i, j | y'iy'j<0 ∧ εi>0 ∧ εj>0 ∧ εi+εj>2} do
y'i=-y'i, y'j=-y'j
<若存在一对未标记样本xi与xj,其标记指派y'i与y'j为异类,且对应的松弛变量满足εi+εj>2,则意味着y'i与y'j很可能是有错误的,需对二者进行交换后重新代入和求解>
- 再重新代入TSVM优化目标表达式,求解出更新后的划分超平面(w,b)和松弛向量ε
++++<每轮标记++++ ++++调整和++++ ++++重新求解均可使TSVM目标函数值(损失函数)下降 (收敛性证明++++ 参阅[Joachims,1999])>
8. end 5.while <循环执行上述5-7过程,直到标记指派调整完成>
Cu = min{2Cu, Cl}
<逐渐增大Cu以提高未标记样本对优化目标的影响>end 3.while <循环执行上述3-9过程,直至Cu=Cl为止。>
输出:y' = (y'l+1, y'l+2, ..., y'l+u)
在对未标记样本进行标记指派及调整的过程中,有可能出现类别不平衡问题,为了减轻类别不平衡造成的不利影响,可对TSVM算法稍加改进:将Cu项拆分为Cu+与Cu-两项,分别对应伪标记为正例、为反例的未标记样本,并在初始化时令
Cu+ = (u-/u+)Cu-
其中,u+与u-分别为正例、反例未标记样本的数量。
31.2 图半监督学习方法
给定一个数据集,我们可将其映射为一个图 ,数据集中每个样本对应于图中一个结点,若两个样本之间相似度很高(或相关性很强),则对应的结点之间存在一条边,边的"强度"(strength)正比于样本之间的相似度(或相关性)。我们可将有标记样本所对应的结点想象为染过色,而未标记样本所对应的结点尚未染色。于是,++图半监督学习就相当于"颜色"在图上扩散或传播的过程++。
31.2.1 亲和矩阵
一个图对应一个矩阵,这使得我们能基于矩阵运算进行图半监督学习算法的推导与分析。
给定 Dl={(x1,y1), (x2,y2), ..., (xl,yl)} 和 Du={xl+1, xl+2, ..., xl+u}, l≪u, l+u=m,
基于Dl∪Du构建一个图G=(V,E),其中结点集V={x1, ..., xl, xl+1, ..., xl+u},边集E可表示为一个++亲和矩阵++(affinity matrix) W,
<亲和矩阵(Affinity Matrix) 是一个m×m的对称矩阵(m=l+u),++矩阵元素 Aij 表示结点xi与xj之间的相似性或相关性(亲和度),Aij=Aji++ 。若Aij=0,xi与xj之间无边存在(或视为完全不相似);若Aij>0,xi与xj之间有边存在,++亲和度计算方法如下++:>
W 常基于高斯函数定义为
(W)ij = exp(-||xi-xj||^2 /2σ^2)), if i≠j
(W)ij = 0, otherwise
其中,i, j∈{1,2, ..., m},σ>0是用户指定的高斯函数带宽参数。
31.2.2 能量函数
++假定目标是从图 G=(V,E) 学得一个实值函数 f(x)++,其对应的分类规则为:yi=sign(f(xi)), yi∈{-1, +1}。
++直观上看,相似的样本应具有相似的标记++ ,于是++可定义关于 f(x) 的"能量函数"(energy function)++[Zhu et al.,2003]:
++E(f)++= (1/2)Σ(i=1,m)Σ(j=1,m)(W)ij(f(xi)-f(xj))^2
<Σ(i=1,m)Σ(j=1,m)(W)ij ++++f++++ ++++^2++++ ++++(xi)++++ = ++++Σ(i=1,m)++++ ++++f++++ ++++^2++++ ++++(xi)++++ Σ(j=1,m)(W)ij = Σ(i=1,m) di f^2(xi)
Σ(i=1,m)Σ(j=1,m)(W)ij ++++f++++ ++++^2++++ ++++(x++++ ++++j++++ ++++)++++ = Σ(j=1,m) ++++[++++ ++++Σ(i=1,m)(W)ij++++ ++++]++++ f^2(xj)
(因为(W)ij是对称矩阵) = Σ(j=1,m) dj f^2(xj)>
= (1/2)[Σ(i=1,m) di f^2(xi) + Σ(j=1,m) dj f^2(xj) - 2Σ(i=1,m)Σ(j=1,m)(W)ijf(xi)f(xj)]
= Σ(i=1,m) di f^2(xi) - Σ(i=1,m)Σ(j=1,m)(W)ijf(xi)f(xj)
= Σ(i=1,m)(di f(xi))f(xi) - Σ(i=1,m) f(xi)Σ(j=1,m)(W)ijf(xj) <31.2.2.1>
= (fᵀD)f - fᵀ(Wf) <逆思维>
= fᵀ(D-W)f
其中,D=diag(d1,d2,...,dl+u)是一个对角矩阵,++其对角元素 di=Σ(j=1,m)Wij 为矩阵W第i行元素之和。++
31.2.3 推导图半监督学习算法
通过 E(f) 推导图半监督标记传播算法(对未标记样本进行预测),我采用如下过程进行推导比较容易理解:
E(f) = ++Σ(i=1,m) (di f(xi))f(xi)++ - ++Σ(i=1,m)f(xi)Σ(j=1,m)(W)ijf(xj)++ <31.2.2.1>
Σ(i=1,m) (di f(xi))f(xi)
<可将Σ(i=1,m)拆分为Σ(i=1,l) + Σ(i=l+1,l+u)两部分:>
= Σ(i=1,l) (di f(xi))f(xi) + Σ(i=l+1,l+u) (di f(xi))f(xi)
= flᵀDlfl + fuᵀDufu <31.2.3.1>
Σ(i=1,m)f(xi)Σ(j=1,m)(W)ijf(xj)
<可先将前面的Σ(i=1,m)f(xi)... 拆分为Σ(i=1,l)f(xi)... + Σ(i=l+1,l+u)f(xi)... 两部分:>
= Σ(i=1,l) f(xi)Σ(j=1,m)(W)ijf(xj) + Σ(i=l+1,l+u) f(xi)Σ(j=1,m)(W)ijf(xj)
<再将Σ(j=1,m)(W)ijf(xj)也分别拆分为Σ(i=1,l) + Σ(i=l+1,l+u)两部分:>
= Σ(i=1,l) f(xi)[Σ(j=1,l)(W)ijf(xj) + Σ(j=l+1,l+u)(W)ijf(xj)]
- Σ(i=l+1,l+u) f(xi)[Σ(j=1,l)(W)ijf(xj) + Σ(j=l+1,l+u)(W)ijf(xj)]
= flᵀWlfl + Σ(i=1,l) f(xi)Σ(j=l+1,l+u)(W)ijf(xj) + Σ(i=l+1,l+u) f(xi)Σ(j=1,l)(W)ijf(xj) + fuᵀWufu
<因为 (f1+f2)(wi3 f3+wi4 f4+wi5 f5) = (f3+f4+f5)(wi1 f1+wi2 f2),Wlu=Wul
所以有 Σ(i=1,l) f(xi)Σ(j=l+1,l+u)(W)ijf(xj) = Σ(i=l+1,l+u) f(xi)Σ(j=1,l)(W)ijf(xj) >
= flᵀWlfl + 2fuᵀWulfl + fuᵀWufu <31.2.3.2>
将<31.2.3.1>和<31.2.3.2>代入<31.2.2.1>可得:
E(f) = (flᵀDlfl + fuᵀDufu) - (flᵀWlfl + 2fuᵀWulfl + fuᵀWufu)
= flᵀ(Dl-Wl)fl + fuᵀ(Du-Wu)fu - 2fuᵀWulfl
由 ∂E(f)/∂fu=0 可得,fu=Wulfl/(Du-Wu) <31.2.3.3>
...
++将Dl上的标记信息作为fl=(y1, y2, ..., yl)代入<31.2.3.3>++ ,++++即可求得fu,未标记样本的预测结果++++。
31.2.4 多分类问题的标记传播方法
++上面描述的是针对二分类问题的标记传播(label propagation)方法++ ,next : ++适用于多分类问题的标记传播方法++ [Zhou et al.,2004]。
前提条件与二分类问题的相同:基于Dl∪Du构建一个图G=(V,E),其中结点集(样本集)V={x1, ..., xl, xl+1, ..., xl+u},边集E可表示为亲和矩阵W。
- 定义一个(l+u)×|Y|的非负标记矩阵F,其第i行元素Fi=(Fi1, Fi2, ..., Fi|Y|) 为样本xi的标记向量,相应的分类规则为:yi=argmax(1≤j≤|Y|)(F)ij。
对i=1,2,...,m,j=1,2,...,|Y|,将F初始化为F(0) :
F(0)=(Y)ij=1, if 1≤i≤l ∧ j=yi
F(0)=(Y)ij=0, otherwise
- 基于W (样本之间的相似性或相关性、亲和度) 构造一个标记传播矩阵:
S=D^(-1/2)WD^(-1/2)
<= didjwij,di : 样本xi与其它样本的亲和度(wij)总和,didjwij : xi与xj之间亲和度的另一种度量方式>
其中D^(-1/2) = diag(1/√d1, 1/√d2, ..., 1/√dm)
- F(t+1) = aSF(t) + (1-a)Y
<令Δ=SF(t),Δij : 样本xi与"类别为j的每个样本"的亲和度(didjwij)之和,Δ是m×|Y|的矩阵>
其中a∈(0,1)为用户指定的参数,基于F(t+1)表达式迭代至收敛。
- 可得 F* = lim(t→∞) F(t) = (1-a)(I-aS)^(-1)Y
F*可获得Du未标记样本的预测结果 y'i=argmax(1≤j≤|Y|)(F*)ij
如上1.2.3.4.步骤 即为多分类迭代式标记传播算法流程。
图半监督学习方法通过矩阵运算 <相近样本具有相似的标记> 传播未标记样本的类别。
但此类算法也存在明显缺陷:首先是在存储开销上,若样本数为O(m),则算法涉及的矩阵规模为O(m^2),使得此类算法很难直接处理大规模数据;
另一方面,由于构图过程仅能考虑训练样本集,在接收到新样本时,或是将其加入原数据集对图进行重构并重新标记传播计算;或是++++将 Dl 和经过标记传播得到标记的 Du 合并为训练集,再训练一个学习器例如SVM对新样本进行预测++++。