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
已經成為如 BERT
、T5
和 GPT
等前沿模型的基礎構建塊,涵蓋了從計算機視覺到語音識別、翻譯或蛋白質和編碼序列等領域。注意力機制還被應用于強化學習,例如,在 DeepMind
的 AlphaStar
中,將玩家和對手的 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
。此外,與英語不同,法語有性別詞匯。例如,形容詞 économique
和 européenne
必須使用女性形式,因為它們屬于女性名詞 la zone
。
注意力機制的關鍵思想是構建文本模型時,在將單詞翻譯成輸出語言時“關注
”源句子中的每一個單詞。在原始 Transformer
論文中,作者指出這種方法的時間復雜度是平方級的,但在翻譯準確性方面獲得的提升相當可觀。為了降低時間復雜度,Choromanski
等人提出了 Fast Attention Via positive Orthogonal Random
(FAVOR+
) 特征。回顧原始 Transformer
論文中的例子:
使用注意力機制,神經網絡可以學習每個源語言英文單詞與每個目標語言法文單詞之間的熱力圖,這些關系不僅僅存在于對角線上,還可能遍布整個矩陣。例如,當模型輸出法語單詞 européenne
時,它會特別關注輸入單詞 European
和 Economic
(在圖中,對應于對角線和相鄰單元格)。使用注意力機制能夠在沒有監督的情況下學習對齊并關注輸入元素,將輸入的英語句子翻譯成法語。當然,訓練集越大,基于注意力的模型可以學習到的相關性越多。
簡而言之,注意力機制可以訪問所有先前的單詞,并根據學習到的相關性度量加以權衡。這樣,注意力可以提供關于目標句子中遠距離詞元的相關信息。
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
網絡在編碼器中使用循環層和注意力層,而在解碼器中使用循環層;Transformer
用Transformer
塊(N
個相同的層堆疊)替代了這些層- 在編碼器中,
Transformer
塊由一系列子層組成:一個多頭(自)注意力層和一個逐位置前饋層 (position-wise feedforward layer
),這兩個層都使用殘差連接和歸一化層 - 在解碼器中,
Transformer
塊包含一種帶有掩碼的多頭(自)注意力層(掩碼多頭自注意力層),以及一個類似于編碼器中的前饋層(同樣具有殘差連接和歸一化層),掩碼可以防止位置對未來的關注,此外,解碼器中的第二個多頭(自)注意力層計算對編碼器Transformer
塊輸出的注意力
- 在編碼器中,
- 在帶有注意力機制的
seq2seq
網絡中,編碼器狀態會傳遞到第一個循環層時間步中;在Transformer
中,編碼器的狀態被傳遞給解碼器中的每一個Transformer
塊,這使得Transformer
網絡能夠在時間步之間并行計算,不像seq2seq
網絡那樣存在時間依賴性 - 為了并行計算,
Transformer
添加了一個編碼層,以提供位置信息區分Transformer
網絡序列中每個元素的位置(位置編碼層),這樣,編碼器將輸入序列的位置信息和嵌入作為輸入,從而能夠考慮位置信息
接下來,逐步介紹數據在 Transformer
網絡中的流動過程。在之后的學習中,我們將使用 TensorFlow
從零開始創建并訓練一個 Transformer
模型:
-
數據預處理,將輸入和輸出分詞化并轉換為嵌入
-
接下來,將位置編碼應用于輸入和輸出嵌入,以獲得關于序列中詞元相對位置的信息。在編碼器部分:
- 編碼器包含一個嵌入層和一個位置編碼層,隨后是
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
塊中,輸出是傳遞給解碼器的上下文向量 - 多頭注意力層和逐位置前饋層不僅將前一層的信號傳遞給下一層,還將其輸入的殘差信號傳遞給輸出。輸出和殘差輸入經過一個層歸一化
- 由于編碼器中整個序列是并行處理的,各個元素的位置相關信息會丟失。為彌補這一點,輸入嵌入通過位置編碼處理,位置編碼實現為無學習參數的正弦函數,位置編碼會加到輸入嵌入上
- 編碼器包含一個嵌入層和一個位置編碼層,隨后是
-
接下來,了解數據在解碼器中的流動過程:
- 編碼器的輸出生成一對注意力向量 K K K 和 V V V,這些向量并行地傳送到解碼器中的所有
Transformer
塊。解碼器中的Transformer
塊類似于編碼器中的Transformer
塊,不同之處在于它具有一個額外的多頭注意力層,用于處理來自編碼器的注意力向量。這個額外的多頭注意力層的工作方式與編碼器中的層類似,但它結合了來自下層的 Q Q Q 向量和來自編碼器狀態的 K K K 和 V V V 向量 - 與
seq2seq
網絡類似,輸出序列一次生成一個詞元,使用來自前一時間步的輸入。與編碼器的輸入類似,解碼器的輸入也會用位置編碼進行處理。不同于編碼器,解碼器中的自注意力過程只能關注先前時間點的詞元,這是通過屏蔽未來時間步的詞元實現的 - 解碼器中最后一個
Transformer
塊的輸出是一個低維嵌入序列(本節中為512
)。這個嵌入序列會傳遞到全連接層,轉換成目標詞匯表中的概率分布序列,據此可以通過貪心算法或更復雜的技術(如束搜索)生成最可能的單詞
- 編碼器的輸出生成一對注意力向量 K K K 和 V V V,這些向量并行地傳送到解碼器中的所有
Tranformer
整體架構如下圖所示:
1.5 模型訓練
Transformer
通常通過半監督學習進行訓練,分為以下兩個步驟:
- 首先是無監督的預訓練,通常在一個非常大的語料庫上進行
- 然后是在一個較小的標注數據集上進行有監督的微調。
無論是預訓練還是微調,都可能需要大量的資源,特別是,考慮到大語言模型 (large language model
, LLM
) 參數數量的不斷增加,這種情況更為明顯。
有時,第二個步驟中的標注數據集通常規模較小,這也稱為少樣本學習 (few-shot learning
),指的是在樣本數量有限的情況下進行預測。
2. Transformer 類別
2.1 解碼器(自回歸)模型
一個典型的例子是 GPT
(Generative Pre-Trained
) 模型,自回歸模型僅使用原始 Transformer
模型的解碼器,其注意力頭只能看到文本中之前的內容,而無法看到之后的內容,并在完整句子上使用掩碼機制。自回歸模型通過觀察所有先前的詞元來推測下一個詞元。通常,自回歸模型用于文本生成任務。其他經典的自回歸模型包括 GPT-2
、Transformer-XL
、Reformer
和 XLNet
。
2.2 編碼器(自編碼)模型
一個典型的例子是 BERT
(Bidirectional Encoder Representations from Transformers
),自編碼器對應于原始 Transformer
模型中的編碼器,能夠訪問完整的輸入詞元。自編碼模型通過掩碼/更改輸入詞元,然后嘗試重建原始句子來進行預訓練。通常,這些模型建立了完整句子的雙向表示。需要注意的是,自編碼器和自回歸模型之間唯一的區別在于預訓練階段,因此相同的架構可以以兩種方式使用。自編碼器可以用于自然語言生成,以及分類和其它 NLP
任務。除了 BERT
,其他經典的自編碼模型包括 ALBERT
、RoBERTa
和 ELECTRA
。
2.3 Seq2seq
典型的例子包括 T5
(Text-to-Text Transfer Transformer
)、多任務統一模型 (Multitask Unified Model
, MUM
) 和原始 Transformer
。Seq2seq
模型使用原始 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 q∈Q,僅計算與 q q q 接近的鍵 k ∈ K k\in K k∈K。為了計算接近度,根據局部敏感哈希技術計算多個哈希函數。
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)——自組織映射詳解