李宏毅深度學習教程 第8-9章 生成模型+擴散模型

【2025版】12 生成式對抗網絡GAN 一 – 基本概念介紹_嗶哩嗶哩_bilibili

目錄

1. GAN生成式對抗網絡

2. GAN的訓練 散度差異

3.WGAN

4.訓練GAN

5. 如何客觀評估GAN

6. 條件型生成(按照要求)

7. Cycle GAN(互轉配對)

8.?diffusion model 擴散模型


1. GAN生成式對抗網絡

生成式問題:模型的創造力? 沒有標準答案 就像大家頭腦風暴各自圍繞話題說一說,

比如問模型想吃一個水果? 機器人會回答 蘋果、梨、草莓等等,

又比如讓模型根據描述 生成更多的文字/圖片/視頻。

在監督學習下會存在問題:比如一個預測下一幀的游戲圖像 給網絡過去幾幀的游戲畫面,

但因為訓練數據對同一個轉角 有向左走、向右走這樣不同且矛盾的數據,所以訓練的結果網絡會學會“兩面討好”,輸出“又要接近向左走 又要接近向右轉”。

我可以給一個二項分布 讓機器可能學到 0則左轉 1則右轉,這樣就不會沖突。

總的操作為:輸入x 并在一個隨機分布(通常用正態分布)獲得采樣值z 一起送到網絡中,然后產生最后的輸出y,這樣就可以實現輸出結果的分布是非固定,不沖突的。

2. GAN的訓練 散度差異

把原始樣本和生成器生成的樣本混在一起,辨別器discriminator需要從中挑出生成器生成的樣本。(就像圖靈測試 一方嘗試裝得像 一方盡量區分) 進行“騙”與“找”的對抗,二者一起越來越強。

原始數據的分布p?和生成數據分布q,生成器要讓這兩個分布盡可能接近,判別器做二分類操作。?

訓練過程:固定生成器G 訓練辨別器D ; 再固定辨別器D 訓練生成器G;二者交替。

需要設置 生成數據q(x) 參考數據p(x) 的差異度量divergence,

相當于最小最大博弈過程,可用Conjugate共軛對偶的知識 設置差異函數。?經典差異函數有KL JS.

3.WGAN

JS散度的問題:原始 GAN 中,當生成分布與真實分布幾乎沒有重疊時,JS 散度為常數 log 2。這意味著基于 JS 散度構建的判別器損失對于生成器參數梯度幾乎為零,導致生成器難以更新參數。

如果要構建一張人物頭像,對于一組隨機像素,幾乎不可能恰好就是一張人物頭像。

所以人物頭像的分布,在高維的空間中其實是非常狹窄的,就算是這兩個分布實際上很相似,也很難有任何的重疊的部分。

WGAN 使用 Wasserstein 距離(推土機距離),可以衡量兩個分布之間的真實 “距離”,即使兩個分布沒有重疊,仍然能夠提供有意義的梯度信息,使得生成器能夠在訓練初期也能穩定地更新參數,避免了梯度消失問題,從而讓訓練過程更加穩定和可控

Wasserstein 距離:所有邊緣分布為Pr Pg 的最小聯合分布距離。

對偶問題為

這個條件限制(可以使用梯度懲罰/譜歸一化的操作) 保證訓練的平滑收斂

? ?

本來兩個分布 p和 q 距離非常遙遠,要它一步從開始就直接跳到結尾,這是非常困難的。但是如果用 Wasserstein 距離,可以讓 它們慢慢挪近到一起,最后就可以讓它們對齊在一起。所以在訓練時它可以讓我們的生成器一步一步地變好,而不是一下子就變好。

4.訓練GAN

訓練難點是 需要生成器和判別器同時訓練 互相一步一步一起變強

1. 假設一方突然太強 另一方就會很難進行判別/生成操作 導致訓練停止

2.?文本生成時,生成器輸出的詞是離散的 微小參數變化可能不改變最終輸出詞 導致梯度無法回傳

技巧:1. 生成器與判別器交替訓練幾步 保持二者勢均力敵

2. 標簽平滑:判別器對真實樣本標簽 標1.0會使得判別過于自信 可以縮減改標為0.9

3. 使用?VAE(變分自編碼器)?Flow-based Generative Model 等其它算法

5. 如何客觀評估GAN

主觀上:人眼看這張圖是否合乎常理 像現實中真的物品? ? ? ? 但需要找客觀的評估指標

一個想法:訓練一個圖像的分類系統 會輸出生成的這張圖片是某一類別的概率分布

如果某樣概率特別特別大 那說明就是這個類別;否則四不像 說明生成的質量比較差

比如一個專門生成“辛普森一家”的生成器 生產了下面兩張圖片 哪張圖生成的更符合要求呢?

丟到分類系統里 這個“霸子”概率特別高 說明就是“霸子”;下面這張幾個都不太屬于,則不符合要求

但會出現模式坍塌的問題 多樣性降低 生成數據的分布只是原來真實數據分布的一小部分

比如說我給了它一堆各種品類蘋果的樣本 模式坍塌值生成器只會拼命生成某一類蘋果

但判別器會覺得它生成的圖片都沒問題 但檢測不出多樣性太少

(這會導致看幾張它生成的圖片不覺得有問題,但看多了很多雷同的 就知道生成器有問題)

度量多樣性:看之前分類系統 概率分布的平均分布,如果平均分布很集中說明多樣性比較差;

如果平均分布比較分散 說明有較好的多樣性。

評估的難點:1.同時考慮生成圖片的質量和多樣性? ? ?2.定量評估一個 對于人來說主觀的東西

FID(Frechet Inception Distance)使用預訓練的Inception-v3網絡提取生成圖像和真實圖像的高維特征,然后計算兩個分布之間的Frechet距離(即均值和協方差的差異)。

距離越小,生成數據越接近真實數據的多樣性

6. 條件型生成(按照要求)

生成器根據條件x 與隨機變量z 生成y

提出文字要求(條件) 可以用 Transformer 把文字轉成向量,再喂給生成器。

普通判別器只看生成的圖片真不真實,條件型判別器則要 "雙查",還要看圖片和條件對不對得上(比如 "紅眼睛" 的條件,不能生成藍眼睛)。

訓練時,可以故意搞些 "錯題"(比如用 "黑頭發" 的文字配 "黃頭發" 的圖)讓判別器練手,確保它能精準判斷 "內容是否符合條件"。

除了文字條件外,條件型生成還能做 "圖片變圖片"(Pix2pix),原理和文字變圖一樣,只是 "條件 x" 從文字換成了圖片。

例如:給張素描,生成實景;給張白天的街景,生成夜景;給張房屋設計圖,生成 3D 效果圖。

7. Cycle GAN(互轉配對)

如果沒有成對的 pariwise訓練數據(比如有一堆真人照片和動漫頭像,卻沒有 "同一個人" 的真人 - 動漫對照圖),怎么讓 AI 把真人轉成動漫風格?

Cycle GAN ?——在沒有 "配對數據" 的情況下,學會兩種風格的轉換。

核心思路:用 "循環一致性" 逼 AI 學規律 就像學翻譯時,把中文譯成英文,再把英文譯回中文,兩次翻譯后要和原文差不多 ——Cycle GAN 用了同樣的 trick: 訓練兩個生成器:G 負責把 "真人域" 轉成 "動漫域",F 負責把 "動漫域" 轉回 "真人域"。

強制要求:一張真人照片經 G 轉成動漫后,再經 F 轉回真人,結果必須和原圖幾乎一樣。

這樣一來,G 不敢亂生成(否則 F 轉不回去),只能學到 "保留原圖特征 + 轉換風格" 的規律(比如把真人的五官保留,換成動漫的線條和色彩)。

Cycle GAN 還能雙向工作:既能把真人轉動漫,也能把動漫轉真人。每個方向都配一個判別器,確保轉換后的圖片符合目標域的風格(比如動漫轉真人時,結果要像真實照片)。

文字風格、語音文字互轉、縮句與擴充也同理可用Cycle GAN操作。

8.?diffusion model 擴散模型

去噪擴散概率模型(Denoising Diffusion Probabilistic Model,DDPM)

“塑像就在石頭里,我只是把不需要的部分去掉”——米開朗基羅

我要生成一張貓的圖像 就是從一張隨機像素點開始,重復用噪聲預測器去噪 越來越接近一只貓。

Q:為啥不直接端到端 從噪聲圖直接到結果

A:使用一個噪聲預測器 比端到端產生一個帶噪聲的貓的圖片 簡單的多

訓練數據:第n步去噪應該去成什么樣子呢?

用一只貓的圖像 一步一步加噪聲;第n步去噪的訓練參考 就是這個第n次加噪("前向擴散")

就像老師故意把作業弄臟,讓學生練習 "擦掉臟東西"—— 練熟了,模型自然會在生成時反向操作,從純噪聲里 "擦掉" 所有噪聲

想實現“文生圖” 只需給去噪模塊加個 "文字理解" 功能

目標:噪聲預測器會結合文字,判斷該保留哪些特征(比如 "帽子" 的形狀)、去掉哪些噪聲

訓練時,用 "圖片 + 對應文字" 的數據:先給圖片加噪聲,再讓模型結合文字預測噪聲

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

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

相關文章

1.8 axios詳解

Axios的定義與核心特性Axios是一個基于Promise的現代化HTTP客戶端庫,主要用于在瀏覽器和Node.js 環境中發送HTTP請求,旨在簡化異步數據交互流程。其核心特性如下:跨平臺支持:在瀏覽器中通過XMLHttpRequest對象發送請求&#xff0c…

41.安卓逆向2-frida hook技術-過firda檢測(五)-利用ida分析app的so文件中frida檢測函數過檢測

免責聲明:內容僅供學習參考,請合法利用知識,禁止進行違法犯罪活動! 內容參考于:圖靈Python學院 工具下載: 鏈接:https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwdzy89 提取碼&#xff1…

安卓調javaScript Not find method “forceLogout“ implementatidsignature or namesp

核對一下是否實現對應的javaScript或者javaScript的方法參數對不對, 在這里插入圖片描述我這里一開始實現了這個方法但是沒有給參數,一直報異常,后臺說token沒給就查token的問題,最后發現是搞偏了,兩個原因&#xff0c…

【Linux網絡】:UDP(傳輸層協議)

目錄 一、鋪墊知識 1、傳輸層 2、端口號 2.1、五元組表示 一個進程通信 2.2、端口號范圍劃分 2.3、知名端口 2.4、查看端口號 2.5、問題 3、pidof & netstat 命令 ①netsate 命令 ②pidof命令 二、UDP協議 1、UDP協議格式 2、UDP報文 1.1、UDP數據封裝的過…

Effective C++ 條款19: 設計class猶如設計type

Effective C 條款19:設計class猶如設計type核心思想:設計新的class時,應當像語言設計者設計內置類型一樣慎重,考慮對象的創建、銷毀、初始化、拷貝、類型轉換等所有方面。 ?? 1. 類設計的關鍵問題域 對象生命周期管理&#xff1…

《匯編語言:基于X86處理器》第11章 MS-Windows編程(3)

本章展示的是如何用32 位Microsoft Windows API進行控制臺窗口編程。應用編程接口(API:ApplicationProgramming Interface)是類型、常數和函數的集合體,它提供了一種用計算機代碼操作對象的方式。本章將討論文本I/O、顏色選擇、時間與日期、數據文件I/O,…

在 macOS 上通過 Docker 部署DM8 (ARM 架構)

概述 達夢數據庫 (DM8) 無法直接在 Apple macOS 操作系統上原生安裝,通常需要通過虛擬機(如 Parallels Desktop、VMware Fusion)進行部署。另一種更輕量級且受 macOS 支持的方案是利用 Docker 容器技術來構建開發與測試環境。本文檔將詳細介…

網絡協議之路由是怎么回事?

寫在前面 要想去外面的世界看看, 就離不了路由器,而路由器工作的原理就是路由,那么具體是怎么路由的呢?本文就一起來看下這部分內容。 1:路由的配置 配置一條路由無非就是在配置以下三個信息: 1:包要去哪里&#x…

2106. 摘水果,梳理思路

文章目錄題目概要java 解法詳解題目概要 在一個無限的 x 坐標軸上,有許多水果分布在其中某些位置。給你一個二維整數數組 fruits ,其中 fruits[i] [positioni, amounti] 表示共有 amounti 個水果放置在 positioni 上。fruits 已經按 positioni 升序排列…

深入理解消息隊列(MQ)核心原理與設計精髓

引言:從一個“不堪重負”的訂單系統說起想象一個簡化的電商下單流程:用戶點擊“下單”后,系統需要:在訂單數據庫中創建一條記錄。調用庫存服務,扣減商品庫存。調用營銷服務,給用戶發放積分和優惠券。調用通…

前端手撕題總結篇(算法篇——來自Leetcode牛客)

鏈表指定區域反轉 找到區間(頭和為 for循環當**時)->反轉鏈表(返回反轉過后的頭和尾)->連接 function reverseBetween( head , m , n ) {//preEnd&cur&nextStart cur.next斷開if(mn)return head;const vHeadNode…

從Excel到工時管理系統:企業如何選擇更高效的工時記錄工具?

還在為手工統計員工工時而頭疼嗎?月末堆積如山的Excel表格、反復核對的數據、層出不窮的差錯,這些問題正在拖慢企業的發展步伐。8Manage工時管理系統發現,傳統手工記錄不僅耗費大量人力,更讓寶貴的工時數據難以轉化為有效的管理決…

Java設計模式之《命令模式》

目錄 1、介紹 1.1、命令模式定義 1.2、對比 1.3、典型應用場景 2、命令模式的結構 2.1、組成部分: 2.2、整體流程 3、實現 3.1、沒有命令模式 3.2、命令模式寫法 4、命令模式的優缺點 前言 java設計模式分類: 1、介紹 1.1、命令模式定義 命…

【動態規劃算法】路徑問題

什么是動態規劃算法動態規劃(Dynamic Programming,簡稱 DP)是一種通過分解復雜問題為重疊子問題,并存儲子問題的解以避免重復計算,從而高效求解具有特定性質(重疊子問題、最優子結構)問題的算法…

Java基本技術講解

一、基礎語法三要素 暫時無法在飛書文檔外展示此內容 🔑 黃金法則?:每個變量都要聲明類型!二、程序邏輯控制(游戲行為核心) 條件判斷:if-else - “岔路口選擇” // 撿到金幣邏輯 if (isTouching(Coin.clas…

【網絡基礎2】路由器的 “兩扇門”:二層接口和三層接口到底有啥不一樣?

目錄 前言:路由器不是只有 “插網線的口” 一、先搞懂一個基礎:路由器是 “網絡交通樞紐” 二、二層接口:“小區內部的單元門”,只認 “住戶身份證” 1. 啥是二層接口? 2. 用 “小區內部串門” 理解二層接口 步驟 1:手機打包數據,寫上 “收件人身份證” 步驟 2:二…

MLIR TableGen

簡介 TableGen 是一種領域特定語言(DSL),TableGen 的設計目標是允許編寫靈活的描述,并將記錄的通用特性提取出來,從而減少重復代碼并提高代碼的可維護性。 TableGen的工作流程: 前端解析: Ta…

2、docker容器命令 | 信息查看

1、命令總覽命令作用docker ps查看運行中的容器(-a查看所有容器)docker logs [CONTAINER]查看容器日志(-f實時追蹤日志)docker inspect [CONTAINER]查看容器詳細信息(JSON格式)docker stats [CONTAINER]實時…

【MySQL】MySQL中鎖有哪些?

一、按照粒度分類: 粒度越小,并發度越高,鎖開銷越大。 1.全局鎖: 作用: 鎖定整個MySQL實例(所有數據庫)。適用場景: 全庫邏輯部分。(確保備份期間數據的一致性。)實現方式: 通過 FLUSH TABLES W…

語義分割--deeplabV3+

根據論文網絡結構圖講一下:網絡分為兩部分:encoder和decoder部分。 Encoder:DCNN就是主干網絡,例如resnet,Xception,MobileNet這些(主干網絡也要使用空洞卷積),對dcnn的結…