0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

卷積神經網絡CNN的簡單理論介紹

自然語言處理愛好者 ? 來源:科皮子菊 ? 作者:菊子皮 ? 2020-11-27 10:34 ? 次閱讀

好久不見各位親們,從上半年畢業(yè)到現(xiàn)在各方面開始步入正常軌跡,也開始有時間寫點文章了,后續(xù)開始陸續(xù)更新關于自然語言處理相關技術、論文等,感謝各位老鐵這么長時間的關注和支持,我會再接再厲認真寫文以饗讀者,也感謝各位提出的建議,共同交流,不吝賜教,fighting!

前言

眾所周知,卷積神經網絡(Convolutional Neural Network, CNN)通常是被用在圖像識別領域的,其實還可以應用于語音識別,文本分類等多個領域。寫這篇文章主要是為了介紹TextCnn文本分類模型,當然也會詳細介紹CNN的具體內容,并輔以相關的案例。當然,這里默認讀者對神經網絡有一定的了解和認識,如果有疑問可留言,本文也不介紹太多關于數(shù)學的內容,以便于讀者理解,如有需要后期更新相關數(shù)學推導。

1 卷積神經網絡簡介

通常有:

數(shù)據(jù)輸入層/ Input layer

卷積計算層/ CONV layer

池化層 / Pooling layer

全連接層 / FullConnect layer

輸出層 / Output layer

當然也還包括神經網絡常用的激活層,正則化層等。

模型訓練完畢后,對圖像分類的主要過程如下:

CNN處理流程

當然,我們的主要工作還是構建CNN模型以及使用相關數(shù)據(jù)進行模型訓練,以使得模型能夠提取數(shù)據(jù)特征進行更好的分類。下面就對各個層以及神經網絡的核心模塊進行介紹。

2 卷積層

卷積層是卷積神經網絡的核心層,核心的處理方式就是卷積(Convolution)計算。卷積其實也就可以看成一個函數(shù)或者一種算法。這個函數(shù)則需要輸入數(shù)據(jù)和卷積核,按照卷積要求進行計算。我們可以通過下面的圖形簡單理解一下,假設我們有一個5x5的矩陣和一個3x3的卷積核(進行卷積計算所需要的兩個參數(shù)),如下:

輸入矩陣和卷積核

卷積核就是從輸入矩陣從左到右,從上到下進行計算,計算過程如下:

卷積計算過程

輸入矩陣對應的虛線框體大小就是卷積核形狀的大小,然后虛線框對應元素與卷積核中的對應元素相乘求和就得出結果4。然后虛線框向右移一個單位(后面還會用到)計算第二個值,然后再移動一個單位計算第三個值,那么第一行就計算完畢了。需要注意的是,虛線框的大小要與卷積核形狀大小保持一致。同理可計算第二行,如下:

卷積計算過程2

一次類推計算出所有結果。經過卷積計算的結果就是一個3x3的矩陣??偨Y一句話就是移動窗口,對應值計算相加即可。

可以看出,卷積層其實是提取圖像特征的過程。另外深思一下:擺在我們面前的問題有:卷積核如何確定?卷積核為啥只移動一個單位?移動過程超出邊界不可以嗎?

2.1 卷積核

卷積核在圖像識別中也稱過濾器。比較簡單的過濾器有:Horizontalfilter、Verticalfilter、Sobel Filter等。這些過濾器能夠檢測圖像的水平邊緣、垂直邊緣、增強圖像區(qū)域權重等,這里不做細致探究。其實,過濾器的作用類似于標準(例如全連接層)的權重矩陣W,需要通過梯度下降算法反復迭代求得。而卷積神經網絡的主要目的就是計算出這些卷積核。

2.2 步幅

在前面的計算中可以看出,通過向右,向下移動一個單位的卷積核大小的窗口計算得到卷積結果。其實這個卷積核大小的窗口向右,向下移動的格數(shù)(單位)成為步幅(strides),上面每次移動一格,那么對應的strides就為1。在圖像處理中就是跳過像素的個數(shù)了。這個步幅也不是固定不變就是1,可結合實際場景改變。并且在移動的過程中,卷積核中的值不變是共享的。這也就大大降低了參數(shù)的數(shù)量。

2.3 填充

從上面的計算結果可以看出,輸入是一個5x5的矩陣,經過卷積核計算后,輸出就變成了3x3的結果。如果你想再次輸入大小為5x5的矩陣怎么辦?這時我們就需要對原始輸入的5x5大小的矩陣做一下處理——填充(padding),在擴展區(qū)域補0。根據(jù)之前計算過程,只要向右向下各多移動兩次即可得到5x5的計算結果,那么對輸入矩陣補齊得到如下結果:

填充

現(xiàn)在結合輸入矩陣大小n、卷積核大小f、padding(補0圈數(shù))計算輸出矩陣大小p、步幅大小為s,公式如下:

當然這里默認輸入的數(shù)據(jù)長寬一致,如果長寬不同,則需根據(jù)具體情況具體分析。

拓展:實際中的圖片是三通道的,即:RGB通道,而對于視頻又會多個幀數(shù)通道。其實多通道時,每個通道對應一個卷積核即可。

2.4 激活函數(shù)

為了保證對數(shù)據(jù)非線性處理,也需要激活函數(shù),也就是激活層的處理。其處理方式是,為卷積核的每個元素添加一個bias(偏移值),然后送入諸如relu、leakyRelu、tanh等非線性激活函數(shù)即可。

3 池化層

在經過卷積層之后,其實就可以通過全連接層后接softmax進行分類輸出圖片類別了,但是這個時候,數(shù)據(jù)量依然是特別大的,也就面臨著巨大的計算量挑戰(zhàn)。池化(Pooling)又稱下采樣,可以進一步降低網絡訓練參數(shù)和模型過擬合的程度。

常用的池化處理有一下幾種:

最大池化(Max Pooling):選擇Pooling窗口中的最大值作為采樣值

均值池化(Mean Pooling):將Pooling窗口中的所有值加起來取平均,使用平均值作為采樣值

全局最大(或均值)池化:取整個特征圖的最大值或均值

假如我們有如下提取特征的結果值:

以及假定池化的窗口大小為2x2,步幅為1,那么幾種池化過程如下:

簡單池化

池化層在cnn中可用來較小尺寸,提高運算速度及減小噪聲影響,讓各特征更具健壯性。

4 全連接層和輸出層

這部分主要連接最后池化后的結果,將池化后的數(shù)據(jù)展平構成全連接層的輸入。然后就是根據(jù)類別數(shù)構建的一個分類層,也就是輸出層,對于分類任務輸出層則添加一個sigmoid層計算需要分類的圖片各個類別的概率。對于訓練任務,則使用損失函數(shù)開始反向傳播更新模型中的卷積核。

總結

卷積神經網絡的大致流程如此,實際中則需要靈活多變。卷積神經網絡發(fā)展非常迅速,相關技術比較成熟,應用也比較廣泛。比較有代表性性的模型有:

LeNet-5

AlexNet

VGG

GoogleNet

ResNet

膠囊網絡

對此感興趣的可以深入了解。下面一篇文章將結合Pytorch以及CIFAR-10數(shù)據(jù)集做一個利用卷積神經網絡分類的任務,以夯實對卷積神經網絡的理解以及Pytorch的熟練使用。

原文標題:【深度學習】卷積神經網絡-CNN簡單理論介紹

文章出處:【微信公眾號:自然語言處理愛好者】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 神經網絡
    +關注

    關注

    42

    文章

    4717

    瀏覽量

    100015
  • 深度學習
    +關注

    關注

    73

    文章

    5422

    瀏覽量

    120593
  • cnn
    cnn
    +關注

    關注

    3

    文章

    349

    瀏覽量

    21968

原文標題:【深度學習】卷積神經網絡-CNN簡單理論介紹

文章出處:【微信號:NLP_lover,微信公眾號:自然語言處理愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    卷積神經網絡有何用途 卷積神經網絡通常運用在哪里

    卷積神經網絡(Convolutional Neural Networks,簡稱CNN)是一種深度學習模型,廣泛應用于圖像識別、視頻分析、自然語言處理、生物信息學等領域。本文將介紹
    的頭像 發(fā)表于 07-11 14:43 ?772次閱讀

    卷積神經網絡的基本概念、原理及特點

    卷積神經網絡(Convolutional Neural Networks,簡稱CNN)是一種深度學習算法,它在圖像識別、視頻分析、自然語言處理等領域有著廣泛的應用。本文將詳細介紹
    的頭像 發(fā)表于 07-11 14:38 ?399次閱讀

    BP神經網絡卷積神經網絡的關系

    BP神經網絡(Backpropagation Neural Network)和卷積神經網絡(Convolutional Neural Network,簡稱CNN)是兩種在人工智能和機器
    的頭像 發(fā)表于 07-10 15:24 ?583次閱讀

    卷積神經網絡的實現(xiàn)原理

    卷積神經網絡(Convolutional Neural Networks,簡稱CNN)是一種深度學習模型,廣泛應用于圖像識別、視頻分析、自然語言處理等領域。本文將詳細介紹
    的頭像 發(fā)表于 07-03 10:49 ?389次閱讀

    卷積神經網絡分類方法有哪些

    卷積神經網絡(Convolutional Neural Networks,CNN)是一種深度學習模型,廣泛應用于圖像分類、目標檢測、語義分割等計算機視覺任務。本文將詳細介紹
    的頭像 發(fā)表于 07-03 09:40 ?265次閱讀

    卷積神經網絡的基本結構和工作原理

    卷積神經網絡(Convolutional Neural Networks,簡稱CNN)是一種深度學習模型,廣泛應用于圖像識別、視頻分析、自然語言處理等領域。本文將詳細介紹
    的頭像 發(fā)表于 07-03 09:38 ?247次閱讀

    cnn卷積神經網絡分類有哪些

    卷積神經網絡CNN)是一種深度學習模型,廣泛應用于圖像分類、目標檢測、語義分割等領域。本文將詳細介紹CNN在分類任務中的應用,包括基本結構
    的頭像 發(fā)表于 07-03 09:28 ?320次閱讀

    cnn卷積神經網絡三大特點是什么

    卷積神經網絡(Convolutional Neural Networks,簡稱CNN)是一種深度學習模型,廣泛應用于圖像識別、視頻分析、自然語言處理等領域。CNN具有以下三大特點: 局
    的頭像 發(fā)表于 07-03 09:26 ?321次閱讀

    卷積神經網絡訓練的是什么

    卷積神經網絡(Convolutional Neural Networks,簡稱CNN)是一種深度學習模型,廣泛應用于圖像識別、視頻分析、自然語言處理等領域。本文將詳細介紹
    的頭像 發(fā)表于 07-03 09:15 ?220次閱讀

    卷積神經網絡的原理與實現(xiàn)

    1.卷積神經網絡(Convolutional Neural Networks,簡稱CNN)是一種深度學習模型,廣泛應用于圖像識別、視頻分析、自然語言處理等領域。 卷積
    的頭像 發(fā)表于 07-02 16:47 ?325次閱讀

    卷積神經網絡的基本原理和應用范圍

    卷積神經網絡(Convolutional Neural Network,簡稱CNN)是一種深度學習模型,廣泛應用于圖像識別、語音識別、自然語言處理等領域。本文將詳細介紹
    的頭像 發(fā)表于 07-02 15:30 ?527次閱讀

    卷積神經網絡cnn模型有哪些

    卷積神經網絡(Convolutional Neural Networks,簡稱CNN)是一種深度學習模型,廣泛應用于圖像識別、視頻分析、自然語言處理等領域。 CNN的基本概念 1.1
    的頭像 發(fā)表于 07-02 15:24 ?524次閱讀

    卷積神經網絡的原理是什么

    卷積神經網絡(Convolutional Neural Network,簡稱CNN)是一種深度學習模型,廣泛應用于圖像識別、語音識別、自然語言處理等領域。本文將詳細介紹
    的頭像 發(fā)表于 07-02 14:44 ?354次閱讀

    卷積神經網絡的優(yōu)點

    卷積神經網絡的優(yōu)點? 卷積神經網絡(Convolutional Neural Network,CNN)是一種基于深度學習的
    的頭像 發(fā)表于 12-07 15:37 ?3754次閱讀

    什么是卷積神經網絡?如何MATLAB實現(xiàn)CNN?

    卷積神經網絡CNN 或 ConvNet)是一種直接從數(shù)據(jù)中學習的深度學習網絡架構。 CNN 特別適合在圖像中尋找模式以識別對象、類和類別
    發(fā)表于 10-12 12:41 ?1383次閱讀
    什么是<b class='flag-5'>卷積</b><b class='flag-5'>神經網絡</b>?如何MATLAB實現(xiàn)<b class='flag-5'>CNN</b>?