2021年2月25日 星期四

Embeddings 模式:找出最理想的特徵表示法(Machine Learning Design Patterns #2)

本文為機器學習系統設計的好書 Machine Learning Design Patterns 中介紹的第二個模式:Embeddings 的筆記。

One-hot encoding 可能會遇到的問題

前文提過了當想要表示的資料有很多類別時,例如說電影推薦系統的 movie_id 或 customer_id,如果用 one-hot encoding 表示的話,此向量的維度會非常大。

另外一個潛在問題是 one-hot encoding 假設每個類別都是互相獨立的,但是大部分情況下資料是互相關聯的,例如說電影推薦系統中同類型的電影他們的特徵向量應該要比不同類型的電影還要接近,但如果用 one-hot encoding 表示的話任何兩部不同的電影的距離都會是零。

如何用 Embeddings 解決問題

Embeddings 模式是利用一些 embedding layer 將原始的輸入資料轉換成一個低維度的特徵向量。Tensorflow 的 tf.feature_column.embedding_column 提供了一種將類別資料轉換成 embedding 的方法。而 embeddings 也常常用來表示文字資料(像是 word2vec)或是圖片的資料。而一個好的 embedding 表示法除了維度要低以外,也要能表示資料中的相互關係(例如相同類型的電影之間的距離得比不同類別的電影距離還要小)。

其他要考慮的設計問題

  1. 決定 embedding 特徵向量的維度:我們希望能盡量壓低特徵向量的維度,但如果太低的話又會讓資訊流失。書中有兩個建議,第一種是 1.6 乘以輸入類別維度的平方根,而第二種建議是輸入類別維度的四次方根。假設輸入類別維度是 625 的話,第一個建議會是 40 維,而第二個建議會是 5 維的特徵向量。
  2. Autoencoders:對於圖片的分類問題,我們可以先用 autoencoder 取得一個低維度的特徵向量,再用這個向量來訓練分類器,如此一來不用這麼多標註好的資料也能訓練出一個分類器 。這類型的方法稱為 self-supervised learning。
  3. Pre-trained text embedding:像是 Word2VecGLoVEBERT 等等都很容易找到已經訓練好的 embedding 模型,直接從這些模型開始會讓開發變得更容易。


沒有留言:

張貼留言