日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Transformer的应用

發(fā)布時間:2024/1/21 37 coder
生活随笔 收集整理的這篇文章主要介紹了 Transformer的应用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Transformer

寫在前面

本學期學習了NLP的課程,本小菜雞結(jié)合做的課設(基于Transformer的英文文檔摘要系統(tǒng)的設計與實現(xiàn)),來寫一下有關于Transformer的相關內(nèi)容吧,有問題之處還請各位大佬批評指正

系統(tǒng)的背景

抽象文本摘要是自然語言處理中最具挑戰(zhàn)性的任務之一,涉及理解長段落、信息壓縮和語言生成。訓練機器學習模型以執(zhí)行此操作的主要范例是序列到序列(seq2seq) 學習,其中神經(jīng)網(wǎng)絡學習將輸入序列映射到輸出序列。雖然這些 seq2seq 模型最初是使用遞歸神經(jīng)網(wǎng)絡開發(fā)的,但 Transformer編碼器-解碼器模型最近受到青睞,因為它們可以更有效地對摘要中遇到的長序列中存在的依賴項進行建模。

結(jié)合自監(jiān)督預訓練的 Transformer 模型(例如,BERT、GPT-4、 RoBERTa、XLNet、ALBERT、T5、ELECTRA) 已被證明是產(chǎn)生通用語言學習的強大框架,在對廣泛的語言任務進行微調(diào)時可實現(xiàn)最先進的性能。然而,長文本摘要長度長,內(nèi)容廣,壓縮程度高,并且通常是特殊領域文章(如arxiv論文),一直以來是一個難以處理的問題。

開發(fā)環(huán)境與工具

模型

云服務器

處理器:8 * Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz

內(nèi)存容量:60GB

顯卡:NVIDIA GeForce RTX 3080ti

顯卡內(nèi)存:12GB

---------------我是分割線-----------------

操作系統(tǒng):Windows 10

工具軟件:PyCharm 2022.3.3(Professional Edition)、JupyterLab

開發(fā)語言:python 3.10

工具包:TensorFlow-gpu 2.13.0 + pandas +numpy + time + re + pickle

系統(tǒng)

處理器:Gen Intel Core i5-11400H @ 2.70Ghz

內(nèi)存容量:8GB

外存容量:512GB

顯卡:NVIDIA GeForce RTX 3050 Laptop GPU

顯卡內(nèi)存:8GB

---------------我是分割線-----------------

操作系統(tǒng):Windows 10

工具軟件:PyCharm 2022.3.3(Professional Edition)

開發(fā)語言:python/HTML/CSS/JavaScript

網(wǎng)絡框架:Django

瀏覽器:Microsoft Edge

工具包:Django 3.2.1 + tensorflow 2.15.0 + pandas + numpy + re + pickle

Transformer語言模型的原理介紹

主要是參考了著名的《Attention is all you need》

Transformer整體結(jié)構

如下圖所示,Transformer由encoder和decoder兩個部分組成,encoder和decoder都包含6個block。

Transformer的工作流程大概如下:

第一步:獲取輸入句子的每一個單詞的表示向量X,X由單詞的embedding(從原始數(shù)據(jù)提取的feature)和單詞位置的embedding相加得到。

第二步:將得到的單詞表示向量矩陣,傳入encoder中,經(jīng)過6個encoder block可以得到句子所有單詞的編碼信息矩陣C。單詞向量矩陣用\(X_{n \times d}\)表示,n是句子中單詞的個數(shù),d表示向量的維度(論文?[1]中d=512)。每一個encoder block輸出的矩陣維度與輸入完全一致。如下圖所示:

第三步:將encoder輸出的編碼信息矩陣C傳遞到decoder中,decoder依次會根據(jù)當前翻譯過的單詞1~i翻譯下一個單詞i+1,如下圖3-3所示。在使用過程中,翻譯到單詞i+1時需要通過*Mask*操作遮蓋住i+1之后的單詞。

Transfomer的輸入

Transformer中單詞的輸入表示x由單詞embedding和位置embedding相加得到,由下圖所示

單詞embedding

單詞的embedding有很多方式可以獲取,如word2vec、Glove等算法,也可以在Transformer中訓練得到。

位置embdding

Transformer中除了單詞的Embedding,還需要使用位置Embedding表示單詞出現(xiàn)在句子中的位置。因為Transformer不采用RNN的結(jié)構,而是使用全局信息,不能利用單詞的順序信息,而這部分信息對于NLP來說非常重要。所以Transformer中使用位置Embedding保存單詞在序列中的相對或絕對位置。

位置Embedding用PE表示,PE的維度與單詞Embedding是一樣的。PE可以通過訓練得到,也可以使用某種公式計算得到。在Transformer中采用了后者,計算公式如下:

\[\begin{aligned} PE_{(pos,2i)} &= \sin{(\frac{pos}{10000^{\frac{2i}ozvdkddzhkzd}})} \\ PE_{(pos,2i+1)} &= \cos{(\frac{pos}{10000^{\frac{2i}ozvdkddzhkzd}})} \end{aligned} \]

其中,pos表示單詞在句子中的位置,d表示 PE的維度 (與詞Embedding一樣),2i表示偶數(shù)的維度,2i+1表示奇數(shù)維度(即 \(2i \leq d,2i+1 \leq d\))。使用這種公式計算PE有以下的好處:?[2]

使PE能夠適應比訓練集里面所有句子更長的句子,假設訓練集里面最長的句子是有20個單詞,突然來了一個長度為21的句子,則使用公式計算的方法可以計算出第21位的Embedding。

可以讓模型容易地計算出相對位置,對于固定長度的間距k,PE(pos+k)可以用PE(pos)計算得到。因為\(\sin{(A+B)}=\sin{A}\cos{B}+\cos{A}\sin{B},\cos{(A+B)}=\cos{A}\cos{B}-\sin{A}\sin{B}\)

自注意力機制

如下圖所示結(jié)構,在計算的時候需要用到矩陣Q(查詢),K(鍵值),V(值)。在實際中,Self-Attention 接收的是輸入(單詞的表示向量x組成的矩陣X) 或者上一個 Encoder block 的輸出。而Q,K,V正是通過 Self-Attention 的輸入進行線性變換得到的。

Q、K、V的計算

Self-Attention 的輸入用矩陣X進行表示,則可以使用線性變陣矩陣WQ,WK,WV計算得到Q,K,V。計算如下圖所示,注意 X, Q, K, V 的每一行都表示一個單詞。如下圖所示:

Self-Attention的輸出

得到矩陣Q,K,V之后,就可以計算出Self-Attention的輸出了,計算公式如下:

\[Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V \]

其中\(d_k\)\(Q、K\)矩陣的列數(shù),即向量維度

公式中計算矩陣Q和K每一行向量的內(nèi)積,為了防止內(nèi)積過大,因此除以\(d_k\)的平方根。Q乘K的轉(zhuǎn)置后,得到的矩陣行列數(shù)都為n,n為句子單詞數(shù),這個矩陣可以表示單詞之間的attention強度。得到之\(QK^T\)后,使用Softmax計算每一個單詞對于其他單詞的attention系數(shù),公式中的Softmax是對矩陣的每一行進行Softmax,即每一行的和都變?yōu)?。得到Softmax矩陣之后可以和V相乘,得到最終的輸出Z。

Multi-Head Attention

在上一步,我們已經(jīng)知道怎么通過Self-Attention計算得到輸出矩陣Z,而Multi-Head Attention是由多個Self-Attention組合形成的,下圖是論文中Multi-Head Attention的結(jié)構圖。可以看到Multi-Head Attention輸出的矩陣Z與其輸入的矩陣X的維度是一樣的。

encoder結(jié)構

如下圖所示,紅色部分是Transformer的encoder block結(jié)構,可以看到是由Multi-Head Attention、Add & Norm、Feed Forward、Add & Norm組成的

Add&Norm

Add & Norm層由Add和Norm兩部分組成,其計算公式如下:

\[\begin{aligned} & LayerNorm(X+MultiHeadAttention(X)) \\ & LayerNorm(X+FeedForward(X)) \end{aligned} \]

其中X表示Multi-Head Attention或者Feed Forward的輸入,MultiHeadAttention(X)和FeedForward(X)表示輸出(輸出與輸入X維度是一樣的,所以可以相加)。

Add指X+MultiHeadAttention(X),是一種殘差連接,通常用于解決多層網(wǎng)絡訓練的問題,可以讓網(wǎng)絡只關注當前差異的部分,在ResNet中經(jīng)常用到。

Norm指Layer Normalization,通常用于RNN結(jié)構,Layer Normalization會將每一層神經(jīng)元的輸入都轉(zhuǎn)成均值方差都一樣,可以加快收斂速度。?[3]?[4]

Feed Forward

Feed Forward曾是一個兩層的全連接層,第一層的激活函數(shù)為ReLU,第二層不用激活函數(shù),對應公式如下:

\[max(0, XW_1+b_1)W_2+b_2 \]

X是輸入,F(xiàn)eed Forward最終得到的輸出矩陣的維度與X一致。

組成Encoder

通過上面描述的Multi-Head Attention, Feed Forward, Add & Norm 就可以構造出一個Encoder block,Encoder block接收輸入矩陣\(X_{(n\times d)}\),并輸出一個矩陣\(O_{(n \times d)}\),通過多個 Encoder block 疊加就可以組成Encoder。

第一個Encoder block的輸入為句子單詞的表示向量矩陣,后續(xù)Encoder block的輸入是前一個Encoder block的輸出,最后一個Encoder block輸出的矩陣就是編碼信息矩陣C,這一矩陣后續(xù)會用到Decoder中。

decoder結(jié)構

Transformer的decoder block結(jié)構,與encoder block類似,存在如下區(qū)別:

包含兩個Multi-Head Attention層。

第一個Multi-Head Attention層采用了Masked操作。

第二個Multi-Head Attention層的K, V矩陣使用Encoder的編碼信息矩陣C進行計算,而Q使用上一個Decoder block的輸出計算。

最后有一個Softmax層計算下一個翻譯單詞的概率。

第一個Multi-Head Attention

Decoder block的第一個Multi-Head Attention采用了Masked操作,因為在翻譯的過程中是順序翻譯的,即翻譯完第i個單詞,才可以翻譯第i+1個單詞。通過Masked操作可以防止第i個單詞知道i+1個單詞之后的信息。

第二個Multi-Head Attention

Decoder block第二個Multi-Head Attention變化不大,主要的區(qū)別在于其中Self-Attention的K, V矩陣不是使用上一個Decoder block的輸出計算的,而是使用Encoder的編碼信息矩陣C計算的。

根據(jù)Encoder的輸出C計算得到K, V,根據(jù)上一個Decoder block的輸出Z計算Q(如果是第一個Decoder block則使用輸入矩陣X進行計算),后續(xù)的計算方法與之前描述的一致。

這樣做的好處是在Decoder的時候,每一位單詞都可以利用到Encoder所有單詞的信息(這些信息無需Mask)。

系統(tǒng)概要設計

總體架構設計

本英文文檔摘要系統(tǒng)的設計與實現(xiàn)依托Web框架Django完成,用戶需要在前端瀏覽器頁面輸入或上傳英文文檔以獲取摘要語句。系統(tǒng)的頁面請求通過Ajax方式向后臺發(fā)送,驗證通過后由視圖函數(shù)index()初步獲取請求攜帶的文件或文本數(shù)據(jù)。index()通過調(diào)用導入的Transformer語言模型對文本進行總結(jié),模型使用的是訓練過程中最新的參數(shù)權重。處理結(jié)束后將由index()返回Json格式的字段解析后在頁面顯示。系統(tǒng)的工作流程示意圖如下

訓練數(shù)據(jù)

模型訓練使用的數(shù)據(jù)集主要來自Kaggle平臺,為Inshorts News Data,Inshorts是一項新聞服務,提供來自網(wǎng)絡的新聞摘要。該數(shù)據(jù)集包含新聞項目的標題、摘要及其來源。數(shù)據(jù)集以excel文件形式存儲,訓練時我們只使用其中的摘要部分和對應的標題,共計有55104條數(shù)據(jù),部分內(nèi)容如下:

Headline Short
0 4 ex-bank officials booked for cheating bank o... The CBI on Saturday booked four former officia...
1 Supreme Court to go paperless in 6 months: CJI Chief Justice JS Khehar has said the Supreme C...
2 At least 3 killed, 30 injured in blast in Sylh... At least three people were killed, including a...
3 Why has Reliance been barred from trading in f... Mukesh Ambani-led Reliance Industries (RIL) wa...
4 Was stopped from entering my own studio at Tim... TV news anchor Arnab Goswami has said he was t...

其中,第三十個數(shù)據(jù)樣本展示輸出結(jié)果如下,前面的部分為Short中的摘要文獻內(nèi)容,最后的一句話為Headline中的摘要文本對應的標題:

('According to the Guinness World Records, the most generations alive in a single family have been seven. The difference between the oldest and the youngest person in the family was about 109 years, when Augusta Bunge's great-great-great-great grandson was born on January 21, 1989. The family belonged to the United States of America.',

'The most generations alive in a single family have been 7')

自動評估指標

在模型訓練的過程中,對模型的評估主要依托于損失函數(shù)提供的損失值,另外考慮通過ROUGH指標對模型進行評估。ROUGE指標是在機器翻譯、自動摘要、問答生成等領域常見的評估指標。ROUGE通過將模型生成的摘要或者回答與參考答案(一般是人工生成的)進行比較計算,得到對應的得分。ROUGE指標與BLEU指標非常類似,均可用來衡量生成結(jié)果和標準結(jié)果的匹配程度,不同的是ROUGE基于召回率,BLEU更看重準確率。ROUGE主要有四種評估方法,分別是Rough-N、Rough-L、Rough-W、Rough-S。

Rouge-N實際上是將模型生成的結(jié)果和標準結(jié)果按N-gram拆分后,計算召回率。Rouge-L的計算利用了最長公共子序列,注意區(qū)分最長公共子串是連續(xù)的,而子序列不一定連續(xù),但是二者都是有詞的順序的。Rouge-W就是所做的工作就是給連續(xù)的匹配給到更多的權重,讓連續(xù)匹配的比非連續(xù)匹配的有更高的分數(shù)。對于Rouge-S,其中S表示:Skip-Bigram Co-Occurrence Statistics,這其實是Rouge-N的一種擴展表示,而N-gram是連續(xù)的,Skip-bigram是允許跳過中間的某些詞,同時結(jié)合了Rouge-L的計算方式。

系統(tǒng)詳細設計

代碼部分就不在這里贅述了,后續(xù)會補充一個鏈接,提供訪問

實驗及演示

實驗結(jié)果

模型訓練過程中加入了共計861個批次每個批次損失值和準確率的記錄并取均值,通過間斷的40+20+20+20共100輪的訓練得到損失值和準確率的變化分別如下圖6.1和圖6.2所示,可以觀察到前40~50輪訓練損失下降較快,從近10降低至近1.5,而準確率的值從0上升至近0.10,而50輪訓練后損失值和準確率的變化速度明顯變慢。據(jù)統(tǒng)計,后50輪損失從1.5683下降至1.1354,準確率從0.0989上升至0.1103,雖然兩個觀測指標的數(shù)據(jù)仍為明顯收斂,但可以推理出后續(xù)訓練的價值不大,因此決定以100輪訓練的模型權重作為本系統(tǒng)的語言模型。

模型訓練損失率如圖:

系統(tǒng)演示

本系統(tǒng)基本采樣前后端分離架構進行設計,前端界面美觀精簡的提供了用戶所需的英文文檔摘要總結(jié)功能,并對系統(tǒng)使用的模型做出了基本的介紹。系統(tǒng)界面如下圖所示。文本交互版塊位于頁面正*,左側(cè)白底部分為原始文本輸入處,右側(cè)深色部分為摘要總結(jié)輸出處。輸入欄會動態(tài)的統(tǒng)計當前輸入的字符數(shù)量,且在未進行輸入前總結(jié)按鈕不會顯示。當文本字符數(shù)量超過5100個時點擊按鈕會進行相應的提示。

寫在最后

基于Transformer的英文文本摘要系統(tǒng)是一個能夠自動生成輸入文檔摘要的系統(tǒng)。它使用了Transformer模型來處理輸入文本,并利用注意力機制和多層自注意力網(wǎng)絡來捕捉文本間的關聯(lián)信息,以生成準確而流暢的摘要。該系統(tǒng)還包括了自定義的學習率調(diào)度器、損失函數(shù)和訓練步驟,以及評估和摘要生成函數(shù)。我們設計了一個簡單的前端,允許用戶輸入一段文本,系統(tǒng)會自動生成文本摘要展現(xiàn)在前端供用戶參考。我們已經(jīng)使用TensorFlow API,解決了深度學習中一個相當困難的用例并取得了較好的效果。

在系統(tǒng)開發(fā)過程中,我們遇到了如下一些挑戰(zhàn):

第一,數(shù)據(jù)質(zhì)量。獲取高質(zhì)量的訓練數(shù)據(jù)對于訓練Transformer模型至關重要。我們找了很久數(shù)據(jù)集,最終得到拼湊了一份超過55000行的數(shù)據(jù)集。數(shù)據(jù)集是一份關于新聞的介紹,其中有標題、簡要介紹、來源、時間等屬性。遺憾是時間太短,來不及仔細甄別、清理、標記其中含有劣質(zhì)內(nèi)容的行,無法保證其質(zhì)量達到預期標準。

第二,超參數(shù)調(diào)整和模型訓練時間。Transformer模型有許多超參數(shù)需要調(diào)整,如層數(shù)、隱藏單元數(shù)、注意力頭數(shù)等,調(diào)整這些參數(shù)獲得最佳性能是一種挑戰(zhàn)。此外Transformer模型較為復雜,訓練需要大量的計算資源和時間,我們在自己的筆記本電腦上運行的時候,部分超參數(shù)設置僅為在前文展示部分的十分之一,訓練輪數(shù)也僅僅設置了一輪,但訓練時長達4000秒以上。最終我們選擇了租用GPU訓練,超參數(shù)設置如上文所示,訓練輪數(shù)也達到了40輪,這樣一輪的訓練時間也僅為90秒左右,損失率也大大降低,得到了較為滿意的訓練成果。

第三,閱讀文獻。在閱讀論文Attention is All You Need時,我們查閱了大量的資料,發(fā)現(xiàn)這篇文章的地位十分的重要,因此免不了仔細深入了解,當然這篇文章本身是用于機器翻譯的,與我們所做的英文文檔摘要還是有一些區(qū)別,在如何使用相關模型進行我們課設的使用時,難免還需要尋找其他的資料,于是得到了這樣一篇文章??[6],這篇文章非常符合我們的需求,對我們的成功有至關重要的作用。在此,我想向作者表示感謝。

通過課程設計,我也學習到了很多。

第一,文本處理。在處理文本數(shù)據(jù)時,數(shù)據(jù)清洗和預處理是至關重要的。這包括處理缺失數(shù)據(jù)、去除噪聲、標記化、詞干提取和停用詞處理等步驟,以確保數(shù)據(jù)的質(zhì)量和一致性。

第二,Transformer的構建。我了解了Transformer模型的核心組件,包括自注意力機制、位置編碼、前饋神經(jīng)網(wǎng)絡等。我意識到Transformer模型具有并行計算、捕獲長距離依賴等優(yōu)勢,適用于處理NLP任務。通過實踐,我了解到超參數(shù)對模型性能有顯著影響,我們需要也必須通過大量調(diào)整來獲取合適的超參數(shù)。

別老說沒靈感,藝術家如此,科研也如此,靈感來源于你的積累,積累從哪里來,論文。動手查,動手做,多查資料,百度、論文、github……

此外,團隊應該有團隊的樣子,在團隊中,我們可以用更少的時間得到更多的收獲,真正地實現(xiàn)1+1>2的效果。

課設的得分是96,排名第一,在此感謝我的兩位隊友阿偉和阿杰,還有指導老師張老師。穿越逆境,直抵繁星!希望我們能夠在自然語言的海洋里游得更遠!

參考文獻

[1] Ashish Vaswani, Noam Shazeer. Attention Is All You Need [J]. Eprint Arxiv,2017.

[2] NLP與人工智能, Transformer模型詳解 [OL], 2021-04-10.

[3] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image recognition [J]. Proceedings of the IEEE conference on computer vision and pattern recognition, 2016.

[4] Ba J L, Kiros J R, Hinton G E. Layer normalization [J/OL]. https://aexiv.org/pdf/1607.06450.pdf, 2016.

[5] 呂秀才. Transformer(一)--論文翻譯:Attention Is All You Need 中文版. https://blog.csdn.net/nocml/article/details/103082600. 2023.

[6] Rohan Jagtap. Abstractive Text Summarization Using Transformers. [OL]. 2020.

總結(jié)

以上是生活随笔為你收集整理的Transformer的应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。