官术网_书友最值得收藏!

3.4 元學習神經網絡模型

前面介紹了神經網絡模型的基礎框架、卷積神經網絡和殘差神經網絡等經典的神經網絡模型。接下來要介紹元學習神經網絡模型,更新模型來適應新任務,給出完成新任務的神經網絡模型。結合前面的內容,讀者能看到,元學習在神經網絡模型的結構和超參數設計上都投入了思考。元學習神經網絡模型包括以下內容:學會學習的神經網絡學習器、預訓練深度神經網絡模型的適應、具有適應性的神經元設計。其中:

(1)學會學習的神經網絡學習器—使用神經網絡模型對模型的自我更新策略建模,通過尋優來找到最優的自我更新策略。

(2)預訓練深度神經網絡模型的適應—對預訓練深度模型進行調參來給出完成新任務的模型。

(3)具有適應性的神經元設計—通過在神經元函數中引入任務專屬參數,在新任務上更新任務專屬參數,給出新任務的模型。

在后面的章節中,還會介紹在自動化機器學習中使用元學習思想,改進神經網絡模型的超參數尋優過程,主要有以下兩個方面的介紹。

(1)自動化機器學習通過遍歷神經網絡的所有超參數組合,在每個超參數組合下,訓練神經網絡模型,找到模型效果最優的超參數組合。

(2)加速自動化機器學習,通過將元學習方法和自動化機器學習相結合,加速找到模型效果最優的超參數組合。

元學習神經網絡模型使用神經網絡模型來實現元學習的目的,讓機器學會學習,讓神經網絡模型在新任務上學會自我更新,讓機器自動化地適應新任務。元學習神經網絡模型在神經網絡模型的基礎上進行改造,讓神經網絡模型更加靈活,擁有更多自由度,可以在新任務上快速準確更新,并利用神經網絡模型結構上的優勢,適用范圍廣,應用靈活,便于學會和理解,容易推廣使用。因此,元學習神經網絡模型是元學習領域被研究最多、應用最廣的思想之一。這里提到的方法常常是許多思想的綜合,本節通過對方法中思想的介紹,讓讀者理解這個思想的內涵,方法分類不是本節的目的。

3.4.1 學會學習的神經網絡學習器

Li Ke和Malik Jitendra在2017年的論文“Learning to Optimize”[31]中提出了自動優化更新任何學習器的算法,對于任何任務的任何學習器,都可以實現算法的自動設計。這里使用強化學習框架解決元學習問題,將模型更新策略視為強化學習中的行動策略,將模型在新任務上的表現視為強化學習中的獎勵。深度強化學習框架中的行動策略常常用神經網絡模型來建模,神經網絡模型是普適的函數近似器(Universal Function Approximator),可以為所有函數提供好的近似,當然也可以作為行動策略函數的近似。神經網絡模型的設置非常靈活,能適用于多種任務的需要,在最優化神經網絡模型中可以找到最優行動策略,即最優的學習器更新規則。在論文[31]中,作者將強化學習框架作為元學習器,而基礎學習器可以是任何學習器,在任何學習任務上,元學習器都可以自動學會更新任意學習器,從而實現了自動算法設計。

自動優化更新策略是:

img

這里的π代表強化學習框架下的行動策略,f是目標函數(Objective),需要最優化目標函數。img是過去已經探索過的點,已知目標函數在這些點的取值,即強化學習框架下的獎勵。行動策略的模型是神經網絡模型,輸入是過去所有的行動和行動產生的效果,輸出是下一步要探索的點:

img

其中img是上一步探索過的點,而img是模型優化器接下來要探索的點。行動策略指導下一步探索哪個點,行動策略是神經網絡模型,它的輸入是過去探索過的點和目標函數,目標函數給出強化學習中的獎勵,它的輸出的是下一步要探索的點。

在之前最優化目標函數的算法中,常用的有隨機梯度下降法,即通過計算梯度來確定下一步要探索的點。這里代表行動策略的神經網絡模型替代了隨機梯度下降法,由神經網絡模型而不是給定的算法來確定下一步要探索的點,這也是自動算法設計的原理。

由于神經網絡模型很靈活,可以近似任意函數,所以意味著行動策略可以是任何函數。這里給出的更新策略是在任意函數這樣一個很大的集合上通過最優化得到的,意味著這樣優化得到的更新策略會有很好的表現。

3.4.2 預訓練深度神經網絡的適應

遇到一個新問題時,深度學習模型獲取海量有標注數據集來對模型進行訓練,得到預訓練深度神經網絡模型(Pre-Trained Deep Model)。由于訓練過的數據涵蓋了幾乎所有會遇到的案例,所以遇到訓練過的案例時,深度學習模型能給出完美的答案,或者遇到和訓練過的案例有極大相似性的新案例時,深度學習模型也能給出很好的答案。

使用預訓練深度神經網絡模型來完成新任務包括兩個模塊:

(1)在預訓練數據集中的大量有標注數據上估計出具有普適性、能推廣到新任務上的規律。

(2)將預訓練模型推廣到新任務上,直接應用具有普適性、易推廣的規律,加速模型在新任務上形成快速準確推理的過程。

獲取海量有標注數據集的成本昂貴,且總會遇到經驗較少的新案例。此時需要考慮對預訓練深度神經網絡模型進行更新。上文提到的方法有局部更新、梯度反向傳播更新等方式,可將預訓練深度神經網絡模型進行調整,以解決新案例。

局部更新一般只更新與輸出層接近的層中的參數,這里的參數屬于分類器,對模型適應新任務更加重要。靠近輸入層的層是用來對圖片數據中的平移不變特征進行提取的,這里的參數對于適應新任務來說不那么重要。例如,在ImageNet上訓練VGG Net,在適應新的圖片分類任務時,只對輸出層的參數進行更新,就會在新任務上獲取不錯的分類精度。

前面提到AlexNet的參數數量比GoogLeNet多,但是AlexNet的層數比GoogLeNet少,AlexNet在ImageNet圖片分類比賽中的精度沒有GoogLeNet好。由此可見,并不是參數數量越多模型的精度就越高。在海量有標注數據訓練的深度神經網絡模型中,參數之間相關性很大,參數的冗余度極大,可以實現有效參數數目大量減少,模型訓練時間減少,并且模型精度不降低。研究表明,只用少部分參數就可以準確預測其余的參數,且模型精度不降低。

由于深度神經網絡模型中參數的冗余度較大,在參數之間存在映射關系,因此用少量的參數就可以準確預測其余的參數,且參數之間的映射關系相對穩定。在神經網絡模型適應新任務且不斷更新的過程中,參數之間的映射關系保持穩定。因此,有一種神經網絡模型的更新策略是局部更新關鍵參數,根據以往這些關鍵參數與輸出層參數之間的映射關系,直接從參數預測輸出,減少計算量,加速神經網絡模型適應新任務的過程。

Qiao Siyuan等作者在2018年的論文“Few-Shot Image Recognition by Predicting Parameters from Activations”[32]中給出了這樣一種方法,一般稱為Activation to Parameter,即激活函數到參數的映射法。首先,輸入圖片x屬于圖片類別y,輸出層之前層的激活函數(Pre-Activation)記為Sy,輸出層對應于這個類別的神經元參數記為wy,假設在Sywy之間存在穩定的映射φ,且假設映射φ對于不同圖片類別來說都是一樣的,在只有新類別的圖片分類任務上,映射φ也是不變的。因此,在大量有標注圖片數據集上預訓練模型,計算映射φ中的參數,然后在新類別圖片分類的任務上,直接使用映射φ預測輸出層中新類別的神經元參數,直接在原來的神經網絡模型的輸出層上加入新類別的神經元,而不用重新訓練龐大的神經網絡模型。

Activation to Parameter[32]的具體步驟如下:

(1)整理圖片分類的數據集。預訓練數據集img包含很多圖片類別,這些圖片類別的集合是img,新任務數據集img只包含新的圖片類別,這些圖片類別的集合是img。

(2)首先是預訓練。遍歷預訓練數據集圖片類別img中的所有圖片類別,輸入屬于圖片類別y的輸入圖片x,計算輸出層之前層的激活函數值:

img

對于圖片類別y中的所有輸入圖片,計算Ay中所有激活函數的平均值img。在實際計算中,使用的是激活狀態sy,激活狀態以概率p取值為img,以概率img取值為img中隨機抽取的一個值。激活函數的狀態值sy和輸出層神經元參數wy之間的映射是

img

在預訓練數據集上,最小化損失函數:

img

其中,映射img是需要估計的值,映射img可以是線性或者非線性模型。

(3)預訓練完成后,將預訓練得到的映射推廣到新任務上。通過估計的映射預測輸出層神經元中的參數,擴展神經網絡模型,使之能很好地完成新任務。這里要求擴展預訓練模型之后,模型在圖片新類別和預訓練過的舊類別上預測精度相當,所有圖片類別的集合是

img

擴展預訓練模型之后,輸入圖片x屬于圖片類別y的概率是

img

其中,輸出層中的參數img,根據預訓練模型估計的映射,直接應用到新任務中。對于所有類別的圖片分類問題,這個映射都是不變的。

Activation to Parameter方法在新任務上可實現快速推理。相比之下,其他方法需要更新大量網絡參數,花費很多時間和計算資源。例如,ResNet在新任務上的大量參數更新在4個GPU上花費2小時,而Activation to Parameter在新任務上推理時,在1個GPU上花費不到1秒鐘,就可以達到類似精度的推理結果。

預訓練深度神經網絡模型具有以下優勢:

(1)預訓練模型適應到新任務上時精度很高,精度在新任務上和預訓練過的舊任務上是類似的。

(2)新任務和舊任務是同一個種類,在新任務上,預訓練模型不需要太多的迭代更新,可快速在新任務上進行推理,且精度不減。

關于預訓練深度神經網絡模型適應新任務具有以下探討:

(1)預訓練模型適應的新任務類型有限。例如,在Activation to Parameter方法中,新任務只能是圖片分類任務,且新任務中包含已訓練任務中沒有的圖片類別,新任務不能是圖片分割的任務,也不能是語音識別任務等其他種類的任務。Activation to Parameter比不上人類的智能,人類可以從不同種類的任務之間找到可以推廣的共性,在不同種類的任務之間實現快速推理。

(2)預訓練模型需要大量有標注數據,而有標注數據的獲取需要成本,且人工標注本身可能會有錯誤,預訓練模型需要大量時間、計算資源和費用成本。可想而知,在這樣高昂的成本下,為了保持模型在舊任務和新任務上達到一樣的精度,預訓練模型的復雜度是很高的。

3.4.3 具有適應性的神經元設計

神經網絡模型包括神經元、神經元連接、激活函數、權重和偏差等自由度,在這些自由度上可以方便地對神經網絡模型進行設計改造,以提高神經網絡模型對新任務的適應性,更快地在新任務上形成推理結果,且推理結果的精度更高。以下有一些例子可供參考:

(1)神經元連接參數包括兩種,一種是在適應新任務時進行更新的,另一種在適應新任務時不更新,新任務對靠近輸出端的神經元狀態的傳遞產生影響。

(2)神經元的激活函數包括許多參數,添加代表新任務適應性的參數,在新任務上只更新這些參數,新任務對神經元激活狀態產生影響。

(3)神經元連接可視為離散的結構參數,在適應新任務時可更新神經網絡的結構參數,使得新任務對神經網絡結構產生影響。

具有代表性的方法是Tsendsuren Munkhdalai等作者在2018年的論文“Rapid Adaptation with Conditionally Shifted Neurons”[33]中提出的CSN神經元(Conditionally Shifted Neurons),重新設計神經網絡模型中的激活函數,使之包括兩種參數:

(1)激活函數前值參數。

(2)任務專屬參數。

預訓練神經網絡模型后,在新任務上,元學習器更新了任務專屬參數,可進行快速準確的推理。

適應性神經元CSN第img層激活函數的定義如下:

img

其中,T代表神經網絡模型的最后一層,σ是非線性激活函數,at是激活函數的前值參數,βt是任務專屬參數。元學習器處理新任務時,使用注意力機制從記憶模塊提取相關經驗,更新任務專屬參數。

常見的神經網絡模型中的神經元都可以換成自帶適應性參數的CSN神經元,論文中提到如下深度網絡模型:

(1)深度殘差神經網絡模型使用的CSN稱為adaResNet模型。

(2)深度卷積神經網絡模型使用的CSN稱為adaCNN模型。

(3)長短期記憶網絡模型使用的CSN可以在時間和深度上都更新模型,適應新任務。

使用CSN提高了這些神經網絡模型的適應性,在小樣本圖片分類數據集miniImageNet上獲得了更好的分類精度。

CSN方法包含如下組成部分:

(1)記憶模塊。存儲基礎學習器在元訓練集任務上的訓練結果,存儲訓練任務的特征。

(2)基礎學習器和元學習器結構?;A學習器針對任務本身進行訓練,元學習器使用注意力機制在記憶模塊提取有用的經驗信息,在不同任務之間更新任務專屬參數,對基礎學習器進行指導,讓基礎學習器更快更好地適應新任務。

(3)自帶適應性的神經元設計。神經元激活函數進行了重新設計,包含任務專屬參數,在不同任務之間進行更新,讓神經網絡模型更好地適應新任務,且任務專屬參數在同一層進行共享,減少了任務專屬參數的數量,有利于加速在新任務上進行推理的過程。

CSN方法有如下兩個步驟:

(1)在元訓練集上,在每個有標注數據集的任務上計算任務的特征,存儲到記憶模塊中,并且在任務上訓練基礎學習器,記錄訓練結果中的信息,存儲到記憶模塊中。

(2)在元驗證集或者元測試集上進行推理,元學習器計算新任務的特征,并且使用注意力機制在記憶模塊中提取任務專屬經驗參數,元學習器將這個經驗參數輸入基礎學習器,基礎學習器輸出在新任務上的推理。

在元訓練階段,將訓練經驗放置在記憶模塊中。記憶模塊包含兩個部分:

(1)特征提取器從輸入任務數據集中提取的特征。

(2)基礎學習器在任務上訓練,得到訓練結果中獲得的條件信息(Conditioning Information)。

在元訓練階段,首先,輸入元訓練數據集:

img

其中,img代表一個任務中的有標注數據集,img代表有標注數據集中的標注。對輸入的有標注數據集進行特征提取,將特征記錄在記憶模塊中,提取的特征如下:

img

其中,img是輸入數據集img的特征,f是特征提取機制,提取的特征img記錄在記憶模塊中。然后,在所有元訓練集的任務上訓練基礎學習器:

img

其中,img是基礎學習器在輸入數據集img上形成的推理,img是基礎學習器。在輸入的訓練任務上,基礎學習器計算每個任務中包含的信息,這些信息被稱為條件信息,條件信息包括任務上基礎學習器給出的結果的經驗信息,存儲在記憶模塊中,遇到新任務時,元學習器提取這些條件信息,用來加速在新任務上形成推理。論文中有這樣的介紹,常用的條件信息有以下兩種形式:

(1)首先,計算基礎學習器損失函數的一階導數:

img

其中,img是基礎學習器在訓練任務上的損失函數值,img是網絡模型中的激活函數前值,是考慮任務專屬參數和非線性激活函數之前的前值。n是元訓練集中訓練任務的個數,T是神經網絡模型的層數,rt是第t個神經網絡層的寬度。這里使用了損失函數值對輸入任務數據集的一階導數。損失函數導數條件信息(Error Gradient Information)的具體形式如下:

img

其中,論文中img,p是可以靈活設置的超參數,sgn是基于數值正負數的符號函數??梢姡瑮l件信息是只包含損失函數一階導數的函數,如果一階導數值的絕對值太小,那么需要將一階導數值放大;如果一階導數值的絕對值不太小,那么對一階導數值取對數值。這樣,就從一階導數值轉化成條件信息值。

(2)直接反饋信息(Direct Feedback Information):

img

其中,img是非線性激活函數σ的一階導數,img是基礎學習器的交叉熵損失函數對Softmax輸出層前值的一階導數值。直接反饋信息的計算簡單,在小樣本圖片分類問題miniImageNet中,使用直接反饋信息的CSN網絡模型具有很好的精度。基礎學習器訓練任務后得到的條件信息為:

img

其中,g是記憶函數,從條件信息計算出參數存儲在記憶模塊中。

元驗證或者元測試階段,主要有兩個部分:

(1)使用注意力機制從記憶模塊中提取有用的經驗。

(2)使用提取的經驗更新任務專屬參數。

在元驗證集或者元測試集上進行推理的階段中,元學習器根據新任務輸入的數據集計算特征:

img

其中,img是元驗證集或者元測試集中的輸入數據集,f是特征提取機制,kj是輸入數據的特征。接下來,元學習器使用注意力機制,提取記憶模塊中的經驗,為新任務提供任務專屬參數。元學習器的注意力機制如下:

img

其中,img是記憶模塊中元訓練任務的特征,img是新任務的特征,cos是余弦距離函數,Softmax是Softmax函數。CSN神經元中新任務的任務專屬參數βt是記憶模塊中參數的組合:

img

其中,img是記憶模塊中訓練任務的條件信息生成的,img參數來自元學習器的注意力機制。元學習器將任務專屬參數img輸入基礎學習器,生成對新任務的推理結果。

這里,元學習器和記憶模塊結合使用,指導新任務的完成,加速新任務上的推理過程。一方面,記憶模塊包含記憶要素生成機制,包括對輸入數據集的處理,提取輸入數據集的特征,并進行存儲;對基礎學習器的訓練結果進行處理,提取有效的信息,并進行存儲。另一方面,元學習器使用注意力機制,從記憶模塊中提取與新任務相關的信息,處理后為基礎學習器提供完成新任務的參數。這里,元學習器和記憶模塊共同為所有任務的共性進行建模,對元訓練集中的所有任務進行綜合,從而可以加速對新任務的準確推理。

自帶任務專屬參數的神經元設計有以下優勢:

(1)任務專屬參數為神經網絡模型提供了更多的自由度,在遇到新任務時,神經網絡模型可以更加靈活地實現自我更新。

(2)任務專屬參數的數量可控,需要快速在新任務上進行推理時,任務專屬參數的數量不能太多,更新大量參數需要更多時間,通過合理的參數分享,可減少任務專屬參數的數量。

(3)由于神經元的數目比神經元之間連接的數目要少,所以在激活函數上添加任務專屬參數有利于減少參數數量。如果在神經元連接的權重上設計任務專屬參數,參數數量會更多。

對自帶任務專屬參數的神經元設計有以下探討:

(1)需要大量元訓練集中的有標注任務,使用基礎學習器對大量有標注任務進行訓練。通過大量的經驗積累,形成巨大、海量、類似字典或者百科全書的記憶模塊,使用元學習器對記憶模塊中的信息進行提取和整合,形成新任務的任務專屬參數。

(2)隨著記憶模塊中信息的累積,信息越來越多,信息的冗余程度較大。

主站蜘蛛池模板: 赤峰市| 万安县| 蛟河市| 营山县| 苏州市| 兰州市| 科技| 三明市| 阳春市| 本溪| 上犹县| 昭觉县| 彭州市| 佛学| 沛县| 方正县| 绍兴市| 汝城县| 通榆县| 当雄县| 麻城市| 延庆县| 青阳县| 新蔡县| 汾西县| 江华| 清新县| 曲麻莱县| 师宗县| 二手房| 平武县| 鹤峰县| 东莞市| 墨脱县| 东台市| 前郭尔| 育儿| 兴山县| 开原市| 陇西县| 乌鲁木齐县|