偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

小心訓(xùn)練模型,數(shù)據(jù)少也可以玩轉(zhuǎn)深度學(xué)習(xí)

開發(fā) 開發(fā)工具
最近,Jeff Leek發(fā)表了一篇文章,認(rèn)為只有獲得了谷歌、Facebook 這樣規(guī)模的數(shù)據(jù)才有資格做深度學(xué)習(xí)。對(duì)于這點(diǎn) Andrew L. Beam(本文作者)闡述了自己的觀點(diǎn),機(jī)器之心對(duì)此進(jìn)行了編譯。

最近,Jeff Leek 在 Simply Stats 上發(fā)表了一篇題為「如果你的數(shù)據(jù)量不夠大就不要使用深度學(xué)習(xí)」(Don't use deep learning your data isn't that big)的文章(鏈接見文末),認(rèn)為只有獲得了谷歌、Facebook 這樣規(guī)模的數(shù)據(jù)才有資格做深度學(xué)習(xí)。對(duì)于這點(diǎn) Andrew L. Beam(本文作者)并不反對(duì),他認(rèn)為這使我們清楚地意識(shí)到深度學(xué)習(xí)并不是一種***的靈藥;但是,雖然 Beam 同意其核心觀點(diǎn),但是其還有很多不明確或不清晰的地方,并且 Beam 認(rèn)為只要小心地訓(xùn)練模型,就能在小數(shù)據(jù)設(shè)置中使用深度學(xué)習(xí)。機(jī)器之心對(duì)該文進(jìn)行了編譯,原文鏈接請(qǐng)見文末。

Jeff Leek 采用兩種方法基于 MNIST 數(shù)據(jù)集對(duì)手寫字體進(jìn)行分類。他對(duì)比了五層神經(jīng)網(wǎng)絡(luò)(激活函數(shù)使用的是 hyperbolic tangent)的系統(tǒng)和 Leekasso,Leekasso 僅僅使用了帶最小邊際 p-value 的 10 塊像素。他驚訝地表明,在使用少量樣本時(shí),Leekasso 要比神經(jīng)網(wǎng)絡(luò)性能更加出色。

對(duì)比了五層神經(jīng)網(wǎng)絡(luò)(激活函數(shù)使用的是 hyperbolic tangent)的系統(tǒng)和 Leekasso

難道如果你的樣本量小于 100,就因?yàn)槟P蜁?huì)過擬合并且會(huì)得出較差的性能而不能使用深度學(xué)習(xí)?可能情況就是如此,深度學(xué)習(xí)模型十分復(fù)雜,并且有許多訓(xùn)練的技巧,我總感覺缺乏模型收斂性/復(fù)雜度訓(xùn)練也許才是性能較差的原因,而不是過擬合。

深度學(xué)習(xí) VS. Leekasso Redux

首先***件事就是建立一個(gè)使用該數(shù)據(jù)集的深度學(xué)習(xí)模型,也就是現(xiàn)代版的多層感知機(jī)(MLP)和卷積神經(jīng)網(wǎng)絡(luò)(CNN)。如果 Leek 的文章是正確的話,那么當(dāng)只有少量樣本時(shí),這些模型應(yīng)該會(huì)產(chǎn)生嚴(yán)重的過擬合。

我們構(gòu)建了一個(gè)激活函數(shù)為 RELU 的簡單 MLP 和一個(gè)像 VGG 那樣的卷積模型,然后我們?cè)俦容^它們和 Leekasso 性能的差異。

所有的代碼都可下載:https://github.com/beamandrew/deep_learning_works/blob/master/mnist.py

多層感知機(jī)模型是非常標(biāo)準(zhǔn)的:

多層感知機(jī)模型是非常標(biāo)準(zhǔn)的

CNN 模型也和以前的十分相似:

CNN 模型也和以前的十分相似

作為參考,MLP 大約有 12 萬個(gè)參數(shù),而 CNN 大約有 20 萬個(gè)參數(shù)。根據(jù)原文的假設(shè),當(dāng)我們有這么多的參數(shù)和少量樣本時(shí),模型好像真的會(huì)出錯(cuò)。

我們盡可能地靠近原始分析,我們使用了 5 層交叉驗(yàn)證(5-fold cross validation),但使用了標(biāo)準(zhǔn) MNIST 測(cè)試集進(jìn)行評(píng)估(大約有 2000 張測(cè)試樣本)。我們將測(cè)試集分為兩部分,上半部分用于評(píng)估訓(xùn)練過程的收斂,而下半部分用于測(cè)量樣本預(yù)測(cè)的準(zhǔn)確度。我們甚至沒有調(diào)整這些模型,對(duì)于大多數(shù)超參數(shù),僅僅只是使用合理的默認(rèn)值。

我們盡可能地重新構(gòu)建了原文中 Leekasso 和 MLP 的 Python 版本。代碼可以在此處下載:

https://github.com/beamandrew/deep_learning_works/blob/master/mnist.py

以下是每個(gè)模型的樣本精度:

每個(gè)模型的樣本精度

這兩個(gè)模型的精度和原來的分析有很大的不同,原始分析中對(duì)小樣本使用 MLP 仍然有很差的效果,但我們的神經(jīng)網(wǎng)絡(luò)在各種樣本大小的情況下都可以達(dá)到非常***的精度。

為什么會(huì)這樣?

眾所周知,深度學(xué)習(xí)模型的訓(xùn)練往往對(duì)細(xì)節(jié)要求極高,而知道如何「調(diào)參」是一件非常重要的技能。許多超參數(shù)的調(diào)整是非常具體的問題(特別是關(guān)于 SGD 的超參數(shù)),而錯(cuò)誤地調(diào)參會(huì)導(dǎo)致整個(gè)模型的性能大幅度下降。如果你在構(gòu)建深度學(xué)習(xí)模型,那么就一定要記?。耗P偷募?xì)節(jié)是十分重要的,你需要當(dāng)心任何看起來像深度學(xué)習(xí)那樣的黑箱模型。

下面是我對(duì)原文模型出現(xiàn)問題的猜測(cè):

  • 激活函數(shù)是十分重要的,而 tanh 神經(jīng)網(wǎng)絡(luò)又難以訓(xùn)練。這也就是為什么激活函數(shù)已經(jīng)大量轉(zhuǎn)而使用類似「RELU」這樣的函數(shù)。
  • 確保隨機(jī)梯度下降是收斂的。在原始比較中,模型只訓(xùn)練了 20 個(gè) epoch,這可能是不夠的。因?yàn)楫?dāng) n=10 個(gè)樣本時(shí),20 個(gè) epochs 僅僅只有 20∗10=200 次的梯度迭代更新。而遍歷全部的 MNIST 數(shù)據(jù)集大概相當(dāng)于 6 萬次梯度更新,并且更常見的是遍歷數(shù)百到數(shù)千次(大約百萬次梯度更新)。如果我們僅僅執(zhí)行 200 次梯度更新,那么我們需要比較大的學(xué)習(xí)率,否則模型就不會(huì)收斂。h2o.deeplearning() 的默認(rèn)學(xué)習(xí)率是 0.005,這對(duì)于少量的更新次數(shù)來說太小了。而我們使用的模型需要訓(xùn)練 200 個(gè) epoch,并且在前 50 次 epoch 中,我們能看到樣本精度有很大的一個(gè)提高。因此我猜測(cè)模型不收斂可以解釋兩者樣本精度的巨大差別。
  • 經(jīng)常檢查超參數(shù)的默認(rèn)值。Keras 之所以這么優(yōu)秀,是因?yàn)槠淠J(rèn)參數(shù)值通常反映了當(dāng)前的***訓(xùn)練,但同時(shí)我們也需要確保選擇的參數(shù)符合我們的問題。
  • 不同的框架可能得出很不一樣的結(jié)果。我嘗試使用原 R 代碼去觀察能不能得到相似的結(jié)果。然而,我并不能使用 h2o.deeplearning() 函數(shù)得出一個(gè)優(yōu)異的結(jié)果。我猜測(cè)可能是和其使用的優(yōu)化過程有關(guān),其好像使用的是彈性均值 SGD 以計(jì)算多個(gè)結(jié)點(diǎn)而加速訓(xùn)練。我不知道當(dāng)你僅有少量樣本數(shù)據(jù)時(shí)會(huì)不會(huì)出現(xiàn)故障,但我認(rèn)為可能性是很大的。

幸好,RStudio 那些人太好了,他們剛剛發(fā)布了 Keras 的 R 接口:https://rstudio.github.io/keras/,這樣我就可以完全用 R 語言重建我的 Python 代碼了。我們之前使用 MLP 用 R 實(shí)現(xiàn)了就是這樣:

我將這個(gè)放進(jìn)了 Jeff 的 R 代碼中,并重新生成了原來的圖表。我對(duì) Leekasso 進(jìn)行了一點(diǎn)修改。原來的代碼使用了 lm()(即線性回歸),我覺得很奇怪,所以我切換成了 glm()(即 logistic 回歸)。新的圖表如下所示:

深度學(xué)習(xí)真是厲害了!一個(gè)類似的現(xiàn)象可能能夠解釋 Leekasso 的 Python 和 R 版本之間的不同。Python 版本的 logistic 回歸使用了 liblinear 作為其解算器,我認(rèn)為這比 R 默認(rèn)的解算器更加可靠一點(diǎn)。這可能會(huì)有影響,因?yàn)?Leekasso 選擇的變量是高度共線性的(collinear)。

這個(gè)問題太簡單了,以致于不能說明什么有意義的東西。我重新運(yùn)行了 Leekasso,但僅使用了***的預(yù)測(cè)器,其結(jié)果幾乎完全等同于全 Leekasso。實(shí)際上,我確定我可以做出一個(gè)不使用數(shù)據(jù)的且具有高準(zhǔn)確度的分類器。只需要取其中心像素,如果是黑色,則預(yù)測(cè) 1,否則就預(yù)測(cè) 0,正如 David Robinson 指出的那樣:

David 還指出,大多數(shù)數(shù)字對(duì)(pairs of numbers)都可以由單個(gè)像素進(jìn)行分類。所以,這個(gè)問題很可能不能給我們帶來任何關(guān)于「真實(shí)」小數(shù)據(jù)場(chǎng)景的見解,我們應(yīng)當(dāng)對(duì)其結(jié)論保持適當(dāng)?shù)膽岩伞?/p>

關(guān)于深度學(xué)習(xí)為什么有效的誤解

最終,我想要重新回到 Jeff 在文中所提出的觀點(diǎn),尤其是這個(gè)聲明:

問題在于:實(shí)際上僅有少數(shù)幾個(gè)企業(yè)有足夠數(shù)據(jù)去做深度學(xué)習(xí),[…] 但是我經(jīng)常思考的是,在更簡單的模型上使用深度學(xué)習(xí)的主要優(yōu)勢(shì)是如果你有大量數(shù)據(jù)就可以擬合大量的參數(shù)。

這篇文章,尤其是***一部分,在我看來并不完整。很多人似乎把深度學(xué)習(xí)看成一個(gè)巨大的黑箱,有大量可以學(xué)習(xí)任何函數(shù)的參數(shù),只要你有足夠的數(shù)據(jù)。神經(jīng)網(wǎng)絡(luò)當(dāng)然是極其靈活的,這種靈活性正是其成功原因的一部分,但不是全部,不是嗎?

畢竟,這種超級(jí)靈活的模型在機(jī)器學(xué)習(xí)和統(tǒng)計(jì)學(xué)中有著 70 多年的發(fā)展歷史。我并不認(rèn)為神經(jīng)網(wǎng)絡(luò)是先驗(yàn)(priori)的,我也不認(rèn)為比同等復(fù)雜度的其他算法更靈活。

下面是我對(duì)其成功所作的原因總結(jié):

  • 在偏差/方差折衷中一切都是一個(gè)練習(xí)。更明白地講,我認(rèn)為 Jeff 真正在做的辯駁是關(guān)于模型復(fù)雜度和偏差/方差折衷。如果你沒有很多數(shù)據(jù),很可能訓(xùn)練一個(gè)簡單模型(高偏差/低方差)要比復(fù)雜模型(低偏差/高方差)效果更好。客觀來講,在大多數(shù)情況下這是一個(gè)好建議,然而...
  • 神經(jīng)網(wǎng)絡(luò)有很多技術(shù)來防范過擬合。神經(jīng)網(wǎng)絡(luò)有很多參數(shù),按照 Jeff 的觀點(diǎn)如果我們沒有足夠的數(shù)據(jù)去可靠地評(píng)估這些參數(shù)值,將會(huì)導(dǎo)致高方差。我們清楚地意識(shí)到了這個(gè)問題,并且開發(fā)了很多降低方差的技術(shù)。比如 dropout 結(jié)合隨機(jī)梯度下降導(dǎo)致了一個(gè)像 bagging 一樣糟糕的處理,但是這是發(fā)生在網(wǎng)絡(luò)參數(shù)上,而不是輸入變量。方差降低技術(shù)(比如 dropout)以其他模型難以復(fù)制的方式被加進(jìn)了訓(xùn)練程序。這使得你可以真正訓(xùn)練大模型,即使沒有太多數(shù)據(jù)。
  • 深度學(xué)習(xí)允許你輕易地把問題的具體約束直接整合進(jìn)模型以降低方差。這是我想說明的最重要的一點(diǎn),也是我們以前經(jīng)常忽視的一點(diǎn)。由于其模塊化,神經(jīng)網(wǎng)絡(luò)使你可以真正整合,極大降低模型方差的強(qiáng)約束(先驗(yàn))。***的一個(gè)實(shí)例是卷積神經(jīng)網(wǎng)絡(luò)。在 CNN 中,我們實(shí)際上把圖像的屬性編碼進(jìn)模型本身。例如,當(dāng)我們指定一個(gè)大小為 3x3 的過濾器時(shí),實(shí)際上是在直接告訴網(wǎng)絡(luò)本地連接的像素的小集群將包含有用的信息。此外,我們還可以把圖像的平移和旋轉(zhuǎn)不變性直接編碼進(jìn)模型。所有這些都將模型偏差至圖像屬性,以極大地降低方差,提升預(yù)測(cè)性能。
  • 你并不需要擁有谷歌量級(jí)的數(shù)據(jù)。以上所述意味著即使人均 100 到 1000 個(gè)樣本也能從深度學(xué)習(xí)中受益。通過所有這些技術(shù),我們可以改善方差問題,而且依然可以從其靈活性中受益。你甚至可以通過遷移學(xué)習(xí)來創(chuàng)建其他工作。

總結(jié)一下,我認(rèn)為上述原因很好地解釋了為什么深度學(xué)習(xí)在實(shí)踐中奏效,打破了深度學(xué)習(xí)需要大量參數(shù)和數(shù)據(jù)的假設(shè)。***,本文并不是想說 Jeff 的觀點(diǎn)錯(cuò)了,而是旨在提供一個(gè)不同的新視角,為讀者帶來啟發(fā)。

原文:http://beamandrew.github.io/deeplearning/2017/06/04/deep_learning_works.html

【本文是51CTO專欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)譯文,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2022-02-11 10:46:25

人工智能機(jī)器學(xué)習(xí)深度學(xué)習(xí)

2020-11-02 14:38:56

Java 深度學(xué)習(xí)模型

2017-02-08 17:29:17

遷移大數(shù)據(jù)深度學(xué)習(xí)

2023-01-09 08:00:00

遷移學(xué)習(xí)機(jī)器學(xué)習(xí)數(shù)據(jù)集

2017-07-27 14:50:59

深度學(xué)習(xí)遷移學(xué)習(xí)花式調(diào)優(yōu)

2022-05-10 10:19:04

AI深度學(xué)習(xí)模型

2023-07-24 15:20:05

機(jī)器學(xué)習(xí)集成學(xué)習(xí)

2019-08-05 14:10:26

WindowLinuxRedis

2023-03-13 14:41:22

機(jī)器學(xué)習(xí)算法

2020-10-13 14:42:42

深度學(xué)習(xí)Windows人工智能

2023-02-23 07:46:48

學(xué)習(xí)模型數(shù)據(jù)倉庫

2024-08-27 00:00:01

AI應(yīng)用框架

2023-07-11 09:51:04

訓(xùn)練模型

2020-08-10 15:05:02

機(jī)器學(xué)習(xí)人工智能計(jì)算機(jī)

2020-07-02 14:35:44

模型人工智能方案

2017-06-09 13:36:33

人工智能深度學(xué)習(xí)

2023-11-19 23:36:50

2018-02-07 14:19:16

深度學(xué)習(xí)機(jī)器學(xué)習(xí)模型

2025-01-14 13:20:56

2017-10-18 09:48:13

深度學(xué)習(xí)TensorFlow入門篇
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)