# Calculus for Machine Learning and Data Science(Week2 - Lesson 1 - Gradients)
###### tags: `coursera` `Linear Algebra` `math`
[Week2 - Gradients and Gradient Descent](https://www.coursera.org/learn/machine-learning-calculus/home/week/2)
## Introduction to Tangent Planes
[課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/uXzLP/introduction-to-tangent-planes)
課程說明Tangent Planes
### Functions of Two Variables

第一週的課程我們瞭解一個變數情況下的求導,這週開始要來說說兩個變數。
一個變數的情況就如同上圖左一樣,一個曲線,然後我們求一個Tangent Line。但兩個的話就需要以三維空間來表示,求的不再是一條切線,而是一個切平面。
以上圖左的三維空間來看,平面的x、y兩個軸為輸入的x、y,高度的部份則是輸出的z。橘色區域所呈現的即為切平面(Tangent Planes)。
### Finding the Tangent Plane

該如何找出這個切平面?理論上是一樣的作法,假設,我們固定$y=4$,那函數就會是$f(x, 4)=x^2 + 4^2$,這種情況下就好像我們把空間削去一個空間,得到一條紅色的拋物線。

我們固定$x=2$,再得到另一條紅色的拋物線。

兩條拋物線得到兩條切線($2x, 2y$),兩條相交的切線形成一個平面空間,這個平面空間就是Tangent Plane。
## Partial derivatives - Part 1
[課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/UduJH/partial-derivatives-part-1)
### Slicing the Space

先來建構一個概念,以三維空間來說,這是一個兩個變數的函數圖形,把這個平面空間切割我們會得到一條拋物線,這條拋物線上的切線就是其偏導數,也就是partial derivative。

當然你也可以換個方式切,一樣會得到一個紅色拋物線,這條紅色拋物線是一個一個變數的函數,所以你在上面找到一條切線(黑色線)。
### Partial Derivatives

這邊聽老師細細道來,當我們固定$y$是一個常數的時候,以上面例子來看就是$y=4$,這時候這條拋物線上的函數就不再是兩個變數的函數,而是一個變數的函數,也就是那條紅色的拋物線。在這拋物線上取一個點,然後畫它的切線,這條切線的斜率就是偏導數。
當我們固定$y$為一個常數然後對這個函數求導的時候,基本這個函數就只是一個變數,也就是$x$,當我們對這個$x$的函數求導的時候就稱為$\dfrac{\partial f}{\partial x}$,以這個範例函數$f(x,y)=x^2+y^2$來看,其結果為$2x+0$,也意謂著其斜率為$2x$。
:::info
$y$的部份微分之後為0是因為它已經是常數項了。
:::
### Partial derivatives

簡單來看是這樣的,當函數有兩個變數的時候,我們可以各自對其求偏導數。舉例來說,我們的函數是$f(x,y)$,那對$x$的偏導數就是$f_x=\dfrac{\partial f}{\partial x}$,對$y$的偏導數則是$f_y=\dfrac{\partial f}{\partial y}$。
如果函數有10個變數,那就可以取10次的偏導數。
### Intro To Partial Derivatives

簡單來說,計算偏導數就兩招:
1. 將目標以外的變數通通視為常數
2. 按一般計算微分方式求導
## Partial derivatives - Part 2
[課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/6rtOz/partial-derivatives-part-2)
### Partial Derivatives (More Examples)

這邊我們用更多的範例來說明偏導數。假設我們有一個函數為$f9x,y)=3x^2y^3$,目標是找出其對$x$的偏導數,也就是$\dfrac{\partial f}{\partial x}$:
1. 目標變數以外的通通先視為常數,所以$y^3$不看
2. $3x^2$求導就是$3(2x)$
3. 這是相乘,加上$y^3$視為常數,你就當它跟最前面的$3$一樣,就補乘回來就行
4. 結果就是$3(2x)y^3=6xy^3$
### Partial Derivatives (More Examples)

這次換計算對$y$的偏導數:
1. 目標變教以外的通通先視為常數,所以$x^2$不看
2. $3y^3$求導就是$3(3y^2)$
3. 這是相乘,加上$x^2$視為常數,當它跟最前面的$3$一樣,補乘回來
4. 結果就是$3x^23y^2=9x^2y^2$
## Gradients
[課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/TcZe7/gradients)
課程說明Gradient,也就是梯度
### Gradient

經過前面的課程說明我們已經知道怎麼計算偏導數,梯度就是包含這兩個偏導數的向量表示,也就是$\begin{bmatrix}2x \\ 2y\end{bmatrix}$,符號上則是以$\nabla$,nabla,來表示,寫為$\nabla {f}=\begin{bmatrix}\dfrac{\partial f}{\partial x} \\ \dfrac{\partial f}{\partial y}\end{bmatrix}$,也是函數相對於所有變數的偏導數的集合。
### Gradient

上圖來看,這種情況下,梯度可以很好的說明切平面,因為它說明了兩條切線所形成的切平面(tangent plane)。
舉例來說,如果我們希望知道函數在$(x, 3)$的梯度,那只要帶入我們的偏導數集合體中,啦啦哩啦啦的計算一下就知道答案就是$\nabla{f}=\begin{bmatrix}4 \\ 6 \end{bmatrix}$
## Gradients and maxima/minima
[課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/2iQ6p/gradients-and-maxima-minima)
課程說明梯度對於最小化函數的應用
### Functions of Two Variables

上圖左右各自為一個變數與兩個變數的函數。如果還記得的話,一個變數的函數要找到它的最佳解就是找切線斜率等於0的那個點,也就是圖上的紅線切點。
對於兩個變數的函數也是一樣的觀念,很明顯的它的最佳解也是在凹形圖的最下面跟水平面平行的地方,也就是紅色的切平面。
如果我們用偏導數來看,也就是我們找到的兩條切線來看的話,這兩條線也會是跟平面是平行的狀態。這意謂著最佳解就是在這兩條切線的偏導數皆為0的地方。
### Functions of Two Variables

用數學來計算的話,一個變數的函數最佳解就是$2x=0$的地方,也就是$x=0$。
兩個變數的函數的話就在$2x=0, 2y=0$的地方,也就是原點$(0,0)$。
反正啊,不管你的函數有幾個變數,就是找出每個變數的偏導數為零的地方就是了。
## Optimization with gradients: An example
[課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/gBoXy/optimization-with-gradients-an-example)
課程說明兩個變數的函數最佳化的應用
### Motivation for Optimization in Two Variables

這是課程中出現過的三溫暖的範例,不過一開始的範例只有左右兩個方向可以選擇,我們希望可以找到這烤箱裡面最涼的點。
### Motivation for Optimization in Two Variables

現在,問題升級,我們希望從一個平面中找出最涼的點。環境說明如下:
1. 這房間的長寬各為5m
2. 紅色區域是熱的,藍色區是涼一點的
3. 函數給定座標所回傳的是所在座標的溫度,也就是高度的部份,愈高代表愈熱,愈低代表愈涼

我們的目標就是找出最涼爽的那個地方。我們從起始點開始,然後找了幾個方向,發現就是藍色箭頭那個方向是比較涼的,所以我們決定往那邊移動。

然後不斷的重覆這樣的動作,努力的找到涼爽一點的地方。

以數學來表示的話就是這個溫度函數對兩個座標的偏導數皆為0的點就是最涼的,以體感來說就是你怎麼動都覺得好像變熱了,那就是最涼的。
### Exercise

現在,就是實戰了,假設這個溫度函數是$T=f(x,y)=85-\dfrac{1}{90}x^2(x-6)y^2(y-6)$,嚐試算一下$\dfrac{\partial f}{\partial x}, \dfrac{\partial f}{\partial y}$。
答案就在上面,不過還是鼓勵自己手算一下,證明自己懂。
### Motivation for Optimization in Two Variables

以$\dfrac{\partial f}{\partial x}$來看,要構成偏導數為0的條件就是$x=0, x=4, y=0, y=6$。以$\dfrac{\partial f}{\partial x}$來看的話就是$x=0, x=6, y=0, y=4$

現在把所有可能的集合通通列出來,然後排除掉不可能的地方:
1. $x=6, y=6$已經是跑到烤箱外面了,不考慮
2. $x=0,y=0$很明顯就是最熱的地方,打妹
排除不可能的候選之後就剩下一個,也就是$(4,4)$的這個點。
## Optimization using gradients - Analytical method
[課程連結](https://www.coursera.org/learn/machine-learning-calculus/lecture/64lHx/optimization-using-gradients-analytical-method)
### Linear Regression: Analytical Approach

回到之前提過的電塔問題,總之這個問題現在從一維被擴展到二維,所以每個電塔都有屬於它的x、y座標,我們一樣要找出一個最佳解來連接三個塔的電線。成本的部份仍然是距離的平方,也就是上圖看到的那正方形的區域;總成本的部份就是這三個區域的加總。目標就是找出一條線來將成本最小化。
這條線的部份,如上圖所示是條直線,所以我們可以用$y=mx+b$來表示,其中$m$表示斜率,$b$表示截距項。我們的目標就是找出最佳的$m,b$來讓總的成本最小化。很明顯的我們預計最小化的目標函數有兩個變數,也就是$m, b$。
### Linear Regression: Analytical Approach

首先我們嚐試將每個電塔的座標點先帶入計算:
* 藍色$(1,2)$:帶入$x=1$,得到的點就會是$m+b$,然後$m+b-2$就會是距離,成本就是距離的平方,所以就是$(m+b-2)^2$
* 橘色$(2,5)$:$(2m+b-5)^2$
* 綠色$(3,3)$:$(3m+b-3)^2$
總的成本就是三個面積相加。把所有的項目展開就可以得到上面的數學式。
### Linear Regression: Analytical Approach

我們的目標就是找出一組$m,b$讓這個$E$的結果最小化。這個課程中說過,在考卷上寫個『我會』。我們要求的就是兩個變數的偏導數為0的那個值,也就是$\dfrac{\partial{E}}{\partial{m}}=0$與$\dfrac{\partial{E}}{\partial{b}}=0$。
各自求導之後可以得到
* $\dfrac{\partial{E}}{\partial{m}}=28m+12b-42$
* $\dfrac{\partial{E}}{\partial{b}}=6b+12m-20$
現在我們得到兩個變數的偏導數,再來要做的就是求出可以讓兩個偏導數為0的解。
### Linear Regression: Analytical Approach

這時候你可以用一些線性代數的處理手法來啦啦哩啦啦的處理就好,總之帶一帶結果就是:
* $m=0.5$
* $b=\dfrac{7}{3} \approx4.167$
這兩個值就是能夠讓成本最小化的結果。
### Linear Regression: Optimal Solution

把這條線畫出來的結果如上圖。這個問題又稱為線性迴歸。這是機器學習裡面很重要的學習方法。
後面我們將會看到另一種求解的方法,也就是Gradient Descent。