為什麼GAN不能處理離散資料?

2021-09-24 09:21:11 字數 775 閱讀 5416

最初的 gans 僅僅定義在實數領域,gans 通過訓練出的生成器來產生合成資料,然後在合成資料上執行判別器,判別器的輸出梯度將會告訴你,如何通過略微改變合成資料而使其更加現實。一般來說只有在資料連續的情況下,你才可以略微改變合成的資料,而如果資料是離散的,則不能簡單的通過改變合成資料例如,如果你輸出了一張,其畫素值是1.0,那麼接下來你可以將這個值改為1.0001。如果輸出了乙個單詞「penguin」,那麼接下來可以將penguin對應的高維向量加0.001,但可能不存在改變後對應的單詞。 因為所有的自然語言處理(nlp)的基礎都是離散值,如「單詞」、「字母」或者「音節」。

為什麼gan不適合處理文字資料

1. 文字資料相比較資料來說是離散的,因為對於文字來說,通常需要將乙個詞對映為乙個高維的向量,最終**的輸出是乙個one-hot向量,假設softmax的輸出是(0.2, 0.3, 0.1,0.2,0.15,0.05)那麼變為onehot是(0,1,0,0,0,0),如果softmax輸出是(0.2, 0.25, 0.2, 0.1,0.15,0.1 ),one-hot仍然是(0, 1, 0, 0, 0, 0),所以對於生成器來說,g輸出了不同的結果但是d給出了同樣的判別結果,並不能將梯度更新資訊很好的傳遞到g中去,所以d最終輸出的判別沒有意義。

2. 另外就是gan的損失函式是js散度,js散度不適合衡量不相交分布之間的距離。

(wgan雖然使用wassertein距離代替了js散度,但是在生成文字上能力還是有限,gan在生成文字上的應用有seq-gan,和強化學習結合的產物)參考 

為什麼GAN不能處理離散的資料

最初的 gans 僅僅定義在實數領域,gans 通過訓練出的生成器來產生合成資料,然後在合成資料上執行判別器,判別器的輸出梯度將會告訴你,如何通過略微改變合成資料而使其更加現實。一般來說只有在資料連續的情況下,你才可以略微改變合成的資料,而如果資料是離散的,則不能簡單的通過改變合成資料。例如,如果你...

為什麼使用one hot編碼來處理離散型特徵

from sklearn import preprocessing enc preprocessing.onehotencoder enc.fit 0,0,3 1,1,0 0,2,1 1,0,2 這裡一共有4個資料,3種特徵 array enc.transform 0,1,3 toarray 這裡使...

為什麼中斷不能休眠

1.中斷處理的時候,不應該發生程序切換,因為在中斷context中,唯一能打斷當前中斷handler的只有更高優先順序的中斷,它不會被程序打斷 這點對 於softirq,tasklet也一樣,因此這些bottom half也不能休眠 如果在中斷context中休眠,則沒有辦法喚醒它,因為所有的 wa...