1. 程式人生 > >遷移學習和多工學習

遷移學習和多工學習

遷移學習

總結一下,什麼時候遷移學習是有意義的?如果你想從任務A學習並遷移一些知識到任務B,那麼當任務A和任務B都有同樣的輸入時,遷移學習是有意義的。在第一個例子中,A和B的輸入都是影象,在第二個例子中,兩者輸入都是音訊。當任務A的資料比任務多得多時,遷移學習意義更大。所有這些假設的前提都是,你希望提高任務B的效能,因為任務B每個資料更有價值,對任務A來說通常任務的資料量必須大得多,才有幫助,因為任務A裡單個樣本的價值沒有比任務B單個樣本價值大。然後如果你覺得任務A的低層次特徵,可以幫助任務B的學習,那遷移學習更有意義一些。

遷移學習最有用的場合是,如果你嘗試優化任務B的效能,通常這個任務資料相對較少,例如,在放射科中你知道很難收集很多X射線掃描圖來搭建一個性能良好的放射科診斷系統,所以在這種情況下,你可能會找一個相關但不同的任務,如影象識別,其中你可能用1百萬張圖片訓練過了,並從中學到很多低層次特徵,所以那也許能幫助網路在任務B在放射科任務上做得更好,儘管任務B沒有這麼多資料。遷移學習什麼時候是有意義的?它確實可以顯著提高你的學習任務的效能,但我有時候也見過有些場合使用遷移學習時,任務A實際上資料量比任務B要少,這種情況下增益可能不多。

多工學習

在遷移學習中,你的步驟是序列的,你從任務A裡學習知識然後遷移到任務B。在多工學習中,你是同時開始學習的,試圖讓單個神經網路同時做幾件事情,然後希望這裡每個任務都能幫到其他所有任務。

我們來看一個例子,假設你在研發無人駕駛車輛,那麼你的無人駕駛車可能需要同時檢測不同的物體,比如檢測行人、車輛、停車標誌,還有交通燈各種其他東西。比如在左邊這個例子

這裡寫圖片描述

那麼多工學習什麼時候有意義呢?當三件事為真時,它就是有意義的。

第一,如果你訓練的一組任務,可以共用低層次特徵。對於無人駕駛的例子,同時識別交通燈、汽車和行人是有道理的,這些物體有相似的特徵,也許能幫你識別停車標誌,因為這些都是道路上的特徵。

第二,這個準則沒有那麼絕對,那個小任務的平均資料量差不多。

遷移學習和微調的區別

  • 什麼是遷移學習?
    即一種學習對另一種學習的影響,它廣泛地存在於知識、技能、態度和行為規範的學習中。任何一種學習都要受到學習者已有知識經驗、技能、態度等的影響,只要有學習,就有遷移。遷移是學習的繼續和鞏固,又是提高和深化學習的條件,學習與遷移不可分割。
    換句話說,對於一個具體的深度學習訓練任務,如:人臉識別,訓練資料當然是用人臉庫啦,你會覺得是廢話,但是,呵呵,要是你的人臉庫不夠大怎麼辦?要是你沒錢買資料怎麼辦?而且,你又沒有足夠的時間收集一個足夠大的人臉庫怎麼辦?這個時候,你可以試試遷移學習(transfer learning),用別人已經訓練好的Imagenet的模型來做。
    你可以將已經訓練好了的Alexnet、googlenet、vggnet等網路中的某些層直接抽出來,化為己用。具體的來說,你可以將Alexnet中的最一層特徵層抽出來,然後自己設計一個分類器或者直接用SVM分類器,分類。當然你也可以抽取多個網路中的網路層,然後進行融合。總而言之,就是將已經學到了的“知識”化為己用。在最後,你要用自己的資料集進行一下微調(fine-tune)。這就好比,使用“吸星大法”吸收了別人的功力之後,好歹也得打坐盤膝,調理一下不是?
  • 什麼是微調(fine-tune)?
    看到別人一個很好的模型,雖然針對的具體問題不一樣,但是也想試試看,看能不能得到很好的效果,而且自己的資料也不多,怎麼辦?沒關係,把別人現成的訓練好了的模型拿過來,換成自己的資料,調整一下引數,在訓練一遍,這就是微調(fine-tune)。

  • 總結
    遷移學習更像是“吸星大法”,將別人修煉的功力直接吸過來,但是因為原先針對的具體任務有所不同,有可能走火入魔?這時候,就需要盤膝打坐調理一番,疏通自己的經脈,努力使自己的功力更上一層樓(也有可能一點提升也沒有,否則就不用研究遷移學習啦)。從某意義上來說,微調應該是遷移學習中的一部分

轉載自:

相關推薦

遷移學習學習

遷移學習 總結一下,什麼時候遷移學習是有意義的?如果你想從任務A學習並遷移一些知識到任務B,那麼當任務A和任務B都有同樣的輸入時,遷移學習是有意義的。在第一個例子中,A和B的輸入都是影象,在第二個例子中,兩者輸入都是音訊。當任務A的資料比任務多得多時,遷移學習意義更大。所有

caffe標籤輸入學習

拷貝convert_imageset,生成新工程convert_imageset_multi_label 修改原始碼 std::ifstream infile(argv[2]); std::vector<std::pair<std::string, std::vector<flo

【ICML2018見聞】 遷移學習學習領域的進展

【導讀】如今 ICML(International Conference on Machine Learning,國際機器學習大會)已經成為有巨大影響力的會議,每年都會為我們帶來很多關於機器學習趨勢與發展方向等有意義的分享。今年的 ICML 有三個討論會都重點討論了遷移學習和

深度學習之----學習

介紹   在機器學習(ML)中,通常的關注點是對特定度量進行優化,度量有很多種,例如特定基準或商業 KPI 的分數。為了做到這一點,我們通常訓練一個模型或模型組合來執行目標任務。然後,我們微調這些模型,直到模型的結果不能繼續優化。雖然通常可以通過這種方式使模型達到可接受的效能,但是

遷移學習演算法:學習說明及相關的例項

簡介:  多工學習(Multitask learning)是遷移學習演算法的一種,遷移學習可理解為定義一個一個源領域source domain和一個目標領域(target domain),在source domain學習,並把學習到的知識遷移到target domain,提升target

學習概述論文:從定義方法到應用原理分析

多工學習是一個很有前景的機器學習領域,相關的理論和實驗研究成果以及應用也在不斷湧現。近日,香港科技大學電腦科學與工程系的楊強教授和張宇助理教授在《國家科學評論(National Science Review)》2018 年 1 月份釋出的「機器學習」專題期刊中發表了題為《An overview of

遷移學習(transfer learning)、學習(multi-task learning)、深度學習(deep learning)概念摘抄

本文在寫作過程中參考了諸多前輩的部落格、論文、筆記等。由於人數太多,在此不一一列出,若有侵權,敬請告知,方便我進行刪改,謝謝!!! 遷移學習(Transfer Learning) 遷移學習出現的背景如下:在一些新興領域很難得到我們需要的大量的訓練資料,另外,傳統的機器學習

遷移學習基礎知識 源域 學習 目標域

遷移學習 簡單的將就是舉一反三,是將已經學習到的知識遷移到另一種未知的知識的學習,即從源域遷移到目標域。 小故事 從前有一個商人,在帝都以賣貓的玩偶為生,他叫CNN,很厲害,是一個分辨高手,擅長區分不同的貓咪,如果有人拿貓咪想要坑他,基本是不可能的。名貴的

Tensorflow 學習 概念介紹

建立多工圖 多工的一個特點是單個tensor輸入(X),多個輸出(Y_1,Y_2...)。因此在定義佔位符時要定義多個輸出。同樣也需要有多個損失函式用於分別計算每個任務的損失。具體程式碼如下: # GRAPH CODE # ============ # 匯入 Tensorflow imp

深度神經網路的學習概覽(An Overview of Multi-task Learning in Deep Neural Networks)

譯自:http://sebastianruder.com/multi-task/ 1. 前言 在機器學習中,我們通常關心優化某一特定指標,不管這個指標是一個標準值,還是企業KPI。為了達到這個目標,我們訓練單一模型或多個模型集合來完成指定得任務。然後,我們通過精細調參,來改進模型直至效能不再

學習 Multi-task learning

利用歷史資料中的有用資訊來幫助分析未來資料的機器學習,通常需要大量有標籤資料才能訓練出一個優良的學習器。深度學習模型是一種典型的機器學習模型,因為這類模型是帶有很多隱藏層和很多引數的神經網路,所以通常需要數以百萬計的資料樣本才能學習得到準確的引數。但是,包括醫學影象分析在內的一些應用無法滿足這種資料

利用 TensorFlow 一步一步構建一個學習模型

  介紹 為什麼是多工學習? 當你在思考新事物的時候,他們通常會利用他們以前的經驗和獲得的知識來加速現在的學習過程。當我們學習一門新語言的時候,尤其是相關的語言時,我們通常會使用我們一級學過的語言知識來加快這一門新語言的學習過程。這個過程也可以用另一種方式來理解 —— 學習一種

學習-multi-learning總結

介紹 在機器學習(ML)中,通常的關注點是對特定度量進行優化,度量有很多種,例如特定基準或商業 KPI 的分數。為了做到這一點,我們通常訓練一個模型或模型組合來執行目標任務。然後,我們微調這些模型,直到模型的結果不能繼續優化。雖然通常可以通過這種方式使模型達到可接受的效

[ML] 學習以及流行正則化

Andrew Zhang May 24, 2016 線性迴歸容易因為過擬合而出現高方差,因此為了控制模型複雜度往往線上性迴歸的時候新增很多正則項,眾所周知的就有 L0,L1,L2 L0,L1,L2, L1 L1正規化效果是使得引數每一項的

Multi-task learning(學習)簡介

1. 什麼是Multi-task learning? Multi-tasklearning (多工學習)是和single-task learning (單任務學習)相對的一種機器學習方法。拿大家經常使用的school data做個簡單的對比,school data是用來預測

從compositional到distributed,從無監督到有監督再到學習 —— 漫談句向量 Sentence Embedding

關於詞向量,word embedding,研究相對較早,存在多種表徵方式,目前 distributed 方式相對成熟,得到了廣泛應用。但從 word 向 sentence、paragraph、document擴充套件,卻仍處於探索階段,本文嘗試對目前主要的研究方

學習與深度學習

作者:chen_h 微訊號 & QQ:862251340 微信公眾號:coderpai 多工學習是機器學習的一個子領域,學習的目標是同事執行多個相關任務。比如,系統會同時執行學習兩項任務,以便這兩項任務都有助於別的任務的學習。這是模仿人類

CMU提出「十字繡網路」,自動決定學習的最佳共享層

在碎片化閱讀充斥眼球的時代,越來越少的人會去關注每篇論文背後的探索和思考。在這個欄目裡,你會快速

caffe學習標籤分類

最近在參加一個識別的競賽,專案裡涉及了許多類別的分類,原本打算一個大的類別訓練一個分類模型,但是這樣會比較麻煩,對於同一圖片的分類會重複計算分類網路中的卷積層,浪費計算時間和效率。後來發現現在深度學習中的多工學習可以實現

推薦中的學習-ESMM

本文將介紹阿里發表在 SIGIR’18 的論文ESMM《Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate》。文章提出使用多工學習解決CVR(轉化率)預估時的樣本選擇偏差和資