[音樂] [音樂]
[音樂] [音樂]
好,大家好,大家好(台語),歡迎回到今天的機器學習基石課程。
我們今天要跟大家講的是 Nonlinear Transformation 非線性的變換,好,那故事是這樣的,上一次我們跟大家講到,
我們交給大家的三個 Linear Models 都可以用在各式 的 Classification
問題上面,包括 binary classification 二元的分類, 或者是 multiclass
多類別的分類問題,但是這些 models 呢, 它的重點就是它是 Linear
的,要給它算一個分數,所以我們用線性的方式算一個分數, 那我們今天要把這兩個
Models 延伸到更複雜的 情形,說用 Linear 的方式來做資料的分類,
好,什麼意思呢?我們先來回顧一下,我們說的 Linear Models 裏面這些
Linear Hypotheses 是什麼意思?如果這個是二元分類的話,我們說視覺上呢,它就像切一條線,我們可以把
東西切開成圈圈的一邊跟叉叉那邊, 那麼數學上來說呢,我們說它裏面的精神就是拿我們的
X OK,這個輸 入的部分去算一個分數,這個分數怎麼算?讓這個
X 跟某個向量 W 這個權重的向量,來做一個累積算的分數,算一个分数之後,再用
一些各種不同的這個輸出的轉換,來做決定的動作。
那我們說這樣的 Models 之前我們說到是很有好處的,好處就是它的 vc dimension
它的複雜度 是受到控制的,那這是我們喜歡的事情要這樣確保我們的
Ein 跟 Eout 不會差太遠, 不過呢,壞處是這樣,因為它既然它的這個複雜度是有受到控制的,
那我們就可能會遇到一些資料,好像我們這邊列出來的這個資料,大家可以看到說 我不管在這個資料下,我想要用哪一條線去切開,
我總會有一些切不開的點,這些切不開的點就代表我不管用 哪一條線,我的 Ein
都會很大,那既然我的 Ein 都會很大的話,可能 我的 Eout 也會很大,因為 Ein
跟 Eout 很接近的話,Eout 也會很 大,這樣的話,我們是不是就一定學不好,
所以我們今天要跟大家講的課題,就是我們怎麼突破 Linear Models
的這個限制,我們 怎麼讓他說今天如果我不是要用線的方式,我用其他的方式也可以做到分類,
或者是其他的學習動作,好,那麼我們要怎麼做呢?我們看到說
我們這邊的資料,我會說它不是線性可分的,也就是說我沒有辦法找到一條線,
很完美的把小圈圈跟小叉叉通通都切開來,但是呢,
我們仔細一看,你會說那我就用圈起來的方式好了,
也就是說我如果用一個圓圈圈的話,看起來我是可以把小圈圈跟小叉叉
分開來的,大家如果這邊注意一下座標的話,會發現我使用的這個
把圈小圈圈跟小叉叉分開的這個園,它的方程式是這樣,它是一個 圓心在圓點的園,然後它的半徑是根號0.6,
也就是說怎麼樣呢?也就是說如果我考慮一個 hypotheses,
這個 hypotheses 是這樣,好,所以我用每個點到跟圓心的距離的平方
這是 X₁²加 X₂²,好,它的座標到圓心的平方,
然後呢,我把它跟什麼比,我把它跟0.6比,看看它是比0.6小,還是比0.6大,比0- .6小,
我就說是小圈圈,比0.6大,我就說是小叉叉,這樣的話,這一個 hypotheses,
是可以把小圈圈跟小叉叉分開來的,也就是說好,我們的這個資料雖然不是
線性可分,但是我們可以說它是圓圈圈可分,好,也就是說我們今天如果用一个圓圈圈的方式,
我就可以把小圈圈跟小叉叉分開來了,那這樣是不是我們可以重新設計
好,我們本來已經會了這些線性的方法,但是我們可以重新設計說,好,我要怎麼樣用圓- 圈圈來做
PLA? 我要怎麼樣用圓圈圈來做 Regression?我要怎麼樣用圓圈圈來做 Circular Regression?是不是我們把
前面這個幾個禮拜上的通通重複一次,現在把線性部分改成圓圈圈部分,
好,你可以說這太困難了吧,我還要我還要每個演算法重新再看一次,然後呢,他開始說那邊要
把線改成圓圈圈等等等等,那我們接下來要交給它的方式, 就是怎麼系統化的設計這些演算法?
好,那我們來看看,我們要怎麼樣做到可以用,例如說圓圈圈的方式
來做資料的分類呢?我們先把我們剛才說可以分開來的那個圓圈圈的方程式列出來,
我們注意到這個方程式裏面有幾個特別的地方,在這些數字,好,比如說我有0.6,這個數字
就是代表圓的這個半徑的平方,然後呢,我把它跟點到圓心的這個距離的平方做相減,
所以有兩個這個負1的系數,這些系數代表了我們的 hypotheses
在做什麼樣的事情?因為 hypotheses 是根據這個系數來決定說它到底 是一個根號0.6大小的園,還是根號0.8大小的園,
好,然後另外一方面呢,這些系數會配合上我的輸入的部分,也就是我的 X
的部分, 那我這邊X做的事情,是做了X₁² X₂² 的這些事情,跟我的
hypotheses 配合起來, 最後做一個決定,說到底這個點是小圈圈還是小叉叉,
那我們接下來要做的事情,就是來給我的這些 hypotheses 有關的
系數一個名稱,我可以把0.6叫做 Wo,
我可以把 -1 叫做 W₁ 我可以把這個 -1 叫做 W₂,
好,這是為了跟我們之前跟我們在這個線性的 hypotheses
裏面,我們用這些 W 來做一個對應, 然後呢,有了這些之後,那
W 配什麼好,W 我們以前 Wo 要配 Xo,W₁ 要配 X₁, W₂
要配 X₂, 不過呢,我們先來看看這邊 W₁ 配的不是 X₁了。它是 X₁²,
那為了讓我們更清楚起見,我把這個 X₁² 取一個名字叫做
Z₁, 我我先不用X,我用Z來代表,那麼呢,X₂²
我取一個名字叫做 Z₂, 那 Wo 怎麼辦?大家可能也想到了,我就給它一個名字叫做
Zo, 然後這個 Z Zo 跟我們之前的
Xo 是一樣,我們1都假設它就是1,
好,所以如果我這樣補上去的話,大家會發現我的式子是什麼?就是 Wo
乘以 Zo ,W₁ 乘以 Z₁, W₂ 乘以 Z₂
,跟我們之前 在線性的世界裏面用的式子很接近的,只是把X換成Z而已,好,那為了不要讓
大家跟原來的线座搞混了,所以呢,我們在這個 Wo 的 上面,我們加上了一個小蚯蚓,
W₁ 的上面我們加上一個小蚯蚓,W₂ 的上面我們加上一個小蚯蚓,來告訴大
家說我們不是原來在 X 那個世界裏的W ,我們現在是 Z
長得彎彎曲曲的,所以大家看到的 Z 就是想到說,所以在那個世界裏的 W
我把它加上小蚯蚓的動作, 好,所以這個加上去以後,會變成這個樣子,
好,就是說我只是把每個東西取個名字而已,今天我也有 Wo
加上小蚯蚓的 Zo,W₁ 加上小蚯蚓的還有 Z₁,還有 W₂
加上小蚯蚓的 Z₂, 那這樣的話,看到這個一連串的有index的這些東西相乘加起來,
我們就知道我們的好朋友,向量又跑出來了,我們可以很簡潔的用 W
這個向量跟 Z 這個向量的累積,實際上是 W
加上 小蚯蚓的這個向量,跟 Z 這個向量累積來表示我的
hypotheses, 到底在做些什麼事情?好,所以如果是這樣的話,我就會
發現什麼?我做的事情其實很像是把每一個 X
空間裏面原來的點都轉化到一個 Z 空間裏面去,什麼意思呢?好,例如說我這邊有個點
X₁,好,然後怎麼轉換?我剛才說我如果變成 Z 空間裏面的話,Z₁ 就要是
X₁²,Z₂ 就要是 X₂²,所以它轉過來之後,
會變成這裡的一個點,同樣的呢,好,我這邊如果有一個點,這個 X₂,這個向量
的話,那它的第一個 component 取平方,第二個 component
取T方,對應過來會是這邊的這個點, 也就是說我把每一個點都取平方,
都取平方,然後畫到另外一個世界來,所以左邊的我們叫做 X
世界, 右邊的我們叫做 Z 世界,好,我如果把這樣的描成做完
以後,那上面那個式子告訴我們什麼?上面那個式子告訴我們,如果我在 Z
世界裏面 找到一條線,這條線的方程式跟 W 這個小蚯蚓的
W 有關, 好,這個小蚯蚓的 W 就會把我的小圈圈跟小叉叉分開了,
這條W 跟這條直線的 W 對應到我原來的 X 世界裏面,就是那個大圈圈。
也就是說如果我今天原來 的資料是可以用大圈圈來分開的話,
那麼我把它對應過去,z世界裏面,在z世界 我就可以怎麼做,我可以用一條直線來分開它。
這是上面這個推導,上面這個方程式告訴我們的事情。
那怎麼樣呢,所以我們就說剛才 我們做的那個過程,那個把x世界裏面的每一個點
換成z世界裏面的每一個點的過程我們把它稱做一個feature transform。
就是這個特徵的轉換,特徵是什麼,特徵就是我們原來的輸入x1跟x2,
轉換成什麼,轉換成z1跟z2,在這裡我們用了轉換 的式子,z1是x1的平方,z2是x2的平方。
所以經過這一番轉換我們就可以在Z世界裏面用 線性的事情來做操作,至少這是上面這個式子
告訴我們的,所以如果我的原來的資料是用大圈圈可以分開的話
經過了這一番轉換我的新的資料就可以用線性的來分開。
好,但是我要問大家了,那這個大圈圈 可以分開代表在新的世界裏面可以用線性分開,
反過來也是對的嗎?如果我知道我的新的資料可以用一條線來分開,
一定代表我原來的資料可以用大圈圈來分開嗎?
那要回到這個問題,我們就看什麼叫做我們新的資料
可以用線性分開,我們新的資料長的什麼樣子,我們新的資料有z0,z1,z2
它是怎麼來的,它是從x1,x2當然還有x0這樣變化過來的。
由我們剛才那個φ這個特徵的轉換來做的事情。
然後呢,在新的世界裏我的每個hypotheses長什麼樣子呢?
我的每個hypotheses是從w,然後那個有小蚯蚓的w乘上z 也就是如果我完整的寫下來就是它是由有小蚯蚓的w
乘上φ轉換過的x。
那又或者什麼,我們把它完整的寫開來,它就是長這個樣子,它說你有一個w0的
部分,有一個w1的部分,然後這個w1不是乘上x1而是乘上x1的平方
也就是z1,還有一個w2的部分,也是乘上x2的平方。
我們剛才討論的情形是什麼,我們剛才討論的情形是w0,w1,w2,我應該
要講這個有小蚯蚓的,但是每次跟大家講有小蚯蚓的w是太麻煩了 所以我寫的時候寫有小蚯蚓的,但是講述的時候我就直接講w了。
我們剛才的情形是什麼,w0,w1,w2是0.6、-1、-1,
那對應到的是一個大大的圓,然后这个 大大的圓會說裏面是小圈圈外面是小叉叉。
對不對,裏面也就是說如果我跟圓點的距離比0.6 根號0.6來的小的話就是圈圈,然後如果比根號0.6
來的大的話就是叉叉,這是我們剛才看到的情形。
那我問大家啦,如果我今天整個反過來呢,如果我今天用的數字
是-0.6,w0是-0.6然後w1,w2各是+1呢?
你會看到它也對應到一個圓圈圈,對不對我怎麼知道它對應到一個圓圈圈,因為我就看那個切- 換的地方在哪裡。
切換的地方就是sign等於零,而我要取正負號,当然取正負號不是正的不是負的是零的那- 個地方。
那那個地方對應到一個圓的方程式,所以我知道 這個我把那個零的地方用黑線畫起來的話,我會得到一個大大的圓。
然後呢,這些系數告訴我的是什麼,告訴我是說大大圓到底裏面是小圈圈還是外面是小圈圈。
前一種情形是裏面是小圈圈,現在這種相反的情形則是外面是小圈圈。
所以這兩種情形對應到都是大大的圓。
那我問大家啦,如果今天是0.6
但是它對應到的事情是-1,-2,也就是我的w1 是-1,w2是-2的時候,請問發生了什麼事?
你說所對應的方程式是什麼,所對應的方程式是 0.6減掉
x1的平方減掉x2的平方,但是這邊有個兩倍,
等於零,試問大家這是什麼
你說這我知道這是一個橢圓的方程式嘛,对,沒錯它是一個橢圓
的方程式,注意到它现在x1跟x2兩個軸的長度就不一樣,跟剛才的正圓不一樣。
所以我們對應到就會是什麼,就會是橢圓的邊界。
所以剛才兩個是正圓的邊界,現在是橢圓的邊界, 那還沒完,如果我今天一個是
w1是-1,然後w2是+2呢,一個負一個正呢,
我問你這是哪一個東西的方程式,你說有有有我高中有學過,這是圓錐曲線裏面雙
曲線的方程式,所以你對應到的分類方式就是使用一個雙曲線
來做分類,所以在z空間裏面的每一 條線不見得都對應到正圓,在x空間裏面不見得都對應到正圓
它可能是對應到正圓,可能對應到橢圓,可能對應到雙曲線。
或者我們來問大家看看,如果今天0.6,+1,+2發生了什麼事?
你說那今天看看到底那個區分的等於零的地方在哪。
你可能會跑回來說老師老師我找不到那個等於零的地方,我說為什麼
因為你有一個0.6是正的,然後加上正的x1的平方,加上正的
x2的平方,你說怎麼加都是正的,我初算一定是圈圈,對呀初算一定是圈圈。
所以在那裡的某一條線可能會對應到你 在原來的空間裏不管怎麼做都做圈圈,這也是有可能的。
所以,z空間裏的每一條線對回到x空間裏面來可能是各式各樣,不同的情形。
那我們這邊講的就是什麼,所以我們把這些線對回來之後
我們就知道在x空間裏面我們可以用哪些
這個不同的曲線來做分類的動作,z空間裏面有著無限多劃線,
這無限多劃線每一條對應回x空間裏面是一個不一定一樣的hypotheses,有可能是- 正圓有可能是橢圓
有可能是雙曲線也有可能是常數等等。
大家要注意的事情是這樣,我們這邊雖然說會對應回某個二次曲線,但是這個二
次曲線是有限制的,舉例來說如果今天是正圓的話,它的圓心一定要過圓點。
大家從上面那個式確認一下,你有沒有辦法表示圓心不是在圓點上面的正圓。
你說,沒有辦法,圓心如果不是在圓點上,我一定要找一個平移的一次項,看起來這個平移的
一次項並沒有在這裡發生,所以我們只能對應到
特殊的二次曲線,不是所有你在這個原來x平面上可以畫出來的二次曲線。
你說老師老師我想要做所有可能的二次曲線,請問要怎麼樣做啊?
好,你如果要做所有可能的二次曲線,你就要把要表示你的二次曲線需要的所有的項
都用出來,所以你可能需要什麼項,你可能需要所有的二次項
你可能需要所有的一次項,例如說我剛才說你今天是正圓,你要做平移你需要一次項啊。
當然還有這個常數項,這個常數項我們剛才就已經包含進來了。
好,那如果我們做這件事的話,你就會發現什麼,你就會發 在z空間裏面的每一條線或者我們說每一個perceptron
對應到的就是在x空間裏面某一個 二次曲線的分類方式,也許是正圓,也許是橢圓,也許是雙曲線
也許是正的,也許是斜的,我們剛才都是有正的橢圓,正的
雙曲線,也許是斜的,也許是退化的二次曲線,例如說拋物線,或者是其他的。
好,所以這是我們可以考慮來做分類的方式。
什麼意思呢,我們現在考慮的這個二次 的hypotheses quadratic
,二次的hypotheses就會長這個樣子 我說我先把我的x然後透過φ,我們這邊把它特別叫做φ2代表二次的
我透過這個φ把它轉換到z的空間裏,到z的空間裏面以後
用某一個線性的分類器,我現在用h但是一樣在上面加上一個小蚯蚓也就是它對應到我
的某個w上面加上的小蚯蚓,那這樣是我所有在x裏面可能做的
分類動作,我使用的hypotheses set,所以呢,例如說
如果今天我要用的這個quadratic curve,例如我要用二次曲線是
這樣的方程式,大家可以看到說這樣的方程式是一個斜的橢圓,大家高中的圓錐曲線應該有教。
這是一個斜的橢圓,那如果要用這個斜的橢圓來做分類的動作的話 我們就看看我可不可以用我的z空間裏面的perceptron做到。
我們說,應該可以啊,為什麼呢,我們來看我们需要什麼樣的系數。
我們需要搭配什麼樣的常數項呢,常數項的話我就看這個式子裏面,這個式子裏面
第一項我有一個常數項,是9的平方乘以2所以這是18.
然後呢,第二項我有一個常數項是16,然後
第三項這個右邊這個常數項我需要把這個1減下來所以我會得到
33,好,然后再來呢,我要x1,要搭配什麼
樣的系數呢,x1我在第一項裏面我會有一個-6 然後呢乘上2,也就是-12
然後那我在第二項裏面會有什麼,我在第二項裏面會有一個-8
所以我這邊第二項我會得到-20 的系數來跟誰做搭配,来跟這個x1做搭配。
那我要用什麼項跟x2做搭配呢,一樣,我在這里會有一個-6
乘上2也就是-12的系數 然後我那第二邊會有什麼,我在第二邊會有,我要跟x2做搭配,我會有一個+8
的系數,所以我的第三項這個系數是-4來跟這個x2做搭配。
好,我一路把它寫下來,大家就可以發現我就有一個
這個w的有小蚯蚓的这是w,所以呢這個w它長這個樣子,好33這是它的w0
-20這是它的w1,-4這是它的w2,這樣一路寫下去這個東西
跟我轉換過的z現在我的z在六度空間裏面,而不是像剛才在這個
三度的空間裏面。在六度空間裏面的這個z跟 這個w做搭配之後我就可以得到我想要的
這個橢圓方程式,所以這代表什麼,在z空間裏面的每一個perceptron
可以幫助我們implement,我們叫做實現,可以幫助我們實現某 一個在x空間裏面對應的這個分類方式。
那麼這個如果仔細看的話
直線含不含在這個變換裏面,說包含啊,為什麼,直線的方程式就代表我只需要
前面三項的w,後面几項的我通通不需要,所以二次那邊的w如果都是零,前面那些w的話 我這樣的轉換這樣的quadratic
hypotheses set 就包含我原來的線性的hypotheses
set當作特例 當然常數項,常數的這個分類,永遠說圈圈,或永遠叉叉的也包含在裏面,例如說
我們剛才有舉過例子,在一些特殊的系數之下我們是不管怎麼樣都會輸出圈圈,或不管怎麼樣- 都會輸出叉叉的。
所以我們現在知道了我們怎麼定義一個 二次的hypotheses
set ,所有的二次曲線集合起來的hypotheses set。
那我們下一步要教給大家的就是我們要怎麼樣學到一個好的
二次的hypotheses,那在這之前呢我們先建立大家的二次hypothese-
s熟悉度 所以我們考慮,我們剛才講的這個二次轉換,然後呢我們這邊列了一個式子問大家說
你今天如果要想辦法做出來這個拋物線,這是一個拋物線的式子的話
請問你要用的系數是長什麼樣子,這是個簡單的問題,我相信大家
很快的就可以找出來說答案是二,你只要確定哪一項要對到哪一邊就好了。
那這個告訴我們說什麼,告訴我們說我們真的可以做出任意的在原來的x空間裏面
二次曲線,這樣子給我們很大的彈性來把Ein做的更好,把Ein做的更小。