小样本点云深度学习库_小样本学习综述报告
文章內(nèi)容整理:Enneng Yang,?Xiaoqing Cao
本文僅作為學習交流使用,如有問題,請聯(lián)系ennengyang@qq.com。
1.小樣本問題的研究意義?●○
深度學習已經(jīng)在各個領域取得了非常優(yōu)異的表現(xiàn),但傳統(tǒng)的深度學習需要大量有標簽的樣本來進行訓練,當樣本不充分時,模型性能將嚴重下降。然而現(xiàn)實情況下不是所有任務下都能獲得大量有標簽的樣本。例如醫(yī)療保健和城市計算領域,我們僅有少量(標記)數(shù)據(jù),因此面臨的挑戰(zhàn)是如何使機器學習算法在處理小數(shù)據(jù)時仍能很好地工作?
細想一下,一般哪些場景會需要解決這種多分類少樣本的情況呢?
圖像:字符識別、極多類的圖像分類、圖像檢索、目標跟蹤、視覺問答等
NLP: 問答、翻譯、語言模型等
推薦&廣告:冷啟動、低頻長尾分布等
然而,我們?nèi)祟悈s能通過少量的樣本學習去識別出那些新出現(xiàn)的類別,比如人類一開始只是認識貓,不認識老虎,但他只在圖書室看了一眼老虎的圖片,當某天去到動物園的時候,人是很容易就認出老虎的,而不會把它當作貓。因此,學習使用有限數(shù)量的帶標簽的樣本來推廣到新類別是非常有趣的。
所以小樣本研究的意義就在于:現(xiàn)實中有很多任務無法拿到足夠的樣本去學習,通過小量樣本進行學習,降低樣本數(shù)量和成本,進而解決實際的問題是一個迫切的需求。而所有解決小樣本問題的方法,歸結下來都是:挖掘事物高層的語義表示,得到先驗知識(從任務集合中提取和傳播可遷移的知識),使訓練出的模型具有可遷移性(能遷移到小樣本)。
2.小樣本的核心問題?●○以上是一些小樣本問題的直觀說明,如何從理論上更形式化的來解釋小樣本問題的困難呢?
我們回顧一下機器學習問題:我們有一個訓練數(shù)據(jù)I={X, Y}, 假設I中的所有X都滿足一個隱含的、未知的分布P, 也就是說I中所有的樣本都是從P中獨立同分布(i.i.d)采樣出來的。假設h是算法L學習到的從X到Y的映射,并且有 $ h \in H $, H是算法L的假設空間。我們可以定義h的期望風險(expected risk)為:
(1)
但顯然我們無法觀察到整個分布P,觀察到的僅僅是采樣后的訓練集I,也就是p(x,y)是未知的,因此我們需要定義經(jīng)驗風險(empirical risk):
(2)
機器學習是通過經(jīng)驗風險最小化來完成的。我們定義下列三個符號:
對于訓練集的隨機選擇,學習的總誤差可以分解為:
(3)
approximation error是度量H中的算法L有多接近最優(yōu)假設空間H;estimation error測量在H范圍內(nèi)最小化經(jīng)驗風險RI(H)而不是期望風險R(H)的效果。由公式(3)可以看出總誤差受H(假設空間)和I(訓練集中的樣本數(shù))的影響。在假設空間一樣的情況下,我們知道:
(4)
從這里其實就可以進一步明確小樣本學習的問題是:小樣本的情況下,經(jīng)驗風險最小化空間hI不再可靠。因此,小樣本學習比一般的機器學習問題要困難得多。
小樣本問題的解決方法?●○明白了小樣本問題的所在后,該從哪些方面來解決小樣本問題呢?小樣本問題其實主要分為從:數(shù)據(jù)增強、模型約束空間、搜索算法三個層面來提供先驗知識。
數(shù)據(jù)增強就是說那我就想辦法給小樣本的任務更多的數(shù)據(jù);約束模型空間是指既然我樣本少,沒法在復雜的模型空間中訓練好,那我就想辦法約束我的搜索空間;搜索算法是指,普通的SGD從頭訓練我的參數(shù)我可能沒有那么多樣本去修正,那我就找一個更好的優(yōu)化算法或者更容易優(yōu)化的參數(shù)初始值。下面我們一一介紹常見的這些方式。
3.1數(shù)據(jù)增強
這個方法其實是最簡單直接的方式,我們剛剛已經(jīng)說了小樣本的核心問題在于數(shù)據(jù)量太少導致經(jīng)驗風險不可靠,那么如果能想辦法增加數(shù)據(jù),就會由小樣本學習問題變?yōu)閭鹘y(tǒng)的機器學習問題了,那我就用傳統(tǒng)的方式就好了。
增加數(shù)據(jù)有哪些手段呢?
手工規(guī)則:圖像領域包括反轉、旋轉、變形、縮放、對比等(預處理),NLP領域包括term順序、同義詞替換(預處理)。
基于學習的規(guī)則:核心就是拿同一個類的樣本去學習互相轉化的模式,比如用auto-encoder的方式去訓練相似類別的圖片,然后給新的圖片加一點噪聲就能產(chǎn)生新的樣本;翻譯算法的來回翻譯(中->英->中)。
弱標注或者無標注數(shù)據(jù):比如圖像可以進行無監(jiān)督的標簽傳播, 直接用于標記那些未知標簽的數(shù)據(jù)來提升信息量。
相似數(shù)據(jù)集:利用普通馬的數(shù)據(jù)輔助斑馬識別,貓輔助老虎(但應引入變異度量);生成對抗網(wǎng)絡生成和真實數(shù)據(jù)相近的數(shù)據(jù)。
3.2預估模型
解決小樣本問題的另一個出發(fā)點就是:如果我們能挖掘高層次的語義特征,降低模型參數(shù)空間和優(yōu)化難度,就能很好的適應小樣本任務。
3.2.1.多任務學習模型(multi-task learning)
多任務學習模型同時學習多個任務, 充分利用跨任務共享的通用信息和每個任務的特定信息來增強各個任務。
多任務學習模型的核心也就在于參數(shù)共享,怎么設置參數(shù)共享呢? 目前的模型可以分為兩大派別:軟(soft)/硬(hard)參數(shù)共享。
共同點:都是用來自其他任務的數(shù)據(jù)幫助緩解這種數(shù)據(jù)稀疏問題;共享參數(shù)本身大大降低了過擬合的風險;如何確定網(wǎng)絡共享程度和共享部分是一個關鍵。
差異點:hard結構是固定的,前提是比較相關的任務,應用方便,但當任務相關度下降或者需要不同程度的推理時,硬共享就不合適了。軟共享一般是使用loss函數(shù)進行限制(即盡量鼓勵不同任務的部分參數(shù)相似),理論上更robust,但他參數(shù)多,而且依賴人工設計。主流的思想是將兩種結合:典型的代表比如十字繡網(wǎng)絡(Cross-stitch)。
多任務的學習模式可以為學習者提供一個良好的參數(shù)空間H,并對不同的任務進行快速概括。然而,如何在不引入負遷移(negative transfer)的情況下對一個新的但不相關的任務進行泛化尚不確定。
3.2.2. 嵌入學習(embedding learning)
這里降低參數(shù)空間復雜度的思想是:通過學習區(qū)分相似度和不相似度的樣本方式來構建一個規(guī)模更少的嵌入空間來降低參數(shù)空間。比如單獨看百度百科描述老虎和貓,我們不可能把所有貓的特征和老虎的特征都去直接單獨描述,但其實只要三句話可能就能描述出兩者的區(qū)別,進而可以分類。所以主要思想是:由學習表示樣本的全部信息變化到學習樣本的差異性。因此要注意的是,嵌入學習(embedding learning)主要使用在分類任務上。
嵌入學習主要是基于度量學習來區(qū)分相似或者不相似。這種基于距離度量學習的方式效果很顯著:文獻[2]的結果表明,一個帶有基于距離分類器的簡單基線方法(不像元學習那樣對任務/事件集進行訓練)就取得了與其他復雜算法相似的性能。
3.2.3. 記憶模型(learning with external memory)
這種方式通過引入額外的memory network來存儲其他任務的先驗信息。
原理:嵌入函數(shù)f是從外部先驗知識學習的。當有一個新樣本時,從memory空間中提取出與該樣本的相似度最高的鍵值對。然后將鍵值輸入到預測模型中。當memory空間不滿時,新的樣本都會寫入空的記憶中;空間已滿時,須設定新的規(guī)則以決定新的樣本取代或者更新現(xiàn)有鍵值對。
3.2.4.生成模型(generative modeling)
這里的生成建模方法是指涉及p(x,y)的這一類方法。他們利用先驗知識和訓練集來得到估計分布。生成建模方法更新訓練集上的概率分布進行預測。
為什么用生成模型:從統(tǒng)計的角度表示數(shù)據(jù)的分布情況,能夠反映同類數(shù)據(jù)本身的相似度;生成方法當樣本量增加的時候,學習到的模型可以更快的收斂于真實模型。
生產(chǎn)模型核心還是挖掘出高階的、高層次的語義特征去輔助新任務學習。一些典型的方法包括基于VAE的,基于GAN的,基于推理網(wǎng)絡的。
3.2.5.從模型遷移知識的方式總結
多任務學習方法通過一組共同學習的任務來約束小樣本任務的學習時間。他們可以在不同的任務之間進行溝通,并在優(yōu)化過程中改進這些任務。它們還隱式地增加數(shù)據(jù),因為一些參數(shù)是由多個任務共同學習的。但是,進行聯(lián)合訓練的目標任務(這里指的就是小樣本的那個任務)一開始訓練就必須是參與訓練的多個任務之一。因此,對于每個新的任務,都必須從頭開始學習,這可能代價高昂且速度緩慢。它不適合只有一次機會的任務或喜歡快速推理的任務。
嵌入學習方法學習的是在較小的嵌入空間內(nèi)嵌入樣本,在較小的嵌入空間內(nèi)可以很容易地識別出相似對和不相似對。因此空間H是有約束的。大部分方法從大規(guī)模數(shù)據(jù)集中學習任務不變性信息,并吸收新任務的任務特性。一旦學會,大多數(shù)方法可以通過前向傳遞很容易地從新任務中歸納出來。然而,如何將任務的不變性量和特定信息有原則地混合在任務中尚不清楚。
外部存儲學習方法通過存儲在內(nèi)存中的訓練集對每個樣本進行細化和重新解釋,從而重塑空間H。將訓練樣本顯式存儲在內(nèi)存中,避免了為適應訓練樣本而進行艱苦的再訓練。特定于任務的信息被有效地使用并且不會輕易地被忘記。然而,使用外部存儲器進行學習會帶來額外的空間和計算開銷。
生成式建模方法從先驗知識中學習先驗概率,形成H的形態(tài),具有良好的解釋能力、因果關系和組合性。通過學習聯(lián)合分布p(x,y),他們可以處理更廣泛的任務,如生成和重建。通過學習生成模型,可以生成大量樣本進行數(shù)據(jù)擴充。然而,與其他模型相比,生成式建模方法通常具有較高的計算成本和推導難度。為了計算的可行性,它們需要對結構進行嚴格的簡化,從而導致不準確的近似。
3.3.訓練算法
小樣本問題下,樣本量變少了,怎么訓練,才能避免過擬合,并更快找到最好的參數(shù)模型呢?我們知道,大部分深度學習模型的參數(shù)都是使用SGD或者其變種(Adam, Adagrad...)來進行更新:
當樣本豐富時,可以通過足夠的訓練樣本把θ更新到足夠的精度。然而在Few-shot中沒有足夠的樣本,因此獲得的經(jīng)驗風險是不可靠的。本節(jié)利用先驗知識來改變對參數(shù)化h*的變量θ的搜索,從而解決小樣本問題。
3.3.1完善現(xiàn)有參數(shù)(Refine existing parameters)
這種方式是假設θ通過從大規(guī)模數(shù)據(jù)中學習獲取一般的結構,因此可以使用幾次迭代對其進行調(diào)整,使其在few-shot數(shù)據(jù)集上工作得很好。
微調(diào)參數(shù)(Fine-tune):在這種方式中,最核心的問題就是如何避免over-fitting. 一般使用以下策略:early-stop(只做有限度的更新); 選擇只更新一部分參數(shù)(只選擇部分參數(shù)進行更新,例如最后一層)等
聚合參數(shù)(Aggregate):在一些情況下,我們無法的得到可以微調(diào)的參數(shù),比如我要做人臉識別任務,但我只有一些眼睛識別,耳朵識別,嘴巴識別的數(shù)據(jù)訓練好的參數(shù),這時候我們可以選擇把這些參數(shù)聚合起來:
3.3.2完善meta參數(shù)(Refine meta-learned)
元學習者(meta-learner)從一組任務中學習,這些任務與few-shot任務的任務分布相同,然后輸出一個general的學θ,然后每個學習者使用自己的訓練集對元學習者提供的θ進行優(yōu)化。
元學習的范圍可以很廣,我們在附錄中單獨介紹這一部分。基于元學習完善(Refine meta-learned)的方法主要是:
Refine by Gradient Descent.:該策略利用梯度下降法對元學習的θ進行了改進。一個典型的代表是:Model-Agnostic Meta-Learning (MAML)[7], 元學習的目的是為所有的任務都學一個好的初始化,因此當一個few-shot任務來的時候,可以根據(jù)很少的梯度更新就可以學習好。當然,MAML為所有任務提供的都是相同的初始化,這種初始化只適合任務相似時,當任務不相似就會有極差的性能。因此有一些模型從為每個任務都提供不同的初始化出發(fā)[8]。
學習搜索步驟(Learn search steps): 該策略通過學習元學習者(meta-learner)輸出搜索步驟或更新規(guī)則來直接指導每個學習者。它改變了搜索步驟,比如方向或步長,而不是學習更好的初始化。
總結一下,基于優(yōu)化算法的方式主要分為兩條主線:第一條主線是去學習一個良好的模型初始化(也就是模型參數(shù)),使得通過少量有標簽樣本的梯度更新就能識別那些新的類別。另一條主線是去學習一個優(yōu)化器,比如學一個基于LSTM的meta-learner來替代隨機梯度下降優(yōu)化器(SGD optimizer)。雖然這些基于初始化的方法能夠在有限的訓練實例數(shù)量下快速適應新類,但實驗表明,這些方法在處理基類和新類之間的領域轉換方面(比如在mini-ImageNet數(shù)據(jù)集上訓練后遷移到CUB數(shù)據(jù)集使用)存在困難[2]。
參考文獻
[1]?Generalizing from a Few Examples: A Survey on Few-Shot Learning. Arxiv, 2019.
[2]?A Closer Look at Few-shot Classification. ICLR, 2019.
[3] Meta-learning with memory-augmented neural networks. ICML, 2016.
[4] Neural turing machines. Arxiv, 2014.
[5] Few-Shot Object Recognition from Machine-Labeled Web Images. CVPR, 2017.
[6] Memory Matching Networks for One-Shot Image Recognition. CVPR, 2018.
[7] Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks. ICML, 2017.
[8] Gradient-Based Meta-Learning with Learned Layerwise Metric and Subspace. ICML, 2018.
[9]?此處僅用于學習,引用文獻未完整列出。
總結
以上是生活随笔為你收集整理的小样本点云深度学习库_小样本学习综述报告的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电子信息工程班徽设计_蜻蜓AI说专业:与
- 下一篇: sv编程语言_SV及UVM高级话题篇之一