GAN是一種特殊的損失函式?

2021-09-05 01:16:27 字數 2774 閱讀 4206

資料科學家jeremy howard在fast.ai的《生成對抗網路(gan)》課程中曾經講過這樣一句話:

「從本質上來說,生成對抗網路(gan)是一種特殊的損失函式。」

你是否能夠理解這句話的意思?讀完本文,你會更好的理解這句話的含義。

神經網路的函式逼近理論

在數學中,我們可以將函式看做乙個「機器」或「黑匣子」,我們為這個「機器」或「黑匣子」提供了乙個或多個數字作為輸入,則會輸出乙個或多個數字,如下圖所示:

一般來說,我們可以用乙個數學表示式來表示我們想要的函式。但是,在一些特殊的情況下,我們就沒辦法將函式寫成一堆加法和乘法的明確組合,比如:我們希望擁有這樣乙個函式,即能夠判斷輸入影象的類別是貓還是狗。

如果不能用明確的用數學表示式來表達這個函式,那麼,我們可以用某種方法近似表示嗎?

作為損失函式的神經網路

現在,我們希望設計乙個貓和狗的分類器。但我們沒辦法設計乙個特別明確的分類函式,所以我們另闢蹊徑,構建乙個神經網路,然後一步一步逐漸實現這一目標。

為了更好的逼近,神經網路需要知道距離目標到底還有多遠。我們使用損失函式表示誤差。

現在,存在很多種型別的損失函式,使用哪種損失函式則取決於手頭上的任務。並且,他們有乙個共同的屬性,即這些損失函式必須能夠用精確的數學表示式來表示,如:

1.l1損失函式(絕對誤差):用於回歸任務。

2.l2損失函式(均方誤差):和l1損失函式類似,但對異常值更加敏感。

3.交叉熵損失函式:通常用於分類任務。

4.dice係數損失函式:用於分割任務。

5.相對熵:又稱kl散度,用於測量兩個分布之間的差異。

在構建乙個效能良好的神經網路時,損失函式非常有用。正確深入的理解損失函式,並適時使用損失函式實現目標,是開發人員必備的技能之一。

如何設計乙個好的損失函式,也是乙個異常活躍的研究領域。比如:《密度物件檢測的焦點損失函式(focal loss)》中就設計了一種新的損失函式,稱為焦點損失函式,可以處理人臉檢測模型中的差異。

可明確表示損失函式的一些限制

上文提到的損失函式適用於分類、回歸、分割等任務,但是如果模型的輸出具有多模態分布,這些損失函式就派不上用場了。比如,對黑白影象進行著色處理。

如上圖所示:

1.輸入影象是個黑白鳥類影象,真實影象的顏色是藍色。

2.使用l2損失函式計算模型輸出的彩色影象和藍色真實影象之間的差異。

3.接下來,我們有一張非常類似的黑白鳥類影象,其真實影象的顏色是紅色。

4.l2損失函式現在嘗試著將模型輸出的顏色和紅色的差異最小化。

5.根據l2損失函式的反饋,模型學習到:對於類似的鳥類,其輸出可以接近紅色,也可以接近藍色,那麼,到底應該怎麼做呢?

6.最後,模型輸出鳥類的顏色為黃色,這就是處於紅色和藍色中間的顏色,並且是差異最小化的安全選擇,即便是模型以前從未見過黃色的鳥,它也會這樣做。

7.但是,自然界中沒有黃色的鳥類,所以模型的輸出並不真實。

生成對抗網路——一種新的損失函式

如果我們沒辦法用明確的數學表示式來表示這個損失函式,那麼,我們就可以使用神經網路進行逼近,比如,函式接收一組數字,並輸出狗的真實影象。

神經網路需要使用損失函式來反饋當前結果如何,但是並沒有哪個損失函式可以很好的實現這一目標。

會不會有這樣一種方法?能夠直接逼近神經網路的損失函式,但是我們沒必要知道其數學表示式是什麼,這就像乙個「機器」或「黑匣子」,就跟神經網路一樣。也就是說,如果使用乙個神經網路模型替換這個損失函式,這樣可以嗎?

對,這就是生成對抗網路(gan)。

我們來看上面兩個圖,就可以更好的理解損失函式。在上圖中,白色框表示輸入,粉色和綠色框表示我們要構建的神經網路,藍色表示損失函式。

在vanilla gan中,只有乙個損失函式,即判別器d,這本身就是乙個特殊的神經網路。

而在alpha-gan中,有3個損失函式,即輸入資料的判別器d,編碼潛在變數的潛在判別器c和傳統的畫素級l1損失函式。其中,d和c不是明確的損失函式,而是一種逼近,即乙個神經網路。

梯度

如果使用損失函式訓練生成網路(和alpha-gan網路中的編碼器),那麼,應該使用哪種損失函式來訓練判別器呢?

判別器的任務是區分實際資料分布和生成資料分布,使用監督的方式訓練判別器比較容易,如二元交叉熵。由於判別器是生成器的損失韓式,這就意味著,判別器的二進位制交叉熵損失函式產生的梯度也可以用來更新生成器。

結論

考慮到神經網路可以代替傳統的損失函式,生成對抗網路就實現了這一目標。兩個網路之間的相互作用,可以讓神經網路執行一些以前無法實現的任務,比如生成逼真的影象等任務。

GAN是一種特殊的損失函式?

摘要 從本質上來說,生成對抗網路 gan 是一種特殊的損失函式,我們來深入探索下這句話的含義。資料科學家jeremy howard在fast.ai的 生成對抗網路 gan 課程中曾經講過這樣一句話 從本質上來說,生成對抗網路 gan 是一種特殊的損失函式。你是否能夠理解這句話的意思?讀完本文,你會更...

GAN是一種特殊的損失函式?

資料科學家 jeremy howard 在fast.ai 的 生成對抗網路 gan 課程中曾經講過這樣一句話 從本質上來說,生成對抗網路 gan 是一種特殊的損失函式。你是否能夠理解這句話的意思?讀完本文,你會更好的理解這句話的含義。神經網路的函式逼近理論 在數學中,我們可以將函式看做乙個 機器 或...

gan網路損失函式 GAN的損失函式

理解生成對抗網路的關鍵在於理解gan的損失函式 js散度 gan實際是通過對先驗分布施加乙個運算g,來擬合乙個新的分布 如果從傳統的判別式網路的思路出發,只要選定合適的loss,就可以使生成分布和真實分布之間的距離盡可能逼近 kl散度經常用來衡量分布之間距離 但kl散度是不對稱的。不對稱意味著,對於...