手刻Deep Learning — 第零章— 微分觀念入門 ... - tree.rocks
文章推薦指數: 80 %
手刻Deep Learning — 第零章— 微分觀念入門. 如果你不懂微分沒關係,我們利用國中數學知識來說明微分如何在Machine Learning 中運作.
tree.rocksSignintree.rocks這不是bug,是feature(誤)手刻DeepLearning—第零章—微分觀念入門如果你不懂微分沒關係,我們利用國中數學知識來說明微分如何在MachineLearning中運作SeachaosFollowApr24·8minread前言本文接續上篇線性回歸概念,我們現在要來看看誤差的修正怎麼運作的,這邊就需要微分的觀念讓數學的高牆倒下微積分這個概念在MachineLearning/DeepLearning非常重要微分猶如指南針,幫助我們在數學中找到方向,有了方向我們就可以修正答案。
(例如下圖)用微分概念尋找高低點想要知道DeepLearning如何運作,就要瞭解微分觀念,不需要什麼艱澀難懂的數學,不會算沒關係,電腦會幫我們算;但是觀念與概念我們要有,我們不用奇怪的數學符號或是公式,我們的目標就是要讓數學的高牆倒下,用加減乘除來說明他。
人一定要有知識,知識就是力量知道概念很重要,例如微波爐,我們可能不會去動手製作2.4G微波的設備,但是你知道微波爐的原理後就不會把純水/金屬製品放入微波爐;又或說你了解某些商品原理,在購買商品時也比較不會吃虧。
大多數的數學公式實在令人費解,什麼無窮接近、斜率、區間變數、dX、變量、集合這些名詞實在距離一般人太遙遠了。
(也可能是本人胸無點墨,無法悟透,大家都是強者所以覺得這些名詞與符號淺顯易懂?)例如下圖也是本人亂打的公式範例,本人覺得這種東西是拒初學者於千里之外,我們不講這些怪符號,看看笑笑就好MachineLearning的公式之本人隨便亂打什麼是微分我們用哲學一點的方式來說如果你微分你現在的人生,就可以預知你的未來白話文這樣說:你觀察你自己的生活,就可以預測你未來的生活就是今天的你,相比昨天的你,進步了多少?保持進步:你未來正在往好方向移動沒有長進:大概也就這樣持續退步:呃…現在我們回到數學的觀點微分的意義我們前面說過,微分就是指南針的概念,它可以幫助我們找出任意數學公式的變化量,我們先用記者最愛的「重力加速度」來舉例…假設一顆球落下的距離公式是h=1/2(gt²),公式複雜,看下圖翻譯一下所以我們寫個python程式來看defheight(x):return(1/2)*(9.8*(x**2))x=np.arange(0,10,0.01)plt.plot(x,height(x))現在我們可以知道第幾秒球在哪個高度,例如:print('第',6,'秒球位置',height(6))#第6秒球位置176.4那我們怎麼知道速度多少?這個速度就是變化量,就是微分可以幫忙找出來的我們回想一下怎麼計算速度?就是「移動的距離」除以「移動的時間」要如何剛好知道第6秒「目前」的速度?(我們只知道位置)「目前」,其實我們可以看作是一瞬間,我們先假設0.001秒所以我們是不是只要知道0.001秒的差距就好?(實際上是非常小值,這就是為什麼微積分會有極限的概念)整理一下來寫python程式碼驗證一下:pos=height(6.001)-height(6)t=6.001-6print('速度:',pos/t)#速度:58.80490000002138看來可以得出「速度」沒錯,然後我們看一下圖,概念比較清楚可以看到我們測量在(X1~X2)之間的時間越小,速度就越精準接下來我們寫個微分函數然後我們現在把0.001改成更小的數值(這樣更精準),如此我們就可以找出任意時間的距離變化量(就是速度)defdf(x):#微分函數#因為[任何數.001-任何數=001]d=0.000001pos=(height(x+d)-height(x))returnpos/dprint('第一秒速度:',df(1))print('第二秒速度:',df(2))print('第六秒速度:',df(6))#第一秒速度:9.80000490002908#第二秒速度:19.60000490441871#第六秒速度:58.800004893555524有沒有發現?第T秒的速度竟然就是9.8xT?(可能有誤差)假設大家沒看過這公式,就可以由此得到證明,傳說中的重力加速度9.8(第一秒9.8,第二秒9.8x2=19.6,第6秒9.8x6=58.8)找出變化量可以幹嘛?如同我們前面所說,微分可以找到變化量,而這個變化量就是指南針的用途,有了這個值我們就可以知道目前的「速度」,然後我們還可以知道什麼時候是停止點,可以用來尋找數學公式(MachineLearning/DeepLearning)的答案。
類似MachineLearning的使用範例我們假設今天有顆神秘的飛行器靠近地球,他的距離地球的公式由神秘外星人給我們了(假設是一個MachineLearning神秘機器),但是我們解不出來,只知道把時間丟入那個公式就可以得到距離,假設神秘公式的Python程式碼:deffunc(x):return(18-x)**2那我們怎麼知道,他在那個時間點最靠近地球,然後開始遠離(即速度等於0)?我們只要透過微分就可以找到線索,寫一個微分函數:defdf(x):d=0.000001#觀察極小變化return(func(x+d)-func(x))/d然後不停的修正我們的測量點,找到速度等於0的時間點t=32#隨便挑一個測量時間learning_rate=0.01for_inrange(1000):#"訓練"跑1000次v=df(t)#變化量(速度)t=t-v*learning_rate#修正我們測量時間print('測得時間:{:.2f}'.format(t),'飛行器的速度:{:.2f}'.format(v))print('距離地球:{:.2f}')Learningrate我們一般會設定一個小值,因為這是修正的速度(中文應該叫做學習速率),後面會有示意圖,如果太大我們會距離答案太遙遠,太小會太慢,大家可以玩看看這個數值我們整理一下程式碼如下圖,我們從任意時間點(32秒)開始測量或是從5秒處開始測量我們只要把速度用來修正我們的測量時間(速度xlearningrate),不管我們從哪個時間點開始預測,找到速度=0的時間,就是靠近最低點(應該是18左右)就是因為微分還有可以找出靜止這個點的特殊能力所以我們在DeepLearning/MachineLearning/線性回歸之類方法中找到適合的參數有非常大的幫助同場加映一下不同Learningrate的差別,讓大家知道這個數值的用途:這是0.03的:這是0.8這是0.9可以看到LearningRate(學習速率),大雖然快,但是答案會震盪所以選擇適合的方式很重要結語今天我們講了微分的概念這也是為什麼線性回歸可以找到答案的原因而上一章講到的a-=optimizer(-2*X,loss)這是微積分數學公式推導回來的結果有興趣的朋友可以去翻微積分的書籍,有更詳細的計算方式,可以透過數學公式簡化得到答案,不用像本文範例使用極小數值去計算(真的不會算也沒關係,我們日後會再介紹PyTorch,他可以幫我們自動追蹤與計算)下一篇文章是矩陣的簡單概念說明tree.rocks巨樹磐石/SeachaosFollow2手刻DeepLearningDifferentiationMachineLearningDeepLearningNumpy2 claps2WrittenbySeachaosFollowFollowtree.rocksFollowJustblogsometimeswithEnglishor中文topics.bySeachaosFollowWrittenbySeachaosFollowtree.rocksFollowJustblogsometimeswithEnglishor中文topics.bySeachaos
延伸文章資訊
- 1微分
微分. 3. 3. 試求絕對值函數f ( x )=│x│的定義域,並作此函數之圖形。 ... 在國中數學中,我們利用配方法來討論二次函數的極值,現舉例說明之。
- 2信望愛文教基金會‧數學種子教師團隊 - 基礎講義
微分. 1. 導數. 在國中物理的範圍中,當我們想求時間點 的順時速度 ,就會先求他的平均速度:. = ̅ = = −. −. 在求平均數度的過程中,經觀察x-t 圖的關係後發現, ...
- 3多項式函數的微積分
2017-12-02 初探微分, 臺南市永仁高中 ; 2016-02-03 微積分, 花蓮縣玉里高中 ; 2015-06-26 微積分, 臺中市黎明國中 ; 2015-06-25 國際班微積分基...
- 4| 反相微分電路 - 高苑工商
反相微分電路| ... 國中技藝班教案. 106學年度第一學期 · 106學年度第2學期. 自編教材PPT. 電子概論 · 機車丙級術科 ... 互動式教學動畫 / 運算放大器 / 反相微分電路...
- 5手刻Deep Learning — 第零章— 微分觀念入門 ... - tree.rocks
手刻Deep Learning — 第零章— 微分觀念入門. 如果你不懂微分沒關係,我們利用國中數學知識來說明微分如何在Machine Learning 中運作.