神經網絡算法梯度下降GradientDescent_第1頁
神經網絡算法梯度下降GradientDescent_第2頁
神經網絡算法梯度下降GradientDescent_第3頁
神經網絡算法梯度下降GradientDescent_第4頁
神經網絡算法梯度下降GradientDescent_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、神經網絡算法-梯度下降GradientDescent神經網絡文章索引上一篇神經網絡結構中,我們介紹了神經元的結構,激活函數以及每個神經元激活值的算法,涉及到權重、偏置值等。神經網絡中的待定值上一篇結尾提到,對于28*28的黑白手寫圖像識別,我們需要13002個權重和偏置數值,才能讓我們的神經網絡最后輸出正確結果。曲線上任取兩個點a,b,它們對應x和x+dx。(d是指德爾塔大寫厶,小寫d)ab兩點對應的y的差是dy。現在直線ab看上去是曲線的割線(有ab兩個交點)。假設b點沿著曲線,越來越靠近a點,那么dx極限趨近于0,這時候dy也會越來越小趨近于0,但是!我們會意識到dy/dx永遠不會是0,而

2、最終它仍然是角Zcab的對邊比鄰邊,也就是正切三角函數值。實際上,這也正是曲線的切線的定義。可以想象,我們取的a點越是靠右,那么這個切線越是豎直。如果我們把這個切線看做表示某個一次方程,如y=mx+n這種形式,那么a點越靠右,直線越豎直,m值也就越大。我們把m值叫做直線的斜率。切線導數derivative,元函數y=f(x)(即因變量y只受到一個自變量x影響的函數)中任意取x,如果x增加極小趨近于0的4x(或者寫為dx),那么y相應的被增加(或者寫作dy),那么導數就是dy/dx,而又有dy=f(x+dx)-f(x),所以:導數定義從函數的曲線圖上可以看到,某點的導數就是dx趨近于0時候Zca

3、b的正切,導數反映了切線的陡峭程度,也就是y隨著x變化的快慢程度。注意,導數函數的圖形并不是一條直線,因為從圖上就可以發現這個斜率f(x)不是固定的,隨著x的增大,f(x)也會增大(曲線越來越陡峭),所以如果把f(x)畫出來,在這個示例中,它的形狀和現有的f(x)曲線差不多,但略低,至少要穿過0點,因為看上去f(x)在乂等于0的時候切線接近水平斜率也接近0。所以,圖上直線只反映了a點導數,而不是反映整個導數函數。微分differential,簡單說就是從和厶y,或者記作dx和dyx稱之為自變量,y稱之為因變量,那么x趨近于最小的時候的值,就是x的微分(趨近0又不是0的那個神秘值),同樣y的微分

4、也是這個意思,總之是想得到又摸不到的神奇值。斜率slope,元一次函數(直線方程)y=mx+n的系數m值。在這里就是a點的導數值f(x)。切線tangent,某個點a的切線,就是經過a點的,以A點斜率為系數的方程y=f(x)x+n所表示的直線。自變量dependentvariable和因變量independentvariable,x自己的變化,引發y被動變化。好了,我們來看多變量微分Multivariabledifferential。上面都是一個y收到一個x的影響y=f(x),多變量就是不止受到一個自變量的影響,我們以最簡單的z=f(x,y)為例,z=2+y2。多變量微分綠軸X的變化和紅軸y的

5、變化,都會對應藍軸z的變化。x從負無窮到正無窮無限種可能,y也是無限種可能,x和y復合到一起就在水平方向覆蓋了全部地面,z值有高有低,就像現實世界中的海拔一樣,把xy平面凸起或凹陷。(圖中粉色沒有畫出全部曲面)我們可以想象,這時候不能討論A點的切線了,而應該考慮它的切平面tangentplane(下圖綠色平面)。方向導數directionalderivative,就是曲面上過A點的任意曲線的切線(下圖紫色線)組成的平面,就是切平面。圓點A上的切平面這么多紫色的方向中,哪一個方向最陡峭?對于這個z=2+y2函數來說,明顯是最接近豎直朝上的那個箭頭和最接近豎直朝下的那個箭頭。和曲線一樣道理,越陡峭

6、意味著z對x、y的變化越敏感,或者說dx、dy的變化會引發更多的dz。梯度gradient,我們規定,能夠引發因變量最快變化的那個切線正方向,就叫做曲面方程上這個點的梯度。注意梯度是個xyz表示的三維方向,例如0,0,1表示z軸豎直向上,0.1,0.1,1就往xy的正方向偏一點點。還有一個偏導數partialderivative是指函數結果相對于其中一個變量的導數,就是多變量中鎖定其他變量,只留住一個變量,比如把x鎖定為5即x=5時候只留下y和z的變化,這時候變成了z=f(5,y),其實x這個自變量已經沒啥意思了,我們又回到了上面的一元曲線情況,其實這只是三維空間在x=5這個豎直平面上形成的一

7、條二維拋物曲線。同樣如果我們鎖定不同的z,那么就得到曲面上一圈一圈的地形等高線。把三維轉為二維,這就是科幻小說中所說的降維攻擊。用微分思考梯度下降對于只有xy兩個變量的三維曲面來說,我們還可以只是考慮x+0.1,x-0.1,y+0.1,y-0.1這樣的試探方法找到最低點,只要2*2=4次就可以了,周全一點也就8次。但是對于我們手寫數字識別中13002個自變量來說,那就要2130次2這是不可行的。借用多元微分,我們可以找到13002個自變量某一隨機點對應的切平面(實際早已不是什么平面了,我們姑且這么說),也可以計算出其中變化最快的方向,就是梯度,數學家已經證明,不管多少個維度,沿著梯度往前走一步

8、,都能獲得最快變化后新的一個點,這個點是一個n維向量,對于我們的案例來說就是13003個新數字組成的數組0.322,0.123,0.55,0.222,.0.233共13003個數字。Howtonudgeall13,002weightsandbiases;weightsandbiases2.2501S018-1.570.451980.51w=-VC(W)-lie負梯度0403.82-0.32191丄.1丄0.82L表示梯度的倒三角符號讀音n壬ble唯一要說明的一點不同就是,為了找最低點,我們不是往上走,而是往相反的負方向,朝下走。步長stepsize,就是我們每次沿著負梯度往下走多遠,在機器學習

9、算法里面它叫做學習率learningrate,同樣道理,步子邁小了走得太慢,找到最低點耗時間太久,步子太大了容易跳過最低點(注意,1萬多維的復雜情況不是我們上面三維漏斗曲面那么簡單可以描述的)。所以我們經常設置0.00001這樣小的數字,好在很多機器學習程序都會適當的自動調整它(比如Tensorflow中的梯度下降優化GradientDescentOptimizer),實際上不會讓它太慢。同時,我們從上圖中看到,計算出的負梯度是由很多數字組成的數組,每個數字代表一個維度(就像xy那樣),所以我們只要在原來的位置點坐標(比如x,y)上分別把這個梯度(比如0.1,-0.3)加上去就能得到新的點(x+0.1,y-0.3)。當然這里步長已經考慮在梯度內了,如果沒有包含在梯度內,那么應該再乘以步長,假設步長0.01,那么就是(x+0.1)0.01,(y-0.30.01。內容小結神經網絡的機器學習就是尋找數以萬億計的待定值的最佳匹配方案就是尋找多

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論