0 前言
寒假參加了曠視在南理工辦的CV相關(guān)的夏令營蒿偎,算是對深度學(xué)習(xí)這個東西有了些淺顯的了解以及應(yīng)用绍绘,用keras庫來寫代碼真是太無腦了,給模型加一層褐耳,加激勵函數(shù)诈闺,池化,DropOut铃芦,梯度下降等等一系列操作都是直接調(diào)庫雅镊,然后就開始調(diào)參的工作(老師還說我們要是只會當(dāng)一個調(diào)參戰(zhàn)士,你們的年薪只能40w刃滓,orz我覺得40w已經(jīng)很多了)仁烹。
雖然是十分無腦暴力的訓(xùn)練一個模型,但是冬令營還是給我們講了大量的CNN的理論以及從一個比較高的角度去講這些問題咧虎,我覺得對我來說是深有益處的晃危。我也開始想慢慢的嘗試做一些相關(guān)的工作,開學(xué)看了一些書籍老客,其中我對《全棧數(shù)據(jù)之門》(這本書本身的東西特別多特別淺,但是作者的一些觀點和介紹的思路還是清晰的)上的一段話很有體悟震叮,摘抄到這里
- 我所理解的胧砰,學(xué)習(xí)機器學(xué)習(xí)算法的三個層次如下所述。
- 調(diào)用: 知道算法的基本思想苇瓣,能應(yīng)用現(xiàn)有的庫來做測試尉间。簡單說,就是了解KNN是做什么的击罪,會調(diào)用sklearn的KNN算法
- 調(diào)參:知道算法的主要影響因素哲嘲,能進(jìn)行參數(shù)調(diào)節(jié)優(yōu)化
- 嚼透:理解算法的實現(xiàn)細(xì)節(jié),并且能用代碼實現(xiàn)出來
我覺得作者的這段話很中肯媳禁,在“全民AI”的時代眠副,很多人都想學(xué)些東西,但是一上來就啃原理竣稽,啃證明囱怕,無疑是勸退的,并且容易看的非常模糊毫别,強行啃完發(fā)現(xiàn)沒有一個整體的概念娃弓,勸退*2(甚至開始懷疑自己...)。從應(yīng)用的角度去看問題岛宦,從優(yōu)化的角度去看代碼台丛,再去啃原理,我相信這樣是更能靜下心來學(xué)東西的砾肺。近期挽霉,我準(zhǔn)備閱讀李航老師的《統(tǒng)計學(xué)習(xí)方法》并用原生代碼和調(diào)庫兩種方法去分別實現(xiàn)書中的算法防嗡。由于我的編程能力比較一般,會參考一些資料來輔助編碼
- 參考資料
- 第一份是Github上面的lihang_book_algorithm
- 第二份還是Github上面的lihang-code(含ppt和code)
1. 第一章 統(tǒng)計學(xué)習(xí)方法概論
1.1 統(tǒng)計學(xué)習(xí)
統(tǒng)計學(xué)習(xí)是關(guān)于計算機基于[數(shù)據(jù)]構(gòu)建[概率統(tǒng)計模型]并運用模型對數(shù)據(jù)進(jìn)行預(yù)測與分析的一門學(xué)科炼吴。統(tǒng)計學(xué)習(xí)也稱為統(tǒng)計機器學(xué)習(xí)
統(tǒng)計學(xué)習(xí)由“監(jiān)督學(xué)習(xí)(supervised learning)本鸣,非監(jiān)督學(xué)習(xí)(unsupervised learning),半監(jiān)督學(xué)習(xí)(semi-supervised learning)和強化學(xué)習(xí)(reinforcement learning )”等組成(本書主要討論監(jiān)督學(xué)習(xí))
統(tǒng)計學(xué)習(xí)方法三要素:模型硅蹦、策略和算法
實現(xiàn)統(tǒng)計學(xué)習(xí)方法的步驟如下:
(1) 得到一個有限的訓(xùn)練數(shù)據(jù)集合:
(2) 確定包含所有可能的模型的假設(shè)空間荣德,即學(xué)習(xí)模型的集合;
(3) 確定模型選擇的準(zhǔn)則,即學(xué)習(xí)的策略童芹;
(4) 實現(xiàn)求解最優(yōu)模型的算法涮瞻,即學(xué)習(xí)的算法;
(5) 通過學(xué)習(xí)方法選擇最優(yōu)模型假褪;
(6) 利用學(xué)習(xí)的最優(yōu)模型對新數(shù)據(jù)進(jìn)行預(yù)測或分析.
1.2 監(jiān)督學(xué)習(xí)
1.2.1 輸入空間署咽、特征空間、輸出空間
輸入與輸出的所有可能取值的集合分別稱為輸入空間與輸出空間
每個具體的輸入是一個實例( instance)生音,通常由特征向量(feature vector)表
示宁否,這時,所有特征向量存在的空間稱為特征空間( feature space)缀遍。特征空間的
每一維對應(yīng)于一個特征慕匠。有時假設(shè)輸入空間與特征空間為相同的空間,對它們不
予區(qū)分域醇;有時假設(shè)輸入空間與特征空間為不同的空間台谊,將實例從輸入空間映射到
特征空間。模型實際上都是定義在特征空間上的
[x1,x2,x3,x4..]:即為一個實例譬挚,vector里面的每個變量表示一個特征
監(jiān)督學(xué)習(xí)從訓(xùn)練數(shù)據(jù)集中學(xué)習(xí)模型锅铅,對測試數(shù)據(jù)集進(jìn)行預(yù)測
輸入變量X和輸出變量y有不同的類型可以是連續(xù)的,也可以是離散的减宣。人
們根據(jù)輸入盐须、輸出變量的不同類型,對預(yù)測任務(wù)給予不同的名稱
(1) 輸入變量與輸出變量均為連續(xù)變量的預(yù)測問題稱為回歸問題蚪腋;--線性回歸
(2) 輸出變量為有限個離散變量的預(yù)測問題稱為分類問題丰歌;--二分類問題
(3) 輸入變量與輸出變量均為變量序列的預(yù)測問題稱為標(biāo)注問題 --標(biāo)注句子中的名詞
1.2.2 聯(lián)合概率分布
監(jiān)督學(xué)習(xí)假設(shè)輸入與輸出的隨機變量X和y遵循聯(lián)合概率分布P(X,Y)
P(X)表示分布函數(shù)屉凯,或分布密度函數(shù)立帖。注意,在學(xué)習(xí)過程中悠砚,假定這一聯(lián)合
概率分布存在晓勇,但對學(xué)習(xí)系統(tǒng)來說,聯(lián)合概率分布的具體定義是未知的。訓(xùn)練數(shù)
據(jù)與測試數(shù)據(jù)被看作是依聯(lián)合概率分布P(X绑咱,Y)獨立同分布產(chǎn)生的.
統(tǒng)計學(xué)習(xí)假設(shè)數(shù)據(jù)存在一定的統(tǒng)計規(guī)律绰筛,X和Y具有聯(lián)合概率分布的假設(shè)就是監(jiān)督學(xué)習(xí)關(guān)于數(shù)據(jù)的基本假設(shè).
監(jiān)督學(xué)習(xí)的模型可以是概率模型或非概率模型,由條件概率分布P(Y|X)或決策函數(shù)Y=F(X)表示描融,隨具體學(xué)習(xí)方法而定铝噩。
1.2.3 問題的形式化
1.3 統(tǒng)計學(xué)習(xí)三要素(!!!!超級重要的一節(jié))
方法 = 模型 + 策略 + 算法
1.3.1 模型(Model)
在監(jiān)督學(xué)習(xí)過程中,模型就是索要學(xué)習(xí)的條件概率分布或決策函數(shù)窿克。模型的假設(shè)空間包含所有可能的條件概率分布或決策函數(shù)骏庸。
例如:假設(shè)決策函數(shù)是輸入變量的線性函數(shù),那么模型的假設(shè)空間就是所有這些線性函數(shù)構(gòu)成的函數(shù)集合年叮,假設(shè)空間中的模型一般由無數(shù)多個
我的理解:是存在一個模型的集合的具被,然后通過不同的策略和方法來將這個模型具象化,但是關(guān)鍵是針對具體問題應(yīng)該選擇怎樣的模型只损,我想這是涉及到數(shù)學(xué)建模的內(nèi)容的一姿。其實基本的問題都有比較固定的套路,像預(yù)測就用回歸跃惫,但是如何優(yōu)化預(yù)測的效果叮叹,如何預(yù)測復(fù)雜場景下的問題,這都是建模要考慮的問題爆存。還比如像遺傳算法啊衬横,粒子群算法,神經(jīng)網(wǎng)絡(luò)算法這些啟發(fā)式智能算法都是建立在把問題抽象成模型的基礎(chǔ)上(也就是先找到自己所認(rèn)為的假設(shè)空間终蒂,接下來運用算法來求解參數(shù)讓模型具象化)進(jìn)行求解的。數(shù)學(xué)建模是很重要的一步RK摺D雌!好好學(xué)習(xí)叭
1.3.2 策略(strategy)
1.損失函數(shù)和風(fēng)險函數(shù)
損失函數(shù)度量模型一次預(yù)測的好壞矮锈,風(fēng)險函數(shù)度量平均意義下模型預(yù)測的好壞
1.1 常用的損失函數(shù)
(1) 0-1損失函數(shù)
(2) 平方損失函數(shù)
(3) 絕對損失函數(shù)
(4) 對數(shù)損失函數(shù)(或?qū)?shù)似然損失函數(shù))
1.2 風(fēng)險函數(shù)(或稱為期望損失)
風(fēng)險函數(shù)是模型f(X)關(guān)于聯(lián)合分布P(X,Y)的平均意義下的損失霉翔,也是損失函數(shù)的期望
2.經(jīng)驗風(fēng)險和結(jié)構(gòu)風(fēng)險
2.1 經(jīng)驗風(fēng)險和期望風(fēng)險
模型f(X)關(guān)于[訓(xùn)練數(shù)據(jù)集]的平均損失稱為經(jīng)驗風(fēng)險(經(jīng)驗損失)
期望風(fēng)險是模型關(guān)于聯(lián)合分布的期望損失(理論上的損失,真損失)
經(jīng)驗風(fēng)險是模型關(guān)于訓(xùn)練樣本集的平均損失(在數(shù)據(jù)集上表現(xiàn)的損失苞笨,表現(xiàn)損失)
根據(jù)大數(shù)定律债朵,樣本容量N趨于無窮時,經(jīng)驗風(fēng)險趨于期望風(fēng)險瀑凝,所以現(xiàn)實中往往用經(jīng)驗損失來估計期望損失(重要P蚵!粤咪!)
監(jiān)督學(xué)習(xí)的兩個策略:
(1) 經(jīng)驗風(fēng)險最小化
(2) 結(jié)構(gòu)風(fēng)險最小化
2.2 結(jié)構(gòu)風(fēng)險
由于經(jīng)驗風(fēng)險最小化學(xué)習(xí)容易出現(xiàn)”過擬合現(xiàn)象“谚中,所以定義了結(jié)構(gòu)風(fēng)險來防止過擬合
結(jié)構(gòu)風(fēng)險最小化等價于正則化(正則化冬令營講過,所以這里并沒有勸退我23333)
結(jié)構(gòu)風(fēng)險在經(jīng)驗風(fēng)險的基礎(chǔ)上加了一個正則化項,這個正則化項隨著模型的復(fù)雜程度的增加也增加宪塔,模型越復(fù)雜磁奖,正則化項也就越大,模型的泛化能力也就越弱(開始還有點不明白某筐,最后舉了個例子才明白)
(沒有列式子是想通過思考想到各自的定義比搭,其實是還不太會latex以及markdown的數(shù)學(xué)表達(dá)式文法,逃~)
1.3.3 算法(algorithm)
學(xué)習(xí)模型的具體計算方法南誊,這時問題歸結(jié)為最優(yōu)化問題身诺,通常最優(yōu)化問題的解析解不存在,就需要用數(shù)值計算的方法去求解弟疆,如何確定是全局最優(yōu)解等等問題都是算法應(yīng)該考慮的問題
1.4 模型評估與模型選擇
1.訓(xùn)練誤差與測試誤差:這里都是用平均損失來描述
2.過擬合:是指學(xué)習(xí)時選擇的模型所包含的參數(shù)過多戚长,導(dǎo)致模型對已知數(shù)據(jù)預(yù)測的很好,對未知數(shù)據(jù)預(yù)測的很差的現(xiàn)象怠苔。
1.5 正則化與交叉驗證
正則化是結(jié)構(gòu)風(fēng)險最小化策略的實現(xiàn)
正則化項可以取不同的形式同廉,比如L0-L2范數(shù)
正則化符合奧卡姆剃刀原理
奧卡姆剃刀是簡約之法則: 切勿浪費較多東西,去做‘用較少的東西柑司,同樣可以做好的事情’迫肖。”換一種說法攒驰,如果關(guān)于同一個問題有許多種理論蟆湖,每一種都能作出同樣準(zhǔn)確的預(yù)言,那么應(yīng)該挑選其中使用假定最少的玻粪。盡管越復(fù)雜的方法通常能做出越好的預(yù)言隅津,但是在不考慮預(yù)言能力(即結(jié)果大致相同)的情況下,假設(shè)越少越好劲室。
交叉驗證
將數(shù)據(jù)切分成三部分:分別為訓(xùn)練集伦仍、驗證集和測試集,訓(xùn)練集用來訓(xùn)練模型很洋,驗證集用于對模型的選擇充蓝,測試機用于最終對學(xué)習(xí)方法的評估。
(1) 簡單交叉驗證
(2) S折交叉驗證
(3) 留一交叉驗證(S折交叉驗證的特殊情況)
1.6 泛化能力
1.6.1 泛化誤差
現(xiàn)實中采用最多的方法是通過測試誤差來評價學(xué)習(xí)方法的泛化能力
理論上:泛化誤差是模型對未知數(shù)據(jù)預(yù)測的誤差喉磁,事實上谓苟,泛化誤差就是所學(xué)習(xí)到的模型的期望風(fēng)險
1.6.2 泛化誤差上界(不是太能理解。协怒。之后再啃吧現(xiàn)在要去寫代碼了)
學(xué)習(xí)方法的泛化能力分析往往是通過研究泛化誤差的概率上界進(jìn)行的涝焙,簡稱為泛化誤差上界,具體來說孕暇,就是通過比較兩種學(xué)習(xí)方法的泛化誤差上界的大小來比較它們的優(yōu)劣纱皆。
(1) 樣本容量增加時湾趾,泛化上界趨于0
(2) 空間容量越大,模型就越難學(xué)派草,泛化誤差上界越大
1.7 生成模型與判別模型
監(jiān)督學(xué)習(xí)方法又可以分為生成方法和判別方法搀缠,所學(xué)到的模型分別稱為生成模型和判別模型
1.8 分類問題
輸出變量Y取有限個離散值時,預(yù)測問題便成為分類問題
輸入變量X可以是連續(xù)的也可以是離散的
對于二類分類問題常用的評價指標(biāo)是精確率和召回率以及兩者的調(diào)和均值F1值
1.9 標(biāo)注問題
可以認(rèn)為標(biāo)注問題是分類問題的一個推廣近迁,又是更復(fù)雜的結(jié)構(gòu)預(yù)測問題的簡單形式艺普,標(biāo)注問題的輸入是一個觀測序列,輸出是一個標(biāo)記序列或狀態(tài)序列鉴竭。標(biāo)注問題目標(biāo)是能夠訓(xùn)練一個模型歧譬,使它能夠?qū)τ^測序列給出標(biāo)記序列作為預(yù)測
評價標(biāo)注模型的指標(biāo)與評價分類模型的指標(biāo)一樣
標(biāo)注常用的統(tǒng)計學(xué)習(xí)方法有:隱馬爾可夫模型,條件隨機場
示例:自然語言處理的詞性標(biāo)注(從英文文章中抽取基本名詞短語)
講真搏存,之前還沒有意識到這種問題可以單列一類瑰步,可能因為作者是做NLP方向的,所以對這種序列輸入輸出比較敏感吧
1.10 回歸問題
回歸用于預(yù)測輸入變量和輸出變量之間的關(guān)系璧眠,回歸模型正是表示從輸入變量到輸出變量之間映射的函數(shù)缩焦,回歸問題的學(xué)習(xí)等價于函數(shù)擬合
回歸學(xué)習(xí)最常用的損失函數(shù)是平方損失函數(shù),可以用最小二乘法求解责静。
2. 第一章總結(jié)
整體來說收獲還是蠻豐富的袁滥,不過也認(rèn)識到了這本書的適用范圍。正如書中所說灾螃,本書主要是講解監(jiān)督學(xué)習(xí)的學(xué)習(xí)方法题翻,并把監(jiān)督學(xué)習(xí)分為了回歸、分類和標(biāo)注問題三類腰鬼,標(biāo)注問題我是第一次見到嵌赠,還蠻新奇的。第一章對于統(tǒng)計學(xué)習(xí)的一些概念做了理論上的解釋熄赡,也闡述了原因猾普,好評。不過數(shù)學(xué)的推導(dǎo)部分我還是沒開始啃...我覺得現(xiàn)在這種小定理的證明看起來有點打腦殼本谜,還是不勸退自己為好。對于聯(lián)合分布這個概念還有一丟丟的印象偎窘,僅存當(dāng)時學(xué)習(xí)留到現(xiàn)在的理解(當(dāng)時就沒好好學(xué)好吧)乌助,對于概率論這一塊的知識,后面再來補叭陌知。今天是沒時間嘍他托,還要去寫寫Echarts(逃~)
經(jīng)過第一章的大致梳理,我對統(tǒng)計學(xué)習(xí)方法有了較為清晰的認(rèn)識仆葡,也越發(fā)的期待(真的嗎赏参?志笼??把篓?)后面真正的干貨纫溃。