TensorFlow深度學習實戰(21)——Transformer架構詳解與實現

TensorFlow深度學習實戰(21)——Transformer架構詳解與實現

    • 0. 前言
    • 1. Transformer 架構
      • 1.1 關鍵思想
      • 1.2 計算注意力
      • 1.3 編碼器-解碼器架構
      • 1.4 Transformer 架構
      • 1.5 模型訓練
    • 2. Transformer 類別
      • 2.1 解碼器(自回歸)模型
      • 2.2 編碼器(自編碼)模型
      • 2.3 Seq2seq
    • 3. 經典注意力機制
      • 3.1 稀疏注意力
      • 3.2 LSH 注意力
      • 3.3 局部注意力
    • 4. 預訓練模型
      • 4.1 編碼器預訓練
      • 4.2 解碼器預訓練
      • 4.3 編碼器-解碼器預訓練
      • 4.4 預訓練任務
    • 6. 基于 Transformer 實現機器翻譯
    • 小結
    • 系列鏈接

0. 前言

2017 年論文《Attention Is All You Need》發布后,Transformer 迅速引起了自然語言處理 (Natural Language Processing, NLP) 的廣泛關注,基于 Transformer 的模型使用注意力機制來識別輸入序列(如句子)中詞元 (token) 之間的復雜關系。Transformer 摒棄了傳統的循環神經網絡 (Recurrent Neural Network, RNN) 和長短時記憶網絡 (Long Short Term Memory, LSTM),轉而依靠自注意力機制 (Self-Attention) 來處理輸入序列,從而顯著提高了效率和效果。基于 Transformer 的架構在 NLP 及其它領域中應用廣泛,能夠解決各種任務,例如:機器翻譯、文本摘要、文本生成、實體識別、問答系統、文本分類、語言建模和閱讀理解等。
Transformer 已經成為如 BERTT5GPT 等前沿模型的基礎構建塊,涵蓋了從計算機視覺到語音識別、翻譯或蛋白質和編碼序列等領域。注意力機制還被應用于強化學習,例如,在 DeepMindAlphaStar 中,將玩家和對手的 StarCraft 游戲單位的狀態通過自注意力機制處理。因此,斯坦福大學最近引入了基礎模型 (foundation model),以定義基于大型預訓練 Transformer 的大語言模型 (Large Language Model, LLM)。

1. Transformer 架構

盡管經典的 Transformer 架構通常與循環神經網絡 (Recurrent Neural Network, RNN) 的架構不同,但它起源于 RNN 的一些關鍵思想。目前,Transformer 幾乎代表了與文本和任何可以表示為序列的數據相關的深度學習架構的研究方向。Transformer 最初在 2017 年的論文《Attention Is All You Need》中提出,原始的 Transformer 架構是編碼器-解碼器架構的一種變體,其中遞歸層被(自)注意力層所替代。
Transformer 架構是編碼器-解碼器模型的一種實例,在此之前,注意力機制已與 RNN 模型結合使用。注意力機制在 2014 年由 Bahdanau 等人首次提出,并在 2015 年由 Luong 等人應用于機器翻譯任務,此后還出現了與其他類型模型結合的多種注意力機制應用。
2017 年,首個 Transformer 模型展示了可以將 RNN 從神經機器翻譯 (Neural Machine Translation, NMT) 模型中去除,并改用(自)注意力塊,因此論文標題為《Attention Is All You Need》。

1.1 關鍵思想

Transformer 模型的創新基于以下四個關鍵思想:

  • 位置編碼 (Positional encoding)
  • 注意力機制 (Attention)
  • 自注意力機制 (Self-attention)
  • 多頭(自)注意力機制 (Multi-head (self-)attention)
1.1.1 位置編碼

RNN 通過順序處理單詞來保持單詞的順序。這種方法的優點是簡單,但其缺點之一是使得并行化變得困難,如果希望有效地利用高度并行的架構,就需要一種替代的順序表示方式。
Transformer 使用一種簡單的順序表示方法,稱為位置編碼,這種方法將每個單詞與表示其在文本中位置的數字相關聯起來:

[("Transformers", 1), ("took", 2), ("NLP", 3), ("by", 4), ("storm", 5)]

通過添加位置信息,Transformer 可以學習每個詞元 (token) 位置的重要性。在原始 Transformer 中引入(絕對)位置編碼后,還出現了其他變體,如相對位置編碼以及旋轉位置編碼等。

1.1.2 注意力機制

Transformer 的另一個關鍵組成部分是注意力機制,注意力機制最早在 2014 年由 Bahdanau 等人引入。為了深入理解,我們考慮以下例子:

The agreement on the European Economic Area was signed in August 1992.

翻譯為法語:

L’accord sur la zone économique européenne a été signé en ao?t 1992.

上世紀 80 年代初,機器翻譯基于逐字翻譯,這種方法性能非常有限,因為文本結構在源語言和目標語言之間可能會發生許多變化。例如,在法語翻譯中,一些單詞的順序可能會不同:在英語中,形容詞通常位于名詞之前,比如 European Economic Area,而在法語中,形容詞可以位于名詞之后,la zone économique européenne。此外,與英語不同,法語有性別詞匯。例如,形容詞 économiqueeuropéenne 必須使用女性形式,因為它們屬于女性名詞 la zone
注意力機制的關鍵思想是構建文本模型時,在將單詞翻譯成輸出語言時“關注”源句子中的每一個單詞。在原始 Transformer 論文中,作者指出這種方法的時間復雜度是平方級的,但在翻譯準確性方面獲得的提升相當可觀。為了降低時間復雜度,Choromanski 等人提出了 Fast Attention Via positive Orthogonal Random (FAVOR+) 特征。回顧原始 Transformer 論文中的例子:

注意力機制示例

使用注意力機制,神經網絡可以學習每個源語言英文單詞與每個目標語言法文單詞之間的熱力圖,這些關系不僅僅存在于對角線上,還可能遍布整個矩陣。例如,當模型輸出法語單詞 européenne 時,它會特別關注輸入單詞 EuropeanEconomic (在圖中,對應于對角線和相鄰單元格)。使用注意力機制能夠在沒有監督的情況下學習對齊并關注輸入元素,將輸入的英語句子翻譯成法語。當然,訓練集越大,基于注意力的模型可以學習到的相關性越多。
簡而言之,注意力機制可以訪問所有先前的單詞,并根據學習到的相關性度量加以權衡。這樣,注意力可以提供關于目標句子中遠距離詞元的相關信息。

1.1.3 自注意力

原始 Transformer 的第三個關鍵思想是在源語言同一句話中使用注意力,自注意力。通過這種機制,神經網絡可以學習每個輸入序列(如句子)中所有元素(如單詞)之間的關系,而不考慮它們的位置,然后再專注于具體任務(如機器翻譯)。觀察以下示例:

“Server, can I have the check?”
“Looks like I just crashed the server.”

單詞 server 在以上兩個句子中有著不同的含義,而自注意力能夠在考慮周圍單詞的上下文時理解每個單詞。需要注意的是,注意力機制可以訪問所有先前的單詞,并根據學到的相關性度量對它們進行加權,自注意力提供了關于源句子中遠距離詞元的相關信息。

1.1.4 多頭(自)注意力

原始 Transformer 執行了多次(自)注意力操作,一組權重矩陣就是一個注意力頭。當有多組這樣的權重矩陣集合時,就形成了多個注意力頭。多頭(自)注意力層通常具有幾個并行的(自)注意力層。值得注意的是,引入多個頭使我們能夠定義哪些單詞彼此“相關”。此外,這些相關性可以通過硬件加速器并行計算,從而加快計算速度。

1.2 計算注意力

在原始 Transformer 中,自注意力函數是通過縮放點積單元計算的,稱為縮放點積注意力 (Scaled Dot-Product Attention),兩個向量之間的點積可以很好地反映出這兩個向量的“接近”程度。
每個輸入的詞元序列(例如句子)嵌入傳入 Transformer (編碼器或解碼器)后,生成注意力權重,這些權重在每個序列元素(如單詞)之間同時計算。輸出結果是為每個詞元生成的嵌入,包含詞元本身以及所有相關詞元,按照其相對注意力權重進行加權。
注意力層將輸入向量轉換為查詢 (Query)、鍵 (Key) 和值 (Value) 矩陣,然后將它們拆分為多個注意力頭(因此稱為多頭注意力):

  • 查詢可以理解為正在計算注意力函數的詞
  • 鍵和值是所關注的詞

點積反映了詞之間的相似度。如果兩個詞向量的對齊結果更高,則注意力分數將更高。Tansformer 以如下方式學習權重,如果句子中的兩個詞彼此相關,則它們的詞向量就會對齊。
每個注意力層學習三個權重矩陣:

  • 查詢權重 W Q W_Q WQ?
  • 鍵權重 W K W_K WK?
  • 值權重 W V W_V WV?

對于每個單詞 i i i,計算輸入詞嵌入 x i x_i xi? ,得到:

  • 查詢向量 q i = x i W Q q_i = x_i W_Q qi?=xi?WQ?
  • 鍵向量 k i = x i W K k_i = x_i W_K ki?=xi?WK?
  • 值向量 v i = x i W V v_i = x_i W_V vi?=xi?WV?

給定查詢向量和對應的鍵向量,注意力權重計算如下:
a i , j = q i ? k j a_{i,j}=q_i\cdot k_j ai,j?=qi??kj?
其中: a i , j a_{i,j} ai,j? 是從詞 i i i 到詞 j j j 的注意力;點積 ? \cdot ? (dot-product) 是查詢與鍵的點積,反映向量的“接近”程度。
i i i 的注意力是所有詞的值向量的加權和,權重由 a i , j a_{i,j} ai,j? 決定,即詞 i i i 到詞 j j j$ 的注意力。
為了在訓練過程中穩定梯度,注意力權重會被鍵向量維度的平方根 d k \sqrt {d_k} dk? ? 進行除法處理。然后,將結果通過 softmax 函數進行歸一化。需要注意的是,詞 i i i 到詞 j j j 的注意力函數與詞 j j j 到詞 i i i 的注意力函數值并不相同。
現代深度學習加速器在處理矩陣計算時表現良好,因此可以使用大矩陣來計算所有詞的注意力。將 q i q_i qi? k i k_i ki? v i v_i vi? (其中 i i i 是第 i i i 行)定義為矩陣 Q Q Q K K K V V V,可以將注意力函數總結為一個注意力矩陣:
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V)=softmax(\frac {QK^T}{\sqrt {d_k}})V Attention(Q,K,V)=softmax(dk? ?QKT?)V

1.3 編碼器-解碼器架構

類似于 seq2seq 模型,原始 Transformer 模型也使用了編碼器-解碼器架構:

  • 編碼器接收輸入(源)序列的嵌入,并將其轉換為一個新的固定長度的嵌入向量
  • 解碼器接收來自編碼器的嵌入向量,并將其轉換為輸出嵌入序列
  • 編碼器和解碼器都由多個堆疊的網絡層組成,每個編碼器和解碼器層都使用注意力機制

Transformer 架構引入以來,變體網絡可以只使用編碼器或解碼器組件,或兩者同時使用。
同時,基于 Transformer 的網絡會重用其他現有的先進機器學習方法,如殘差或歸一化。

1.4 Transformer 架構

我們已經了解了 Transformer 的一些關鍵概念,接下來我們深入探討 Transformer 架構。需要注意的是,基于 Transformer 的模型通常通過利用各種注意力機制來構建,而不是使用循環神經網絡 (Recurrent Neural Network, RNN),這是因為注意力機制本身能夠替代并超越帶有注意力的 RNN 編碼器-解碼器模型。下圖對比了具有注意力機制的 seq2seq 網絡與 Transformer 網絡。

架構對比

Transformer 與具有注意力機制的 seq2seq 模型具有以下相似性:

  • 都處理源(輸入)和目標(輸出)序列
  • 都使用編碼器-解碼器架構
  • 編碼器最后一個模塊的輸出用作上下文向量,以計算解碼器中的注意力函數
  • 目標(輸出)序列的嵌入被輸入到全連接模塊中,全連接塊將輸出嵌入轉換為最終的整數序列

兩種架構的不同之處在于:

  • seq2seq 網絡在編碼器中使用循環層和注意力層,而在解碼器中使用循環層;TransformerTransformer 塊( N 個相同的層堆疊)替代了這些層
    • 在編碼器中,Transformer 塊由一系列子層組成:一個多頭(自)注意力層和一個逐位置前饋層 (position-wise feedforward layer),這兩個層都使用殘差連接和歸一化層
    • 在解碼器中,Transformer 塊包含一種帶有掩碼的多頭(自)注意力層(掩碼多頭自注意力層),以及一個類似于編碼器中的前饋層(同樣具有殘差連接和歸一化層),掩碼可以防止位置對未來的關注,此外,解碼器中的第二個多頭(自)注意力層計算對編碼器 Transformer 塊輸出的注意力
  • 在帶有注意力機制的 seq2seq 網絡中,編碼器狀態會傳遞到第一個循環層時間步中;在 Transformer 中,編碼器的狀態被傳遞給解碼器中的每一個 Transformer 塊,這使得 Transformer 網絡能夠在時間步之間并行計算,不像 seq2seq 網絡那樣存在時間依賴性
  • 為了并行計算,Transformer 添加了一個編碼層,以提供位置信息區分 Transformer 網絡序列中每個元素的位置(位置編碼層),這樣,編碼器將輸入序列的位置信息和嵌入作為輸入,從而能夠考慮位置信息

接下來,逐步介紹數據在 Transformer 網絡中的流動過程。在之后的學習中,我們將使用 TensorFlow 從零開始創建并訓練一個 Transformer 模型:

  1. 數據預處理,將輸入和輸出分詞化并轉換為嵌入

  2. 接下來,將位置編碼應用于輸入和輸出嵌入,以獲得關于序列中詞元相對位置的信息。在編碼器部分:

    • 編碼器包含一個嵌入層和一個位置編碼層,隨后是 6 個相同的 Transformer 塊,每個編碼器中的 Transformer 塊由一個多頭(自)注意力層和一個逐位置前饋層組成

    自注意力是關注同一序列中某些部分的過程,處理一個句子時,我們可能希望知道哪些單詞與當前單詞最為相關

    • 多頭注意力層由多個(本節中為 8 個)并行的自注意力層組成。自注意力通過從輸入嵌入構建三個向量 Q Q Q (查詢)、 K K K (鍵)和 V V V (值)來實現,這些向量是通過將輸入嵌入與三個可訓練的權重矩陣 W Q W_Q WQ? W K W_K WK? W V W_V WV? 相乘創建的。輸出向量 Z 是通過在每個自注意力層中使用以下公式結合 K K K Q Q Q V V V 創建的,其中 d K d_K dK? 表示 K K K Q Q Q V V V 向量的維度(本節中為 64):
      z = s o f t m a x ( Q K T d k ) V z=softmax(\frac {QK^T}{\sqrt {d_k}})V z=softmax(dk? ?QKT?)V
    • 多頭注意力層會為 Z 創建多個值(基于每個自注意力層中的多個可訓練權重矩陣 W Q W_Q WQ? W K W_K WK? W V W_V WV?),然后將這些值連接起來,作為逐位置前饋層的輸入
    • 逐位置前饋層的輸入由序列中不同元素(如句子中的單詞)的嵌入組成,這些嵌入通過多頭注意力層中的自注意力進行處理。每個詞元在內部由一個固定長度的嵌入向量表示(在本節中為 512),每個向量并行通過前饋層處理。前饋網絡的輸出作為下一個 Transformer 塊中的多頭注意力層的輸入。在編碼器的最后一個 Transformer 塊中,輸出是傳遞給解碼器的上下文向量
    • 多頭注意力層和逐位置前饋層不僅將前一層的信號傳遞給下一層,還將其輸入的殘差信號傳遞給輸出。輸出和殘差輸入經過一個層歸一化
    • 由于編碼器中整個序列是并行處理的,各個元素的位置相關信息會丟失。為彌補這一點,輸入嵌入通過位置編碼處理,位置編碼實現為無學習參數的正弦函數,位置編碼會加到輸入嵌入上
  3. 接下來,了解數據在解碼器中的流動過程:

    • 編碼器的輸出生成一對注意力向量 K K K V V V,這些向量并行地傳送到解碼器中的所有 Transformer 塊。解碼器中的 Transformer 塊類似于編碼器中的 Transformer 塊,不同之處在于它具有一個額外的多頭注意力層,用于處理來自編碼器的注意力向量。這個額外的多頭注意力層的工作方式與編碼器中的層類似,但它結合了來自下層的 Q Q Q 向量和來自編碼器狀態的 K K K V V V 向量
    • seq2seq 網絡類似,輸出序列一次生成一個詞元,使用來自前一時間步的輸入。與編碼器的輸入類似,解碼器的輸入也會用位置編碼進行處理。不同于編碼器,解碼器中的自注意力過程只能關注先前時間點的詞元,這是通過屏蔽未來時間步的詞元實現的
    • 解碼器中最后一個 Transformer 塊的輸出是一個低維嵌入序列(本節中為 512)。這個嵌入序列會傳遞到全連接層,轉換成目標詞匯表中的概率分布序列,據此可以通過貪心算法或更復雜的技術(如束搜索)生成最可能的單詞

Tranformer 整體架構如下圖所示:

Transformer

1.5 模型訓練

Transformer 通常通過半監督學習進行訓練,分為以下兩個步驟:

  • 首先是無監督的預訓練,通常在一個非常大的語料庫上進行
  • 然后是在一個較小的標注數據集上進行有監督的微調。

無論是預訓練還是微調,都可能需要大量的資源,特別是,考慮到大語言模型 (large language model, LLM) 參數數量的不斷增加,這種情況更為明顯。
有時,第二個步驟中的標注數據集通常規模較小,這也稱為少樣本學習 (few-shot learning),指的是在樣本數量有限的情況下進行預測。

2. Transformer 類別

2.1 解碼器(自回歸)模型

一個典型的例子是 GPT (Generative Pre-Trained) 模型,自回歸模型僅使用原始 Transformer 模型的解碼器,其注意力頭只能看到文本中之前的內容,而無法看到之后的內容,并在完整句子上使用掩碼機制。自回歸模型通過觀察所有先前的詞元來推測下一個詞元。通常,自回歸模型用于文本生成任務。其他經典的自回歸模型包括 GPT-2Transformer-XLReformerXLNet

2.2 編碼器(自編碼)模型

一個典型的例子是 BERT (Bidirectional Encoder Representations from Transformers),自編碼器對應于原始 Transformer 模型中的編碼器,能夠訪問完整的輸入詞元。自編碼模型通過掩碼/更改輸入詞元,然后嘗試重建原始句子來進行預訓練。通常,這些模型建立了完整句子的雙向表示。需要注意的是,自編碼器和自回歸模型之間唯一的區別在于預訓練階段,因此相同的架構可以以兩種方式使用。自編碼器可以用于自然語言生成,以及分類和其它 NLP 任務。除了 BERT,其他經典的自編碼模型包括 ALBERTRoBERTaELECTRA

2.3 Seq2seq

典型的例子包括 T5 (Text-to-Text Transfer Transformer)、多任務統一模型 (Multitask Unified Model, MUM) 和原始 TransformerSeq2seq 模型使用原始 Transformer 架構中的編碼器和解碼器。Seq2seq 可以微調用于許多任務,如翻譯、摘要和問答等。

3. 經典注意力機制

注意力機制有多種類型,例如自注意力、局部/硬注意力和全局/軟注意力等。接下來,我們重點介紹一些經典注意力機制。

3.1 稀疏注意力

原始 Transformer 論文中的(縮放)點積注意力通常是在一個完整的平方矩陣 ( O ( L 2 ) O(L^2) O(L2)) 上計算,其中 L L L 是最大考慮的序列長度。BigBird Transformer 引入了稀疏注意力的思想,通過利用稀疏矩陣來實現。

3.2 LSH 注意力

Reformer 引入了通過哈希減少注意力機制復雜度的思想,稱之為局部敏感哈希 (locality-sensitive hashing, LSH) 注意力。該方法基于在計算 $softmax(QKT) 時僅使用最大元素的思想,換句話說,對于每個查詢 q ∈ Q q\in Q qQ,僅計算與 q q q 接近的鍵 k ∈ K k\in K kK。為了計算接近度,根據局部敏感哈希技術計算多個哈希函數。

3.3 局部注意力

一些 Transformer 采用了僅使用局部上下文窗口的思想(例如,右側幾個詞元和左側幾個詞元)。核心思想在于,使用較少的參數可以考慮更長的序列,但注意力的范圍有限。因此,局部注意力的受歡迎程度較低。

4. 預訓練模型

原始 Transformer 具有編碼器-解碼器架構,但在某些情況下,可以僅使用編碼器、僅使用解碼器或兩者同時使用。

4.1 編碼器預訓練

這類模型也稱為自編碼模型,在預訓練過程中僅使用編碼器。預訓練通過在輸入序列中屏蔽單詞并訓練模型重建序列進行。通常,編碼器可以訪問所有輸入單詞,通常用于分類任務。

4.2 解碼器預訓練

解碼器模型稱為自回歸模型。在預訓練期間,解碼器被優化以預測下一個單詞。需要注意的是,解碼器只能訪問序列中給定單詞之前的所有單詞,通常用于文本生成任務。

4.3 編碼器-解碼器預訓練

模型可以同時使用編碼器和解碼器。編碼器中的注意力可以使用序列中的所有單詞,而解碼器中的注意力只能使用序列中給定單詞之前的單詞。編碼器-解碼器架構具有廣泛的應用,包括文本生成、翻譯、摘要和問答。

4.4 預訓練任務

預訓練任務可以分成以下類別:

  • 語言建模 (Language Modeling, LM):對于單向語言模型,任務是預測下一個詞元。對于雙向語言模型,任務是預測前后詞元
  • 掩碼語言建模 (Masked Language Modeling, MLM):關鍵思想是將輸入句子中的某些詞元進行掩碼處理,模型在給定非掩碼詞元的情況下訓練以預測被掩碼的詞元
  • 排列語言建模 (Permuted Language Modeling, PLM):與語言建模類似,但對輸入序列進行隨機排列。然后選擇一部分詞元作為目標,模型訓練預測這些目標
  • 去噪自編碼器 (Denoising Autoencoder, DAE):輸入數據集中部分數據被破壞。例如,隨機抽取輸入詞元并用特殊的 [MASK] 元素替換它們,或者隨機刪除輸入詞元,或者隨機打亂句子的順序。模型的任務是恢復未被破壞的原始輸入
  • 對比學習 (Contrastive Learning, CTL):通過假設某些觀察到的文本對比隨機采樣的文本對更具語義相似性,為文本對學習評分函數,常用方法包括:
    • 深度信息最大化 (Deep InfoMax, DIM):最大化輸入圖像表示與同一圖像的各種局部區域之間的互信息
    • 替換詞元檢測 (Replaced Token Detection, RTD):預測給定上下文的輸入詞元是否被替換
    • 下一句子預測 (Next Sentence Prediction, NSP):模型訓練用于區分兩個輸入句子在訓練語料庫中是否是連續的
    • 句子順序預測 (Sentence Order Prediction, SOP):與 NSP 的思想相同,但增加了附加信號:兩個連續的句子作為正樣本,而兩個順序顛倒的句子作為負樣本。

6. 基于 Transformer 實現機器翻譯

使用 TensorFlow 從零開始實現基于 Transformer 的機器翻譯模型,代碼實現鏈接。

小結

Transformer 模型通過引入自注意力機制和多頭注意力機制,克服了傳統循環神經網絡和長短期記憶網絡在處理長序列時的局限性,與序列處理方法相比,Transformer 不僅提高了計算效率,支持并行化訓練,還能捕捉序列中遠距離的依賴關系,極大提升了模型的性能。憑借這些優勢,Transformer 已成為現代深度學習中的核心架構,不僅在機器翻譯、文本生成等傳統自然語言處理任務中取得了卓越成果,還被成功應用于計算機視覺、語音識別等領域,推動了人工智能技術的飛速發展。

系列鏈接

TensorFlow深度學習實戰(1)——神經網絡與模型訓練過程詳解
TensorFlow深度學習實戰(2)——使用TensorFlow構建神經網絡
TensorFlow深度學習實戰(3)——深度學習中常用激活函數詳解
TensorFlow深度學習實戰(4)——正則化技術詳解
TensorFlow深度學習實戰(5)——神經網絡性能優化技術詳解
TensorFlow深度學習實戰(6)——回歸分析詳解
TensorFlow深度學習實戰(7)——分類任務詳解
TensorFlow深度學習實戰(8)——卷積神經網絡
TensorFlow深度學習實戰(9)——構建VGG模型實現圖像分類
TensorFlow深度學習實戰(10)——遷移學習詳解
TensorFlow深度學習實戰(11)——風格遷移詳解
TensorFlow深度學習實戰(12)——詞嵌入技術詳解
TensorFlow深度學習實戰(13)——神經嵌入詳解
TensorFlow深度學習實戰(14)——循環神經網絡詳解
TensorFlow深度學習實戰(15)——編碼器-解碼器架構
TensorFlow深度學習實戰(16)——注意力機制詳解
TensorFlow深度學習實戰(17)——主成分分析詳解
TensorFlow深度學習實戰(18)——K-means 聚類詳解
TensorFlow深度學習實戰(19)——受限玻爾茲曼機
TensorFlow深度學習實戰(20)——自組織映射詳解

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/909227.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/909227.shtml
英文地址,請注明出處:http://en.pswp.cn/news/909227.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

20250608-在 Windows 上使用 PyCharm 通過 SSH 連接到遠程 Ubuntu 機器的 Anaconda 環境

在 Windows 上使用 PyCharm 通過 SSH 連接到遠程 Ubuntu 機器的 Anaconda 環境 1. 確保遠程機器上的 SSH 服務已啟動 在遠程 Ubuntu 機器上,確保 SSH 服務已安裝并啟動: sudo apt-get install openssh-server sudo systemctl start ssh sudo systemct…

Oracle 條件索引 case when 報錯解決方案(APP)

文章目錄 環境文檔用途詳細信息 環境 系統平臺:Linux x86-64 Red Hat Enterprise Linux 7 版本:4.5 文檔用途 本內容介紹 Oracle條件索引 case when 如何在HGDB中轉換使用。 詳細信息 1、oracle 索引 create unique index I_GL_VOUCHER_7 on gl_vo…

鴻蒙期末總結

一、概念 HarmonyOS應用關鍵概念:元服務和App的關系 App具有手動下載安裝、包大小無限制、應用內或應用市場更新、全量功能等特征,可使用全量API 元服務具有免安裝、包大小有限制、即用即走、輕量化等特征,只能使用“元服務API集” 鴻蒙的…

Vue3 + TypeScript + Element Plus 表格行按鈕不觸發 row-click 事件、不觸發勾選行,只執行按鈕的 click 事件

點擊表格行按鈕不觸發 row-click 事件、不觸發勾選行&#xff0c;只執行按鈕的 click 事件 點擊第一行的【編輯】&#xff0c;第一行為當前選擇行&#xff0c; 同時也勾選了復選框&#xff0c;也會執行 row-click 事件 原來的代碼&#xff1a; <el-table-column label"…

SiteAzure4.x 版本 訪問html靜態頁文件出現404錯誤

問題描述&#xff1a; SiteAzure4.*版本&#xff0c;在upload文件夾中放置了html靜態頁文件&#xff0c;訪問出現404錯誤 問題分析&#xff1a; 1、確認訪問路徑是否正確以及文件是否存在 2、確認相應文件夾權限是否正確 3、確認IIS默認文檔是否允許靜態頁&#xff0c;MIM…

[免費]微信小程序音樂播放器(爬取網易云音樂數據)(node.js后端)【論文+源碼】

大家好&#xff0c;我是java1234_小鋒老師&#xff0c;看到一個不錯的微信小程序音樂播放器(爬取網易云音樂數據)(node.js后端)&#xff0c;分享下哈。 項目視頻演示 【免費】微信小程序音樂播放器(爬取網易云音樂數據)(node.js后端) 微信小程序畢業設計_嗶哩嗶哩_bilibili …

強化學習:策略梯度概念

2.策略梯度方法 目標是使策略 不斷更新&#xff0c;回報更高。 計算每一個軌跡的回報&#xff0c;和對應的概率 目標是使回報高的軌跡概率應該高。這樣整個策略的期望回報也會高。 什么是策略期望回報&#xff1f; 就是用這個策略跑了若干個軌跡&#xff0c;得到回報&#x…

Java 中高級開發崗技能與面試要點梳理

目錄 一、核心技術深度掌握 (一)Java 語言高階特性 JVM 底層原理剖析 并發編程高級應用 Java 新特性實戰 (二)主流框架與中間件精通 Spring 生態全面掌控 分布式中間件實戰精通 (三)數據庫與存儲優化專家 SQL 與 ORM 高級應用 分庫分表實戰 NoSQL 實戰(Elas…

職場生存發展指南 | 邊界 / 責任 / 社交 / 情緒

注&#xff1a;本文為“職場生存發展”相關合輯。 略作重排&#xff0c;未整理去重。 如有內容異常&#xff0c;請看原文。 職場生存發展指南 | 邊界 / 責任 / 社交 / 情緒 職場如江湖&#xff0c;充滿機遇與挑戰。在單位中立足&#xff0c;需深諳生存智慧——既要守住底線、…

vue3 daterange正則踩坑

<el-form-item label"空置時間" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"開始日期" end-placeholder"結束日期" clearable :editable"fal…

linux中執行腳本命令的source和“.”和“./”的區別

在 Linux 或類 Unix 系統中&#xff0c;source、. 和 ./ 的使用場景各有不同&#xff0c;以下詳細介紹何時使用它們&#xff1a; 命令用途適合場景source和“.”等效。腳本在當前 shell 環境中執行并影響當前 shell 的狀態和環境變量 1. 加載環境變量配置文件&#xff0c;無需…

games101 hw1

原理 背景 將三維空間中一個旋轉的三角形&#xff0c;顯示在屏幕上。 假設三角形初始點位為 v0(2.0, 0.0, ?2.0), v1(0.0, 2.0, ?2.0), v2(?2.0, 0.0, ?2.0), 你需要將這三個點的坐標變換為屏幕坐標并在屏幕上繪制出對應的線框三角形。 mvp AI回答&#xff1a; 在計算機…

Mybatis逆向工程詳解(附源碼文件)動態創建實體類、條件擴展類、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的學習進度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步楊帆旗航。 那么接下來就給大家出一期有關 Mybatis 逆向工程的教學&#xff0c;希望能對大家有所幫助&#xff0c;也特別歡迎大家指點不足之處&#xff0c;小生很樂意接受正確的建議&…

android studio中修改java邏輯對應配置的xml文件

在android studio新建一個activity&#xff0c;自動生成一個xml&#xff0c;可以更改到另一個xml嗎&#xff1f; 可以。 新建一個activity&#xff1a; 如下 上圖中的activity_second為xml文件&#xff0c;SecondActivity為java文件。點擊后&#xff0c; AndroidManifest.x…

@SchedulerLock處理Spring Task在分布式環境下的重復執行問題

本文大綱&#x1f4d6; 1、背景&#x1f342;2、SchedulerLock注解3、實現原理 1、背景&#x1f342; Spring生態下&#xff0c;日常開發定時任務&#xff0c;使用Spring Task框架還是很常見的選擇&#xff0c;但Spring Task并不是為分布式環境設計的&#xff0c;分布式環境下…

Prompt工程指南中文版

Prompt-Engineering-Guide-zh Prompt工程指南中文版 github 本文翻譯改編自 Dair-ai/Prompt-Engineering-Guide 中文原帖地址為 大型語言模型Prompt書寫指南 為了方便理解以及補充缺少的知識點&#xff0c;內容有所添改。除非另有說明&#xff0c;本文中所有的例子都是使用te…

「pandas 與 numpy」數據分析與處理全流程【數據分析全棧攻略:爬蟲+處理+可視化+報告】

- 第 106 篇 - Date: 2025 - 06 - 12 Author: 鄭龍浩&#xff08;仟墨&#xff09; 文中使用的所有文件在文章頂部的資源展示 數據分析與處理 「pandas 與 numpy」 文章目錄 數據分析與處理 「pandas 與 numpy」一了解數據處理1 數據處理2 數據分析第三方庫 二 numpy1 基本介紹…

Fastapi + vue3 自動化測試平臺(6):AI + Web UI的完美結合

&#x1f916;? AI Web自動化革命&#xff1a;用自然語言重塑測試體驗&#xff01; 基于FastAPI Vue3的下一代Web自動化測試平臺誕生&#xff01;將大語言模型 與 Web UI自動化深度結合&#xff0c;讓測試腳本維護進入自然語言時代 —— 告別繁瑣代碼&#xff0c;擁抱智能測…

【QT】 QGraphicsItem 獲取點坐標的幾種方法

目錄 1. 獲取圖元在場景中的位置 對于 QGraphicsEllipseItem&#xff08;點圖元&#xff09; 2. 從 QMap 獲取所有點坐標 3. 響應點擊事件獲取坐標 4. 獲取選中點的坐標 5. 坐標轉換說明 注意事項 在 Qt 圖形視圖框架中&#xff0c;從 QGraphicsItem&#xff08;特別是點…

伊吖學C筆記(6、數、求和、排列)

一、數 1.自然數、奇偶數 自然數也就是非負整數&#xff0c;C的循環語句很容易輸出自然數&#xff0c;比如&#xff1a;輸出100以內的自然數。 奇數、偶數也都是自然數&#xff1a; 2. 約數、因數 題目&#xff1a;一個數如果恰好等于它的因子之和&#xff0c;這個數就稱為“…