




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、最優(yōu)化筆記(上) 4 個(gè)月前譯者注:本文智能單元首發(fā),譯自斯坦福 CS231n 課程筆記 OptimizationNote,課程教師 Andrej Karpathy翻譯。本篇由翻譯完成,堃堃和進(jìn)行校對(duì)修改。譯文含公式和代碼,建議 PC 端閱讀。原文如下內(nèi)容列表:簡(jiǎn)介損失函數(shù)可視化最優(yōu)化策略#1:隨機(jī)搜索o策略#2:隨機(jī)局部搜索o策略#3:跟隨梯度譯者注:上篇截止處o梯度計(jì)算使用有限差值進(jìn)行數(shù)值計(jì)算o微分計(jì)算梯度o梯度下降小結(jié)簡(jiǎn)介在上一節(jié)中,介紹了圖像分類任務(wù)中的兩個(gè)關(guān)鍵部分:1.基于參數(shù)的評(píng)分函數(shù)。該函數(shù)將原始圖像像素線性函數(shù))。為分類評(píng)分值(例如:一個(gè)2.損失函數(shù)。該函數(shù)能夠根據(jù)分類評(píng)分和訓(xùn)
2、練集圖像數(shù)據(jù)實(shí)際分類的一致性,衡量某個(gè)具體參數(shù)集的質(zhì)量好壞。損失函數(shù)有多種版本和不同的實(shí)現(xiàn)方式(例 如:Softmax 或 SVM)。上節(jié)中,線性函數(shù)的形式是,而 SVM 實(shí)現(xiàn)的公式是:對(duì)于圖像數(shù)據(jù) ,如果基于參數(shù)集做出的分類與真實(shí)情況比較一致,那么計(jì)算出來(lái)的損失值 就很低?,F(xiàn)在介紹第三個(gè),也是最后一個(gè)關(guān)鍵部分:最優(yōu)化 Optimization。最優(yōu)化是尋找能使得損失函數(shù)值最小化的參數(shù)的過(guò)程。鋪墊:一旦理解了這三個(gè)部分是如何相互的,會(huì)回到第一個(gè)部分(基于參數(shù)的函數(shù)),然后將其拓展為一個(gè)遠(yuǎn)比線性函數(shù)復(fù)雜的函數(shù):首先是神經(jīng)網(wǎng)絡(luò),然后是卷積神經(jīng)網(wǎng)絡(luò)。而損失函數(shù)和最優(yōu)化過(guò)程這兩個(gè)部分將會(huì)保持相對(duì)穩(wěn)定。
3、損失函數(shù)可視化本課中的損失函數(shù)一般都是定義在高維度的空間中(比如,在 CIFAR-10 中一個(gè)線性分類器的權(quán)重矩陣大小是10 x3073,就有 30730 個(gè)參數(shù)),這樣要將其可視化就很。然而辦法還是有的,在 1 個(gè)維度或者 2 個(gè)維度的方向上對(duì)高進(jìn)行切片,就能得到一些直觀感受。例如,隨機(jī)生成一個(gè)權(quán)重矩陣,該矩陣就與高中的一個(gè)點(diǎn)對(duì)應(yīng)。然后沿著某個(gè)維度方向前進(jìn)的同時(shí)損失函數(shù)值的變化。換句話說(shuō),就是生成一個(gè)隨機(jī)的方向并且沿著此方向計(jì)算損失值,計(jì)算方法是根據(jù)不同的 值來(lái)計(jì)算。這個(gè)過(guò)程將生成一個(gè)圖表,其 x 軸是 值,y 軸是損失函數(shù)值。同樣的方法還可以用在兩個(gè)維度上,通過(guò)改變來(lái)計(jì)算損失值,從而給出二
4、維的圖像。在圖像中,示:可以分別用 x 和 y 軸表示,而損失函數(shù)的值可以用顏色變化表一個(gè)無(wú)正則化的多類 SVM 的損失函數(shù)的圖示。左邊和中間只有一個(gè)樣本數(shù)據(jù),右邊是 CIFAR-10 中的 100 個(gè)數(shù)據(jù)。左:a 值變化在某個(gè)維度方向上對(duì)應(yīng)的的損失值變化。中和右:兩個(gè)維度方向上的損失值切片圖,藍(lán)色部分是低損失值區(qū)域,紅色部分是高損失值區(qū)域。注意損失函數(shù)的分段線性結(jié)構(gòu)。多個(gè)樣本的損失值是總體的平均值,所以右邊的碗狀結(jié)構(gòu)是很多的分段線性結(jié)構(gòu)的平均(比如中間這個(gè)就是其中之一)。可以通過(guò)數(shù)學(xué)公式來(lái)解釋損失函數(shù)的分段線性結(jié)構(gòu)。對(duì)于一個(gè)單獨(dú)的數(shù)據(jù),有損失函數(shù)的計(jì)算公式如下:通過(guò)公式可見(jiàn),每個(gè)樣本的數(shù)據(jù)損
5、失值是以 為參數(shù)的線性函數(shù)的總和(零閾值來(lái)源于函數(shù))。的每一行(即),有時(shí)候它前面是一個(gè)正號(hào)(比如當(dāng)它對(duì)應(yīng)錯(cuò)誤分類的時(shí)候),有時(shí)候它前面是一個(gè)負(fù)號(hào)(比如當(dāng)它是是正確分類的時(shí)候)。為進(jìn)一步闡明,假設(shè)有一個(gè)簡(jiǎn)單的數(shù)據(jù)集,其中包含有 3個(gè)只有 1 個(gè)維度的點(diǎn),數(shù)據(jù)集數(shù)據(jù)點(diǎn)有 3 個(gè)類別。那么完整的無(wú)正則化 SVM 的損失值計(jì)算如下:因?yàn)檫@些例子都是一維的,所以數(shù)據(jù) 和權(quán)重都是數(shù)字。觀察,可以看到上面的式子中一些項(xiàng)是的線性函數(shù),且每一項(xiàng)都會(huì)與 0 比較,取兩者的最大值。可作圖如下:從一個(gè)維度方向上對(duì)數(shù)據(jù)損失值的展示。x 軸方向就是一個(gè)權(quán)重,y 軸就是損失值。數(shù)據(jù)損失是多個(gè)部分組合而成。其中每個(gè)部分要么
6、是某個(gè)權(quán)重的獨(dú)立部分,要么是該權(quán)重的線性函數(shù)與 0 閾值的比較。完整的 SVM 數(shù)據(jù)損失就是這個(gè)形狀的 30730 維版本。需要多說(shuō)一句的是,你可能根據(jù) SVM 的損失函數(shù)的碗狀外觀猜出它是一個(gè)凸函數(shù)。關(guān)于如何高效地最小化凸函數(shù)的有很多,你也可以學(xué)習(xí)斯坦福大學(xué)關(guān)于(凸函數(shù)最優(yōu)化)的課程。但是一旦函數(shù)擴(kuò)展到神經(jīng)網(wǎng)絡(luò),目標(biāo)函數(shù)就就不再是凸函數(shù)了,圖像也不會(huì)像上面那樣是個(gè)碗狀,而是凹凸不平的復(fù)雜地形形狀。不可導(dǎo)的損失函數(shù)。作為一個(gè)技術(shù)筆記,你要注意到:由于 max 操作,損失函數(shù)中存在一些不可導(dǎo)點(diǎn)(kinks),這些點(diǎn)使得損失函數(shù)不可微,因?yàn)樵谶@些不可導(dǎo)點(diǎn),梯度是沒(méi)有定義的。但是次梯度(subgra
7、dient)依然存在且常常被使交換使用次梯度和梯度兩個(gè)術(shù)語(yǔ)。用。在本課中,最優(yōu)化 Optimization重申一下:損失函數(shù)可以量化某個(gè)具體權(quán)重集 W 的質(zhì)量。而最優(yōu)化的目標(biāo)就是找到能夠最小化損失函數(shù)值的 W。現(xiàn)在就朝著這個(gè)目標(biāo)前進(jìn),實(shí)現(xiàn)一個(gè)能夠最優(yōu)化損失函數(shù)的方法。對(duì)于有一些經(jīng)驗(yàn)的同學(xué),這節(jié)課看起來(lái)有點(diǎn)奇 怪,因?yàn)槭褂玫睦樱⊿VM 損失函數(shù))是一個(gè)凸函數(shù)問(wèn)題。但是要記得,最終的目標(biāo)是不僅僅對(duì)凸函數(shù)做最優(yōu)化,而是能夠最優(yōu)化一個(gè)神經(jīng)網(wǎng)絡(luò),而對(duì)于神經(jīng)網(wǎng)絡(luò)是不能簡(jiǎn)單的使用凸函數(shù)的最優(yōu)化技巧的。策略#1:一個(gè)差勁的初始方案:隨機(jī)搜索既然確認(rèn)參數(shù)集 W 的好壞蠻簡(jiǎn)單的,那第一個(gè)想到的(差勁)方法,就是
8、可以隨機(jī)嘗試很多不同的權(quán)重,然后看其中哪個(gè)最好。過(guò)程如下:# 假設(shè) X_train 的每一列都是一個(gè)數(shù)據(jù)樣本(比如 3073 x 50000)# 假設(shè) Y_train 是數(shù)據(jù)樣本的類別(比如一個(gè)長(zhǎng) 50000 的一維數(shù)組)# 假設(shè)函數(shù) L 對(duì)損失函數(shù)進(jìn)行評(píng)價(jià)bestloss = float(inf) #assigns the highestsible float valuefor num in xrange(1000):W = np.random.randn(10, 3073) * 0.0001 # generate random parametersloss = L(X_train, Y_t
9、rain, W) # get the loss over the entire training setif loss bestloss: # keep track of the best solutionbestloss = loss bestW = Wprin attempt %d the loss was %f, best %f % (num, loss, bestloss)# 輸出:# in attempt 0 the loss was 9.401632, best 9.401632在上面的代碼中,嘗試了若干隨機(jī)生成的權(quán)重矩陣 W,其中某些的損失值較小,而另一些的損失值大些。W 取出,
10、然后去跑測(cè)試集:可以把這次隨機(jī)搜索中找到的最好的權(quán)重驗(yàn)證集上表現(xiàn)最好的權(quán)重 W 跑測(cè)試集的準(zhǔn)確率是 15.5%,而完全隨機(jī)猜的準(zhǔn)確率是 10%,如此看來(lái),這個(gè)準(zhǔn)確率對(duì)于這樣一個(gè)不經(jīng)過(guò)大腦的策略來(lái)說(shuō),還算不錯(cuò)嘛!思路:迭代優(yōu)化。當(dāng)然,肯定能做得更好些。思路是:雖然找到最優(yōu)的權(quán)重 W 非常,甚至是不可能的(尤其當(dāng) W 中存的是整個(gè)神經(jīng)網(wǎng)絡(luò)的權(quán)重的時(shí)候),但如果問(wèn)題轉(zhuǎn)化為:對(duì)一個(gè)權(quán)重矩陣集 W 取優(yōu),使其損失值稍微減少。那么問(wèn)題的難度就大大降低了。換句話說(shuō),的方法從一個(gè)隨機(jī)的W 開始,然后對(duì)其迭代取優(yōu),每次都讓它的損失值變得更小一點(diǎn)。的策略是從隨機(jī)權(quán)重開始,然后迭代取優(yōu),從而獲得更低的損失值。蒙眼徒
11、步者的比喻:一個(gè)助于理解的比喻是自己想象成一個(gè)蒙著眼睛的徒步者,正走在山地地形上,目標(biāo)是要慢慢走到山底。在 CIFAR-10 的例子中,這山是 30730 維的(因?yàn)?W 是 3073x10)。在山上踩的每一點(diǎn)都對(duì)應(yīng)一個(gè)的損失值,該損失值可以看做該點(diǎn)的海拔高度。策略#2:隨機(jī)本地搜索第一個(gè)策略可以看做是每走一步都嘗試幾個(gè)隨機(jī)方向,如果某個(gè)方向是向山下的,就向該方向走一步。這次從一個(gè)隨機(jī) 開始,然后生成一個(gè)隨機(jī)的擾動(dòng),只有當(dāng)?shù)膿p失值變低,才會(huì)更新。這個(gè)過(guò)程的具體代碼如下:# 假設(shè) X_test 尺寸是3073 x 10000, Y_test 尺寸是10000 x 1scores = Wbest.
12、dot(Xte_cols) # 10 x 10000, the class scores for all test examples# 找到在每列中評(píng)分值最大的索引(即的分類)Yte_predict = np.argmax(scores, axis = 0)# 以及計(jì)算準(zhǔn)確率np.mean(Yte_predict = Yte)# 返回 0.1555# in attempt 1 the loss was 8.959668, best 8.959668 # in attempt 2 the loss was 9.044034, best 8.959668 # in attempt 3 the lo
13、ss was 9.278948, best 8.959668 # in attempt 4 the loss was 8.857370, best 8.857370 # in attempt 5 the loss was 8.943151, best 8.857370 # in attempt 6 the loss was 8.605604, best 8.605604 # . (trunc ed: continues for 1000 lines)使用同樣的數(shù)據(jù)(1000),這個(gè)方法可以得到 21.4%的分類準(zhǔn)確率。這個(gè)比策略一好,但是依然過(guò)于浪費(fèi)計(jì)算資源。策略#3:跟隨梯度前兩個(gè)策略中,是
14、嘗試在權(quán)重空間中找到一個(gè)方向,沿著該方向能降低損失函數(shù)的損失值。其實(shí)不需要隨機(jī)尋找方向,因?yàn)榭梢灾苯佑?jì)算出最好的方向,這就是從數(shù)學(xué)上計(jì)算出最陡峭的方向。這個(gè)方向就是損失函數(shù)的梯度(gradient)。在蒙眼徒步者的比喻中,這個(gè)方法就好比是感受的傾斜程度,然后向著最陡峭的下降方向下山。腳下山體在一維函數(shù)中,斜率是函數(shù)在某一點(diǎn)的瞬時(shí)變化率。梯度是函數(shù)的斜率的一般化表達(dá),它不是一個(gè)值,而是一個(gè)向量。在輸入空間中,梯度是各個(gè)維度的斜率組成的向量(或者稱為導(dǎo)數(shù) derivatives)。對(duì)一維函數(shù)的求導(dǎo)公式如下:當(dāng)函數(shù)有多個(gè)參數(shù)的時(shí)候,導(dǎo)數(shù)所形成的向量。稱導(dǎo)數(shù)為偏導(dǎo)數(shù)。而梯度就是在每個(gè)維度上偏最優(yōu)化筆記(上)完。W = np.random.randn(10, 3073) * 0.001 # 生
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 裝修施工合同協(xié)議
- 合同免責(zé)協(xié)議范本
- 保安勞動(dòng)合同協(xié)議書首頁(yè)
- 退房合同解除協(xié)議
- 私企轉(zhuǎn)讓協(xié)議合同
- 地板合同協(xié)議
- 墮胎協(xié)議合同照片
- 農(nóng)家飯店合伙合同協(xié)議
- 商鋪地下室建房合同協(xié)議
- 租賃合同解除協(xié)議百度
- 華為C語(yǔ)言通用編程規(guī)范
- GB/T 915-2010鉍
- GB/T 20399-2006自然保護(hù)區(qū)總體規(guī)劃技術(shù)規(guī)程
- 初中數(shù)學(xué)人教九年級(jí)上冊(cè)第二十一章 一元二次方程 解一元二次方程之配方法PPT
- XX醫(yī)院醫(yī)療信息系統(tǒng)安全三級(jí)等保建設(shè)可行性方案
- 蘇教版數(shù)學(xué)二年級(jí)下冊(cè)《數(shù)學(xué)繪本:公主殿下來(lái)的那一天》區(qū)級(jí)展示課(定稿)
- 執(zhí)行力、心態(tài)管理培訓(xùn)課件
- (最新)信貸資產(chǎn)風(fēng)險(xiǎn)分類管理辦法
- 五年級(jí)下冊(cè)書法教學(xué)課件第9課-上下結(jié)構(gòu)(二)-西泠印社版(共18張)課件
- 英雄無(wú)敵5使用秘籍與英雄代碼
- 少兒繪畫之《掛在樹上的樹懶》
評(píng)論
0/150
提交評(píng)論