日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

Transformer的应用

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

Transformer

寫在前面

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

系統(tǒng)的背景

抽象文本摘要是自然語言處理中最具挑戰(zhàn)性的任務(wù)之一,涉及理解長段落、信息壓縮和語言生成。訓(xùn)練機(jī)器學(xué)習(xí)模型以執(zhí)行此操作的主要范例是序列到序列(seq2seq) 學(xué)習(xí),其中神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)將輸入序列映射到輸出序列。雖然這些 seq2seq 模型最初是使用遞歸神經(jīng)網(wǎng)絡(luò)開發(fā)的,但 Transformer編碼器-解碼器模型最近受到青睞,因?yàn)樗鼈兛梢愿行У貙φ杏龅降拈L序列中存在的依賴項(xiàng)進(jìn)行建模。

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

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

模型

云服務(wù)器

處理器: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)絡(luò)框架:Django

瀏覽器:Microsoft Edge

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

Transformer語言模型的原理介紹

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

Transformer整體結(jié)構(gòu)

如下圖所示,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ù)當(dāng)前翻譯過的單詞1~i翻譯下一個單詞i+1,如下圖3-3所示。在使用過程中,翻譯到單詞i+1時需要通過*Mask*操作遮蓋住i+1之后的單詞。

Transfomer的輸入

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

單詞embedding

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

位置embdding

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

位置Embedding用PE表示,PE的維度與單詞Embedding是一樣的。PE可以通過訓(xùn)練得到,也可以使用某種公式計算得到。在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能夠適應(yīng)比訓(xùn)練集里面所有句子更長的句子,假設(shè)訓(xùn)練集里面最長的句子是有20個單詞,突然來了一個長度為21的句子,則使用公式計算的方法可以計算出第21位的Embedding。

可以讓模型容易地計算出相對位置,對于固定長度的間距k,PE(pos+k)可以用PE(pos)計算得到。因?yàn)?span id="ozvdkddzhkzd" class="math inline">\(\sin{(A+B)}=\sin{A}\cos{B}+\cos{A}\sin{B},\cos{(A+B)}=\cos{A}\cos{B}-\sin{A}\sin{B}\)。

自注意力機(jī)制

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

Q、K、V的計算

Self-Attention 的輸入用矩陣X進(jìn)行表示,則可以使用線性變陣矩陣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強(qiáng)度。得到之\(QK^T\)后,使用Softmax計算每一個單詞對于其他單詞的attention系數(shù),公式中的Softmax是對矩陣的每一行進(jìn)行Softmax,即每一行的和都變?yōu)?。得到Softmax矩陣之后可以和V相乘,得到最終的輸出Z。

Multi-Head Attention

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

encoder結(jié)構(gòu)

如下圖所示,紅色部分是Transformer的encoder block結(jié)構(gòu),可以看到是由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)絡(luò)訓(xùn)練的問題,可以讓網(wǎng)絡(luò)只關(guān)注當(dāng)前差異的部分,在ResNet中經(jīng)常用到。

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

Feed Forward

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

\[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 就可以構(gòu)造出一個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é)構(gòu)

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

包含兩個Multi-Head Attention層。

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

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

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

第一個Multi-Head Attention

Decoder block的第一個Multi-Head Attention采用了Masked操作,因?yàn)樵诜g的過程中是順序翻譯的,即翻譯完第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進(jìn)行計算),后續(xù)的計算方法與之前描述的一致。

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

系統(tǒng)概要設(shè)計

總體架構(gòu)設(shè)計

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

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

模型訓(xùn)練使用的數(shù)據(jù)集主要來自Kaggle平臺,為Inshorts News Data,Inshorts是一項(xiàng)新聞服務(wù),提供來自網(wǎng)絡(luò)的新聞?wù)T摂?shù)據(jù)集包含新聞項(xiàng)目的標(biāo)題、摘要及其來源。數(shù)據(jù)集以excel文件形式存儲,訓(xùn)練時我們只使用其中的摘要部分和對應(yīng)的標(biāo)題,共計有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中的摘要文獻(xiàn)內(nèi)容,最后的一句話為Headline中的摘要文本對應(yīng)的標(biāo)題:

('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')

自動評估指標(biāo)

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

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

系統(tǒng)詳細(xì)設(shè)計

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

實(shí)驗(yàn)及演示

實(shí)驗(yàn)結(jié)果

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

模型訓(xùn)練損失率如圖:

系統(tǒng)演示

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

寫在最后

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

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

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

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

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

通過課程設(shè)計,我也學(xué)習(xí)到了很多。

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

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

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

此外,團(tuán)隊(duì)?wèi)?yīng)該有團(tuán)隊(duì)的樣子,在團(tuán)隊(duì)中,我們可以用更少的時間得到更多的收獲,真正地實(shí)現(xiàn)1+1>2的效果。

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

參考文獻(xiàn)

[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)容還不錯,歡迎將生活随笔推薦給好友。