李宏毅2020機器學(xué)習(xí)筆記

視頻鏈接

b站視頻鏈接

主要授課內(nèi)容

屏幕快照 2020-07-09 18.08.42.png

第一講(P1).Course Introduction

一、機器學(xué)習(xí)的基本概念

1.什么是機器學(xué)習(xí)?

機器學(xué)習(xí)就是自動找函式。例如:
屏幕快照 2020-07-09 14.50.43.png

2.你想找什么樣的函示?

要找的函示不同,機器學(xué)習(xí)的任務(wù)也就不同。例如
兩個選項,返回值只能為pos或neg
多個選項,返回值為Class 1-N的其中一個

3.機器學(xué)習(xí)不只有兩類任務(wù)

很多教材認為機器學(xué)習(xí)可以分為兩大類任務(wù):
Regression:返回一個數(shù)值
Classification:讓機器做選擇題
但是!除此之外還有機器學(xué)習(xí)還有一個十分重要的任務(wù),那就是:
Generation:產(chǎn)生有結(jié)構(gòu)的復(fù)雜的東西(例如文句、圖片)

4.怎樣告訴機器你想找什么樣的函示?

1.Supervised Learning

通過給數(shù)據(jù)添加lable的方式告訴機器你想要的函示,告訴機器你想要的理想的正確的輸出就叫做給數(shù)據(jù)添加lable。提供給機器這些有l(wèi)able的數(shù)據(jù)進行學(xué)習(xí)就叫做Supervised learning。
需要提供訓(xùn)練集

函式的loss可以用來評估一個函示的好壞,Loss是通過對訓(xùn)練數(shù)據(jù)的測試得出的,它可以看成一個函示的錯誤率,但實際計算起來要比單純的計算錯誤率要復(fù)雜得多。Loss越小越好,一個函示的Loss越小,代表它越接近我們心里想要機器找出來的那個function。機器會自動找出那個Loss最低的函示,課中會講到機器用什么樣的演算法找到這個function。
屏幕快照 2020-07-09 15.20.55.png

2.Reinforcement Learning
以Alpha go為例來展示Supervised Learning與Reinforcement Learning的區(qū)別:

Supervised Learning需要給出機器每一種情況落子的正確位置。而Reinforcement Learning就是讓機器自己跟自己下或者跟別人下,通過“積累經(jīng)驗”的方式來找出每種情況落子的最佳位置,這個過程是沒有人為干預(yù)的,機器需要自己想辦法尋找策略,自己想辦法精進自己。機器的輸或贏就是Reward,這就是引導(dǎo)機器學(xué)習(xí)的方向。
屏幕快照 2020-07-09 15.35.15.png

3.Unsupervised Learning
給機器一堆沒有l(wèi)able的data

5.機器怎樣找出你想要的函示?

1.需要給機器一個函示尋找的范圍。不是所有函示都有可能是好的函示。常見的尋找范圍有Linear architecture,Network architecture(如RNN和CNN)
2.運用尋找函數(shù)的算法。這門課運用的算法為Gradient Descent和pytorch框架。

二、機器學(xué)習(xí)的前沿研究

這門課涉及的機器學(xué)習(xí)的前沿研究如下

1. Explainable AI

以上面圖片識別的機器學(xué)習(xí)為例,Explainable AI就是說機器不僅可以識別出一張圖片是貓,它還可以解釋為什么它覺得這張圖片是一只貓。

2. Adversarial Attack

現(xiàn)在的圖像識別系統(tǒng)大多都很robust,就算圖片中添加了noise還是可以正確識別。Adversarial Attack就是說如果人類懷著惡意去攻擊這個系統(tǒng)(刻意增加難以識別的noise)會發(fā)生什么事。

3. Network Compression

現(xiàn)在一些一通在做圖像辨識也許可以得到很高的正確率,但是這個正確率可能來自于一個十分碩大的model,Network Compression就是研究能否將這個巨大的network壓縮以致于可以將它放到手機甚至更小的base device上。

4.Anomaly Detection

還是以上面的圖片識別系統(tǒng)為例,Anomaly Detection就是說,假如給這個系統(tǒng)一張奇奇怪怪的訓(xùn)練中沒有見過的圖片(比如一拳超人),那么這個系統(tǒng)能做出判斷說它不知道,也就是機器知道“我不知道”,而不是將這張圖片強行識別成一種動物。

5.Transfer Learning

現(xiàn)在的情景是,給你一些資料,這些資料氛圍training data和Testing data,我們在進行測試的時候使用的training data 和testing data是十分相似的,而如果客戶并不知道這一點,使用了和訓(xùn)練數(shù)據(jù)差別比較大的測試數(shù)據(jù),那么這個系統(tǒng)的正確率可能會暴跌。Transfer Learning研究的就是如何解決這個問題。
屏幕快照 2020-07-09 17.32.49.png

6. Meta Learning

Meta Learning比機器學(xué)習(xí)更進一步。機器學(xué)期是讓機器具備學(xué)習(xí)的能力,而Meta Learning是讓機器學(xué)習(xí)如何具備學(xué)習(xí)的能力。
屏幕快照 2020-07-09 17.47.19.png

那么我們?yōu)槭裁匆寵C器自己去學(xué)習(xí)如何學(xué)習(xí)呢?這是因為現(xiàn)存的學(xué)習(xí)演算法都不是十分有效率,雖然現(xiàn)在有很多人工智能的出色結(jié)果,但那都是機器勤奮不懈的結(jié)果。現(xiàn)在的機器的學(xué)習(xí)都不是特別有效率,現(xiàn)在的演算法都是人類設(shè)計出來的出來的,由于人類的智慧有限,所以設(shè)計出來的算法學(xué)習(xí)起來也許并不十分有效率,而Meta Learning就是讓機器去自己設(shè)計學(xué)習(xí)演算法期待比人類設(shè)計出來的更加有效率。
屏幕快照 2020-07-09 17.52.09.png

7. Lifelong Learning

Lifelong Learning研究的是讓機器終身學(xué)習(xí)。
屏幕快照 2020-07-09 18.05.47.png

第二講(P3)Regression

1. Regression的輸出是一個標量。

例如:
屏幕快照 2020-07-10 16.26.55.png

2. 示例應(yīng)用

設(shè)計一個function來預(yù)測Pokemon的CP。其中,x代表以某一只Pokemon,xcp為這只Pokemon的當前戰(zhàn)力,xs代表這只Pokemon的種類,xhp代表這只Pokemon的生命值,xw代表它的重量,xh代表它的高度,最后的輸出y為進化后的CP。

屏幕快照 2020-07-10 16.29.40.png

步驟為:
第一步,定義一個model(function set)。
第二步,評估m(xù)odel里function的好壞。
第三步,找出一個最好的function。
屏幕快照 2020-07-13 11.21.43.png

x1代表一個完整的個體,y1hat代表實際的cp值

屏幕快照 2020-07-13 11.32.21.png

屏幕快照 2020-07-13 21.07.25.png

屏幕快照 2020-07-13 21.15.06.png

求最好function的一個方法(方法是可微的):Gradient Descent
已知一個loss function L(w),如何找出一個w值讓L(w)值最小呢?一個方法就是窮舉法,但是這樣是很沒有效率的,那么怎樣做比較有效呢?這就是Gradient Descent要告訴我們的。首先先隨機選取一個w的初始值w0,求L關(guān)于w的微分,如果微分為正,說明在這點的切線斜率為正,向左走L(w)值會變小,反之向右走。已經(jīng)確定了w的移動方向,那么w要移動多少呢?取決于兩個因素,一個為微分值的大小,一個為事先定好的learning rate.
屏幕快照 2020-07-13 22.42.56.png

屏幕快照 2020-07-13 22.46.15.png

屏幕快照 2020-07-13 22.49.19.png

屏幕快照 2020-07-13 22.50.27.png

第六講 (P10) Classification

Classification:輸入一組數(shù)據(jù),輸出一個類別

例如:
屏幕快照 2020-07-14 10.25.11.png

以下的學(xué)習(xí)還是使用Pokemon的例子,輸入一只Pokemon的HP, Attack,Defense,SP Atk, SP Def,Speed屬性,輸出它的屬性類別。
如何實現(xiàn)分類?

(首先要收集訓(xùn)練數(shù)據(jù))
一種思路是把按照Regression的方式來進行Classification,以Binary Classification為例,對于訓(xùn)練數(shù)據(jù)。如果輸出值為1則Class為1,如果輸出值為-1,則Class屬于2;對于測試數(shù)據(jù),如果輸出值比較接近1則為Class 1,如果比較接近-1則為Class 2。但是這樣做有一個問題就是“懲罰那些‘太正確’的例子”。如果分成多個類,如輸出值為1則為Class1,輸出值為2則為Class2,輸出值為3則為Class3...但是這樣同樣是有問題的,因為如果這些Class是互相獨立的,把這個問題當作Regression來處理就無法得到一個好的函示。

理想上的做法為:
屏幕快照 2020-07-14 11.21.22.png

如何找出最好的函示:Generative Moel

從訓(xùn)練數(shù)據(jù)中估計幾率值

屏幕快照 2020-07-14 11.28.01.png

首先Prior(P(C1)和P(C2))比較好求:
屏幕快照 2020-07-14 11.34.53.png

剩下的兩個值根據(jù)Gaussian Distribution來求:
屏幕快照 2020-07-14 11.44.04.png

屏幕快照 2020-07-14 11.45.07.png

屏幕快照 2020-07-14 11.47.46.png

如何找μ和∑?

方法為:Maximum Likelihood

現(xiàn)在訓(xùn)練數(shù)據(jù)中的79個點可以從任何高斯分布中獲得,但是不同的高斯分布sample出這79個點可能性是不一樣的。給出一個高斯分布的μ和∑,就可算從這個高斯分布中sample出這79個點的可能性,即為Likelihood,計算方法如下圖。讓Likelihood最大的μ和∑即為最好的的函示中的μ和∑。
屏幕快照 2020-07-14 11.57.17.png

求出來的結(jié)果準確率為47%,準確率比較低,因為上面的例子只是一個二元分類,實際上要預(yù)測一個Pokemon的種類是要在7維數(shù)據(jù)上進行操作的。上面的例子中不同的Class有不同的∑值,但是這在實際中是很少見的,常見的做法是不同的Class用同一個∑,因為∑是跟input fearture size的平方成正比的,如果用不同的∑的話,Model參數(shù)多就容易overfitting。
屏幕快照 2020-07-14 12.19.52.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容