【說在前面】本人博客新手一枚,象牙塔的老白,職業場的小白。如下內容僅爲我的看法,歡迎批評指正,不喜勿噴![握手][握手]html
【再囉嗦一下】原本只想記一下GAN的筆記,沒想到發現了一個大宇宙,不少我的並不擅長,主要是整理概括!python
Meta Learning,又稱爲 learning to learn,已經成爲繼 Reinforcement Learning 以後又一個重要的研究分支。git
元學習區別於機器學習的是:機器學習一般是在擬合一個數據的分佈,而元學習是在擬合一系列類似任務的分佈。github
本節主要參考了大佬的知乎專欄:https://zhuanlan.zhihu.com/p/28639662面試
推薦Stanford助理教授Chelsea Finn開設的CS330 multitask and meta learning課程算法
元學習是要去學習任務中的特徵表示,從而在新的任務上泛化。舉個例子,如下圖的圖像分類來講,元學習的訓練過程是在task1和task2上訓練模型(更新模型參數),而在訓練樣本中的訓練集通常稱做support set,訓練樣本中的測試集通常叫作query set。測試過程是在測試任務上評估模型好壞,從圖中能夠看出,測試任務和訓練任務內容徹底不一樣。網絡
元學習解決的是學習如何學習的問題,元學習的思想是學習「學習(訓練)」過程。元學習主要包括Zero-Shot/One-Shot/Few-Shot 學習、模型無關元學習(Model Agnostic Meta Learning)和元強化學習(Meta Reinforcement Learning)等。數據結構
元學習的主要方法包括基於記憶Memory的方法、基於預測梯度的方法、利用Attention注意力機制的方法、借鑑LSTM的方法、面向RL的Meta Learning方法、利用WaveNet的方法、預測Loss的方法等。架構
基本思路:既然要經過以往的經驗來學習,那麼是否是能夠經過在神經網絡上添加Memory來實現呢?框架
表明方法包括:Meta-learning with memory-augmented neural networks、Meta Networks等。
能夠看到,網絡的輸入把上一次的y label也做爲輸入,而且添加了external memory存儲上一次的x輸入,這使得下一次輸入後進行反向傳播時,可讓y label和x創建聯繫,使得以後的x可以經過外部記憶獲取相關圖像進行比對來實現更好的預測。
基本思路:既然Meta Learning的目的是實現快速學習,而快速學習的關鍵一點是神經網絡的梯度降低要準,要快,那麼是否是可讓神經網絡利用以往的任務學習如何預測梯度,這樣面對新的任務,只要梯度預測得準,那麼學習得就會更快了?
表明方法包括:Learning to learn by gradient descent by gradient descent 等。
該方法訓練一個通用的神經網絡來預測梯度,用一次二次方程的迴歸問題來訓練,優化器效果比Adam、RMSProp好,顯然就加快了訓練。
基本思路:人的注意力是能夠利用以往的經驗來實現提高的,好比咱們看一個性感圖片,咱們會很天然的把注意力集中在關鍵位置。那麼,能不能利用以往的任務來訓練一個Attention模型,從而面對新的任務,可以直接關注最重要的部分。
表明方法包括:Matching networks for one shot learning 等。
這篇文章構造一個attention機制,也就是最後的label判斷是經過attention的疊加獲得的:
attention a 則經過 g 和 f 獲得。基本目的就是利用已有任務訓練出一個好的attention model。
基本思路:LSTM內部的更新很是相似於梯度降低的更新,那麼,可否利用LSTM的結構訓練出一個神經網絡的更新機制,輸入當前網絡參數,直接輸出新的更新參數?
表明方法包括:Optimization as a model for few-shot learning 等。
這篇文章的核心思想是下面這一段:
怎麼把LSTM的更新和梯度降低聯繫起來纔是更值得思考的問題吧。
基本思路:Meta Learning能夠用在監督學習,那麼加強學習上怎麼作呢?可否經過增長一些外部信息好比reward,以前的action來實現?
表明方法包括:Learning to reinforcement learn、Rl2: Fast reinforcement learning via slow reinforcement learning 等。
兩篇文章思路一致,就是額外增長reward和以前action的輸入,從而強制讓神經網絡學習一些任務級別的信息:
基本思路:以前的方法都只能侷限在監督學習或強化學習上,能搞個更通用的?是否是相比finetune學習一個更好的base model就能work?
主要方法包括:Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks 等。
這篇文章的基本思路是同時啓動多個任務,而後獲取不一樣任務學習的合成梯度方向來更新,從而學習一個共同的最佳base。
基本思路:WaveNet的網絡每次都利用了以前的數據,是否能夠照搬WaveNet的方式來實現Meta Learning呢?就是充分利用以往的數據呀?
主要方法包括:Meta-Learning with Temporal Convolutions 等。
直接利用以前的歷史數據,思路極其簡單,效果極其之好,是目前omniglot,mini imagenet圖像識別的state-of-the-art。
基本思路:要讓學習的速度更快,除了更好的梯度,若是有更好的loss,那麼學習的速度也會更快,所以,是否是能夠構造一個模型利用以往的任務來學習如何預測Loss呢?
主要方法包括:Learning to Learn: Meta-Critic Networks for Sample Efficient Learning 等。
本文構造了一個Meta-Critic Network(包含Meta Value Network和Task-Actor Encoder)來學習預測Actor Network的Loss。對於Reinforcement Learning而言,這個Loss就是Q Value。
這是兩年前的綜述了,可是感受質量很高。固然,後續又有了一些新進展。在應用上,元學習應用到了更普遍的問題上,例如小樣本圖像分類、視覺導航、機器翻譯和語音識別等。在算法上,最值得一提的應該就是元強化學習,由於這樣的結合將有望使智能體可以更快速地學習新的任務,這個能力對於部署在複雜和不斷變化的世界中的智能體來講是相當重要的。
具體的,以上關於元學習的論文已經介紹了在策略梯度(policy gradient)和密集獎勵(dense rewards)的有限環境中將元學習應用於強化學習的初步結果。此後,不少學者對這個方法產生了濃厚的興趣,也有更多論文展現了將元學習理念應用到更普遍的環境中,好比:從人類演示中學習、模仿學習以及基於模型的強化學習。除了元學習模型參數外,還考慮了超參數和損失函數。爲了解決稀疏獎勵設置問題,也有了一種利用元學習來探索策略的方法。
儘管取得了這些進展,樣本效率仍然是一項挑戰。當考慮將 meta-RL 應用於實際中更復雜的任務時,快速適應這些任務則須要更有效的探索策略。所以在實際學習任務中,須要考慮如何解決元訓練樣本效率低下的問題。所以,伯克利 AI 研究院基於這些問題進行了深刻研究,並開發了一種旨在解決這兩個問題的算法。
最後分享看到的元學習 meta learning 的2020綜述論文。提出了一個新的分類法,對元學習方法的空間進行了更全面的細分:[認真看圖]
論文標題:Meta-Learning in Neural Networks: A Survey
論文連接:https://arxiv.org/abs/2004.05439
Few-shot Learning 能夠說是 元學習 Meta Learning 在監督學習領域的一個應用,固然也有它本身研究領域的東西。
本節來自香港科技大學和第四範式的綜述:Generalizing from a Few Examples: A Survey on Few-Shot Learning
該綜述已被 ACM Computing Surveys 接收,還創建了 GitHub repo,持續更新:https://github.com/tata1661/FewShotPapers
機器學習在數據密集型應用中很是成功,但當數據集很小時,它經常受到阻礙。爲了解決這一問題,近年來提出了小樣本學習(FSL)。利用先驗知識,FSL能夠快速地泛化到只包含少許有監督信息的樣本的新任務中。
大多數人認爲FSL就是 meta learning,其實不是。FSL能夠是各類形式的學習(例如監督、半監督、強化學習、遷移學習等),本質上的定義取決於可用的數據。但如今大多數時候在解決FSL任務時,採用的都是 meta Learning 的一些方法。
基於各個方法利用先驗知識處理核心問題的方式,該綜述將 FSL 方法分爲三大類:
基於此,該綜述將現有的 FSL 方法歸入此框架,獲得以下分類體系:
數據加強的方式有不少種,平時也被使用的比較多,在這裏做者將數據加強的方法歸納成三類:
總之,數據加強沒有什麼神祕感,能夠是手動在數據上修改(例如圖片的旋轉、句子中的同義詞替換等),也能夠是複雜的生成模型(生成和真實數據相近的數據)。數據加強的方式有不少種,大量合適的加強必定程度上能夠緩解FSL問題,但其能力仍是有限的。
和模型剪枝中的理念相似,你一開始給一個小的模型,這個模型空間離真實假設太遠了。而你給一個大的模型空間,它離真實假設近的機率比較大,而後經過先驗知識去掉哪些離真實假設遠的假設。
做者根據使用不一樣的先驗知識將MODEL的方法分紅4類:
對於多個共享信息的任務(例如數據相同任務不一樣、數據和任務都不一樣等),均可以用多任務學習來訓練。
多任務分爲硬參數共享和軟參數共享兩種模式:
多任務經過多個任務來限制模型的假設空間:
嵌入學習很好理解,將訓練集中全部的樣本經過一個函數 f 嵌入到一個低維可分的空間Z,而後將測試集中的樣本經過一個函數 g 嵌入到這個低維空間Z,而後計算測試樣本和全部訓練樣本的類似度,選擇類似度最高的樣本的標籤做爲測試樣本的標籤。
根據task-specific和task-invariant,以及二者的結合能夠分爲三種,嵌入學習以下:
具備外部存儲機制的網絡均可以用來處理這一類問題,其實本質上和遷移學習同樣。只不過這裏不更新模型的參數,只更新外部記憶庫。外部記憶庫通常都是一個矩陣,如神經圖靈機,其外部記憶庫具備讀寫操做。
在這裏就是在一個用大量相似的數據訓練的具備外部存儲機制的網絡上,用具體task的樣原本更新外部記憶庫。這類方法須要精心設計纔能有好的效果,好比外部記憶庫寫入或更新的規則可能就影響模型可以在當前任務上的表現。具體的以下圖所示:
引入了生成式的模型來解FSL問題。
在機器學習中,一般使用SGD及其變體(例如ADAM、RMSProp等)來尋找最優參數。可是在FSL中,樣本數量不多,這種方法就失效了。
在這一節,咱們再也不限制假設空間。根據使用不一樣的先驗知識,能夠將ALGORITHM分爲下面3類:
本質就是pretrained + fine-tuning的模式,最多見的就是直接在pre-trianed的模型上直接fine-tuning參數,還能夠在一個新的網絡上使用pre-trained的部分參數來初始化等。
該小節是基於 meta learning 的解決方法,利用元學習器學習一個好的初始化參數。以後在新的任務上,只要對這個初始化參數少許迭代更新就能很好的適應新的任務。這種方法最經典的模型就是MAML,MAML的訓練模式以下圖所示:
上面的參數是元學習器的參數,最後用多個任務的梯度矢量和來更新參數。這樣的方式也有一個問題,就是新的任務的特性必需要和元訓練中的任務相近,這樣值才能做爲一個較好的初始化值,不然效果會不好。所以,也就有很多研究在根據新任務的數據集來動態的生成一個適合它的初始化參數。
上一節使用元學習來得到一個較好的初始化參數,而本節旨在用元學習來學習一個參數更新的策略。針對每個子任務能給定特定的優化方式其實是提升性能的惟一方法,這裏就是設計一個元優化器來爲特定的任務提供特定的優化方法,具體的以下圖所示:
梯度的更新也能夠寫成:
在這裏使用RNN來實現,由於RNN具備時序記憶功能,而梯度迭代的過程當中正好是一個時序操做。具體的訓練以下圖所示:
訓練過程大體以下:
這和上一節面臨的問題同樣,meta-learner 學到的更新策略是針對這一類任務的,一旦新任務和元訓練中的任務誤差較大時,這種更新策略可能就失效了。
將來的方向可能有:
說到小樣本學習,就想說比較時髦的生成對抗網絡GAN。別誤會,生成對抗網絡並非只針對小樣本生成,還有不少別的豐富應用。
GANs是一種結構化的機率模型,由兩個對立的模型組成:生成模型(G)用於捕獲數據分佈,判別模型(D)用於估計生成數據的機率,以肯定生成的數據是來自真實數據分佈,仍是來自G的分佈。D和G使用基於梯度的優化技術(同時梯度降低)玩一個極小極大零和博弈,直到納什均衡。
GANs在一些實際任務中表現良好,例如圖像生成、視頻生成、域自適應和圖像超分辨率等。傳統的GANs雖然在不少方面都取得了成功,可是因爲D和G訓練的不平衡,使得GANs在訓練中很是不穩定。D利用迅速飽和的邏輯損失。另外,若是D能夠很容易的區分出真假圖像,那麼D的梯度就會消失,當D不能提供梯度時,G就會中止更新。
近年來,對於模式崩潰問題的處理有了許多改進,由於G產生的樣本基於少數模式,而不是整個數據空間。另外一方面,引入了幾個目標(損失)函數來最小化與傳統GANs公式的差別。最後,提出了幾種穩定訓練的方法。
顧名思義,DCGAN主要討論CNN與GAN如何結合使用並給出了一系列建議。另外還討論了GAN特徵的可視化、潛在空間插值等問題。
Ian Goodfellow等人提供了諸多訓練穩定GAN的建議,包括特徵匹配、mini-batch識別、歷史平均、單邊標籤平滑以及虛擬批標準化等技巧。討論了GAN不穩定性的最佳假設。
PACGAN討論的是的如何分析model collapse,以及提出了PAC判別器的方法用於解決model collapse。思想其實就是將判別器的輸入改爲多個樣本,這樣判別器能夠同時看到多個樣本能夠從必定程度上防止model collapse。
WGAN首先從理論上分析了原始GAN模型存在的訓練不穩定、生成器和判別器的loss沒法只是訓練進程、生成樣本缺少多樣性等問題,並經過改進算法流程針對性的給出了改進要點。
CycleGAN討論的是image2image的轉換問題,提出了Cycle consistency loss來處理缺少成對訓練樣原本作image2image的轉換問題。Cycle Consistency Loss 背後的主要想法,圖片A轉化獲得圖片B,再從圖片B轉換獲得圖片A',那麼圖片A和圖片A'應該是圖一張圖片。
Vid2Vid在生成器中加入光流約束,判別器中加入光流信息及對前景和背景分別建模,重點解決視頻轉換過程當中先後幀圖像的不一致性。
PGGAN創造性地提出了以一種漸進增大(Progressive growing)的方式訓練GAN,利用逐漸增大的PGGAN網絡實現了效果使人驚歎的生成圖像。「Progressive Growing」 指的是先訓練 4x4 的網絡,而後訓練 8x8,不斷增大,最終達到 1024x1024。這既加快了訓練速度,又大大穩定了訓練速度,而且生成的圖像質量很是高。
StackGAN是由文本生成圖像,StackGAN模型與PGGAN工做的原理很像,StackGAN 首先輸出分辨率爲64×64 的圖像,而後將其做爲先驗信息生成一個 256×256 分辨率的圖像。
BigGAN模型是基於 ImageNet 生成圖像質量最高的模型之一。該模型很難在本地機器上實現,並且 有許多組件,如 Self-Attention、 Spectral Normalization 和帶有投影鑑別器的 cGAN等。
StyleGAN應該是截至目前最複雜的GAN模型,該模型借鑑了一種稱爲自適應實例標準化 (AdaIN) 的機制來控制潛在空間向量 z。雖然很難本身實現一個StyleGAN,可是它提供了不少有趣的想法。
固然前文有一些方法沒有提到的,例如CGAN、自編碼GAN等。
說到這裏,放一張大佬整理的GAN家族主要模型的概要圖:
同時,再分享一下生成式對抗網絡(GANs)最新2020綜述,分類更全面更細緻:[認真看圖][認真看圖]
GAN 已經在一些特定應用上與其它機器學習算法相結合,例如半監督學習、遷移學習、強化學習和多模態學習等。GAN 在圖像處理與計算機視覺(例如圖像超分辨率、圖像生成、目標檢測和視頻處理等)、天然語言處理(例如文本生成等)、音樂(例如歌詞生成等)、語音與音頻、醫學以及數據科學中的典型應用(例如以前個人隨筆裏提到的數據補全、異常檢測、時間序列預測等)。
同時,GAN 被用於特徵學習領域(例如特徵選擇、哈希和度量學習等)和其它機器學習任務(例如主動學習、在線學習 、零/小樣本學習和多任務學習等)。能夠說,計算機領域的不少研究分支中的算法模型都可以互相遷移、彼此融合,從而在不一樣領域有了拓展性的應用。
說到小樣本學習,我也想再說說遷移學習。可是別誤會,遷移學習也並非只針對小樣本學習,還有不少別的豐富應用。
本文主要參考了一篇綜述:A Survey on Transfer Learning
在許多機器學習和數據挖掘算法中,一個重要的假設就是目前的訓練數據和未來的訓練數據,必定要在相同的特徵空間而且具備相同的分佈。然而,在許多現實的應用案例中,這個假設可能不會成立。這種狀況下,若是知識的遷移作得成功,咱們將會經過避免花費大量昂貴的標記樣本數據的代價,使得學習性能取得顯著的提高。近年來,爲了解決這類問題,遷移學習做爲一個新的學習框架出如今人們面前。
遷移學習主要有如下三個研究問題:1)遷移什麼,2)如何遷移,3)什麼時候遷移。
基於遷移學習的定義,咱們概括了傳統機器學習方法和遷移學習的異同見下表:
(1)inductive transfer learning:推導遷移學習,也叫概括遷移學習。其目標任務和源任務不一樣,不管目標域與源域是否相同。這種狀況下,要用目標域中的一些已標註數據生成一個客觀預測模型以應用到目標域中。根據源域中已標註和未標註數據的不一樣狀況,能夠進一步將inductive transfer learning分爲兩種狀況:
transductive transfer learning:轉導遷移學習,也叫直推式遷移學習。其源任務和目標任務相同,源域和目標域不一樣。這種狀況下,目標域中無已標註數據可用,源域中有大量已標註數據可用。根據源域和目標域中的不一樣情況,能夠進一步將轉導遷移學習分爲兩類:
(3)unsupervised transfer learning:無監督遷移學習。與推導遷移學習類似,目標任務與源任務不一樣但相關。然而,無監督遷移學習專一於解決目標域中的無監督學習問題,例如聚類、降維、密度估計等。這種狀況下,訓練中源域和目標域都無已標註數據可用。
上述三種遷移學習能夠基於「遷移什麼」被分爲四種狀況:
(1)Instance-based TL(樣本遷移):能夠被稱爲基於實例的遷移學習。儘管source domain數據不能夠整個直接被用到target domain裏,可是在source domain中仍是找到一些能夠從新被用到target domain中的數據。對它們調整權重,使它能與target domain中的數據匹配以後能夠進行遷移。
instance reweighting(樣本從新調整權重)和importance sampling(重要性採樣)是instance-based TL裏主要用到的兩項技術。
例如在這個例子中就是找到例子3,而後加劇它的權值,這樣在預測的時候它所佔權重較大,預測也能夠更準確。
(2)Feature-representation-transfer(特徵遷移):能夠被稱爲基於特徵表示的遷移學習。找到一些好的有表明性的特徵,經過特徵變換把source domain和target domain的特徵變換到一樣的空間,使得這個空間中source domain和target domain的數據具備相同的分佈,而後進行傳統的機器學習就能夠了。
特徵變換這一塊能夠舉個栗子:好比評論男生的時候,你會說「好帥!好有男人味!好有擔當!」,評論女生的時候,你會說「好漂亮!好有女人味!好溫柔!」能夠看出共同的特徵就是「好看」。把「好帥」映射到「好看」,把「好漂亮」映射到「好看」,「好看」即是它們的共同特徵。
(3)Parameter-transfer(參數/模型遷移):能夠被稱爲基於參數的遷移學習。假設source tasks和target tasks之間共享一些參數,或者共享模型hyperparameters(超參數)的先驗分佈。這樣把原來的模型遷移到新的domain時,也能夠達到不錯的精度。
(4)Relational-knowledge-transfer(關係遷移):能夠被稱爲基於關係知識的遷移學習。把類似的關係進行遷移,好比生物病毒傳播到計算機病毒傳播的遷移,好比師生關係到上司下屬關係的遷移。最近,統計關係學習技術主導了這一領域。
綜合第1小節和第2小節的內容,下圖展現了不一樣遷移學習分類中不一樣方法的使用狀況:
與生成對抗網絡GAN同樣,遷移學習一樣能夠在不少領域使用,同時,能夠與很其餘機器學習算法相結合,道理是相通的。
說到這裏,前面各類方法中的統計學習實現實在是太恐怖了,我只想接下來重點介紹一下深度遷移學習的內容,即深度學習+遷移學習!
本小節主要分享一下大佬的知乎專欄的學習內容,主要包括遷移學習領域經典的各大方法,用於輔助對上文的理解:
(1)遷移成分分析(TCA):Domain adaptation via transfer component analysis,2009-2011
主要思想是:屬於基於特徵的遷移學習方法。PCA是一個大矩陣進去,一個小矩陣出來,TCA是兩個大矩陣進去,兩個小矩陣出來。從學術角度講,TCA針對domain adaptation問題中,源域和目標域處於不一樣數據分佈時,將兩個領域的數據一塊兒映射到一個高維的再生核希爾伯特空間。在此空間中,最小化源和目標的數據距離,同時最大程度地保留它們各自的內部屬性。直觀地理解就是,在如今這個維度上很差最小化它們的距離,那麼就找個映射,在映射後的空間上讓它們最接近,那麼不就能夠進行分類了嗎?
主要步驟爲:輸入是兩個特徵矩陣,首先計算L和H矩陣,而後選擇一些經常使用的核函數進行映射(好比線性核、高斯核)計算K,接着求的前m個特徵值。而後,獲得的就是源域和目標域的降維後的數據,就能夠在上面用傳統機器學習方法了。
(2)測地線流式核方法(GFK):Geodesic flow kernel for unsupervised domain adaptation,2011-2012
SGF方法的主要思想:把source和target分別當作高維空間(Grassmann流形)中的兩個點,在這兩個點的測地線距離上取d箇中間點,而後依次鏈接起來。這樣,由source和target就構成了一條測地線的路徑。只須要找到合適的每一步的變換,就能從source變換到target了。
SGF方法的主要貢獻在於:提出了這種變換的計算及實現了相應的算法。可是它有很明顯的缺點:到底須要找幾個中間點?就是說這個參數d是無法估計的。
GFK方法解決了SGF的問題:
GFK方法有如下幾個步驟:選擇最優的子空間維度進行變換、構建測地線、計算測地線流式核、以及構建分類器。
(3)聯合分佈適配(JDA):Transfer feature learning with joint distribution adaptation,2013
主要思想是:屬於基於特徵的遷移學習方法。是一個機率分佈適配的方法,並且適配的是聯合機率。JDA方法同時適配兩個分佈,而後很是精巧地規到了一個優化目標裏。用弱分類器迭代,最後達到了很好的效果。
和TCA的主要區別有兩點:
-------------------------------------------------------------------------------------------
(4)在線遷移學習:A framework of online transfer learning,2010-2014
這是在線遷移學習研究的第一篇文章,做者分別對同構OTL和異構OTL提出了相應的方法,就是基於SVM以及集成學習進行組合。
基本思想是:先針對可用的源域數據創建一個分類器,而後,每來一個目標域數據,就對這個新數據創建一個分類器,而後與在源域上創建的這個分類器進行組合。
核心問題是:肯定源域和新數據分類器各自應該以怎麼樣的權重進行組合。
(5)負遷移:提出「傳遞遷移學習」的解決思路,2015-2017
若是兩個領域之間基本不類似,那麼就會大大損害遷移學習的效果。仍是拿騎自行車來講,拿騎自行車的經驗來學習開汽車,這顯然是不太可能的。由於自行車和汽車之間基本不存在什麼類似性。因此,這個任務基本上完不成。這時候,能夠說出現了負遷移(negative transfer)。
產生負遷移的緣由主要有:
所以,在實際應用中,找到合理的類似性,而且選擇或開發合理的遷移學習方法,可以避免負遷移現象。
隨着研究的深刻,已經有新的研究成果在逐漸克服負遷移的影響:
這些研究的意義在於,傳統遷移學習只有兩個領域足夠類似才能夠完成,而當兩個領域不類似時,傳遞遷移學習卻能夠利用處於這兩個領域之間的若干領域,將知識傳遞式的完成遷移。這個是頗有意義的工做,能夠視爲解決負遷移的有效思想和方法。
(6)開放集遷移學習:Open Set Domain Adaptation,2017
現有的domain adaptation都針對的是一個「封閉」的任務,就是說,source和target中的類別是徹底同樣的,source有幾類,target就有幾類。這些方法都只是理想狀態下的domain adaptation。而真正的環境中,source和target每每只會共享一些類的信息,而不是所有。
整個文章的解決思路大體是這樣的:
二者依次迭代,直到收斂。做者根據target domain是否有label,把問題分紅了unsupervised和semi-supervised domain adaptation,而後分開解決。
(7)張量遷移學習:When Unsupervised Domain Adaptation Meets Tensor Representations,2017
現有的那些domain adaptation方法都只是針對向量(vector)的。而這種表示所帶來的問題就是,當把這些數據應用於高維度表示(如卷積)時,數據首先要通過向量化(vectorization)。此時,沒法精準完備地保留一些統計屬性。因此做者提出,不通過向量化來進行domain adaptation的方法,很天然地用到了tensor(張量)。
(8)從經驗中學習遷移:Learning To Transfer,2018
提出了一個新穎的研究問題:相似於增量學習,如何最大限度地利用已有的遷移學習經驗,使得其對新問題的泛化能力很好?同時也能夠避免一出現新問題就從頭進行學習。
在解決問題的方法上,雖然用的都是老方法,可是可以想到新已有方法很好地應用於這個問題。引來的拓展思考:在深度網絡中如何持續學習?
(9)探祕任務遷移:Taskonomy: Disentangling Task Transfer Learning,2018
諸如物體識別、深度估計、邊緣檢測等一些常見的計算機視覺任務,彼此之間都或多或少地有一些聯繫。好比,咱們很清楚地知道曲面的法線和深度是相關的:它們是彼此的梯度。但與此同時,另外一些任務咱們卻不清楚,例如,一個房間中的關鍵點檢測和陰影是如何協同工做完成姿態估計的?
已有的相關工做均忽略了這些任務的關聯性,而是單獨地對各個任務進行建模。不利用任務之間的相關性,無疑是十分耗時和複雜的。即便是要在不一樣的任務之間進行遷移,因爲不一樣任務的不一樣任務空間之間的聯繫尚不清楚,也沒法實現簡單有效的任務遷移。
(10)選擇性對抗遷移學習:Partial Transfer Learning with Selective Adversarial Networks,2018
傳統的遷移學習問題情境都是,源域和目標域的類別空間同樣。在大數據時代,一般咱們會有大量的源域數據。這些源域數據比目標域數據,在類別上一般都是豐富的。好比基於ImageNet訓練的圖像分類器,必然是針對幾千個類別進行的分類。咱們實際用的時候,目標域每每只是其中的一部分類別。
所以,就要求相應的遷移學習方法可以對目標域,選擇類似的源域樣本(類別),同時也要避免負遷移。可是目標域一般是沒有標籤的,不知道和源域中哪一個類別更類似。做者指出這個問題叫作partial transfer learning(部分遷移學習)。
(11)聯邦遷移學習:2018
事實上,Google在2017年的一篇論文裏進行了去中心化的推薦系統建模研究。其核心是,手機在本地進行模型訓練,而後僅將模型更新的部分加密上傳到雲端,並與其餘用戶的進行整合。一些研究者也提出了CryptoDL深度學習框架、可擴展的加密深度方法、針對於邏輯迴歸方法的隱私保護等。可是,它們或只能針對於特定模型,或沒法處理不一樣分佈數據。
正是爲了解決上述這些挑戰,香港科技大學楊強教授和微衆銀行AI團隊,最近提出了聯邦遷移學習 (Federated Transfer Learning, FTL)。FTL將聯邦學習的概念加以推廣,強調在任何數據分佈、任何實體上,都可以進行協同建模學習。
這項工做在國內,是楊教授與微衆銀行AI團隊主導,目的是創建數據聯邦,以解決大數據沒法聚合的問題。在國外,目前是Google在進行相關的研究。兩者的區別:微衆銀行AI團隊的作法是,用戶維度部分重疊,特徵維度不重疊;而Google則是反過來:特徵重疊,用戶不重疊。
聯邦遷移學習 vs 遷移學習 vs 多任務學習
-------------------------------------------------------------------------------------------
(12)深度神經網絡的可遷移性:How transferable are features in deep neural networks,2014
深度網絡的一個事實:前面幾層都學習到的是通用的特徵(general feature),後面的網絡更偏重於學習特定的特徵(specific feature)。
雖然該論文並無提出一個創新方法,可是經過實驗獲得瞭如下幾個結論,對之後的深度學習和深度遷移學習都有着很是高的指導意義:
(13)深度遷移學習:例如DaNN、DDC、DAN等,2014-2015
DaNN(Domain Adaptive Neural Network)的結構異常簡單,它僅由兩層神經元組成:特徵層和分類器層。做者的創新工做在於,在特徵層後加入了一項MMD適配層,用來計算源域和目標域的距離,並將其加入網絡的損失中進行訓練。因此,整個網絡的優化目標也相應地由兩部分構成:在有label的源域數據上的分類偏差,以及對兩個領域數據的判別偏差。
可是,因爲網絡太淺,表徵能力有限,故沒法頗有效地解決domain adaptation問題(通俗點說就是精度不高)。所以,後續的研究者大多數都基於其思想進行擴充,例如將淺層網絡改成更深層的AlexNet、ResNet、VGG等,例如將MMD換爲多核的MMD等。
DDC(Deep Domain Confusion)針對預訓練的AlexNet(8層)網絡,在第7層(也就是feature層,softmax的上一層)加入了MMD距離來減少source和target之間的差別。這個方法簡稱爲DDC。下圖是DDC的算法插圖。
從上圖能夠很明顯地看出,DDC的思想很是簡單:在原有的AlexNet網絡的基礎上,對網絡的fc7層(分類器前一層)後加一層適配層(adaptation layer)。適配層的做用是,單獨考察網絡對源域和目標域的判別能力。若是這個判別能力不好,那麼咱們就認爲,網絡學到的特徵不足以將兩個領域數據區分開,於是有助於學習到對領域不敏感的特徵表示。
DAN(Deep Adaptation Network)是在DDC的基礎上發展起來的,它很好地解決了DDC的兩個問題:
DAN的創新點是多層適配和多核MMD。下圖是DAN的網絡結構示意圖。
DDC和DAN做爲深度遷移學習的表明性方法,充分利用了深度網絡的可遷移特性,而後又把統計學習中的MK-MMD距離引入,取得了很好的效果。DAN的做者在2017年又進一步對其進行了延伸,作出了Joint Adaptation Network (JAN),進一步把feature和label的聯合機率分佈考慮了進來,能夠視做以前JDA(joint distribution adaptation)的深度版。
(14)深度遷移學習文章解讀:Simultaneous Deep Transfer Across Domains and Tasks,2015
針對狀況:target的部分class有少許label,剩下的class無label。文章最大的創新點是:現有的方法都是domain classifier加上一個domain confusion,就是適配。做者提出這些是不夠的,因此提出了還要再加一個soft label loss。意思就是在source和target進行適配的時候,也要根據source的類別分佈狀況來進行調整target的。其實本意和JDA差很少。
網絡結構以下圖所示。網絡由AlexNet修改而來,前面的幾層都同樣,區別只是在第fc7層後面加入了一個domain classifier,也就是進行domain adaptation的一層,在fc8後計算網絡的loss和soft label的loss。就如今的研究成果看來,絕大多數也都是在深度網絡後加一些相關的loss層,以之來提升網絡的適配性。本質並無很大的創新性。
(15)深度遷移度量學習:Deep Transfer Metric Learning,2015
已有的metric learning研究大多數集中在傳統方法和深度方法中,它們已經取得了長足的進步。可是這些單純的度量研究,每每只是在數據分佈一致的狀況下有效。若是數據分佈發生了變化,已有的研究則不能很好地進行處理。所以,遷移學習就能夠做爲一種工具,綜合學習不一樣數據分佈下的度量,使得度量更穩定。
另外一方面,已有的遷移學習工做大多都是基於固定的距離,例如MMD,所以沒法學習到更好的距離表達。雖然近年來有一些遷移度量學習的工做,但它們都只考慮在數據層面將特徵分佈差別減少,而忽略了在源領域中的監督信息。於是,做者提出要在深度遷移網絡中對度量進行學習,有效利用源領域中的監督信息,學習到更泛化的距離表達。
(16)用於部分遷移學習的深度加權對抗網絡:Importance Weighted Adversarial Nets for Partial Domain Adaptation,2018
做者提出了一個深度加權對抗網絡,以下圖所示。網絡的主要部分是:分別做用於源域和目標域的兩個特徵提取器(分別叫作 和
),以及兩個領域分類器(分別叫作
和
)。第一個領域分類器用來篩選出源域中與目標域類似的那部分樣本(或者源域中與目標領域共享的那部分類別),第二個領域分類器進行正常的domain adaptation。
本文核心創新點是,從任務出發,直觀地構造出兩階段式對抗網絡,對源域中與目標域共享的類別樣本進行有效篩選。另外一個與已有工做不一樣的地方是,做者分別對源域和目標域採用了不一樣的特徵提取器。
(17)基於條件對抗網絡的領域自適應:Conditional Adversarial Domain Adaptation,2018
Domain adaptation問題一直以來是遷移學習和計算機視覺領域等的研究熱點。從傳統方法,到深度方法,再到最近的對抗方法,都在嘗試解決此問題。做者在本文中提出,如今的對抗方法面臨兩個挑戰:
本文提出了基於條件對抗網絡的領域自適應方法,主要由Condition + Adversarial + Adaptation這三部分構成。進行condition的時候,用到了一個叫作multilinear map的數學工具,主要是來刻畫多個特徵和類別之間的關係。
(18)深度遷移學習用於時間序列分類:Transfer learning for time series classification,2018
基本方法與在圖像上進行深度遷移一致,先在一個源領域上進行pre-train,而後在目標領域上進行fine-tune。
網絡的結構以下圖所示。網絡由3個卷積層、1個全局池化層、和1個全鏈接層構成。使用全鏈接層的好處是,在進行不一樣輸入長度序列的fine-tune時,不須要再額外設計池內化層。
與圖像的區別就是,輸入由圖片換成了時間序列。注意到,圖片每每具備必定的通道數(如常見的R、G、B三通道)。時間序列也有通道,即不一樣維的時間序列數據。最簡單的便是1維序列,能夠認爲是1個通道。多維時間序列則能夠認爲是多個通道。
(19)最大分類器差別的領域自適應:Maximum Classifier Discrepancy for Unsupervised Domain Adaptation,2018
方法的主要思想很是簡單:用源域訓練的網絡若是用到目標域上,確定由於目標域與源域的不一樣,效果也會有所不一樣。效果好的咱們就無論了,重點關注效果很差的,由於這才能體現出領域的差別性。爲了找到這些效果差的樣本,做者引入了兩個獨立的分類器 和
,用兩者的分歧表示樣本的置信度不高,須要從新訓練。
(20)異構網絡的遷移:Learn What-Where to Transfer,2019
本文另闢蹊徑,從根源上研究不一樣架構的深度網絡如何進行遷移,並提供了行之有效的解決方案。
深度網絡都是對遷移學習最爲友好的學習架構。從最簡單的finetune(微調),到固定網絡的特徵提取層不變在倒數第二層加入可學習的距離,再到經過領域對抗的思想學習隱式分佈距離,深度遷移學習方法大行其道。在諸多圖像分類、分割檢測等任務上取得了不錯的效果。
縱觀這些方法的思路,大多均逃脫不開一個固有的模式:源域和目標域的網絡架構徹底相同,固定前若干層,微調高層或在高層中加入分佈適配距離。然而,在遷移模型變得愈來愈臃腫、特定數據集精度不斷攀升的同時,極少有人想過這樣一個問題:
本文將這一思路具體表述爲2點:What to transfer和Where to transfer
簡單來講就是:學習源域網絡中哪些層的知識能夠遷移多少給目標域的哪些層。
說到遷移學習,我想最時髦的就是深度遷移學習了。有了深度學習的加持,遷移學習在人工智能領域有着豐富的應用。
上一節的內容其實已經包含了深度遷移學習的不少方法,包括很是多的idea,本節就做爲輔助理解用吧!
本文參考了一篇綜述:A Survey on Deep Transfer Learning
這裏強推大佬的知乎專欄和guthub:https://github.com/jindongwang/transferlearning
深度遷移學習是經過深度神經網絡研究如何利用其餘領域的知識。隨着深度神經網絡在各個領域的普遍應用,大量的深度遷移學習方法被提出。包括離線/在線、增量學習、生成對抗、同構/異構等,能夠說是很是豐富。
本文將深度遷移學習分爲四類:基於實例的深度遷移學習、基於映射的深度遷移學習、基於網絡的深度遷移學習和基於對抗的深度遷移學習。
(1)基於實例的深度遷移學習。與遷移學習分類中的第一類是一致的,這裏再也不贅述。
(2)基於映射的深度遷移學習。與遷移學習分類中的第二類是一致的,這裏再也不贅述。
(3)基於網絡的深度遷移學習。將原領域中預先訓練好的部分網絡,包括其網絡結構和鏈接參數,從新利用,將其轉化爲用於目標領域的深度神經網絡的一部分。
(4)基於對抗的深度遷移學習。在生成對抗網絡 GAN 的啓發下,引入對抗性技術,尋找既適用於源域又適用於目標域的可遷移表達。
負遷移和可遷移性測度是傳統遷移學習中的重要問題。如何利用深度神經網絡在無監督或半監督學習中進行知識的遷移會受到愈來愈多的關注。
補充一點,元學習與遷移學習的區別聯繫是什麼?
固然,二者有不少重疊之處,要結合着看,互相補充,互相學習。
知識蒸餾被普遍的用於模型壓縮和遷移學習當中。
知識蒸餾能夠將一個網絡的知識轉移到另外一個網絡,兩個網絡能夠是同構或者異構。作法是先訓練一個teacher網絡,而後使用這個teacher網絡的輸出和數據的真實標籤去訓練student網絡。
主要關注的是災難性遺忘,平衡新知識與舊知識之間的關係。即如何在學習新知識的狀況下不忘記舊知識。
引用Robipolikar對增量學習算法的定義,即一個增量學習算法應同時具備如下特色:
在概念上,增量學習與遷移學習最大的區別就是對待舊知識的處理:
若是您對異常檢測感興趣,歡迎瀏覽個人另外一篇博客:異常檢測算法演變及學習筆記
若是您對智能推薦感興趣,歡迎瀏覽個人另外一篇博客:智能推薦算法演變及學習筆記 、CTR預估模型演變及學習筆記
若是您對知識圖譜感興趣,歡迎瀏覽個人另外一篇博客:行業知識圖譜的構建及應用、基於圖模型的智能推薦算法學習筆記
若是您對時間序列分析感興趣,歡迎瀏覽個人另外一篇博客:時間序列分析中預測類問題下的建模方案 、深度學習中的序列模型演變及學習筆記
若是您對數據挖掘感興趣,歡迎瀏覽個人另外一篇博客:數據挖掘比賽/項目全流程介紹 、機器學習中的聚類算法演變及學習筆記
若是您對人工智能算法感興趣,歡迎瀏覽個人另外一篇博客:人工智能新手入門學習路線和學習資源合集(含AI綜述/python/機器學習/深度學習/tensorflow)、人工智能領域經常使用的開源框架和庫(含機器學習/深度學習/強化學習/知識圖譜/圖神經網絡)
若是你是計算機專業的應屆畢業生,歡迎瀏覽個人另一篇博客:若是你是一個計算機領域的應屆生,你如何準備求職面試?
若是你是計算機專業的本科生,歡迎瀏覽個人另一篇博客:若是你是一個計算機領域的本科生,你能夠選擇學習什麼?
若是你是計算機專業的研究生,歡迎瀏覽個人另一篇博客:若是你是一個計算機領域的研究生,你能夠選擇學習什麼?
若是你對金融科技感興趣,歡迎瀏覽個人另外一篇博客:若是你想了解金融科技,不妨先了解金融科技有哪些可能?
以後博主將持續分享各大算法的學習思路和學習筆記:hello world: 個人博客寫做思路