久久精品卡通在线|一级片视频免费观看|91AⅤ在线爱插射在线|无码a片网站中欧美在线精品|国产亚洲99久久精品|欧洲久久精品日本无码高清片|国产主播高清福利在线|国产一极小视频观看|国产十免费十无码十在线|国产一级视频在线观看免费

您當前的位置:鋼材 > 型鋼 > 市場分析

生成對抗網(wǎng)絡的生成器,gan生成對抗網(wǎng)絡應用

來源:頭條 作者: chanong
分享到
關注德勤鋼鐵網(wǎng)在線:
  • 掃描二維碼

    關注√

    德勤鋼鐵網(wǎng)微信

在線咨詢:
  • 掃描或點擊關注德勤鋼鐵網(wǎng)在線客服

來源:AI有道

本文長約2820字,建議12分鐘。

在這篇文章中,我們將向大家介紹生成對抗網(wǎng)絡(GAN),并用最容易理解的術語進行解釋,最后實現(xiàn)一個簡單的GAN 程序,幫助大家更好地理解它。

什么是癌癥?

GAN非常強大,但是它的模型結(jié)構是什么呢?我們之前學**的機器學**或者神經(jīng)網(wǎng)絡模型主要可以做兩件事。這是我們都熟悉的預測和分類。那么,機械模型能否自動生成圖像和聲音呢?并且通過調(diào)整不同模型的輸入向量,我們可以獲得特定的圖像和聲音。例如,您可以調(diào)整輸入?yún)?shù)以獲得紅發(fā)藍眼的臉部,也可以調(diào)整輸入?yún)?shù)以獲得女性音頻片段。換句話說,這樣的機器模型可以根據(jù)需求自動生成所需要的東西。這就是GAN 誕生的地方!

GAN(生成對抗網(wǎng)絡)主要由兩個模塊組成。

生成器(生成模型)和判別器模型(判別模型)互相玩游戲,學**產(chǎn)生非常好的輸出。以攝影為例,生成器的主要任務是學**一組真實圖像,使其生成的圖像接近真實圖像并“欺騙”鑒別器。判別器的主要任務是找到生成器產(chǎn)生的圖像,將它們與真實圖像區(qū)分開來,并判斷它們是真還是假。在整個迭代過程中,生成器不斷努力使生成的圖像越來越真實,而鑒別器則不斷努力識別圖像的真實性。這類似于生成器和判別器之間的游戲。最終,通過反復迭代,兩者會達到平衡。生成器產(chǎn)生的圖像將非常接近真實圖像,但鑒別器將難以識別真假圖像之間的差異。表現(xiàn)是判別器對于真假照片的概率輸出接近0.5。

對GAN 的概念還有點困惑嗎?沒關系。請舉一個生動的例子來解釋。

最近在看黃老師的畫,想畫一些類似的東西,所以就想學美術。范主的照片是這樣的。

我只是想畫畫,所以我請了研究黃教授多年作品的王教授來教我。王教授經(jīng)驗豐富,洞察力敏銳,即使是模仿扇子大師的商業(yè)畫也逃不過他的洞察力。王教授對我說: “如果你的照片能騙過我,就算你成功了!

我很興奮,立刻畫了這張圖給王教授。

王教授淡淡一笑,滿臉黑線,氣得渾身發(fā)抖。 “0分!這也是一幅畫嗎?太不一樣了!”聽到王教授的話,我開始反思自己。嗯,我絕對不擅長畫畫,地上沒有眼睛鼻子。于是我又畫了一張。

王教授見狀,兩秒內(nèi)就吐出了四個字。 1分。重畫!當我覺得還是不行或者畫得太爛的時候,我又研究了范老師的畫風,不斷改進、再創(chuàng)作,有一天我給王老師看了一幅新畫。

王教授看到了,說有點像。我需要仔細看看。最后我還是說:“不行不行,細節(jié)太差了!”繼續(xù)重新繪制。哎喲,王教授越來越嚴格了!我嘆了口氣,回去繼續(xù)研究,最后把那張非常滿意的畫交給了王教授看。

這時,王教授戴上眼鏡,仔細地分析了一下,過了一會兒,王教授拍拍我的肩膀說:“畫得真好,真假難辨! ” 塔。哈哈,我很高興,因為得到了王老師的贊揚和肯定,我感覺自己終于可以像黃老師一樣畫畫了。下一步是考慮換工作。

好的,例子就是這樣(我會接受你對我繪畫天賦的抱怨)。這個例子實際上是一個GAN的訓練過程。我是一個生成器,我的目的是輸出一張可以欺騙王教授的圖片,讓王教授難以辨別真假。王教授是一個鑒別器,他的目的就是鑒別我的畫,判斷它是不是贗品。整個過程就是一個“生成器對決”的游戲過程,最終我(生成器)會輸出一張“假與真”的圖片,連王教授(識別者)都難以辨別。

這就是甘。

GAN模型的基本結(jié)構

在了解GAN模型之前,我們先來看看Yann LeCun對未來深度學**關鍵技術進展的個人看法。

在我看來,最重要的是對抗訓練(也稱為生成對抗網(wǎng)絡的GAN)。這是Ian Goodfellow 最初提出的想法,當時他還是蒙特利爾大學Yoshua Bengio 的學生(后來轉(zhuǎn)到了Google Brain,最近轉(zhuǎn)到了OpenAI)。

在我看來,這個以及當前提出的變體是過去十年中機器學**領域最有趣的想法。

Yann LeCun 認為,GAN 很可能會給深度學**模型帶來又一個重大突破,是過去20 年來機器學**領域最酷的想法。 GAN 近年來發(fā)展非常強勁。下圖顯示了最近提交給ICASSP 會議的所有論文中包含“生成”、“對抗性”和“強化”關鍵詞的論文數(shù)量。

數(shù)據(jù)顯示,2018年,包含“生成”和“對抗性”關鍵詞的論文數(shù)量急劇增加。不難預見,未來幾年將會有更多關于GAN 的論文。

我們先介紹一下GAN的基本結(jié)構,我們已經(jīng)知道GAN由生成器和判別器組成,分別記為G和D。以圖像生成應用為例,其模型結(jié)構如下:

基本的GAN 模型由輸入向量、G 網(wǎng)絡和D 網(wǎng)絡組成。其中,G和D一般由神經(jīng)網(wǎng)絡組成。 G 的輸出是圖像,但采用全連接格式。 G的輸出是D的輸入,其中也包含實際的樣本集。這樣,D嘗試為真實樣本輸出較高的分數(shù),為G生成的樣本輸出較低的分數(shù)。在循環(huán)的每次迭代中,G網(wǎng)絡不斷優(yōu)化網(wǎng)絡參數(shù),使得D不再能區(qū)分真假,但D網(wǎng)絡也不斷優(yōu)化網(wǎng)絡參數(shù)以提高識別能力,這就造成了網(wǎng)絡參數(shù)之間的差距。真樣本分數(shù)和假樣本分數(shù)。

經(jīng)過多次訓練迭代,最終建立了GAN模型。

最終的GAN模型中,G生成的樣本有假有真,D輸出的分數(shù)接近0.5,因此很難區(qū)分真假樣本,訓練成功。

這里我們將解釋輸入向量。輸入向量是用來做什么的?實際上,輸入向量的每個維度都可以代表輸出圖像的特定特征。例如,您可以輸入向量第一維的值來調(diào)整生成圖像中的頭發(fā)顏色。值越高,顏色越紅;值越低,顏色越黑。您可以通過在向量的第二維中輸入值來調(diào)整膚色。通過輸入生成的圖像矢量,您可以使用3D 值調(diào)整生成圖像的面部表情和情緒。

這就是GAN的強大之處;通過調(diào)整輸入向量,可以生成具有各種特征的圖像。這些生成的圖像不是實際樣本集的一部分,而是合理但看不見的圖像。是不是很有趣?下圖顯示不同的向量產(chǎn)生不同的圖像。

解釋完GAN模型,我們來快速了解一下GAN的算法原理。由于有G和D兩個模塊,每個模塊都有對應的網(wǎng)絡參數(shù)。

我們先來看D模塊,它的目標是讓實際樣本得分盡可能大,而G產(chǎn)生的樣本得分盡可能小。 D的損失函數(shù)可以如下獲得。

其中,x為實際樣本,G(z)為G生成的樣本。我們希望D(x) 更大,并且我們希望D(G(z)) 更小。也就是說,我們希望-D(x)盡可能小,并且-log(1-D(G(z)))越小越好。從損失函數(shù)的角度來看,我們得到上面的公式。

再看看G模塊,它的目標是希望自己生產(chǎn)的模型能夠在D上取得更高的分數(shù)。則G的損失函數(shù)可得:

一旦了解了損失函數(shù),您就可以使用各種優(yōu)化算法來訓練模型。

創(chuàng)建GAN 模型

接下來,使用PyTorch 實現(xiàn)一個簡單的GAN 模型。作為創(chuàng)建繪畫的示例,假設您創(chuàng)建了以下“名畫”(以正弦圖為例)。

生成這幅“藝術畫”的代碼是:

def Artist_works(): # 著名藝術家的畫作(實際目標)

r=0.02 * np.random.randn(1, ART_COMPONENTS)

繪畫=np.sin(PAINT_POINTS * np.pi) + r

繪畫=torch.from_numpy(painting).float()

歸還畫作

接下來,我們分別定義G網(wǎng)絡模型和D網(wǎng)絡模型。

G=nn.Sequential( # 生成器

nn.Linear(N_IDEAS, 128),隨機想法的數(shù)量(可能來自正態(tài)分布)

ReLU(),

nn.Linear(128, ART_COMPONENTS), # 根據(jù)這些隨機想法創(chuàng)作繪畫

D=nn.Sequential( # 標識符

nn.Linear(ART_COMPONENTS, 128), # 接收來自著名藝術家或像G 這樣的初學者的藝術作品

ReLU(),

nn.線性(128, 1),

nn.Sigmoid(), # 告訴藝術品是由藝術家創(chuàng)作的概率

設置Adam 算法進行優(yōu)化。

opt_D=torch.optim.Adam(D.parameters(), lr=LR_D)

opt_G=torch.optim.Adam(G.parameters(), lr=LR_G)

最后,我們構建了一個GAN迭代訓練流程。

plt.ion() # 關于連續(xù)圖的一些事情

D_loss_history=[]

G_loss_history=[]

對于(10000): 范圍內(nèi)的步長

Artist_paintings=Artist_works() # 藝術家的真實畫作

G_ideas=torch.randn(BATCH_SIZE, N_IDEAS) # 隨機想法

G_paintings=G(G_ideas) # G 的假畫(隨機想法)

prob_artist0=D(artist_paintings) # D 讓我們增加這個概率

prob_artist1=D(G_paintings) # D 讓我們嘗試降低這個概率

D_loss=- torch.mean(torch.log(prob_artist0) + torch.log(1. - prob_artist1))

G_loss=torch.mean(torch.log(1.-prob_artist1))

D_loss_history.append(D_loss)

G_loss_history.append(G_loss)

opt_D.zero_grad()

D_loss.backward(retain_graph=True) # 重用計算圖

opt_D.step()

opt_G.zero_grad()

G_loss.backward()

opt_G.step()

if 步驟% 50==0: # 繪圖

plt.cla()

plt.plot(PAINT_POINTS[0], G_paintings.data.numpy()[0], c='#4AD631', lw=3, label='生成的油漆',)

plt.plot(PAINT_POINTS[0], np.sin(PAINT_POINTS[0] * np.pi), c='#74BCFF', lw=3, label='標準曲線')

plt.text(-1, 0.75, 'D 精度=%.2f (D 收斂為0.5)' % prob_artist0.data.numpy().mean(), fontdict={'size': 8})

plt.text(-1, 0.5, 'D 分數(shù)=%.2f (-1.38 表示G 收斂)' % -D_loss.data.numpy(), fontdict={'size': 8})

plt.ylim((-1, 1));plt.legend(loc='右下角', fontsize=10);plt.draw();plt.pause(0.01)

plt.ioff()

plt.show()

我們使用動態(tài)繪圖,以便更容易地不斷觀察GAN 模型的訓練狀態(tài)。

如果迭代次數(shù)為1:

如果迭代次數(shù)為200:

如果迭代次數(shù)為1000:

如果迭代次數(shù)為10000:

完美!經(jīng)過10,000 次訓練迭代后,生成的曲線非常接近標準曲線。正如預期,D 的分數(shù)接近0.5。

完整的代碼有.py 和.ipynb 版本,可以通過搜索下面的鏈接找到。

https://github.com/RedstoneWill/MachineLearningInAction/tree/master/GAN

責任編輯:德勤鋼鐵網(wǎng) 標簽:

熱門搜索

相關文章

廣告
德勤鋼鐵網(wǎng) |市場分析

生成對抗網(wǎng)絡的生成器,gan生成對抗網(wǎng)絡應用

chanong

|

來源:AI有道

本文長約2820字,建議12分鐘。

在這篇文章中,我們將向大家介紹生成對抗網(wǎng)絡(GAN),并用最容易理解的術語進行解釋,最后實現(xiàn)一個簡單的GAN 程序,幫助大家更好地理解它。

什么是癌癥?

GAN非常強大,但是它的模型結(jié)構是什么呢?我們之前學**的機器學**或者神經(jīng)網(wǎng)絡模型主要可以做兩件事。這是我們都熟悉的預測和分類。那么,機械模型能否自動生成圖像和聲音呢?并且通過調(diào)整不同模型的輸入向量,我們可以獲得特定的圖像和聲音。例如,您可以調(diào)整輸入?yún)?shù)以獲得紅發(fā)藍眼的臉部,也可以調(diào)整輸入?yún)?shù)以獲得女性音頻片段。換句話說,這樣的機器模型可以根據(jù)需求自動生成所需要的東西。這就是GAN 誕生的地方!

GAN(生成對抗網(wǎng)絡)主要由兩個模塊組成。

生成器(生成模型)和判別器模型(判別模型)互相玩游戲,學**產(chǎn)生非常好的輸出。以攝影為例,生成器的主要任務是學**一組真實圖像,使其生成的圖像接近真實圖像并“欺騙”鑒別器。判別器的主要任務是找到生成器產(chǎn)生的圖像,將它們與真實圖像區(qū)分開來,并判斷它們是真還是假。在整個迭代過程中,生成器不斷努力使生成的圖像越來越真實,而鑒別器則不斷努力識別圖像的真實性。這類似于生成器和判別器之間的游戲。最終,通過反復迭代,兩者會達到平衡。生成器產(chǎn)生的圖像將非常接近真實圖像,但鑒別器將難以識別真假圖像之間的差異。表現(xiàn)是判別器對于真假照片的概率輸出接近0.5。

對GAN 的概念還有點困惑嗎?沒關系。請舉一個生動的例子來解釋。

最近在看黃老師的畫,想畫一些類似的東西,所以就想學美術。范主的照片是這樣的。

我只是想畫畫,所以我請了研究黃教授多年作品的王教授來教我。王教授經(jīng)驗豐富,洞察力敏銳,即使是模仿扇子大師的商業(yè)畫也逃不過他的洞察力。王教授對我說: “如果你的照片能騙過我,就算你成功了!

我很興奮,立刻畫了這張圖給王教授。

王教授淡淡一笑,滿臉黑線,氣得渾身發(fā)抖。 “0分!這也是一幅畫嗎?太不一樣了!”聽到王教授的話,我開始反思自己。嗯,我絕對不擅長畫畫,地上沒有眼睛鼻子。于是我又畫了一張。

王教授見狀,兩秒內(nèi)就吐出了四個字。 1分。重畫!當我覺得還是不行或者畫得太爛的時候,我又研究了范老師的畫風,不斷改進、再創(chuàng)作,有一天我給王老師看了一幅新畫。

王教授看到了,說有點像。我需要仔細看看。最后我還是說:“不行不行,細節(jié)太差了!”繼續(xù)重新繪制。哎喲,王教授越來越嚴格了!我嘆了口氣,回去繼續(xù)研究,最后把那張非常滿意的畫交給了王教授看。

這時,王教授戴上眼鏡,仔細地分析了一下,過了一會兒,王教授拍拍我的肩膀說:“畫得真好,真假難辨! ” 塔。哈哈,我很高興,因為得到了王老師的贊揚和肯定,我感覺自己終于可以像黃老師一樣畫畫了。下一步是考慮換工作。

好的,例子就是這樣(我會接受你對我繪畫天賦的抱怨)。這個例子實際上是一個GAN的訓練過程。我是一個生成器,我的目的是輸出一張可以欺騙王教授的圖片,讓王教授難以辨別真假。王教授是一個鑒別器,他的目的就是鑒別我的畫,判斷它是不是贗品。整個過程就是一個“生成器對決”的游戲過程,最終我(生成器)會輸出一張“假與真”的圖片,連王教授(識別者)都難以辨別。

這就是甘。

GAN模型的基本結(jié)構

在了解GAN模型之前,我們先來看看Yann LeCun對未來深度學**關鍵技術進展的個人看法。

在我看來,最重要的是對抗訓練(也稱為生成對抗網(wǎng)絡的GAN)。這是Ian Goodfellow 最初提出的想法,當時他還是蒙特利爾大學Yoshua Bengio 的學生(后來轉(zhuǎn)到了Google Brain,最近轉(zhuǎn)到了OpenAI)。

在我看來,這個以及當前提出的變體是過去十年中機器學**領域最有趣的想法。

Yann LeCun 認為,GAN 很可能會給深度學**模型帶來又一個重大突破,是過去20 年來機器學**領域最酷的想法。 GAN 近年來發(fā)展非常強勁。下圖顯示了最近提交給ICASSP 會議的所有論文中包含“生成”、“對抗性”和“強化”關鍵詞的論文數(shù)量。

數(shù)據(jù)顯示,2018年,包含“生成”和“對抗性”關鍵詞的論文數(shù)量急劇增加。不難預見,未來幾年將會有更多關于GAN 的論文。

我們先介紹一下GAN的基本結(jié)構,我們已經(jīng)知道GAN由生成器和判別器組成,分別記為G和D。以圖像生成應用為例,其模型結(jié)構如下:

基本的GAN 模型由輸入向量、G 網(wǎng)絡和D 網(wǎng)絡組成。其中,G和D一般由神經(jīng)網(wǎng)絡組成。 G 的輸出是圖像,但采用全連接格式。 G的輸出是D的輸入,其中也包含實際的樣本集。這樣,D嘗試為真實樣本輸出較高的分數(shù),為G生成的樣本輸出較低的分數(shù)。在循環(huán)的每次迭代中,G網(wǎng)絡不斷優(yōu)化網(wǎng)絡參數(shù),使得D不再能區(qū)分真假,但D網(wǎng)絡也不斷優(yōu)化網(wǎng)絡參數(shù)以提高識別能力,這就造成了網(wǎng)絡參數(shù)之間的差距。真樣本分數(shù)和假樣本分數(shù)。

經(jīng)過多次訓練迭代,最終建立了GAN模型。

最終的GAN模型中,G生成的樣本有假有真,D輸出的分數(shù)接近0.5,因此很難區(qū)分真假樣本,訓練成功。

這里我們將解釋輸入向量。輸入向量是用來做什么的?實際上,輸入向量的每個維度都可以代表輸出圖像的特定特征。例如,您可以輸入向量第一維的值來調(diào)整生成圖像中的頭發(fā)顏色。值越高,顏色越紅;值越低,顏色越黑。您可以通過在向量的第二維中輸入值來調(diào)整膚色。通過輸入生成的圖像矢量,您可以使用3D 值調(diào)整生成圖像的面部表情和情緒。

這就是GAN的強大之處;通過調(diào)整輸入向量,可以生成具有各種特征的圖像。這些生成的圖像不是實際樣本集的一部分,而是合理但看不見的圖像。是不是很有趣?下圖顯示不同的向量產(chǎn)生不同的圖像。

解釋完GAN模型,我們來快速了解一下GAN的算法原理。由于有G和D兩個模塊,每個模塊都有對應的網(wǎng)絡參數(shù)。

我們先來看D模塊,它的目標是讓實際樣本得分盡可能大,而G產(chǎn)生的樣本得分盡可能小。 D的損失函數(shù)可以如下獲得。

其中,x為實際樣本,G(z)為G生成的樣本。我們希望D(x) 更大,并且我們希望D(G(z)) 更小。也就是說,我們希望-D(x)盡可能小,并且-log(1-D(G(z)))越小越好。從損失函數(shù)的角度來看,我們得到上面的公式。

再看看G模塊,它的目標是希望自己生產(chǎn)的模型能夠在D上取得更高的分數(shù)。則G的損失函數(shù)可得:

一旦了解了損失函數(shù),您就可以使用各種優(yōu)化算法來訓練模型。

創(chuàng)建GAN 模型

接下來,使用PyTorch 實現(xiàn)一個簡單的GAN 模型。作為創(chuàng)建繪畫的示例,假設您創(chuàng)建了以下“名畫”(以正弦圖為例)。

生成這幅“藝術畫”的代碼是:

def Artist_works(): # 著名藝術家的畫作(實際目標)

r=0.02 * np.random.randn(1, ART_COMPONENTS)

繪畫=np.sin(PAINT_POINTS * np.pi) + r

繪畫=torch.from_numpy(painting).float()

歸還畫作

接下來,我們分別定義G網(wǎng)絡模型和D網(wǎng)絡模型。

G=nn.Sequential( # 生成器

nn.Linear(N_IDEAS, 128),隨機想法的數(shù)量(可能來自正態(tài)分布)

ReLU(),

nn.Linear(128, ART_COMPONENTS), # 根據(jù)這些隨機想法創(chuàng)作繪畫

D=nn.Sequential( # 標識符

nn.Linear(ART_COMPONENTS, 128), # 接收來自著名藝術家或像G 這樣的初學者的藝術作品

ReLU(),

nn.線性(128, 1),

nn.Sigmoid(), # 告訴藝術品是由藝術家創(chuàng)作的概率

設置Adam 算法進行優(yōu)化。

opt_D=torch.optim.Adam(D.parameters(), lr=LR_D)

opt_G=torch.optim.Adam(G.parameters(), lr=LR_G)

最后,我們構建了一個GAN迭代訓練流程。

plt.ion() # 關于連續(xù)圖的一些事情

D_loss_history=[]

G_loss_history=[]

對于(10000): 范圍內(nèi)的步長

Artist_paintings=Artist_works() # 藝術家的真實畫作

G_ideas=torch.randn(BATCH_SIZE, N_IDEAS) # 隨機想法

G_paintings=G(G_ideas) # G 的假畫(隨機想法)

prob_artist0=D(artist_paintings) # D 讓我們增加這個概率

prob_artist1=D(G_paintings) # D 讓我們嘗試降低這個概率

D_loss=- torch.mean(torch.log(prob_artist0) + torch.log(1. - prob_artist1))

G_loss=torch.mean(torch.log(1.-prob_artist1))

D_loss_history.append(D_loss)

G_loss_history.append(G_loss)

opt_D.zero_grad()

D_loss.backward(retain_graph=True) # 重用計算圖

opt_D.step()

opt_G.zero_grad()

G_loss.backward()

opt_G.step()

if 步驟% 50==0: # 繪圖

plt.cla()

plt.plot(PAINT_POINTS[0], G_paintings.data.numpy()[0], c='#4AD631', lw=3, label='生成的油漆',)

plt.plot(PAINT_POINTS[0], np.sin(PAINT_POINTS[0] * np.pi), c='#74BCFF', lw=3, label='標準曲線')

plt.text(-1, 0.75, 'D 精度=%.2f (D 收斂為0.5)' % prob_artist0.data.numpy().mean(), fontdict={'size': 8})

plt.text(-1, 0.5, 'D 分數(shù)=%.2f (-1.38 表示G 收斂)' % -D_loss.data.numpy(), fontdict={'size': 8})

plt.ylim((-1, 1));plt.legend(loc='右下角', fontsize=10);plt.draw();plt.pause(0.01)

plt.ioff()

plt.show()

我們使用動態(tài)繪圖,以便更容易地不斷觀察GAN 模型的訓練狀態(tài)。

如果迭代次數(shù)為1:

如果迭代次數(shù)為200:

如果迭代次數(shù)為1000:

如果迭代次數(shù)為10000:

完美!經(jīng)過10,000 次訓練迭代后,生成的曲線非常接近標準曲線。正如預期,D 的分數(shù)接近0.5。

完整的代碼有.py 和.ipynb 版本,可以通過搜索下面的鏈接找到。

https://github.com/RedstoneWill/MachineLearningInAction/tree/master/GAN


市場分析