【PyTorch][chapter 19][李宏毅深度學習]【無監督學習][ GAN]【理論】

前言:

? ? ? ?生成對抗網絡(Generative Adversarial Nets,GAN)是一種基于對抗學習的深度生成模型。

?2014年,蒙特利爾博士 lan Goodfellow 發表了論文《Generative Adaversarial Networks》,

一經提出便成為了學術界研究的熱點,也將生成模型的熱度推向了另一個新的高峰。
對該領域要深入了解,需要重點看一下

? ?Yann LeCun 給于GAN 高度的評價


目錄:

  1. ? ? ?VAE 缺陷
  2. ? ? ? GAN 簡介
  3. ? ? ? GAN 損失函數
  4. ? ? ? 訓練方法
  5. ? ? ??GAN 應用
  6. ? ? ? ?GAN 模型的缺陷

一? VAE 缺陷

? ? ? ? 無法產生新的風格圖片

? ? ? ? ?VAE 通過Decoder 產生的圖片只是要盡可能的跟輸入的圖像相似,但是無法產生新的以假亂真的圖片


二? GAN 簡介

2.1 模型結構

GAN 由一個生成模型和一個鑒別模型 組成.
生成模型(enerative Model):? ? ? 輸入特征向量z,產生假的數據,試圖欺騙判別模型.
判別模型(Discriminative Model): 對生成數據進行真偽鑒別,試圖識別出所有的假的數據

在訓練的過程中,兩個模型持續的進化和對抗,最終兩個網絡達到一個動態均衡:

? ? 生成器生成的圖像接近真實圖像分布,判別器不能識別真假圖像,對于
?? ?給定圖像的預測為真的概率接近0.5

2.2 算法流程(forward)

? ? ? ?s1:? 輸入特征z ,通過生成網絡G 得到生成圖片x_f=G(z)

? ? ? ?s2? : 輸入圖片x(真實的圖片或生成的圖片),鑒別圖片真假y=D(x)


三? ?GAN? 損失函數?

?

? ? ? ?L=min_{G}max_{D}V(G,D)

? ? ? ? ? ??=E_{x \sim p_{data(x)}}[logD(x)]+E_{x \sim p(x_f)}[1-D(x_f)]

? ? ? ? ?生成器G 和 判別器D? 要分開來訓練.

? ? ? ? ?鑒別器D: 輸出圖片真假的概率,是一個二分類問題.用交叉熵來作為損失函數

? ? ? ??P_{data}:? 真實的圖片

? ? ? ??x_f:? ? ? ?通過生成器生成的假圖片

? ? ? ?3.1??針對判別器D

? ? ? ? ? ? ? ? ?x \sim p_{data}? ?真實的圖像的采樣

? ? ? ? ? ? ? ? 我們期望D(x)=1.0?, 所以?E_{x \sim p_{data(x)}}[logD(x)]?最大化

? ? ? ? ? ? ? ? ?x_f=G(z)?生成的圖像:

? ? ? ? ? ? ? ? ? 我們期望D(x_f)=0.0,則 1-D(x_f)=1.0, 所以E_{z \sim p_{z}}[1-D(x_f)]最大化。

? ?

?? ? ? ? ? ? ? ? ?在訓練的鑒別器的時候我們L=-L,把它轉化為求極小值問題

? ? ?

? 3.2 針對生成器G? ?

? ? ? ? ??x_f?通過生成器生成的圖片

? ? ? ? ? 我們期望D(x_f)=1.0.

? ? ? ? ? ? 則 1-D(x_f)=0.0?

? ? ? ? ? ? ?所以E_{z \sim p_{z}}[1-D(x_f)]最小化


?四? ?訓練方法

? ? ?4.1 偽代碼

? ? ? ? 先訓練k輪鑒別模型,再訓練生成模型?

4.2 訓練過程

? ?如上圖: 黑線 真實數據的分布,

? ? ? ? ? ? ? ? ? ?綠線 生成模型產生的分布

? ? ? ? ? ? ? ? ? ?藍線? ?鑒別器鑒別真假的概率

? ?圖1:

? ? ? ? ? ? ? ? ?生成模型很弱,綠線和黑線分布有較大的差異,鑒別模型很容易區分出真假.

? ?圖2

? ? ? ? ? ? ? 生成模型通過訓練進化了,調整其參數,綠線和黑線分布接近了,鑒別模型還是能夠分出真假

? ? 圖3? ? ?

? ? ? ? ? ? ? 生成模型通過訓練進化了,調整其參數,綠線和黑線分布一致,鑒別模型無法給出真假

識別真假的能力為50%


五? ?GAN的應用

? ?基于GAN 有大量的創新應用

GitHub - open-mmlab/mmgeneration: MMGeneration is a powerful toolkit for generative models, based on PyTorch and MMCV.

? ? ?1: 圖像生成

? ? ?輸入一段文字,通過生成模型得到圖像。

? ? ?

? 2: 圖像風格遷移(CycleGAN)

? ? 把一種圖像的風格轉換為另一種

? 3??圖像翻譯——pix2pix模型

有一類任務叫做image-to-image translation。也就是輸入和輸出是來自兩個不同集合(設為A和B)的圖片,且我們一般認為它們是有對應關系的。比如輸入黑白照片(A)輸出彩色照片(B),輸入輪廓照片(A)輸出色彩填充照片(B)等(如圖1),本文介紹的pix2pix模型所處理的就是這類任務。并且原文作者通過一系列實驗,證明了conditional GAN在這類問題上的有效性,也就是說,pix2pix本質上是一種特殊的conditional GAN。? ??

? 5 聲音的轉換(CycleGAN-VC2)

? ? ? ? 將自己的聲音風格轉換


六? GAN 問題

? ? ? 問題:

? ? ? ? JS散度值有一個缺陷,當兩個分布完全不重疊時,其JS散度值都是一個常數,以至于梯度為0

? ? ? 6.1 優化目標

? ? ? ?V(D,G)=E_{x \sim p(x)}[logD(x)]+E_{x \sim q(x)}[log(1-D(x))]

? ? ? ? ? ? ? ? ? ? ? ??=\int_x p(x)logD(x)+\int_x q(x) log(1-D(x))dx

? ? ? ? 假設:

? ? ? ? ? ? ? ?真實的圖像服從x \sim p(x)?的分布

? ? ? ? ? ? ? ?生成的圖像服從x \sim q(x)的分布

? ? ? 6.2? 固定生成模型G, 判別模型D優化目標

? ? ? ? ? ? ? 對D求微分

? ? ? ? ? ? ??\frac{p(x)}{D(x)}-\frac{q(x)}{1-D(x)}=0

? ? ? ? ? ? ??D^{*}(x)=\frac{p(x)}{p(x)+q(x)}

? ? 6.3 固定判別模型D,生成模型優化目標

? ? ? ?V(G,D)=\int_x p log \frac{p}{p+q}+\int_x q log \frac{p}{p+q}

? ? ? ? ? ? ? ? ? ? ?=JSD(p||q)-2log2

? ? ?

JS 散度度量了兩個概率分布的相似度?。一般地,JS散度是對稱的,其取值是 0 到 1 之間 ( “JS散度” 是基于 “KL散度” 的變體,解決了KL散度非對稱的問題)。

JS散度值有一個缺陷,當兩個分布完全不重疊時,即便兩個分布的中心距離有多近,其JS散度值都是一個常數,以至于梯度為0

JSD(p||q)=\frac{1}{2 }\int_x p(x)log \frac{2p(x)}{p(x)+q(x)}dx+\frac{1}{2 }\int_x q(x)log \frac{2q(x)}{p(x)+q(x)}dx

? ? ? ? ? ? ? ? ? ? ?=\frac{1}{2}\int p(x)log \frac{p(x)}{p(x)+q(x)}+\frac{1}{2}\int q(x)log \frac{q(x)}{p(x)+q(x)}+log2

? ? ? ? ? ? ? ? ? ? ?=\frac{1}{2}V(G,D)+log2

所以

? ? ? ? ? ? ? ? ?V(G,D)=2JSD(p||q)-2log2

? ? ?6.4 問題

如上圖,當p(x) 和q(x) 分布完全不重疊的時候

JSD(p||q)=log2

V(G,D)= -log2??

?JSD(p||q)=\frac{1}{2 }\int_x p(x)log \frac{2p(x)}{p(x)+q(x)}dx+\frac{1}{2 }\int_x q(x)log \frac{2q(x)}{p(x)+q(x)}dx

? ? ? ? ? ? ? ??=\frac{1}{2}\int_{-\infty}p(x)log \frac{p(x)}{p(x)+0}+\frac{1}{2}\int_0^{\infty}q(x)log \frac{q(x)}{q(x)+0}+log2

? ? ? ? ? ? ? ? ?=0 + log2


? ? ? ? ??

參考:

偏理論類(創新性更高,意義更大):ICLR,NIPS,ICML
偏重應用類(一般來說創新性有限):AAAI,IJCAI
計算機視覺:CVPR,ICCV,ECCV
自然語言處理:ACL,EMNLP,NaACL

使用 CycleGAN-VC2 實現【人聲音色轉換】!! - 知乎

https://www.cnblogs.com/Edison-zzc/p/17621424.html

GAN的語音翻譯和音頻樣式傳輸如何使用頻譜圖和GAN將爵士樂轉換為古典音樂_頻譜圖 風格轉換-CSDN博客

吹爆!GAN生成對抗網絡原理解讀+論文講解+代碼實現被計算機博士由淺入深講明白了!—人工智能/深度學習/機器學習/AI_嗶哩嗶哩_bilibili

AE?CSDN

VAE?CSDN

https//cs.stanford.edu/people/karpathy/gan/

MMGeneration開源圖像生成算法庫【OpenMMLab】_嗶哩嗶哩_bilibili

Hung-yi Lee

Adverarial Nets

GAN論文逐段精讀【論文精讀】_嗶哩嗶哩_bilibili

精讀CycleGAN論文-拍案叫絕的非配對圖像風格遷移_嗶哩嗶哩_bilibili

https://www.bilibili.com/video/BV1Ya411a78P/?spm_id_from=333.337.search-card.all.click&vd_source=a624c4a1aea4b867c580cc82f03c1745

GAN代碼實戰和原理精講 PyTorch代碼進階 最簡明易懂的GAN生成對抗網絡入門課程 使用PyTorch編寫GAN實例 2021.12最新課程_嗶哩嗶哩_bilibili?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719080.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719080.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719080.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python CGI編程

文章目錄 什么是CGICGI架構Web服務器支持及配置CGI程序示例CGI環境變量GET和POST方法GET方法POST方法區別注意事項 使用POST方法傳遞數據1. 創建HTML表單2. 編寫CGI腳本3. 配置服務器4. 提交表單5. 服務器處理請求注意事項 通過CGI程序傳遞checkbox數據創建HTML表單編寫CGI腳本…

二維碼門樓牌管理系統技術服務:門牌編設規則詳解

文章目錄 前言一、門牌編設規則解讀二、區間編號與分段編號策略三、多出入口建筑物的門牌編設 前言 隨著城市化的快速推進,門樓牌管理成為城市管理中不可或缺的一環。二維碼門樓牌管理系統的引入,不僅提升了管理的效率,也為市民提供了更為便…

波奇學Liunx:信號的產生,保存,處理

信號的產生,信號的保存,信號的處理 在操作系統中進程接受到信號會保存,產生 進程必須識別和能夠處理信號,處理信號是進程的內置功能 進程收到信號時不一定會立即執行,所以進程必然有一套識別,保存&#xff…

Leetcode 3066. Minimum Operations to Exceed Threshold Value II

Leetcode 3066. Minimum Operations to Exceed Threshold Value II 1. 解題思路2. 代碼實現 題目鏈接:Leetcode 3066. Minimum Operations to Exceed Threshold Value II 1. 解題思路 這一題的話只需要排序之后按照題目條件逐一進行執行直至滿足條件即可。 唯一…

Pytorch中,dim形象化的確切意義是什么?

在Pytorch中涉及張量的操作都會涉及“dim”的設置,雖然也理解個大差不差,但是偶爾還是有點犯迷糊,究其原因還是沒有形象化的理解。 首先,張量的維度排序是有固定順序的,0,1,2,.....…

(1)預處理

我們需要的文件結構如上 main.cpp add.h add.cpp add.h 這里使用riscv的工具鏈編譯為.i文件,需要使用-E,就是只進行預處理,我們可以得到兩個.i文件即main.i和add.i main.i 這里看到main.i里頭文件全部替換,然后多了三萬多行 所以…

Leetcode 3068. Find the Maximum Sum of Node Values

Leetcode 3068. Find the Maximum Sum of Node Values 1. 解題思路2. 代碼實現 題目鏈接:3068. Find the Maximum Sum of Node Values 1. 解題思路 這一題雖然標記為一道hard的題目,但其實就是一個腦筋急轉彎的題目。 我們只需要想明白一點即可&…

4G/5G執法記錄儀、智能安全帽走國標GB28181接入海康、宇視等大平臺,也可走平臺與平臺對接,以下級平臺級聯到上級大平臺

AIoT萬物智聯,智能安全帽生產廠家,執法記錄儀生產廠家,智能安全帽、智能頭盔、頭盔記錄儀、執法記錄儀、智能視頻分析/邊緣計算AI盒子、車載DVR/NVR、布控球、智能眼鏡、智能手電、無人機4G補傳系統等統一接入大型融合通信可視指揮調度平臺VM…

Vue3和ElementPlus封裝table組件

最近學習vue3.2并自己在寫一個項目,然后發現好幾個頁面都是列表頁,重復寫table和column也是覺得累,學習的項目列表頁不算多,要是公司項目就不一樣了,所以就想著自己封裝一個table組件,免去大量重復工作和co…

滑動窗口

題目 思路 對于一個數組區間的最值,可以開辟一個隊列記錄(當然這里不能叫隊列只是和隊列相似,習慣性叫法)。 每個區間的最值等于隊首元素。掃描數組時,如果該元素大于隊尾元素(取最大值時)將該隊尾元素出隊…

Effective C++ 學習筆記 條款07 為多態基類聲明virtual析構函數

有許多種做法可以記錄時間,因此,設計一個TimeKeeper base class和一些derived classes作為不同的計時方法很合理: class TimeKeeper { public:TimeKeeper();~TimeKeeper();// ... };class AtomicClock : public TimeKeeper { /* ... */ }; …

DM數據庫學習之路(二十)DM8基于主備集群技術的兩地三中心集群部署及測試(全網最詳細)

DM兩地三中心介紹 摘要 金融行業對數據的可靠性和連續性有著極其嚴格的要求,任何數據丟失或服務中斷都可能導致嚴重的經濟損失。針對這一問題,基于達夢主備集群技術的兩地三中心解決方案能夠切實有效解決業務數據的可靠性和連續性需求。該方案通過構建兩個數據中心和一個災備…

MyBatis標簽獲取數組或者集合長度的方法

1、判斷列表長度&#xff1a; <if test"list ! null and list.size() > 0">... </if> 可結合in條件使用&#xff1a;SELECT * FROM users<where><if test"idList ! null and idList.size() > 0">id IN<foreach item"…

leetcode熱題100學習計劃-鏈表-相交鏈表

思路 兩條鏈表長短不一&#xff0c;找公共交點必須先對齊。記錄兩個鏈表各自長度&#xff0c;長的向短的看齊&#xff0c;長的先走多出來的那么一截&#xff0c;之后兩者一起走&#xff0c;直到相遇或抵達末尾 代碼 /*** Definition for singly-linked list.* public class …

解密Lawnchair:打造個性化極致的Android桌面體驗

解密Lawnchair&#xff1a;打造個性化極致的Android桌面體驗 1. 簡介 Lawnchair是一款知名的Android桌面定制工具&#xff0c;旨在為用戶提供個性化極致的桌面體驗。作為一個開源項目&#xff0c;Lawnchair融合了簡潔、靈活和強大的特點&#xff0c;讓用戶能夠自由定制其Andro…

Python | Conda安裝包報錯:PackagesNotFoundError

Conda在下載安裝包時報錯&#xff1a; PackagesNotFoundError: The following packages are not available from current channels:- XXXXXX&#xff08;包名&#xff09;有如下兩種解決方法&#xff1a; 方法一&#xff1a;將conda-forge添加到搜索路徑上 在命令行運行下方指令…

深入理解C語言:開發屬于你的三子棋小游戲

三子棋 1. 前言2. 準備工作3. 使用二維數組存儲下棋的數據4. 初始化棋盤為全空格5. 打印棋盤6. 玩家下棋7. 電腦下棋8. 判斷輸贏9. 效果展示10. 完整代碼 1. 前言 大家好&#xff0c;我是努力學習游泳的魚&#xff0c;今天我們會用C語言實現三子棋。所謂三子棋&#xff0c;就是…

Android 開發環境搭建的步驟

本文將為您詳細講解 Android 開發環境搭建的步驟。搭建 Android 開發環境需要準備一些軟件和工具&#xff0c;以下是一些基礎步驟&#xff1a; 1. 安裝 Java Development Kit (JDK) 首先&#xff0c;您需要安裝 Java Development Kit (JDK)。JDK 是 Android 開發的基礎&#xf…

TS總結10、ts的 class 類型(配置項strictPropertyInitialization、非空斷言)

一、簡介 1.類(class)是面向對象編程的基本構件,封裝了屬性和方法 1.1、屬性的類型:類的屬性可以在頂層聲明,也可以在構造方法內部聲明,如果不給出類型;TypeScript 會認為x和y的類型都是any;如果聲明時給出初值,可以不寫類型,TypeScript 會自行推斷屬性的類型; c…

【Android 內存優化】怎么理解Android PLT hook?

文章目錄 前言什么是hook?PLT hook作用基本原理PLT hook 總體步驟 代碼案例分析方案預研面臨的問題怎么做&#xff1f;ELFELF 文件頭SHT&#xff08;section header table&#xff09; 鏈接視圖&#xff08;Linking View&#xff09;和執行視圖&#xff08;Execution View&…