Deep Learning(深度學習)之(一)特徵以及訓練方法

文章推薦指數: 80 %
投票人數:10人

4.3、結構性特徵表示. 4.4、需要有多少個特徵? 五、Deep Learning的基本思想. 六、淺層學習(Shallow Learning)和深度學習(Deep Learning). 程式語言前端開發IOS開發Android開發雲端運算人工智慧伺服器搜尋資料庫軟體開發工具DeepLearning(深度學習)之(一)特徵以及訓練方法2018.07.15程式語言ArtificialIntelligence,deep,deep原則,deep映象,deep無人駕駛,deep的單音,ImageProcessing,machine-learning,SparseRepresentation(CS),深度學習HOME程式語言DeepLearning(深度學習)之(一)特徵以及訓練方法Advertisementhttp://blog.csdn.net/boon_228/article/details/51700418目錄:一、概述二、背景三、人腦視覺機理四、關於特徵    4.1、特徵表示的粒度    4.2、初級(淺層)特徵表示    4.3、結構性特徵表示    4.4、需要有多少個特徵?五、DeepLearning的基本思想六、淺層學習(ShallowLearning)和深度學習(DeepLearning)七、Deeplearning與NeuralNetwork八、Deeplearning訓練過程    8.1、傳統神經網路的訓練方法    8.2、deeplearning訓練過程九、DeepLearning的常用模型或者方法    9.1、AutoEncoder自動編碼器    9.2、SparseCoding稀疏編碼    9.3、RestrictedBoltzmannMachine(RBM)限制波爾茲曼機    9.4、DeepBeliefNetworks深信度網路    9.5、ConvolutionalNeuralNetworks卷積神經網路十、總結與展望十一、參考文獻和DeepLearning學習資源 一、概述      ArtificialIntelligence,也就是人工智慧,就像長生不老和星際漫遊一樣,是人類最美好的夢想之一。

雖然計算機技術已經取得了長足的進步,但是到目前為止,還沒有一臺電腦能產生“自我”的意識。

是的,在人類和大量現成資料的幫助下,電腦可以表現的十分強大,但是離開了這兩者,它甚至都不能分辨一個喵星人和一個汪星人。

      圖靈(圖靈,大家都知道吧。

計算機和人工智慧的鼻祖,分別對應於其著名的“圖靈機”和“圖靈測試”)在1950年的論文裡,提出圖靈試驗的設想,即,隔牆對話,你將不知道與你談話的,是人還是電腦。

這無疑給計算機,尤其是人工智慧,預設了一個很高的期望值。

但是半個世紀過去了,人工智慧的進展,遠遠沒有達到圖靈試驗的標準。

這不僅讓多年翹首以待的人們,心灰意冷,認為人工智慧是忽悠,相關領域是“偽科學”。

       但是自2006年以來,機器學習領域,取得了突破性的進展。

圖靈試驗,至少不是那麼可望而不可及了。

至於技術手段,不僅僅依賴於雲端計算對大資料的並行處理能力,而且依賴於演算法。

這個演算法就是,DeepLearning。

藉助於DeepLearning演算法,人類終於找到了如何處理“抽象概念”這個亙古難題的方法。

      2012年6月,《紐約時報》披露了GoogleBrain專案,吸引了公眾的廣泛關注。

這個專案是由著名的斯坦福大學的機器學習教授AndrewNg和在大規模計算機系統方面的世界頂尖專家JeffDean共同主導,用16000個CPUCore的平行計算平臺訓練一種稱為“深度神經網路”(DNN,DeepNeuralNetworks)的機器學習模型(內部共有10億個節點。

這一網路自然是不能跟人類的神經網路相提並論的。

要知道,人腦中可是有150多億個神經元,互相連線的節點也就是突觸數更是如銀河沙數。

曾經有人估算過,如果將一個人的大腦中所有神經細胞的軸突和樹突依次連線起來,並拉成一根直線,可從地球連到月亮,再從月亮返回地球),在語音識別和影象識別等領域獲得了巨大的成功。

      專案負責人之一Andrew稱:“我們沒有像通常做的那樣自己框定邊界,而是直接把海量資料投放到演算法中,讓資料自己說話,系統會自動從資料中學習。

”另外一名負責人Jeff則說:“我們在訓練的時候從來不會告訴機器說:‘這是一隻貓。

’系統其實是自己發明或者領悟了“貓”的概念。

”        2012年11月,微軟在中國天津的一次活動上公開演示了一個全自動的同聲傳譯系統,講演者用英文演講,後臺的計算機一氣呵成自動完成語音識別、英中機器翻譯和中文語音合成,效果非常流暢。

據報道,後面支撐的關鍵技術也是DNN,或者深度學習(DL,DeepLearning)。

      2013年1月,在百度年會上,創始人兼CEO李彥巨集高調宣佈要成立百度研究院,其中第一個成立的就是“深度學習研究所”(IDL,InstitueofDeepLearning)。

       為什麼擁有大資料的網際網路公司爭相投入大量資源研發深度學習技術。

聽起來感覺deeplearning很牛那樣。

那什麼是deeplearning?為什麼有deeplearning?它是怎麼來的?又能幹什麼呢?目前存在哪些困難呢?這些問題的簡答都需要慢慢來。

咱們先來了解下機器學習(人工智慧的核心)的背景。

 二、背景     機器學習(MachineLearning)是一門專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的效能的學科。

機器能否像人類一樣能具有學習能力呢?1959年美國的塞繆爾(Samuel)設計了一個下棋程式,這個程式具有學習能力,它可以在不斷的對弈中改善自己的棋藝。

4年後,這個程式戰勝了設計者本人。

又過了3年,這個程式戰勝了美國一個保持8年之久的常勝不敗的冠軍。

這個程式向人們展示了機器學習的能力,提出了許多令人深思的社會問題與哲學問題(呵呵,人工智慧正常的軌道沒有很大的發展,這些什麼哲學倫理啊倒發展的挺快。

什麼未來機器越來越像人,人越來越像機器啊。

什麼機器會反人類啊,ATM是開第一槍的啊等等。

人類的思維無窮啊)。

       機器學習雖然發展了幾十年,但還是存在很多沒有良好解決的問題:       例如影象識別、語音識別、自然語言理解、天氣預測、基因表達、內容推薦等等。

目前我們通過機器學習去解決這些問題的思路都是這樣的(以視覺感知為例子):       從開始的通過感測器(例如CMOS)來獲得資料。

然後經過預處理、特徵提取、特徵選擇,再到推理、預測或者識別。

最後一個部分,也就是機器學習的部分,絕大部分的工作是在這方面做的,也存在很多的paper和研究。

       而中間的三部分,概括起來就是特徵表達。

良好的特徵表達,對最終演算法的準確性起了非常關鍵的作用,而且系統主要的計算和測試工作都耗在這一大部分。

但,這塊實際中一般都是人工完成的。

靠人工提取特徵。

      截止現在,也出現了不少NB的特徵(好的特徵應具有不變性(大小、尺度和旋轉等)和可區分性):例如Sift的出現,是區域性影象特徵描述子研究領域一項里程碑式的工作。

由於SIFT對尺度、旋轉以及一定視角和光照變化等影象變化都具有不變性,並且SIFT具有很強的可區分性,的確讓很多問題的解決變為可能。

但它也不是萬能的。

      然而,手工地選取特徵是一件非常費力、啟發式(需要專業知識)的方法,能不能選取好很大程度上靠經驗和運氣,而且它的調節需要大量的時間。

既然手工選取特徵不太好,那麼能不能自動地學習一些特徵呢?答案是能!DeepLearning就是用來幹這個事情的,看它的一個別名UnsupervisedFeatureLearning,就可以顧名思義了,Unsupervised的意思就是不要人蔘與特徵的選取過程。

      那它是怎麼學習的呢?怎麼知道哪些特徵好哪些不好呢?我們說機器學習是一門專門研究計算機怎樣模擬或實現人類的學習行為的學科。

好,那我們人的視覺系統是怎麼工作的呢?為什麼在茫茫人海,芸芸眾生,滾滾紅塵中我們都可以找到另一個她(因為,你存在我深深的腦海裡,我的夢裡我的心裡我的歌聲裡……)。

人腦那麼NB,我們能不能參考人腦,模擬人腦呢?(好像和人腦扯上點關係的特徵啊,演算法啊,都不錯,但不知道是不是人為強加的,為了使自己的作品變得神聖和高雅。

)       近幾十年以來,認知神經科學、生物學等等學科的發展,讓我們對自己這個神祕的而又神奇的大腦不再那麼的陌生。

也給人工智慧的發展推波助瀾。

 三、人腦視覺機理      1981年的諾貝爾醫學獎,頒發給了DavidHubel(出生於加拿大的美國神經生物學家)和TorstenWiesel,以及RogerSperry。

前兩位的主要貢獻,是“發現了視覺系統的資訊處理”:可視皮層是分級的:       我們看看他們做了什麼。

1958年,DavidHubel和TorstenWiesel在JohnHopkinsUniversity,研究瞳孔區域與大腦皮層神經元的對應關係。

他們在貓的後腦頭骨上,開了一個3毫米的小洞,向洞裡插入電極,測量神經元的活躍程度。

     然後,他們在小貓的眼前,展現各種形狀、各種亮度的物體。

並且,在展現每一件物體時,還改變物體放置的位置和角度。

他們期望通過這個辦法,讓小貓瞳孔感受不同型別、不同強弱的刺激。

      之所以做這個試驗,目的是去證明一個猜測。

位於後腦皮層的不同視覺神經元,與瞳孔所受刺激之間,存在某種對應關係。

一旦瞳孔受到某一種刺激,後腦皮層的某一部分神經元就會活躍。

經歷了很多天反覆的枯燥的試驗,同時犧牲了若干只可憐的小貓,DavidHubel和TorstenWiesel發現了一種被稱為“方向選擇性細胞(OrientationSelectiveCell)”的神經元細胞。

當瞳孔發現了眼前的物體的邊緣,而且這個邊緣指向某個方向時,這種神經元細胞就會活躍。

      這個發現激發了人們對於神經系統的進一步思考。

神經-中樞-大腦的工作過程,或許是一個不斷迭代、不斷抽象的過程。

      這裡的關鍵詞有兩個,一個是抽象,一個是迭代。

從原始訊號,做低階抽象,逐漸向高階抽象迭代。

人類的邏輯思維,經常使用高度抽象的概念。

       例如,從原始訊號攝入開始(瞳孔攝入畫素Pixels),接著做初步處理(大腦皮層某些細胞發現邊緣和方向),然後抽象(大腦判定,眼前的物體的形狀,是圓形的),然後進一步抽象(大腦進一步判定該物體是隻氣球)。

     這個生理學的發現,促成了計算機人工智慧,在四十年後的突破性發展。

      總的來說,人的視覺系統的資訊處理是分級的。

從低階的V1區提取邊緣特徵,再到V2區的形狀或者目標的部分等,再到更高層,整個目標、目標的行為等。

也就是說高層的特徵是低層特徵的組合,從低層到高層的特徵表示越來越抽象,越來越能表現語義或者意圖。

而抽象層面越高,存在的可能猜測就越少,就越利於分類。

例如,單詞集合和句子的對應是多對一的,句子和語義的對應又是多對一的,語義和意圖的對應還是多對一的,這是個層級體系。

     敏感的人注意到關鍵詞了:分層。

而Deeplearning的deep是不是就表示我存在多少層,也就是多深呢?沒錯。

那Deeplearning是如何借鑑這個過程的呢?畢竟是歸於計算機來處理,面對的一個問題就是怎麼對這個過程建模?      因為我們要學習的是特徵的表達,那麼關於特徵,或者說關於這個層級特徵,我們需要了解地更深入點。

所以在說DeepLearning之前,我們有必要再囉嗦下特徵。

四、關於特徵       特徵是機器學習系統的原材料,對最終模型的影響是毋庸置疑的。

如果資料被很好的表達成了特徵,通常線性模型就能達到滿意的精度。

那對於特徵,我們需要考慮什麼呢?4.1、特徵表示的粒度       學習演算法在一個什麼粒度上的特徵表示,才有能發揮作用?就一個圖片來說,畫素級的特徵根本沒有價值。

例如下面的摩托車,從畫素級別,根本得不到任何資訊,其無法進行摩托車和非摩托車的區分。

而如果特徵是一個具有結構性(或者說有含義)的時候,比如是否具有車把手(handle),是否具有車輪(wheel),就很容易把摩托車和非摩托車區分,學習演算法才能發揮作用。

  4.2、初級(淺層)特徵表示       既然畫素級的特徵表示方法沒有作用,那怎樣的表示才有用呢?       1995年前後,BrunoOlshausen和DavidField兩位學者任職CornellUniversity,他們試圖同時用生理學和計算機的手段,雙管齊下,研究視覺問題。

       他們收集了很多黑白風景照片,從這些照片中,提取出400個小碎片,每個照片碎片的尺寸均為16×16畫素,不妨把這400個碎片標記為S[i],i=0,..399。

接下來,再從這些黑白風景照片中,隨機提取另一個碎片,尺寸也是16×16畫素,不妨把這個碎片標記為T。

        他們提出的問題是,如何從這400個碎片中,選取一組碎片,S[k],通過疊加的辦法,合成出一個新的碎片,而這個新的碎片,應當與隨機選擇的目標碎片T,儘可能相似,同時,S[k]的數量儘可能少。

用數學的語言來描述,就是:       Sum_k(a[k]*S[k])–>T,    其中a[k]是在疊加碎片S[k]時的權重係數。

       為解決這個問題,BrunoOlshausen和DavidField發明了一個演算法,稀疏編碼(SparseCoding)。

       稀疏編碼是一個重複迭代的過程,每次迭代分兩步:1)選擇一組S[k],然後調整a[k],使得Sum_k(a[k]*S[k])最接近T。

2)固定住a[k],在400個碎片中,選擇其它更合適的碎片S’[k],替代原先的S[k],使得Sum_k(a[k]*S’[k])最接近T。

        經過幾次迭代後,最佳的S[k]組合,被遴選出來了。

令人驚奇的是,被選中的S[k],基本上都是照片上不同物體的邊緣線,這些線段形狀相似,區別在於方向。

       BrunoOlshausen和DavidField的演算法結果,與DavidHubel和TorstenWiesel的生理髮現,不謀而合!       也就是說,複雜圖形,往往由一些基本結構組成。

比如下圖:一個圖可以通過用64種正交的edges(可以理解成正交的基本結構)來線性表示。

比如樣例的x可以用1-64個edges中的三個按照0.8,0.3,0.5的權重調和而成。

而其他基本edge沒有貢獻,因此均為0。

       另外,大牛們還發現,不僅影象存在這個規律,聲音也存在。

他們從未標註的聲音中發現了20種基本的聲音結構,其餘的聲音可以由這20種基本結構合成。

  4.3、結構性特徵表示       小塊的圖形可以由基本edge構成,更結構化,更復雜的,具有概念性的圖形如何表示呢?這就需要更高層次的特徵表示,比如V2,V4。

因此V1看畫素級是畫素級。

V2看V1是畫素級,這個是層次遞進的,高層表達由底層表達的組合而成。

專業點說就是基basis。

V1取提出的basis是邊緣,然後V2層是V1層這些basis的組合,這時候V2區得到的又是高一層的basis。

即上一層的basis組合的結果,上上層又是上一層的組合basis……(所以有大牛說Deeplearning就是“搞基”,因為難聽,所以美其名曰Deeplearning或者UnsupervisedFeatureLearning)       直觀上說,就是找到makesense的小patch再將其進行combine,就得到了上一層的feature,遞迴地向上learningfeature。

       在不同object上做training是,所得的edgebasis是非常相似的,但objectparts和models就會completelydifferent了(那咱們分辨car或者face是不是容易多了):       從文字來說,一個doc表示什麼意思?我們描述一件事情,用什麼來表示比較合適?用一個一個字嘛,我看不是,字就是畫素級別了,起碼應該是term,換句話說每個doc都由term構成,但這樣表示概念的能力就夠了嘛,可能也不夠,需要再上一步,達到topic級,有了topic,再到doc就合理。

但每個層次的數量差距很大,比如doc表示的概念->topic(千-萬量級)->term(10萬量級)->word(百萬量級)。

       一個人在看一個doc的時候,眼睛看到的是word,由這些word在大腦裡自動切詞形成term,在按照概念組織的方式,先驗的學習,得到topic,然後再進行高層次的learning。

 4.4、需要有多少個特徵?      我們知道需要層次的特徵構建,由淺入深,但每一層該有多少個特徵呢?任何一種方法,特徵越多,給出的參考資訊就越多,準確性會得到提升。

但特徵多意味著計算複雜,探索的空間大,可以用來訓練的資料在每個特徵上就會稀疏,都會帶來各種問題,並不一定特徵越多越好。

             好了,到了這一步,終於可以聊到Deeplearning了。

上面我們聊到為什麼會有Deeplearning(讓機器自動學習良好的特徵,而免去人工選取過程。

還有參考人的分層視覺處理系統),我們得到一個結論就是Deeplearning需要多層來獲得更抽象的特徵表達。

那麼多少層才合適呢?用什麼架構來建模呢?怎麼進行非監督訓練呢?Advertisement写评论取消回覆很抱歉,必須登入網站才能發佈留言。

近期文章Vue中容易被忽視的知識點2019.12.09if我是前端Leader,談談前端框架體系建設2019.12.09Spark入門(一)用SparkShell初嘗Spark滋味2019.12.08Spark入門(二)如何用Idea運行我們的Spark項目2019.12.08Spark入門(三)Spark經典的單詞統計2019.12.08Spark入門(四)Spark的map、flatMap、mapToPair2019.12.08Spark入門(五)Spark的reduce和reduceByKey2019.12.08Spark入門(六)Spark的combineByKey、sortBykey2019.12.08Spark入門(七)Spark的intersection、subtract、union和distinct2019.12.08Spark實戰尋找5億次訪問中,訪問次數最多的人2019.12.08AdvertisementAdvertisement



請為這篇文章評分?