
使用這些基本 REST API 最佳實踐構建出色的 API
Seq2Seq(Sequence-to-sequence):輸入一個序列,輸出另一個序列。
在2014年,Cho等人首次在循環神經網絡(RNN)中提出了Seq2Seq(序列到序列)模型。與傳統的統計翻譯模型相比,Seq2Seq模型極大地簡化了序列轉換任務的處理流程。
Seq2Seq模型通過端到端的訓練方式,將輸入序列和目標序列直接關聯起來,避免了傳統方法中繁瑣的特征工程和手工設計的對齊步驟。這使得模型能夠自動學習從輸入到輸出的映射關系,提高了序列轉換任務的性能和效率。
工作原理:Seq2Seq模型中的編碼器使用循環神經網絡將輸入序列轉換為固定長度的上下文向量,而解碼器則利用這個向量和另一個循環神經網絡逐步生成輸出序列。
Encoder(編碼器):
Decoder(解碼器):
Attention Mechanism(注意力機制):Attention Mechanism是一種在深度學習模型中用于處理序列數據的技術,尤其在處理長序列時表現出色。最初引入注意力機制是為了解決機器翻譯中遇到的長句子(超過50字)性能下降問題。
傳統的機器翻譯在長句子上的效果并不理想,因為固定長度的向量難以包含句子的所有語義細節。注意力機制的核心思想是在生成每個輸出詞時,模型都能夠關注到輸入序列中的相關部分。
核心邏輯:從關注全部到關注重點
工作原理:通過計算Decoder的隱藏狀態與Encoder輸出的每個詞的隱藏狀態的相似度(Score),進而得到每個詞的Attention Weight,再將這些Weight與Encoder的隱藏狀態加權求和,生成一個Context Vector。
Encoder(編碼器):
token_id
被分批次傳入Embedding
層,將離散的token_id轉換為連續的詞向量。hs
。這個狀態hs
包含了輸入序列中各個詞的語義信息,是后續Attention機制所需要的重要狀態值。Decoder(解碼器):
h(t-1)
。h(t-1)
與編碼部分產生的每個時間步的隱藏狀態h(s)
(來自雙向RNNs的拼接狀態)進行計算,以得到一個Score。h(s)
進行加權求和(reduce_sum),得到Context Vector。這個Context Vector是輸入序列中各個詞根據當前Decoder隱藏狀態重新加權得到的表示。這個Vector包含了輸入序列中重要信息的加權表示,用于指導Decoder生成當前時刻的輸出。Transformer:通常 Attention 會與傳統的模型配合起來使用,但 Google 的一篇論文《?Attention Is All You Need?》中提出只需要注意力就可以完成傳統模型所能完成的任務,從而擺脫傳統模型對于長程依賴無能為力的問題并使得模型可以并行化,并基于此提出 Transformer 模型。
Transformer架構:主要由輸入部分(輸入輸出嵌入與位置編碼)、多層編碼器、多層解碼器以及輸出部分(輸出線性層與Softmax)四大部分組成。
工作原理:左邊是N個編碼器,右邊是N個解碼器,圖中Transformer的N為6。
Encoder(編碼器):
Decoder(解碼器):
文章轉自微信公眾號@架構師帶你玩轉AI