• 正文
    • NO.1|CNN簡(jiǎn)介
    • NO.2|雙向LSTM(BiLSTM)
    • NO.3|注意力機(jī)制
    • NO.4|CNN-BiLSTM-Attention
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

融合注意力機(jī)制的卷積神經(jīng)網(wǎng)絡(luò)-雙向長(zhǎng)短期記憶網(wǎng)絡(luò)(CNN-BiLSTM-Attention)的多變量

03/25 12:25
2310
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

CNN-BiLSTM-Attention模型是一種在自然語(yǔ)言處理(NLP)任務(wù)中常用的強(qiáng)大架構(gòu),如文本分類、情感分析等。它結(jié)合了卷積神經(jīng)網(wǎng)絡(luò)(CNN)、雙向長(zhǎng)短期記憶網(wǎng)絡(luò)(BiLSTM)和注意力機(jī)制的優(yōu)勢(shì),能夠捕捉局部特征和序列數(shù)據(jù)中的長(zhǎng)程依賴關(guān)系。

NO.1|CNN簡(jiǎn)介

CNN 主要由卷積層和池化層構(gòu)成,其中卷積層利用卷積核進(jìn)行電力負(fù)荷數(shù)據(jù)的有效非線性局部特征提取,池化層用于壓縮提取的特征并生成更重要的特征信息,提高泛化能力。卷積神經(jīng)網(wǎng)絡(luò)作為一種深度學(xué)習(xí)模型,廣泛應(yīng)用于圖像識(shí)別、目標(biāo)檢測(cè)、圖像分割和自然語(yǔ)言處理等領(lǐng)域。CNN的設(shè)計(jì)靈感來(lái)源于生物視覺系統(tǒng),通過(guò)模擬人類視覺處理的方式來(lái)實(shí)現(xiàn)對(duì)圖像等數(shù)據(jù)的高效識(shí)別和處理。

CNN的核心是卷積層,它通過(guò)卷積操作自動(dòng)提取輸入數(shù)據(jù)的空間層次特征,并通過(guò)池化層降低特征的空間尺寸,同時(shí)保留最重要的特征信息。在經(jīng)過(guò)多層卷積和池化層之后,通常會(huì)有全連接層來(lái)產(chǎn)生最終的輸出結(jié)果,如圖像分類的類別標(biāo)簽 。CNN的工作原理主要包括以下幾個(gè)關(guān)鍵步驟:

局部感受野:每個(gè)神經(jīng)元只響應(yīng)圖像的一個(gè)小區(qū)域,這與人類視覺系統(tǒng)的工作原理相似 。

卷積操作:通過(guò)滑動(dòng)窗口(卷積核)在輸入圖像上進(jìn)行逐元素相乘然后求和的操作,以此提取圖像的局部特征 。

激活函數(shù):如ReLU,用于引入非線性,幫助網(wǎng)絡(luò)學(xué)習(xí)更復(fù)雜的特征 。

池化層:通過(guò)最大池化或平均池化減少特征圖的空間尺寸,降低計(jì)算量并提取重要特征 。

全連接層:在網(wǎng)絡(luò)的末端,將提取的特征映射轉(zhuǎn)化為最終輸出,如分類結(jié)果 。

CNN的訓(xùn)練通常采用監(jiān)督學(xué)習(xí)的方法,通過(guò)調(diào)整網(wǎng)絡(luò)中的權(quán)重和偏置來(lái)最小化預(yù)測(cè)輸出和真實(shí)標(biāo)簽之間的差異。在訓(xùn)練過(guò)程中,網(wǎng)絡(luò)學(xué)習(xí)從簡(jiǎn)單到復(fù)雜的分層特征,低層可能學(xué)習(xí)到邊緣等基礎(chǔ)特征,而高層可能學(xué)習(xí)到更復(fù)雜的形狀或紋理特征

NO.2|雙向LSTM(BiLSTM)

LSTM是一種特殊的遞歸神經(jīng)網(wǎng)絡(luò)(RNN),擅長(zhǎng)捕捉時(shí)間序列中的長(zhǎng)期依賴關(guān)系,通過(guò)引入遺忘門、輸入門和輸出門三種門的邏輯控制單元保持和更新細(xì)胞狀態(tài),加強(qiáng)了長(zhǎng)期記憶能力,可以很好地解決RNN梯度消失與梯度爆炸的問(wèn)題。LSTM 通過(guò)學(xué)習(xí)時(shí)序數(shù)據(jù)的長(zhǎng)時(shí)間相關(guān)性,使網(wǎng)絡(luò)可以更好、更快地收斂,有助于提高預(yù)測(cè)精度。

(1)遺忘門的作用是從時(shí)刻t-1的細(xì)胞狀態(tài)?為?中選擇需要丟棄的信息,具體如公所示。遺忘門通過(guò)讀取前一時(shí)刻的隱藏層狀態(tài)?和?當(dāng)前時(shí)刻的輸入序列?為?,產(chǎn)生一個(gè)介于0到1之間的輸出值,其中1代表完全保留信息,0代表完全舍棄信息。

在公式中,?是?表示當(dāng)前時(shí)刻t的遺忘門輸出;Wf和bf分別表示遺忘門的權(quán)重矩陣和偏置項(xiàng);σ代表 sigmoid 激活函數(shù)。

(2) 輸入門的主要功能是根據(jù)當(dāng)前時(shí)刻t的輸入?為?決定需要保存在神經(jīng)元中的信息。首先,通過(guò) tanh 層生成時(shí)刻t的候選記憶單元狀態(tài)?為?,然后結(jié)合遺忘門的輸出對(duì)細(xì)胞狀態(tài)進(jìn)行更新,得到新的細(xì)胞狀態(tài)?為?。輸入門的具體運(yùn)算過(guò)程如下所示。

其中,??是輸入門在時(shí)刻t的輸出狀態(tài),決定了輸入??對(duì)更新細(xì)胞狀態(tài)??的影響程度;Wi和bi分別是輸入門的權(quán)重和偏置項(xiàng);Wc和bc是生成候選記憶單元??的權(quán)重矩陣和偏置;tanh為雙曲正切激活函數(shù);?是?表示元素逐位相乘。

(3) 輸出門從當(dāng)前細(xì)胞狀態(tài)中提取并輸出關(guān)鍵信息。首先通過(guò)σ層決定哪些神經(jīng)元狀態(tài)需要被輸出,然后將這些神經(jīng)元狀態(tài)經(jīng)過(guò) tanh 層處理,再與σ輸出相乘,生成最終的?輸出值?,該值也作為下一個(gè)時(shí)間步的隱藏層輸入。輸出門的計(jì)算過(guò)程如公式所示。?? ? ? ?其中,?是?輸出門在時(shí)刻t的輸出狀態(tài);Wo和 bo分別為輸出門的權(quán)重矩陣和偏置項(xiàng)。

由此可見,LSTM網(wǎng)絡(luò)在訓(xùn)練過(guò)程中通常采用單向的數(shù)據(jù)流,即信息只從序列的開始流向結(jié)束。這種單向訓(xùn)練方式可能會(huì)導(dǎo)致數(shù)據(jù)的時(shí)間序列特征沒有得到充分利用,因?yàn)樗雎粤藦男蛄心┪驳介_始的潛在聯(lián)系。為了克服這一限制,BiLSTM(雙向長(zhǎng)短期記憶)網(wǎng)絡(luò)被提出。BiLSTM 融合了兩個(gè)LSTM層:一個(gè)處理正向序列(從前到后),另一個(gè)處理反向序列(從后到前)。這種結(jié)構(gòu)的優(yōu)勢(shì)在于:

(1)正向LSTM:捕捉時(shí)間序列中從過(guò)去到當(dāng)前的信息流動(dòng),提取序列的前向依賴特征。

(2)反向LSTM:捕捉從未來(lái)到當(dāng)前的逆向信息流動(dòng),提取序列的后向依賴特征。

前向 LSTM、后向 LSTM 的隱藏層更新狀態(tài)以及 BiLSTM 最終輸出過(guò)程如式所示。

式中,?、、?分別為不同層之間的激活函數(shù)。通過(guò)結(jié)合這兩個(gè)方向的信息,BiLSTM 能夠更全面地理解數(shù)據(jù)在時(shí)間序列上的特征聯(lián)系,從而提高模型對(duì)數(shù)據(jù)的利用率和預(yù)測(cè)精度。這種雙向處理方式使得BiLSTM在處理諸如自然語(yǔ)言處理、語(yǔ)音識(shí)別和其他需要理解時(shí)間序列前后文信息的任務(wù)中表現(xiàn)出色。

NO.3|注意力機(jī)制

注意力機(jī)制(Attention Mechanism)是深度學(xué)習(xí)中的一種關(guān)鍵技術(shù),它模仿了人類在處理大量信息時(shí)選擇性集中注意力的能力。注意力模型在自然語(yǔ)言處理、圖像識(shí)別、語(yǔ)音識(shí)別等多個(gè)領(lǐng)域都有廣泛應(yīng)用。

注意力機(jī)制的核心思想是通過(guò)權(quán)重(或分?jǐn)?shù))來(lái)表示模型對(duì)輸入數(shù)據(jù)中不同部分的關(guān)注程度。這些權(quán)重通常通過(guò)一個(gè)可學(xué)習(xí)的方式計(jì)算得到,以反映不同輸入部分對(duì)于當(dāng)前任務(wù)的重要性。注意力機(jī)制的數(shù)學(xué)模型通常包括以下幾個(gè)步驟:

(1)計(jì)算權(quán)重:對(duì)于給定的查詢(Query)和一組鍵(Key),計(jì)算它們之間的相似度或相關(guān)性得分。?? ? ? ??(2)歸一化:使用softmax函數(shù)對(duì)得分進(jìn)行歸一化處理,得到每個(gè)鍵對(duì)應(yīng)的權(quán)重。?? ? ? ?(3)加權(quán)求和:根據(jù)權(quán)重對(duì)相應(yīng)的值(Value)進(jìn)行加權(quán)求和,得到最終的注意力輸出。

其中,et是注意力評(píng)分,?是?歸一化的注意力權(quán)重,c是加權(quán)上下文向量

NO.4|CNN-BiLSTM-Attention

%% 建立模型#%% Build the modelfrom tensorflow.keras.layers import Input, Conv2D, ReLU, GlobalAveragePooling2D, Dense, Multiply, Reshape, Bidirectional, LSTMfrom tensorflow.keras.models import Modelfrom tensorflow.keras.optimizers import Adam
input_layer = Input(shape=(f_, 1, 1), name='sequence')
# Conv Layer 1x = Conv2D(filters=32, kernel_size=(1, 1), name='conv_1')(input_layer)x1 = x  # For SE blockx = ReLU(name='relu_1')(x)
# Conv Layer 2x = Conv2D(filters=64, kernel_size=(1, 1), name='conv_2')(x)x = ReLU(name='relu_2')(x)x2 = x  # For multiplication
# SE Attention Mechanismse = GlobalAveragePooling2D(name='gapool')(x1)se = Dense(16, activation='relu', name='fc_2')(se)se = Dense(64, activation='sigmoid', name='fc_3')(se)se = Reshape((1, 1, 64))(se)
# Multiply attention weightsx = Multiply(name='multiplication')([x2, se])
# BiLSTM and output layersx = Reshape((f_, 64))(x)  # Reshape for LSTMx = Bidirectional(LSTM(6, return_sequences=False), name='bilstm')(x)output = Dense(1, name='fc')(x)
model = Model(inputs=input_layer, outputs=output)
#%% Compile the modelmodel.compile(optimizer=Adam(learning_rate=1e-2),              loss='mean_squared_error')
#%% Train the modelhistory = model.fit(p_train, t_train,                    epochs=100,                    batch_size=32,                    shuffle=True,????????????????????verbose=1)

----------------------- Error Metrics --------------------------Evaluation Results:Mean Absolute Error (MAE): 1.8489978987170805Mean Squared Error (MSE): 5.891611959966271Root Mean Square Error (RMSE): 2.4272642954499766R^2: 0.9020706144428995Residual Predictive Deviation (RPD): 3.339283608704873Mean Absolute Percentage Error (MAPE): 5.175561686899579%Total execution time: 42.57008957862854 seconds

相關(guān)推薦