譯者|穆文杰 (ChrisMu,郵箱[email protected],本文由ChrisMu翻譯向36大數(shù)據(jù)投稿,并經(jīng)由36大數(shù)據(jù)編輯發(fā)布,轉(zhuǎn)載必須獲得作者及本站的同意。)原文作者Ahmed El Deeb。
一、小數(shù)據(jù)來自哪里?
科技公司的數(shù)據(jù)科學(xué)、關(guān)聯(lián)性分析以及機(jī)器學(xué)習(xí)等方面的活動大多圍繞著”大數(shù)據(jù)”,這些大型數(shù)據(jù)集包含文檔、?用戶、?文件、?查詢、?歌曲、?圖片等信息,規(guī)模數(shù)以千計(jì),數(shù)十萬、?數(shù)百萬、?甚至數(shù)十億。過去十年里,處理這類型數(shù)據(jù)集的基礎(chǔ)設(shè)施、?工具和算法發(fā)展得非常迅速,并且得到了不斷改善。大多數(shù)數(shù)據(jù)科學(xué)家和機(jī)器學(xué)習(xí)從業(yè)人員就是在這樣的情況下積累了經(jīng)驗(yàn),逐漸習(xí)慣于那些用著順手的算法,而且在那些常見的需要權(quán)衡的問題上面擁有良好的直覺(經(jīng)常需要權(quán)衡的問題包括:偏差和方差,靈活性和穩(wěn)定性,手工特性提取和特征學(xué)習(xí)等等)。但小的數(shù)據(jù)集仍然時(shí)不時(shí)的出現(xiàn),而且伴隨的問題往往難以處理,需要一組不同的算法和不同的技能。小數(shù)據(jù)集出現(xiàn)在以下幾種情況:
- 企業(yè)解決方案:?當(dāng)您嘗試為一個人員數(shù)量相對有限的企業(yè)提供解決方案,而不是為成千上萬的用戶提供單一的解決方案。
- 時(shí)間序列:?時(shí)間供不應(yīng)求!尤其是和用戶、查詢指令、會話、文件等相比較。這顯然取決于時(shí)間單位或采樣率,但是想每次都能有效地增加采樣率沒那么容易,比如你得到的標(biāo)定數(shù)據(jù)是日期的話,那么你每天只有一個數(shù)據(jù)點(diǎn)。
- 關(guān)于以下樣本的聚類模型:州市、國家、運(yùn)動隊(duì)或任何總體本身是有限的情況(或者采樣真的很貴)。【備注:比如對美國50個州做聚類】
- 多變量?A/B?測試:?實(shí)驗(yàn)方法或者它們的組合會成為數(shù)據(jù)點(diǎn)。如果你正在考慮3個維度,每個維度設(shè)置4個配置項(xiàng),那么將擁有12個點(diǎn)。【備注:比如在網(wǎng)頁測試中,選擇字體顏色、字體大小、字體類型三個維度,然后有四種顏色、四個字號、四個字型】
- 任何罕見現(xiàn)象的模型,例如地震、洪水。
二、小數(shù)據(jù)問題
小數(shù)據(jù)問題很多,但主要圍繞高方差:
- 很難避免過度擬合
- 你不只過度擬合訓(xùn)練數(shù)據(jù),有時(shí)還過度擬合驗(yàn)證數(shù)據(jù)。
- 離群值(異常點(diǎn))變得更危險(xiǎn)。
- 通常,噪聲是個現(xiàn)實(shí)問題,存在于目標(biāo)變量中或在一些特征中。
三、如何處理以下情況
1-雇一個統(tǒng)計(jì)學(xué)家
我不是在開玩笑!統(tǒng)計(jì)學(xué)家是原始的數(shù)據(jù)科學(xué)家。當(dāng)數(shù)據(jù)更難獲取時(shí)統(tǒng)計(jì)學(xué)誕生了,因而統(tǒng)計(jì)學(xué)家非常清楚如何處理小樣本問題。統(tǒng)計(jì)檢驗(yàn)、參數(shù)模型、自舉法(Bootstrapping,一種重復(fù)抽樣技術(shù)),和其他有用的數(shù)學(xué)工具屬于經(jīng)典統(tǒng)計(jì)的范疇,而不是現(xiàn)代機(jī)器學(xué)習(xí)。如果沒有好的專業(yè)統(tǒng)計(jì)員,您可以雇一個海洋生物學(xué)家、動物學(xué)家、心理學(xué)家或任何一個接受過小樣本處理訓(xùn)練的人。當(dāng)然,他們的專業(yè)履歷越接近您的領(lǐng)域越好。如果您不想雇一個全職統(tǒng)計(jì)員,那么可以請臨時(shí)顧問。但雇一個科班出身的統(tǒng)計(jì)學(xué)家可能是非常好的投資。
2-堅(jiān)持簡單模型
更確切地說:?堅(jiān)持一組有限的假設(shè)。預(yù)測建??梢钥闯梢粋€搜索問題。從初始的一批可能模型中,選出那個最適合我們數(shù)據(jù)的模型。在某種程度上,每一個我們用來擬合的點(diǎn)會投票,給不傾向于產(chǎn)生這個點(diǎn)的模型投反對票,給傾向于產(chǎn)生這個點(diǎn)的模型投贊成票。當(dāng)你有一大堆數(shù)據(jù)時(shí),你能有效地在一大堆模型/假設(shè)中搜尋,最終找到適合的那個。當(dāng)你一開始沒有那么多的數(shù)據(jù)點(diǎn)時(shí),你需要從一套相當(dāng)小的可能的假設(shè)開始?(例如,含有?3個非零權(quán)重的線性模型,深度小于4的決策樹模型,含有十個等間隔容器的直方圖)。這意味著你排除復(fù)雜的設(shè)想,比如說那些非線性或特征之間相互作用的問題。這也意味著,你不能用太多自由度?(太多的權(quán)重或參數(shù))擬合模型。適當(dāng)時(shí),請使用強(qiáng)假設(shè)?(例如,非負(fù)權(quán)重,沒有交互作用的特征,特定分布等等)?來縮小可能的假設(shè)的范圍。
任何瘋狂的模型都能擬合單點(diǎn)。
當(dāng)我們有更多的數(shù)據(jù)點(diǎn)時(shí),越來越少的模型可以擬合這些點(diǎn)。
圖像來自Chris?Bishop的書《模式識別和機(jī)器學(xué)習(xí)》
3-盡可能使用更多的數(shù)據(jù)
您想構(gòu)建一個個性化的垃圾郵件過濾器嗎?嘗試構(gòu)建在一個通用模型,并為所有用戶訓(xùn)練這個模型。你正在為某一個國家的GDP建模嗎?嘗試用你的模型去擬合所有能得到數(shù)據(jù)的國家,或許可以用重要性抽樣來強(qiáng)調(diào)你感興趣的國家。你試圖預(yù)測特定的火山爆發(fā)嗎?……你應(yīng)該知道如何做了。
4–做試驗(yàn)要克制
不要過分使用驗(yàn)證集。如果你嘗試過許多不同的技術(shù),并使用一個保留數(shù)據(jù)集來對比它們,那么你應(yīng)該清楚這些結(jié)果的統(tǒng)計(jì)效力如何,而且要意識到對于樣本以外的數(shù)據(jù)它可能不是一個好的模型。
5-清洗您的數(shù)據(jù)
處理小數(shù)據(jù)集時(shí),噪聲和異常點(diǎn)都特別煩人。為了得到更好的模型,清洗您的數(shù)據(jù)可能是至關(guān)重要的?;蛘吣梢允褂敏敯粜愿玫哪P?,尤其針對異常點(diǎn)。(例如分位數(shù)回歸)
6-進(jìn)行特征選擇
我不是顯式特征選擇的超級粉絲。我通常選擇用正則化和模型平均?(下面會展開講述)來防止過度擬合。但是,如果數(shù)據(jù)真的很少,有時(shí)顯式特征選擇至關(guān)重要??梢缘脑?,最好借助某一領(lǐng)域的專業(yè)知識來做特征選擇或刪減,因?yàn)楦F舉法?(例如所有子集或貪婪前向選擇)?一樣容易造成過度擬合。
7–使用正則化
對于防止模型過擬合,且在不降低模型中參數(shù)實(shí)際數(shù)目的前提下減少有效自由度,正則化幾乎是神奇的解決辦法。L1正則化用較少的非零參數(shù)構(gòu)建模型,有效地執(zhí)行隱式特征選擇。而?L2?正則化用更保守?(接近零)?的參數(shù),相當(dāng)于有效的得到了強(qiáng)零中心的先驗(yàn)參數(shù)?(貝葉斯理論)。通常,L2?擁有比L1更好的預(yù)測精度?!緜渥ⅲ篖2正則化的效果使權(quán)重衰減,人們普遍認(rèn)為:更小的權(quán)值從某種意義上說,表示網(wǎng)絡(luò)的復(fù)雜度更低,對數(shù)據(jù)的擬合剛剛好,這個法則也叫做奧卡姆剃刀?!?/p>
L1正則化可以使得大多數(shù)參數(shù)變?yōu)榱?/p>
8?使用模型平均
模型平均擁有類似正則化的效果,它減少方差,提高泛化,但它是一個通用的技術(shù),可以在任何類型的模型上甚至在異構(gòu)模型的集合上使用。缺點(diǎn)是,為了做模型平均,結(jié)果要處理一堆模型,模型的評估變得很慢。bagging和貝葉斯模型平均是兩個好用的模型平均方法。
每條紅線是一個擬合模型。
平均這些高方差模型之后,我們得到一個平滑的曲線,它很好的擬合了原有數(shù)據(jù)點(diǎn)的分布。
9–嘗試貝葉斯建模和模型平均
這個依然不是我喜歡的技術(shù),但貝葉斯推理可能適合于處理較小的數(shù)據(jù)集,尤其是當(dāng)你能夠使用專業(yè)知識構(gòu)造好的先驗(yàn)參數(shù)時(shí)。
10-喜歡用置信區(qū)間
通常,除了構(gòu)建一個預(yù)測模型之外,估計(jì)這個模型的置信是個好主意。對于回歸分析,它通常是一個以點(diǎn)估計(jì)值為中心的取值范圍,真實(shí)值以95%的置信水平落在這個區(qū)間里。如果是分類模型的話,那么涉及的將是分類的概率。這種估計(jì)對于小數(shù)據(jù)集更加重要,因?yàn)楹苡锌赡苣P偷哪承┨卣飨啾绕渌卣鳑]有更好的表達(dá)出來。如上所述的模型平均允許我們很容易得到在回歸、?分類和密度估計(jì)中做置信的一般方法。當(dāng)評估您的模型時(shí)它也很有用。使用置信區(qū)間評估模型性能將助于你避免得出很多錯誤的結(jié)論。
你的數(shù)據(jù)不樂意出現(xiàn)在特征空間的某些區(qū)域,那么預(yù)測置信應(yīng)該有所反應(yīng)。
用ROCR得到的自舉法性能圖。
四、總結(jié)
上面講的有點(diǎn)多,但他們都圍繞著三個主題:約束建模,平滑和量化不確定性。這篇文章中所使用的圖片來自Christopher?Bishop的書《模式識別和機(jī)器學(xué)習(xí)》
以上內(nèi)容翻譯自What to do with “small” data?
附錄:翻譯筆記:
一、用語
1、every?now?and?then和now?and?then?有什么區(qū)別?
根據(jù)<<美國傳統(tǒng)詞典[雙解]>>的解釋:
1。every?now?and?then?或?every?now?and?again:
(1)From?time?to?time;?occasionally.
不時(shí)地,時(shí)常地;偶爾地
(2)?every?once?in?a?while
From?time?to?time;?occasionally.
不時(shí)地;偶爾地
2。now?and?then?或?now?and?again
(1)Occasionally.?偶爾地
這二個詞組基本上是相等的,也可以認(rèn)為,now?and?then。事件發(fā)生的頻率要低一些。every?now?and?then?。事件發(fā)生的頻率要稍高一些。
2、Document和file
document是文檔,file是文件。file涵蓋的范圍更大,圖像、音頻、視頻之類都可以叫file,而document主要指文本文檔。
3、trade-off
權(quán)衡,文中提到幾個變量對,偏方和方差,靈活性和穩(wěn)定性,手工特征提取和自動化特征提取。需要在兩方面之間取得平衡,不能只偏向一方。
4、country,?nation,?state??????
三者都可譯為“國家”,但含義不同。
- country?指國家時(shí),側(cè)重疆土或人口,?又作“鄉(xiāng)下”講。
如:??????China?is?a?socialist?country.??????中國是一個社會主義國家。
- nation指國家時(shí),側(cè)重民族。
如:??????The?whole?nation?is?/are?rejoicing.??????舉國歡騰。
- state?指國家時(shí),側(cè)重政體、政府,也可指組成國家的“州”。
如:??????France?is?one?of?the?member?states?of?the?ELL.????法國是歐洲聯(lián)盟成員國之一。
5、?population
Aggregate?modeling?of?states,?countries,?sports?teams,?or?any?situation?where?the?population?itself?is?limited?(or?sampling?is?really?expensive).這里是總體,而不是人口。
6、?general-purpose
多用途,多功能,通用的
7、?in?a?way?in?the?way?on?the?way?on?a?way?by?the?way
in?a?way?在某種程度上,在某種意義上?in?the?way?擋路,擋道,礙事?eg.get?in?the?way?of妨礙某人做某事?on?the?way?在途中,即將到達(dá)?有點(diǎn)類似于around?the?corner?on?a?way?不存在?by?the?way?順便說一下,做插入語?而by?the?way?of?借由某種方式做
二、Bias和Variance:
1、概念理解
在A?Few?Useful?Things?to?Know?about?Machine?Learning中提到,可以將泛化誤差(generalization?error)分解成bias和variance理解。
- Bias:?a?learner’s?tendency?to?consistently?learn?the?same?wrong?thing,即度量了某種學(xué)習(xí)算法的平均估計(jì)結(jié)果所能逼近學(xué)習(xí)目標(biāo)(目標(biāo)輸出)的程度。
- Variance:the?tendency?to?learn?random?things?irrespective?of?the?real?signal,即度量了在面對同樣規(guī)模的不同訓(xùn)練集時(shí),學(xué)習(xí)算法的估計(jì)結(jié)果發(fā)生變動的程度。比如在同一現(xiàn)象所產(chǎn)生的不同訓(xùn)練數(shù)據(jù)上學(xué)習(xí)的決策樹往往差異巨大,而實(shí)際上它們應(yīng)當(dāng)是相同的。
從圖像角度
靶心為某個能完美預(yù)測的模型,離靶心越遠(yuǎn),則準(zhǔn)確率隨之降低。靶上的點(diǎn)代表某次對某個數(shù)據(jù)集上學(xué)習(xí)某個模型。縱向上,高低的bias:高的Bias表示離目標(biāo)較遠(yuǎn),低bias表示離靶心越近;橫向上,高低的variance,高的variance表示多次的“學(xué)習(xí)過程”越分散,反之越集中。
3、Bias、variance與復(fù)雜度的關(guān)系
三、hand-crafted?features?vs.?feature?learning
以個性化推薦系統(tǒng)中的特征工程進(jìn)行簡單說明:
特征工程:用目標(biāo)問題所在的特定領(lǐng)域知識或者自動化的方法來生成、提取、刪減或者組合變化得到特征。這些特征可能是顯而易見比如說商品的品牌,也有可能需要復(fù)雜的模型計(jì)算,比如Facebook上用戶A和用戶B之間關(guān)系的緊密程度(FB使用了一個決策樹來生成一個描述這個程度的向量,這個向量決定了他們News?Feed推薦內(nèi)容。)
1、利用領(lǐng)域知識生成和提取特征
這幾乎是特征工程里占大半時(shí)間的工作了:如何描述個性化并且用變量表示成特征。一般方法就是,想想你就是該商品的目標(biāo)用戶,你會想要什么樣的個性化。
2、直接特征和間接特征
直接特征?Extacted?Feature?就是比如商品的品牌,間接特征?Derived?Feature?可以是從直接特征或者各種數(shù)據(jù)組合里計(jì)算推導(dǎo)出來的。
3、特征選擇
這部分的工作就看起來比較高級一些,比較貼近機(jī)器學(xué)習(xí)的研究工作。一般來說是兩個方法:基于領(lǐng)域知識的手工選擇以及自動選擇方法。
對于關(guān)聯(lián)規(guī)則和統(tǒng)計(jì)規(guī)則的模型來說,手工選擇的比重要大一些。比如我們已有了baseline的特征向量,現(xiàn)在加進(jìn)去品牌偏好,給一定的權(quán)值,看評價(jià)函數(shù)輸出的結(jié)果是否增強(qiáng)了推薦效果。
對于學(xué)習(xí)的模型來說,可以通過模型自動選擇每個特征的權(quán)值,按照和效果的關(guān)聯(lián)來調(diào)整模型的參數(shù)。
四、多變量測試和AB測試
1、A?/?B?測試:
A/B測試本質(zhì)上是個分離式組間實(shí)驗(yàn),以前進(jìn)行A/B測試的技術(shù)成本和資源成本相對較高,但現(xiàn)在一系列專業(yè)的可視化實(shí)驗(yàn)工具的出現(xiàn),A/B測試已越來越成為網(wǎng)站優(yōu)化常用的方法。
使用A/B?測試首先需要建立一個測試頁面(variation?page),這個頁面可能在標(biāo)題字體,背景顏色,措辭等方面與原有頁面(control?page)有所不同,然后將這兩個頁面以隨機(jī)的方式同時(shí)推送給所有瀏覽用戶。接下來分別統(tǒng)計(jì)兩個頁面的用戶轉(zhuǎn)化率,即可清晰的了解到兩種設(shè)計(jì)的優(yōu)劣。
2、多變量測試
多變量(Multivariate)測試,是從A/B測試延伸出來的概念。A/B測試中,你需要創(chuàng)建多個頁面來進(jìn)行轉(zhuǎn)化率測試,而多變量測試則是利用“模塊化”的思維方法——你的頁面(被劃分成多個模塊)在測試時(shí)不需要額外做多個版本,而是直接動態(tài)地分配頁面的這些模塊,讓不同的頁面模塊組合顯示給不同的訪問者。這樣,就能通過一些相對復(fù)雜的數(shù)學(xué)工具來研究頁面各部分之間的關(guān)系和相互作用,而不僅僅只是哪個頁面的版本更有用。
五、bootstrap-自舉法
所謂的Bootstrapping法就是利用有限的樣本資料經(jīng)由多次重復(fù)抽樣,重新建立起足以代表母體樣本分布之新樣本。
對于一個采樣,我們只能計(jì)算出某個統(tǒng)計(jì)量(例如均值)的一個取值,無法知道均值統(tǒng)計(jì)量的分布情況。但是通過自助法(自舉法)我們可以模擬出均值統(tǒng)計(jì)量的近似分布。有了分布很多事情就可以做了(比如說有你推出的結(jié)果來進(jìn)而推測實(shí)際總體的情況)。
bootstrapping方法的實(shí)現(xiàn)很簡單,假設(shè)你抽取的樣本大小為n:
在原樣本中有放回的抽樣,抽取n次。每抽一次形成一個新的樣本,重復(fù)操作,形成很多新樣本,通過這些樣本就可以計(jì)算出樣本的一個分布。新樣本的數(shù)量多少合適呢?大概1000就差不多行了,如果計(jì)算成本很小,或者對精度要求比較高,就增加新樣本的數(shù)量。
最后這種方法的準(zhǔn)確性和什么有關(guān)呢?這個我還不是清楚,猜測是和原樣本的大小n,和Bootstrapping產(chǎn)生的新樣本的數(shù)量有關(guān)系,越大的話越是精確,更詳細(xì)的就不清楚了,想知道話做個搞幾個已知的分布做做實(shí)驗(yàn)應(yīng)該就清楚了。
六、直方圖的bin
“hist”?is?short?for?“Histogram(直方圖、柱狀圖)”。
1.N?=?hist(Y)
bins?the?elements?of?Y?into?10?equally?spaced?containers?and?returns?the?number?of?elements?in?each?container.??If?Y?is?a?matrix,?hist?works?down?the?columns.
(將向量Y的元素平均分到十個等間隔的容器中,并且返回每個容器的元素個數(shù)。如果Y是一個矩陣,hist指令逐列元素操作。Y為向量的情形見例1和2,為矩陣的情形見例3.)
例1.執(zhí)行指令
>>?Y?=?[1:10];
>>?hist(Y)
得到
10個藍(lán)色方條,每個方條對應(yīng)一個容器,其長度代表容器中數(shù)據(jù)的多少。由圖知,容器中的數(shù)據(jù)量均為1。這個例子不夠典型,見例2.
例2.執(zhí)行指令
>>??Y?=?[1,?2,?2,?5,?6,?6,?8,?11];
>>?hist(Y)
得到
Y最大為11,最小為1,故而將區(qū)間[1,11]均分為10分,分別為[1,?2],?(2,3],?(3,4],?(4,5],?(5,6],?(6,7],?(7,8],?(8,9],?(9,10],?(10,11].
七、正則化方法:L1和L2?regularization、數(shù)據(jù)集擴(kuò)增、dropout
時(shí)間:2015-03-14?18:32:59
標(biāo)簽:機(jī)器學(xué)習(xí)???正則化???過擬合
本文是《Neural?networks?and?deep?learning》概覽?中第三章的一部分,講機(jī)器學(xué)習(xí)/深度學(xué)習(xí)算法中常用的正則化方法。
1、正則化方法:防止過擬合,提高泛化能力
在訓(xùn)練數(shù)據(jù)不夠多時(shí),或者overtraining時(shí),常常會導(dǎo)致overfitting(過擬合)。其直觀的表現(xiàn)如下圖所示,隨著訓(xùn)練過程,網(wǎng)絡(luò)在training?data上的error漸漸減小,但是在驗(yàn)證集上的error卻反而漸漸增大——因?yàn)橛?xùn)練出來的網(wǎng)絡(luò)過擬合了訓(xùn)練集,對訓(xùn)練集外的數(shù)據(jù)卻不work。
為了防止overfitting,可以用的方法有很多,下文就將以此展開。有一個概念需要先說明,在機(jī)器學(xué)習(xí)算法中,我們常常將原始數(shù)據(jù)集分為三部分:training?data、validation?data,testing?data。這個validation?data是什么?它其實(shí)就是用來避免過擬合的,在訓(xùn)練過程中,我們通常用它來確定一些超參數(shù)(比如根據(jù)validation?data上的accuracy來確定early?stopping的epoch大小、根據(jù)validation?data確定learning?rate等等)。那為啥不直接在testing?data上做這些呢?因?yàn)槿绻趖esting?data做這些,那么隨著訓(xùn)練的進(jìn)行,我們的網(wǎng)絡(luò)實(shí)際上就是在一點(diǎn)一點(diǎn)地overfitting我們的testing?data,導(dǎo)致最后得到的testing?accuracy沒有任何參考意義。因此,training?data的作用是計(jì)算梯度更新權(quán)重,validation?data如上所述,testing?data則給出一個accuracy以判斷網(wǎng)絡(luò)的好壞。
避免過擬合的方法有很多:early?stopping、數(shù)據(jù)集擴(kuò)增(Data?augmentation)、正則化(Regularization)包括L1、L2(L2?regularization也叫weight?decay),dropout。
2、L2?regularization(權(quán)重衰減)
L2正則化就是在代價(jià)函數(shù)后面再加上一個正則化項(xiàng):
C0代表原始的代價(jià)函數(shù),后面那一項(xiàng)就是L2正則化項(xiàng),它是這樣來的:所有參數(shù)w的平方的和,除以訓(xùn)練集的樣本大小n。λ就是正則項(xiàng)系數(shù),權(quán)衡正則項(xiàng)與C0項(xiàng)的比重。另外還有一個系數(shù)1/2,1/2經(jīng)常會看到,主要是為了后面求導(dǎo)的結(jié)果方便,后面那一項(xiàng)求導(dǎo)會產(chǎn)生一個2,與1/2相乘剛好湊整。
L2正則化項(xiàng)是怎么避免overfitting的呢?我們推導(dǎo)一下看看,先求導(dǎo):
可以發(fā)現(xiàn)L2正則化項(xiàng)對b的更新沒有影響,但是對于w的更新有影響:
在不使用L2正則化時(shí),求導(dǎo)結(jié)果中w前系數(shù)為1,現(xiàn)在w前面系數(shù)為?1-ηλ/n?,因?yàn)棣?、λ、n都是正的,所以?1-ηλ/n小于1,它的效果是減小w,這也就是權(quán)重衰減(weight?decay)的由來。當(dāng)然考慮到后面的導(dǎo)數(shù)項(xiàng),w最終的值可能增大也可能減小。
另外,需要提一下,對于基于mini-batch的隨機(jī)梯度下降,w和b更新的公式跟上面給出的有點(diǎn)不同:
對比上面w的更新公式,可以發(fā)現(xiàn)后面那一項(xiàng)變了,變成所有導(dǎo)數(shù)加和,乘以η再除以m,m是一個mini-batch中樣本的個數(shù)。
到目前為止,我們只是解釋了L2正則化項(xiàng)有讓w“變小”的效果,但是還沒解釋為什么w“變小”可以防止overfitting?人們普遍認(rèn)為:更小的權(quán)值w,從某種意義上說,表示網(wǎng)絡(luò)的復(fù)雜度更低,對數(shù)據(jù)的擬合剛剛好(這個法則也叫做奧卡姆剃刀)。而在實(shí)際應(yīng)用中,也驗(yàn)證了這一點(diǎn),L2正則化的效果往往好于未經(jīng)正則化的效果。
3、L1?regularization
在原始的代價(jià)函數(shù)后面加上一個L1正則化項(xiàng),即所有權(quán)重w的絕對值的和,乘以λ/n(這里不像L2正則化項(xiàng)那樣,需要再乘以1/2,具體原因上面已經(jīng)說過。)
同樣先計(jì)算導(dǎo)數(shù):
上式中sgn(w)表示w的符號。那么權(quán)重w的更新規(guī)則為:
比原始的更新規(guī)則多出了η?*?λ?*?sgn(w)/n這一項(xiàng)。當(dāng)w為正時(shí),更新后的w變小。當(dāng)w為負(fù)時(shí),更新后的w變大——因此它的效果就是讓w往0靠,使網(wǎng)絡(luò)中的權(quán)重盡可能為0,也就相當(dāng)于減小了網(wǎng)絡(luò)復(fù)雜度,防止過擬合。
另外,上面沒有提到一個問題,當(dāng)w為0時(shí)怎么辦?當(dāng)w等于0時(shí),|W|是不可導(dǎo)的,所以我們只能按照原始的未經(jīng)正則化的方法去更新w,這就相當(dāng)于去掉η*λ*sgn(w)/n這一項(xiàng),所以我們可以規(guī)定sgn(0)=0,這樣就把w=0的情況也統(tǒng)一進(jìn)來了。(在編程的時(shí)候,令sgn(0)=0,sgn(w>0)=1,sgn(w<0)=-1)
4、Dropout
L1、L2正則化是通過修改代價(jià)函數(shù)來實(shí)現(xiàn)的,而Dropout則是通過修改神經(jīng)網(wǎng)絡(luò)本身來實(shí)現(xiàn)的,它是在訓(xùn)練網(wǎng)絡(luò)時(shí)用的一種技巧(trike)。它的流程如下:
假設(shè)我們要訓(xùn)練上圖這個網(wǎng)絡(luò),在訓(xùn)練開始時(shí),我們隨機(jī)地“刪除”一半的隱層單元,視它們?yōu)椴淮嬖?,得到如下的網(wǎng)絡(luò):
保持輸入輸出層不變,按照BP算法更新上圖神經(jīng)網(wǎng)絡(luò)中的權(quán)值(虛線連接的單元不更新,因?yàn)樗鼈儽弧芭R時(shí)刪除”了)。
以上就是一次迭代的過程,在第二次迭代中,也用同樣的方法,只不過這次刪除的那一半隱層單元,跟上一次刪除掉的肯定是不一樣的,因?yàn)槲覀兠恳淮蔚际恰半S機(jī)”地去刪掉一半。第三次、第四次……都是這樣,直至訓(xùn)練結(jié)束。
以上就是Dropout,它為什么有助于防止過擬合呢?可以簡單地這樣解釋,運(yùn)用了dropout的訓(xùn)練過程,相當(dāng)于訓(xùn)練了很多個只有半數(shù)隱層單元的神經(jīng)網(wǎng)絡(luò)(后面簡稱為“半數(shù)網(wǎng)絡(luò)”),每一個這樣的半數(shù)網(wǎng)絡(luò),都可以給出一個分類結(jié)果,這些結(jié)果有的是正確的,有的是錯誤的。隨著訓(xùn)練的進(jìn)行,大部分半數(shù)網(wǎng)絡(luò)都可以給出正確的分類結(jié)果,那么少數(shù)的錯誤分類結(jié)果就不會對最終結(jié)果造成大的影響。
更加深入地理解,可以看看Hinton和Alex兩牛2012的論文《ImageNet?Classification?with?Deep?Convolutional?Neural?Networks》
5、數(shù)據(jù)集擴(kuò)增(data?augmentation)
“有時(shí)候不是因?yàn)樗惴ê泌A了,而是因?yàn)閾碛懈嗟臄?shù)據(jù)才贏了?!?/p>
不記得原話是哪位大牛說的了,hinton?從中可見訓(xùn)練數(shù)據(jù)有多么重要,特別是在深度學(xué)習(xí)方法中,更多的訓(xùn)練數(shù)據(jù),意味著可以用更深的網(wǎng)絡(luò),訓(xùn)練出更好的模型。
既然這樣,收集更多的數(shù)據(jù)不就行啦?如果能夠收集更多可以用的數(shù)據(jù),當(dāng)然好。但是很多時(shí)候,收集更多的數(shù)據(jù)意味著需要耗費(fèi)更多的人力物力,有弄過人工標(biāo)注的同學(xué)就知道,效率特別低,簡直是粗活。
所以,可以在原始數(shù)據(jù)上做些改動,得到更多的數(shù)據(jù),以圖片數(shù)據(jù)集舉例,可以做各種變換,如:
將原始圖片旋轉(zhuǎn)一個小角度
添加隨機(jī)噪聲
一些有彈性的畸變(elastic?distortions),論文《Best?practices?for?convolutional?neural?networks?applied?to?visual?document?analysis》對MNIST做了各種變種擴(kuò)增。
截?。╟rop)原始圖片的一部分。比如DeepID中,從一副人臉圖中,截取出了100個小patch作為訓(xùn)練數(shù)據(jù),極大地增加了數(shù)據(jù)集。感興趣的可以看《Deep?learning?face?representation?from?predicting?10,000?classes》.
更多數(shù)據(jù)意味著什么?
用50000個MNIST的樣本訓(xùn)練SVM得出的accuracy94.48%,用5000個MNIST的樣本訓(xùn)練NN得出accuracy為93.24%,所以更多的數(shù)據(jù)可以使算法表現(xiàn)得更好。在機(jī)器學(xué)習(xí)中,算法本身并不能決出勝負(fù),不能武斷地說這些算法誰優(yōu)誰劣,因?yàn)閿?shù)據(jù)對算法性能的影響很大。
八、boosting和bagging
Bagging?和?Boosting?都是一種將幾個弱分類器(可以理解為分類或者回歸能力不好的分類器)按照一定規(guī)則組合在一起從而變成一個強(qiáng)分類器。但二者的組合方式有所區(qū)別。
一、Bagging
Bagging的思想很簡單,我選取一堆弱分類器用于分類,然后最終結(jié)果投票決定,哪個票數(shù)多就屬于哪一類。不過Bagging的一個重要步驟就是在訓(xùn)練每一個弱分類器的時(shí)候不是用整個樣本來做分類,而是在樣本中隨機(jī)抽取一系列的樣本集,可以重復(fù)也可以數(shù)目少于原樣本,這就是Bootstraping。Bagging的思想簡單,應(yīng)用很廣泛,最出名的應(yīng)用就是Random?Forest。
二、Boosting
Booting的思想與Bagging有所不同。第一個不同,在輸入樣本的選取上,Bagging是隨機(jī)抽取樣本,而Boosting則是按照前一個分類器的錯誤率來抽取樣本。好比前一個分類器在樣本A,B,F上出錯了,那么我們會提升抽取這三個樣本的概率來幫助我們訓(xùn)練分類器。第二個不同,在弱分類器組合上,Bagging就是投票就好啦,但是Boosting確實(shí)不是這樣,Boosting主要是將分類器線性組合起來,以為著分類器前面帶著個權(quán)重,錯誤率高的分類器的權(quán)重會低一些,正確率高的則高一些,這樣線性組合起來就是最終的結(jié)果。當(dāng)然也有非線性組合的權(quán)重,但在這里就不贅述了。Boosting最出名的應(yīng)用就是Gradient?Boosting?Decision?Tree,我們會在一篇文章中介紹。
參考內(nèi)容:http://blog.csdn.net/u012162613/article/details/44261657
End.
轉(zhuǎn)載請注明來自36大數(shù)據(jù)(36dsj.com):36大數(shù)據(jù) » “小數(shù)據(jù)”的統(tǒng)計(jì)學(xué)
愛盈利-運(yùn)營小咖秀 始終堅(jiān)持研究分享移動互聯(lián)網(wǎng)App數(shù)據(jù)運(yùn)營推廣經(jīng)驗(yàn)、策略、全案、渠道等純干貨知識內(nèi)容;是廣大App運(yùn)營從業(yè)者的知識啟蒙、成長指導(dǎo)、進(jìn)階學(xué)習(xí)的集聚平臺;