聲明:
1)該Deep Learning的學習系列是整理自網上很大牛和機器學習專家所無私奉獻的資料的。具體引用的資料請看參考文獻。具體的版本聲明也參考原文獻。 2)本文僅供學術交流,非商用。所以每一部分具體的參考資料並沒有詳細對應。如果某部分不小心侵犯了大家的利益,還望海涵,並聯系博主刪除。 3)閱讀本文需要機器學習、計算機視覺、神經網絡等等基礎(如果沒有也沒關係了,沒有就看看)。 目錄: 六、淺層學習(Shallow Learning)和深度學習(Deep Learning) 七、Deep learning與Neural Network 9.3、Restricted Boltzmann Machine(RBM)限制波爾茲曼機 9.5、Convolutional Neural Networks卷積神經網絡
一、概述 Artificial Intelligence,也就是人工智能,就像長生不老和星際漫遊一樣,是人類最美好的夢想之一。雖然計算機技術已經取得了長足的進步,但是到目前爲止,還沒有一臺電腦能產生“自我”的意識。是的,在人類和大量現成數據的幫助下,電腦可以表現的十分強大,但是離開了這兩者,它甚至都不能分辨一個喵星人和一個汪星人。 圖靈(圖靈,大家都知道吧。計算機和人工智能的鼻祖,分別對應於其著名的“圖靈機”和“圖靈測試”)在 1950 年的論文裏,提出圖靈試驗的設想,即,隔牆對話,你將不知道與你談話的,是人還是電腦。這無疑給計算機,尤其是人工智能,預設了一個很高的期望值。但是半個世紀過去了,人工智能的進展,遠遠沒有達到圖靈試驗的標準。這不僅讓多年翹首以待的人們,心灰意冷,認爲人工智能是忽悠,相關領域是“僞科學”。 但是自 2006 年以來,機器學習領域,取得了突破性的進展。圖靈試驗,至少不是那麼可望而不可及了。至於技術手段,不僅僅依賴於雲計算對大數據的並行處理能力,而且依賴於算法。這個算法就是,Deep Learning。藉助於 Deep Learning 算法,人類終於找到了如何處理“抽象概念”這個亙古難題的方法。
2012年6月,《紐約時報》披露了Google Brain項目,吸引了公衆的廣泛關注。這個項目是由著名的斯坦福大學的機器學習教授Andrew Ng和在大規模計算機系統方面的世界頂尖專家JeffDean共同主導,用16000個CPU Core的並行計算平臺訓練一種稱爲“深度神經網絡”(DNN,Deep Neural Networks)的機器學習模型(內部共有10億個節點。這一網絡自然是不能跟人類的神經網絡相提並論的。要知道,人腦中可是有150多億個神經元,互相連接的節點也就是突觸數更是如銀河沙數。曾經有人估算過,如果將一個人的大腦中所有神經細胞的軸突和樹突依次連接起來,並拉成一根直線,可從地球連到月亮,再從月亮返回地球),在語音識別和圖像識別等領域獲得了巨大的成功。 項目負責人之一Andrew稱:“我們沒有像通常做的那樣自己框定邊界,而是直接把海量數據投放到算法中,讓數據自己說話,系統會自動從數據中學習。”另外一名負責人Jeff則說:“我們在訓練的時候從來不會告訴機器說:‘這是一隻貓。’系統其實是自己發明或者領悟了“貓”的概念。” 2012年11月,微軟在中國天津的一次活動上公開演示了一個全自動的同聲傳譯系統,講演者用英文演講,後臺的計算機一氣呵成自動完成語音識別、英中機器翻譯和中文語音合成,效果非常流暢。據報道,後面支撐的關鍵技術也是DNN,或者深度學習(DL,DeepLearning)。 2013年1月,在百度年會上,創始人兼CEO李彥宏高調宣佈要成立百度研究院,其中第一個成立的就是“深度學習研究所”(IDL,Institue of Deep Learning)。
爲什麼擁有大數據的互聯網公司爭相投入大量資源研發深度學習技術。聽起來感覺deeplearning很牛那樣。那什麼是deep learning?爲什麼有deep learning?它是怎麼來的?又能幹什麼呢?目前存在哪些困難呢?這些問題的簡答都需要慢慢來。咱們先來了解下機器學習(人工智能的核心)的背景。
二、背景 機器學習(Machine Learning)是一門專門研究計算機怎樣模擬或實現人類的學習行爲,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能的學科。機器能否像人類一樣能具有學習能力呢?1959年美國的塞繆爾(Samuel)設計了一個下棋程序,這個程序具有學習能力,它可以在不斷的對弈中改善自己的棋藝。4年後,這個程序戰勝了設計者本人。又過了3年,這個程序戰勝了美國一個保持8年之久的常勝不敗的冠軍。這個程序向人們展示了機器學習的能力,提出了許多令人深思的社會問題與哲學問題(呵呵,人工智能正常的軌道沒有很大的發展,這些什麼哲學倫理啊倒發展的挺快。什麼未來機器越來越像人,人越來越像機器啊。什麼機器會反人類啊,ATM是開第一槍的啊等等。人類的思維無窮啊)。 機器學習雖然發展了幾十年,但還是存在很多沒有良好解決的問題:
例如圖像識別、語音識別、自然語言理解、天氣預測、基因表達、內容推薦等等。目前我們通過機器學習去解決這些問題的思路都是這樣的(以視覺感知爲例子):
從開始的通過傳感器(例如CMOS)來獲得數據。然後經過預處理、特徵提取、特徵選擇,再到推理、預測或者識別。最後一個部分,也就是機器學習的部分,絕大部分的工作是在這方面做的,也存在很多的paper和研究。 而中間的三部分,概括起來就是特徵表達。良好的特徵表達,對最終算法的準確性起了非常關鍵的作用,而且系統主要的計算和測試工作都耗在這一大部分。但,這塊實際中一般都是人工完成的。靠人工提取特徵。
截止現在,也出現了不少NB的特徵(好的特徵應具有不變性(大小、尺度和旋轉等)和可區分性):例如Sift的出現,是局部圖像特徵描述子研究領域一項里程碑式的工作。由於SIFT對尺度、旋轉以及一定視角和光照變化等圖像變化都具有不變性,並且SIFT具有很強的可區分性,的確讓很多問題的解決變爲可能。但它也不是萬能的。
然而,手工地選取特徵是一件非常費力、啓發式(需要專業知識)的方法,能不能選取好很大程度上靠經驗和運氣,而且它的調節需要大量的時間。既然手工選取特徵不太好,那麼能不能自動地學習一些特徵呢?答案是能!Deep Learning就是用來幹這個事情的,看它的一個別名UnsupervisedFeature Learning,就可以顧名思義了,Unsupervised的意思就是不要人蔘與特徵的選取過程。 那它是怎麼學習的呢?怎麼知道哪些特徵好哪些不好呢?我們說機器學習是一門專門研究計算機怎樣模擬或實現人類的學習行爲的學科。好,那我們人的視覺系統是怎麼工作的呢?爲什麼在茫茫人海,芸芸衆生,滾滾紅塵中我們都可以找到另一個她(因爲,你存在我深深的腦海裏,我的夢裏 我的心裏 我的歌聲裏……)。人腦那麼NB,我們能不能參考人腦,模擬人腦呢?(好像和人腦扯上點關係的特徵啊,算法啊,都不錯,但不知道是不是人爲強加的,爲了使自己的作品變得神聖和高雅。) 近幾十年以來,認知神經科學、生物學等等學科的發展,讓我們對自己這個神祕的而又神奇的大腦不再那麼的陌生。也給人工智能的發展推波助瀾。
三、人腦視覺機理 1981 年的諾貝爾醫學獎,頒發給了 David Hubel(出生於加拿大的美國神經生物學家) 和TorstenWiesel,以及 Roger Sperry。前兩位的主要貢獻,是“發現了視覺系統的信息處理”:可視皮層是分級的:
我們看看他們做了什麼。1958 年,DavidHubel 和Torsten Wiesel 在 JohnHopkins University,研究瞳孔區域與大腦皮層神經元的對應關係。他們在貓的後腦頭骨上,開了一個3 毫米的小洞,向洞裏插入電極,測量神經元的活躍程度。 然後,他們在小貓的眼前,展現各種形狀、各種亮度的物體。並且,在展現每一件物體時,還改變物體放置的位置和角度。他們期望通過這個辦法,讓小貓瞳孔感受不同類型、不同強弱的刺激。 之所以做這個試驗,目的是去證明一個猜測。位於後腦皮層的不同視覺神經元,與瞳孔所受刺激之間,存在某種對應關係。一旦瞳孔受到某一種刺激,後腦皮層的某一部分神經元就會活躍。經歷了很多天反覆的枯燥的試驗,同時犧牲了若干只可憐的小貓,David Hubel 和Torsten Wiesel 發現了一種被稱爲“方向選擇性細胞(Orientation Selective Cell)”的神經元細胞。當瞳孔發現了眼前的物體的邊緣,而且這個邊緣指向某個方向時,這種神經元細胞就會活躍。 這個發現激發了人們對於神經系統的進一步思考。神經-中樞-大腦的工作過程,或許是一個不斷迭代、不斷抽象的過程。 這裏的關鍵詞有兩個,一個是抽象,一個是迭代。從原始信號,做低級抽象,逐漸向高級抽象迭代。人類的邏輯思維,經常使用高度抽象的概念。 例如,從原始信號攝入開始(瞳孔攝入像素 Pixels),接着做初步處理(大腦皮層某些細胞發現邊緣和方向),然後抽象(大腦判定,眼前的物體的形狀,是圓形的),然後進一步抽象(大腦進一步判定該物體是隻氣球)。
這個生理學的發現,促成了計算機人工智能,在四十年後的突破性發展。 總的來說,人的視覺系統的信息處理是分級的。從低級的V1區提取邊緣特徵,再到V2區的形狀或者目標的部分等,再到更高層,整個目標、目標的行爲等。也就是說高層的特徵是低層特徵的組合,從低層到高層的特徵表示越來越抽象,越來越能表現語義或者意圖。而抽象層面越高,存在的可能猜測就越少,就越利於分類。例如,單詞集合和句子的對應是多對一的,句子和語義的對應又是多對一的,語義和意圖的對應還是多對一的,這是個層級體系。 敏感的人注意到關鍵詞了:分層。而Deep learning的deep是不是就表示我存在多少層,也就是多深呢?沒錯。那Deep learning是如何借鑑這個過程的呢?畢竟是歸於計算機來處理,面對的一個問題就是怎麼對這個過程建模? 因爲要學習的是特徵的表達,那麼關於特徵,或者說關於這個層級特徵,就需要了解地更深入點。所以在說Deep Learning之前,有必要再囉嗦下特徵(呵呵,實際上是看到那麼好的對特徵的解釋,不放在這裏有點可惜,所以就塞到這了)。 |
Deep Learning學習筆記整理系列之一
接下來的幾篇文章是三年前學習Deep Learning的筆記整理,同樣是從從自己的QQ(632846506)日誌中移過來的。https://user.qzone.qq.com/632846506/infocenter。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.