10分鐘弄懂深度學習4:分類模型與卷積神經網絡的千絲萬縷

2020-12-05 Mcix創客

首先介紹一個高大尚的名詞,卷積神經網絡 (Convolutional Neural Network)。

2016 年,著名的阿爾法狗戰勝李世石,也讓大眾記住了一個名詞——卷積神經網絡。

一時間,卷積神經網絡在計算機視覺、自然語言處理、醫學圖像處理等領域內可算得上是風頭無兩,一枝獨秀。

網上講卷積神經網絡的文章很多,但是,很多文章引入了過多的細節和公式,讓人看完以後只有不明覺厲的感覺,讓人對卷積神經網絡的理解仍然停留在公式的層面。

我這個專欄,想撥開重重迷霧,幫助大家理解什麼是卷積神經網絡的核心。

我先總結一下本篇文章的脈絡。

卷積神經網絡其實是一個分類模型。

分類模型

分類模型可以用來幫助我們進行圖像識別,聲音識別等工作。

以圖像識別為例,分類模型的輸入是一個圖像,輸出是該圖像的類別,比如貓、狗、人

等。

要想得到一個好的模型,我們必須用數據去訓練分類模型,這些數據叫做訓練數據。

以圖像識別為例,訓練數據包括大量的圖像,以及每個圖像的類別。

訓練完以後,我們希望訓練後的模型可以達到這樣的效果:

當我們把一個圖像輸入模型後,模型可以比較準確的輸出該圖像的類別。

從分類模型內部而言,包括兩個串聯的部分:

(1) 特徵提取器 (feature extractor)(2) 分類器 (classifer)

第一部分「特徵提取器」從輸入的圖像中提取一些特徵,然後將這些特徵輸入到分類器,分類器會給出最終的類別判斷。

在傳統的方法中,分類模型中的特徵提取器是人為選定的;分類模型中的分類器的結構是人為選定的,但參數是通過訓練數據更新的。

這種方法的缺點在於難以找到好的特徵,尤其在高維空間中。

如果同分類器一樣,特徵提取器也用數據訓練出來的話,那麼就有可能找到「接近最好」的特徵。

因此,卷積神經網絡就是一種同時訓練特徵提取器和分類器的分類模型。

分類問題

分類問題的本質,就是給觀察到的每一個現象一個標籤,這個標籤就是現象的類別。

要解決分類問題,我們往往需要一個模型,在這裡我們把該模型叫做「分類模型」。

分類模型的輸入,是觀察到的現象;分類模型的輸出,是該現象對應的類別。

例如,圖像識別是一個典型的分類問題。

對應的分類模型的輸入是一個圖像,輸出是該圖像的類別 (貓、狗、人等)。

垃圾郵件識別是一個典型的分類問題。

現在有一封電子郵件,你把該郵件的內容送進一個分類模型,模型需要判斷這封郵件是否是垃圾郵件。

要想得到一個好的分類模型,我們必須用數據去訓練這些模型,這些數據叫做訓練數據 (training data)。

以圖像識別為例,訓練數據包括大量的圖像以及每個圖像的類別。

訓練完以後,我們希望達到這樣的效果:當我們把一個圖像輸入到訓練好的分類模型後,該模型輸出的類別,能夠比較符合該圖像真實的類別。

分類模型的訓練

從某個角度來看,分類模型本質上是一個函數

y = f(x, θ)

該函數輸入x,就輸出一個類別y

分類模型會包含一些允許我們調節的參數 θ,通過訓練數據來訓練模型,從本質上就是調節這些參數 θ,使得該分類模型可以滿足分類的性能要求。

至於訓練方法是怎麼樣的,這個是屬於機器學習的訓練算法問題,我在這裡簡單介紹一下。

以圖像識別為例。

一個分類模型本質是一個函數 f,函數的輸入是圖像,輸出是類別。

f(圖像) = 圖像類別

還需要注意的是,每個分類模型中都包含一些參數,例如特徵提取器的參數和分類器的參數,我們用 θ 來表示。

這樣,細分下來,一個分類模型可以寫成如下的形式

f(圖像, θ) = 圖像類別

對於一個確定的分類模型 (給定了θ),輸入某一個圖像,就可以輸出該圖像類別了。

我們現在有一組訓練數據,即一批圖像和每個圖像的類別。

我們的任務,就是要找到某一個分類模型 (確定其θ),使得這個分類模型能夠儘可能的符合訓練數據。

換句話說,將某個圖像輸入該模型,該模型應該輸出該圖像的真實類別。

當然,很多情況下,該模型不一定能對所有的訓練數據都滿足要求,這時,目標就是使得判斷錯誤的次數越少越好。

為此,我們先定義一個函數 L(y1, y2):

L(y1, y2)函數定義

這個函數非常簡單:

y1 = y2 時為0,否則為1。

這樣,我們訓練的目標,就是要找到一個最優的參數θ*,使得θ*對應的模型,在輸入訓練的圖像後,判斷的類別結果和真實的類別的誤差越小越好,即

注意,f(圖像i, θ) 就是參數為θ的模型,在輸入為圖像i的情況下,模型「算出」的圖像類別。

argmin的含義,就是最優的θ,使得後面部分的值最小。

從數學上來講,因為每個訓練圖像i和它的真實類別都是已知的,因此式1.1中變量就剩下了 θ。

式1.1本質上就是找到一個θ,使得某個關於該變量的函數g(θ) 達到最小值。通常,該函數是一個關於 θ 的非線性函數。

那如何找到這個使得 g(θ) 取得最小值的θ呢?

通常求一個函數極值的方法,就是求導數,並令其為零,然後解出該方程,但這種方法只在 g(θ)的表達式比較簡單的情況下才好用。

在絕大多數機器學習的應用中的 g(θ),表達式都非常複雜,該方法基本不適用。

我們通常採用的方法是用數值解法。

基本的思路是,先隨便給一個θ的初值,然後不斷去調整θ,使得函數g(θ)的值不斷下降,來最終達到要求。

學過數值分析的同學應該了解一些常用的方法,包括牛頓法、最速下降法、共軛梯度法、隨機梯度法等等。

分類模型的進階:串聯結構

一個分類模型的內部結構通常分為兩個串聯的部分,如圖1.1所示,包括特徵提取器 (feature extractor)和後面的分類器 (classifer)。

特徵提取器從輸入的圖像中提取一些特徵,這些特徵輸入到分類器,分類器會給出最終的類別判斷。

有人問,為什麼需要先提取特徵,然後再根據特徵進行分類,而不是直接根據輸入的原始數據進行分類呢?

這個主要的原因在於,原始數據作為輸入的維度實在是太高了。

我們以聲音識別而言,如果我們想根據一段聲音來判斷這個聲音來自狗還是貓,通常主流聲音採集卡上,採樣頻率最低是 22.05KHz,也就是每秒鐘採集兩萬多個樣本。

要想識別的話,至少需採集5秒鐘的數據,也就是近10萬個樣本。

這樣,分類模型對應的函數y = f(x) 的輸入x,就是一個包含10萬維度的向量,輸出是一個標量二進位數(0: 貓,1: 狗)。

如果不中間提取特徵的話,那我們就要找一個從10萬維度的向量到1個標量的映射。

直覺上來看,這個就會很難,因為你需要給這個10萬維的向量中的每一個輸入,都給一個係數。

不僅如此,高維度向量還會導致分類器的性能下降。

機器學習中把這個叫做「維數災」問題 (The Curse of Dimensionality)。

因此,解決的方法,就是如圖1.1中的兩層串聯結構,先從輸入的原始數據中提取特徵。

通常情況下,特徵的維度比輸入原始數據的維度要小很多。因此,用特徵來訓練分類器,就不會出現維數災問題。

傳統的分類模型中,特徵提取器是人手動設計的。

在圖像識別中,常用的特徵包括邊沿檢測器 (edge detector),方向梯度直方圖(HOG, Histogram of Oriented Gradient) 等;在聲音識別中,最常用的莫過於梅爾倒譜係數 (MFCC);文字語義分析中,常用特徵包括詞袋模型 (Bag-of-words),以及TF-IDF 等。

後面的分類器模型則不同。

分類器模型是人為先確定一個框架 (例如 SVM,神經網絡,隨機森林等),在此結構基礎上,用訓練數據來確定該框架的具體參數。

如果用函數的角度來看,在分類模型y = f(x, θ)中,允許我們用訓練數據整定的參數θ,只包含在分類器中。

卷積神經網絡的構成

卷積神經網絡包括兩個部分:

卷積 (特徵提取器) +神經網絡 (分類器)

卷積從本質上來講,就是濾波器,濾波器不僅可以用來去除噪聲,而且可以用來提取特徵。這就是為什麼我們需要卷積。

因此,在卷積神經網絡中,卷積就是濾波器,就是特徵提取器;而神經網絡,就是分類器。

我們需要用大量的數據來同時訓練這兩個部分。

我們找到最好的濾波器,來幫助我們提取好的特徵特徵;同時我們要找到最好的神經網絡,幫助我們把這些特徵進行分類,得到準確的分類結果。

這樣,由卷積構成的特徵提取器,再加上由神經網絡構成的分類器,就構成了卷積神經網絡。

相關焦點

  • 深度學習入門:淺析卷積神經網絡
    至今已有數種深度學習方法,如卷積神經網絡(CNN)、自編碼神經網絡(包括Auto encoder和Sparse Coding)和深度置信網絡(DBN),並在各個領域中取得了極好的效果。圖像分類是從固定的一組分類中分配輸入圖像一個標籤的任務,在本案例中,我們將以Fashion-MNIST圖像數據集為例,了解並使用不同的神經網絡模型來對其進行分類,並比較不同網絡的預測效果。本案例的學習分為三個部分,首先是目標問題的數據集介紹,了解數據背景是解決問題的重要前提;接著,我們會介紹基本的邏輯回歸模型,在此基礎上引入本案例的核心——卷積神經網絡。
  • 騰訊優圖推出卷積神經網絡深度學習算法模型
    近年來機器學習算法在醫療領域的大展拳腳(糖尿病視網膜病變/皮膚病/甲狀腺結節等),基於卷積神經網絡算法(機器學習算法一類)的肺結節診斷模型有望解決這一難題。結節診斷模塊:建立3D肺結節檢測網絡獲得重建圖象的3D特徵;在Pythorch平臺上分兩步訓練CNN(卷積神經網絡)模型,a, (結節檢測網絡),輸入信息包括圖象和相應的位置附加信息;b, 根據第一步的檢測網絡參數初始化結節診斷網絡,並對輸出圖象和相關診斷結果進行微調。
  • 大話卷積神經網絡CNN,小白也能看懂的深度學習算法教程,全程乾貨...
    如下圖所示:那麼可以很自然的想到:可以不可以模仿人類大腦的這個特點,構造多層的神經網絡,較低層的識別初級的圖像特徵,若干底層特徵組成更上一層特徵,最終通過多個層級的組合,最終在頂層做出分類呢?答案是肯定的,這也是許多深度學習算法(包括CNN)的靈感來源。
  • 基於PVANet卷積神經網絡模型的交通標誌識別算法
    而且, 異於傳統的人工設計特徵提取器, 卷積神經網絡目標物體檢測可自主學習視頻、圖像信息中的特徵, 從而檢測到更多類別以及更細分類的物體[2]。小目標檢測主要是對圖像或視頻中的標誌、行人或車輛等顯示尺寸較小的目標進行檢測, 在民用、軍事和安防等領域具有十分重要的作用[1]。
  • 深度學習之卷積神經網絡經典模型
    隨著ReLU與dropout的提出,以及GPU帶來算力突破和網際網路時代大數據的爆發,卷積神經網絡帶來歷史的突破,AlexNet的提出讓深度學習走上人工智慧的最前端。對測試數據而言,抽取以圖像4個角落的大小為224224的圖像,中心的224224大小的圖像以及它們的鏡像翻轉圖像,這樣便可以獲得10張圖像,我們便可以利用softmax進行預測,對所有預測取平均作為最終的分類結果。
  • 使用卷積神經網絡,構建圖像分類模型檢測肺炎
    來源 | DeepHub IMBA作者 | Eunjoo Byeon在本篇文章中,我將概述如何使用卷積神經網絡構建可靠的圖像分類模型,以便從胸部x光圖像中檢測肺炎的存在。肺炎是一種常見的感染,它使肺部的氣囊發炎,引起呼吸困難和發燒等症狀。
  • 卷積神經網絡在圖像領域中的發展及存在問題
    深度學習(Deep Learning, DL),從狹義上理解,就是一種具有一定的結構和訓練方法且含有多個隱含層的神經網絡;從廣義上理解,可以把具有任何層次結構的機器學習方法稱為深度學習。在深度學習過程中,從輸入圖像,經過無監督的逐層訓練和學習圖像特徵,通過有監督的訓練更新整個網絡參數,最小化損失函數,在輸出層實現正確的分類。
  • 深度學習資訊|用於人體動作識別的26層卷積神經網絡
    諸如卷積神經網絡(CNN)之類的深度學習算法已在各種任務上取得了顯著成果,包括那些涉及識別圖像中特定人物或物體的任務。基於視覺的人類動作識別(HAR)是計算機科學家經常嘗試使用深度學習解決的任務,它特別需要識別圖像或視頻中捕獲的人類動作。
  • 神奇GIF動畫讓你秒懂各種深度學習卷積神經網絡操作原理
    打開APP 神奇GIF動畫讓你秒懂各種深度學習卷積神經網絡操作原理 深度學習思考者 發表於 2017-11-15 18:58:34
  • 卷積神經網絡超詳細總結
    的特徵5、CNN的求解6、卷積神經網絡注意事項7、CNN發展綜合介紹8、LeNet-5結構分析9、AlexNet10、ZFNet10.1 意義10.2 實現方法10.3 訓練細節10.4 卷積網絡可視化10.6 總結11、VGGNet
  • 利用二維卷積神經網絡進行乳腺癌分類
    利用二維卷積神經網絡進行乳腺癌分類Submitted on 7 Jul 2020 (v1), last revised 29 Jul 2020對有臨床記錄的癌症/非癌症患者的分類需要高的敏感性和特異性來進行可接受的診斷試驗。然而,目前最先進的分類模型——卷積神經網絡(CNN),卻不能用於以一維格式表示的臨床數據。CNN被設計用於處理一組二維矩陣,這些矩陣的元素與相鄰元素有一定的相關性,比如圖像數據。
  • 武漢大學CVEO小組:一種基於卷積神經網絡的高解析度遙感影像分類方法
    為了更加有效地提取分割對象的二維深度特徵,克服傳統的面向對象高解析度遙感影像分類方法的不足,武漢大學CVEO小組提出了基於卷積神經網絡(CNN)的高解析度遙感影像分類方法,目前該論文已被Remote Sensing Letters(SCI)期刊接收!
  • 入門| 獻給新手的深度學習綜述
    Goodfellow 等人(2016)詳細討論了深度網絡和生成模型,從機器學習(ML)基礎知識、深度架構的優缺點出發,對近年來的 DL 研究和應用進行了總結。 LeCun 等人(2015)從卷積神經網絡(CNN)和遞歸神經網絡(RNN)概述了深度學習(DL)模型。
  • 零基礎入門深度學習(六):圖像分類任務之LeNet和AlexNet
    :0001 導讀本課程是百度官方開設的零基礎入門深度學習課程,主要面向沒有深度學習技術基礎或者基礎薄弱的同學,幫助大家在深度學習領域實現從0到1+的跨越。>個性化推薦算法的原理、實踐本周為開講第四周,百度深度學習技術平臺部資深研發工程師孫高峰,開始講解計算機視覺中圖像分類任務。
  • 深度學習時代的圖模型,清華發文綜述圖網絡
    引言近十年,深度學習成為人工智慧和機器學習這頂皇冠上的明珠,在聲學、圖像和自然語言處理領域展示了頂尖的性能。深度學習提取數據底層複雜模式的表達能力廣受認可。但是,現實世界中普遍存在的圖卻是個難點,圖表示對象及其關係,如社交網絡、電商網絡、生物網絡和交通網絡。圖也被認為是包含豐富潛在價值的複雜結構。
  • 如何在PyTorch和TensorFlow中訓練圖像分類模型
    你必須已閱讀很多有關不同深度學習框架(包括TensorFlow,PyTorch,Keras等)之間差異的信息。TensorFlow和PyTorch無疑是業內最受歡迎的框架。我相信你會發現無窮的資源來學習這些深度學習框架之間的異同。在本文中,我們將了解如何在PyTorch和TensorFlow中建立基本的圖像分類模型。
  • MSRA視頻理解新突破,實現199層三維卷積神經網絡
    (Pseudo-3D Convolution)的深度神經網絡的設計思路,並實現了迄今為止最深的 199 層三維卷積神經網絡。通然而目前視頻識別的相關研究多數使用的是基於圖像的卷積神經網絡(如微軟研究院在 2015 提出的殘差神經網絡 ResNet)來學習視頻特徵,這種方法僅僅是對單幀圖像的 CNN 特徵進行融合,因此往往忽略了相鄰的連續視頻幀間的聯繫以及視頻中的動作信息。目前,視頻專用的深度神經網絡還很缺乏。
  • 深度學習與圖像識別 圖像檢測
    2016年微軟的ResNet深度殘差網絡,用了152層的架構(2)模型結構日趨複雜       傳統的卷積神經網絡都是簡單的 conv-pool-FC       後來NIN 用mlpconv 代替傳統的 conv層(mlp 實際上是卷積加傳統的多層感知器 )。
  • 自然語言處理深度學習的7個應用
    然而,深度學習方法在一些特定的語言問題上取得了最新的成果。這不僅僅是深度學習模型在基準問題上的表現,基準問題也是最有趣的;事實上,一個單一的模型可以學習詞義和執行語言任務,從而消除了對專業手工製作方法渠道的需要。在這篇文章中,你會發現7個有趣的自然語言處理任務,也會了解深度學習方法取得的一些進展。
  • 盤點金融領域裡常用的深度學習模型
    要解決這個問題,如果我們考慮到深度學習在圖像識別、語音識別或情感分析方面所做的研究,我們就會看到這些模型能夠從大規模未標記數據中學習,形成非線性關係的遞歸結構,可以輕鬆予以調整以避免發生過度擬合。如果金融生態圈能夠使用這些網絡進行建模,應用領域就會深遠而廣泛。這些模型可用於定價、投資組合構建、風險管理甚至高頻交易等領域,讓我們來解決這些問題。