機(jī)器學(xué)習(xí)最近很火很厲害的樣子,是時(shí)候跟風(fēng)了解一波了~
機(jī)器學(xué)習(xí)顧名思義是讓機(jī)器去進(jìn)行學(xué)習(xí)狭吼,目前主要應(yīng)用于自然語言處理(就是比如輸入法啊稠通,語音輸入啊之類的)衬衬、模式識(shí)別、自動(dòng)駕駛改橘、各種數(shù)據(jù)的預(yù)測(cè)等等滋尉。
讓我們先對(duì)機(jī)器學(xué)習(xí)有一個(gè)寬廣的定義:
如果一個(gè)計(jì)算機(jī)程序?qū)δ愁惾蝿?wù)T的用P衡量的性能根據(jù)經(jīng)驗(yàn)E來自我完善,那么我們稱這個(gè)計(jì)算機(jī)程序在從經(jīng)驗(yàn)E中學(xué)習(xí)飞主,針對(duì)某類任務(wù)T狮惜,他的性能用P來衡量高诺。
比如一個(gè)學(xué)習(xí)下西洋棋的程序,他的任務(wù)T就是下棋碾篡,他的性能標(biāo)準(zhǔn)P就是獲得勝利的百分比虱而,訓(xùn)練經(jīng)驗(yàn)E就是不斷和自己下棋。
1.2.1選擇訓(xùn)練經(jīng)驗(yàn)
訓(xùn)練經(jīng)驗(yàn)有三個(gè)重要屬性:
- 訓(xùn)練經(jīng)驗(yàn)?zāi)芊駷橄到y(tǒng)的決策提供直接或間接的反饋开泽。(也就是 說每一次的訓(xùn)練能否讓程序?qū)W到東西)
- 學(xué)習(xí)器可以在多大程度上控制訓(xùn)練樣例序列牡拇。(比如下棋程 序能否隨時(shí)擺出一個(gè)他想要的棋局進(jìn)行學(xué)習(xí),有點(diǎn)debug工具的 感覺穆律,自如的控制函數(shù)的執(zhí)行過程)
- 訓(xùn)練樣例的分布能多好的表示實(shí)例分布惠呼,通過樣例來衡量最終系統(tǒng)的性能P。(也就是說用來訓(xùn)練的數(shù)據(jù)和真正用來測(cè)試的數(shù)據(jù)是不是盡可能的相似)
1.2.2選擇目標(biāo)函數(shù)
之后我們要選擇目標(biāo)函數(shù)峦耘。對(duì)于下棋程序來說剔蹋,最終程序需要學(xué)會(huì)在合法的走子中選擇最佳走子,這代表了一類任務(wù):合法走子定義了某個(gè)已知的巨大搜索空間贡歧,但是最佳的搜索策略未知滩租。學(xué)習(xí)從合法走子中選出最好的走法,也就是表明要學(xué)習(xí)的信息類型是一個(gè)能對(duì)任何給定的棋局選出最好的走法的程序或函數(shù)利朵。但是對(duì)于下棋程序律想,由于系統(tǒng)的訓(xùn)練經(jīng)驗(yàn)是間接地(也就是假定沒有人類高手去教給程序每一步應(yīng)該怎么走,而是程序靠自己跟自己下棋去學(xué)習(xí))绍弟,所以很難去直接判斷在某個(gè)棋局里哪個(gè)走法是最好的技即,所以我們可以轉(zhuǎn)化一下,把目標(biāo)函數(shù)改為一個(gè)評(píng)估函數(shù)V樟遣,它為任何給定棋局評(píng)一個(gè)分而叼,好的棋局評(píng)分較高。那么系統(tǒng)如果學(xué)會(huì)了V豹悬,在下每一步棋時(shí)就可以先產(chǎn)生每一個(gè)走法的下一步棋局葵陵,然后用V選擇評(píng)分最高的棋局來確定最佳走子。通常要完美的學(xué)習(xí)這樣一個(gè)V的可操作形式(也就是在時(shí)間限制內(nèi)計(jì)算出結(jié)果)是很困難的瞻佛,我們通常只希望學(xué)習(xí)算法得到近似的目標(biāo)函數(shù)脱篙,所以學(xué)習(xí)過程常被稱為函數(shù)逼近(function approximation)。
1.2.3選擇目標(biāo)函數(shù)的表示
現(xiàn)在我們確定了理想的目標(biāo)函數(shù)V伤柄,接下來要選擇一個(gè)被學(xué)習(xí)程序用來描述要學(xué)習(xí)的函數(shù)?的表示绊困。一方面我們希望有一個(gè)最有表現(xiàn)力的描述來最大可能地逼近理想的目標(biāo)函數(shù)V,另一方面?越有表現(xiàn)力的描述則需要越多的訓(xùn)練數(shù)據(jù)适刀。為了簡(jiǎn)化討論秤朗,現(xiàn)在選擇一個(gè)簡(jiǎn)單的表示法:對(duì)于任何給定的棋盤狀態(tài),函數(shù)?可以通過以下棋盤參數(shù)的線性組合來計(jì)算:
1.2.4選擇函數(shù)逼近算法
-
估計(jì)訓(xùn)練值
我們使用一個(gè)簡(jiǎn)單的方法笔喉,用后續(xù)棋局Successor(b)的估計(jì)值來估計(jì)棋局b的值取视。很明顯越接近游戲結(jié)束的棋局硝皂,?的估計(jì)越精確。
-
調(diào)整權(quán)值
要調(diào)整權(quán)值w贫途,首先要定義最佳擬合(best fit)訓(xùn)練數(shù)據(jù)的含義(也就是說什么樣的訓(xùn)練結(jié)果是最好的)吧彪。一種常用的方法是把最佳的假設(shè)(或權(quán)值集合)定義為使訓(xùn)練值和假設(shè)?預(yù)測(cè)出的值之間的誤差平方和E最小。
現(xiàn)在我們需要一個(gè)算法丢早,在有新的訓(xùn)練樣例時(shí)可以更新權(quán)值姨裸,并且對(duì)訓(xùn)練數(shù)據(jù)中的差錯(cuò)有較好的健壯性。其中一個(gè)這樣的算法叫做最小均方法(least mean squares)或叫LMS訓(xùn)練法則怨酝。對(duì)于每個(gè)訓(xùn)練樣例傀缩,它把權(quán)值向減小這個(gè)誤差的方向略微調(diào)整。
η是一個(gè)小的常數(shù)(如0.1)农猬,用來調(diào)整每次更新權(quán)值的幅度赡艰。
1.2.5最終設(shè)計(jì)
執(zhí)行系統(tǒng)(Performance System):用已學(xué)會(huì)的目標(biāo)函數(shù)來解決給定的任務(wù),把新問題(一個(gè)新棋局)作為輸入斤葱,產(chǎn)生一組解答路線作為輸出慷垮。
鑒定器(Critic):它以對(duì)弈的路線或歷史記錄作為輸入,輸出目標(biāo)函數(shù)的一系列訓(xùn)練樣例揍堕。也就是把棋局的實(shí)例轉(zhuǎn)化為訓(xùn)練法則料身。
泛化器(Generalizer):它以訓(xùn)練樣例作為輸入,產(chǎn)生一個(gè)輸出假設(shè)作為它對(duì)目標(biāo)函數(shù)的估計(jì)衩茸。也就是將每個(gè)特定的訓(xùn)練樣例中泛化出一個(gè)一般的特征芹血,使這個(gè)一般函數(shù)能覆蓋這些樣例和其它的樣例。在這個(gè)例子中楞慈,泛化器對(duì)應(yīng)LMS算法幔烛。
實(shí)驗(yàn)生成器(Experiment Generator):它以當(dāng)前的假設(shè)(學(xué)到的函數(shù))作為輸入,輸出一個(gè)新的問題(一個(gè)新棋局)讓系統(tǒng)去探索囊蓝。它的作用是挑選新的實(shí)踐問題饿悬,以使整個(gè)系統(tǒng)的學(xué)習(xí)速率最大化。
以上只是一個(gè)機(jī)器學(xué)習(xí)的簡(jiǎn)單模型聚霜,用來概述機(jī)器學(xué)習(xí)的基本方法狡恬。實(shí)際上在各個(gè)步驟中都有更多更好的選擇。