ML_2021_8-2 領結變聲器與更多應用
Feature Disentanglement
有沒有可能可以知道embedding vector中,各維所儲存的資訊呢?
Feature disentanglement旨在找出各維的內容,且有辦法做到
Feature Disentanglement 應用
假如我們能知道embedding各維所代表的意涵,我們能用它做寫甚麼?
Voice Conversion
ex.柯南的領結變聲器
如果要A人聲轉成B人聲,一般需要A,B都念一樣的句子
透過feature disentanglement技術,可以讓A,B不必一定要說一樣的話
- 我們知道哪些維度代表說話者的特徵,則我們可以只擷取這段維度,丟入decoder
- 我們知道哪些維度代表說話者的特徵,則我們可以只擷取這段維度,丟入decoder
Discrete Latent Representation
embedding的各維可以不一定是real numbers,它可以是binary,甚至是one-hot
把embedding做這樣的格式可以更容易做feature disentanglement
Example:VQVAE
會準備一個code book,將embedding跟這裏面的vectors計算相似度,取出相似度最高的那個vector,丟入decoder,範例如下圖
這樣的過程其實有點像self-attention。encoder的輸出類比於self-attention裡面的query,而code book的vectors則像是key
- 這樣表示decoder的輸入可能性只有codebook裡面的向量數量,讓輸出變成離散的
Text as Representation
- Representation = embedding
- 有沒有可能讓embedding不要是向量,而是人們看得懂的文字呢?
範例:https://arxiv.org/abs/1810.02851
在這個範例下,輸入跟輸出都是seq,所以model會需要是一個seq2seq的類型
- 這也是一種transformer
這類做法也稱為seq2seq2seq auto-encoder (中間也是文字)
embedding的可讀性
- 若我們要取的任務是取得文章摘要,有沒有可能輸出的embedding其實就是summary呢?
行不通。實務上encoder跟decoder之間會發明一個暗號,人類看不懂embedding的輸出,但是decoder卻能正常還原
一種解決方法就是套用GAN的概念,加入discriminator,讓embedding跟真人寫得summary做比較,而embedding則必須騙過discriminator
沒錯 看起來又很像cycle GAN了
encoder、decoder就是generator,上面的則是discriminator
Tree as representation
本課不細講,相關參考如下
More Applications
VAE
若把decoder單獨拆出來,也可以看作是一個generator
decoder經過一段修正,就是variational auto-encoder (VAE)
Compression
- auto-encoder也可以看作是一種壓縮,把一個圖片丟入encoder,並且儲存embedding
- decoder的還原動作則是”decompression”,不過這樣還原出來的圖片會有失真
Anomaly Detection (異常檢測)
本次作業內容
給定一個資料集{$x^1,x^2,…,x^N$},並且判斷輸入x與資料集是否相似
異常檢測的相關應用:
信用卡交易詐欺檢測 (交易行為是否異常)
網路侵入偵測 (連線行為是否異常)
癌症偵測 (細胞是否變異)
那異常檢測是否就是一種二元分類問題呢?
- 這種問題的難點就是在蒐集資料,異常資料不易蒐集
- 這類問題假設我們只有正常的訓練資料(其中一種class),而沒有異常訓練資料,稱為”One class分類問題”
解決One class classification問題,就會需要auto-encoder
- 正常資料由於有學習過,所以可以有效還原
- 但如果出現了異常資料,decoder會難以還原,若發現decoder的輸出與原始輸入相似度低(large reconstruction loss),則可以判斷它就是anomaly的資料
- 正常資料由於有學習過,所以可以有效還原
auto-encoder只是anomaly detection的一種approach,更多的異常檢測任務解法可以參考其它年的課程