人工智慧中小樣本問題引發的多個系列模型演變及學習筆記(含元學習/小樣本學習/生成對抗網路/遷移學習等)

【說在前面】本人部落格新手一枚,象牙塔的老白,職業場的小白。以下內容僅為個人見解,歡迎批評指正,不喜勿噴![握手][握手]

【再啰嗦一下】本來只想記一下GAN的筆記,沒想到發現了一個大宇宙,很多個人並不擅長,主要是整理歸納!

一、Meta Learning 元學習綜述

Meta Learning,又稱為 learning to learn,已經成為繼 Reinforcement Learning 之後又一個重要的研究分支。

元學習區別於機器學習的是:機器學習通常是在擬合一個數據的分布,而元學習是在擬合一系列相似任務的分布。

本節主要參考了大佬的知乎專欄://zhuanlan.zhihu.com/p/28639662

推薦Stanford助理教授Chelsea Finn開設的CS330 multitask and meta learning課程

  • 在 Machine Learning 機器學習時代,對於複雜一點的分類問題,模型效果就不好了。
  • Deep Learning 深度學習解決了一對一映射問題,但如果輸出對下一個輸入有影響,也就是sequential decision making問題,單一的深度學習就解決不了了。
  • Deep Reinforcement Learning 深度強化學習對序列決策取得成效,但深度強化學習太依賴於巨量的訓練,並且需要精確的Reward。
  • 人類之所以能夠快速學習的關鍵是人類具備學會學習的能力,能夠充分利用以往的知識經驗來指導新任務的學習,因此 Meta Learning 成為新的攻克方向。

1. 基本概念

元學習是要去學習任務中的特徵表示,從而在新的任務上泛化。舉個例子,以下圖的影像分類來說,元學習的訓練過程是在task1和task2上訓練模型(更新模型參數),而在訓練樣本中的訓練集一般稱作support set,訓練樣本中的測試集一般叫做query set。測試過程是在測試任務上評估模型好壞,從圖中可以看出,測試任務和訓練任務內容完全不同。

元學習解決的是學習如何學習的問題,元學習的思想是學習「學習(訓練)」過程。元學習主要包括Zero-Shot/One-Shot/Few-Shot 學習、模型無關元學習(Model Agnostic Meta Learning)和元強化學習(Meta Reinforcement Learning)等。

  • Zero-shot Learing 就是訓練樣本里沒有這個類別的樣本,但是如果我們可以學到一個牛逼的映射,這個映射好到我們即使在訓練的時候沒看到這個類,但是我們在遇到的時候依然能通過這個映射得到這個新類的特徵。
  • One-shot Learing 就是類別下訓練樣本只有一個或者很少,我們依然可以進行分類。比如我們可以在一個更大的數據集上或者利用knowledge graph、domain-knowledge 等方法,學到一個一般化的映射,然後再到小數據集上進行更新升級映射。
  • Few-Shot Learing 的綜述將在下一節重點整理,這裡暫時不展開介紹。

元學習的主要方法包括基於記憶Memory的方法、基於預測梯度的方法、利用Attention注意力機制的方法、借鑒LSTM的方法、面向RL的Meta Learning方法、利用WaveNet的方法、預測Loss的方法等。

2. 基於記憶Memory的方法

基本思路:既然要通過以往的經驗來學習,那麼是不是可以通過在神經網路上添加Memory來實現呢?

代表方法包括:Meta-learning with memory-augmented neural networks、Meta Networks等。

可以看到,網路的輸入把上一次的y label也作為輸入,並且添加了external memory存儲上一次的x輸入,這使得下一次輸入後進行反向傳播時,可以讓y label和x建立聯繫,使得之後的x能夠通過外部記憶獲取相關影像進行比對來實現更好的預測。

3. 基於預測梯度的方法

基本思路:既然Meta Learning的目的是實現快速學習,而快速學習的關鍵一點是神經網路的梯度下降要准,要快,那麼是不是可以讓神經網路利用以往的任務學習如何預測梯度,這樣面對新的任務,只要梯度預測得准,那麼學習得就會更快了?

代表方法包括:Learning to learn by gradient descent by gradient descent 等。

該方法訓練一個通用的神經網路來預測梯度,用一次二次方程的回歸問題來訓練,優化器效果比Adam、RMSProp好,顯然就加快了訓練。

4. 利用Attention注意力機制的方法

基本思路:人的注意力是可以利用以往的經驗來實現提升的,比如我們看一個性感圖片,我們會很自然的把注意力集中在關鍵位置。那麼,能不能利用以往的任務來訓練一個Attention模型,從而面對新的任務,能夠直接關注最重要的部分。

代表方法包括:Matching networks for one shot learning 等。

這篇文章構造一個attention機制,也就是最後的label判斷是通過attention的疊加得到的:

[公式]

attention a 則通過 g 和 f 得到。基本目的就是利用已有任務訓練出一個好的attention model。

5. 借鑒LSTM的方法

基本思路:LSTM內部的更新非常類似於梯度下降的更新,那麼,能否利用LSTM的結構訓練出一個神經網路的更新機制,輸入當前網路參數,直接輸出新的更新參數?

代表方法包括:Optimization as a model for few-shot learning 等。

這篇文章的核心思想是下面這一段:

怎麼把LSTM的更新和梯度下降聯繫起來才是更值得思考的問題吧。

6. 面向RL的Meta Learning方法

基本思路:Meta Learning可以用在監督學習,那麼增強學習上怎麼做呢?能否通過增加一些外部資訊比如reward,之前的action來實現?

代表方法包括:Learning to reinforcement learn、Rl2: Fast reinforcement learning via slow reinforcement learning 等。

兩篇文章思路一致,就是額外增加reward和之前action的輸入,從而強制讓神經網路學習一些任務級別的資訊:

7. 通過訓練一個好的base model的方法,並且同時應用到監督學習和強化學習

基本思路:之前的方法都只能局限在監督學習或強化學習上,能搞個更通用的?是不是相比finetune學習一個更好的base model就能work?

主要方法包括:Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks 等。

這篇文章的基本思路是同時啟動多個任務,然後獲取不同任務學習的合成梯度方向來更新,從而學習一個共同的最佳base。

8. 利用WaveNet的方法

基本思路:WaveNet的網路每次都利用了之前的數據,是否可以照搬WaveNet的方式來實現Meta Learning呢?就是充分利用以往的數據呀?

主要方法包括:Meta-Learning with Temporal Convolutions 等。

直接利用之前的歷史數據,思路極其簡單,效果極其之好,是目前omniglot,mini imagenet影像識別的state-of-the-art。

9. 預測Loss的方法

基本思路:要讓學習的速度更快,除了更好的梯度,如果有更好的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。

10. 小結

這是兩年前的綜述了,但是感覺品質很高。當然,後續又有了一些新進展。在應用上,元學習應用到了更廣泛的問題上,例如小樣本影像分類、視覺導航、機器翻譯和語音識別等。在演算法上,最值得一提的應該就是元強化學習,因為這樣的結合將有望使智慧體能夠更快速地學習新的任務,這個能力對於部署在複雜和不斷變化的世界中的智慧體來說是至關重要的。

具體的,以上關於元學習的論文已經介紹了在策略梯度(policy gradient)和密集獎勵(dense rewards)的有限環境中將元學習應用於強化學習的初步結果。此後,很多學者對這個方法產生了濃厚的興趣,也有更多論文展示了將元學習理念應用到更廣泛的環境中,比如:從人類演示中學習、模仿學習以及基於模型的強化學習。除了元學習模型參數外,還考慮了超參數和損失函數。為了解決稀疏獎勵設置問題,也有了一種利用元學習來探索策略的方法。

儘管取得了這些進展,樣本效率仍然是一項挑戰。當考慮將 meta-RL 應用於實際中更複雜的任務時,快速適應這些任務則需要更有效的探索策略。因此在實際學習任務中,需要考慮如何解決元訓練樣本效率低下的問題。因此,伯克利 AI 研究院基於這些問題進行了深入研究,並開發了一種旨在解決這兩個問題的演算法。

最後分享看到的元學習 meta learning 的2020綜述論文。提出了一個新的分類法,對元學習方法的空間進行了更全面的細分:[認真看圖]

論文標題:Meta-Learning in Neural Networks: A Survey

論文鏈接://arxiv.org/abs/2004.05439

二、Few-shot Learning 小樣本學習綜述

Few-shot Learning 可以說是 元學習 Meta Learning 在監督學習領域的一個應用,當然也有它自己研究領域的東西。

本節來自香港科技大學和第四範式的綜述:Generalizing from a Few Examples: A Survey on Few-Shot Learning

該綜述已被 ACM Computing Surveys 接收,還建立了 GitHub repo,持續更新://github.com/tata1661/FewShotPapers

1. 基本概念

機器學習在數據密集型應用中非常成功,但當數據集很小時,它常常受到阻礙。為了解決這一問題,近年來提出了小樣本學習(FSL)。利用先驗知識,FSL可以快速地泛化到只包含少量有監督資訊的樣本的新任務中。

大多數人認為FSL就是 meta learning,其實不是。FSL可以是各種形式的學習(例如監督、半監督、強化學習、遷移學習等),本質上的定義取決於可用的數據。但現在大多數時候在解決FSL任務時,採用的都是 meta Learning 的一些方法。

基於各個方法利用先驗知識處理核心問題的方式,該綜述將 FSL 方法分為三大類:

  • 數據:利用先驗知識增強監督訊號
  • 模型:利用先驗知識縮小假設空間的大小
  • 演算法:利用先驗知識更改給定假設空間中對最優假設的搜索

基於此,該綜述將現有的 FSL 方法納入此框架,得到如下分類體系:

2. DATA

數據增強的方式有很多種,平時也被使用的比較多,在這裡作者將數據增強的方法概括成三類:

總之,數據增強沒有什麼神秘感,可以是手動在數據上修改(例如圖片的旋轉、句子中的同義詞替換等),也可以是複雜的生成模型(生成和真實數據相近的數據)。數據增強的方式有很多種,大量合適的增強一定程度上可以緩解FSL問題,但其能力還是有限的。

3. MODEL

和模型剪枝中的理念類似,你一開始給一個小的模型,這個模型空間離真實假設太遠了。而你給一個大的模型空間,它離真實假設近的概率比較大,然後通過先驗知識去掉哪些離真實假設遠的假設。

作者根據使用不同的先驗知識將MODEL的方法分成4類:

3.1 Multitask Learning

對於多個共享資訊的任務(例如數據相同任務不同、數據和任務都不同等),都可以用多任務學習來訓練。

多任務分為硬參數共享和軟參數共享兩種模式:

  • 硬參數共享認為任務之間的假設空間是有部分重疊的,體現在模型上就是有部分參數是共享的。而共享的參數可以是模型的前面一些層,表徵任務的低階資訊。也可以是在嵌入層之後,不同的嵌入層將不同任務嵌入到同一不變任務空間,然後共享模型參數等。
  • 軟參數共享不再顯示的共享模型參數,而是讓不同的任務的參數相似。這就可以通過不同任務的參數正則,或者通過損失來影響參數的相似,以此讓不同任務的假設空間類似。

多任務通過多個任務來限制模型的假設空間:

  • 對於硬參數共享,多個任務會有一個共享的假設空間,然後每個任務還有自己特定的假設空間。
  • 對於軟參數共享也類似,軟參數更靈活,但也需要精心設計。

3.2 Embedding Learning

嵌入學習很好理解,將訓練集中所有的樣本通過一個函數 f 嵌入到一個低維可分的空間Z,然後將測試集中的樣本通過一個函數 g 嵌入到這個低維空間Z,然後計算測試樣本和所有訓練樣本的相似度,選擇相似度最高的樣本的標籤作為測試樣本的標籤。

根據task-specific和task-invariant,以及兩者的結合可以分為三種,嵌入學習如下:

  • Task-specific是在任務自身的訓練集上訓練的,通過構造同類樣本相同,不同類樣本不同的樣本對作為數據集,這樣數據集會有一個爆炸式的擴充,可以提高樣本的複雜度,然後可以用如siamese network等來訓練。
  • Task-invariant是在一個大的且和任務相似的source數據集上訓練一個嵌入模型,然後直接用於當前任務的訓練集和測試集嵌入。
  • 實際上現在用的比較多的還是兩者的結合,既可以利用大的通用數據集學習通用特徵,又可以在特定任務上學習特定的特徵,而現在常用的訓練模式是meta learning中的metric-based的方式,此類常見的模型有match network、prototypical network、relation network等。

3.3 Learning with External Memory

具有外部存儲機制的網路都可以用來處理這一類問題,其實本質上和遷移學習一樣。只不過這裡不更新模型的參數,只更新外部記憶庫。外部記憶庫一般都是一個矩陣,如神經圖靈機,其外部記憶庫具有讀寫操作。

在這裡就是在一個用大量類似的數據訓練的具有外部存儲機制的網路上,用具體task的樣本來更新外部記憶庫。這類方法需要精心設計才能有好的效果,比如外部記憶庫寫入或更新的規則可能就影響模型能夠在當前任務上的表現。具體的如下圖所示:

3.4 Generative Modeling

引入了生成式的模型來解FSL問題。

4. ALGORITHM

在機器學習中,通常使用SGD及其變體(例如ADAM、RMSProp等)來尋找最優參數。但是在FSL中,樣本數量很少,這種方法就失效了。

在這一節,我們不再限制假設空間。根據使用不同的先驗知識,可以將ALGORITHM分為下面3類:

4.1 Refine Existing Parameters

本質就是pretrained + fine-tuning的模式,最常見的就是直接在pre-trianed的模型上直接fine-tuning參數,還可以在一個新的網路上使用pre-trained的部分參數來初始化等。

4.2 Refine Meta-learned Parameters

該小節是基於 meta learning 的解決方法,利用元學習器學習一個好的初始化參數。之後在新的任務上,只要對這個初始化參數少量迭代更新就能很好的適應新的任務。這種方法最經典的模型就是MAML,MAML的訓練模式如下圖所示:

上面的參數是元學習器的參數,最後用多個任務的梯度矢量和來更新參數。這樣的方式也有一個問題,就是新的任務的特性必須要和元訓練中的任務相近,這樣值才能作為一個較好的初始化值,否則效果會很差。因此,也就有不少研究在根據新任務的數據集來動態的生成一個適合它的初始化參數。

4.3 Learn Search Steps

上一節使用元學習來獲得一個較好的初始化參數,而本節旨在用元學習來學習一個參數更新的策略。針對每一個子任務能給定特定的優化方式實際上是提高性能的唯一方法,這裡就是設計一個元優化器來為特定的任務提供特定的優化方法,具體的如下圖所示:

梯度的更新也可以寫成:

在這裡使用RNN來實現,因為RNN具有時序記憶功能,而梯度迭代的過程中正好是一個時序操作。具體的訓練如下圖所示:

訓練過程大致如下:

  • 對於每個任務,同樣劃分訓練集和測試集,訓練集經過meta-learner得到一系列的梯度,因為RNN每個時刻都有輸出,因此每個時刻的梯度都去依次更新learner的參數ϕ。這樣看就相當於一個batch的樣本就更新了T次learner
  • 訓練完一輪之後,用測試集在learner上的到的梯度來更新meta-learner的參數

這和上一節面臨的問題一樣,meta-learner 學到的更新策略是針對這一類任務的,一旦新任務和元訓練中的任務偏差較大時,這種更新策略可能就失效了。

5. FUTURE WORKS

未來的方向可能有:

  • 從使用的先驗數據:例如利用更多的先驗知識、多模態的數據等
  • 從使用的模型方法:用新的網路結構去替換以前的,例如用transformer替換RNN
  • 從使用的場景:現在FSL在字元識別、影像識別、小樣本分割等取得效果,在目標檢測、目標跟蹤、NLP中的各項任務上等值得嘗試
  • 理論分析
  • ……

三、生成對抗網路 GAN 綜述

說到小樣本學習,就想說比較時髦的生成對抗網路GAN。別誤會,生成對抗網路並不是只針對小樣本生成,還有很多別的豐富應用。

1. GAN

GANs是一種結構化的概率模型,由兩個對立的模型組成:生成模型(G)用於捕獲數據分布,判別模型(D)用於估計生成數據的概率,以確定生成的數據是來自真實數據分布,還是來自G的分布。D和G使用基於梯度的優化技術(同時梯度下降)玩一個極小極大零和博弈,直到納什均衡。

GANs在一些實際任務中表現良好,例如影像生成、影片生成、域自適應和影像超解析度等。傳統的GANs雖然在很多方面都取得了成功,但是由於D和G訓練的不平衡,使得GANs在訓練中非常不穩定。D利用迅速飽和的邏輯損失。另外,如果D可以很容易的區分出真假影像,那麼D的梯度就會消失,當D不能提供梯度時,G就會停止更新。

近年來,對於模式崩潰問題的處理有了許多改進,因為G產生的樣本基於少數模式,而不是整個數據空間。另一方面,引入了幾個目標(損失)函數來最小化與傳統GANs公式的差異。最後,提出了幾種穩定訓練的方法。

2. DCGAN

顧名思義,DCGAN主要討論CNN與GAN如何結合使用並給出了一系列建議。另外還討論了GAN特徵的可視化、潛在空間插值等問題。

3. ImprovedGAN

Ian Goodfellow等人提供了諸多訓練穩定GAN的建議,包括特徵匹配、mini-batch識別、歷史平均、單邊標籤平滑以及虛擬批標準化等技巧。討論了GAN不穩定性的最佳假設。

4. PACGAN

PACGAN討論的是的如何分析model collapse,以及提出了PAC判別器的方法用於解決model collapse。思想其實就是將判別器的輸入改成多個樣本,這樣判別器可以同時看到多個樣本可以從一定程度上防止model collapse。

5. WGAN

WGAN首先從理論上分析了原始GAN模型存在的訓練不穩定、生成器和判別器的loss無法只是訓練進程、生成樣本缺乏多樣性等問題,並通過改進演算法流程針對性的給出了改進要點。

6. CycleGAN 

CycleGAN討論的是image2image的轉換問題,提出了Cycle consistency loss來處理缺乏成對訓練樣本來做image2image的轉換問題。Cycle Consistency Loss 背後的主要想法,圖片A轉化得到圖片B,再從圖片B轉換得到圖片A’,那麼圖片A和圖片A’應該是圖一張圖片。

7. Vid2Vid

Vid2Vid在生成器中加入光流約束,判別器中加入光流資訊及對前景和背景分別建模,重點解決影片轉換過程中前後幀影像的不一致性。

8. PGGAN

PGGAN創造性地提出了以一種漸進增大(Progressive growing)的方式訓練GAN,利用逐漸增大的PGGAN網路實現了效果令人驚嘆的生成影像。「Progressive Growing」 指的是先訓練 4×4 的網路,然後訓練 8×8,不斷增大,最終達到 1024×1024。這既加快了訓練速度,又大大穩定了訓練速度,並且生成的影像品質非常高。

9. StackGAN

StackGAN是由文本生成影像,StackGAN模型與PGGAN工作的原理很像,StackGAN 首先輸出解析度為64×64 的影像,然後將其作為先驗資訊生成一個 256×256 解析度的影像。

10. BigGAN

BigGAN模型是基於 ImageNet 生成影像品質最高的模型之一。該模型很難在本地機器上實現,而且 有許多組件,如 Self-Attention、 Spectral Normalization 和帶有投影鑒別器的 cGAN等。

11. StyleGAN 

StyleGAN應該是截至目前最複雜的GAN模型,該模型借鑒了一種稱為自適應實例標準化 (AdaIN) 的機制來控制潛在空間向量 z。雖然很難自己實現一個StyleGAN,但是它提供了很多有趣的想法。

12. 小結

當然前文有一些方法沒有提到的,例如CGAN、自編碼GAN等。

說到這裡,放一張大佬整理的GAN家族主要模型的概要圖:

  • 左邊部分主要是改進模型解決例如圖片轉換、文本轉影像、生成圖片、影片轉換等實際問題。
  • 右邊部分主要是解決GAN框架本身存在的一些問題。

同時,再分享一下生成式對抗網路(GANs)最新2020綜述,分類更全面更細緻:[認真看圖][認真看圖]

  • 主要包括基於重新設計的網路結構、新的目標函數和替代優化演算法的技術三個大類

GAN 已經在一些特定應用上與其它機器學習演算法相結合,例如半監督學習、遷移學習、強化學習和多模態學習等。GAN 在影像處理與電腦視覺(例如影像超解析度、影像生成、目標檢測和影片處理等)、自然語言處理(例如文本生成等)、音樂(例如歌詞生成等)、語音與音頻、醫學以及數據科學中的典型應用(例如之前我的隨筆里提到的數據補全、異常檢測、時間序列預測等)。

同時,GAN 被用於特徵學習領域(例如特徵選擇、哈希和度量學習等)和其它機器學習任務(例如主動學習、在線學習 、零/小樣本學習和多任務學習等)。可以說,電腦領域的很多研究分支中的演算法模型都能夠互相遷移、彼此融合,從而在不同領域有了拓展性的應用。

四、遷移學習綜述

說到小樣本學習,我也想再說說遷移學習。但是別誤會,遷移學習也並不是只針對小樣本學習,還有很多別的豐富應用。

本文主要參考了一篇綜述:A Survey on Transfer Learning

1. 基本概念

在許多機器學習和數據挖掘演算法中,一個重要的假設就是目前的訓練數據和將來的訓練數據,一定要在相同的特徵空間並且具有相同的分布。然而,在許多現實的應用案例中,這個假設可能不會成立。這種情況下,如果知識的遷移做得成功,我們將會通過避免花費大量昂貴的標記樣本數據的代價,使得學習性能取得顯著的提升。近年來,為了解決這類問題,遷移學習作為一個新的學習框架出現在人們面前。

遷移學習主要有以下三個研究問題:1)遷移什麼,2)如何遷移,3)何時遷移。

  • 「遷移什麼」提出了遷移哪部分知識的問題。 一些知識對單獨的域或任務有用,一些知識對不同的領域是通用的,可以用來提高目標域或目標任務的性能。
  • 「何時遷移」提出了哪種情況下運用遷移學習。當源域和目標域無關時,強行遷移可能並不會提高目標域上演算法的性能,甚至會損害性能。這種情況稱為負遷移。
  • 當前大部分關於遷移學習的工作關注於「遷移什麼」和「如何遷移」,隱含著一個假設:源域和目標域彼此相關。然而,如何避免負遷移是一個很重要的問題


基於遷移學習的定義,我們歸納了傳統機器學習方法和遷移學習的異同見下表:

在這裡插入圖片描述

(1)inductive transfer learning:推導遷移學習,也叫歸納遷移學習。其目標任務和源任務不同,無論目標域與源域是否相同。這種情況下,要用目標域中的一些已標註數據生成一個客觀預測模型以應用到目標域中。根據源域中已標註和未標註數據的不同情況,可以進一步將inductive transfer learning分為兩種情況:

  • 源域中大量已標註數據可用。這種情況下推導遷移學習和多任務學習類似。然而,推導遷移學習只關注於通過從源任務中遷移知識以便在目標任務中獲得更高性能,然而多任務學習嘗試同時學習源任務和目標任務。
  • 源域中無已標註數據可用。這種情況下推導遷移學習和自我學習相似。自我學習中,源域和目標域間的標籤空間可能不同,這意味著源域中的邊緣資訊不能直接使用。因此當源域中無已標註數據可用時這兩種學習方法相似。

transductive transfer learning:轉導遷移學習,也叫直推式遷移學習。其源任務和目標任務相同,源域和目標域不同。這種情況下,目標域中無已標註數據可用,源域中有大量已標註數據可用。根據源域和目標域中的不同狀況,可以進一步將轉導遷移學習分為兩類:

  • 源域和目標域中的特徵空間不同
  • 源域和目標域間的特徵空間相同,但輸入數據的邊緣概率分布不同。這種情況與自適應學習相關,因為文本分類、樣本選擇偏差和協方差移位中的知識遷移都有相似的假設。

(3)unsupervised transfer learning:無監督遷移學習。與推導遷移學習相似,目標任務與源任務不同但相關。然而,無監督遷移學習專註於解決目標域中的無監督學習問題,例如聚類、降維、密度估計等。這種情況下,訓練中源域和目標域都無已標註數據可用。

2. 遷移學習的分類

上述三種遷移學習可以基於「遷移什麼」被分為四種情況:

(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(關係遷移):可以被稱為基於關係知識的遷移學習。把相似的關係進行遷移,比如生物病毒傳播到電腦病毒傳播的遷移,比如師生關係到上司下屬關係的遷移。最近,統計關係學習技術主導了這一領域。

3. 小結

綜合第1小節和第2小節的內容,下圖展示了不同遷移學習分類中不同方法的使用情況:

與生成對抗網路GAN一樣,遷移學習同樣可以在很多領域使用,同時,可以與很其他機器學習演算法相結合,道理是相通的。

說到這裡,前面各種方法中的統計學習實現實在是太恐怖了,我只想接下來重點介紹一下深度遷移學習的內容,即深度學習+遷移學習

4. 「小王愛遷移」系列學習內容:含深度遷移學習!

本小節主要分享一下大佬的知乎專欄的學習內容,主要包括遷移學習領域經典的各大方法,用於輔助對上文的理解:

(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的問題:

  • 如何確定source和target路徑上中間點的個數。它通過提出一種kernel方法,利用路徑上的所有點的積分,把這個問題解決了。
  • 當有多個source的時候,我們如何決定使用哪個source跟target進行遷移?GFK提出Rank of Domain度量,度量出跟target最近的source來解決這個問題。

GFK方法有以下幾個步驟:選擇最優的子空間維度進行變換、構建測地線、計算測地線流式核、以及構建分類器。

(3)聯合分布適配(JDA):Transfer feature learning with joint distribution adaptation,2013

主要思想是:屬於基於特徵的遷移學習方法。是一個概率分布適配的方法,而且適配的是聯合概率。JDA方法同時適配兩個分布,然後非常精巧地規到了一個優化目標里。用弱分類器迭代,最後達到了很好的效果。

和TCA的主要區別有兩點:

  • 1)TCA是無監督的(邊緣分布適配不需要label),JDA需要源域有label。
  • 2)TCA不需要迭代,JDA需要迭代。

——————————————————————————————-

(4)在線遷移學習:A framework of online transfer learning,2010-2014

這是在線遷移學習研究的第一篇文章,作者分別對同構OTL和異構OTL提出了相應的方法,就是基於SVM以及集成學習進行組合。

基本思想是:先針對可用的源域數據建立一個分類器,然後,每來一個目標域數據,就對這個新數據建立一個分類器,然後與在源域上建立的這個分類器進行組合。

核心問題是:確定源域和新數據分類器各自應該以怎麼樣的權重進行組合。

(5)負遷移:提出「傳遞遷移學習」的解決思路,2015-2017

如果兩個領域之間基本不相似,那麼就會大大損害遷移學習的效果。還是拿騎自行車來說,拿騎自行車的經驗來學習開汽車,這顯然是不太可能的。因為自行車和汽車之間基本不存在什麼相似性。所以,這個任務基本上完不成。這時候,可以說出現了負遷移(negative transfer)

產生負遷移的原因主要有:

  • 源域和目標域壓根不相似,談何遷移?——數據問題
  • 源域和目標域是相似的,但是,遷移學習方法不夠好,沒找到可遷移的成分。 ——方法問題

因此,在實際應用中,找到合理的相似性,並且選擇或開發合理的遷移學習方法,能夠避免負遷移現象。

隨著研究的深入,已經有新的研究成果在逐漸克服負遷移的影響:

  • 楊強教授團隊2015在數據挖掘領悟頂級會議KDD上發表了傳遞遷移學習文章《Transitive transfer learning》,提出了傳遞遷移學習的思想。
  • 楊強教授團隊在2017年人工智慧領域頂級會議AAAI上發表了遠領域遷移學習文章《Distant domain transfer learning》,可以用人臉來識別飛機。

這些研究的意義在於,傳統遷移學習只有兩個領域足夠相似才可以完成,而當兩個領域不相似時,傳遞遷移學習卻可以利用處於這兩個領域之間的若干領域,將知識傳遞式的完成遷移。這個是很有意義的工作,可以視為解決負遷移的有效思想和方法。

(6)開放集遷移學習:Open Set Domain Adaptation,2017

現有的domain adaptation都針對的是一個「封閉」的任務,就是說,source和target中的類別是完全一樣的,source有幾類,target就有幾類。這些方法都只是理想狀態下的domain adaptation。而真正的環境中,source和target往往只會共享一些類的資訊,而不是全部。

整個文章的解決思路大致是這樣的:

  • 利用source和target的關係,給target的樣本打上標籤
  • 並將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 多任務學習

  • 多任務學習和FTL都注重多個任務的協同學習,最終目標都是要把所有的模型變得更強。但是,多任務學習強調不同任務之間可以共享訓練數據,破壞了隱私規則。而FTL則可以在不共享隱私數據的情況下,進行協同的訓練。
  • 遷移學習注重知識從一個源領域到另一個目標領域的單向遷移。而這種單向的知識遷移,往往伴有一定的資訊損失,因為通常只會關注遷移學習在目標領域上的效果,而忽略了在源領域上的效果。FTL則從目標上就很好地考慮了這一點,多個任務之間協同。
  • 遷移學習和多任務學習都可以解決模型和數據漂移的問題,這一點在FTL中也得到了繼承。

——————————————————————————————-

(12)深度神經網路的可遷移性:How transferable are features in deep neural networks,2014

深度網路的一個事實:前面幾層都學習到的是通用的特徵(general feature),後面的網路更偏重於學習特定的特徵(specific feature)。

雖然該論文並沒有提出一個創新方法,但是通過實驗得到了以下幾個結論,對以後的深度學習和深度遷移學習都有著非常高的指導意義:

  • 神經網路的前3層基本都是general feature,進行遷移的效果會比較好。
  • 深度遷移網路中加入fine-tune,效果會提升比較大,可能會比原網路效果還好。
  • Fine-tune可以比較好地克服數據之間的差異性。
  • 深度遷移網路要比隨機初始化權重效果好。
  • 網路層數的遷移可以加速網路的學習和優化。

(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的兩個問題:

  • 一是DDC只適配了一層網路,可能還是不夠,因為Jason的工作中已經明確指出不同層都是可以遷移的,所以DAN就多適配幾層。
  • 二是DDC是用了單一核的MMD,單一固定的核可能不是最優的核。DAN用了多核的MMD(MK-MMD),效果比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問題一直以來是遷移學習和電腦視覺領域等的研究熱點。從傳統方法,到深度方法,再到最近的對抗方法,都在嘗試解決此問題。作者在本文中提出,現在的對抗方法面臨兩個挑戰:

  • 一是當數據特徵具有非常複雜的模態結構時,對抗方法無法捕獲多模態的數據結構,容易造成負遷移。
  • 二是當上面的問題存在時,domain classifier就很容易出錯,所以造成遷移效果不好。

本文提出了基於條件對抗網路的領域自適應方法,主要由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個網路結構不同(比如),則上述模式直接失效,此時如何做遷移?

本文將這一思路具體表述為2點:What to transferWhere to transfer

  • What部分解決網路的可遷移性:源域中哪些層可以遷移到目標域哪些層?
  • Where部分解決網路遷移多少:源域中哪些層的知識遷移多少給目標域的哪些層?

簡單來說就是:學習源域網路中哪些層的知識可以遷移多少給目標域的哪些層。

五、深度遷移學習綜述

說到遷移學習,我想最時髦的就是深度遷移學習了。有了深度學習的加持,遷移學習在人工智慧領域有著豐富的應用。

上一節的內容其實已經包含了深度遷移學習的很多方法,包括非常多的idea,本節就作為輔助理解用吧!

本文參考了一篇綜述:A Survey on Deep Transfer Learning

這裡強推大佬的知乎專欄和guthub://github.com/jindongwang/transferlearning

1. 基本概念

深度遷移學習是通過深度神經網路研究如何利用其他領域的知識。隨著深度神經網路在各個領域的廣泛應用,大量的深度遷移學習方法被提出。包括離線/在線、增量學習、生成對抗、同構/異構等,可以說是非常豐富。

2. 深度遷移學習的分類

本文將深度遷移學習分為四類:基於實例的深度遷移學習、基於映射的深度遷移學習、基於網路的深度遷移學習和基於對抗的深度遷移學習。

(1)基於實例的深度遷移學習。與遷移學習分類中的第一類是一致的,這裡不再贅述。

(2)基於映射的深度遷移學習。與遷移學習分類中的第二類是一致的,這裡不再贅述。

(3)基於網路的深度遷移學習。將原領域中預先訓練好的部分網路,包括其網路結構和連接參數,重新利用,將其轉化為用於目標領域的深度神經網路的一部分。

(4)基於對抗的深度遷移學習。在生成對抗網路 GAN 的啟發下,引入對抗性技術,尋找既適用於源域又適用於目標域的可遷移表達。

負遷移和可遷移性測度是傳統遷移學習中的重要問題。如何利用深度神經網路在無監督或半監督學習中進行知識的遷移會受到越來越多的關注。

補充一點,元學習與遷移學習的區別聯繫是什麼?

  • 元學習關注的是一組任務T~p(T),元學習的目標是從T1,T2…中不斷學習,從中學到更通用的知識,從而具有適應新任務Ti的能力,它關注的是任務T到Ti這個過程。
  • 遷移學習通常只有一個源域A(當然可以有多個),一個目標域B,目標是學習A到B的遷移,更關注的是A到B的這個過程。

當然,兩者有很多重疊之處,要結合著看,互相補充,互相學習。

六、其他概念介紹:知識蒸餾、增量學習

1. 知識蒸餾

知識蒸餾被廣泛的用於模型壓縮和遷移學習當中。

知識蒸餾可以將一個網路的知識轉移到另一個網路,兩個網路可以是同構或者異構。做法是先訓練一個teacher網路,然後使用這個teacher網路的輸出和數據的真實標籤去訓練student網路。

  • 可以用來將網路從大網路轉化成一個小網路,並保留接近於大網路的性能。
  • 可以將多個網路的學到的知識轉移到一個網路中,使得單個網路的性能接近emsemble的結果。

2. 增量學習

主要關注的是災難性遺忘,平衡新知識與舊知識之間的關係。即如何在學習新知識的情況下不忘記舊知識。

引用Robipolikar對增量學習演算法的定義,即一個增量學習演算法應同時具有以下特點:

  • 可以從新數據中學習新知識
  • 以前已經處理過的數據不需要重複處理
  • 每次只有一個訓練觀測樣本被看到和學習
  • 學習新知識的同時能保持以前學習到的大部分知識
  • 一旦學習完成後訓練觀測樣本被丟棄
  • 學習系統沒有關於整個訓練樣本的先驗知識

在概念上,增量學習與遷移學習最大的區別就是對待舊知識的處理

  • 增量學習在學習新知識的同時需要儘可能保持舊知識,不管它們類別相關還是不相關的。
  • 遷移學習只是藉助舊知識來學習新知識,學習完成後只關注在新知識上的性能,不再考慮在舊知識上的性能。

 

如果您對異常檢測感興趣,歡迎瀏覽我的另一篇部落格:異常檢測演算法演變及學習筆記

如果您對智慧推薦感興趣,歡迎瀏覽我的另一篇部落格:智慧推薦演算法演變及學習筆記 CTR預估模型演變及學習筆記

如果您對知識圖譜感興趣,歡迎瀏覽我的另一篇部落格:行業知識圖譜的構建及應用基於圖模型的智慧推薦演算法學習筆記

如果您對時間序列分析感興趣,歡迎瀏覽我的另一篇部落格:時間序列分析中預測類問題下的建模方案 深度學習中的序列模型演變及學習筆記

如果您對數據挖掘感興趣,歡迎瀏覽我的另一篇部落格:數據挖掘比賽/項目全流程介紹 機器學習中的聚類演算法演變及學習筆記

如果您對人工智慧演算法感興趣,歡迎瀏覽我的另一篇部落格:人工智慧新手入門學習路線和學習資源合集(含AI綜述/python/機器學習/深度學習/tensorflow)人工智慧領域常用的開源框架和庫(含機器學習/深度學習/強化學習/知識圖譜/圖神經網路)

如果你是電腦專業的應屆畢業生,歡迎瀏覽我的另外一篇部落格:如果你是一個電腦領域的應屆生,你如何準備求職面試?

如果你是電腦專業的本科生,歡迎瀏覽我的另外一篇部落格:如果你是一個電腦領域的本科生,你可以選擇學習什麼?

如果你是電腦專業的研究生,歡迎瀏覽我的另外一篇部落格:如果你是一個電腦領域的研究生,你可以選擇學習什麼?

如果你對金融科技感興趣,歡迎瀏覽我的另一篇部落格:如果你想了解金融科技,不妨先了解金融科技有哪些可能?

之後部落客將持續分享各大演算法的學習思路和學習筆記:hello world: 我的部落格寫作思路

Tags: