kl散度的理解_以曲率的视角理解自然梯度优化
一個(gè)故事
我要講一個(gè)故事:一個(gè)你幾乎肯定聽過的故事,但它的側(cè)重點(diǎn)與你習(xí)以為常關(guān)注的不同。
所有現(xiàn)代深度學(xué)習(xí)模型都使用梯度下降進(jìn)行訓(xùn)練。 在梯度下降的每個(gè)步驟中,您的參數(shù)值從某個(gè)起始點(diǎn)開始,然后將它們移動(dòng)到最大損失減少的方向。 你可以通過從你的整個(gè)參數(shù)向量中獲取損失的導(dǎo)數(shù)來實(shí)現(xiàn)這一點(diǎn),否則稱為雅可比行列式。 然而,這只是損失的一階導(dǎo)數(shù),它沒有告訴你曲率的任何信息,或者說,一階導(dǎo)數(shù)變化的有多快。 由于您所處的區(qū)域中,您對(duì)一階導(dǎo)數(shù)的局部近似可能不會(huì)從該估計(jì)值點(diǎn)(例如,在大山前的向下曲線)的區(qū)域中,您通常需要謹(jǐn)慎,并且不要太過大踏步。 因此,為了謹(jǐn)慎起見,我們用下面的等式中的步長α控制我們的前進(jìn)速度。
這個(gè)步長做了一些有趣的事情:它限制了你要在梯度方向上更新每個(gè)參數(shù)的距離,并且這樣做是固定的數(shù)量。在這個(gè)算法的最簡單的版本中,我們?nèi)∫粋€(gè)標(biāo)量,假設(shè)是0.1,然后乘以關(guān)于損失的梯度。我們的梯度,記住,實(shí)際上是一個(gè)矢量-損失的梯度相對(duì)于模型中的每個(gè)參數(shù)向量-損失的梯度模型中,當(dāng)我們將它乘以一個(gè)標(biāo)量時(shí),我們用歐幾里得的方法,將沿每個(gè)參數(shù)軸的更新乘以相同的固定量。在梯度下降的最基本版本中,我們?cè)趯W(xué)習(xí)過程中使用相同的步長。
但是,這真的有意義嗎?有一個(gè)小學(xué)習(xí)率的前提是,我們知道一個(gè)單一的局部梯度估計(jì)只能在該估計(jì)周圍的一個(gè)小的局部區(qū)域有效。但是,參數(shù)可以存在于不同的尺度上,并且可以對(duì)您所學(xué)的條件分布產(chǎn)生不同程度的影響。而且,這種程度的影響會(huì)在培訓(xùn)過程中波動(dòng)。從這個(gè)角度來看,在歐幾里得參數(shù)空間中,用一個(gè)固定的全局半徑來定義一個(gè)安全波動(dòng)似乎不是一件特別明智或有意義的事情。
梯度計(jì)算技術(shù)的微妙之處
自然梯度的支持者含蓄地提出了一個(gè)相反的建議,即我們不應(yīng)該用參數(shù)空間中的距離來定義安全窗口,而是應(yīng)該用分布空間中的距離來定義它。所以,與其說"我將遵循電流梯度,服從保持參數(shù)向量保持在電流向量的極小值的距離內(nèi)",不如說"我將遵循我的電流梯度,服從保持分配我的模型是預(yù)測在之前預(yù)測的分布的極小值的距離內(nèi)"。
這里的概念是分布之間的距離對(duì)于任何縮放、移動(dòng)或一般的重新參數(shù)化都是不變的。例如,例如,相同的高斯可以使用方差參數(shù)或尺度參數(shù)(1/方差)進(jìn)行參數(shù)化;兩種分布之間的距離是不同的,這取決于它們是用方差還是尺度來進(jìn)行參數(shù)化。但如果在原始概率空間中定義一個(gè)距離,它將是一致的。
本文的其余部分將嘗試建立一種更強(qiáng)大,更直觀的理解方法,稱為自然梯度學(xué)習(xí),這是一種概念上優(yōu)雅的想法,旨在糾正參數(shù)空間中縮放的任意性。本文將深入探討它是如何工作的,如何在構(gòu)成它的不同數(shù)學(xué)思想之間建立橋梁,并最終討論它是否以及在什么地方真正有用。但是,首先:計(jì)算分布之間的距離意味著什么?
獲得KL
KL分歧,或者更確切地說是Kullback-Leibler分歧,在技術(shù)上并不是分布之間的距離度量(數(shù)學(xué)家對(duì)于所謂的度量或適當(dāng)?shù)木嚯x是挑剔的),但它非常接近這個(gè)概念。
從數(shù)學(xué)上講,它是通過計(jì)算從一個(gè)分布或另一個(gè)分布采樣的x的值取得的對(duì)數(shù)概率(即,概率值的原始差異)的比率的預(yù)期值來獲得的。這個(gè)事實(shí)是,期望取自其中一個(gè)分布或另一個(gè)分布使得它成為非對(duì)稱度量,其中KL(P || Q)!= KL(Q || P)。但是,在許多其他方面,KL分歧映射到我們關(guān)于概率距離應(yīng)該是什么樣的概念:它直接根據(jù)概率密度函數(shù)的定義來衡量,也就是說,分配在一堆點(diǎn)上的密度值的差異來定義的。這有一個(gè)非常實(shí)用的方面,當(dāng)分布對(duì)于廣泛的X系列的"X的概率是多少"的問題有更遠(yuǎn)的答案時(shí),分布被視為更加不同。
在自然梯度條件下,KL分歧被用作衡量我們的模型預(yù)測的輸出分布變化的一種方式。如果我們正在解決多向分類問題,那么我們的模型的輸出將是一個(gè)softmax,它可以被看作是一個(gè)多項(xiàng)式分布,每個(gè)類具有不同的概率。當(dāng)我們談?wù)撚僧?dāng)前參數(shù)值定義的條件概率函數(shù)時(shí),這就是我們所討論的概率分布。如果我們使用KL散度作為縮放梯度步長的方法,這意味著我們看到兩個(gè)參數(shù)配置為"更遠(yuǎn)的距離",對(duì)于給定的輸入特征集,如果它們會(huì)導(dǎo)致預(yù)測的類別分布在KL分歧方面非常不同。
Fisher的介紹
到目前為止,我們已經(jīng)討論過為什么在參數(shù)空間中縮放更新步驟的距離是令人不滿意的,并建議一個(gè)不那么隨意的替代方案:縮放我們的步驟,使得最多只能在KL分歧方面與我們的模型以前一直在預(yù)測的類分布。理解自然梯度最困難的部分是下一部分:KL Divergence和Fisher信息矩陣之間的聯(lián)系。
從故事的結(jié)尾開始,Natural Gradient就像這樣實(shí)現(xiàn):
自然梯度定義
等號(hào)上的def表示右邊的是左邊符號(hào)的定義。右手項(xiàng)由兩部分組成。首先,這是你的損失函數(shù)相對(duì)于參數(shù)的梯度(這是在更正常的梯度下降步驟中使用的相同梯度)。"自然"位來自第二個(gè)分量:取對(duì)數(shù)概率函數(shù)梯度的平方梯度的期望值(取自z)。我們將整個(gè)對(duì)象稱為Fisher信息矩陣,用損失梯度乘以它的倒數(shù)。
p-theta(z)項(xiàng)是由我們的模型定義的條件概率分布,也就是說:神經(jīng)網(wǎng)絡(luò)末端的softmax。我們正在研究所有p-theta項(xiàng)的梯度,因?yàn)槲覀冴P(guān)心的是我們預(yù)測的類概率因參數(shù)變化而變化的量。預(yù)測概率的變化越大,我們的更新前和更新后的預(yù)測分布之間的KL差異越大。
使自然梯度優(yōu)化混淆的部分原因在于,當(dāng)您正在閱讀或思考它時(shí),您必須理解和爭論兩個(gè)不同的梯度對(duì)象,這意味著不同的事物。順便說一句,這對(duì)于雜草來說是不可避免的,特別是在討論可能性時(shí),并沒有必要掌握整體直覺; 如果您不喜歡瀏覽所有血淋淋的細(xì)節(jié),請(qǐng)隨時(shí)跳到下一部分。
關(guān)于損失的梯度
通常,您的分類損失是一個(gè)交叉熵函數(shù),但更廣泛地說,它是某種函數(shù),它將模型的預(yù)測概率分布和真實(shí)目標(biāo)值作為輸入,并且當(dāng)您的分布遠(yuǎn)離目標(biāo)時(shí)具有更高的值。這個(gè)對(duì)象的梯度是梯度下降學(xué)習(xí)的核心面包和黃油; 它表示如果將每個(gè)參數(shù)移動(dòng)一個(gè)單位,您的損失將會(huì)發(fā)生變化。
對(duì)數(shù)似然的梯度
這是我學(xué)習(xí)自然梯度中最令人困惑的部分。因此,如果您閱讀有關(guān)Fisher信息矩陣的內(nèi)容,您將獲得許多鏈接,說明它與模型的對(duì)數(shù)似然的梯度有關(guān)。我之前對(duì)似然函數(shù)的理解是,它代表了你的模型對(duì)某些數(shù)據(jù)集的可能性有多大; 特別是,您需要目標(biāo)值來計(jì)算它,因?yàn)槟哪繕?biāo)是計(jì)算模型分配給真實(shí)目標(biāo)的概率,當(dāng)您對(duì)輸入要素進(jìn)行調(diào)節(jié)時(shí)。在討論可能性的大多數(shù)情況下,例如非常常見的最大似然技術(shù),您關(guān)心對(duì)數(shù)似然的梯度,因?yàn)槟目赡苄栽礁?#xff0c;您的模型分配從真實(shí)分布中采樣的值的概率越高,我們都快樂。實(shí)際上,這看起來像計(jì)算p(class | x)漸變的期望值,其中概率在數(shù)據(jù)中的實(shí)際類分布中得出。
但是,您也可以用另一種方式評(píng)估可能性,而不是根據(jù)真實(shí)目標(biāo)值計(jì)算您的可能性(您可能希望具有非零梯度,因?yàn)樗赡軙?huì)推動(dòng)您的參數(shù)增加概率對(duì)于真正的目標(biāo),您可以使用從條件分布本身中提取的概率來計(jì)算您的期望。也就是說,如果您的網(wǎng)絡(luò)導(dǎo)致softmax,而不是基于給定觀察的數(shù)據(jù)中的真實(shí)等級(jí),以0/1概率取得logp(z)的期望,請(qǐng)使用該模型的估計(jì)概率作為在它期望中的權(quán)重。這將導(dǎo)致整體預(yù)期梯度為0,因?yàn)槲覀儗⒛P彤?dāng)前的信念作為基本事實(shí),但我們?nèi)匀豢梢缘玫教荻鹊姆讲?即梯度平方),這是我們的Fisher矩陣中(隱含地)計(jì)算預(yù)測類空間中的KL分歧所需要的。
用武之地
這篇文章花了很多時(shí)間討論力學(xué):這個(gè)東西究竟是什么叫做自然梯度估計(jì),以及關(guān)于它如何起作用以及為什么起作用具有更好的直覺。但是,如果我不回答這個(gè)問題,我覺得自己會(huì)失職:這東西真的有價(jià)值嗎?
簡短的回答是:實(shí)際上,它并沒有為大多數(shù)深度學(xué)習(xí)應(yīng)用程序提供足夠引人注目的價(jià)值。有證據(jù)表明自然梯度導(dǎo)致收斂發(fā)生的步驟較少,但正如我稍后將討論的那樣,這是一個(gè)復(fù)雜的比較。對(duì)于因參數(shù)空間中的縮放更新步驟的隨意性而受挫的人來說,自然漸變的想法是優(yōu)雅的并且令人滿意。但是,除了優(yōu)雅之外,我不清楚它是否提供了無法通過更多啟發(fā)手段提供的價(jià)值。
總結(jié)
以上是生活随笔為你收集整理的kl散度的理解_以曲率的视角理解自然梯度优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大额存单注意事项
- 下一篇: 纸黄金做空会爆仓吗?