# Calculus for Machine Learning and Data Science(Week1 - Derivatives and Optimization) ###### tags: `coursera` `Linear Algebra` `math` [week1 - Lesson 1 - Derivatives](https://www.coursera.org/learn/machine-learning-calculus/home/week/1) ## Machine Learning Motivation [課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/q8jhV/machine-learning-motivation) ### Machine Learning Motivation ![](https://hackmd.io/_uploads/HyUgYTut3.png) 這邊給出一個表格範例,範例中希望利用房間數來推論其售價。其中房間數9的售價是空的,我們希望利用機器學習的模型來預測售價為何。 ### Machine Learning Motivation ![](https://hackmd.io/_uploads/BkPv5adY2.png) 把資料點繪製出來較為直觀,我們要利用這些房價資料來做一個稱為模型訓練的過程。在這邊,模型指的就是一條盡可能接近所有資料點的線。這條線代表的就是模型對房價所做的預測價格。模型會隨著訓練不斷的變化,以擬合對現有資料的最佳預測。 這類的問題被稱為線性回歸問題。很快的我們就會知道背後的計算原因。 ### Machine Learning Motivation ![](https://hackmd.io/_uploads/BJljspdtn.png) 再給一個範例,假設你去太空旅行,然後很幸運的遇見太空人。當太空人說aack的時候,你知道他們是開心的,而當太空人說beep的時候,你知道他們是傷心的。也有可能是aack與beep混著一起用,這太難學習對吧?但是我們還是要想辦法瞭解太空人。 我們把外星人說的話的單字出現頻率做為特徵,將之表格化呈現,我們希望知道的是外星人到底是快樂還是難過。像這類的問題就是分類問題。而且因為我們想知道的是外星人是快樂還是難過,這又可以稱為情緒分析模型, ### Machine Learning Motivation ![](https://hackmd.io/_uploads/SJTMyCuFn.png) 一樣的,把詞彙出現頻率做為圖表的兩軸繪製出來。模型的輸出仍然是一條線,這條線的功能不再是去擬合所有資料點,而是能夠很好的分開兩種情緒。當有一個新的句子出現的時候,就可以根據其落點來決定外星人目前的情緒為何。 ### Machine Learning Motivation ![](https://hackmd.io/_uploads/Hyu_yCdK3.png) 這整個計算的背後有梯度、導數、最佳化、損失與成本函數、梯度下降…等,這會在後續的課程中說明。 ## Motivation to Derivatives - Part I [課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/DSCzk/motivation-to-derivatives-part-i) 課程主要用速度來說明導數 ### Introduction to Derivatives ![](https://hackmd.io/_uploads/rJZ2eAdFh.png) 想像你開著一台車然後在一條直到不行的路線行駛,這邊記一下,速度就等於行駛的距離除經過的時間。 ### Introduction to Derivatives ![](https://hackmd.io/_uploads/BJPxldst3.png) 現在好了,你的車速錶壞了,不過還好的是你有一個APP它會記錄你的旅行距離,它記錄你一分鐘內每五秒的距離記錄。 值得注意的是,車速並不平均。如果說車速並不平均的話,那是不是有辦法計算在12.5秒的時候的速度?當然不行,因為從表來看並沒有當下的資訊,你有的就只是10~15秒的距離變化。不過我們倒是可以找到均速。 ### Calcuating the Slope ![](https://hackmd.io/_uploads/BJRfWdjtn.png) 把圖畫出來,我們要計算的是在10~15秒這區間的斜率。從10~15秒,前進5秒,距離也從122變化為202,所以就是$\dfrac{202-122}{15-10}=16$,也就是每秒16公尺,也意謂著經過這兩個點的斜率為16。 ### Introduction to Derivatives ![](https://hackmd.io/_uploads/HJcRMOiK3.png) 回到剛剛所提的12.5秒的速度,很明顯的,就算我們調整成每秒記錄一次,仍然還是無法知道,不過我們至少還是可以知道從12->13秒的變化。 一樣的,計算斜率,也就是$slope=\dfrac{\Delta x }{\Delta t}=\dfrac{170-155}{13-12}$,得到斜率為15,也就是每秒15公尺。這樣就多少可以知道在12.5秒的時候,大概就是以每秒15公尺的速度在跑。 但是如果你想要確切的知道究竟12.5秒的速度的話,那你的記錄區間就要愈來愈細,愈細,估出來的結果就愈好。 ## Derivatives and Tangents [課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/vwGL7/derivatives-and-tangents) ### The derivative ![](https://hackmd.io/_uploads/ByDFa22K3.png) 上一堂課我們已經知道怎麼計算平均速度,這裡就要來說明對於想要知道的瞬間速度,也就是在12.5秒處的速度是多少的計算。或許無法確切的計算,但推估是有機會的。 上圖右看的到,我們拉一條線經過12.5秒處的地方,這樣我們就可以計算它的斜率,也就是經過$t$秒之後其距離的變化($\Delta x$),也就是$\dfrac{\Delta x}{\Delta t}$,不過這並不是確切的在12.5秒處的變化 ### The derivative ![](https://hackmd.io/_uploads/B1NGGa3th.png) 當然,一樣的作法我們可以試著讓計算斜率的區間拉小一點,再小一點,一直小小小小小小到你幾乎無法說出兩者之的距,因此我們得到一個限制,也就是$\dfrac{dx}{dt}$,這也就是在$t=12.5$秒處的切線。 這種距離相對於時間速度變化的量測就稱為瞬間變化率(instantaneous rate),它正是這條切線的斜率。白話一點就是說,瞬間變化率的改變所量測的是在任意點上兩個變數之間變化的關聯。 想像一下,我們在一個非常非常非常小的時間間隔$dt$中移動了非常非常非常小的距離$dx$,這就是瞬間變化率,也稱為導數(derivative)。函數在一個點上的導數正好就是在該點上切線的斜率。 ## Slopes, maxima and minima [課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/fZPUo/slopes-maxima-and-minima) ### Zero Slope https://www.coursera.org/learn/machine-learning-calculus/lecture/fZPUo/slopes-maxima-and-minima 現在我們已經知道什麼是導數了,也就是在一個點上的切線的斜率。這斜率也有可能是0。 上面給出一個範例,時間經過1秒距離仍然沒有變化。將之繪製於圖表很明顯就是一條水平線,計算之後可得其斜率確實為0。 ### Minima and Maxima ![](https://hackmd.io/_uploads/Sy9k4T2Kn.png) 上圖是車子的行走軌跡,往前走的時候就會往上,倒退走的時候就會往下。 其中在幾個時間點的時候,它是水平的,這意謂著在當下它的速度是0。 ### Minima and Maxima ![](https://hackmd.io/_uploads/HJqFN6nFn.png) 那在什麼時間點車子離出發地最遠呢?很明顯的就是高峰處,也就是$t=10$的地方。這並不是偶然發生的,如果車子繼續往前,那在$t=10$的時候根本不會是離出發地最遠的時間點,這意謂著如果我們想要找出某個最大值,就要從其導數為0的地方去找,或者可以說是往其切線為水平線的地方去找。 ## Derivatives and their notation [課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/ul9ac/derivatives-and-their-notation) ### Derivatives ![](https://hackmd.io/_uploads/B1LWS-z93.png) 先前提過,斜率計算的是距離隨著時間變化的變化,也就是$\dfrac{\Delta x}{\Delta t}$。如果是在某一個時間點的切線斜率的話,那就稱為$dx \text{ over } dt$(除,或是導數的意思?),也就是$\dfrac{dx}{dt}$,那這之間有什麼不一樣呢? 為了計算斜率,一開始我們也許會取比較大的區間,就像上圖所呈現的那樣。 ![](https://hackmd.io/_uploads/BkPNIZfc3.png) 然後我們就開始把區間縮小,愈來愈小、愈來愈小,小到最後我們會得到一個切線,這個斜率也就是$dx \text{ over } dt$。現在$dx \text{ over } dt$就表示在$x$、$t$兩個方向上極小的變化。 ![](https://hackmd.io/_uploads/SJEa8WG92.png) 不過一般來說我們圖表上就是$x$軸與$y$軸,所以表示上就會是$dy \text{ over } dx$,也就是$\dfrac{dy}{dx}$ ### Derivatives: Lagrange's and Leibniz's Notation ![](https://hackmd.io/_uploads/SkyWuWfqn.png) 這邊說明一些符號表示,如果你有一個函數,$y=f(x)$,它會有兩種導數的表示方式: 1. $f'(x)$ 2. $\dfrac{dy}{dx}$,也可以寫為$\dfrac{d}{dx}f(x)$,這種情況下$\dfrac{d}{dx}$($d \text{ over } dx$)可以被視為是一個operator ## Some common derivatives - Lines [課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/igaQa/some-common-derivatives-lines) 課程說明各種函數的導數 ### Derivative of a Constant ![](https://hackmd.io/_uploads/S1u-FZz53.png) 先來說說水平線,水平線的特性就是不管你的輸入$x$是什麼,它永遠輸出一樣的數值,可以寫為$y=f(x)=c$。 因為它的輸出永遠是一樣的,所以它的$y$的變化,也就是$\Delta y$就會是0,分子為0,分母不為0,因此其斜率$f'(x)=0$。 ### Derivative of a Line ![](https://hackmd.io/_uploads/SkPP9bMq3.png) 鏡頭轉來一條線的方程式,如上圖所示,有一個線性方程式為$f(x)=ax+b$,其中$a$為斜率,$b$為截距項。 只要是線,那整條線的斜率就都會是一樣,它的變化就會是$a$,因此其導數$f'(x)=a$(上面有給出證明過程)。 ## Some common Derivatives - Quadratics [課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/jN2Ox/some-common-derivatives-quadratics) ### Derivatives of Quadratic Functions ![](https://hackmd.io/_uploads/SJZpO875n.png) 這是在二次方程式$y=f(x)=x^2$上求導的範例,我們可以注意一下左右兩邊,基本上左邊的部份的導數是負數,右邊是正數。 :::success 比較直觀的理解就是$x$變大並且$y$也變大的話,它的導數就是正的 ::: 首先來看在$(1, 1)$的部份,先抓一個比較大的點$(2, 4)$,從公式來看可以得斜率為3。 ![](https://hackmd.io/_uploads/Hyu7t8mq2.png) 現在縮小範圍,變成是計算到$(1.5, 2.25)$的斜率, ![](https://hackmd.io/_uploads/HkKTKUX9h.png) 最終我們不斷的縮小,得到一個切線計算得到的斜率就會是2。 ### Derivatives of Quadratic Functions ![](https://hackmd.io/_uploads/rJfrs8X53.png) 這邊給出一個推導過程,斜率就是$y$的變化除$x$的變化,也就是$\dfrac{\Delta f}{\Delta x}$,那$x$變化所造成的$y$的變化,根據其函數就是$f(x + \Delta x) - f(x)$,展開,然後消一消最終會得到$2x-\Delta x$,因此在那個點上代表$\Delta x=0$,所以就會得到$2x$,所以$x=1$,其導數就會是$2$,也就是$\dfrac{df}{dx}=f'(x)=2x$。 ## Some common derivatives - Higher degree polynomials [課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/FGWM2/some-common-derivatives-higher-degree-polynomials) ### Derivative of Cubic Functions ![](https://hackmd.io/_uploads/Bkv42I752.png) 這是一個更高維度的導數計算,這邊給出的是三次方的方程式,$y=f(x)=x^3$。斜率公式跟之前是差不多的,當$\Delta x=0$的時候我們就得到其切線,也就是導數。 以一樣的方式來計算斜率,從$\Delta x=1$開始慢慢縮小,最終可以得到斜率就是$3\times 0.5^2=7.5$ ### Derivative of Cubic Functions ![](https://hackmd.io/_uploads/H1N3TIQqn.png) 一樣的來推導公式,$\Delta f = (x + \Delta x)^3 - x^3$,利用國高中的學過的公式把它展開,然後能消的消一消,最終得到的就是$3x\Delta x + 3x^2 + \Delta x^2$,那隨著$\Delta x = 0$,最終得到的就是$3x^2$ ## Some common derivatives - Other power functions [課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/GT01B/some-common-derivatives-other-power-functions) 課程繼續說明其它的方程式求導 ### Derivative of $\dfrac{1}{x}$ ![](https://hackmd.io/_uploads/H1e4ojVq3.png) 這個函數是一個如上圖一般的雙曲線,雖然看起來好像很複雜,但計算上的思維還是離不開前面的範例。 首先寫下它的斜率計算,$\dfrac{\Delta f}{\Delta x}=\dfrac{(x + \Delta x)^{-1} - (x)^{-1}}{\Delta x}$,然後一樣從$(1, 1)$取距離$1$開始計算。 當$\Delta x=1$的時候,其$\Delta f=-0.5$,因此其斜率為$-0.5$,然後一直縮小縮小縮小一直到接近切線,我們會得到其斜率為$-0.999$,其實也就是$-1$ ### Derivative of $\dfrac{1}{x}$ ![](https://hackmd.io/_uploads/Syeqio45h.png) 這邊一樣給出推導過程,把式子展開,然後可以消的消一消,最後得到的就是$-\dfrac{1}{x^2+x\Delta x}$,當$\Delta x =0$的時候就可以得到其導數$f'(x)=-x^{-2}$ ### Derivative of Power function ![](https://hackmd.io/_uploads/B1izhjN92.png) 這邊說明的就是國高中數學教的,把指數拿下來然後把指數$-1$就是微分後的結果。 ## The inverse function and its derivative [課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/6npLa/the-inverse-function-and-its-derivative) 課程說明反函數,以及如果在知道函數導數的情況下求得反函數的導數 ### Inverse Function ![](https://hackmd.io/_uploads/H1PHAi4c3.png) 什麼是反函數?總之就是把反函做的事情取消掉就是反函數。 課程舉例有個函數$f$是幫人戴帽子,那它的反函數$g$就是把人的帽子拿掉。以數學來看,那就是如果函數$f$是把輸入平方,那反函數$g$就是把輸入還原。 如果寫出來看的話,那反函數$g(x)=f^{-1}(x)$,因為反函數$g$就是撤銷掉函數$f$做的好事,所以$g(f(x))=x$ ### Derivative of Inverse ![](https://hackmd.io/_uploads/SyawjrPqn.png) 這邊給出兩個函數的趨勢,分別為$f(x)=x^2, g(y)=\sqrt{y}$,兩個圖表的x軸也有些許的差異,左圖的x軸為$x$,右圖的x軸則為$y$。簡單說這個圖表就是相反的,舉例來說,有個點$a,b$出現在左圖的話,那就會有個點$b,a$出現在右圖。 假設有個點為$\dfrac{1}{2}, \dfrac{1}{4}$在左邊,那右邊就會出現一個$\dfrac{1}{4}, \dfrac{1}{2}$,也就是$f(1/2)=1/4$,$g(f(1/2))=g(1/4)=1/2$ ### Derivative of Inverse ![](https://hackmd.io/_uploads/SJLraHP92.png) 我們現在找其中一點來計算斜率,觀察兩者之間的關係。根據斜率的公式,左圖的變化就是$\dfrac{\Delta f}{\Delta x}$,右圖則是$\dfrac{\Delta g}{\Delta y}$。 不難發現,事實上$\Delta x=\Delta g$,而$\Delta f = \Delta y$,因此可推論$\dfrac{\Delta g}{\Delta y}=\dfrac{\Delta x}{\Delta f}$。 總的來說,$f'(x)=\dfrac{\Delta f}{\Delta x}$,而$g'(y)=\dfrac{\Delta g}{\Delta y}$,根據剛剛的推論可以知道,$g'(y)=\dfrac{1}{f'(x)}$。 雖然看起來很複雜,但說的就是,如果我是你的逆,那你的導數就是我的導數的倒數。 ### Derivative of Inverse ![](https://hackmd.io/_uploads/HyFyASwq3.png) 這邊給出一個直觀的範例,左圖根據之前教的方式,它的導數是$2x$,因此在點$1, 1$的地方其斜率為2,那其逆的導數就是2的倒數,也就是1/2。 ### Derivative of Inverse ![](https://hackmd.io/_uploads/SkSLCHP9n.png) 這是給出的第二個範例,就直接看一下吧。 ## Derivative of trigonometric functions [課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/CcD2l/derivative-of-trigonometric-functions) 課程說明的是三角函數的導數 ### Derivative of Trigonometric Functions ![](https://hackmd.io/_uploads/SJKUeLw52.png) 首先看的是$\sin$,並且拿出其中幾個點($\pi/2, -\pi/2, 0, -\pi$)來做為觀察: | x | $\pi/2$ | $-\pi/2$ | 0 | $-\pi$ | | -------- | -------- | -------- | -------- | -------- | | Slope | 0 | 0 | 1 | -1 | | $\cos(x)$ | 0 | 0 | 1 | -1 | 這並不是巧合,而是一個很有趣的特性,也就是對於$\sin(x)$來看,它的導數就是$\cos(x)$ ### Derivative of Trigonometric Functions ![](https://hackmd.io/_uploads/Sk54ZIDq2.png) 現在換看$\cos$,拿跟剛剛一樣的點來做為觀察: | x| 0 | $-\pi$ | $\pi/2$ | $-\pi/2$| | -------- | -------- | -------- | -------- | -------- | | Slope | 0 | 0 | -1 | 1 | | $\sin(x)$ | 0 | 0 | 1 | -1 | 很明顯的,$\cos(x)$的導數就是$-\sin(x)$ ### Derivative of Trigonometric Functions ![](https://hackmd.io/_uploads/rJ8qfBich.png) 這邊用幾何來說明剛剛兩個三角函數的關係。首先我們畫出一個半徑為1的圓,然後畫出一條與x軸夾角為$x$的線,這條線投影到x軸的夾角為$\cos(x)$,投影到y軸的夾角為$\sin(x)$。 現在我們把夾角移一些量,也就是$\Delta x$,現在投影到x軸的夾角變成是$\cos(x + \Delta x)$,而投影到y軸的部份則變成是$\sin(x + \Delta x)$。 現在我們把焦點放到這次變化在圓上所形成的三角形上。這個三角型的兩個邊分別為$-\Delta \cos(x), \Delta \sin(x)$,假設這個直接三角型的上面的夾角為$\psi$,根據我們以前國高中學過的三角函數: * $\cos(\psi)=\dfrac{adj}{hyp}=\dfrac{\Delta(\sin x)}{h}$ * $\sin(\psi)=\dfrac{opp}{hyp}=\dfrac{-\Delta(\cos x)}{h}$ 我們可以推論得知: * $\Delta(\sin x)=h \cos(\psi)$ * $-\Delta(\cos x)=h \sin(\psi)$ :::info 備註: * opp -> Opposite,對邊,也就是直接那個邊 * adj -> Adjacent,鄰邊,也就是底邊 * hyp -> Hypotenuse ,斜邊,就是斜邊 ::: ### Derivative of Trigonometric Functions ![](https://hackmd.io/_uploads/HklLHSi93.png) 當變化變小的時候會發生什麼事?三角型的斜邊,也就是$h$會愈來愈接近圓弧,然後會很接近$\Delta x$,那夾角$\psi$也會接近$x$,這樣的話我們就可以根據剛剛的公式說: * $\Delta(\sin x)=h \cos(x)$ * $-\Delta(\cos x)=h \sin(x)$ 那$\sin (x)$的導數就會是$\cos (x)$,而$\cos (x)$的導數則為$-\sin (x)$。 :::success 不是很明白,可能要另外找證明推論搭配一起看比較有感覺 ::: ## Meaning of the Exponential (e) [課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/ytl3Y/meaning-of-the-exponential-e) 課程說明exponential function ### Euler's number ![](https://hackmd.io/_uploads/SkSrbch5h.png) 說明指數函數之前要先來聊聊Euler's number,這是一個非常特殊的數,即$e=2.71828182...$,小數點不會結束。 如上圖所示,該數有著另一種表示,也就是以$\left(1+\dfrac{1}{n} \right)^n$,當$n$愈來愈大,一直到趨近無限的時候我們可以發現到,這個值就接近$2.718...$。 $e$有一個很特殊的特性,也就是它的導數就是它自己,即,當$f(x)=e^x$,那$f'(x)=e^x$ ### Choosing a Bank ![](https://hackmd.io/_uploads/BJe9fcn93.png) 課程中用利率來說明$e$,假設有三家銀行: * bank1:每一年都會你100%的利息 * bank2:每半年給你50%的利息 * bank3:每四個月給你33.3%的利息 很明顯的,如果以複利的角度來看,bank3所提出的條件是最好的。 ### Compound interest ![](https://hackmd.io/_uploads/HkXrmcn9n.png) 來算算看,假設你存1美元,那1年後你會有多少錢? * bank1:每一年都給你100%利息,因此存1元得1元利息 * bank2:每半年給你50%的利息,因此半年的時候你得到的是$1 + \dfrac{1}{2}$,一年的時候你得到$(1 + \dfrac{1}{2})^2$,也就是$2.25$ ### Compound interest ![](https://hackmd.io/_uploads/BkIsX53q2.png) * bank3:每四個月給一次$33.3%$的利息,因此複利計算的最終得到的是$2.37$ ### Which Bank Is Beeter? ![](https://hackmd.io/_uploads/S1wxEcn53.png) ![](https://hackmd.io/_uploads/rkyMN935h.png) 如果把時間拉長到四年的話,經複利可以發現各銀行最終能得的金額的差異。 ### How Much Do I Have After 1 Year? ![](https://hackmd.io/_uploads/S1FYN93q3.png) 很明顯的,如果可以切的愈細,經過複利我們所能得到的利息就愈多。上面給出每個月都給利息的結果(bank12)。 ### In General ![](https://hackmd.io/_uploads/SkECBqhch.png) 現在我們知道,bank-n就是一個會在一年內給你n次利息的銀行,你的資產就會有如上的公式的複利累積。 ![](https://hackmd.io/_uploads/B1_XU529n.png) 這個公式大致的關係如上粉底字所示。 ### Bank at the End of the Universe ![](https://hackmd.io/_uploads/Bkwfvc393.png) 所以我們就把所有的銀行排出來,一直排到宇宙的盡頭,也就是bank inifity,它所給的就是$(1+\dfrac{1}{\infty})^\infty$。把每個值算一算,雖然有點難算,不過它確實就是會是2.71828182...,也就是$e$。 ## The derivative of $e^x$ [課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/jnwgf/the-derivative-of-e-x) ### The Derivative of $e^x$ Is Also $e^x$ ![](https://hackmd.io/_uploads/HJF-7k0cn.png) 我們已經知道$e$,它的一個有趣的特性就是它的導數就是它自己,也就是如果有個指數函數$y=e^x$,那它的導數也會是$e^x$。 ### Derivative of $e^x$ ![](https://hackmd.io/_uploads/HkZVEJC92.png) 現在我們來驗證一下,作法都跟前幾堂課程一樣。假設你有一個指數函數$y=f(x)=e^x$,那它的斜率就會是$\dfrac{\Delta f}{\Delta x}=\dfrac{e^{x+\Delta x} - e^x}{\Delta x}$。 一樣的,我們從$(2, 7.39)$這個點開始,然後從間隔$1.0$開始計算,一路放小,可以發現到這個數值會不斷的收斂到本身,也就是$e^2=7.39$。 ## The derivative of log(x) [課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/9gmWz/the-derivative-of-log-x) ### Logarithm ![](https://hackmd.io/_uploads/Sy-uSkR93.png) 在說明$\log$的導數之前先來認識一下什麼是log。 假設有個數學題目要你求$e^?=3$,那這個解的答案就是$log(3)$,也就是說,$e^?=x$的解就會是$\log(x)$,這也稱為natural logarithm,也就是自然對數。值得注意的是,雖然它可以以2、10之類的數值來做為底數,但在這門課程中所用的底數都會是$e$。 剛剛的描述說明一件事,那就按口果有個函數$f(x)=e^x$,那它的反函數$f^{-1}(y)$就會是$\log(y)$,因為$e^{\log(x)}=x$,而$\log(e^y)=y$ ### Logarithm ![](https://hackmd.io/_uploads/BkSaHkR52.png) 以圖表來看的話,就是左邊的$(x, y)$就會是右邊的$(y, x)$ ### Logarithm ![](https://hackmd.io/_uploads/SkL-51Cq3.png) 現在來試著計算log的導數,我們知道$e^2=7.89$(上一堂課明明寫7.39),因為log是$e^x$的反函數,所以在log的圖表上就會有一點$(7.89, 2)$。而$f'(x)=e^x=e^2$,又$\log$是其反函數,因此$g'(y)=g'(e^2)=\dfrac{1}{e^2}$。 正式的寫是這樣的: * $\dfrac{d}{d y}f^{-1}(y)=\dfrac{1}{f'(x)}=\dfrac{1}{f'(f^{-1}(y))}$ * $\dfrac{d}{d y}\log(y)=\dfrac{1}{e^{\log(y)}}=\dfrac{1}{y}$ 簡單說,$\log(y)$的導數就是$\dfrac{1}{y}$ ## Existence of the derivative [課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/88Eir/existence-of-the-derivative) 課程說明幾個不可微分的函數 ### Differentiable Functions ![](https://hackmd.io/_uploads/SJoEEEJj3.png) 目前為止課程中談過的都是可微分函數,也就是你可以在任一點上都取得切線,也就是它的導數。 ### Non Differentiable Functions ![](https://hackmd.io/_uploads/HJWkBEys2.png) 不過有些函數並不滿足這種任一點都能取得切線的屬性,這類的函數即稱為不可微分函數。 這邊給出的範例是絕對值,也就是$f(x)=\vert x \vert$,這個函數幾乎每個點都能取得切線,只有在原點的部份它無法取得確切的切線。也因此我們會說,當$x=0$的時候,其導數是不存在的。 這種不可微的情況通常是發生在函數有個邊角(corner)或是尖角(cusp),那不可微的情況也會發生在這兩個點上。 ### Non Differentiable Functions - Quiz1 ![](https://hackmd.io/_uploads/rJ9cSEki3.png) 上圖來看在$x=1$的這個點是不可微的,因為有太多切線可以畫。 ### Non Differentiable Functions - Quiz2 ![](https://hackmd.io/_uploads/ByF9LVysn.png) 這個範例是一種階梯函數(step function)或是分段函數(piecewise function)。它在$x=-1$的地方存在一個跳躍不連續性。 ### Non Differentiable Functions ![](https://hackmd.io/_uploads/r1kIP41ih.png) 函數$f(x)=x^{\dfrac{1}{3}}$也是不可微的,怎麼說,因為它在$x=0$的地方的切線是垂直於y軸,因為是垂直線,所以是不存在斜率的,這時候有人會說是無限大,也有人說是未知的。不管如何,垂直切線就是不可微分函數。 ### Recap: Non-Differentiable Functions ![](https://hackmd.io/_uploads/S1RUwE1on.png) 總結,有角的,有斷軌的,有垂直線的,都是不可微分函數。 ## Properties of the derivative: Multiplication by scalars [課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/N77tK/properties-of-the-derivative-multiplication-by-scalars) 課程說明各種複雜的求導情況 ### Multiplication by a Scalar ![](https://hackmd.io/_uploads/H1w7DFgih.png) 首先是乘上scalar的函數求導,假設有個函數$f$,它是函數$g$的$c$倍,那其實$f$的導數也就只是$g$的導數的$c$倍,也就是$f'=cg'$ ### Multiplication by a Scalar ![](https://hackmd.io/_uploads/ryxNOtls2.png) 假設有個函數$y=x^2$,另外再來一個2倍的函數$y=2x^2$,用課程中提過的計算斜率的觀念來驗證。 左邊我們取點$(1, 1)$與$(2, 4)$計算斜率為3,右邊我們取對應點,注意,這邊是2倍,所以得到的點是$(1, 2), (2, 8)$,所得的斜率為6。 由於2倍的關係,所以在垂直方向的距離都跟著加倍,也因此其斜率也跟著加倍。 ### Multiplication by a Scalar ![](https://hackmd.io/_uploads/r1rPOYlj3.png) 那如果你根據極限定義一直切,切切切切切切到切線,那得到的導數也會是2倍,根據公式,左圖的導數為2,右邊則為4,確實也是2倍。 ### Multiplication by a Scalar ![](https://hackmd.io/_uploads/Hkf3OFlsh.png) 由此可以推論,如果是$c$倍的函數,那其導數也會是$c$倍。 ## Properties of the derivative: The sum rule [課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/m7J7c/properties-of-the-derivative-the-sum-rule) ### The Sum Rule ![](https://hackmd.io/_uploads/rJjGKFeon.png) 這邊說明導數加總的性質,也就是如果你的函數$f=g+h$,那$f'=g'+h'$。 ### Sum Rule ![](https://hackmd.io/_uploads/rkejYFxs3.png) 這邊用一個直觀的範例來說明,假設有條船,船上有小孩,船移動的距離是10,而小孩移動的距離是2,總的來看,他們的移動距離就是$10+2=12$。 ### Sum Rule ![](https://hackmd.io/_uploads/H1UEcFgon.png) 距離的部份處理之後就是速度,假設船的移動速度為0.6m/s,而小孩為0.05m/s,那相對於地球來說兩個的速度為何? 答案是兩個相加,也就是0.65m/s。 距離可以相加,速度可以相加,那導數就可以相加。 ### Sum Rule ![](https://hackmd.io/_uploads/rJY_jFxi3.png) 把這個加總的範例圖示來看,小孩跟船的移動時間與距離,總的距離$x_{Total}= x_b + x_c$,也就是船的移動距離加上小孩的移動距離。 速度的部份就是距離除於時間$\Delta t$,大家分母一樣,得到的的就是$v_{Total}=v_b+v_c$。 最後我們只要讓$\Delta t$趨近於零就可以得到導數,也就是兩個相加的結果。 ### Sum Rule ![](https://hackmd.io/_uploads/SkhX3Fxsh.png) 結論,如果$f=f_1+f_2$,那$f'=f'_1+f'_2$ ## Properties of the derivative: The product rule [課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/JYNTW/properties-of-the-derivative-the-product-rule) 課程說明乘法規則 ### The Product Rule ![](https://hackmd.io/_uploads/SkT7jONih.png) 範例說明,如果有個函數$f=gh$,那$f$的導數就會是$g'h + gh'$,印象中以前在背的口訣就是左微右不微加上左不微右微。 ### Product Rule ![](https://hackmd.io/_uploads/B1TE3uNin.png) 用蓋房子來理解的話,假設有兩個工人,他們各自建造自己負責的牆面,那一個人的進度就是$g(t)$,另一個就是$h(t)$,當然,總的面積就是$f(t)=g(t)h(t)$。 現在我們想計算$f$的導數,而且我們是知道$g,h$ ### Product Rule ![](https://hackmd.io/_uploads/HkdUZtNjh.png) 我們現在以正面視角來看,隨著時間的變化,兩個工人所處理的面積都各自有$\Delta g, \Delta h$的變化。 中間的部份就是$g(t)h(t)$,兩個工人隨著時間增加的面積則各別為$g(t)\Delta g(t)$與$\Delta g h(t)$,最右上還有一個小小角落的面積則為$\Delta g(t) \Delta h(t)$。 一段時間之後,面積相對於時間的變化就會是$\dfrac{\Delta f(t)}{\Delta{t}}$,其中面積的變化就會是剛剛我們寫下的三個區域,也就是圖上的藍色區域,把數學式帶入,然後做整理。 然後求導,假設$\Delta{t}$趨近於0,那就可以得到$g'(t)h(t)+g(t)h'(t)$,最後那小小的面積因為太小了,幾乎是0就直接無視。 最終得到的就是$f'(t)=g'(t)h(t) + g(t)h'(t)$ ## Properties of the derivative: The chain rule [課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/WWxJ2/properties-of-the-derivative-the-chain-rule) ### The Chain Rule ![](https://hackmd.io/_uploads/HJO_qaSih.png) Chain Rule大概是導數觀念中最複雜的,不過直觀來看就是,如果你有個函數是$f(g(h(t)))$,當你想對它求導的時候,就是計算這三個函數的導數相乘。函數可以再加上去,並非只能三個。 ### The Chain Rule ![](https://hackmd.io/_uploads/S1m6jTBs2.png) 我們可以用Leibniz notation(萊布尼茨標記)來幫助我們說明鏈式法則。 舉例來說,$\dfrac{d}{dt}g(h(t))=\dfrac{dg}{dh}\cdot\dfrac{dh}{dt}$,這又可以寫成$g'(h(t)) \cdot h'(t)$ ### The Chain Rule ![](https://hackmd.io/_uploads/S184npSo3.png) 如果是三個函數鏈在一起呢?一樣的,差別在於最外層的$f$函數的導數為$f'(g(h(t)))$ ### Idea of Chain Rule ![](https://hackmd.io/_uploads/B1nX06Soh.png) 課程中提了一個範例。 車子要上山,山下很熱,山上很冷,所以當我們上山的時候,溫度$T$是隨著高度$h$在變化,寫為$\dfrac{dT}{dh}$。然後隨著時間我們開車上山,高度也随著時間變化,寫為$\dfrac{dh}{dt}$。 從這兩個我們可以很清楚的知道,隨著時間的變化,其實溫度也會變化,寫為$\dfrac{dT}{dt}$。 鏈式法則告訴我們的是,如果我們知道溫度隨著高度的話化與高度隨著時間的變化,那兩個做點積就能知道溫度隨著時間的變化,也就是$\dfrac{dT}{dt}=\dfrac{dT}{dh}\cdot \dfrac{dh}{dt}$ ### Chain Rule ![](https://hackmd.io/_uploads/Bk-fbCBs3.png) 我們用空間來做說明,這個三維立體空間中有三個維度,分別為時間($t$)、高度($h$)、溫度($T$)。我們知道,隨著時間的變化,會造成高度的變化,高度的變化會造成溫度的變化,因此$\Delta t \to \Delta h \to \Delta T$。 上面假設有兩個函數,$h$函數處理時間所在的高度,$f$函數處理高度所在的溫度。我們在時間$t$的時候高度為$h(t)$,對應過去的溫度為$(h, f(h))$,經過$\Delta t$的時間之後的高度為$(t + \Delta{t}, h(t + \Delta t))$,這時候的對應溫度為$(h + \Delta{h}, f(h + \Delta{h}))$。 不難理解,溫度的變化就是$\dfrac{\Delta{T}}{\Delta{t}}=\dfrac{\Delta{T}}{\Delta{h}}\dfrac{\Delta{h}}{\Delta{t}}$。一樣的,假設這個變化很小,小到幾乎是趨近於0的時候,那我們就可以得到$\dfrac{dT}{dt}=\dfrac{dT}{dh}\dfrac{dh}{dt}$。