Deep Learning(深度學習)學習筆記整理系列之(一)
Deep Learning(深度學習)學習筆記整理系列
作者:Zouxy
version 1.0 2013-04-08
宣告:
1)該Deep Learning的學習系列是整理自網上很大牛和機器學習專家所無私奉獻的資料的。具體引用的資料請看參考文獻。具體的版本宣告也參考原文獻。
2)本文僅供學術交流,非商用。所以每一部分具體的參考資料並沒有詳細對應。如果某部分不小心侵犯了大家的利益,還望海涵,並聯系博主刪除。
3)本人才疏學淺,整理總結的時候難免出錯,還望各位前輩不吝指正,謝謝。
4)閱讀本文需要機器學習、計算機視覺、神經網路等等基礎(如果沒有也沒關係了,沒有就看看,能不能看懂,呵呵)。
5)此屬於第一版本,若有錯誤,還需繼續修正與增刪。還望大家多多指點。大家都共享一點點,一起為祖國科研的推進添磚加瓦(呵呵,好高尚的目標啊)。請聯絡:
目錄:
一、概述
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之前,我們有必要再囉嗦下特徵(呵呵,實際上是看到那麼好的對特徵的解釋,不放在這裡有點可惜,所以就塞到這了)。
下續