back to index

【機器學習2021】預測本頻道觀看人數 (下) - 深度學習基本概念簡介


link |
00:00.000
Linear 的 Model 也許太過簡單了
link |
00:04.000
怎麼說它太過簡單呢
link |
00:07.000
怎麼說它太過簡單呢
link |
00:10.000
我們可以想像說 X1 跟 Y
link |
00:13.000
也許它中間有比較複雜的關係
link |
00:16.000
但是對 Linear Model 而言
link |
00:19.000
對 Linear Model 來說
link |
00:21.000
X1 跟 Y 的關係就是一條直線
link |
00:24.000
隨著 X1 越來越高
link |
00:26.000
Y 就應該越來越大
link |
00:28.000
你可以設定不同的 W
link |
00:30.000
改變這條線的斜率
link |
00:32.000
你可以設定不同的 B
link |
00:34.000
改變這條藍色的直線
link |
00:37.000
跟 Y 軸的交叉點
link |
00:40.000
但是無論你怎麼改 W 跟 B
link |
00:43.000
它永遠都是一條直線
link |
00:46.000
永遠都是 X1 越大
link |
00:48.000
Y 就越大
link |
00:50.000
前一天觀看的人數越多
link |
00:52.000
隔天的觀看人數就越多
link |
00:54.000
但也許現實並不是這個樣子
link |
00:57.000
也許在 X1 小於某一個數值的時候
link |
01:00.000
前一天的觀看人數
link |
01:02.000
跟隔天的觀看人數是成正比的
link |
01:05.000
但也許當 X1 大於一個數值的時候
link |
01:08.000
這個物極必反
link |
01:10.000
過了一個峰值以後
link |
01:12.000
假設 X1 太大
link |
01:14.000
前天觀看的人數太高
link |
01:16.000
隔天觀看人數就會變少
link |
01:19.000
也說不定
link |
01:20.000
也許 X1 跟 Y 中間
link |
01:22.000
有一個比較複雜的
link |
01:24.000
像這個紅色線一樣的關係
link |
01:27.000
但你不管怎麼擺弄你的 W 跟 B
link |
01:29.000
你永遠製造不出紅色那一條線
link |
01:33.000
你永遠無法用 Linear 的 Model
link |
01:35.000
製造紅色這一條線
link |
01:37.000
所以怎麼辦呢
link |
01:39.000
顯然 Linear 的 Model
link |
01:41.000
有很大的限制
link |
01:43.000
這一種來自於 Model 的限制
link |
01:46.000
叫做 Model Bias
link |
01:49.000
其實我們剛才在課堂一開始的時候
link |
01:52.000
也說 B 叫做 Bias
link |
01:54.000
那這個地方有一點
link |
01:56.000
在用詞上有一點 ambiguous
link |
01:59.000
所以這邊特別強調說
link |
02:02.000
這個東西叫做 Model 的 Bias
link |
02:05.000
它跟 B 的這個 Bias 不太一樣
link |
02:07.000
它指的意思是說
link |
02:09.000
所以它沒有辦法模擬真實的狀況
link |
02:14.000
所以怎麼辦呢
link |
02:15.000
我們需要寫一個更複雜的
link |
02:18.000
更有彈性的
link |
02:20.000
有未知參數的 Function
link |
02:23.000
Linear 的 Model 顯然是不夠的
link |
02:27.000
那怎麼辦呢
link |
02:29.000
怎麼寫出一個更複雜的
link |
02:31.000
有未知參數的 Function 呢
link |
02:34.000
我們可以觀察一下
link |
02:36.000
紅色的這一條曲線
link |
02:39.000
紅色的這一條曲線
link |
02:41.000
它可以看作是一個常數
link |
02:44.000
再加上一群藍色的
link |
02:48.000
這樣子的 Function
link |
02:50.000
那這個藍色的 Function
link |
02:51.000
它的特性是這個樣子的
link |
02:53.000
當輸入的值
link |
02:56.000
當 x 軸的值
link |
02:58.000
小於某一個 threshold 的時候
link |
03:02.000
它是某一個定值
link |
03:04.000
大於另外一個 threshold 的時候
link |
03:06.000
又是另外一個定值
link |
03:08.000
那中間有一個斜坡
link |
03:10.000
所以它是先水平的
link |
03:12.000
然後再斜坡
link |
03:13.000
然後再水平的
link |
03:14.000
那它其實有名字
link |
03:16.000
它的名字我們等一下再講
link |
03:18.000
這邊我們
link |
03:19.000
因為它是藍色的 Function
link |
03:20.000
我們就先叫它藍方吧
link |
03:24.000
那所以呢
link |
03:25.000
這個紅色的線
link |
03:26.000
它可以看作是一個常數項
link |
03:29.000
加一大堆的藍方
link |
03:32.000
那這個常數項
link |
03:34.000
它的值應該要有多大呢
link |
03:36.000
你就看這一條紅色的線
link |
03:38.000
它跟 x 軸的交點在哪裡
link |
03:42.000
那這個常數項呢
link |
03:43.000
就設跟 x 軸的交點一樣大
link |
03:46.000
那怎麼加上這個藍色的 Function 以後
link |
03:49.000
變成紅色的這一條線呢
link |
03:52.000
你就這樣子加
link |
03:54.000
這個藍色 Function 呢
link |
03:56.000
它的這個坡度
link |
03:59.000
這個斜坡的起點
link |
04:01.000
設在紅色 Function 的起始的地方
link |
04:06.000
然後第二個斜坡的終點
link |
04:09.000
設在第一個轉角處
link |
04:12.000
所以這邊紅色 Function 有一個轉角
link |
04:14.000
那你就有一個藍色的 Function
link |
04:16.000
它的斜坡的終點
link |
04:18.000
設在紅色 Function 的第一個轉角
link |
04:21.000
然後呢
link |
04:22.000
你刻意讓這邊這個藍色 Function 的斜坡
link |
04:25.000
跟這個紅色 Function 的斜坡
link |
04:28.000
它們的斜率是一樣的
link |
04:30.000
這個時候
link |
04:31.000
如果你把 0 加上 1
link |
04:34.000
你就可以得到紅色曲線
link |
04:36.000
紅色這個線段的
link |
04:38.000
第一個到第一個轉折點之前的數值
link |
04:43.000
所以 0 加上 1
link |
04:44.000
可以得到紅色線段
link |
04:46.000
第一個轉折點之前的部分
link |
04:49.000
然後接下來
link |
04:51.000
再加第二個藍色的 Function
link |
04:54.000
怎麼加呢
link |
04:55.000
你就看紅色這個線
link |
04:57.000
第二個轉折點出現在哪裡
link |
05:04.000
所以第二個藍色 Function
link |
05:07.000
它的斜坡就在紅色 Function 的
link |
05:10.000
第一個轉折點到第二個轉折點之間
link |
05:13.000
第一個轉折點到第二個轉折點之間
link |
05:15.000
那你刻意讓這邊的斜率
link |
05:17.000
跟這邊的斜率一樣
link |
05:19.000
這個時候你把 0 加 1 加 2
link |
05:22.000
你就可以得到兩個轉折點這邊的線段
link |
05:26.000
你就可以得到紅色的這條線
link |
05:28.000
這邊的部分
link |
05:30.000
然後接下來第三個部分
link |
05:32.000
第二個轉折點之後的部分
link |
05:34.000
怎麼產生呢
link |
05:35.000
第三個藍色的 Function
link |
05:37.000
第三個藍色的 Function
link |
05:38.000
它這個坡度的起始點
link |
05:40.000
故意設的跟這個轉折點一樣
link |
05:42.000
這邊的斜率
link |
05:43.000
故意設的跟這邊的斜率一樣
link |
05:45.000
接下來你把 0 加 1 加 2 加 3
link |
05:49.000
全部加起來
link |
05:51.000
你就得到紅色的這個線
link |
05:55.000
所以紅色這個線
link |
05:57.000
可以看作是一個常數
link |
05:59.000
再加上一堆藍色的 Function
link |
06:03.000
那你仔細想一下就會發現說
link |
06:05.000
不管我畫什麼樣的
link |
06:09.000
Piecewise Linear 的 Curve
link |
06:11.000
什麼叫做 Piecewise Linear 的 Curve 呢
link |
06:14.000
就是你現在這個 Curve
link |
06:16.000
它是由很多線段所組成的
link |
06:18.000
它是由很多鋸齒狀的線段所組成的
link |
06:21.000
這個叫做 Piecewise Linear 的 Curve
link |
06:24.000
那你會發現說
link |
06:25.000
這些 Piecewise Linear 的 Curve
link |
06:27.000
你有辦法用常數像
link |
06:29.000
加一大堆的藍色 Function 組合出來
link |
06:32.000
只是他們用的藍色 Function 不見得一樣
link |
06:36.000
你要有很多不一樣的藍色 Function
link |
06:38.000
加上一個常數以後
link |
06:40.000
你就可以組出這些 Piecewise Linear 的 Curve
link |
06:44.000
那如果你今天 Piecewise Linear 的 Curve 越複雜
link |
06:48.000
你的這個轉折的點越多
link |
06:50.000
那你需要的這個藍色的 Function 就越多
link |
06:55.000
所以呢
link |
06:56.000
那講到這邊有人可能會說
link |
06:59.000
那也許我們今天要考慮的
link |
07:01.000
X 跟 Y 的關係
link |
07:03.000
不是 Piecewise Linear 的 Curve 啊
link |
07:06.000
也許它是這樣子的曲線
link |
07:10.000
那就算是這樣的曲線
link |
07:12.000
也無所謂
link |
07:13.000
我們可以在這樣的曲線上面
link |
07:15.000
先取一些點
link |
07:17.000
再把這些點點起來
link |
07:19.000
變成一個 Piecewise Linear 的 Curve
link |
07:22.000
而這個 Piecewise Linear 的 Curve
link |
07:24.000
跟原來的曲線
link |
07:25.000
它會非常接近
link |
07:27.000
如果你今天點取的夠多
link |
07:29.000
或你點取的位置適當的話
link |
07:31.000
你點取的夠多
link |
07:32.000
這個 Piecewise Linear 的 Curve
link |
07:34.000
就可以逼近這個
link |
07:36.000
連續的這個曲線
link |
07:38.000
就可以逼近這個
link |
07:39.000
不是 Piecewise Linear
link |
07:41.000
它是有角度的
link |
07:42.000
有弧度的這條曲線
link |
07:44.000
所以我們今天知道一件事情
link |
07:47.000
你可以用 Piecewise Linear 的 Curve
link |
07:49.000
去逼近任何的連續的曲線
link |
07:53.000
而每一個 Piecewise Linear 的 Curve
link |
07:56.000
都可以用一大堆藍色的 Function
link |
07:59.000
組合起來
link |
08:00.000
也就是說
link |
08:01.000
我只要有足夠的藍色 Function
link |
08:03.000
把它加起來
link |
08:05.000
我也許就可以變成
link |
08:07.000
任何連續的曲線
link |
08:10.000
所以今天
link |
08:12.000
假設我們的 X 跟 Y 的關係
link |
08:14.000
它也許非常的複雜
link |
08:16.000
那也沒關係
link |
08:17.000
我們就想辦法
link |
08:19.000
寫一個帶有未知數的 Function
link |
08:22.000
這個帶有未知數的 Function
link |
08:24.000
它表示的就是一堆
link |
08:26.000
藍色的 Function
link |
08:27.000
加上一個 Consonant
link |
08:29.000
那我們接下來問的問題就是
link |
08:31.000
這個藍色 Function
link |
08:33.000
它的式子
link |
08:35.000
應該要怎麼把它寫出來呢
link |
08:38.000
怎麼把這個藍色 Function 的式子
link |
08:40.000
寫出來呢
link |
08:42.000
也許你要直接寫出它
link |
08:44.000
沒有那麼容易
link |
08:46.000
但是你可以用一條曲線
link |
08:48.000
來逼近它
link |
08:49.000
用什麼樣的曲線來逼近它呢
link |
08:52.000
用 Sigmoid 的 Function
link |
08:54.000
來逼近這個藍色的 Function
link |
08:57.000
那 Sigmoid Function
link |
08:58.000
它的式子長的是這個樣子的
link |
09:00.000
它的橫軸輸入是 X1
link |
09:03.000
輸出是 Y
link |
09:04.000
輸入的 X1
link |
09:05.000
我們先乘上一個 W
link |
09:08.000
再加上一個 B
link |
09:10.000
再取一個負號
link |
09:11.000
再取 Exponential
link |
09:13.000
再加 1
link |
09:14.000
這一串被放在分母的地方
link |
09:17.000
把 1 除以
link |
09:19.000
1 加上 Exponential 負 B 加 W X1
link |
09:22.000
前面你可以乘上一個
link |
09:24.000
Constant 叫做 C
link |
09:27.000
那如果你今天
link |
09:28.000
輸入的這個 X1 的值
link |
09:30.000
趨近於無窮大的時候
link |
09:32.000
會發生什麼事呢
link |
09:33.000
如果這一項趨近於無窮大
link |
09:35.000
那 Exponential 這一項就會消失
link |
09:38.000
那當 X1 非常大的時候
link |
09:41.000
這一條這邊就會收斂在
link |
09:43.000
這個高度是 C 的地方
link |
09:45.000
那如果今天 X1 負得非常大的時候
link |
09:48.000
會發生什麼事呢
link |
09:49.000
如果 X1 負得非常大的時候
link |
09:51.000
分母的地方就會非常大
link |
09:53.000
那 Y 的值就會趨近於零
link |
09:56.000
所以你可以用這樣子的一個 Function
link |
09:59.000
來試著畫出這一條曲線
link |
10:02.000
用這一條曲線來逼近
link |
10:04.000
這一個藍色的 Function
link |
10:06.000
那這個東西
link |
10:08.000
它的名字叫做 Sigmoid
link |
10:11.000
Sigmoid 是什麼意思呢
link |
10:12.000
Sigmoid 如果硬要翻成中文的話
link |
10:16.000
可以翻成 S 型的
link |
10:18.000
所以 Sigmoid Function 就是 S 型的 Function
link |
10:21.000
因為它長得是有點像是 S 型的
link |
10:24.000
所以叫它 Sigmoid Function
link |
10:25.000
那這邊我們之後都懶得
link |
10:27.000
把 Exponential 寫出來
link |
10:29.000
我們就直接寫成這個樣子
link |
10:31.000
就是 Y 等於 C 倍的 Sigmoid
link |
10:34.000
然後這個括號裡面放 B 加 W 乘 X1
link |
10:38.000
然後這個 B 加 W 乘 X1
link |
10:39.000
實際上做的事情
link |
10:41.000
就是把它放在 Exponential 的指數下
link |
10:43.000
前面加一個括號
link |
10:44.000
然後 B 加 Exponential 的負
link |
10:46.000
B 加 W 乘 X1 放在分母的地方
link |
10:48.000
前面乘上 C 就等於 Y
link |
10:51.000
所以我們可以用這個 Sigmoid Function
link |
10:53.000
去逼近一個藍色的 Function
link |
10:56.000
那其實這個藍色的 Function
link |
10:57.000
比較常見的名字就叫做
link |
10:59.000
Hard Sigmoid
link |
11:01.000
只是我本來想說一開始
link |
11:03.000
我們是先介紹藍色的 Function
link |
11:05.000
才介紹 Sigmoid
link |
11:06.000
所以一開始說它叫做 Hard Sigmoid
link |
11:08.000
有一點奇怪
link |
11:10.000
所以我們先告訴你說
link |
11:11.000
有一個 Sigmoid Function
link |
11:12.000
它可以逼近這個藍色的 Function
link |
11:14.000
那這個藍色的 Function
link |
11:15.000
其實通常就叫做 Hard Sigmoid
link |
11:19.000
那今天我們需要各式各樣
link |
11:22.000
不同的藍色的 Function
link |
11:24.000
還記得嗎
link |
11:25.000
我們要組出各種不同的曲線
link |
11:27.000
那我們就需要各式各樣
link |
11:29.000
合適的藍色的 Function
link |
11:31.000
而這個合適的藍色的 Function
link |
11:34.000
怎麼製造出來呢
link |
11:35.000
我們就需要調整這裡的 B 跟 W 跟 C
link |
11:40.000
你可以調整 B 跟 W 跟 C
link |
11:43.000
你就可以製造各種不同形狀的 Sigmoid Function
link |
11:46.000
用各種不同形狀的 Sigmoid Function
link |
11:48.000
去逼近這個藍色的 Function
link |
11:51.000
舉例來說
link |
11:53.000
如果你今天改 W
link |
11:55.000
會發生什麼事呢
link |
11:56.000
你就會改變斜率
link |
11:59.000
就會改變斜坡的坡度
link |
12:04.000
如果你動了 B 會發生什麼事呢
link |
12:07.000
你就可以把這個 Sigmoid Function 左右移動
link |
12:13.000
如果你改 C 會發生什麼事呢
link |
12:15.000
你就會改變它的高度
link |
12:18.000
所以你只要有不同的 W
link |
12:20.000
不同的 B 不同的 C
link |
12:22.000
你就可以製造出不同的 Sigmoid Function
link |
12:24.000
把不同的 Sigmoid Function 疊起來以後
link |
12:27.000
你就可以疊出各種不同的
link |
12:30.000
你就可以去逼近各種不同的
link |
12:32.000
Piecewise Linear 的 Function
link |
12:34.000
然後 Piecewise Linear Function 可以拿來近似
link |
12:37.000
各種不同的 Continuous 的 Function
link |
12:41.000
所以今天假設我們要把
link |
12:44.000
紅色的這條線
link |
12:46.000
它的函數寫出來的話
link |
12:49.000
那可能長什麼樣子呢
link |
12:51.000
我們知道說紅色這條線
link |
12:53.000
就是 0 加 1 加 2 加 3
link |
12:55.000
而這個 1 2 3 他們都是藍色的 Function
link |
12:59.000
所以他們的函數就是有一個固定的樣子
link |
13:02.000
他們都寫做 X1 乘上 W 再加上 B
link |
13:06.000
做 Sigmoid 再乘上 C1
link |
13:10.000
只是 1 2 3 他們的 W 不一樣
link |
13:14.000
他們的 B 不一樣
link |
13:16.000
他們的 C 不一樣
link |
13:18.000
如果是第一個藍色 Function
link |
13:22.000
它就是 W1 B1 C1
link |
13:25.000
第二個藍色 Function
link |
13:27.000
我們就說它用的是 W2 B2 C2
link |
13:31.000
第三個藍色 Function
link |
13:33.000
我們就說它用的是 W3 B3 C3
link |
13:37.000
那我們接下來呢
link |
13:39.000
就是把 0 跟 1 2 3 全部加起來以後
link |
13:45.000
我們得到的函數就長這個樣子
link |
13:49.000
我們把 1 加 2 加 3 加起來
link |
13:53.000
這邊就是 Summation over i
link |
13:55.000
我們的 i 等於 1 或 2 或 3
link |
13:59.000
Summation 裡面就是 Ci 乘上 Sigmoid
link |
14:01.000
Bi 加 Wi 乘上 X1
link |
14:04.000
所以這邊每一個式子都代表了一個不同藍色的 Function
link |
14:08.000
Summation 的意思就是把不同的藍色的 Function 給它加起來
link |
14:12.000
就是這邊 Summation 的意思
link |
14:14.000
然後別忘了加一個 Constant
link |
14:18.000
這邊用 B 來表示這個 Constant
link |
14:22.000
所以今天我們有一個
link |
14:25.000
我們今天就寫出了一個這樣子的 Function
link |
14:29.000
如果我們假設裡面的 B 跟 W 跟 C
link |
14:32.000
它是未知的
link |
14:34.000
它是我們未知的參數
link |
14:36.000
那我們就可以設定不同的 B 跟 W 跟 C
link |
14:39.000
設定不同的 B 跟 W 跟 C
link |
14:41.000
我們就可以製造不同的藍色的 Function
link |
14:43.000
製造不同的藍色的 Function 疊起來以後
link |
14:45.000
就可以製造出不同的紅色的 Curve
link |
14:48.000
製造出不同的紅色的 Curve
link |
14:49.000
就可以製造出不同的 Piecewise Linear 的 Curve
link |
14:52.000
就可以去逼近各式各樣不同的 Continuous Function
link |
14:56.000
所以我們其實有辦法寫出一個
link |
14:59.000
這個非常有彈性的
link |
15:01.000
有未知參數的 Function
link |
15:05.000
它長這個樣子
link |
15:06.000
就是 Summation 一堆 Simole
link |
15:08.000
但它們有不同的 C 不同的 B 不同的 W
link |
15:13.000
所以本來我們是 Linear 的 Model
link |
15:16.000
Y 等於 B 加 W 乘上 X1
link |
15:19.000
它有非常大的限制
link |
15:20.000
這個限制叫做 Model Bias
link |
15:23.000
那我們要如何減少 Model Bias 呢
link |
15:26.000
我們可以寫一個更有彈性的
link |
15:29.000
有未知參數的 Function
link |
15:31.000
它叫做 Y 等於 B 加 Summation
link |
15:34.000
Ci Simole Bi 加 Wi X1
link |
15:37.000
本來這邊是 B 加 Wi X1
link |
15:39.000
這邊變成 Bi 加 Wi X1
link |
15:43.000
然後我們有很多不同的 Bi
link |
15:45.000
有很多不同的 Wi
link |
15:47.000
它們都通過 Simole 都乘上 Ci
link |
15:50.000
把它們加起來再加 B 等於 Y
link |
15:52.000
我們只要代入不同的 C 不同的 B 不同的 W
link |
15:55.000
我們就可以變出各式各樣
link |
15:57.000
就可以組合出各式各樣不同的 Function
link |
16:01.000
那我們剛才其實已經進化到
link |
16:03.000
不是只用一個 Feature
link |
16:04.000
我們可以用多個 Feature
link |
16:06.000
我們這邊用 J 來代表 Feature 的編號
link |
16:10.000
舉例來說剛才如果要考慮前 28 天的話
link |
16:13.000
J 就是 1 到 28
link |
16:14.000
考慮前 56 天的話
link |
16:16.000
J 就是 1 到 56
link |
16:18.000
那如果要把這個 Function
link |
16:20.000
再擴展成我們剛才講的上面這個
link |
16:23.000
比較有彈性的 Function 的話
link |
16:25.000
那也很簡單
link |
16:26.000
我們就把 Simole 裡面的東西換掉
link |
16:29.000
本來這邊是 B 加 Summation
link |
16:31.000
Over J Wi XJ
link |
16:33.000
那這邊就把這一項
link |
16:36.000
放到這個括號裡面
link |
16:38.000
改成 Bi 加 Summation
link |
16:40.000
Over J Wi XJ
link |
16:43.000
把本來放在這邊的東西
link |
16:45.000
放到 Simole 裡面
link |
16:47.000
然後每一個 Simole 的 Function 裡面
link |
16:50.000
都有不同的 Bi 不同的 Wi J
link |
16:53.000
然後舉 Simole 以後
link |
16:55.000
乘上 Ci 就全部加起來
link |
16:56.000
再加上 B 就得到 Y
link |
16:59.000
我們只要這邊 Ci Bi 跟 Wi J
link |
17:01.000
放不同的值
link |
17:02.000
就可以變成不同的 Function
link |
17:07.000
如果講到這邊你還是覺得有點抽象的話
link |
17:11.000
如果你看這個式子覺得有點頭痛的話
link |
17:13.000
那我們用比較直觀的方式
link |
17:15.000
把這個式子實際上做的事
link |
17:17.000
把它畫出來
link |
17:19.000
它畫出來看起來像是這個樣子
link |
17:23.000
我們先考慮一下 J 就是 1 2 3 的狀況
link |
17:26.000
就是我們只考慮三個 Feature
link |
17:29.000
舉例來說我們只考慮前一天
link |
17:31.000
前兩天跟前三天的 Case
link |
17:33.000
所以 J 等於 1 2 3
link |
17:36.000
那所以輸入就是 X1
link |
17:38.000
代表前一天的觀看人數 X2
link |
17:41.000
兩天前的觀看人數 X3
link |
17:43.000
三天前的觀看人數
link |
17:44.000
I 是什麼
link |
17:45.000
I 是每一個 I 就代表了一個藍色的 Function
link |
17:51.000
只是我們現在每一個藍色的 Function
link |
17:53.000
都用一個 Sigmoid Function 來近似它
link |
17:56.000
所以每一個 I 就代表了一個 Sigmoid Function
link |
17:59.000
或者是代表了一個藍色的 Function
link |
18:03.000
那這邊呢
link |
18:05.000
這個 1 2 3 就代表我們有三個 Sigmoid Function
link |
18:09.000
那我們先來看一下這個括號裡面
link |
18:11.000
做的事情是什麼
link |
18:13.000
每一個 Sigmoid 都有一個括號
link |
18:15.000
這個括號裡面做的事情是什麼呢
link |
18:18.000
第一個 Sigmoid I 等於 1 的 Case
link |
18:21.000
就是把 X1 乘上一個 weight
link |
18:24.000
叫 W1 1
link |
18:26.000
X2 乘上另外一個 weight
link |
18:28.000
叫 W1 2
link |
18:29.000
X3 再乘上一個 weight
link |
18:31.000
叫做 W1 3
link |
18:33.000
全部把它加起來
link |
18:35.000
不要忘了再加一個 B
link |
18:37.000
加起來
link |
18:39.000
然後得到的式子就是這個樣子
link |
18:42.000
所以這邊我們用 W I J 來代表
link |
18:46.000
在第 I 個 Sigmoid 裡面
link |
18:49.000
乘給第 J 個 feature 的 weight
link |
18:53.000
第一個 feature 它就是 W1 1
link |
18:56.000
第二個 feature 就是乘 W1 2
link |
18:58.000
第三個 feature 就是乘 W1 3
link |
19:01.000
所以三個 feature 1 2 3
link |
19:03.000
這個 W 的第二個下標就是 1 2 3
link |
19:05.000
W 的第一個下標代表是
link |
19:07.000
現在在考慮的是
link |
19:09.000
第一個 Sigmoid Function
link |
19:11.000
那我們有三個 Sigmoid Function
link |
19:13.000
第二個 Sigmoid Function
link |
19:15.000
我們就不把它的 W 寫出來了
link |
19:17.000
我們就不把它的 W 放在箭頭旁邊
link |
19:20.000
不然會太擠
link |
19:22.000
第二個 Sigmoid Function
link |
19:24.000
它在括號裡面做的事情是什麼呢
link |
19:26.000
它在括號裡面做的事情就是
link |
19:28.000
把 X1 乘上 W21
link |
19:31.000
把 X2 乘上 W22
link |
19:34.000
把 X3 X3 乘上 W23
link |
19:37.000
通通加起來再加 B2
link |
19:39.000
第三個 Sigmoid 呢
link |
19:41.000
第三個 Sigmoid 在括號裡面做的事情
link |
19:44.000
就是把 1 2 3
link |
19:46.000
1 2 3 X1 X2 X3
link |
19:48.000
分別乘上 W31 W32跟 W33
link |
19:52.000
再加上 B3
link |
19:54.000
那我們現在為了要簡化起見
link |
19:56.000
我們把括弧裡面的數字
link |
19:58.000
用一個比較簡單的符號來表示
link |
20:00.000
所以這一串東西我們當作 R1
link |
20:03.000
這一串東西我們當作 R2
link |
20:06.000
這一串東西我們叫它 R3
link |
20:11.000
那這個 X1 X2 X3
link |
20:13.000
和 R1 R2 R3 中間的關係是什麼呢
link |
20:17.000
你可以用矩陣跟向量相乘的方法
link |
20:21.000
寫一個比較簡單的簡潔的寫法
link |
20:25.000
我們剛才已經知道說
link |
20:27.000
R1 R2 R3 也就是括弧裡面算完的結果
link |
20:31.000
三個 Sigmoid 括弧裡面算完的結果
link |
20:33.000
R1 R2 R3 跟輸入的三個 Feature X1 X2 X3
link |
20:37.000
它們中間的關係就是這樣
link |
20:39.000
把 X1 X2 X3 乘上不同的位置
link |
20:41.000
加上不同的 Bias
link |
20:43.000
也就是不同的 B 會得到不同的 R
link |
20:46.000
那這三個式子這一連串的運算
link |
20:49.000
其實我們可以把它簡化
link |
20:52.000
如果你熟悉線性代數的話
link |
20:54.000
簡化成矩陣跟向量的相乘
link |
20:58.000
把 X1 X2 X3 拼在一起變成一個向量
link |
21:02.000
把這邊所有的 W 通通放在一起
link |
21:05.000
變成一個矩陣
link |
21:07.000
把 B1 B2 B3 拼起來變成一個向量
link |
21:09.000
把 R1 R2 R3 拼起來變成一個向量
link |
21:12.000
那這三個式子你就可以簡寫成
link |
21:15.000
有一個向量叫做 X
link |
21:17.000
這個 X 乘上一個矩陣叫做 W
link |
21:19.000
這個 W 裡面有九個數值
link |
21:22.000
就是這邊的九個 W
link |
21:24.000
就是這邊的九個位
link |
21:26.000
X 先乘上 W 以後
link |
21:28.000
再加上 B
link |
21:30.000
就得到 R 這個向量
link |
21:32.000
那這邊做的事情跟這邊做的事情
link |
21:35.000
是一模一樣的
link |
21:37.000
沒有半毛錢的不同
link |
21:38.000
只是表示的方式不一樣而已
link |
21:41.000
只是本來寫三個數字
link |
21:43.000
裡面有一堆加加減減
link |
21:45.000
有一堆還有什麼上標
link |
21:47.000
還有什麼兩個下標
link |
21:48.000
什麼看起來就讓人頭大
link |
21:50.000
那把它改成線性代數比較常用的表示方式
link |
21:53.000
X 乘上矩陣 W 再加上向量 B
link |
21:56.000
會得到一個向量叫做 R
link |
22:00.000
那所以這邊這件事情
link |
22:02.000
在這個括號裡面做的事情
link |
22:05.000
就是這麼一回事
link |
22:07.000
把 X 乘上 W 加上 B 等於 R
link |
22:11.000
R 就是這邊的 R1 R2 R3
link |
22:14.000
我的電腦有點卡 微卡
link |
22:16.000
沒辦法控制這個滑鼠
link |
22:18.000
沒關係我可以控制
link |
22:20.000
控制的就是 R1 R2 R3
link |
22:22.000
那接下來這個 R1 R2 R3
link |
22:24.000
就要分別通過 sigmoid function
link |
22:30.000
我們實際上做的事情就是
link |
22:33.000
把 R1 取一個括號
link |
22:35.000
再做 exponential 再加 1
link |
22:38.000
然後把它放到分母的地方
link |
22:40.000
1 除以 1 加 exponential 負 R1
link |
22:42.000
等於 A1
link |
22:44.000
同樣的方法由 R2 得到 A2
link |
22:47.000
把 R3 通過 sigmoid function 得到 A3
link |
22:51.000
所以這邊這個藍色的虛線框框
link |
22:53.000
裡面做的事情
link |
22:55.000
就是從 X1 X2 X3
link |
22:57.000
得到了 A1 A2 A3
link |
22:59.000
接下來呢
link |
23:01.000
我們這邊有一個簡潔的表示方法
link |
23:04.000
是我們用 R
link |
23:06.000
通過一個叫做 sigmoid function
link |
23:09.000
我們用這個東西
link |
23:11.000
我們這邊用這個符號
link |
23:13.000
來代表通過 sigmoid function
link |
23:15.000
然後呢
link |
23:17.000
說我們得到了 A 這個向量
link |
23:19.000
我們把 R1 R2 R3
link |
23:21.000
分別通過 sigmoid function
link |
23:23.000
但我們直接用這個符號來表示它
link |
23:25.000
然後得到 A1 A2 A3
link |
23:27.000
然後接下來呢
link |
23:29.000
我們這個 sigmoid 的輸出
link |
23:31.000
還要乘上 C1
link |
23:33.000
然後還要再加上 B
link |
23:35.000
我們這邊做的事情就是
link |
23:37.000
把 A1 乘 C1 A2 乘 C2
link |
23:39.000
A3 乘 C3 通通加起來
link |
23:41.000
再加上 B
link |
23:43.000
最終就得到了 Y
link |
23:47.000
那這邊呢
link |
23:49.000
如果你要用向量來表示的話
link |
23:51.000
A1 A2 A3 拼起來
link |
23:53.000
叫這個向量 A
link |
23:55.000
C1 C2 C3 拼起來
link |
23:57.000
叫一個向量 C
link |
23:59.000
那我們這邊把這個 C 做 transpose
link |
24:01.000
那 A 呢
link |
24:03.000
乘上 C 的 transpose
link |
24:05.000
再加上 B
link |
24:07.000
我們就得到了 Y
link |
24:09.000
所以這一連串的運算
link |
24:11.000
剛才寫的那一個
link |
24:13.000
我們說比較有彈性的式子
link |
24:15.000
整體而言做的事情就是
link |
24:17.000
X 輸入是 X
link |
24:19.000
我們的 feature 是 X 這個向量
link |
24:21.000
X 乘上矩陣 W
link |
24:23.000
加上向量 B 得到向量 R
link |
24:25.000
再把向量 R 通過 sigmoid function
link |
24:27.000
得到向量 A
link |
24:29.000
再把向量 A 跟
link |
24:31.000
乘上 C 的 transpose
link |
24:33.000
加上 B 就得到 Y
link |
24:35.000
所以這上面這件事情
link |
24:37.000
如果你想要用線性代數的方法
link |
24:39.000
來表示它
link |
24:41.000
用向量矩陣相乘的方法來表示它
link |
24:43.000
就長得一副
link |
24:45.000
這個樣子
link |
24:47.000
那這邊的 R 就是這邊的 R
link |
24:49.000
這邊的 A 就是這邊的 A
link |
24:51.000
所以我們可以把這一串東西
link |
24:53.000
放到這個括號裡面
link |
24:55.000
再把這個 A 放到這裡來
link |
24:57.000
所以把相同的東西並起來以後
link |
24:59.000
整體而言就是長這個樣子
link |
25:01.000
上面這一串東西
link |
25:03.000
我們覺得比較
link |
25:05.000
比較有彈性的這個 function
link |
25:07.000
如果你要用線性代數來表示它的話
link |
25:09.000
就是下面這個式子
link |
25:11.000
W 再加上 B 通過 sigmoid function
link |
25:13.000
乘上 C 的 transpose 加 B
link |
25:15.000
就得到 Y
link |
25:17.000
上面這一串就是下面這一串
link |
25:19.000
就是我剛才寫的那個比較有彈性的 function
link |
25:21.000
講來講去都是一樣的東西
link |
25:23.000
只是不同的表示方式而已
link |
25:25.000
上面這個是圖示化的表示方式
link |
25:27.000
下面這個是線性代數的表示方式
link |
25:29.000
其實都在講同一件事情
link |
25:33.000
好,那接下來
link |
25:35.000
接下來
link |
25:37.000
在我們繼續講說
link |
25:39.000
把這些未知的參數找出來之前
link |
25:41.000
我們先再稍微
link |
25:43.000
重新定義一下
link |
25:45.000
我們的符號
link |
25:47.000
這邊的這個 X 是 feature
link |
25:49.000
這邊的 W
link |
25:51.000
B C 跟 B
link |
25:53.000
這邊有兩個 B 啊
link |
25:55.000
但是這兩個 B 是不一樣的
link |
25:57.000
這邊這個是一個向量
link |
25:59.000
這邊是一個數值
link |
26:01.000
你看他們的這個底色是不一樣的
link |
26:03.000
這個是綠色這個是灰色
link |
26:05.000
顯示他們是不一樣的東西
link |
26:07.000
黃色的這個 W
link |
26:09.000
把這個 B 把這個 C
link |
26:11.000
把這個 B 統統拿出來
link |
26:13.000
集合在這邊
link |
26:15.000
他們就是我們的 unknown parameter
link |
26:17.000
就是我們的未知的參數
link |
26:19.000
那我們把
link |
26:21.000
這些東西統統
link |
26:23.000
拉直拼成一個
link |
26:25.000
很長的向量
link |
26:27.000
我們把 W 的
link |
26:29.000
每一個 row 或者是
link |
26:31.000
每一個 column 拿出來
link |
26:33.000
這邊不管你是拿 row 或是拿 column 都可以啦
link |
26:35.000
意思是一樣啦
link |
26:37.000
你就把 W 的每一個 column 或每一個 row 拿出來
link |
26:39.000
拼成一個長的向量
link |
26:41.000
把 B 拼上來
link |
26:43.000
把 C 拼上來
link |
26:45.000
把 B 拼上來
link |
26:47.000
這個長的向量我們直接用一個符號
link |
26:49.000
叫做 Theta 來表示它
link |
26:51.000
Theta 是一個很長的向量
link |
26:53.000
裡面的第一個數值我們叫 Theta1
link |
26:55.000
第二個叫 Theta2 這個叫 Theta3
link |
26:57.000
那 Theta 這個向量裡面
link |
26:59.000
有一些數值是來自於這個矩陣
link |
27:01.000
有一些數值是來自於 B
link |
27:03.000
有一些數值是來自於 C
link |
27:05.000
有一些數值是來自於 B
link |
27:07.000
那我們就不分了
link |
27:09.000
反正 Theta 它統稱我們所有的未知的參數
link |
27:11.000
我們就一律
link |
27:13.000
統稱 Theta
link |
27:15.000
好,那這邊
link |
27:17.000
我們就是換了一個
link |
27:19.000
新的,我們就重新改寫了
link |
27:21.000
機器學習的第一步
link |
27:23.000
我們重新訂了一個有未知參數的 function
link |
27:25.000
那接下來我們就要進入
link |
27:27.000
第二步跟第三步
link |
27:29.000
那在我們進入之前
link |
27:31.000
有沒有問題想要問的
link |
27:35.000
好,那你看線上的人有要問問題嗎
link |
27:55.000
好,我試著回答看看
link |
27:57.000
我猜他的問題是說
link |
27:59.000
我們其實要做 optimization 這件事
link |
28:01.000
找一個可以讓 loss 最小的參數
link |
28:03.000
有一個最暴力的方法
link |
28:05.000
就是報收
link |
28:07.000
所有可能的
link |
28:09.000
未知參數的值,對不對
link |
28:11.000
像我們剛才在只有 W 跟 B 兩個參數的前提之下
link |
28:13.000
我根本就可以報收
link |
28:15.000
所有可能的 W 跟 B 的組合
link |
28:17.000
所以在參數
link |
28:19.000
很少的情況下
link |
28:21.000
甚至你有可能不用 gradient descent
link |
28:23.000
不需要什麼 optimization 的技巧
link |
28:25.000
但是
link |
28:27.000
我們今天參數很快就會變得非常多
link |
28:29.000
像在這個例子裡面
link |
28:31.000
參數有一大把
link |
28:33.000
有 W B 有 C 跟 B
link |
28:35.000
串起來變成一個很長的項量叫 set
link |
28:37.000
那這個時候你就不能夠用報收的方法了
link |
28:39.000
你需要 gradient descent 這樣子的方法
link |
28:41.000
來找出
link |
28:43.000
可以讓 loss 最低的參數
link |
28:45.000
好,希望這樣回答到他的問題
link |
28:49.000
好,在座還有同學有問題嗎
link |
28:51.000
來,請說
link |
29:01.000
可以,非常
link |
29:03.000
這個同學的問題是說
link |
29:05.000
剛才的例子裡面有三個 sigmoid
link |
29:07.000
那為什麼是三個呢
link |
29:09.000
能不能夠四個五個六個呢
link |
29:11.000
可以, sigmoid 的數目
link |
29:13.000
是你自己決定的
link |
29:15.000
而且 sigmoid 的數目越多
link |
29:17.000
你可以產生出來的
link |
29:19.000
piecewise linear 的 function 就越複雜
link |
29:21.000
就是假設你只有三個 sigmoid
link |
29:23.000
意味著你只能產生三個線段
link |
29:25.000
但是假設你有越多 sigmoid
link |
29:27.000
你就可以產生有越多線段的
link |
29:29.000
piecewise linear 的 function
link |
29:31.000
你就可以逼近越複雜的 function
link |
29:33.000
但是至於要幾個 sigmoid
link |
29:35.000
這個又是另外一個 hyperparameter
link |
29:37.000
這個你要自己決定
link |
29:39.000
我們在剛才的例子裡面舉三個
link |
29:41.000
那只是一個例子,也許我以後不應該舉三個
link |
29:43.000
因為這樣會讓你誤以為說
link |
29:45.000
input feature 是三個, sigmoid 是三個
link |
29:47.000
不是,就是說 sigmoid 幾個
link |
29:49.000
你可以自己決定
link |
29:51.000
這樣大家還有問題想問嗎
link |
29:53.000
來請說
link |
29:59.000
跟什麼 sigmoid
link |
30:05.000
hard 的 sigmoid
link |
30:07.000
首先它的 function
link |
30:09.000
你寫出來可能會比較複雜
link |
30:11.000
你一下子寫不出它的 function
link |
30:13.000
但如果你可以寫得出它的 function 的話
link |
30:15.000
你其實也可以用
link |
30:17.000
hard 的 sigmoid
link |
30:19.000
你想要用也可以
link |
30:21.000
所以不是一定只能夠用
link |
30:23.000
剛才那個 sigmoid
link |
30:25.000
去逼近那個 hard sigmoid
link |
30:27.000
完全有別的做法
link |
30:29.000
等一下我們就會講別的做法
link |
30:33.000
大家還有問題想要問嗎
link |
30:37.000
如果目前暫時沒有的話
link |
30:39.000
就請容我繼續講下去
link |
30:41.000
那你知道這門課是
link |
30:43.000
六點二十才下課啦
link |
30:45.000
所以只要講到六點二十前
link |
30:47.000
都是可以的,那如果你有事想要早點離開
link |
30:49.000
也沒有問題
link |
30:51.000
我們課程都是有錄影的
link |
30:53.000
好,那接下來進入第二步啦
link |
30:55.000
我們要定 loss
link |
30:57.000
有了新的這個
link |
30:59.000
model 以後
link |
31:01.000
我們 loss 會不會有什麼不同啊
link |
31:03.000
沒有什麼不同,定義的方法
link |
31:05.000
是一樣的
link |
31:07.000
只是我們的符號改了一下
link |
31:09.000
之前是 L of W 跟 B
link |
31:11.000
因為 W 跟 B 是未知的
link |
31:13.000
那我們現在接下來的未知的參數
link |
31:15.000
很多啦,你再把它一個一個
link |
31:17.000
列出來,太累啦
link |
31:19.000
所以我們直接用 theta 來統設
link |
31:21.000
所有的參數
link |
31:23.000
用 theta 來代表所有未知的參數
link |
31:25.000
所以我們現在的 loss function
link |
31:27.000
就變成 L of theta
link |
31:29.000
這個 loss function 要問的就是
link |
31:31.000
這個 theta 如果它是
link |
31:33.000
某一組數值的話
link |
31:35.000
會有多不好,會有多好
link |
31:37.000
那計算的方法
link |
31:39.000
跟剛才只有兩個
link |
31:41.000
參數的時候其實是一模一樣
link |
31:43.000
就你先給定
link |
31:45.000
某一組 W B C T
link |
31:47.000
跟 B 的值,你先給定
link |
31:49.000
某一組 theta 的值,假設
link |
31:51.000
你知道 W 的值是多少,把 W 的值
link |
31:53.000
寫進去,B 的值寫進去
link |
31:55.000
C 的值寫進去,B 的值寫進去
link |
31:57.000
然後呢,你把一組
link |
31:59.000
feature x 啊,代進去
link |
32:01.000
然後看看你估測出來的 y 是多少
link |
32:03.000
再計算一下跟真實的
link |
32:05.000
level
link |
32:07.000
之間的差距
link |
32:09.000
你得到一個 1,把所有的
link |
32:11.000
誤差通通加起來
link |
32:13.000
你就得到你的 loss
link |
32:15.000
那接下來下一步,就是 optimization
link |
32:17.000
那 optimization 的 problem 跟前面講的
link |
32:19.000
有沒有什麼不同呢?沒有
link |
32:21.000
什麼不同,它是一樣的
link |
32:23.000
所以就算我們換了一個新的模型
link |
32:25.000
這個 optimization 的
link |
32:27.000
步驟, optimization 的
link |
32:29.000
演算法,還是 gradient descent
link |
32:31.000
看起來其實沒有
link |
32:33.000
真的太多的差別
link |
32:35.000
我們現在的 theta
link |
32:37.000
它是一個很長的向量
link |
32:39.000
我們把它表示成 theta 1
link |
32:41.000
theta 2, theta 3
link |
32:43.000
等等
link |
32:45.000
我們現在就是要找一組 theta
link |
32:47.000
這個 theta 可以讓我們的 loss
link |
32:49.000
越小越好,可以讓 loss 最小的
link |
32:51.000
那一組 theta,我們叫做
link |
32:53.000
theta 的 sum
link |
32:55.000
好,那怎麼
link |
32:57.000
找出這個 theta 的 sum 呢?
link |
32:59.000
我們一開始要隨機選一個
link |
33:01.000
初始的數值
link |
33:03.000
那這邊叫做
link |
33:05.000
theta 0,你可以隨機選
link |
33:07.000
那之後也可能會講
link |
33:09.000
也會講到更好的
link |
33:11.000
找出始值的方法
link |
33:13.000
我們現在先隨機選就好
link |
33:15.000
那接下來呢
link |
33:17.000
你要計算為分
link |
33:19.000
你要對每一個
link |
33:21.000
未知的參數
link |
33:23.000
這邊用 theta 1, theta 2, theta 3 來表示
link |
33:25.000
你要為每一個未知的參數
link |
33:27.000
都去計算
link |
33:29.000
它對 L 的為分
link |
33:31.000
link |
33:33.000
把每一個參數都拿去
link |
33:35.000
計算對 L 的為分以後
link |
33:37.000
集合起來,它就是一個
link |
33:39.000
向量,這個向量
link |
33:41.000
我們用 g 來表示它
link |
33:43.000
這邊假設有一千個參數
link |
33:45.000
那這個向量的長度
link |
33:47.000
就是一千,這個向量
link |
33:49.000
裡面就有一千個數字
link |
33:51.000
這個東西有一個名字
link |
33:53.000
就我們把
link |
33:55.000
每一個參數對 L 的為分
link |
33:57.000
集合起來以後,它有一個名字
link |
33:59.000
這個向量有一個名字
link |
34:01.000
叫做 gradient
link |
34:03.000
那很多時候你會看到
link |
34:05.000
gradient 的表示方法是這個樣子的
link |
34:07.000
你把 L 前面放了一個
link |
34:09.000
倒三角形
link |
34:11.000
那這個就代表了
link |
34:13.000
gradient,這是一個 gradient 簡寫的方法
link |
34:15.000
那其實我要表示的就是
link |
34:17.000
這個向量,L 前面放一個
link |
34:19.000
倒三角形的意思就是
link |
34:21.000
把所有的參數
link |
34:23.000
theta 1, theta 2, theta 3 通通拿去對 L
link |
34:25.000
做為分,就是這個
link |
34:27.000
倒三角形的意思
link |
34:29.000
那後面放 theta 0 的意思是說
link |
34:31.000
我們這個算為分的位置
link |
34:33.000
是在 theta 等於 theta 0 的地方
link |
34:35.000
是在 theta 等於 theta 0 的地方
link |
34:37.000
好,我們算出這個 gradient,算出這個 g 以後
link |
34:39.000
接下來呢
link |
34:41.000
我們就要 update 我們的參數了
link |
34:43.000
我們就要更新我們的參數了
link |
34:45.000
更新的方法跟剛才只有兩個參數的狀況
link |
34:47.000
是一模一樣的
link |
34:49.000
只是從更新兩個參數可能換成
link |
34:51.000
更新成一千個參數
link |
34:53.000
但更新的方法是一樣的
link |
34:55.000
我們來有一個參數叫 theta 1
link |
34:57.000
上標 0 代表
link |
34:59.000
它是一個起始的值
link |
35:01.000
它是一個隨機選的
link |
35:03.000
起始的值
link |
35:05.000
這個 theta 1 0 減掉
link |
35:07.000
learning rate 乘上為分的值
link |
35:09.000
得到 theta 1 1
link |
35:11.000
代表 theta 1 更新過一次的結果
link |
35:13.000
theta 2 0 減掉
link |
35:15.000
learning rate 乘上
link |
35:17.000
為分的值,得到
link |
35:19.000
theta 2 1,以此類推
link |
35:21.000
你就可以把那一千個參數
link |
35:23.000
統統都更新了
link |
35:25.000
那這邊有一個簡寫
link |
35:27.000
就是你會把這邊所有的 theta
link |
35:29.000
合起來當作一個向量
link |
35:31.000
我們用 theta 0 來表示
link |
35:33.000
這邊呢,你可以把 learning rate 提出來
link |
35:35.000
那剩下的部分,為分的部分
link |
35:37.000
每一個參數對 L 為分的部分
link |
35:39.000
叫做 gradient,叫做 g
link |
35:41.000
所以 theta 0 減掉 learning rate 乘上 g
link |
35:43.000
就得到 theta 1
link |
35:45.000
把這邊的所有的
link |
35:47.000
這個 theta 統統集合起來
link |
35:49.000
把這邊所有的 theta 統統集合起來
link |
35:51.000
得到 theta 1
link |
35:53.000
theta 0 減掉 theta 0 這個向量
link |
35:55.000
減掉 learning rate 乘上 g
link |
35:57.000
g 也是一個向量,會得到 theta 1
link |
35:59.000
那假設你這邊的參數有一千個
link |
36:01.000
那 theta 0 就是
link |
36:03.000
一千個數值,一千維的向量
link |
36:05.000
g 是一千維的向量
link |
36:07.000
theta 1 也是一千維的向量
link |
36:09.000
那整個操作就是這樣啦
link |
36:11.000
就是有 theta 0
link |
36:13.000
算 gradient
link |
36:15.000
根據 gradient 去把 theta 0
link |
36:17.000
更新成 theta 1
link |
36:19.000
然後再算一次 gradient
link |
36:21.000
然後根據 gradient
link |
36:23.000
把 theta 1 再更新成 theta 2
link |
36:25.000
再算一次 gradient
link |
36:27.000
把 theta 2 更新成 theta 3
link |
36:29.000
以此類推,直到
link |
36:31.000
你不想做,或者是你算出來的
link |
36:33.000
這個 gradient 是零向量
link |
36:35.000
是 zero vector,導致你沒有辦法
link |
36:37.000
再更新參數為止
link |
36:39.000
不過在實作上,你幾乎不太可能
link |
36:41.000
做出 gradient 是零向量的結果
link |
36:43.000
通常你會停下來
link |
36:45.000
就是你不想做了
link |
36:47.000
好,但是實作上
link |
36:49.000
那這邊是一個
link |
36:51.000
實作的 detail 的 issue,之所以在這邊
link |
36:53.000
就提它是因為助教的程式裡面
link |
36:55.000
有這一段啦,所以我們必須要講一下
link |
36:57.000
免得你看助教程式的時候覺得有點困惑
link |
36:59.000
實際上
link |
37:01.000
我們在做 gradient descent 的時候
link |
37:03.000
我們會這麼做
link |
37:05.000
我們這邊有大恩比資料
link |
37:07.000
我們會把這大恩比資料
link |
37:09.000
分成一個一個的
link |
37:11.000
batch
link |
37:13.000
就是一包一包的東西
link |
37:15.000
怎麼分?隨機分就好
link |
37:17.000
隨機分就好
link |
37:19.000
好,所以每個 batch
link |
37:21.000
裡面有大B比資料
link |
37:23.000
所以本來全部有大恩比資料
link |
37:25.000
現在大B比資料一組
link |
37:27.000
大B比資料一組
link |
37:29.000
每一組叫做 batch
link |
37:31.000
怎麼分組?隨便分就好
link |
37:33.000
隨便分就好
link |
37:35.000
那本來我們是把
link |
37:37.000
所有的 data 拿出來
link |
37:39.000
算一個 loss
link |
37:41.000
那現在我們不這麼做
link |
37:43.000
我們只拿一個 batch 裡面的
link |
37:45.000
data,只拿 B比
link |
37:47.000
data 出來算一個 loss
link |
37:49.000
我們這邊把它叫 L1
link |
37:51.000
那跟這個 L 是區別
link |
37:53.000
因為你把全部的資料拿出來算 loss
link |
37:55.000
跟只拿一個 batch 拿出來的資料
link |
37:57.000
拿出來算 loss 它不會一樣嘛
link |
37:59.000
所以這邊用 L1 來表示
link |
38:01.000
但是你可以想像說,假設這個 B 夠大
link |
38:03.000
也許 L 跟 L1 會很
link |
38:05.000
接近,也說不定
link |
38:07.000
所以實作上的時候
link |
38:09.000
每次我們會先選一個 batch
link |
38:11.000
用這個 batch 來算 L
link |
38:13.000
根據這個 L1 來算 gradient
link |
38:15.000
用這個 gradient 來更新參數
link |
38:17.000
接下來再選下一個 batch
link |
38:19.000
算出 L2
link |
38:21.000
根據 L2 算出 gradient
link |
38:23.000
然後再更新參數
link |
38:25.000
再取下一個 batch 算出 L3
link |
38:27.000
根據 L3 算出 gradient
link |
38:29.000
再用 L3 算出來的 gradient
link |
38:31.000
來更新參數
link |
38:33.000
所以我們並不是拿大 L 來算 gradient
link |
38:35.000
實際上我們是拿
link |
38:37.000
一個 batch 算出來的 L1 L2 L3
link |
38:39.000
來計算 gradient
link |
38:41.000
那把所有的 batch
link |
38:43.000
都看過一次
link |
38:45.000
叫做一個 APOC
link |
38:47.000
每一次更新參數
link |
38:49.000
叫做一次 update
link |
38:51.000
所以你在文獻上常常會有人
link |
38:53.000
聽到 update 這個詞彙
link |
38:55.000
常常有人聽到 APOC 這個詞彙
link |
38:57.000
那 update 跟 APOC
link |
38:59.000
是不一樣的東西
link |
39:01.000
每次更新一次參數
link |
39:03.000
叫做一次 update
link |
39:05.000
把所有的 batch 都看過一遍
link |
39:07.000
叫做一個 APOC
link |
39:11.000
至於為什麼要分
link |
39:13.000
一個一個 batch
link |
39:15.000
這個我們下週再講
link |
39:17.000
但是為了要讓大家更清楚
link |
39:19.000
認識 update 跟 APOC 的差別
link |
39:21.000
這邊就舉一個例子
link |
39:23.000
假設我們有 10000 筆 data
link |
39:25.000
也就是大 N 等於 10000
link |
39:27.000
假設我們 batch 的大小是這 10
link |
39:29.000
也就是大 B 等於 10
link |
39:31.000
接下來問你
link |
39:33.000
我們在一個 APOC 中
link |
39:35.000
update 了幾次參數呢
link |
39:37.000
那你就算一下
link |
39:39.000
這個大 N 個 example
link |
39:41.000
10000 筆 example
link |
39:43.000
總共形成了幾個 batch
link |
39:45.000
總共形成了 10000 除以 10
link |
39:47.000
也就是 1000 個 batch
link |
39:49.000
所以在一個 APOC 裡面
link |
39:51.000
其實已經更新了參數
link |
39:53.000
1000 次
link |
39:55.000
所以一個 APOC 並不是更新參數一次
link |
39:57.000
在這個例子裡面
link |
39:59.000
一個 APOC 已經更新了參數
link |
40:01.000
1000 次了
link |
40:03.000
第二個例子
link |
40:05.000
假設有 1000 個資料
link |
40:07.000
batch size 是 100
link |
40:09.000
那其實 batch size 的大小
link |
40:11.000
也是你自己決定的
link |
40:13.000
所以這邊我們又多了一個
link |
40:15.000
hyperparameter
link |
40:17.000
所謂 hyperparameter 剛才講過
link |
40:19.000
就是你自己決定的東西
link |
40:21.000
人手設的東西
link |
40:23.000
不是機器自己找出來的
link |
40:25.000
叫做 hyperparameter
link |
40:27.000
我們今天已經聽到了
link |
40:29.000
Legendary 是個 hyperparameter
link |
40:31.000
batch size
link |
40:33.000
也是一個 hyperparameter
link |
40:35.000
1000 個 example
link |
40:37.000
batch size 是 100
link |
40:39.000
那一個 APOC 總共
link |
40:41.000
更新幾次參數呢 是 10 次
link |
40:43.000
所以有人跟你說
link |
40:45.000
我做了一個 APOC 的訓練
link |
40:47.000
那你其實不知道他更新了幾次參數
link |
40:49.000
有可能 1000 次
link |
40:51.000
也有可能 10 次
link |
40:53.000
取決於他的 batch size 有多大
link |
40:55.000
link |
40:57.000
那我們其實
link |
40:59.000
還可以對模型
link |
41:01.000
做更多的變形
link |
41:03.000
剛才有同學問到說
link |
41:05.000
這個 hard sigmoid
link |
41:07.000
不好嗎
link |
41:09.000
為什麼我們一定要
link |
41:11.000
把它換成
link |
41:13.000
soft sigmoid
link |
41:15.000
你確實可以不一定要
link |
41:17.000
換成 soft sigmoid
link |
41:19.000
有其他的做法
link |
41:21.000
舉例來說 這個 hard sigmoid
link |
41:23.000
我剛才說
link |
41:25.000
還是有點難寫出來
link |
41:27.000
其實也沒有那麼難寫出來
link |
41:29.000
他可以看作是兩個
link |
41:31.000
rectified linear unit 的
link |
41:33.000
加總
link |
41:35.000
所謂 rectified linear unit
link |
41:37.000
他就是長這個樣子
link |
41:39.000
就是他有一個水平的線
link |
41:41.000
走到某個地方
link |
41:43.000
有一個轉折的點
link |
41:45.000
然後變成一個斜坡
link |
41:47.000
那這種 function 他的式子
link |
41:49.000
寫成 c 乘上
link |
41:51.000
b 加 w x1
link |
41:53.000
這個 max 0 b 加 w x1 的意思就是
link |
41:55.000
看 0 跟 b 加 w x1
link |
41:57.000
誰比較大
link |
41:59.000
比較大的那個就會被當作輸出
link |
42:01.000
所以如果 b 加 w x1 小於 0
link |
42:03.000
那輸出就是 0
link |
42:05.000
如果 b 加 w x1 大於 0
link |
42:07.000
輸出就是 b 加 w x1
link |
42:09.000
總之這一條線
link |
42:11.000
可以寫成 c max 0
link |
42:13.000
b 加 w x1
link |
42:15.000
那你調不同的 w
link |
42:17.000
不同的 b 不同的 c
link |
42:19.000
你就可以改變這條線的斜率
link |
42:21.000
那這種線
link |
42:23.000
在機器學習裡面
link |
42:25.000
我們叫做 rectified linear unit
link |
42:27.000
他的縮寫叫做 ReLU
link |
42:29.000
名字唸起來蠻有趣的
link |
42:31.000
他真的就唸 ReLU
link |
42:33.000
那你把兩個 ReLU 疊起來
link |
42:35.000
就可以變成
link |
42:37.000
hard sigmoid
link |
42:39.000
對不對
link |
42:41.000
我們把這樣子的一個 ReLU
link |
42:43.000
疊這樣子的一個 ReLU
link |
42:45.000
把他們加起來
link |
42:47.000
就變成 hard sigmoid
link |
42:49.000
所以我們能不能用 ReLU 呢
link |
42:51.000
可以
link |
42:53.000
所以如果我們不要用 sigmoid
link |
42:55.000
你想用 ReLU 的話
link |
42:57.000
你就把 sigmoid 的地方換成 max
link |
42:59.000
括號 0
link |
43:01.000
pi 加 summation over w i j x i
link |
43:03.000
那本來這邊只有
link |
43:05.000
i 個 sigmoid 但我想說
link |
43:07.000
你要兩個 ReLU 才能夠合成一個
link |
43:09.000
hard sigmoid 嘛
link |
43:11.000
所以這邊有 i 個 sigmoid
link |
43:13.000
那如果 ReLU 要做到一樣的事情
link |
43:15.000
就要兩倍的 ReLU
link |
43:17.000
因為兩個 ReLU 合起來才是一個
link |
43:19.000
hard sigmoid 嘛
link |
43:21.000
所以這邊要兩倍的 ReLU
link |
43:23.000
最後把 sigmoid 換成 ReLU
link |
43:25.000
這邊就是把一個式子換了
link |
43:27.000
因為要表示一個
link |
43:29.000
這個 hard 的 sigmoid
link |
43:31.000
表示那個藍色的 function 不是只有一種做法
link |
43:33.000
你完全可以用其他的做法
link |
43:35.000
那這個 sigmoid 或是 ReLU
link |
43:37.000
他們在機器學習裡面
link |
43:39.000
我們就叫他
link |
43:41.000
activation function
link |
43:43.000
他們統稱為 activation function
link |
43:45.000
當然還有其他常見的
link |
43:47.000
還有其他的 activation function
link |
43:49.000
但 sigmoid 跟 ReLU 應該是今天
link |
43:51.000
最常見的 activation function
link |
43:53.000
那哪一種
link |
43:55.000
比較好呢
link |
43:57.000
這個我們下次再講
link |
43:59.000
哪一種比較好呢
link |
44:01.000
我接下來的實驗都選擇
link |
44:03.000
用了 ReLU 顯然 ReLU 比較好
link |
44:05.000
至於它為什麼比較好
link |
44:07.000
那就是下週的事情了
link |
44:09.000
接下來就真的做了這個實驗
link |
44:11.000
這個都是真實的數據
link |
44:13.000
真的做了這個實驗
link |
44:15.000
如果是 linear 的 model
link |
44:17.000
我們現在考慮 56 天
link |
44:19.000
訓練資料上面的 loss
link |
44:21.000
是 0.32k
link |
44:23.000
沒看過的資料 2021 年的資料是 0.46k
link |
44:25.000
如果用 10 個 ReLU
link |
44:27.000
好像沒有進步太多
link |
44:29.000
這邊
link |
44:31.000
跟用 linear 是差不多的
link |
44:33.000
所以看起來 10 個 ReLU 不太夠
link |
44:35.000
100 個 ReLU
link |
44:37.000
就有顯著的差別了
link |
44:39.000
100 個 ReLU 在訓練資料上的 loss
link |
44:41.000
就可以從 0.32k
link |
44:43.000
降到 0.28k
link |
44:45.000
100 個 ReLU 我們就可以製造
link |
44:47.000
比較複雜的
link |
44:49.000
曲線 本來 linear
link |
44:51.000
就是一直線 但是 100 個 ReLU
link |
44:53.000
我們就可以產生 100 個
link |
44:55.000
有 100 個折線的 piecewise linear function
link |
44:57.000
在測試資料上
link |
44:59.000
也好了一些
link |
45:01.000
接下來換 1000 個 ReLU
link |
45:03.000
1000 個 ReLU 在訓練資料上
link |
45:05.000
loss 更低了一些
link |
45:07.000
但是在沒看過的資料上
link |
45:09.000
看起來也沒有太大的進步
link |
45:11.000
link |
45:13.000
接下來還可以做什麼呢
link |
45:15.000
我們還可以繼續改
link |
45:17.000
我們的模型
link |
45:19.000
舉例來說
link |
45:21.000
剛才我們說從 x 到 a 做的事情
link |
45:23.000
是什麼 是把 x
link |
45:25.000
乘上 w 加 b
link |
45:27.000
再通過 sigmoid function
link |
45:29.000
不過我們現在知道說不一定要通過 sigmoid function
link |
45:31.000
通過 ReLU 也可以
link |
45:33.000
然後得到 a
link |
45:35.000
同樣的事情
link |
45:37.000
再反覆的多做幾次
link |
45:39.000
剛才我們把 w
link |
45:41.000
x 乘上 w 加 b
link |
45:43.000
通過 sigmoid function
link |
45:45.000
得到 a 我們可以把 a
link |
45:47.000
再乘上另外一個 w'
link |
45:49.000
再加上另外一個 b'
link |
45:51.000
再通過 sigmoid 或 ReLU function
link |
45:53.000
得到 a'
link |
45:55.000
所以我們可以把 x
link |
45:57.000
做這一連串的運算產生 a
link |
45:59.000
接下來把 a 做這一連串的運算
link |
46:01.000
產生 a'
link |
46:03.000
我們可以反覆的多做幾次
link |
46:05.000
要做幾次
link |
46:07.000
這個又是另外一個
link |
46:09.000
Hyperparameter
link |
46:11.000
這是另外一個你要自己決定的事情
link |
46:13.000
你要做兩次嗎 三次嗎 四次嗎
link |
46:15.000
一百次嗎
link |
46:17.000
這個你自己決定
link |
46:19.000
不過這邊的 w 跟這邊的 w'
link |
46:21.000
他們不是同一個參數
link |
46:23.000
這個 b 跟這邊的 b' 他們不是同一個參數
link |
46:25.000
我們是增加了更多的
link |
46:27.000
未知的參數
link |
46:29.000
接下來就真的做了實驗
link |
46:31.000
我們就是
link |
46:33.000
每次都加一百個 ReLU
link |
46:35.000
那我們就是 input feature
link |
46:37.000
就是五十六天前的資料
link |
46:39.000
如果是
link |
46:41.000
只做一次
link |
46:43.000
只做一次
link |
46:45.000
乘上 w 再加 b 再通過 ReLU
link |
46:47.000
或 sigmoid 這件事只做一次的話
link |
46:49.000
這是我們剛才看到的結果
link |
46:51.000
兩次
link |
46:53.000
這個 loss 降低很多
link |
46:55.000
0.28k 降到 0.18k
link |
46:57.000
沒看過的資料上
link |
46:59.000
也好了一些
link |
47:01.000
三乘又有進步
link |
47:03.000
從 0.18k 降到
link |
47:05.000
0.14k
link |
47:07.000
所以從一乘
link |
47:09.000
就是乘一次 w
link |
47:11.000
到通過一次 ReLU
link |
47:13.000
到通過三次 ReLU
link |
47:15.000
我們可以從 0.28k
link |
47:17.000
到 0.14k
link |
47:19.000
在訓練資料上
link |
47:21.000
在沒看過的資料上 從 0.43k
link |
47:23.000
降到了 0.38k
link |
47:25.000
看起來也是有一點
link |
47:27.000
進步的
link |
47:29.000
這個是
link |
47:31.000
真實的實驗結果
link |
47:33.000
我們來看一下
link |
47:35.000
今天有通過三次 ReLU 的時候
link |
47:37.000
做出來的結果怎麼樣
link |
47:39.000
橫軸 剛才已經看過了
link |
47:41.000
時間 就是日子
link |
47:43.000
縱軸 是觀看的人次
link |
47:45.000
是千人
link |
47:47.000
紅色的線 代表的是真實的數據
link |
47:49.000
藍色的線
link |
47:51.000
是預測出來的數據
link |
47:53.000
你會發現說
link |
47:55.000
在這種低點的地方
link |
47:57.000
你看紅色的數據是每隔一段時間
link |
47:59.000
就會有兩天的低點
link |
48:01.000
在低點的地方
link |
48:03.000
機器的預測
link |
48:05.000
還算是蠻準確的
link |
48:07.000
它都準確抓到說這兩天就是低的
link |
48:09.000
這兩天都是低的
link |
48:11.000
這兩天就是低的
link |
48:13.000
那這邊有一個神奇的事情
link |
48:15.000
這個機器
link |
48:17.000
高估了真實的觀看人次
link |
48:19.000
尤其是在這一天
link |
48:21.000
這一天有一個很明顯的低谷
link |
48:23.000
但是機器
link |
48:25.000
沒有預測到這一天有明顯的低谷
link |
48:27.000
它是晚一天才
link |
48:29.000
預測出低谷
link |
48:31.000
那你知道是怎麼回事嗎
link |
48:33.000
link |
48:35.000
link |
48:37.000
論年 不是
link |
48:39.000
因為還沒有到2月28號
link |
48:41.000
link |
48:43.000
大家有什麼想法嗎
link |
48:45.000
link |
48:47.000
link |
48:49.000
過年啊
link |
48:51.000
這邊最低點是什麼
link |
48:53.000
這邊最低點就是除夕啦
link |
48:55.000
誰除夕還學機器學習對不對
link |
48:57.000
所以
link |
48:59.000
對機器來說你不能怪它
link |
49:01.000
它根本不知道除夕是什麼
link |
49:03.000
它只知道看前56天的值來預測
link |
49:05.000
下一天會發生什麼事
link |
49:07.000
所以它不知道那一天是除夕
link |
49:09.000
所以你不能怪它
link |
49:11.000
預測的不準
link |
49:13.000
這一天就是除夕
link |
49:15.000
好 那到目前為止
link |
49:17.000
我們講了很多各式各樣的模型
link |
49:19.000
現在還缺了一個東西
link |
49:21.000
你知道缺什麼東西嗎
link |
49:23.000
缺一個好名字
link |
49:25.000
你知道這個外表啊
link |
49:27.000
是很重要的
link |
49:29.000
一個死臭酸宅穿上西裝以後
link |
49:31.000
就潮了起來
link |
49:33.000
或者是知習犯履的
link |
49:35.000
說他是漢左將軍
link |
49:37.000
宜臣廷侯中山晉王之後
link |
49:39.000
也就潮了起來
link |
49:41.000
對不對
link |
49:43.000
所以我們的模型
link |
49:45.000
也需要一個好名字
link |
49:47.000
它們叫做Neuron
link |
49:49.000
我們這邊有很多的Neuron
link |
49:51.000
很多的Neuron叫什麼
link |
49:53.000
很多的Neuron就叫做
link |
49:55.000
Neuroneuro
link |
49:57.000
Neuron是什麼
link |
49:59.000
Neuron就是神經元
link |
50:01.000
人腦中就是有很多神經元
link |
50:03.000
很多神經元串起來
link |
50:05.000
就是一個神經網路
link |
50:07.000
跟你的腦是一樣的
link |
50:09.000
接下來你就可以到處騙麻瓜
link |
50:11.000
說看到沒有
link |
50:13.000
這個模型就是在模擬人腦
link |
50:15.000
普通智慧
link |
50:17.000
然後麻瓜就會嚇得把錢掏出來
link |
50:21.000
但是這個把戲
link |
50:23.000
在80、90年代的時候
link |
50:25.000
已經玩過了
link |
50:27.000
Neuroneuro
link |
50:29.000
不是什麼新的技術
link |
50:31.000
80、90年代就已經用過了
link |
50:33.000
當時已經把這個
link |
50:35.000
技術的名字搞到臭掉了
link |
50:37.000
Neuroneuro
link |
50:39.000
因為之前吹捧的太過浮誇
link |
50:41.000
所以後來
link |
50:43.000
Neuroneuro這個名字都非常感冒
link |
50:45.000
他就像是一個髒話一樣
link |
50:47.000
寫在paper上面
link |
50:49.000
就注定會害你的paper被拒絕
link |
50:51.000
所以後來
link |
50:53.000
為了要重振Neuroneuro的雄風
link |
50:55.000
所以怎麼辦呢
link |
50:57.000
需要新的名字
link |
50:59.000
怎麼樣新的名字呢
link |
51:01.000
這邊有很多的Neuron
link |
51:03.000
每一排Neuron我們就叫他
link |
51:05.000
一個Layer
link |
51:07.000
他們叫Hidden Layer
link |
51:09.000
有很多的Hidden Layer就叫做
link |
51:11.000
Deep
link |
51:13.000
這整套技術就叫做Deep Learning
link |
51:15.000
我們就把Deep Learning
link |
51:17.000
講完了
link |
51:19.000
就是這麼回事
link |
51:21.000
就是這樣來的
link |
51:23.000
所以人們就開始
link |
51:25.000
把類神經網路越疊越多
link |
51:27.000
越疊越深
link |
51:29.000
12年的時候有一個NXNet
link |
51:31.000
他有八成
link |
51:33.000
他的錯誤率是16.4%
link |
51:35.000
兩年之後
link |
51:37.000
VGG19成
link |
51:39.000
他的錯誤率在影像辨識上
link |
51:41.000
進步到7.3%
link |
51:43.000
這個都是在影像辨識上
link |
51:45.000
一個基準的資料庫
link |
51:47.000
上面的結果
link |
51:49.000
後來GoogleNet
link |
51:51.000
有錯誤率降到6.7%
link |
51:53.000
有22成
link |
51:55.000
但這些都不算是什麼
link |
51:57.000
ResidualNet
link |
51:59.000
有152成
link |
52:01.000
他比101還要高
link |
52:05.000
但是這個ResidualNet
link |
52:07.000
其實要訓練這麼深的Network
link |
52:09.000
是有訣竅的
link |
52:11.000
這個我們之後再講
link |
52:13.000
但是講到這邊
link |
52:15.000
如果你仔細思考一下
link |
52:17.000
我們一路的講法的話
link |
52:19.000
你有沒有發現一個
link |
52:21.000
奇妙的違和的地方
link |
52:23.000
不知道大家有沒有發現
link |
52:25.000
什麼樣違和的地方呢
link |
52:27.000
我們一開始說
link |
52:29.000
我們想要用ReLU或者是Sigmoid
link |
52:31.000
去逼近一個複雜的function
link |
52:33.000
實際上
link |
52:35.000
我們只要夠多的ReLU
link |
52:37.000
夠多的Sigmoid
link |
52:39.000
就可以逼近任何的
link |
52:41.000
連續的function
link |
52:43.000
我們只要夠多的Sigmoid
link |
52:45.000
就可以製造夠複雜的線段
link |
52:47.000
就可以逼近任何的continuous function
link |
52:49.000
所以我們只要一排ReLU
link |
52:51.000
一排Sigmoid夠多就足夠了
link |
52:53.000
那深的意義
link |
52:55.000
到底何在呢
link |
52:57.000
把ReLU Sigmoid反覆用
link |
52:59.000
到底有什麼好處呢
link |
53:01.000
為什麼不直接排一排呢
link |
53:03.000
不可以表示任何function
link |
53:05.000
所以把它反覆用
link |
53:07.000
沒什麼道理啊
link |
53:09.000
所以有人就說把Deep Learning
link |
53:11.000
把ReLU Sigmoid反覆用
link |
53:13.000
不過是個噱頭
link |
53:15.000
你之所以喜歡Deep Learning
link |
53:17.000
只是因為Deep這個名字好聽
link |
53:19.000
ReLU Sigmoid排成一排
link |
53:21.000
你只可以製造一個肥胖的Neural
link |
53:23.000
Fat Neural Neural
link |
53:25.000
跟Deep Neural Neural聽起來
link |
53:27.000
量級就不太一樣
link |
53:29.000
Deep聽起來就比較厲害
link |
53:31.000
到底Deep的理由
link |
53:33.000
為什麼我們不把Neural變胖
link |
53:35.000
只把Neural變深呢
link |
53:37.000
這個是我們日後
link |
53:39.000
要再講的話題
link |
53:41.000
那有人就說
link |
53:43.000
那怎麼不變得更深呢
link |
53:45.000
剛才只做到三層
link |
53:47.000
應該要做得更深嘛
link |
53:49.000
現在Neural都是疊幾百層啊
link |
53:51.000
沒幾百層都不好意思說
link |
53:53.000
你在做Deep Learning
link |
53:55.000
所以要做更深
link |
53:57.000
所以確實做得更深
link |
53:59.000
它的Loss是0.1K
link |
54:01.000
在沒有看過
link |
54:03.000
2021年的資料上
link |
54:05.000
是如何呢
link |
54:07.000
是0.44K
link |
54:09.000
慘掉了 怎麼會這樣子呢
link |
54:11.000
在訓練資料上
link |
54:13.000
三層比四層差
link |
54:15.000
四層比三層好
link |
54:17.000
但是在沒看過的資料上
link |
54:19.000
四層比較差 三層比較好
link |
54:21.000
在有看過的資料上
link |
54:23.000
在訓練資料上
link |
54:25.000
跟沒看過的資料上
link |
54:27.000
是不一致的
link |
54:29.000
這種訓練資料
link |
54:31.000
跟沒看過的資料
link |
54:33.000
它的結果是不一致的狀況啊
link |
54:35.000
這個狀況叫做
link |
54:37.000
Overfitting
link |
54:39.000
常常聽到有人說機器學習會發生Overfitting的問題
link |
54:41.000
指的就是在訓練資料上
link |
54:43.000
有變好 但是在沒看過的資料上
link |
54:45.000
沒有變好
link |
54:47.000
這件事情
link |
54:49.000
但是做到目前為止
link |
54:51.000
我們都還沒有真的
link |
54:53.000
發揮這個模型的力量
link |
54:55.000
你知道我們要發揮這個模型的力量
link |
54:57.000
2021年的資料
link |
54:59.000
到2月14號之前的資料
link |
55:01.000
我們也都已經手上有了啊
link |
55:03.000
所以我們要真正做的事情
link |
55:05.000
是什麼 我們要做的事情
link |
55:07.000
就是預測未知的資料
link |
55:09.000
就是預測未知的資料
link |
55:11.000
但是如果我們要預測未知的資料
link |
55:13.000
我們應該選三層的Network
link |
55:15.000
還是四層的Network呢
link |
55:17.000
舉例來說 今天是2月26號
link |
55:19.000
今天的觀看人數
link |
55:21.000
我們還不知道
link |
55:23.000
如果我們要用一個Neural Network
link |
55:25.000
用我們已經訓練出來的Neural Network
link |
55:27.000
去預測今天的觀看人數
link |
55:29.000
你覺得應該要選
link |
55:31.000
三層的還是選
link |
55:33.000
四層的呢
link |
55:35.000
這個我們來問一下大家的意見吧
link |
55:37.000
你覺得應該選三層的同學
link |
55:39.000
舉手一下
link |
55:41.000
手放下
link |
55:43.000
應該選四層的同學舉手一下
link |
55:45.000
好 比較少
link |
55:47.000
至於怎麼選模型
link |
55:49.000
這個是下週會講的問題
link |
55:51.000
但是大家都非常有Sense
link |
55:53.000
知道我們要選三層的
link |
55:55.000
多數人都決定要選三層的
link |
55:57.000
你可能會說我怎麼不選四層呢
link |
55:59.000
四層在訓練資料上的結果比較好啊
link |
56:01.000
可是我們並不在意訓練資料的結果啊
link |
56:03.000
我們在意的是
link |
56:05.000
沒有看過的資料
link |
56:07.000
而2月26號
link |
56:09.000
是沒有看過的資料
link |
56:11.000
我們應該選一個在訓練的時候
link |
56:13.000
沒有看過的資料上表現會好的模型
link |
56:15.000
所以我們應該選
link |
56:17.000
三層的Network
link |
56:19.000
你可能以為這門課就到這邊結束了
link |
56:21.000
其實不是
link |
56:23.000
我們真的來預測一下
link |
56:25.000
2月26號應該要有的
link |
56:27.000
觀看次數是多少
link |
56:29.000
但是因為其實YouTube的
link |
56:31.000
統計他沒有那麼即時啦
link |
56:33.000
所以他現在只統計到2月24號
link |
56:35.000
沒關係我們先計算一下
link |
56:37.000
2月25號的
link |
56:39.000
觀看人數是多少
link |
56:41.000
這個三層的Network告訴我說
link |
56:43.000
2月25號這個頻道的
link |
56:45.000
總觀看人次應該是
link |
56:47.000
5250人
link |
56:49.000
那我們先假設2月25號是對的
link |
56:51.000
但實際上我們還不知道2月25號對不對
link |
56:53.000
因為YouTube後台統計的數據
link |
56:55.000
還沒有出來啊
link |
56:57.000
但我們先假設這一天就是對的
link |
56:59.000
然後再給我們的模型去預測
link |
57:01.000
2月26號的數字
link |
57:03.000
得到的結果是
link |
57:05.000
3.96K
link |
57:07.000
有3960次
link |
57:09.000
那個班為什麼這邊特別低
link |
57:11.000
因為模型知道說這個禮拜五觀看的人數
link |
57:13.000
就是比較少啦
link |
57:15.000
所以特別低聽起來也是合理
link |
57:17.000
但是
link |
57:19.000
你覺得這個預測
link |
57:21.000
跟這邊的
link |
57:23.000
0.38K比起來
link |
57:25.000
哪一個會
link |
57:27.000
比較準確呢
link |
57:29.000
你覺得
link |
57:31.000
我們下週來看看2月26號
link |
57:33.000
實際的值
link |
57:35.000
是多少
link |
57:37.000
但是你覺得這個值
link |
57:39.000
他跟真實值的誤差
link |
57:41.000
會小於0.38K的同學
link |
57:43.000
舉手一下
link |
57:45.000
覺得大於0.38K的同學
link |
57:47.000
舉手一下
link |
57:49.000
大家都對我這麼沒有信心
link |
57:51.000
好我們就來看看
link |
57:53.000
這個下一週誤差
link |
57:55.000
會有多少
link |
57:57.000
當然我想應該是不會準啦
link |
57:59.000
這麼多人都覺得誤差會大
link |
58:01.000
你們回去每個人都去點那個影片的話
link |
58:03.000
哇誤差就大了啊
link |
58:05.000
今天講這麼久其實就是騙大家去點影片而已啦
link |
58:09.000
好那今天其實就講了深度學習
link |
58:11.000
那今天講的不是一般的介紹方式
link |
58:13.000
如果想要聽一般的介紹方式
link |
58:15.000
過去的課程影片也是有的
link |
58:17.000
我就把連結附在這邊
link |
58:19.000
然後深度學習的訓練
link |
58:21.000
會用到一個東西叫backpublication
link |
58:23.000
其實他就是比較有效率算gradient的方法
link |
58:25.000
跟我們今天講的東西沒有什麼不同
link |
58:27.000
但如果你真的很想知道backpublication是什麼的話
link |
58:29.000
影片連結也附在這邊
link |
58:31.000
好今天上課就上到這邊
link |
58:33.000
謝謝大家謝謝