【Day 27】迁移学习(Transfer Learning)(下)

昨天最後提到Target data和Source data都是labeled data的情况,今天我会继续介绍完剩下三种。

首先是Target data是unlabeled,Source data是labeled的情况。

Task description

在Source data有function的输入和输出,但在Target data只有function的输入,没有function的输出。所以我们可以把Source data当作是训练资料,Target data当作是测试资料,但问题是这两笔资料是非常的mismatch。

Domain-adversarial training

如果把一个Neural Network当作是一个feature的extractor,我们知道Neural Network的前几层是在抽feature,後面几层是在做classification,那我们把feature拿出来看会发现,在做feature extraction的时候,原来Source domain的图片和Target domain的图片抽出来的feature完全不一样,所以後面的classifier虽然可以把蓝色的部分做好,但红色的部分就没办法。

所以我们希望前面的feature extractor可以把domain的特性去除掉,也就是说feature extractor的输出不应该是红色跟蓝色的点分成两群,而是要混在一起,那我们就可以使用Domain-adversarial training

它的作法是把feature extractor的输出丢给一个domain的classifier,而这个domain classifier要做的是判断feature extractor给它的feature是来自哪个domain。

而因为feature extractor可以轻易的骗过domain classifier,所以必须要增加它的难度,它不只要骗过domain classifier,还同时要让label predictor做得好,这个label predictor就是给它feature extractor的输出,以手写辨识为例,它就会输出十个class。

Zero-shot learning

在Zero-shot learning里面,它的训练资料和测试资料的Task是不一样的。举例来说,在影像上面你的Source data可能是猫跟狗,但是你的Target data里面是草泥马,而Source data里面完全没有草泥马。

这个task在语音上很早就有解决方法了,假如我们把不同的word都当作一个词汇,但本来在训练或测试的时候就有可能看到不同的词汇,所以在语音上面的作法是,不要直接辨识一段声音属於哪一个word,而是辨识一段声音是属於哪一个phoneme,接着再做一个phoneme跟table之间对应关系的表,这个表我们称之为lexicon,也就是辞典,所以我们辨识出phoneme之後就可以透过查表找到对应的word。

在影像上,我们可以把每一个class,用它的attribute来表示,也就是说,你有一个database,database里面有所有不同可能的object跟它的特性,假设现在要辨识动物,这个database可以告诉你每一种动物有什麽样的特性,所以attribute要定的够丰富,每一个calss都要有独一无二的attribute。

接着在训练的时候,我们不直接辨识每一张图片是属於哪一个class,而是去辨识每一张图片里面具备什麽样的attribute。

那在测试的时候,就算来了一张没有看过的图片,它也只需要辨识它具有那些attribute,然後我们就可以透过查表看哪一种动物的attribute跟model的输出最接近。

Attribute embedding

有时候attribute可能非常复杂,我们就可以做attribute的embedding,也就是说现在有一个embedding sapce,接着把训练资料里的每一张图片和所有的attribute都透过transform把它变成embedding space上面的一个点,其中 g 和 f 都可以是Neural Network,那我们训练的时候就会希望 g 和 f 越接近越好,而在测试的时候就去看它的attribute做embedding以後跟哪一个attribute最像。

Convex Combination of Semantic Embedding

这是一个更简单的Zero-shot learning的方法,假设我们有一个现成的语音辨识系统,跟一个现成的word vector,那我们就可以把一张图丢进Neural Network里面,而它觉得有0.5的机率是lion,有0.5的机率是tiger,接下来再去找lion跟tiger的word vector,然後把lion跟tiger的word vector用1:1的比例混合得到一个新的vector,最後再去看哪一个word vector跟混和的结果最接近。

最後要讲的两种情况是Source data都没有label的情况下,Target data有label跟没有label的情况,分别是Self-taught learning和Self-taught Clustering。

Self-taught learning

Self-taught learning跟一般的semi-supervised learning是不太一样的,一般的semi-supervised learning会假设那些unlabeled data还是至少还是跟labeled data比较有关系,但Self-taught learning里面,Source data跟Target data的关系是比较远的。

Self-taught learning的概念其实很简单,假设Source data够多,虽然是unlabeled,我就可以去训练一个feature extractor,接着用这个feature extractor在Target data上面去抽feature。


参考资料

李宏毅老师 - ML Lecture 19


<<:  Day 25 - 重覆呼叫shioaji.Shioaji()产生的记忆体问题-修正篇

>>:  [Day25] Scrum失败经验谈 – 与需求单位之间的断层

InterSection

InterSection(集合) 以下会来实作怎麽找寻两个array的集合 先使用两个回圈来实作Bi...

Day 21 -SQL 函数 MIN()和MAX()!

MIN() 函数用来取得特定栏位中的最小纪录值。 MAX() 函数用来取得特定栏位中的最大纪录值。 ...

Day30-30天的心得与作者的心声

30天来的心得: 终於写到第30天了,其实也不是真的30天啦~ 我大概花了14天左右就把全部的文章都...

Day 16 - Asynchronous 非同步进化顺序 - Async/Await

前言 昨天聊了 callback 与 Promise,是如何过关斩将,不断克服障碍走到 ES6。 然...

[ Day 27 ] 实作一个 React.js 网站 3/5

上篇我们已经完成了网站中 Navigation 的样式和路由设定,今天我们要来设定网站中的其他元件...