Online Transfer Learning 在线迁移学习

论文地址:https://icml.cc/Conferences/2010/papers/219.pdf

简介

现存的很多迁移学习算法都是一种离线学习(Offline learning)算法,即源域数据和目标域数据都是已经存在固定了的,然而在现实当中,经常会遇到在线数据的情况,即数据并不是固定存在的,而是一个或多个产生“流进”目标域中,比如工业上数控机床产生的数据是根据时间一条一条产生的,那么在这种情况下很大程度上要求在线学习,这样才能够提供更好的实时性效果。

Online Transfer Learning(OTL)的应用场景:源域是已存在的现有带标签数据集,目标域则是一个样本序列,分类器首先收的是目标域数据 x 2 t x_2t ,然后可以得到该数据的标签 y 2 t y_2t 。在线学习的目标则是寻找一个表现好的预测函数,使得类别预测 s i g n ( f t ( x 2 t ) ) sign(f_t(x_2t)) 与真实标签 y 2 t y_2t 尽可能的匹配。而在线迁移学习的挑战则是如何有效地从源域中迁移知识到目标域中以提高在线学习能力,并且如何在同构(特征空间相同)和异构(特征空间不同)的情况下仍然表现好。Online Transfer Learning(OTL)也将从同构的情景和异构的情景分别分析。

同构域下的OTL

在同构的情景下,假设源域和目标域的特征空间相同( X 1 = X 2 \mathcal{X}_1=\mathcal{X}_2 ),并且标签空间也相同( Y 1 = Y 2 \mathcal{Y}_1=\mathcal{Y}_2 ),这也是大部分迁移学习的应用场景,而在这样的条件下最大的问题就是解决“概念漂移”问题。那么如何得到在线学习的类别预测 s i g n ( f t ( x ) ) sign(f_t(x)) 呢?

与很多现有的迁移学习方法不同,在OTL中,作者分别构造了两个预测函数 h h f f ,其分别只在源域和目标域上进行,其中在源域上的h分类器为:

h ( x ) = s = 1 S α S y 1 S K 1 ( x 1 s , x ) h(x)=\sum_{s=1}^S \alpha_Sy_{1_S}\mathcal{K}_1(x_{1_s},x)

其中 α S \alpha_S 为支持向量系数,( x 1 s , y 1 s x_{1_s},y_{1_s} )为源域训练数据集中的一组支持向量。 K 1 ( , ) \mathcal{K}_1(\centerdot,\centerdot) 为核函数。h(x)可以通过SVM获得。

另外, f ( x ) f(x) 则是则在目标域上通过在线方式进行的预测函数。 f t ( x ) f_t(x) 表示为第t次在线学习函数。通过结合两个预测函数 h ( x ) h(x) f t ( x ) f_t(x) 对目标数据的预测,以得出 s i g n ( f t ( x 2 t ) ) sign(f_t(x_2t))

y = s i g n ( w 1 , t Π ( h ( x t ) ) + w 2 , t Π ( f t ( x t ) ) 1 2 ) y'=sign(w_{1,t}\Pi(h(x_t))+w_{2,t}\Pi(f_t(x_t))-\frac{1}{2})

其中 w 1 , t w 2 , t w_{1,t}、w{2,t} 为两个权重参数,这个式子的思想就是通过权重参数来衡量两个预测函数的预测可行度,而优化也主要是优化这两个权重参数,尽可能让两个预测函数结果的结合与真实标签相匹配。而 Π ( x ) \Pi(x) 则是一个标准化函数,比如 Π ( x ) = m a x ( 0 , m i n ( 1 , x + 1 2 ) ) \Pi(x)=max(0,min(1,\frac{x+1}{2})) 。在OTL中,一般都将 w 1 , t w 2 , t w_{1,t}、w{2,t} 初始化为1/2。那如何优化权重参数呢?如下:

其中 s t ( g ) = e x p ( η l ( Π ( g ( x t ) ) , Π y t ) ) s_t(g)=exp(-\eta \mathcal{l}^{*} (\Pi(g(x_t)), \Pi{y_t})) ,g(x)为函数表示,用于表示h(x)或者f(x), l ( z , y ) \mathcal{l}^*(z,y) 为损失函数设置为 l ( z , y ) = ( z y ) 2 \mathcal{l}^*(z,y)=(z-y)^2 。该优化公式可以大概理解为t+1时刻的权重由上一时刻的预测函数损失值占全部损失值的比重来决定。

那么同构域下的OTL算法流程如下:

刚开始初始化权重为1/2,且目标域上的预测函数为0。分类器先收到目标域上的输入数据为一个 x 2 t x_{2t} ,接下来通过上面的y’可以得出预测标签,然后收到数据的真实标签,接着更新权值参数,然后根据真实标签和f的预测标签计算f的损失值,接着根据损失值更新f,当损失值<=0的时候,则算法结束,还是很好理解的。

异构域下的OTL

异构域下的OTL和同构域下的OTL类似,因为条件变了,所以在上面方法的基础上做了一些调整。异构和同构的不同之处在于,同构中源域和目标域的特征空间(即数据的维度)是相同的,而在异构中,源域和目标域的特征空间不同,这就给迁移学习增加了难度。在文中的异构场景中,作者假设源域的特征空间为目标域特征空间的一个子集,即 X s X t \mathcal{X}_s \subset \mathcal{X}_t ,因此,可以将目标域数据分为两部分 x t 1 x_t^1 x t 2 x_t^2 ,其中 x t 1 x_t^1 的维度与源域对齐,而剩余的那部分维度则是 x t 2 x_t^2 ,即 x t 1 X s x t 2 X s / X t x_t^1 \in \mathcal{X}_s、x_t^2 \in \mathcal{X}_s / \mathcal{X}_t 。然后上面同构中的预测函数y’变为了:

y = s i g n ( 1 2 f t ( 1 ) ( x t 1 ) + f t ( 2 ) ( x t 2 ) ) y&#x27; = sign(\frac{1}{2}f_t^{(1)}(x_t^1)+f_t^{(2)}(x_t^2))

其中 f t ( 1 ) f_t^{(1)} 的初始化为h, f t ( 2 ) f_t^{(2)} 的初始化为0,这和上面同构是不是很像了,只不过这里没有用权重参数来衡量两个分类器的权重了,因为 f t ( 1 ) f_t^{(1)} f t ( 2 ) f_t^{(2)} 本身都是基于目标域数据进行训练的,然后把同构中y’的h函数改为了 f t ( 1 ) f_t^{(1)} ,而 f t ( 1 ) f_t^{(1)} 的初始化本身又是h,另外上面同构中只要优化f,而这里除了优化 f t ( 2 ) f_t^{(2)} 外。还有优化 f t ( 1 ) f_t^{(1)} ,最大的区别就是这啦。

我们来看一看算法流程:

是不是和同构的算法流程很类似?只不过上面同构只优化了 f t f_t ,而这里则要优化两个预测函数 f t ( 1 ) f_t^{(1)} f t ( 2 ) f_t^{(2)} ,然后优化用的loss变了一下,变为两个预测函数的结合。总体还是很类似的,异构的关键则是在于将目标数据分为了两个部分,然后就可以将同构的流程给引进了。

好,OTL框架基本上就是这些了。

总结

OTL通过在源域和目标域上分别训练分类器,并其结合实现了在线方式上的迁移学习,这种方式的应用场景更为现实,同时该算法简单,只不过异构条件中的源域特征空间为目标域特征空间的一个子集也许也是该算法的一个限制之处。

参考

Zhao P, Hoi S C H. OTL: a framework of online transfer learning[C]// International Conference on International Conference on Machine Learning. Omnipress, 2010:1231-1238.

猜你喜欢

转载自blog.csdn.net/LiGuang923/article/details/83540017