演算法金 | 沒有思考過 Embedding,不足以談 AI

算法金「全网同名」發表於2024-06-27


大俠幸會,在下全網同名「演算法金」 0 基礎轉 AI 上岸,多個演算法賽 Top 「日更萬日,讓更多人享受智慧樂趣」

抱個拳,送個禮

在當今的人工智慧(AI)領域,Embedding 是一個不可或缺的概念。如果你沒有深入理解過 Embedding,那麼就無法真正掌握 AI 的精髓。接下來,我們將深入探討 Embedding 的基本概念。

1. Embedding的基本概念

1.1 什麼是 Embedding

Embedding 是一種將高維資料對映到低維空間的技術。簡單來說,它就是把複雜的、難以處理的資料轉換成便於計算的形式。舉個例子,假設我們有一個包含上千個詞彙的文字資料,每個詞彙可以看作是一個維度,這樣的資料在計算機處理時會變得非常複雜。而 Embedding 則是透過數學模型將這些高維資料對映到一個低維空間,使得計算更加高效。

1.2 Embedding 在 AI 中的作用

在 AI 中,Embedding 扮演著極其重要的角色。首先,它能大大降低資料的維度,從而提高計算效率。其次,透過 Embedding,AI 模型能夠捕捉到資料之間的隱含關係和結構。例如,在自然語言處理(NLP)中,詞向量(word embeddings)能夠將語義相近的詞彙對映到相鄰的向量空間中,這樣模型就可以更好地理解和處理語言資料。

1.3 常見的 Embedding 型別

根據不同的應用場景,Embedding 的實現方法也有所不同。常見的 Embedding 型別包括:

  1. 詞向量(Word Embedding):這是最常見的一種 Embedding,主要用於 NLP 領域。透過詞向量模型,如 Word2Vec 和 GloVe,可以將詞彙對映到一個固定維度的向量空間中,從而捕捉到詞彙之間的語義關係
  2. 影像嵌入(Image Embedding):在計算機視覺(CV)領域,影像嵌入技術可以將影像資料轉換為向量,從而用於影像分類、物件檢測等任務
  3. 使用者嵌入(User Embedding):在推薦系統中,透過對使用者行為資料進行嵌入,可以有效地進行個性化推薦

2. Embedding的數學基礎

Embedding 的有效實現離不開堅實的數學基礎。為了更好地理解 Embedding 的工作原理,我們需要了解一些關鍵的數學概念。

2.1 向量空間

向量空間是線性代數中的一個基本概念,也是 Embedding 的核心。向量空間由一組向量組成,這些向量可以進行加法和數乘運算。在 Embedding 中,我們將資料點表示為向量,並將它們對映到一個高維或低維的向量空間中。這樣,透過在向量空間中的操作,我們可以捕捉到資料點之間的關係和結構。

(by 3Blue1Brown)

2.2 線性代數基礎

線性代數是 Embedding 技術的基礎,以下是一些關鍵的線性代數概念:

  • 矩陣:矩陣是二維陣列,常用於表示和操作向量。矩陣乘法是 Embedding 技術中的重要操作,例如在訓練詞向量模型時,常使用矩陣乘法來計算詞彙之間的關係
  • 特徵值和特徵向量:特徵值和特徵向量是描述矩陣性質的重要工具。在 Embedding 中,特徵值分解和奇異值分解(SVD)等技術常用於降維和最佳化模型
  • 內積和外積:內積用於衡量向量之間的相似性,而外積用於構建更高維度的矩陣,這兩者在 Embedding 技術中都有廣泛應用

2.3 高維資料的處理

處理高維資料是 Embedding 技術的一個重要挑戰。高維資料通常包含大量冗餘資訊,計算複雜度也較高。為了高效地處理高維資料,我們通常採用以下方法:

  • 降維技術:降維技術,如主成分分析(PCA)和 t-SNE,可以有效地將高維資料對映到低維空間,保留資料的主要特徵
  • 正則化:在模型訓練過程中,透過新增正則化項,可以防止過擬合,提高模型的泛化能力
  • 取樣技術:對於大規模資料集,可以採用負取樣(Negative Sampling)等技術,以減少計算量,提高訓練速度

透過理解向量空間、線性代數基礎和高維資料處理方法,我們可以更好地掌握 Embedding 的數學原理

3. Embedding的實現方法

Embedding 的實現方法多種多樣,具體選擇取決於應用場景和需求。下面,我們將介紹幾種常見的 Embedding 實現方法。

3.1 詞向量模型(Word2Vec, GloVe)

詞向量模型是自然語言處理(NLP)中的重要工具,它們可以將詞彙對映到一個固定維度的向量空間中,捕捉到詞彙之間的語義關係。

  • Word2Vec:這是由 Google 提出的一個詞向量模型,主要有兩種訓練方法:連續詞袋模型(CBOW)和跳躍模型(Skip-gram)。CBOW 透過預測上下文詞彙來訓練詞向量,而 Skip-gram 則透過預測給定詞彙的上下文來訓練。Word2Vec 模型的優點是訓練速度快,且能有效捕捉到詞彙的語義關係
  • GloVe:全域性向量(GloVe)是由史丹佛大學提出的另一種詞向量模型。它透過構建詞彙的共現矩陣,並對矩陣進行最佳化來生成詞向量。與 Word2Vec 不同,GloVe 結合了全域性統計資訊,使得生成的詞向量更加穩定和準確

3.2 神經網路嵌入(Neural Embedding)

神經網路嵌入是利用深度學習模型實現 Embedding 的一種方法,適用於多種資料型別,包括文字、影像和圖結構資料。

  • 神經網路詞嵌入:在 NLP 中,除了 Word2Vec 和 GloVe,基於神經網路的嵌入方法如 BERT 和 GPT 也廣泛應用。BERT 透過雙向 Transformer 模型進行預訓練,可以捕捉到上下文的雙向依賴關係。而 GPT 則透過自迴歸模型進行訓練,生成高質量的文字嵌入
  • 卷積神經網路(CNN)嵌入:在計算機視覺(CV)中,卷積神經網路(CNN)被廣泛用於影像嵌入。透過多層卷積操作,CNN 可以提取影像的特徵,並將其對映到一個低維向量空間中
  • 圖神經網路(GNN)嵌入:對於圖結構資料,圖神經網路(GNN)透過聚合節點及其鄰居的特徵,實現圖資料的嵌入。GNN 能夠捕捉圖中節點之間的複雜關係,廣泛應用於社交網路分析、推薦系統等領域

3.3 其他 Embedding 技術

除了上述方法,還有一些其他的 Embedding 技術,適用於特定的應用場景:

  • 自編碼器(Autoencoder):自編碼器是一種無監督學習模型,透過構建輸入資料的壓縮表示,實現在低維空間中的嵌入。自編碼器在降維和特徵提取方面有良好的表現,適用於多種資料型別
  • 潛在語義分析(LSA)和潛在狄利克雷分配(LDA):這兩種方法主要用於文字資料的主題建模。LSA 透過奇異值分解(SVD)對詞彙-文件矩陣進行降維,而 LDA 透過貝葉斯推斷來發現文字中的潛在主題
  • 詞嵌入的組合方法:在實際應用中,常常結合多種嵌入方法,以提高模型的表現。例如,將 Word2Vec 和 GloVe 生成的詞向量進行組合,或將自編碼器生成的嵌入與神經網路嵌入結合使用

抱個拳,送個禮

點選 ↑ 領取

4. Embedding的訓練與最佳化

要實現高效的 Embedding,訓練與最佳化過程至關重要。以下是 Embedding 訓練與最佳化的關鍵步驟。

4.1 資料預處理

資料預處理是 Embedding 訓練的第一步,良好的預處理可以顯著提高模型的效能。

  • 文字資料的預處理:包括分詞、去除停用詞、詞幹提取和詞形還原等。分詞是將文字拆分成獨立的詞彙,這一步驟在 NLP 中尤為重要。去除停用詞是指刪除一些頻繁出現但沒有實際意義的詞彙,如“的”、“是”、“在”等。詞幹提取和詞形還原則是將詞彙轉換為其基礎形式,以減少詞彙量
  • 影像資料的預處理:包括影像歸一化、尺寸調整和資料增強。影像歸一化是將畫素值歸一化到一定範圍內,提高模型的訓練效果。尺寸調整是將影像縮放到統一尺寸,以適應模型輸入的要求。資料增強則是透過影像旋轉、翻轉、裁剪等操作,增加訓練資料的多樣性
  • 圖資料的預處理:包括圖節點和邊的特徵提取。對於圖結構資料,需要提取節點和邊的特徵,並將其轉換為模型可以處理的格式。例如,在社交網路中,可以提取使用者的個人資訊和社交關係作為特徵

4.2 模型訓練

模型訓練是 Embedding 實現的核心步驟,選擇合適的訓練方法和最佳化演算法至關重要。

  • 監督學習:在有標籤資料的情況下,可以使用監督學習方法進行 Embedding 訓練。例如,在文字分類任務中,可以將分類標籤作為監督訊號,透過神經網路模型進行訓練,生成詞向量
  • 無監督學習:在無標籤資料的情況下,可以使用無監督學習方法進行 Embedding 訓練。常見的方法包括自編碼器和聚類演算法。自編碼器透過重構輸入資料,實現資料的嵌入表示。聚類演算法則透過將資料點分組,生成每個資料點的嵌入向量
  • 半監督學習:在部分有標籤資料的情況下,可以使用半監督學習方法進行 Embedding 訓練。透過結合有標籤和無標籤資料,可以提高模型的泛化能力。例如,在圖嵌入中,可以使用 GraphSAGE 等半監督學習方法,透過聚合節點及其鄰居的特徵,生成節點嵌入

4.3 模型評估與最佳化

模型評估與最佳化是確保 Embedding 質量的關鍵步驟,透過有效的評估和最佳化,可以提升模型的效能。

  • 模型評估:常見的評估指標包括準確率、精確率、召回率和 F1 分數。在 NLP 任務中,可以使用詞相似度、詞類比和下游任務效能等指標評估詞向量的質量。在圖嵌入任務中,可以使用節點分類、連結預測等指標評估嵌入的效果
  • 超引數最佳化:超引數對模型的效能有顯著影響,常見的最佳化方法包括網格搜尋和隨機搜尋。透過調整學習率、批次大小、嵌入維度等超引數,可以找到最優的模型配置
  • 正則化技術:正則化技術可以防止模型過擬合,提高泛化能力。常見的正則化方法包括 L1 和 L2 正則化、Dropout 和早停(Early Stopping)。在 Embedding 訓練中,加入正則化項可以約束模型引數,防止過擬合

透過資料預處理、模型訓練和模型評估與最佳化,我們可以實現高質量的 Embedding

5. Embedding的應用場景

Embedding 技術在不同領域中有廣泛的應用,它們能夠幫助我們高效地處理和分析複雜的資料。以下是幾種主要的應用場景。

5.1 自然語言處理(NLP)

在自然語言處理(NLP)領域,Embedding 技術是至關重要的,它能夠將文字資料轉換為計算機可以處理的向量形式,捕捉到詞彙和短語之間的語義關係。

  • 文字分類:透過詞向量(如 Word2Vec 或 GloVe),可以將文字中的每個詞對映到一個向量空間中,再透過平均或其他方法生成文字的向量表示,進而用於分類任務。經典的應用包括垃圾郵件過濾、情感分析和主題分類等
  • 機器翻譯:在機器翻譯任務中,Embedding 技術用於將源語言和目標語言的詞彙轉換為向量表示,從而透過神經網路模型進行翻譯。典型的模型包括基於 RNN 的序列到序列模型和基於 Transformer 的注意力機制模型
  • 問答系統:問答系統需要理解使用者提出的問題並從知識庫中找到答案。透過詞向量或句子向量,可以將問題和候選答案表示為向量,並透過計算相似度來匹配最合適的答案

5.2 計算機視覺(CV)

在計算機視覺(CV)領域,Embedding 技術主要用於將影像資料轉換為低維向量表示,以便進行各種影像分析任務。

  • 影像分類:透過卷積神經網路(CNN),可以將影像嵌入到一個低維向量空間中,從而實現影像分類。經典的 CNN 模型包括 AlexNet、VGG 和 ResNet 等,這些模型在影像分類任務中表現出色
  • 物件檢測:物件檢測任務需要在影像中定位並分類多個物件。透過將影像分割成小區域,並對每個區域進行嵌入,可以實現物件檢測。典型的模型包括 R-CNN、YOLO 和 SSD 等
  • 影像檢索:在影像檢索任務中,透過將查詢影像和資料庫中的影像嵌入到相同的向量空間中,可以透過計算向量相似度來找到最相似的影像。這個過程通常涉及影像特徵提取和度量學習

5.3 推薦系統

推薦系統透過分析使用者行為資料,為使用者提供個性化的推薦。Embedding 技術在推薦系統中起著關鍵作用,能夠將使用者和物品的特徵表示為向量,從而進行高效的推薦。

  • 協同過濾:在協同過濾方法中,透過將使用者和物品嵌入到一個共同的向量空間中,可以根據使用者的歷史行為資料,預測使用者對未評分物品的喜好。矩陣分解(如 SVD)和神經協同過濾是常見的實現方法
  • 內容推薦:在內容推薦方法中,透過將使用者特徵和內容特徵嵌入到向量空間中,可以根據內容的相似性,為使用者推薦感興趣的內容。典型的應用包括新聞推薦、影片推薦和商品推薦
  • 混合推薦:混合推薦方法結合了協同過濾和內容推薦的優點,透過多種 Embedding 技術,將使用者和物品的特徵進行綜合分析,以提高推薦的準確性和多樣性

透過 Embedding 技術在自然語言處理、計算機視覺和推薦系統中的應用,我們可以大大提升資料分析和處理的效率和效果

6. 經典Embedding案例分析

為了更好地理解 Embedding 的實際應用,我們將透過幾個經典案例來詳細分析 Embedding 技術的實現和效果。

6.1 Word2Vec案例

Word2Vec 是由 Google 提出的詞向量模型,透過將詞彙嵌入到一個高維向量空間中,捕捉到詞彙之間的語義關係。Word2Vec 有兩種主要的訓練方法:連續詞袋模型(CBOW)和跳躍模型(Skip-gram)。

  • 連續詞袋模型(CBOW):CBOW 模型透過預測給定上下文中間的詞彙來訓練詞向量。假設我們有一個句子 "The quick brown fox jumps over the lazy dog",CBOW 模型會用上下文 "The quick brown fox" 和 "over the lazy dog" 來預測中心詞 "jumps"
  • 跳躍模型(Skip-gram):Skip-gram 模型透過預測給定詞彙的上下文來訓練詞向量。以同一個句子為例,Skip-gram 模型會用中心詞 "jumps" 來預測上下文 "The quick brown fox" 和 "over the lazy dog"

效果:透過 Word2Vec 訓練的詞向量,可以有效地捕捉到詞彙之間的語義關係。例如,詞向量之間的向量運算可以表示語義關係,如

這種語義操作在很多 NLP 任務中都表現出了極大的優勢。

6.2 GloVe案例

GloVe(全域性向量)是史丹佛大學提出的一種詞向量模型,它透過構建詞彙的共現矩陣,並對矩陣進行最佳化來生成詞向量。與 Word2Vec 不同,GloVe 結合了全域性統計資訊,使得生成的詞向量更加穩定和準確。

  • 共現矩陣:GloVe 首先構建一個詞彙的共現矩陣,矩陣中的每個元素表示兩個詞彙在一個固定視窗大小內共同出現的次數。例如,如果我們有一個句子 "The quick brown fox jumps over the lazy dog",那麼詞彙 "quick" 和 "brown" 之間的共現次數就是 1
  • 矩陣最佳化:GloVe 透過對共現矩陣進行最佳化,使得詞向量能夠更好地表示詞彙之間的語義關係。最佳化過程透過最小化一個損失函式,使得詞向量能夠儘可能準確地表示共現矩陣中的統計資訊

效果:透過 GloVe 訓練的詞向量,同樣能夠有效地捕捉到詞彙之間的語義關係,並且在某些任務中表現得比 Word2Vec 更加穩定和準確。例如,在詞類比任務中,GloVe 通常能夠給出更符合語義的結果。

6.3 BERT案例

BERT(雙向編碼器表示的 Transformer)是 Google 提出的基於 Transformer 模型的詞向量表示方法,它透過雙向 Transformer 模型進行預訓練,能夠捕捉到詞彙的上下文語義資訊。

  • 雙向 Transformer:與傳統的單向語言模型不同,BERT 透過雙向 Transformer 模型進行訓練,即同時考慮詞彙的前後文資訊。這樣,BERT 能夠更好地捕捉到詞彙的上下文語義關係。例如,在句子 "The bank can guarantee deposits will cover future tuition costs because it invests in adjustable-rate mortgage securities" 中,BERT 能夠根據上下文資訊區分 "bank" 是指金融機構還是河岸
  • 預訓練和微調:BERT 首先在大規模語料庫上進行預訓練,學習詞彙的通用語義表示。然後,在具體任務上進行微調,使得模型能夠適應特定任務的需求

效果:BERT 在多個 NLP 任務中取得了顯著的效果提升,包括問答系統、文字分類和命名實體識別等。BERT 的預訓練模型能夠生成高質量的詞向量表示,顯著提高了下游任務的效能。

透過 Word2Vec、GloVe 和 BERT 的案例分析,我們可以看到 Embedding 技術在不同 NLP 任務中的實際應用效果。接下來,我們將探討 Embedding 與其他 AI 技術的關係。

抱個拳,送個禮

點選 ↑ 領取

7. Embedding與其他AI技術的關係

Embedding 技術與其他 AI 技術密切相關,透過結合不同的 AI 技術,能夠實現更強大的功能和效能。下面我們將探討 Embedding 與深度學習、強化學習和遷移學習的關係。

7.1 Embedding與深度學習

深度學習(Deep Learning)是實現 Embedding 技術的重要方法之一,許多現代 Embedding 技術都依賴於深度神經網路模型。

  • 卷積神經網路(CNN):在計算機視覺(CV)領域,CNN 被廣泛用於影像嵌入。透過多層卷積操作,CNN 可以提取影像的特徵,並將其對映到一個低維向量空間中。這些嵌入向量可以用於影像分類、物件檢測和影像檢索等任務
  • 迴圈神經網路(RNN):在自然語言處理(NLP)領域,RNN 尤其是長短期記憶網路(LSTM)和門控迴圈單元(GRU),被廣泛用於序列資料的嵌入。透過處理序列資料,RNN 可以捕捉到時間序列中的依賴關係,將序列嵌入到低維向量空間中
  • Transformer:Transformer 模型在 NLP 中取得了巨大的成功,尤其是 BERT 和 GPT 等預訓練模型。Transformer 透過自注意力機制,可以有效地捕捉到序列資料中的長距離依賴關係,實現高質量的詞向量嵌入

7.2 Embedding與強化學習

強化學習(Reinforcement Learning,RL)是一種透過與環境互動來學習策略的機器學習方法。Embedding 技術在強化學習中也有廣泛應用,尤其是在狀態表示和策略學習中。

  • 狀態表示:在強化學習中,狀態表示是一個關鍵問題。透過 Embedding 技術,可以將複雜的高維狀態空間對映到一個低維向量空間中,使得狀態表示更加緊湊和有效。例如,在機器人控制任務中,可以透過影像嵌入技術,將視覺輸入表示為低維向量,從而提高策略學習的效率
  • 策略嵌入:強化學習中的策略可以透過嵌入技術進行表示和最佳化。透過策略嵌入,可以將策略對映到一個連續的向量空間中,從而進行最佳化和改進。例如,在推薦系統中,可以透過策略嵌入技術,學習使用者的個性化推薦策略,提高推薦的準確性和多樣性

7.3 Embedding與遷移學習

遷移學習(Transfer Learning)是一種透過將已學到的知識從一個任務遷移到另一個任務的機器學習方法。Embedding 技術在遷移學習中起著重要作用,尤其是在預訓練模型的應用中。

  • 預訓練模型:預訓練模型是遷移學習的核心方法,透過在大規模資料集上進行預訓練,學習通用的特徵表示。然後,在具體任務上進行微調,使得模型能夠適應特定任務的需求。BERT 和 GPT 就是典型的預訓練模型,透過預訓練生成高質量的詞向量嵌入,再在下游任務中進行微調
  • 特徵遷移:透過 Embedding 技術,可以將預訓練模型生成的特徵向量遷移到新的任務中。例如,在影像分類任務中,可以將預訓練的 CNN 模型生成的影像嵌入,遷移到新的影像分類任務中,提高訓練效率和模型效能

透過結合深度學習、強化學習和遷移學習,Embedding 技術能夠實現更強大的功能和效能

8. 如何選擇合適的Embedding技術

在實際應用中,選擇合適的 Embedding 技術對於模型的效能和效果至關重要。以下是一些選擇 Embedding 技術的指南,根據資料型別、應用場景和計算資源進行選擇。

8.1 根據資料型別選擇

不同的資料型別適合不同的 Embedding 技術,選擇合適的技術可以提高模型的效能。

  • 文字資料:對於文字資料,常用的詞向量模型包括 Word2Vec、GloVe 和基於 Transformer 的預訓練模型(如 BERT、GPT)。如果任務是簡單的詞彙嵌入,Word2Vec 和 GloVe 是不錯的選擇。如果需要捕捉複雜的上下文關係,基於 Transformer 的模型則更為適用
  • 影像資料:對於影像資料,卷積神經網路(CNN)是最常用的嵌入方法。經典的 CNN 模型如 AlexNet、VGG、ResNet 等,都能夠有效地將影像嵌入到低維向量空間中。如果需要處理大規模影像資料,可以考慮使用預訓練的 CNN 模型,並在具體任務上進行微調
  • 圖結構資料:對於圖結構資料,圖神經網路(GNN)是最常用的嵌入方法。GNN 能夠捕捉圖中節點之間的複雜關係,適用於社交網路分析、推薦系統等任務。常見的 GNN 模型包括 GraphSAGE、GAT 和 GCN

8.2 根據應用場景選擇

不同的應用場景對嵌入的要求不同,選擇適合應用場景的嵌入技術可以提高任務的完成效果。

  • 自然語言處理(NLP):在 NLP 中,如果任務是文字分類、情感分析等,可以使用 Word2Vec 或 GloVe 等簡單的詞向量模型。如果任務是問答系統、機器翻譯等複雜任務,基於 Transformer 的模型(如 BERT、GPT)更為適用
  • 計算機視覺(CV):在 CV 中,如果任務是影像分類、物件檢測,可以使用經典的 CNN 模型。如果需要處理影像檢索任務,可以結合度量學習(如對比損失)來訓練影像嵌入
  • 推薦系統:在推薦系統中,如果任務是協同過濾,可以使用矩陣分解技術(如 SVD)或神經協同過濾。如果需要結合內容推薦,可以使用基於文字或影像的嵌入技術,並將它們與協同過濾結合

8.3 根據計算資源選擇

計算資源的限制也會影響嵌入技術的選擇。在資源有限的情況下,選擇計算效率高的嵌入技術可以提高模型的實用性。

  • 輕量級模型:如果計算資源有限,可以選擇計算效率高的輕量級模型。例如,在 NLP 任務中,可以使用較小的詞向量模型(如 Word2Vec)而不是複雜的 Transformer 模型。在 CV 任務中,可以選擇較小的 CNN 模型(如 MobileNet)而不是大型的 ResNet
  • 分散式訓練:在大規模資料和高計算資源的情況下,可以採用分散式訓練技術,提高模型訓練的效率。例如,在訓練大型預訓練模型(如 BERT、GPT)時,可以使用分散式計算框架(如 TensorFlow、PyTorch)進行分散式訓練
  • 雲端計算和硬體加速:如果需要處理超大規模資料,可以藉助雲端計算平臺(如 AWS、Google Cloud)和硬體加速技術(如 GPU、TPU)來提高計算效率和模型效能

[ 抱個拳,總個結 ]

Embedding 技術在人工智慧領域中起著至關重要的作用,能夠將複雜的高維資料對映到低維空間,提高資料處理和分析的效率。本文詳細探討了 Embedding 的基本概念、數學基礎、實現方法、訓練與最佳化以及實際應用場景,並分析了經典的 Embedding 案例和與其他 AI 技術的關係。最後,提供了根據資料型別、應用場景和計算資源選擇合適的 Embedding 技術的指南。透過全面瞭解和應用 Embedding 技術,我們可以在各種 AI 任務中實現更高效和準確的資料處理,從而推動人工智慧的發展和應用

接下去,看你的了,大俠!

- 科研為國分憂,創新與民造福 -

日更時間緊任務急,難免有疏漏之處,還請大俠海涵 內容僅供學習交流之用,部分素材來自網路,侵聯刪

[ 演算法金,碎碎念 ]

全網同名,日更萬日,讓更多人享受智慧樂趣

如果覺得內容有價值,煩請大俠多多 分享、在看、點贊,助力演算法金又猛又持久、很黃很 BL 的日更下去;

同時邀請大俠 關注、星標 演算法金,圍觀日更萬日,助你功力大增、笑傲江湖

相關文章