对迁移学习的初步理解

        新手上路,不足之处欢迎大家指正错误

        迁移学习(Transfer learning) 顾名思义就是就是把已学训练好的模型参数迁移到新的模型来帮助新模型训练。考虑到大部分数据或任务是存在相关性的,所以通过迁移学习我们可以将已经学到的模型参数(也可理解为模型学到的知识)通过某种方式来分享给新模型从而加快并优化模型的学习效率不用像大多数网络那样从零学习(starting from scratch,tabula rasa)。简单来讲我们首先利用大量相关数据进行训练,再用当前数据空间中的少量数据进行微调。从本质上讲,迁移学习是一种表示学习。

        很多信息处理任务,非常容易或者非常困难,这取决于信息是如何表示的。例如,一个插入数字到有序表中的正确位置,如

果该数列表示为链表,那么所需时间是O(N) ;如果该列表表示为红黑树,那么只需O(logn)时间。时间的在机器学习中一般而言,一个好的表示可以使随后的学习任务更容易。选择什么表示通常取决于随后的学习任务

        迁移学习指的是利用一个设定(例如,分布P1)中已经学到的内容去改善另一个设定(比如分布P2)中的泛化情况。在迁移学习中,学习器必须执行两个或更多个不同的任务,但是我们假设能够解释P1变化的许多因素和学习P2需要抓住的变化相关。简单来说迁移学习是将从一个环境中学到的知识用来帮助新环境中的学习任务。我们甚至可以认为迁移学习是一种特殊的泛化。从统计学上讲这两个设定,或者说这两个学习任务中的数据的不同在于其不是同分布的。

        这里给出一个经典的迁移学习的算法TrAdaBoost算法。

        该算法的问题模型在于,两个样例空间Xa(数据数为n)和Xb(数据数为m), 其中Xa为辅助样例空间,其与测试数据S不同分布,而Xb为源样例空间,其与测试数据S同分布,假设已标记的源样例空间不足已训练出一个泛化能力很强的分类器。

        算法的思想在于,对于被错误分类的辅助数据Xa中的样本,我们降低该数据在样本中的权重,降低该样本在分类器中的比重。


        迁移学习有两种极端的形式,一次学习(one-shot learning)和零次学习(zero-shot learning)(也被称为零数据学习(zero-data learning)),

        关于一次学习,因为第一阶段学习出的表示就可以清楚地分离出潜在的类别,所以一次学习是可能的。在迁移学习阶段,仅需要一个有标签的样本来推断表示空间中聚集在相同点周围许多可能测试样本的标签。这使得在学习到的表示空间中,对应于不变性的变化因子已经与其他因子完全分离,在区分某些类别的对象时,我们可以学习到哪些因素能够起作用而哪些不会。或者说在仅有的一个样本中,我们结合第一次学习到的表示,可以推测出第二次学习的表示。

        关于零次学习,考虑一个零次学习情景的例子,学习器已经读取了大量文本,然后要解决对象识别的问题。如果文本足够好地描述了对象,那么即使没有看到某对象的图像,也能识别出该对象的类别。例如,已知猫有四条腿和尖尖的耳朵,那么学习器可以在没有见过猫的情况下猜测该图像中是猫。可以看到零次学习必须要有额外的信息才能做到。

        我们可以认为零数据学习场景包含三个随机变量:传统输入x,传统输出或目标y,以及描述任务的附加随机变量,T。该模型被训练来估计条件分布p(y | x,T),其中T是我们希望执行的任务的描述。在我们的例子中,读取猫的文本信息然后识别猫,输出是二元变量y,y = 1表示'是'',y = 0表示''不是''。任务变量T表示要回答的问题,例如''这个图像中是否有猫?'如果训练集包含和T在相同空间的无监督对象样本,我们也许能够推断未知的T实例的含义。在我们的例子中,没有提前看到猫的图像而去识别猫,拥有一些无标签的文本数据包含句子诸如'猫有四条腿''或''猫有尖耳朵',对于学习非常有帮助。

猜你喜欢

转载自blog.csdn.net/wyf826459/article/details/80647577
今日推荐