国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

機器學習|從0開始大模型之位置編碼

發布于 2025-1-20 12:07
瀏覽
0收藏

1、什么是位置編碼

在語言中,一句話是由詞組成的,詞與詞之間是有順序的,如果順序亂了或者重排,其實整個句子的意思就變了,所以詞與詞之間是有順序的。在循環神經網絡中,序列與序列之間也是有順序的,所以循環神經網絡中,序列與序列之間也是有順序的,不需要處理這種問題。但是在Transformer中,每個詞是獨立的,所以需要將詞的位置信息添加到模型中,讓模型維護順序關系。

機器學習|從0開始大模型之位置編碼-AI.x社區

位置編碼

位置編碼就是將hello world! 的token和位置關系通過向量表示出來,作為訓練的輸入數據,如上圖,位置編碼最終會變成:

[
    [P00, P01, P02 ... P0d],
    [P10, P11, P12 ... P1d],
    [P20, P21, P22 ... P2d],
]

2、計算位置編碼

計算位置編碼有多種方式:固定位置編碼,相對位置編碼,絕對位置編碼,其中Transformer的作者設計了一種三角函數位置編碼方式,通過三角函數計算輸出位置編碼向量。

為什么三角函數可以作為計算位置編碼的函數?

  • 首先我們來回顧一下三角函數的基本性質:函數具有周期性,取值范圍是[-1, 1]。

機器學習|從0開始大模型之位置編碼-AI.x社區

sin

  • 其次,如果用絕對位置編碼計算最大序列為3的位置(0-7),二進制表示如下:

[
    [0, 0, 0], 
    [0, 0, 1], 
    [0, 1, 0], 
    [0, 1, 1], 
    [1, 0, 0], 
    [1, 0, 1], 
    [1, 1, 0], 
    [1, 1, 1]
]

從上可以表示看出,較高比特位的交替頻率低于較低比特位,存在周期性bit位變化,符合三角函數的周期性,而且三角函數的取值范圍是[-1, 1],輸出浮點數,并且數據連續,比直接使用二進制更節省空間。

3、Transformer中的位置編碼層

假設你有一個長度為L的輸入序列,要計算第K個元素的位置編碼,位置編碼由不同頻率的正弦和余弦函數給出:

機器學習|從0開始大模型之位置編碼-AI.x社區

函數

  • k:詞序列中的第K個元素
  • d:詞向量維度,比如512,1024,8K等
  • P(k, i):位置函數,輸出位置編碼向量
  • n:定義的標量,Attention Is All You Need 的作者設置為 10,000
  • i:映射到列索引,范圍是0~d/2(由于輸入是2i表示,如果用i表示,范圍可以是0~d)

按照上述Hello world!的例子,計算位置編碼結果如下:

機器學習|從0開始大模型之位置編碼-AI.x社區

計算結果

那么用代碼實現一個簡化版本的位置編碼:

import numpy as np

def getPositionEncoding(seq_len, d, n=10000):
    P = np.zeros((seq_len, d))
    for k in range(seq_len):
        for i in np.arange(int(d/2)):
            denominator = np.power(n, 2*i/d)
            P[k, 2*i] = np.sin(k/denominator)
            P[k, 2*i+1] = np.cos(k/denominator)
    return P

P = getPositionEncoding(seq_len=3, d=3, n=100)
print(P)

# 輸出結果:
[[ 0.          1.          0.        ]
 [ 0.84147098  0.54030231  0.        ]
 [ 0.90929743 -0.41614684  0.        ]]

4、大模型訓練中的位置編碼代碼

在我們從0訓練大模型中,其位置編碼的實現如下:

def precompute_pos_cis(dim: int, seq_len: int, theta: float = 10000.0):
    """預計算相對位置編碼的復數形式,用于旋轉位置編碼(RoPE)。"""
    freqs = 1.0 / (theta ** (torch.arange(0, dim, 2)[: (dim // 2)].float() / dim)) # 計算頻率
    t = torch.arange(seq_len, device=freqs.device)  # 創建時間步長
    freqs = torch.outer(t, freqs).float()  # 計算頻率的外積
    pos_cis = torch.polar(torch.ones_like(freqs), freqs)  # 生成復數形式的頻率
    return pos_cis # 返回預計算的復數位置編碼

def apply_rotary_emb(xq, xk, pos_cis):
    """應用旋轉位置編碼到查詢和鍵。"""
    def unite_shape(pos_cis, x):
        """調整位置編碼的形狀以匹配輸入張量的形狀。"""
        ndim = x.ndim # 獲取輸入的維度
        assert 0 <= 1 < ndim # 確保維度有效
        assert pos_cis.shape == (x.shape[1], x.shape[-1])  # 確保位置編碼形狀匹配
        shape = [d if i == 1 or i == ndim - 1 else 1 for i, d in enumerate(x.shape)] # 生成新形狀
        return pos_cis.reshape(*shape) # 調整位置編碼的形狀

    # 將查詢和鍵轉換為復數形式
    xq_ = torch.view_as_complex(xq.float().reshape(*xq.shape[:-1], -1, 2))
    xk_ = torch.view_as_complex(xk.float().reshape(*xk.shape[:-1], -1, 2))
    pos_cis = unite_shape(pos_cis, xq_) # 調整位置編碼形狀
    xq_out = torch.view_as_real(xq_ * pos_cis).flatten(3) # 應用位置編碼并轉換回實數
    xk_out = torch.view_as_real(xk_ * pos_cis).flatten(3) # 同上
    return xq_out.type_as(xq), xk_out.type_as(xk)         # 返回與輸入類型一致的輸出

這里使用的是RoPE旋轉位置編碼,和相對位置編碼相比,RoPE 具有更好的外推性,Meta 的 LLAMA 和 清華的 ChatGLM 都使用該編碼,目前是大模型相對位置編碼中應用最廣的方式之一,具體原理由于篇幅原因就不講了,可以看看這篇文章:https://cloud.tencent.com/developer/article/2327751。

參考

(1)http://www.bimant.com/blog/transformer-positional-encoding-illustration/(2)https://hub.baai.ac.cn/view/29979

本文轉載自 ??周末程序猿??,作者: 周末程序猿

收藏
回復
舉報
回復
相關推薦
疯狂蹂躏欧美一区二区精品| 国产精品女上位| 午夜精品国产精品大乳美女| 日本a级片免费| 午夜综合激情| 91精品欧美一区二区三区综合在| 欧美日本高清| 成人免费视频视频| 日本道精品一区二区三区| 日韩专区第三页| 午夜日韩福利| 情事1991在线| 亚洲欧美激情一区二区| 亚洲欧洲黄色网| 91久久国产综合久久蜜月精品| 国产综合色区在线观看| 欧美午夜www高清视频| 黄色一级大片在线观看| 精品一区二区三区视频| 国产成人av一区二区三区| 国产91精品对白在线播放| 波霸ol色综合久久| 成人性生活视频| 精品av久久707| 日本中文字幕一区二区有码在线| 91免费国产在线| 国产日产欧美一区二区| 久久精品主播| 九色综合婷婷综合| 亚洲国产婷婷| 国产专区精品视频| 日韩大片在线播放| 欧洲成人免费视频| 美女视频黄久久| 7777精品伊人久久久大香线蕉最新版| 美女视频黄a视频全免费观看| 99麻豆久久久国产精品免费| 日本中文字幕一级片| 久久成人精品无人区| 无遮挡亚洲一区| 理论电影国产精品| 欧美aaa在线观看| 国产一区二区三区免费看| 在线视频福利一区| 国产激情一区二区三区| 草草视频在线免费观看| 日韩欧美亚洲一区| 美女国产精品久久久| 久久99国产综合精品女同| 9999精品免费视频| 欧美精品videofree1080p| 激情亚洲另类图片区小说区| 亚洲色图20p| 免费无码不卡视频在线观看| 久久国产电影| 精品久久国产97色综合| 欧美日韩精品一区| 蜜桃视频动漫在线播放| 日韩啪啪电影网| 在线视频一区二区三| 日本在线一二三| 在线观看亚洲精品视频| 视频免费一区| 日韩大陆欧美高清视频区| 99热播精品免费| 538国产精品视频一区二区| 成人高清电影网站| 久久久久久99| 国产精品一二三四区| 男人搞女人网站| 午夜精品福利一区二区三区蜜桃| 97人人在线| 亚洲欧美国产一区二区三区| 粉嫩一区二区三区在线观看| 日本午夜在线亚洲.国产| 中文无码久久精品| av不卡在线免费观看| 国产欧美综合在线| 国产区高清在线| 日韩小视频在线| 91精品精品| 天堂а√在线中文在线| 综合网在线视频| 免费av在线网址| 色噜噜狠狠狠综合曰曰曰 | 亚洲人精品午夜射精日韩 | 欧美伦理视频网站| 北条麻妃在线观看| 亚洲成人激情综合网| 麻豆电影在线播放| 色妞在线综合亚洲欧美| 日韩毛片视频| 国产在线无码精品| 亚洲成人中文在线| 1234区中文字幕在线观看| 一区在线免费| 亚洲美女免费精品视频在线观看| av一级亚洲| 欧美日韩国产一二| 18涩涩午夜精品.www| 国产高清美女一级毛片久久| 色狠狠av一区二区三区香蕉蜜桃| 欧美高清视频手机在在线| 天天做天天爱天天高潮| 亚洲福利视频一区| 国外成人福利视频| 99蜜桃在线观看免费视频网站| 国产99久久久久| 国产福利片在线| 久久久久久久久久久av| 蜜桃久久av一区| 日本黄在线观看| 欧美精品久久一区二区 | 欧美一区成人| 国产日产欧美视频| 欧美成人精品二区三区99精品| 另类ts人妖一区二区三区| 亚洲一卡二卡三卡四卡无卡网站在线看| 国产精品久久久久桃色tv| 色是在线视频| a级国产乱理论片在线观看99| 久久精品视频一区| 蜜桃av在线播放| 国产一区不卡在线观看| 亚洲综合色婷婷| 成人在线分类| 欧美做受777cos| 日韩午夜在线观看视频| 欧美疯狂party性派对| 狠狠躁狠狠躁视频专区| 最近2019中文字幕一页二页| 日韩精品乱码免费| 超碰在线国产| 91精品在线影院| 一区二区高清免费观看影视大全| 懂色av色香蕉一区二区蜜桃| 91xxx视频| 欧美成人精品1314www| 欧美日韩亚洲国产精品| 黄页网址大全在线播放| 97视频色精品| 久久久国际精品| 成人免费91| 日b视频免费观看| 亚洲欧美999| 国产伦理精品不卡| cao在线视频| 在线观看精品视频| 亚洲第一av在线| 成人短视频在线| www成人免费观看网站| 成人国产精品入口免费视频| 欧美爱爱视频| 色网站在线免费观看| 天堂中文字幕——hd| 妞干网在线播放| 制服影音先锋| 92福利视频午夜1000合集在线观看| 91久久国产婷婷一区二区| 国产精品看片资源| 国产精品av免费| 成人福利资源| 精品一区二区三区毛片| 久久66热这里只有精品| 成人国产精品一区二区| 国产综合精品一区二区三区| 久草一区二区| 热久久最新网址| 热99这里只有精品| 国产蜜臀av在线播放| 手机看片福利盒子久久| 国内精品视频一区二区三区| 在线观看免费高清完整| 日韩精品av| 国产精品黑丝在线播放| 国产福利视频一区二区三区| 欧美午夜精品久久久| 国产日产精品1区| 久久久久久久久91| 午夜在线观看视频网站| 国产欧美亚洲精品a| 成人黄色综合网站| 欧美成人午夜激情在线| 成人精品久久一区二区三区| 加勒比在线日本| 四虎影视在线观看2413| 日本福利在线观看| 57pao国产一区二区| 日韩综合在线视频| 第一福利永久视频精品 | 综合激情成人伊人| 亚洲国产毛片aaaaa无费看| 伊人一区二区三区久久精品| 老汉色影院首页| 美女的诞生在线观看高清免费完整版中文 | 亚州欧美日韩中文视频| 不卡视频一区二区三区| 精品免费国产一区二区| 超碰成人av| 一本久道久久久|