[雪峰磁針石部落格]python計算機視覺深度學習1簡介

書籍尋找發表於2018-10-17

神經網路和深度學習簡史

人工神經網路(ANN Artificial Neural Network)是一類學習的機器學習演算法,它專注於模式識別,對資料進行學習,靈感來自大腦的結構和功能深度學習屬於ANN演算法的家族,在大多數情況下,兩者可以互換使用。

事實上,你可能會驚訝地發現深度學習領域已經存在了60多年。自20世紀40年代以來,“深度學習”一直存在著各種各樣的名字
變化,包括控制論,連線主義和最熟悉的人工神經網路。

image.png

第一個神經網路模型來自McCulloch和Pitts,1943年。這個網路是一個二元分類器,能夠根據一些輸入識別兩個不同的類別。

然後,在20世紀50年代,開創性的Perceptron演算法由Rosenblatt發表 – 這個模型可以自動學習輸入分類所需的權重(無人為干預需要)。這個自動訓練程式構成了隨機梯度下降(SGD Stochastic Gradient Descent)的基礎,今天仍用於訓練非常深的神經網路。

image.png

在此期間,基於感知器的技術在神經網路社群中風靡一時。然而,Minsky和Papert 在1969年出版的一本書有效地停滯了神經
網路研究近十年。他們的工作證明了具有線性的感知器啟用函式(深度無關)只是線性分類器,無法解決非線性問題問題。

image.png

上圖中無法用直線分隔藍色星星與紅色圓圈。此外,作者認為(當時)我們沒有計算資源來構建大型深度神經網路(事後看來,它們絕對正確)。

反向傳播演算法和Werbos(1974),Rumelhart(1986)和LeCun(1998)的研究[17]喚醒了神經網路。他們在反向傳播演算法中的研究啟用了多層要訓​​練的前饋神經網路。

image.png

結合非線性啟用函式,研究人員現在可以學習非線性函式並解決XOR問題,為神經網路研究的全新領域開啟了大門。
進一步的研究表明神經網路是通用的近似,能夠近似任何連續函式(但不保證網路是否正常可以學習表示函式所需的引數)。

反向傳播演算法是現代神經網路的基石.有效地訓練神經網路並“教導”他們從錯誤中吸取教訓。但即便如此,在由於(1)計算機速度慢(與現代機器相比)和(2)缺少大量標記的訓練集,研究人員無法(可靠地)訓練超過兩個隱藏的層的神經網路,因為計算上是不可行的。

今天最新神經網路為深度學習,我們擁有更快,更專業的硬體,提供更多可用的訓練資料。我們現在可以訓練具有更多隱藏層的網路,能夠進行分級學習,在較低層和更多層次中學習簡單的概念,在較高層中的抽象模式。

應用深度學習到特徵學習的典型例子是應用於手寫字元識別的Convo-lutional神經網路(LeCun 1988)。通過順序堆疊自動從影像中學習區分模式(稱為“過濾器”)。網路較低階別的過濾器代表邊緣和角落,而更高階別的圖層使用邊緣和角落來學習更有用的抽象概念以區分影像類。

在許多領域中,CNN現在被認為是最強大的影像分類器,是目前負責推動計算機視覺子領域的最先進技術。

分層特徵學習

機器學習演算法通常分為三個陣營 – 監督,無人監督和半監督學習。

在監督的情況下,機器學習演算法被給予一組輸入和目標輸出。然後,該演算法嘗試學習可用於自動對映輸入資料的模式
指向正確的目標輸出。監督學習類似於讓老師看著你參加考試。鑑於您以前的知識,您盡力在您的標記上標記正確的答案
考試; 但是如果你不對老師會指導你做一個更好的,讓你更有根據的猜測下一次。

在無監督的情況下,沒有任何提示關於輸入是什麼,機器學習演算法試圖自動發現。在這種情況下,我們的學生會嘗試
將類似的問題和答案組合在一起,即使學生不知道正確的答案,老師也不提供真正的答案。無監督學習顯然是比監督學習更具挑戰性的問題。

過去我們手工衡量影像的內容 ,很少使用原始畫素強度作為我們機器學習模型的輸入。現在對於每個影像,我們執行了特徵提取,並返回旨在量化內容的向量。

image.png

區域性二元模式(Local Binary Patterns),Haralick紋理[22]),形狀(shape)、Zernike Moments [24])和顏色(color moments, color histograms, color correlograms)廣發用於識別。

其他方法,如關鍵點檢測器(keypoint detector)和區域性不變描述符(local invariant descriptor)用於處理影像關鍵區域。

當我們的影像的視點角度和訓練的分類器沒有顯著變化時,定向梯度直方圖(HOG Histogram of Oriented Gradient)非常擅長檢測影像中的物件。

有一段時間,HOG及其變體引導了影像中物體檢測的研究,如可變形零件模型( Deformable Parts Model)和範例SVM。

在深度學習中,特徵提取由系統學習完成。

該有多深

我個人認為可以考慮任何具有兩個以上隱藏層的網路為“深”。
image.png

我們現在有:
1.更快的電腦
2.高度優化的硬體(即GPU)
3.數百萬張影像的大型標記資料集
4.更好地理解權重初始化函式以及什麼/不起作用
5.卓越的啟用功能和對前一非線性原因的理解

image.png

可愛的python測試開發庫 請在github上點贊,謝謝!

  • 技術支援qq群: 144081101(後期會錄製視訊存在該群群檔案) 591302926 567351477 釘釘免費群:21745728

處理您自己的深度學習應用程式的建議:

1.您使用的是專門的網路架構,如卷積神經網路,迴歸神經網路或長期短期記憶(LSTM)網路?如果是的話,是的,你正在進行深度學習。
2.您的網路深度是否> 2?如果是的話,你正在深入學習。
3.您的網路深度是否> 10?如果是這樣,你正在進行非常深入的學習。

不要太糾結於概念,無論如何你還在使用人工神經網路進行機器學習。

程式碼地址:https://github.com/whydna/Deep-Learning-For-Computer-Vision

注意不是: https://github.com/PacktPublishing/Deep-Learning-for-Computer-Vision


相關文章