在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

詳細介紹?注意力機制中的掩碼

冬至子 ? 來源:Deephub ? 作者:Deephub ? 2023-07-17 16:46 ? 次閱讀

注意力機制的掩碼允許我們發送不同長度的批次數據一次性的發送到transformer中。在代碼中是通過將所有序列填充到相同的長度,然后使用“attention_mask”張量來識別哪些令牌是填充的來做到這一點,本文將詳細介紹這個掩碼的原理和機制。

我們先介紹下如果不使用掩碼,是如何運行的。這里用GPT-2每次使用一個序列來執行推理,因為每次只有一個序列,所以速度很慢:

from transformers import GPT2LMHeadModel, GPT2Tokenizer
 
 tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
 gpt2 = GPT2LMHeadModel.from_pretrained('gpt2')
 
 context = tokenizer('It will rain in the', return_tensors='pt')
 
 prediction = gpt2.generate(**context, max_length=10)
 tokenizer.decode(prediction[0])
 # prints 'It will rain in the morning, and the rain'

在顯存允許的情況下,使用批處理輸入的速度更快,因為我們在一次推理的過程可以同時處理多個序列。對許多樣本執行推理要快得多,但也稍微復雜一些,下面是使用transformer庫進行推理的代碼:

tokenizer.padding_side = "left"
 tokenizer.pad_token = tokenizer.eos_token
 
 sentences = ["It will rain in the",
             "I want to eat a big bowl of",
             "My dog is"]
 inputs = tokenizer(sentences, return_tensors="pt", padding=True)
 
 output_sequences = gpt2.generate(**inputs)
 
 for seq in output_sequences:
     print(tokenizer.decode(seq))

transformer庫幫我們處理了很多細節,我們現在詳細的介紹它里面到底做了什么。

我們將令牌輸入到語言模型中,如GPT-2和BERT,作為張量進行推理。張量就像一個python列表,但有一些額外的特征和限制。比如說,對于一個2+維的張量,該維中的所有向量必須是相同的長度。例如,

from torch import tensor
 
 tensor([[1,2], [3,4]])  # ok
 tensor([[1,2], [3]])   # error!

當我們對輸入進行標記時,它將被轉換為序列的張量,每個整數對應于模型詞表中的一個項。以下是GPT-2中的標記化示例:

如果我們想在輸入中包含第二個序列:

因為這兩個序列有不同的長度,所以不能把它們組合成一個張量。這時就需要用虛擬標記填充較短的序列,以便每個序列具有相同的長度。因為我們想讓模型繼續向序列的右側添加,我們將填充較短序列的左側。

這就是注意力掩碼的一個應用。注意力掩碼告訴模型哪些令牌是填充的,在填充令牌的位置放置0,在實際令牌的位置放置1。現在我們理解了這一點,讓我們逐行查看代碼。

tokenizer.padding_side = "left"

這一行告訴標記器從左邊開始填充(默認是右邊),因為最右邊標記的logits將用于預測未來的標記。

tokenizer.pad_token = tokenizer.eos_token

這一行指定將使用哪個令牌進行填充。選擇哪一個并不重要,這里我們選擇的是“序列結束”標記。

sentences = ["It will rain in the",
             "I want to eat a big bowl of",
             "My dog is"]

上面這三個序列在標記時都有不同的長度,我們使用下面的方法填充:

inputs = tokenizer(sentences, return_tensors="pt", padding=True)

在進行表計劃和添加填充后,得到了以下的結果:

{'input_ids': tensor([
     [50256, 50256, 50256,  1026,   481,  6290,   287,   262],
     [   40,   765,   284,  4483,   257,  1263,  9396,   286],
     [50256, 50256, 50256, 50256, 50256,  3666,  3290,   318]
   ]),
 'attention_mask': tensor([
     [0, 0, 0, 1, 1, 1, 1, 1],
     [1, 1, 1, 1, 1, 1, 1, 1],
     [0, 0, 0, 0, 0, 1, 1, 1]
   ])}

可以看到,第一個和第三個序列在開始時進行了填充,并且attention_mask參數標記了這個填充的位置。

現在讓我們將這個輸入傳遞給模型來生成新的文本:

output_sequences = gpt2.generate(**inputs)

如果你不熟悉函數調用的**kwargs語法,它是將輸入字典作為命名參數傳入,使用鍵作為參數名,并使用值作為相應的實參值。

我們只需要循環遍歷每個生成的序列并以人類可讀的形式打印出結果,使用decode()函數將令牌id轉換為字符串。

for seq in output_sequences:
     print(tokenizer.decode(seq))

在注意力掩碼中,我們的輸入是0和1,但是在最終的計算時,會將在將無效位置的注意力權重設置為一個很小的值,通常為負無窮(-inf),以便在計算注意力分數時將其抑制為接近零的概率。

這時因為,在計算注意力權重時,需要進行Softmax的計算:

Softmax函數的性質:注意力機制通常使用Softmax函數將注意力分數轉化為注意力權重,Softmax函數對輸入值進行指數運算,然后進行歸一化。當輸入值非常小或負無窮時,經過指數運算后會接近零。因此,將掩碼設置為負無窮可以確保在Softmax函數計算時,對應位置的注意力權重趨近于零。

排除無效位置的影響:通過將無效位置的注意力權重設置為負無窮,可以有效地將這些位置的權重壓低。在計算注意力權重時,負無窮的權重會使對應位置的注意力權重接近于零,從而模型會忽略無效位置的影響。這樣可以確保模型更好地關注有效的信息,提高模型的準確性和泛化能力。

但是負無窮并不是唯一的選擇。有時也可以選擇使用一個很大的負數,以達到相似的效果。具體的選擇可以根據具體的任務和模型的需求來確定。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19313

    瀏覽量

    230054
  • 虛擬機
    +關注

    關注

    1

    文章

    918

    瀏覽量

    28232
  • python
    +關注

    關注

    56

    文章

    4797

    瀏覽量

    84757
收藏 人收藏

    評論

    相關推薦

    淺談自然語言處理注意力機制

    本文深入淺出地介紹了近些年的自然語言中的注意力機制包括從起源、變體到評價指標方面。
    的頭像 發表于 01-25 16:51 ?6386次閱讀
    淺談自然語言處理<b class='flag-5'>中</b>的<b class='flag-5'>注意力</b><b class='flag-5'>機制</b>

    深度分析NLP注意力機制

    注意力機制越發頻繁的出現在文獻,因此對注意力機制的學習、掌握與應用顯得十分重要。本文便對注意力
    的頭像 發表于 02-17 09:18 ?3870次閱讀

    注意力機制的誕生、方法及幾種常見模型

    簡而言之,深度學習注意力機制可以被廣義地定義為一個描述重要性的權重向量:通過這個權重向量為了預測或者推斷一個元素,比如圖像的某個像素或句子
    的頭像 發表于 03-12 09:49 ?4.1w次閱讀

    注意力機制或將是未來機器學習的核心要素

    目前注意力機制已是深度學習里的大殺器,無論是圖像處理、語音識別還是自然語言處理的各種不同類型的任務,都很容易遇到注意力模型的身影。
    發表于 05-07 09:37 ?1323次閱讀

    基于注意力機制的深度學習模型AT-DPCNN

    情感分析是自然語言處理領域的一個重要分支,卷積神經網絡(CNN)在文本情感分析方面取得了較好的效果,但其未充分提取文本信息的關鍵情感信息。為此,建立一種基于注意力機制的深度學習模型AT-
    發表于 03-17 09:53 ?12次下載
    基于<b class='flag-5'>注意力</b><b class='flag-5'>機制</b>的深度學習模型AT-DPCNN

    基于多層CNN和注意力機制的文本摘要模型

    基于注意力機制的編解碼模型在文本摘要、杌器翻譯等序列到序列任務上得到了廣泛的應用。在深度學習框架,深層神經網絡能夠提取輸λ數據不冋的特征表示,因此傳統編解碼模型通常堆疊多層解碼器來
    發表于 04-07 11:35 ?2次下載
    基于多層CNN和<b class='flag-5'>注意力</b><b class='flag-5'>機制</b>的文本摘要模型

    結合注意力機制的跨域服裝檢索方法

    針對跨域服裝檢索中服裝商品圖像拍攝嚴格約束光照、背景等條件,而用戶圖像源自復雜多變的日常生活場景,難以避免背景干擾以及視角、姿態引起的服裝形變等問題。提出一種結合注意力機制的跨域服裝檢索方法。利用
    發表于 05-12 14:19 ?2次下載

    基于多層注意力機制的回指消解算法綜述

    在信息抽取過程,無法被判別的回指易造成信息抽取不完整的情況,這種指代關系可通過分析當前語境下的指代部分、被指代部分、周圍的信息及原文內容生成的唯一判別信息進行判斷。為此,構建一個多層注意力機制模型
    發表于 05-27 17:10 ?2次下載

    基于注意力機制等的社交網絡熱度預測模型

    基于注意力機制等的社交網絡熱度預測模型
    發表于 06-07 15:12 ?14次下載

    基于多通道自注意力機制的電子病歷架構

    基于多通道自注意力機制的電子病歷架構
    發表于 06-24 16:19 ?75次下載

    基于注意力機制的跨域服裝檢索方法綜述

    基于注意力機制的跨域服裝檢索方法綜述
    發表于 06-27 10:33 ?2次下載

    基于注意力機制的新聞文本分類模型

    基于注意力機制的新聞文本分類模型
    發表于 06-27 15:32 ?30次下載

    基于非對稱注意力機制殘差網絡的圖像檢測

    基于非對稱注意力機制殘差網絡的圖像檢測
    發表于 07-05 15:29 ?9次下載

    計算機視覺注意力機制

    計算機視覺注意力機制 卷積神經網絡中常用的Attention 參考 注意力機制簡介與分類 注意力
    發表于 05-22 09:46 ?0次下載
    計算機視覺<b class='flag-5'>中</b>的<b class='flag-5'>注意力</b><b class='flag-5'>機制</b>

    PyTorch教程11.4之Bahdanau注意力機制

    電子發燒友網站提供《PyTorch教程11.4之Bahdanau注意力機制.pdf》資料免費下載
    發表于 06-05 15:11 ?0次下載
    PyTorch教程11.4之Bahdanau<b class='flag-5'>注意力</b><b class='flag-5'>機制</b>
    主站蜘蛛池模板: 人人澡人人澡人人看青草 | 国产视频一二区| 日韩免费毛片| 视频一区日韩| 深爱激情小说网| 美女扒开尿口给男的桶个爽| 日本一区二区三区视频在线| 男男浪荡双性受hplay| 一区二区三区四区精品| 天天看影院| 综合一区| 亚洲国产欧美日韩一区二区三区| 亚洲第二页| 色丁香在线视频| 欧美成人三级伦在线观看| 黄色视屏在线免费观看| 国产成人精品日本亚洲网站| 影院午夜| 美女一级毛片免费观看| 2021国产精品| 午夜男人视频| 午夜免费r级伦理片| 亚洲国产色图| 三级黄色在线视频中文| 黄 色 片成 人免费观看| 久青草国产免费观看| 国产成人精品本亚洲| 天天色天天干天天射| 波多野结衣久久精品| 亚洲成人毛片| 桃色婷婷| 国产三级网| 天天爽夜夜爽一区二区三区| 久久精品美女久久| ⅹxxxx68日本老师hd| 欧美涩色| 中文字幕在线天堂| 日韩一级生活片| 高清色视频| 黄色日屁| caobi在线观看|