傅博文,唐向宏,肖 濤
杭州電子科技大學 通信工程學院,杭州 310018
圖像情感分析旨在利用計算機和特定算法來預測人看到一幅圖像時產生的心理變化[1]。圖像情感分析和文本情感分析[2-3]等都屬于情感計算領域的重要研究分支,能夠從圖像情感分析研究中受益的包括社交媒體分析人員、多媒體供應商(例如商業圖庫)等。分析人員可以利用用戶在社交媒體中上傳的圖像來進行輿論分析或輿論預測等,商業圖庫則可以根據對圖庫的情感分析來對圖像進行更加細致的分類。進行圖像情感分析,首先需要選擇適當的心理學模型來表現情感。在心理學研究中有兩種典型的表現情感的模型:情感狀態類別(Categorical Emotion States,CES)和情感維度空間(Dimensional Emotion Space,DES)[4]。CES方法認為情感屬于少數幾個基本類別之一,如恐懼、滿足、悲傷等,而DES方法認為情感在大腦中是連續的,因此將情感歸為多維情感空間中一個點。分類任務中的CES 更容易讓用戶理解和標記,而在回歸任務中DES更靈活,描述更加細膩。此前研究多采用CES方法,將情緒分為在嚴格的心理學研究中定義的八個類別,包括負面情緒:憤怒、厭惡、恐懼、悲傷,積極情緒:愉悅、敬畏、滿足、興奮。本文將沿用CES 這一模型,將情感分為八個類別,便于和此前的研究進行比較。
以往圖像情感分析的研究可以分為基于手工特征的方法和基于深度神經網絡的方法。早期圖像情感分析使用了多種手工特征,手工特征方法的不足是模型容量較小,而且難以利用大規模數據集的優勢。近年來,卷積神經網絡(Convolutional Neural Network,CNN)的發展已經證明了自動表示學習(Representation Learning)具有巨大的潛力[5-7],因此,眾多學者將深度神經網絡應用于圖像情感分析研究中,并取得了較好的效果。Chen等[8]直接使用在ImageNet數據集[9]上預訓練過的原始AlexNet與AlexNet 疊加支持向量機模型來進行情感圖像分類。Rao 等[10]認為圖像在多個尺度上影響人的情緒,于是將整幅圖像均勻剪裁成4塊和16塊的子圖像,分別用三種不同的卷積神經網絡(AlexNet[5]、A-CNN[11]、T-CNN[12])提取高級語義特征、美學特征和紋理特征。將提取到的三種特征,通過平均聚合函數進行聚合,再經過softmax分類器進行分類,提出了一種學習多層次深度表示(MldrNet)的圖像情感分類模型。
由于深度學習模型的訓練往往需要大量的數據,基于神經網絡的圖像情感分析研究必須先建立情感圖像數據集。目前,雖然人們已經建立了基于互聯網圖像的大型圖像情感數據集,但是這些數據集中經常存在一定的樣本不平衡問題(即各類別樣本的數量差異較大)。這種樣本不平衡現象不僅會使得模型的訓練容易出現一定程度的過擬合問題,同時也會因為不同類別數據的分類難易程度不同,導致訓練得到的分類模型在不同類別上的表現有較大的性能差異[13-14]。
針對這個樣本不平衡的問題,本文利用Focal 損失函數具有挖掘困難樣本(即分類損失較大、難以學習的樣本,反之則為簡單樣本)和緩解樣本不平衡的特性,將其應用于神經網絡的圖像情感分析中。通過引入類別權重因子和漸增式聚焦因子,對Focal 損失函數中參數的確定進行改進,并將改進的Focal 損失函數用于圖像情感分析模型的訓練中。本文將改進的模型在三個數據集(LDDEFC、ArtPhoto、IAPS-subset)上進行了多組實驗。實驗結果表明,相比于交叉熵損失函數,改進的Focal損失函數能夠將兩個模型的準確率、宏召回率、宏精準率分別提升 0.5~2.3 個百分點、0.4~3.9 個百分點、0.5~3.3個百分點。使用改進的Focal損失函數的模型,在幾個表現較差的類別上的分類能力上也有較好的提升。
現有的研究工作表明,神經網絡提取的圖像特征具有一定的通用性,在大型通用圖像數據集上訓練過的深度神經網絡,再經過一定的結構調整和訓練,可以很好地遷移到其他問題上[15],因此本文選用了在ImageNet數據集上預訓練的AlexNet[5]和ResNet-50[7]模型作為情感分析模型,以驗證本文改進算法的有效性。
AlexNet 網絡結構如圖1 所示。輸入為227×227×3像素的三通道圖像,輸入圖像首先進行五層卷積運算。第一個、第二個和第五個卷積層后面進行了最大池化(Max-pooling)運算以降低信息冗余,提升模型的尺度不變性和旋轉不變性。此外在第一和第二個卷積層后面還進行了局部響應歸一化(Local Response Normalized)運算來增加泛化能力。第五個卷積層輸出的特征被降為一維的特征向量,并經過兩層全連接網絡,最后通過一個softmax分類器輸出一個概率分布向量。所有神經網絡使用ReLU[5]作為激活函數。
ResNet-50 的網絡結構如圖2 所示。網絡依次由卷積層conv1 以及conv2_x、conv3_x、conv4_x、conv5_x 四個卷積塊構成。卷積塊conv2_x到conv5_x內部由重復的殘差塊[7]構成,ResNet通過殘差塊中的殘差連接來避免深度卷積神經網絡的退化問題,并且減少模型的訓練時間。輸入經過五個卷積塊以后,再經過一個平均池化運算,最后由softmax分類器輸出各類別的概率。
本文采用的兩個卷積神經網絡均使用ImageNet 數據集的預訓練模型,并將網絡的輸出層維度改為8(即訓練集中樣本的類別數),然后使用情感圖像數據集來訓練網絡的最后一層。但是這兩個模型都未對訓練樣本中的樣本不平衡問題進行處理,因此在模型的訓練過程中,還應該采取一定的方法來處理樣本不平衡問題。

圖1 AlexNet網絡結構

圖2 ResNet網絡結構
樣本不平衡是機器學習領域中一個重要的問題。將不平衡的樣本用于分類模型的訓練中,會使得模型的泛化性能較差[16]。圖像情感分析研究早期使用手工特征研究所用數據集的規模較小,通常包含的圖像數量約為數百張[17-18]。這些數據集對于基于手工特征的方法已經足夠,但是隨著深度學習方法的興起,這些小型數據集已經不能夠滿足模型訓練的需要。因此,研究人員開始通過互聯網獲取圖像來建立大規模情感圖像數據集,使得基于深度神經網絡模型的應用研究得以進一步開展。圖像情感分析研究中常用的數據集包括IAPS-subset[18]、ArtPhoto[17]、LSDFEC[14],各數據集的數量如表 1所示。其中,最大的情感圖像數據集LSDFEC是You等人[14]在社交網站Flickr 和Instagram 上使用情感關鍵字抓取圖像,并通過人工標注情感類別整理得到的。該數據集有2萬多張圖片,數據量能夠較好地滿足深度學習模型訓練的需求。但是該數據集中存在著較為明顯的樣本不平衡問題,其中數量最多的類別與數量最少的類別的數量比約為5∶1。而另外兩個小型數據集ArtPhoto與IAPS-subset 也存在著較為明顯的樣本不平衡問題。因此,對于圖像情感分析研究而言,處理樣本不平衡問題有著重要的意義。

表1 三個數據集中各類別圖片的數量
處理樣本不平衡問題的常用方法有:樣本加權[19]、數據集重采樣[20-21]、樣本合成[22]。但是前兩種方法僅考慮了類別數量的差異,忽略了樣本分類難度的差異,而樣本合成方法的適用性比較有限,在圖像分類等問題中的應用較為復雜。
Lin 等[23]針對目標檢測中的樣本不平衡問題,對交叉熵(Cross Entropy)進行了改進,提出了Focal 損失函數。在基于卷積神經網絡的情感分析模型中,交叉熵是最為常用的損失函數,其大小為:

其中,p為模型判斷輸入樣本屬于真實類別的概率(即樣本置信度)。然而,在情感分析模型訓練時,傳統交叉熵損失函數對訓練集當中困難樣本的關注度不夠,同時也不能較好地處理訓練情感圖像數據集當中存在的類別樣本不平衡問題[14]。這樣,交叉熵損失函數在多分類任務時,數據集的類別樣本不平衡問題就會使得模型的性能退化。同時,困難樣本與簡單樣本數量的不平衡也會導致大量的簡單樣本降低模型整體的損失,模型在訓練中很難關注到數量較少的困難樣本。
為此,Lin等人提出了Focal損失函數:

其中,聚焦參數γ為一個大于0的超參數。通過實驗來得到最優值,其作用是通過(1-p)γ項來放大低置信度樣本的損失在總損失中的權重,縮小高置信度樣本的損失在總損失中的權重。這是因為對于置信度高的樣本,即p越大的樣本,調制因子(1-p)γ越小;反之,置信度低的樣本,即p越小的樣本,調制因子(1-p)γ越大。這樣,在訓練中,困難樣本的損失被放大,模型會更加關注困難樣本。平衡參數α同樣是一個超參數,由網格搜索(Grid Search)方法得到最優值,其作用是控制正負樣本對總損失的權重,平衡不同類別樣本的數量。
雖然Focal損失函數較好地解決了二分類問題中困難樣本挖掘和正負樣本數量不均衡問題,但是將它應用于圖像情感多類別分類模型時,若仍采用通過網格搜索的方法得到平衡參數α,這樣隨著類別數量的增加,平衡參數α的調優工作量會大大增加(例如對于二分類,實驗10個α值需要102次訓練;對于八分類則需要108次訓練)。此外,固定的聚焦參數γ對于分類難度不同的樣本損失在訓練過程中的縮放程度不變,不利于模型精度的進一步提升。因此,本文將對Focal 損失函數中聚焦參數γ和平衡參數α的確定方法進行改進,將平衡參數α與數據集當中各類別的數據量相關聯,將聚焦參數γ與模型訓練的過程相關聯。具體對Focal損失函數中的聚焦參數γ和平衡參數α的確定如下。
(1)平衡參數α的確定。在多類別分類問題中,如果參數α進行網格搜索優化,會使得訓練的工作量呈指數級增長,因此本文不再用優化的方法確定參數α的數值,而采用啟發式的方法,直接根據訓練集中各類別數量來確定參數α的數值,即根據各類別樣本的數量來重縮放(Rescale)分類損失大小[19]。為了平衡各類別樣本的數量,本文希望所有類別的樣本在訓練中對于分類器同等重要,即希望加大少數樣本損失的權重,同時減少多數樣本損失的權重[23]。具體而言,權重設定的目標要使得任意兩個類別的權重之比等于這兩個類別樣本數量的反比。若設數據集中類別總數為N,則第i類(i∈[1,N])的平衡參數αi等于類別權重值的大小,即:

其中,mi為第i類的樣本數量。從式(3)可以看出,平衡參數αi在訓練中能較好地按照數據集中各類別樣本的數量比例放大或者減小損失值。
表2 給出了表1 中數據集各類別對應的類別權重值。由表2 可見,如果某個類別的數據量越大,也就是在訓練時出現的頻率越高,對應的類別權重值就越小,即單個樣本在總損失的比重越小;反之則對應的類別權重值就越大,也就是單個樣本在總損失的比重越大。
(2)對于聚焦參數γ的確定。通過研究發現,在訓練早期,Focal 損失函數會使模型的訓練精度低于使用交叉熵損失函數時的精度。圖3 給出了一組交叉熵損失(CE)與α=1,γ分別取2、4 時Focal 損失(FL)的數值曲線。從圖中可以看出,隨著樣本的置信度的增加,交叉熵損失值減小相對較緩,而Focal 的損失值的減小則相對較快。當樣本的置信度為0.1 時,交叉熵損失值為2.3,而Focal 損失值分別為1.8、1.5;當樣本的置信度為0.9 時,交叉熵損失值為0.1,Focal 損失值則分別為1×10-3、1×10-5。在訓練早期,大部分樣本的置信度都不高(遠小于1)。當樣本的置信度較低時,交叉熵損失要小于Focal 損失值。因為Focal 損失函數中的(1-p)γ項反而會使訓練整體的損失降低,從而降低了模型學習的速度;而在訓練的后期,大部分樣本的置信度都得到了提升,此時由于γ值不變,(1-p)γ項對高置信度樣本損失值的抑制和對低置信度樣本的放大程度也不變,不利于訓練的進一步進行。此時如果能增大γ值,就可以進一步放大低置信度樣本的損失。

圖3 交叉熵損失與不同γ 值時Focal損失的對比
因此,本文在訓練中,采用每N輪訓練后調整一次γ值,即:

其中,nepoch為訓練的輪數;為向下取整運算;γbest為γ的最優值。這樣,用一種漸增方式來確定γ的值,在訓練早期先使用一個較小的γ值,在訓練中后期逐漸增大γ的值,進一步放大低置信度樣本的損失在總損失中的權重,縮小高置信度樣本的損失在總損失中的權重,使得模型在訓練的中后期更加聚焦于困難樣本的訓練,從而提升分類模型的精度。
為驗證本文改進的Focal 損失函數的性能,在計算機上進行了仿真實驗。實驗中使用了Keras深度學習框架,CPU 為英特爾酷睿i7-7700HQ,內存大小為16 GB,GPU為英偉達GTX 1070顯卡,顯存大小8 GB。
神經網絡模型首先使用大規模情感圖像數據集LSDFEC來進行訓練。使用該數據集訓練模型時,均將數據集隨機劃分為:訓練集(數據總數的80%)、測試集(數據總數的15%)、驗證集(數據總數的5%)。圖像在輸入網絡前進行去均值化處理[6]。訓練使用mini-batch梯度下降法,學習率為0.001,batch大小為64,momentum值[24]設置為0.9。
為了驗證Focal損失函數以及相關參數設置的改進效果,本文在實驗中對比了普通交叉熵函數、Focal損失函數參數α、γ采用不同方法取值時在兩個神經網絡上的訓練效果。詳細對比實驗模型設置如下:
模型1 AlexNet+交叉熵損失函數(由式(1)定義)
模型2 AlexNet+Focal 損失函數(固定γ值,設置α=1)
模型3 AlexNet+改進的Focal損失函數(固定γ值,α值由式(3)定義)
模型4 AlexNet+改進的Focal損失函數(γ值由式(4)定義,α值由式(3)定義)
模型5 ResNet+交叉熵損失函數(由式(1)定義)
模型6 ResNet+Focal損失函數(固定γ值,設置α=1)
模型7 ResNet+改進的Focal 損失函數(固定γ值,α值由式(3)定義)
模型8 ResNet+改進的Focal損失函數(γ值由式(4)定義,α值由式(3)定義)
除了在大規模數據集上進行實驗以外,還使用了ArtPhoto 和IAPS-subset 兩個小型數據集來進行實驗。由于ArtPhoto 和IAPS-subset 這兩個小數據集的數據量都很小,本文首先用大型數據集LSDFEC 來訓練模型,然后再將訓練模型在小型數據集上微調(Finetune)最后一層。

表2 三個數據集中各類別的類別權重值
為了進行客觀分析比較,實驗中采用了準確率(Accuracy)、宏召回率(Macro Recall,MR)和宏精準率(Macro-Precision,MP)三個性能評價指標[25],并且給出了各個實驗模型的混淆矩陣結果[14]。
本文首先利用AlexNet、ResNet 兩個卷積神經模型來確定γ在這兩個卷積神經模型上的最優值γbest,其結果如表3 所示。從表3 的實驗結果中可以看出,參數γ在 AlexNet、ResNet 模型上的最優值分別是 1.8 和 1.6。然后,在對比實驗模型2、模型5 的訓練時,分別用對應最優值γbest作為γ的固定值;在對模型3 和模型6 的訓練過程中,則采用式(4)的漸增方式確定γ值。表4 給出了N取不同值時AlexNet 與ResNet 兩模型的實驗仿真結果(每10 輪訓練改變一次γ值)。從表中可以看出,雖然N取不同值時,各模型的準確率很接近,但兩模型均在N=10 時取得了略好的準確率,因此在實驗仿真中取N=10。

表3 不同γ 值在兩個模型上的準確率結果

表4 N 取不同值在兩個模型上的準確率結果
表5 分別給出了各模型在各個數據集上訓練得到的準確率、宏召回率和宏精準率結果。圖4分別給出了各模型在LSDFEC數據集上的混淆矩陣結果。

圖4 各實驗模型在LSDFEC數據集上的混淆矩陣結果

表5 各模型在各個數據集上準確率、宏召回率和宏精準率結果%
首先,對比模型4 與模型1、模型8 與模型5 可以發現,相比于交叉熵損失函數,將Focal損失函數應用于神經網絡模型的圖像情感分析時,神經網絡模型的分析性能整體上都得到提升,且ResNet 模型的性能要優于AlexNet。其中AlexNet模型的準確率、宏召回率與宏精準率分別提升了 1.2~2.2 個百分點、1.5~3.9 個百分點、1.1~2.6個百分點;ResNet模型的準確率、宏召回率與宏精準率分別提升了1.5~2.3個百分點、1.5~3.1個百分點、1.7~3.3個百分點。
其二,對比圖4中模型2與模型3、模型6與模型7的混淆矩陣可以看出,采用本文方法設置α的值,相比于設置α=1(即無平衡參數的影響),能夠有效地提升模型在幾個樣本數量較少的類別(例如憤怒、惡心、恐懼)上的分類能力,從而使得模型在各個類別上的表現相對更加均衡。其中AlexNet 模型的準確率、宏召回率與宏精準率分別提升了0.3~1.3個百分點、1.2~1.6個百分點、0.9~1.3個百分點;ResNet模型的準確率、宏召回率與宏精準率分別提升了0.5~2.0個百分點、1.0~2.1個百分點、0.8~2.4個百分點。
其三,對比模型3 與模型4、模型7 與模型8 可以看出,相較于固定γ值,采用漸增式調整γ值時,神經網絡模型的圖像情感分析性能得到提升。其中AlexNet模型的準確率、宏召回率與宏精準率分別提升了0.5~1.7 個百分點、0.4~0.8 個百分點、0.5~1.0 個百分點;ResNet 模型的準確率、宏召回率與宏精準率分別提升了0.9~1.5個百分點、0.4~1.6個百分點、0.6~1.5個百分點。
針對交叉熵損失函數對困難樣本關注度低,以及難以處理訓練圖像數據集中樣本不平衡問題,本文將Focal損失函數應用到圖像情感分析中。在模型的訓練中,利用類別權重因子來確定平衡參數大小,采用漸增變化方式調節聚焦因子大小,對Focal 損失函數參數的確定方式進行改進,以提升情感分析模型的訓練效率和性能。仿真實驗結果表明,改進的Focal 損失函數能夠有效地提高模型的準確率、宏召回率和宏精準率,并且使得模型在各個類別上的分類能力更加均衡,較好地緩解數據不平衡問題的負面影響。這些性能指標的提升對于圖像情感分析的應用,例如基于情感的圖像檢索和基于圖像情感的社交媒體輿論分析等,都是具有重要價值的。