導航:首頁 > 源碼編譯 > lstm演算法應用

lstm演算法應用

發布時間:2024-10-11 08:25:50

① 文章自動打分演算法

文章自動打分簡稱 AES (Automated Essay Scoring),AES 系統利用 NLP 技術自動對文章進行打分,可以減輕閱卷人員的負擔。目前有不少大型的考試都採用了 AES 演算法進行作文打分,例如 GRE 考試,GRE 考試會有一位閱卷老師和 AES 系統一起打分,如果 AES 的分數和閱卷老師的分數相差過大,才有再增加一位閱卷老師進行打分。本文主要介紹兩種比較經典的自動打分演算法。

自動打分演算法從優化目標或者損失函數來說大致可以分為三種:

傳統的自動打分演算法通常會人工設置很多特徵,例如語法錯誤,N 元組,單詞數量,句子長度等,然後訓練機器學習模型進行打分。目前也有很多使用了神經網路的方法,通過神經網路學習出文章的特徵。

下面介紹兩種打分演算法:

出自論文《Regression based Automated Essay Scoring》。給定很多需要打分的文章後,首先需要構造出文章的特徵,用到了人工設置特徵和向量空間特徵。

拼寫錯誤 Spelling Errors :使用 pyenchant 包統計出拼寫錯誤單詞數量占總單詞數量的比例。

統計特徵 Statistical Features :統計字元數量,單詞數量,句子數量,段落數量,停止詞數量,命名實體數量,標點符號數量 (反映文章的組織情況),文本長度 (反映寫作流暢程度),不同詞彙的數量與總單詞數的佔比 (反映詞彙量水平)。

詞性統計 POS count :統計各種詞性出現的頻率,例如名詞,動詞,形容詞,副詞等,詞性通過 nltk 包獲取。

語法流暢特徵 Grammatical Fluency :使用 link grammar (鏈語法) 解析句子,然後統計 links 的個數;統計 n 元組出現的概率;統計詞性 n 元組出現的概率。

可讀性 Readability :可讀性分數是衡量文本組織以及文本句法和語義復雜程度的一個指標。採用了 Kincaid 可讀性分數作為一個特徵,計算公式如下

本體特徵 Ontological Features :為每個句子打上標簽,例如研究、假設、主張、引用、支持和反對等。

可以將一篇文章投影到一個向量空間模型中 (VSM),此時文章可以用向量空間中的一個特徵向量表示,例如可以用 one-hot 編碼表示一篇文章,長度等於詞彙表長度,如果一個單詞出現在文章中,則對應的位置置為 1,如下:

另外也可以使用 TF-IDF 向量表示文本,但是採用這種表示方式單詞之間不存在任何關聯,為了解決這個問題,文章中使用了一個單詞相關性矩陣 W 加上線性變換從而引入單詞之間的相關性。

單詞的相關性矩陣 W 通過 word2vec 生成的詞向量計算,即 W (i,j) = 單詞 i 和單詞 j 詞向量的餘弦相似度。

最後,為了考慮文章中單詞的順序問題,將文章拆分成 k 個段落,然後分別計算向量空間特徵,融合在一起。

得到上述特徵之後,採用 SVR 演算法進行回歸學習。數據集是 kaggle ASAP 比賽數據集,數據集包含 8 個集合的文章,評價指標採用 KAPPA 和相關系數,以下是一些實驗效果。

這是在 8 個集合上分別使用 linear kernel 和 rbf kernel 的效果。

這是和人類打分者的對比。

以下內容出自論文《Neural Networks for Automated Essay Grading》,可以採用回歸或者分類的方法進行訓練,模型如下圖所示。

論文中主要使用了三種方法構造出文章的特徵向量:

論文中主要用了三種神經網路結構,NN (前向神經網路),LSTM 和 BiLSTM。所有的網路都會輸出一個向量 h(out),根據 h(out) 構造出損失函數,下面分別是回歸和分類的損失函數。

回歸損失

分類損失

第一種模型:NN (前向神經網路)

使用了兩層前向神經網路,網路輸入的文章特徵向量是 Glove 詞向量的平均值或者訓練的詞向量平均值。h(out) 的計算公式如下。

第二種模型:LSTM

LSTM 模型接受的輸入是文章所有單詞的詞向量序列,然後將 LSTM 最後輸出的向量作為文章的特徵向量 h(out)。

第三種模型:BiLSTM

因為文章通常比較長,單向的 LSTM 容易丟失前面的信息,因此作者也使用了 BiLSTM 模型,將前向 LSTM 和後向 LSTM 模型的輸出加在一起作為 h(out)。

添加 TF-IDF 向量

以上模型的輸出 h(out) 都可以再加上 TF-IDF 向量提升性能,首先需要對 TF-IDF 向量降維,然後和模型的輸出拼接在一起,如下圖所示 (BiLSTM 為例子)。

《Regression based Automated Essay Scoring》
《Neural Networks for Automated Essay Grading》

② 幾種常見的循環神經網路結構RNN、LSTM、GRU

傳統文本處理任務的方法中一般將TF-IDF向量作為特徵輸入。顯而易見,這樣的表示實際上丟失了輸入的文本序列中每個單詞的順序。在神經網路的建侍空模過程中,一般的前饋神經網路,如卷積神經網路,通常接受一個定長的向量作為輸入。卷積神經網路對文本數據建模時,輸入變長的字元串或者單詞串,然後通過滑動窗口加池化的方式將原先的輸入轉換成一個固定長度的向量表示,這樣做可以捕捉到原文本中的一些局部特徵,但是兩個單詞之間的長距離依賴關系還是很難被學習到。
循環神經網路卻能很好地處理文本數據變長並且有序的輸入序列。它模擬了人閱讀一篇文章的順序,從前到後閱讀文章中的每一個單詞,將前面閱讀到的有用信息編碼到狀態變數中去,從而擁有了一定的記憶能力,可以更好地理解之後的文本。
其網路結構如下圖所示:

由圖可見,t是時刻,x是輸入層,s是隱藏層,o是輸出層,矩陣W就是隱藏層上一次的值作為這一次的輸入的權重。

如果反復把式 2 帶入到式 1,將得到:

其中f和g為激活函數,U為輸入層到隱含層的權重矩陣,W為隱含層從上一時刻到下一時刻狀態轉移的權重矩陣。在文本分類任務中,f可以選取Tanh函數或者ReLU函數,g可以採用Softmax函數。

通過最小化損失誤差(即輸出的y與真實類別之間的距離),我們可以不斷訓練網路,使得得到的循環神經網路可以准確地預測文本所屬的類別,達到分類目的。相比於卷積神經網路等前饋神經網路,循環神經網路由於具備對序列順序信息的刻畫能力,往往能得到更准確的結果。

RNN的訓練演算法為:BPTT
BPTT的基本原理和BP演算法是一樣的,同樣是三步:
1.前向計算每個神經元的輸出值;
2.反向計算每個神經元的誤差項值,它是誤差函數E對神經元j的加權輸入的偏導數;
3.計算每個權重的梯度。
最後再用隨機梯度下降演算法更新權重。
具體參考: https://www.jianshu.com/p/39a99c88a565
最後由鏈式法則得到下面以雅可比矩陣來表達的每個權重的梯度:

由於預測的誤差是沿著神經網路的每一層反向傳播的,因此當雅克比矩陣的最大特徵值大於1時,隨著離輸出越來越遠,每層的梯度大小會呈指數增長,導致梯度爆炸;反之,若雅克比矩陣的最大特徵值小於1,梯度的大小會呈指數縮小,產生梯度消失。對於普通的前饋網路來說,梯度消失意味著無法通過加深網路層次來改善神經網路的預測效果,因為無論如何加深網路,只有靠近輸出的若干層才真正起到學習的作用。 這使得循環神經網路模型很難學習到輸入序列中的長距離依賴關系

關於RNN梯度下降的詳細推導可以參考: https://zhuanlan.hu.com/p/44163528

梯度爆凳缺炸的問題可以通過梯度裁剪來緩解,即當梯度的範式大於某個給定值時,對梯度進行等比收縮。而梯度消失問題相對比較棘手,需要對模型本身進行改進。深度殘差網路是對前饋神經網路的改進,通過殘差學習的方式緩解了梯度消失的現象,從而使得我們能夠學習到更深層的網路表示;而對於循環神經網路來說,長短時記憶模型及其變種門控循環單元等模型通過加入門控機制,很大程度上彌補了梯度消失所帶來的損失。

LSTM的網路機構圖如下所示:

與傳統的循環神經網路相比,LSTM仍然是基於xt和ht−1來計算ht,只不過對內部的結構進行了更加精心的設計,加入了輸入門it 、遺忘門ft以及輸出門ot三個門和一個內部記憶單元ct。輸入門控制當前計算的新狀態以多大程度更新到記憶單元中;遺老粗瞎忘門控制前一步記憶單元中的信息有多大程度被遺忘掉;輸出門控制當前的輸出有多大程度上取決於當前的記憶單元。

在經典的LSTM模型中,第t層的更新計算公式為

其中it是通過輸入xt和上一步的隱含層輸出ht−1進行線性變換,再經過激活函數σ得到的。輸入門it的結果是向量,其中每個元素是0到1之間的實數,用於控制各維度流過閥門的信息量;Wi 、Ui兩個矩陣和向量bi為輸入門的參數,是在訓練過程中需要學習得到的。遺忘門ft和輸出門ot的計算方式與輸入門類似,它們有各自的參數W、U和b。與傳統的循環神經網路不同的是,從上一個記憶單元的狀態ct−1到當前的狀態ct的轉移不一定完全取決於激活函數計算得到的狀態,還由輸入門和遺忘門來共同控制。

在一個訓練好的網路中,當輸入的序列中沒有重要信息時,LSTM的遺忘門的值接近於1,輸入門的值接近於0,此時過去的記憶會被保存,從而實現了長期記憶功能;當輸入的序列中出現了重要的信息時,LSTM應當把其存入記憶中,此時其輸入門的值會接近於1;當輸入的序列中出現了重要信息,且該信息意味著之前的記憶不再重要時,輸入門的值接近1,而遺忘門的值接近於0,這樣舊的記憶被遺忘,新的重要信息被記憶。經過這樣的設計,整個網路更容易學習到序列之間的長期依賴。

GRU是在LSTM上進行簡化而得到的,GRU的網路結構如下所示:

Zt代表更新門,更新門的作用類似於LSTM中的遺忘門和輸入門,它能決定要丟棄哪些信息和要添加哪些新信息。
Rt代表重置門,重置門用於決定丟棄先前信息的程度。

要注意的是,h只是一個變數,因此在每個時刻,包括最後的線性組合,h都是在用以前的自己和當前的備選答案更新自己。舉例來說,這一個變數好比一杯酒,每次我們要把一部分酒倒出去,並把倒出去的酒和新加入的原料混合,然後在倒回來,這里的reset控制的就是要倒出去的,並且混合好之後再倒回來的酒的比例,而update控制的則是用多大的比例混合新原料和倒出來的之前調制好的酒。同理,也可以以此理解LSTM,LSTM的遺忘門功能上和reset相似,而輸入門與update相似,不同之處在於LSTM還控制了當前狀態的exposure,也就是輸出門的功能,這是GRU所沒有的。

1.百面機器學習
2. https://zhuanlan.hu.com/p/45649187
3. https://www.jianshu.com/p/39a99c88a565

③ 時序預測 | Matlab實現CPO-LSTM【24年新演算法】冠豪豬優化長短期記憶神經網路時間序列預測

本文介紹如何使用Matlab實現一種2024年新演算法,即CPO-LSTM,這是一個冠豪豬優化的長短期記憶神經網路,用於時間序列預測。此方法在預測准確性方面有著顯著提升。實現過程需要運行環境Matlab2021b,數據集為Excel格式,包含多個特徵,預測單一變數,為多變數回歸預測。

主要程序文件名為main.m,直接運行即可完成預測。預測結果將輸出到命令窗口,包括R2、MAE、MBE、MAPE、RMSE等評估指標。代碼設計遵循參數化編程原則,使得參數調整更加靈活,代碼邏輯清晰且注釋詳盡。

為了獲取完整源碼和數據,可點擊下方鏈接咨詢。咨詢時可以提出六條具體需求,獲取與之對應的內容。需注意,單次咨詢僅提供一份代碼,若代碼內有明確說明可通過咨詢獲取,則免費提供,否則需付費咨詢。

在使用過程中,務必仔細閱讀代碼注釋,理解每一部分的功能與參數調整方法,以便更好地應用於實際預測任務中。本代碼在預測准確性、執行效率以及可擴展性方面均有良好表現,適合作為時間序列預測問題的解決方案。

閱讀全文

與lstm演算法應用相關的資料

熱點內容
數量關系排序演算法 瀏覽:180
serv文件怎麼傳到伺服器上 瀏覽:271
開發者聯名貢獻源碼 瀏覽:338
sae部署java 瀏覽:18
校園330app怎麼下載 瀏覽:23
javahashcode演算法 瀏覽:714
pdf轉doc手機軟體 瀏覽:531
方舟手游開伺服器機床怎麼選 瀏覽:255
qt編程入門pdf下載 瀏覽:784
java編程的三個步驟 瀏覽:776
s點b點主圖源碼 瀏覽:436
電腦可以刪除的臨時文件夾 瀏覽:9
小杜app上怎麼啟用 瀏覽:305
為什麼伺服器喇叭喊了一次就不行 瀏覽:480
phpdbo驅動 瀏覽:255
程序員尋找轉行建議 瀏覽:632
psgrepjava 瀏覽:415
夢幻誅仙12職業變態源碼 瀏覽:370
汽車的控制是怎麼編程的 瀏覽:686
穩定的ip地址伺服器 瀏覽:641