国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

關于深度學習(deep learning)

ZweiZhao / 1687人閱讀

摘要:在每一層學習到的結果表示作為下一層的輸入用監督訓練來調整所有層加上一個或者更多的用于產生預測的附加層當前,國外在這方面的研究就是三分天下的局面,的與微軟合作,的和合作,以及的計算機科學家和。深度學習的入門材料。

轉載自:http://doctorimage.cn/2013/01/04/%e5%85%b3%e4%ba%8e%e6%b7%b1%e5%ba%a6%e5%ad%a6%e4%b9%a0deep-learning/ by:zerocv


說起對深度學習的了解,是在今年10月份看了 Stanford University的計算機科學家Andrew Y. Ng教授在Google的一個演講視頻開始的,看了之后還以為就是以前所說的artificial neutral network(人工神經網絡),這個東西在本世紀初就逐漸越來越少人研究了,特別是在support vector machine(SVM, 支持向量機)以其較強的分類能力和泛化能力出現之后,國內高校更沒什么人在搞這個,這從高校的一些課題和基金項目就可以看出來,這種東西怎么又突然有人講 了呢?懷著一絲疑問,我查閱了一些相關的報道,不查不要緊,一查才知道這東西現在是多火。
首先看到的報道 是在今年夏季,Google的技術人員Jeff Dean和Stanford University的Andrew Y. Ng把1.6萬臺電腦連在一起,使其能夠自我訓練,對2萬個不同物體的1400萬張圖片進行辨識。盡管準確率較低,只有15.8%,但該系統的表現比之前 較先進的系統都要好70%。 另一則類似的報道是Google把從YouTube隨機挑選的1000萬張200 x 200像素的圖輸入其系統,讓計算機尋找圖像中一再重復出現的特征,從而對含有這種特征的物體進行識別,令我感到最神奇的是,在開始分析數據前,并不需要 向系統輸入任何諸如”臉、肢體、貓的長相是什么樣子”這類信息。一旦系統發現了重復出現的圖像信息,計算機就創建出”圖像地圖”,該地圖稍后會幫助系統自 動檢測與前述圖像信息類似的物體(關于這部分的報道,可以參見我原來9月份的一篇博文)。原來以為無監督學習是用在clustering上的,現在在 classification上,無監督學習也能如此,確實令我感慨。

視頻地址:http://v.youku.com/v_show/id_XNDcyOTU3NDc2.html

再接著,看到了今年10月份在天津的一次計算 會議上,微軟首席科學家Richard F. Rashid在上面演講關于語音識別的時候,演示了其使用深度學習技術(他的原話是:deep neural network,深度神經網絡,屬于深度學習的一種)來提高語音識別準確率的效果(), 相比目前較先進的基于Hidden Markov Model的技術,其準確率提升了大約30%(If you use that to take it much more data than had previously been able to be used with the hidden markov models, so that one change that particular break through increased recognition rates by approximately thirty percent)。然而,在7分35秒的時候,我也抑制不住地”哇”起來,原來,那個系統在進行語音識別的同時,還進行了識別,把英文翻譯成了中文,不僅 如此,它還學習了Richard的發音和腔調,用中文把翻譯的結果念了出來,博得現場一片掌聲。雖然仔細一看,有些中文還是沒有實時翻譯過來,發出中文聲 音也需要在原說話人發音之后大約2秒左右,但這已經是非常之牛,想想國內語音識別的先驅科大訊飛,目前還真是無法望其項背。

這種即將對我們的未來產生巨大改變的技術,到底是一種什么神秘的東西
,其中的原理又到底什么,帶著這種探索與求知的欲望,我開始利用工作之余的時間進行學習了解。

國內來說,應該是在今年和去年才在開始受到關注,然而,早在2006年,國外就已經開始這方面的深入研究,并取得了 一定的階段性成果,追根溯源,這還是基于神經網絡的啟發。在2006年前,神經網絡嘗試訓練深度的架構都不是很成功,訓練一個深度有監督前饋神經網絡趨向 于產生壞的結果(也即在訓練和測試中誤差的收斂性不好),然后將其變淺為1個或2個隱層。2006年,University of Toronto的Geoffrey E. Hinton教授(一查他的背景才知道他原來是19世紀數學家George Boole的玄孫,George Boole在邏輯領域的工作構成了現代數碼計算機的基礎,難道天分這東西還真是得遺傳-_-)在Deep Belief Networks(DBN,深度信念網)這方面有了革命性的突破,引發了國外在方面的研究熱潮。在其引領之下,有了這三篇重要的論文:

2006年的A fast learning algorithm for deep belief nets .( Hinton, G. E., Osindero, S. and Teh)

2007年的Greedy Layer-Wise Training of Deep Networks(Yoshua Bengio, Pascal Lamblin, Dan Popovici and Hugo Larochelle)

2007年的Efficient Learning of Sparse Representations with an Energy-Based Model(Marc’Aurelio Ranzato, Christopher Poultney, Sumit Chopra and Yann LeCun)

在這三篇論文中以下主要原理被發現:

1. 無監督學習的結果表示被用于(預)訓練每一層;

2. 在一個時間里的一個層次的無監督訓練,接著之前訓練的層次。在每一層學習到的結果表示作為下一層的輸入;

3. 用監督訓練來調整所有層(加上一個或者更多的用于產生預測的附加層);

當前,國外在這方面的研究就是三分天下的局面,University of Toronto的Geoffrey E. Hinton與微軟合作,Stanford University的Andrew Y. Ng和Google合作,以及New York University的計算機科學家Yann LeCun和Rob Fergus。國內方面百度的于凱是這方面的先行者;據說企鵝也在招人搞這個,又據說是在做索引結構方面也能有一個質的飛躍,一篇文章提取特征后就剩一個 20維的向量,也還不確定是否真能如此神,另外還有文獻提到可以用來做detection,因為目前adaboost確實是在訓練上很花時間,自己之前在 家搞了個手表的訓練,也花了一周時間,而深度學習在特征選擇方面還是挺有優勢的,不過之前看Andrew教授的視頻,提到未監督學習用在做 detection上還是沒有什么突破,不知道這里做檢測效果會怎樣;學術界現在在這塊就是在與時間賽跑,誰先跑出個成果誰就是第一個吃螃蟹的(做人臉的 山世光也對于凱在這方面的report挺看重)。下面就先附上一些個人覺得比較重要的相關論文,其中部分還未細讀,有些因為放在springlink或者 sciencedirect上無法下載,待有時間再請人找找后深入學習。


Learning multiple layers of representation, 2007.

這篇論文,篇幅短小,適合初學者理解DBNs,特別是非數學專業的。


Deep machine learning – a new frontier in artificial intelligence research, 2010.

深度學習的入門材料。


Learning deep architecture for AI, 2009.

深度學習的經典論文,可以當作深度學習的學習材料。


To recognize shapes, first learn to generate images, 2006.

多倫多大學的內部講義。目前還沒找到。


A fast learning algorithm for deep belief nets, 2006.

Hinton關于DBNs的開山之作,也就是前面提到的引領性的文章。在這篇論文中,作者詳細闡述了DBNs的方方面面,論證了其和一組層疊的RBMs的等價性,然后引出DBNs的學習算法。(這篇還真得好好看幾遍)


Reducing the dimensionality of data with neural networks, 2006.

未讀,據說是Science上的大作,可算作一個里程碑,標志著深度學習總算有了高效的可行的算法。


A practical guide to training restricted boltzmann machines, 2010.

訓練RBM的指導書,里面對一些參數的設置也說明得比較清楚,
如果要自己寫這方面的code,這篇可以說是必讀的了,俺可是花了一個禮拜才算是把這個弄清楚七八成,再花了一個禮拜才整出了code。



The difficulty of training deep architectures and the effect of unsupervised pretraining, 2009.

Why Does Unsupervised Pre-training Help Deep Learning?, 2010.

闡述了非監督預訓練的作用。這兩篇可以結合起來一起看。

目前先整理這么多,由于RBM在監督學習和未監督學習的code還在整,目前只用了CD算法,用在識別手寫體和去 噪,效果是已經出來,但由于是對照著那篇RBM的指導書來寫的,代碼方面比較凌亂,所以還得花時間再整理整理,下次再把原理和結合一小點偽代碼放到 blog上吧。

關于RBM和CD

在 神經網絡中,兩層神經網絡(即一個hidden層和一個output層,visible層不算在內)的建模能力是很強的,但要求hidden層的節點數夠 多,但節點數太多就會導致計算量的復雜,矩陣的維護會相當大。一個很好想到的方法就是將層數加大,通過層數的增多來緩解單層中節點數過多的負擔,比如設置 兩個hidden層,每層100個節點,就相當于單個hidden層100×100個節點的建模能力,同理三個hidden層,每層分別是100、 200、300個節點,就相當于單層的100×200×300個節點的建模能力。然而這樣做的問題在于,當層數大于2時,經典的訓練方法效果會較差,因為 參數的局部極小值太多,容易收斂到一個不好的極值。Hinton把RBM(Restricted Boltzmann Machine)層疊在一起,訓練出權值,然后把這個權值當成是下一個RBM層的輸入作為權值的初始值,利用傳統的梯度下降法去訓練網絡,得到了更好的結 果,也即在每個RBM層通過篩選得到較好的參數初始值,使得最后的結果更好。

Boltzmann Machine其實是一種無向圖,里面的節點是互相連接的,但不一定是全連接,也即不是每個節點都兩兩相連,連接著的兩個節點之間就有一個權值。為理解方 便就假設節點只能取值為0或者1,有些節點值是已知的,有些是未知的,把已知的節點集合記為V,未知的節點集合記為H,這樣就把所有節點分成兩個集合,其 實集合V就可以認為是visible層,集合H就可以認為是hidden層。如果hidden層中的節點都不互相連接,visible層中的節點也都不互 相連接,那么就成為了RBM模型。

為了理解方便,考慮訓練樣本是一些二值圖像, 將其進行向量化,得到二值向量的一個集合作為訓練集,這些訓練集就可以構建一個兩層的成為RBM的網絡,對于這些像素值就可以關聯為visible層中的 節點,因為它們像素值是”可見的”(像素值已知),特征的檢測器就關聯為hidden層中的節點,根據Hopfiled(了解神經網絡的應該沒什么人不知 道他了,Hopfiled Network)在1982年給出的一個能量函數的定義,定義一個函數來標記hidden中的某一個節點h和visible層中的某一個節點v之間的能 量:


010413_1448_deeplea1.png (1)

其中 010413_1448_deeplea2.png 010413_1448_deeplea3.png 分別是visible層和hidden層的狀態值, 010413_1448_deeplea4.png 010413_1448_deeplea5.png 分別是它們的bias值, 010413_1448_deeplea6.png 就是兩個節點之間的weight。而網絡通過另一個能量函數給每一對 010413_1448_deeplea7.png 節點對分配了一個概率值:

010413_1448_deeplea8.png (2)

而網絡給每個visible層節點分配的概率值就是把所有可能的與它相連的hidden層節點的概率值相加,也即:


010413_1448_deeplea9.png (3)

在 傳統的神經網絡中就可以知道,網絡分配給每個訓練樣本的概率值是可以調節的,通過對weight和bias的調整來使該樣本的能量降低并提高其它樣本的能 量,就可以使這個概率值變大,這其實從(2)式也可以看出,隨著能量遞增,概率值是遞減的。由于能量是作為指數,所以為了求解方便就加上了取對數log操 作,對log(p(v))關于weight求導來求得極值,所以得:


010413_1448_deeplea10.png (4)

<>表示求期望,式子第一項是指已知樣本集時, 010413_1448_deeplea11.png 的期望,這時的 010413_1448_deeplea12.png 是由樣本確定的,而 010413_1448_deeplea13.png 是未知的,第二項是模型中 010413_1448_deeplea14.png 的期望,這時的 010413_1448_deeplea15.png 010413_1448_deeplea16.png 均是未知的。由于在RBM中,hidden層的節點并沒有直接相連,所以要獲取 010413_1448_deeplea17.png 的無偏采樣是可以的,對于一個隨機選取的訓練樣本 010413_1448_deeplea18.png ,其每一個hidden層節點 010413_1448_deeplea19.png 狀態量為1的概率是:

010413_1448_deeplea20.png (5)

其中 010413_1448_deeplea21.png 是logistic sigmoid函數也即 010413_1448_deeplea22.png

同理,在visible層的節點并沒有直接相連,所以要獲取visible層節點狀態量的無偏采樣也是可以的,對于一個已知的hidden層的向量h,由其反退回去得到 010413_1448_deeplea23.png 的狀態量為1的概率值是:

010413_1448_deeplea24.png (6)

然而,要得到 010413_1448_deeplea25.png 的無偏采樣,就沒有那么容易了。它可以通過抽樣法得到,隨機選定一個visible層的節點由(6)式得到 010413_1448_deeplea26.png ,將其結果代入(5)式得到 010413_1448_deeplea27.png ,從而得到 010413_1448_deeplea28.png 的第一個采樣,再將(5)式子結果代入(6)式,(6)結果代入(5),從而得到 010413_1448_deeplea29.png 的第二個采樣,如此反復,最后這個抽樣過程得到的抽樣分布就收斂于模型的真實分布 010413_1448_deeplea30.png ,這個采樣過程其實就是Gibbs采樣,Gibbs采樣是Metropolis-Hastings算法得到的特殊情況,而Metropolis- Hastings算法其實就是Markov Chain Monte Carlo(MCMC)算法的一種,用于產生Markov Chain。這種方式需要一個很長的采樣過程。Hinton提出了一個較為快速的方法,他先把所有的visible層節點的狀態設置為一個向量,使用 (5)式得到所有hidden層節點的概率值,并根據這個概率值將節點設置為1或者0(將概率值與一個隨機生成的(0,1)之間的浮點數去比較,大于該隨 機數則該節點狀態量置為1,否則為0),再由(6)式返回計算visible層節點值(也即重構過程),進而得到 010413_1448_deeplea31.png 的一個估計,也即權重weight的更新方式由
010413_1448_deeplea32.png (7)

變為:
010413_1448_deeplea33.png (8)

這種方式雖然只是粗略近似訓練數據的log概率的梯度,但是學習效果卻還是很好,其學習規則更接近于另一個決策函數的極值化,這個函 數是Contrastive Divergence(CD),也就是兩個Kullback-Liebler divergences(KL divergences)的差值。
在使用CD時,必須注意要把hidden節點值置為二值化形式(0或1),而不是直接采用其概率值本身,因為這樣做的話,在進行重構的時候,每個 hidden節點就和visible節點的真實值發生了聯系,這會導致違反如下基本規則:每個hidden節點最多只能有一個狀態量,也即它不能既是0又 是1。然而,在最后一次更新hidden節點時,就不可以使用二值狀態量了,因為此時已經沒有什么是依賴于”哪個狀態量被選中”,也即哪個狀態為0或為1 并不造成什么影響,所以應該是使用(5)式所得的概率值本身,以避免不必要的采樣噪聲,在使用CDn時只有最后一次更新才可以如此使用概率值本身。
RBM的指導書中還提到,在選擇用于學習的數據時,假設visible層節點是使用真實的概率值而不是使用隨機的二值狀態,那么獲取visible層與hidden層節點連接數據的方式有兩種: 010413_1448_deeplea34.png 或者 010413_1448_deeplea35.png ,其中 010413_1448_deeplea36.png 是一個概率值,而 010413_1448_deeplea37.png 以這個概率值取值為1。使用第一種方式更接近于RBM的數學模型,而使用第二種方式能有較少的采樣噪聲且學習速度更快。
關于初始weight和bias的設置方面,RBM指導書建議,weight初始化為一些小的隨機制,這些隨機值服從均值為0、方差為0.01的高斯分 布,使用較大的值可以加速這個學習過程,但是學習效果卻不是很好,而且要注意確保初始值不會使visible節點的概率值非常接近0或者1,以避免早熟。 bias的初始值,通常visible層節點狀態值為1的,bias初始值設為 010413_1448_deeplea38.png

根據RBM指導書,本人使用單層無監督訓練, 將結果用于去噪的實驗,訓練樣本為5000,訓練時間約為1.5分鐘,再從測試樣本集中隨機選擇70個進行測試,運行時間大約為12毫秒。在進行分類識別 的實驗中,只使用單層的RBM,測試樣本為1000時識別率可以達到89%以上,耗時約為62毫秒;多層的RBM由于涉及到隱層節點數的設置,所以還需要 進行多種嘗試才可以得到較佳效果(曾嘗試過三個隱層,節點數分別為100、200、300,識別率為90.1%,時間約為160毫秒),但可以肯定的是識 別率是在單層效果之上。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/4282.html

相關文章

  • Deep Learning深度學習學習筆記整理

    摘要:深度學習學習筆記整理系列作者聲明該的學習系列是整理自網上很大牛和機器學習專家所無私奉獻的資料的。但是自年以來,機器學習領域,取得了突破性的進展。 Deep Learning(深度學習)學習筆記整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0? 2013-04-08聲明:1)該Deep Lea...

    Cheriselalala 評論0 收藏0
  • Python入門深度學習完整指南

    摘要:通過書籍學習,比如除了上述的先學知識,你還應該了解一些流行的深度學習庫和運行他們的語言。你也可以查看查看的中的第講,概要性的了解一些深度學習庫。 作者:chen_h微信號 & QQ:862251340微信公眾號:coderpai簡書地址:https://www.jianshu.com/p/cd0... 原文:https://www.analyticsvidhya.c... 介紹 ...

    ztyzz 評論0 收藏0
  • DeepLearning.ai 深度學習筆記》發布,黃海廣博士整理

    摘要:在這堂課中,學生將可以學習到深度學習的基礎,學會構建神經網絡,包括和等。課程中也會有很多實操項目,幫助學生更好地應用自己學到的深度學習技術,解決真實世界問題。 深度學習入門首推課程就是吳恩達的深度學習專項課程系列的 5 門課。該專項課程最大的特色就是內容全面、通俗易懂并配備了豐富的實戰項目。今天,給大家推薦一份關于該專項課程的核心筆記!這份筆記只能用兩個字形容:全面! showImg(...

    wenhai.he 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<