好久不見各位親們,從上半年畢業(yè)到現(xiàn)在各方面開始步入正常軌跡,也開始有時(shí)間寫點(diǎn)文章了,后續(xù)開始陸續(xù)更新關(guān)于自然語言處理相關(guān)技術(shù)、論文等,感謝各位老鐵這么長(zhǎng)時(shí)間的關(guān)注和支持,我會(huì)再接再厲認(rèn)真寫文以饗讀者,也感謝各位提出的建議,共同交流,不吝賜教,fighting!
前言
眾所周知,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)通常是被用在圖像識(shí)別領(lǐng)域的,其實(shí)還可以應(yīng)用于語音識(shí)別,文本分類等多個(gè)領(lǐng)域。寫這篇文章主要是為了介紹TextCnn文本分類模型,當(dāng)然也會(huì)詳細(xì)介紹CNN的具體內(nèi)容,并輔以相關(guān)的案例。當(dāng)然,這里默認(rèn)讀者對(duì)神經(jīng)網(wǎng)絡(luò)有一定的了解和認(rèn)識(shí),如果有疑問可留言,本文也不介紹太多關(guān)于數(shù)學(xué)的內(nèi)容,以便于讀者理解,如有需要后期更新相關(guān)數(shù)學(xué)推導(dǎo)。
1 卷積神經(jīng)網(wǎng)絡(luò)簡(jiǎn)介
通常有:
數(shù)據(jù)輸入層/ Input layer
卷積計(jì)算層/ CONV layer
池化層 / Pooling layer
全連接層 / FullConnect layer
輸出層 / Output layer
當(dāng)然也還包括神經(jīng)網(wǎng)絡(luò)常用的激活層,正則化層等。
模型訓(xùn)練完畢后,對(duì)圖像分類的主要過程如下:
CNN處理流程
當(dāng)然,我們的主要工作還是構(gòu)建CNN模型以及使用相關(guān)數(shù)據(jù)進(jìn)行模型訓(xùn)練,以使得模型能夠提取數(shù)據(jù)特征進(jìn)行更好的分類。下面就對(duì)各個(gè)層以及神經(jīng)網(wǎng)絡(luò)的核心模塊進(jìn)行介紹。
2 卷積層
卷積層是卷積神經(jīng)網(wǎng)絡(luò)的核心層,核心的處理方式就是卷積(Convolution)計(jì)算。卷積其實(shí)也就可以看成一個(gè)函數(shù)或者一種算法。這個(gè)函數(shù)則需要輸入數(shù)據(jù)和卷積核,按照卷積要求進(jìn)行計(jì)算。我們可以通過下面的圖形簡(jiǎn)單理解一下,假設(shè)我們有一個(gè)5x5的矩陣和一個(gè)3x3的卷積核(進(jìn)行卷積計(jì)算所需要的兩個(gè)參數(shù)),如下:
輸入矩陣和卷積核
卷積核就是從輸入矩陣從左到右,從上到下進(jìn)行計(jì)算,計(jì)算過程如下:
卷積計(jì)算過程
輸入矩陣對(duì)應(yīng)的虛線框體大小就是卷積核形狀的大小,然后虛線框?qū)?yīng)元素與卷積核中的對(duì)應(yīng)元素相乘求和就得出結(jié)果4。然后虛線框向右移一個(gè)單位(后面還會(huì)用到)計(jì)算第二個(gè)值,然后再移動(dòng)一個(gè)單位計(jì)算第三個(gè)值,那么第一行就計(jì)算完畢了。需要注意的是,虛線框的大小要與卷積核形狀大小保持一致。同理可計(jì)算第二行,如下:
卷積計(jì)算過程2
一次類推計(jì)算出所有結(jié)果。經(jīng)過卷積計(jì)算的結(jié)果就是一個(gè)3x3的矩陣??偨Y(jié)一句話就是移動(dòng)窗口,對(duì)應(yīng)值計(jì)算相加即可。
可以看出,卷積層其實(shí)是提取圖像特征的過程。另外深思一下:擺在我們面前的問題有:卷積核如何確定?卷積核為啥只移動(dòng)一個(gè)單位?移動(dòng)過程超出邊界不可以嗎?
2.1 卷積核
卷積核在圖像識(shí)別中也稱過濾器。比較簡(jiǎn)單的過濾器有:Horizontalfilter、Verticalfilter、Sobel Filter等。這些過濾器能夠檢測(cè)圖像的水平邊緣、垂直邊緣、增強(qiáng)圖像區(qū)域權(quán)重等,這里不做細(xì)致探究。其實(shí),過濾器的作用類似于標(biāo)準(zhǔn)(例如全連接層)的權(quán)重矩陣W,需要通過梯度下降算法反復(fù)迭代求得。而卷積神經(jīng)網(wǎng)絡(luò)的主要目的就是計(jì)算出這些卷積核。
2.2 步幅
在前面的計(jì)算中可以看出,通過向右,向下移動(dòng)一個(gè)單位的卷積核大小的窗口計(jì)算得到卷積結(jié)果。其實(shí)這個(gè)卷積核大小的窗口向右,向下移動(dòng)的格數(shù)(單位)成為步幅(strides),上面每次移動(dòng)一格,那么對(duì)應(yīng)的strides就為1。在圖像處理中就是跳過像素的個(gè)數(shù)了。這個(gè)步幅也不是固定不變就是1,可結(jié)合實(shí)際場(chǎng)景改變。并且在移動(dòng)的過程中,卷積核中的值不變是共享的。這也就大大降低了參數(shù)的數(shù)量。
2.3 填充
從上面的計(jì)算結(jié)果可以看出,輸入是一個(gè)5x5的矩陣,經(jīng)過卷積核計(jì)算后,輸出就變成了3x3的結(jié)果。如果你想再次輸入大小為5x5的矩陣怎么辦?這時(shí)我們就需要對(duì)原始輸入的5x5大小的矩陣做一下處理——填充(padding),在擴(kuò)展區(qū)域補(bǔ)0。根據(jù)之前計(jì)算過程,只要向右向下各多移動(dòng)兩次即可得到5x5的計(jì)算結(jié)果,那么對(duì)輸入矩陣補(bǔ)齊得到如下結(jié)果:
填充
現(xiàn)在結(jié)合輸入矩陣大小n、卷積核大小f、padding(補(bǔ)0圈數(shù))計(jì)算輸出矩陣大小p、步幅大小為s,公式如下:
當(dāng)然這里默認(rèn)輸入的數(shù)據(jù)長(zhǎng)寬一致,如果長(zhǎng)寬不同,則需根據(jù)具體情況具體分析。
拓展:實(shí)際中的圖片是三通道的,即:RGB通道,而對(duì)于視頻又會(huì)多個(gè)幀數(shù)通道。其實(shí)多通道時(shí),每個(gè)通道對(duì)應(yīng)一個(gè)卷積核即可。
2.4 激活函數(shù)
為了保證對(duì)數(shù)據(jù)非線性處理,也需要激活函數(shù),也就是激活層的處理。其處理方式是,為卷積核的每個(gè)元素添加一個(gè)bias(偏移值),然后送入諸如relu、leakyRelu、tanh等非線性激活函數(shù)即可。
3 池化層
在經(jīng)過卷積層之后,其實(shí)就可以通過全連接層后接softmax進(jìn)行分類輸出圖片類別了,但是這個(gè)時(shí)候,數(shù)據(jù)量依然是特別大的,也就面臨著巨大的計(jì)算量挑戰(zhàn)。池化(Pooling)又稱下采樣,可以進(jìn)一步降低網(wǎng)絡(luò)訓(xùn)練參數(shù)和模型過擬合的程度。
常用的池化處理有一下幾種:
最大池化(Max Pooling):選擇Pooling窗口中的最大值作為采樣值
均值池化(Mean Pooling):將Pooling窗口中的所有值加起來取平均,使用平均值作為采樣值
全局最大(或均值)池化:取整個(gè)特征圖的最大值或均值
假如我們有如下提取特征的結(jié)果值:
以及假定池化的窗口大小為2x2,步幅為1,那么幾種池化過程如下:
簡(jiǎn)單池化
池化層在cnn中可用來較小尺寸,提高運(yùn)算速度及減小噪聲影響,讓各特征更具健壯性。
4 全連接層和輸出層
這部分主要連接最后池化后的結(jié)果,將池化后的數(shù)據(jù)展平構(gòu)成全連接層的輸入。然后就是根據(jù)類別數(shù)構(gòu)建的一個(gè)分類層,也就是輸出層,對(duì)于分類任務(wù)輸出層則添加一個(gè)sigmoid層計(jì)算需要分類的圖片各個(gè)類別的概率。對(duì)于訓(xùn)練任務(wù),則使用損失函數(shù)開始反向傳播更新模型中的卷積核。
總結(jié)
卷積神經(jīng)網(wǎng)絡(luò)的大致流程如此,實(shí)際中則需要靈活多變。卷積神經(jīng)網(wǎng)絡(luò)發(fā)展非常迅速,相關(guān)技術(shù)比較成熟,應(yīng)用也比較廣泛。比較有代表性性的模型有:
LeNet-5
AlexNet
VGG
GoogleNet
ResNet
膠囊網(wǎng)絡(luò)
對(duì)此感興趣的可以深入了解。下面一篇文章將結(jié)合Pytorch以及CIFAR-10數(shù)據(jù)集做一個(gè)利用卷積神經(jīng)網(wǎng)絡(luò)分類的任務(wù),以夯實(shí)對(duì)卷積神經(jīng)網(wǎng)絡(luò)的理解以及Pytorch的熟練使用。
原文標(biāo)題:【深度學(xué)習(xí)】卷積神經(jīng)網(wǎng)絡(luò)-CNN簡(jiǎn)單理論介紹
文章出處:【微信公眾號(hào):自然語言處理愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:haq
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4814瀏覽量
103593 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5561瀏覽量
122793 -
cnn
+關(guān)注
關(guān)注
3文章
354瀏覽量
22741
原文標(biāo)題:【深度學(xué)習(xí)】卷積神經(jīng)網(wǎng)絡(luò)-CNN簡(jiǎn)單理論介紹
文章出處:【微信號(hào):NLP_lover,微信公眾號(hào):自然語言處理愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
自動(dòng)駕駛感知系統(tǒng)中卷積神經(jīng)網(wǎng)絡(luò)原理的疑點(diǎn)分析

BP神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)的比較
BP神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)的關(guān)系
深度學(xué)習(xí)入門:簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)的構(gòu)建與實(shí)現(xiàn)
人工神經(jīng)網(wǎng)絡(luò)的原理和多種神經(jīng)網(wǎng)絡(luò)架構(gòu)方法

評(píng)論