剛 才 就 是 用 了 一 堆 比 喻 然 後 告 訴 你 gan 是 怎 麼 運 作 的 然 後 也 實 際 上 告 訴 你 gan 的 操 作 是 怎 麼 操 作 的 那 接 下 來 呢 我 們 要 講 一 點 理 論 的 部 分 講 一 點 農 場 文 不 會 講 到 的 部 分 告 訴 你 說 實 際 上 為 什 麼 gan 的 這 一 番 操 作 為 什 麼 這 個 generator 跟 discriminator 的 互 動 可 以 讓 我 們 的 generator 產 生 像 是 真 正 的 人 臉 的 圖 片 那 這 背 後 的 互 動 在 做 的 到 底 是 什 麼 樣 的 事 情 那 我 們 先 來 弄 清 楚 我 們 今 天 的 訓 練 的 目 標 到 底 是 什 麼 你 知 道 我 們 在 訓 練 network 的 時 候 你 就 是 要 定 一 個 loss function 定 完 以 後 用 gradient descent 去 調 你 的 參 數 去 minimize 那 個 loss function 就 結 束 了 那 在 這 個 generation 的 問 題 裡 面 到 底 我 們 要 minimize 的 或 者 是 我 們 要 maximize 的 到 底 是 什 麼 樣 的 東 西 呢 我 們 要 把 這 些 事 弄 清 楚 才 能 夠 做 接 下 來 的 事 情 好 那 在 generator 裡 面 我 們 到 底 想 要 minimize 或 者 是 maximize 什 麼 樣 的 東 西 呢 我 們 想 要 minimize 的 東 西 是 這 個 樣 子 的 我 們 有 一 個 generator 給 它 一 大 堆 的 vector 給 它 從 normal distribution sample 出 來 的 東 西 丟 進 這 個 generator 以 後 會 產 生 一 個 比 較 複 雜 的 distribution 這 個 複 雜 distribution 我 們 叫 它 pg 然 後 呢 我 們 有 一 堆 的 data 這 個 是 真 正 的 data 真 正 的 data 也 形 成 了 另 外 一 個 distribution 叫 做 pdata 我 們 期 待 pg 跟 pdata 越 接 近 越 好 好 那 如 果 你 一 下 子 沒 有 辦 法 想 像 這 個 pg pdata 是 怎 麼 一 回 事 的 話 那 我 們 用 一 維 的 狀 況 來 跟 大 家 說 明 我 們 假 設 generator 的 input 是 一 個 一 維 的 向 量 generator 的 output 也 是 一 維 的 向 量 我 們 真 正 的 data 也 是 一 維 的 向 量 那 我 們 的 normal distribution 就 長 這 個 樣 子 沒 有 問 題 那 丟 到 generator 以 後 這 邊 這 每 1 個 點 假 設 你 輸 入 5 個 點 那 邊 這 每 一 個 點 它 的 位 置 會 改 變 那 你 就 產 生 一 個 新 的 distribution 那 可 能 本 來 大 家 都 集 中 在 中 間 通 過 這 個 generator 通 過 一 個 network 裡 面 很 複 雜 不 知 道 做 了 什 麼 事 情 以 後 這 些 點 就 分 成 兩 邊 所 以 你 的 distribution 就 變 成 這 個 樣 子 而 pdata 是 指 真 正 的 資 料 的 分 布 真 正 資 料 分 布 可 能 長 這 個 樣 子 它 分 兩 面 的 狀 況 是 更 極 端 的 左 邊 的 東 西 比 較 多 右 邊 的 東 西 比 較 少 那 你 期 待 左 邊 這 個 分 布 跟 右 邊 這 個 分 布 越 接 近 越 好 如 果 寫 成 式 子 的 話 你 可 以 寫 成 這 個 樣 子 你 這 邊 這 個 div of pg 跟 pdata 它 指 的 意 思 就 是 pg 跟 pdata 這 兩 個 distribution 之 間 的 divergence 那 divergence 這 邊 指 的 是 什 麼 意 思 呢 divergence 這 邊 指 的 意 思 就 是 這 兩 個 你 可 以 想 成 是 這 兩 個 distribution 之 間 的 某 種 距 離 如 果 這 個 divergence 越 大 就 代 表 這 兩 個 distribution 越 不 像 divergence 越 小 就 代 表 這 兩 個 distribution 越 相 近 divergence 這 就 是 衡 量 兩 個 的 distribution 相 似 度 的 一 個 major 然 後 呢 我 們 現 在 的 目 標 是 要 去 找 一 個 generator 那 所 謂 的 找 一 個 generator 實 際 上 骨 子 裡 做 的 事 情 是 找 一 個 generator 裡 面 的 參 數 找 一 組 generator 裡 面 的 參 數 就 generator 也 是 一 個 network 裡 面 有 一 大 堆 的 weight 跟 bias 找 一 組 generator 的 參 數 它 可 以 讓 我 們 產 生 出 來 的 pg 跟 pdata 之 間 的 divergence 越 小 越 好 我 要 找 的 就 是 這 樣 子 的 generator 這 邊 把 它 寫 作 g* 所 以 我 們 這 邊 要 做 的 事 情 跟 一 般 train network 其 實 非 常 地 像 我 們 第 一 堂 課 就 告 訴 你 說 我 們 定 義 了 loss function 找 一 組 參 數 minimize loss function 我 們 現 在 其 實 也 定 義 了 我 們 的 loss function 在 generation 這 個 問 題 裡 面 我 們 的 loss function 就 是 pg 跟 pdata 的 divergence 就 是 它 們 兩 個 之 間 的 距 離 它 們 兩 個 越 近 那 就 代 表 這 個 產 生 出 來 的 pg 跟 pdata 越 像 所 以 pg 跟 pdata 我 們 希 望 它 們 越 相 像 越 好 所 以 我 們 希 望 pg 跟 pdata 的 divergence 越 小 越 好 我 們 要 做 的 事 情 就 找 一 個 g 讓 divergence 變 得 最 小 但 是 我 們 這 邊 遇 到 一 個 困 難 的 問 題 怎 麼 樣 困 難 的 問 題 呢 這 個 loss 我 們 是 可 以 算 的 但 是 這 個 divergence 是 要 怎 麼 樣 算 呢 那 你 可 能 知 道 一 些 divergence 的 式 子 比 如 說 kl divergence 比 如 說 js divergence 這 些 divergence 用 在 這 種 continuous 的 distribution 上 面 你 要 做 一 個 很 複 雜 的 在 實 作 上 你 幾 乎 不 知 道 要 怎 麼 算 的 積 分 那 我 們 根 本 就 無 法 把 這 個 divergence 算 出 來 我 們 算 不 出 這 個 divergence 我 們 又 要 如 何 去 找 一 個 g 去 minimize 這 個 divergence 呢 這 個 就 是 gan 所 遇 到 的 問 題 這 就 是 我 們 在 train 這 一 種 generator 的 時 候 會 遇 到 的 問 題 而 gan 呢 是 一 個 很 神 奇 的 做 法 它 可 以 突 破 我 們 不 知 道 怎 麼 計 算 divergence 的 限 制 所 以 我 現 在 遇 到 的 問 題 就 是 不 知 道 怎 麼 計 算 divergence 而 gan 告 訴 我 們 就 是 gan 告 訴 我 們 的 就 是 只 要 你 知 道 怎 麼 從 pg 和 pdata 這 兩 個 distributions sample 東 西 出 來 就 有 辦 法 算 divergence 你 不 需 要 知 道 pg 跟 pdata 它 們 實 際 上 的 formulation 長 什 麼 樣 子 你 只 要 能 夠 sample 就 能 夠 算 divergence 而 pg 跟 pdata 是 可 以 sample 的 嗎 是 可 以 sample 的 怎 麼 從 真 正 的 data 裡 面 sample 出 東 西 來 呢 那 你 就 把 你 的 圖 庫 拿 出 來 從 圖 庫 裡 面 隨 機 產 生 隨 機 sample 一 些 圖 片 出 來 你 就 得 到 pdata 了 那 怎 麼 從 generator 裡 面 產 生 一 些 東 西 出 來 呢 那 你 就 把 你 的 generator 輸 入 這 個 normal 的 從 normal distribution sample 出 來 的 vector 丟 到 generator 裡 面 我 們 剛 才 說 過 說 你 這 邊 的 這 個 distribution 你 拿 來 sample 那 個 distribution 要 是 簡 單 的 要 是 你 有 辦 法 sample 的 所 以 我 們 選 normal distribution 式 子 我 們 是 知 道 的 是 有 辦 法 sample 的 我 們 從 normal distribution 裡 面 sample 一 堆 vector 出 來 丟 給 generator 讓 generator 產 生 一 堆 圖 片 出 來 那 這 些 圖 片 就 是 從 pg sample 出 來 的 結 果 所 以 我 們 有 辦 法 從 pg 做 sample 我 們 有 辦 法 從 pdata 做 sample 接 下 來 gan 這 一 整 個 系 列 的 work 就 是 要 告 訴 你 說 怎 麼 在 只 有 做 sample 的 前 提 之 下 我 根 本 不 知 道 pg 跟 pdata 實 際 上 完 整 的 formulation 長 什 麼 樣 子 在 只 能 做 sample 的 前 提 之 下 居 然 就 算 出 了 居 然 就 估 測 出 了 divergence 好 那 這 個 就 是 要 靠 discriminator 的 力 量 那 我 們 剛 才 講 過 說 discriminator 是 怎 麼 訓 練 出 來 的 呢 我 們 有 一 大 堆 的 real data 這 個 real data 就 是 從 pdata sample 出 來 的 結 果 我 們 有 一 大 堆 generated 的 data generated 的 data 就 可 以 看 作 是 從 pg sample 出 來 的 結 果 根 據 real 的 data 跟 generated 的 data 我 會 去 訓 練 一 個 discriminator 它 的 訓 練 的 目 標 是 看 到 real data 就 給 它 比 較 高 的 分 數 看 到 這 個 generated 的 data 就 給 它 比 較 低 的 分 數 我 們 剛 才 一 直 說 discriminator 訓 練 的 目 標 就 是 要 分 辨 好 的 圖 跟 不 好 的 圖 分 辨 真 的 圖 跟 生 成 的 圖 所 以 看 到 真 的 圖 給 它 高 分 看 到 生 成 的 圖 給 它 低 分 那 實 際 上 剛 才 怎 麼 樣 你 也 可 以 把 它 寫 成 式 子 把 它 當 做 是 一 個 optimization 的 問 題 這 個 optimization 的 問 題 是 這 樣 子 的 我 們 要 訓 練 一 個 discriminator 這 個 discriminator 可 以 去 maximize 某 一 個 function 我 們 這 邊 叫 做 objective function 就 我 們 要 maximize 的 東 西 我 們 會 叫 objective function 如 果 minimize 我 們 就 叫 它 loss function 我 們 現 在 要 找 一 個 d 它 可 以 maximize 這 個 objective function 這 個 objective function 長 什 麼 樣 子 呢 這 個 objective function 長 這 個 樣 子 我 們 有 一 堆 y 它 是 從 pdata 裡 面 sample 出 來 的 也 就 是 它 們 是 真 正 的 image 而 我 們 把 這 個 真 正 的 image 丟 到 d 裡 面 得 到 一 個 分 數 再 取 log 那 另 外 一 方 面 呢 我 們 有 一 堆 y 它 是 從 pg 從 generator 所 產 生 出 來 的 把 這 些 圖 片 也 丟 到 discriminator 裡 面 得 到 一 個 分 數 再 取 log 1 - d (y) 那 我 們 希 望 這 個 objective function v 越 大 越 好 我 們 希 望 v 越 大 越 好 意 味 著 我 們 希 望 這 邊 的 d (y) 越 大 越 好 我 們 希 望 y 如 果 是 從 pdata sample 出 來 的 它 就 要 越 大 越 好 我 們 希 望 說 如 果 y 是 從 這 個 pg sample 出 來 的 它 就 要 越 小 越 好 那 我 們 就 去 最 大 化 v 這 個 式 子 我 們 就 去 最 大 化 找 一 個 d 可 以 maximize 這 個 objective function 我 們 其 實 就 是 讓 d (y) 越 大 越 好 讓 這 邊 的 d (y) 也 就 是 機 器 generator 生 成 圖 片 的 值 越 小 越 好 discriminator output 的 值 越 小 越 好 那 這 件 事 情 呢 其 實 又 等 同 於 你 可 能 覺 得 沒 事 突 然 寫 出 這 個 式 子 有 點 奇 怪 但 你 不 一 定 要 把 這 個 objective function 寫 成 這 個 樣 子 它 完 全 可 以 有 其 他 的 寫 法 那 最 早 年 之 所 以 寫 成 這 個 樣 子 是 有 一 個 很 明 確 的 理 由 有 一 個 很 明 確 的 動 機 是 為 了 要 把 discriminator 跟 binary classification 跟 分 類 跟 二 元 的 分 類 扯 上 關 係 怎 麼 說 呢 事 實 上 這 個 objective function 它 就 是 cross entropy 乘 一 個 負 號 我 們 知 道 我 們 在 訓 練 一 個 classifier 的 時 候 我 們 就 是 要 minimize cross entropy 所 以 當 我 們 maximize 這 個 objective function maximize cross entropy 乘 一 個 負 號 的 時 候 其 實 等 同 於 minimize cross entropy 也 就 等 同 於 是 在 訓 練 一 個 也 就 是 等 同 於 是 在 訓 練 一 個 classifier 所 以 這 個 discriminator 真 的 做 的 事 情 如 果 discriminator 做 的 事 情 是 去 maximize 這 個 objective function 那 這 個 discriminator 其 實 可 以 當 做 是 一 個 classifier 它 做 的 事 情 就 是 把 藍 色 這 些 點 從 pdata sample 出 來 的 真 實 的 image 當 作 class 1 把 從 pg sample 出 來 的 這 些 假 的 image 當 作 class 2 有 兩 個 class 的 data 訓 練 一 個 binary 的 classifier 訓 練 完 就 等 同 於 是 解 了 這 一 個 optimization 的 問 題 那 這 邊 最 神 奇 的 地 方 是 以 下 這 句 話 這 一 個 式 子 這 個 紅 框 框 裡 面 的 數 值 它 跟 js divergence 有 關 那 事 實 上 有 趣 的 事 情 是 我 覺 得 最 原 始 的 gan 的 paper 它 的 發 想 可 能 真 的 是 從 binary classifier 來 的 一 開 始 是 把 discriminator 寫 成 binary 的 classifier 然 後 有 了 這 樣 的 objective function 然 後 再 經 過 一 番 推 導 以 後 這 個 objective function 它 的 maximum 就 是 你 找 到 一 個 d 可 以 讓 這 個 objective function 它 的 值 最 大 的 時 候 這 個 最 大 的 值 跟 js divergence 是 有 關 的 它 們 沒 有 完 全 一 模 一 樣 所 以 顯 然 一 開 始 並 不 是 針 對 js divergence 設 計 的 而 是 經 過 一 番 推 導 以 後 發 現 它 們 是 非 常 有 關 聯 的 那 至 於 實 際 上 的 推 導 過 程 你 可 以 參 見 原 始 ian j. goodfellow 寫 的 文 章 那 其 實 裡 面 的 推 導 過 程 我 覺 得 寫 得 算 是 蠻 清 楚 的 好 所 以 真 正 神 奇 的 地 方 就 是 這 一 個 objective function 的 最 大 值 它 跟 divergence 是 有 關 的 所 以 我 們 剛 才 說 我 們 不 知 道 怎 麼 算 divergence 沒 關 係 train 你 的 discriminator train 完 以 後 看 看 它 的 objective function 可 以 到 多 大 那 個 值 就 跟 divergence 有 關 好 那 這 邊 我 們 並 沒 有 把 證 明 拿 出 來 跟 大 家 講 了 但 是 我 們 還 是 可 以 從 直 觀 上 來 理 解 一 下 為 什 麼 這 個 objective function 的 值 會 跟 divergence 有 關 呢 那 這 個 直 觀 的 理 解 並 沒 有 很 困 難 因 為 你 可 以 想 想 看 假 設 pg 跟 pdata 它 的 divergence 很 小 也 就 pg 跟 pdata 很 像 它 們 差 距 沒 有 很 大 它 們 很 像 pg 跟 pdata sample 出 來 的 藍 色 的 星 星 跟 紅 色 的 星 星 它 們 是 混 在 一 起 的 那 個 時 候 對 discriminator 來 說 discriminator 就 是 在 train 一 個 binary 的 classifier 對 discriminator 來 說 既 然 這 兩 堆 資 料 是 混 在 一 起 的 那 就 很 難 分 開 這 個 問 題 很 難 所 以 既 然 這 個 問 題 很 難 你 在 解 這 個 optimization problem 的 時 候 你 就 沒 有 辦 法 讓 這 個 objective 的 值 非 常 地 大 所 以 這 個 objective 這 個 v 的 maximum 的 值 就 比 較 小 所 以 小 的 divergence 對 應 到 小 的 這 個 objective function 的 maximum 的 值 所 以 不 是 objective function 的 值 本 身 哦 是 objective function 在 窮 舉 說 discriminator 要 可 以 得 到 的 最 大 的 值 如 果 今 天 呢 你 的 兩 組 data 很 不 像 它 們 的 divergence 很 大 那 對 discriminator 而 言 就 可 以 輕 易 地 把 它 分 開 當 discriminator 可 以 輕 易 把 它 分 開 的 時 候 這 個 objective function 就 可 以 衝 得 很 大 那 所 以 當 你 有 大 的 divergence 的 時 候 這 個 objective function 的 maximum 的 值 就 可 以 很 大 當 然 這 邊 是 用 直 觀 的 方 法 來 跟 你 講 那 詳 細 的 證 明 請 參 見 gan 原 始 的 paper 裡 面 在 做 了 一 些 假 設 比 如 說 discriminator 的 capacity 是 無 窮 大 等 等 的 假 設 以 後 可 以 做 出 這 個 maximum 的 值 跟 js divergence 一 些 相 關 的 這 個 推 導 好 所 以 我 們 說 我 們 本 來 的 目 標 是 要 找 一 個 generator 去 minimize pg 跟 pdata 的 divergence 但 我 們 卡 在 不 知 道 怎 麼 計 算 divergence 那 我 們 現 在 要 知 道 我 們 只 要 訓 練 一 個 discriminator 訓 練 完 以 後 這 個 objective function 的 最 大 值 就 是 這 個 divergence 就 跟 這 個 divergence 有 關 那 我 們 何 不 就 把 紅 框 框 裡 面 這 一 項 跟 divergence 做 替 換 呢 我 們 何 不 就 把 divergence 替 換 成 紅 框 框 裡 面 這 一 項 呢 所 以 我 們 就 有 了 這 樣 一 個 objective function 這 個 objective function 乍 看 之 下 有 點 複 雜 它 有 一 個 minimum 又 有 一 個 maximum 所 以 你 不 小 心 就 會 腦 筋 轉 不 過 來 我 們 是 要 mini 我 們 是 要 找 一 個 generator 去 minimize 紅 色 框 框 裡 面 這 件 事 但 是 紅 框 框 裡 面 這 件 事 又 是 另 外 一 個 optimization problem 它 是 在 給 定 generator 的 情 況 下 去 找 一 個 discriminator 這 個 discriminator 可 以 讓 v 這 個 objective function 越 大 越 好 然 後 我 們 要 找 一 個 g 讓 紅 框 框 裡 面 的 值 最 小 這 個 g 就 是 我 們 要 的 generator 而 剛 才 我 們 講 的 這 個 generator 跟 discriminator 互 動 啊 互 相 欺 騙 這 個 過 程 其 實 就 是 想 解 這 一 個 有 minimize 又 有 maximize 這 個 min max min max 的 問 題 就 是 透 過 下 面 這 一 個 我 們 剛 才 講 的 gan 的 argument 來 解 的 那 至 於 實 際 上 為 什 麼 下 面 這 個 argument 可 以 解 這 個 問 題 你 也 可 以 參 見 原 始 gan 的 paper 那 講 到 這 邊 也 許 你 就 會 問 說 為 什 麼 是 js divergence 而 且 還 不 是 真 的 js divergence 是 跟 js divergence 相 關 而 已 怎 麼 不 用 真 正 的 js divergence 或 不 用 別 的 比 如 說 kl divergence 你 完 全 可 以 這 麼 做 你 只 要 改 了 那 個 objective function 你 就 可 以 量 各 式 各 樣 的 divergence 那 至 於 怎 麼 樣 設 計 objective function 得 到 不 同 的 divergence 那 有 一 篇 叫 做 f-gan 的 paper 裡 面 有 非 常 詳 細 的 證 明 它 有 很 多 的 table 告 訴 你 說 不 同 的 divergence 要 怎 麼 設 計 它 的 objective function 你 設 計 什 麼 樣 的 objective function 去 找 它 的 maximum value 就 會 變 成 什 麼 樣 的 divergence 在 這 篇 文 章 裡 面 都 有 詳 細 的 記 載 這 一 開 始 有 人 會 覺 得 說 gan 之 所 以 沒 有 很 好 train 也 許 是 因 為 就 是 我 們 沒 有 在 真 的 這 個 minimize js divergence 但 是 有 了 這 個 f-gan 這 個 paper 以 後 它 就 告 訴 你 說 我 們 有 辦 法 minimize js divergence 但 就 算 你 真 的 可 以 minimize js divergence 結 果 也 還 是 沒 有 很 好 gan 還 是 沒 有 很 好 train 好 所 以 gan 呢 是 以 不 好 train 而 聞 名 的 所 以 你 知 道 俗 話 就 說 no pain no gain 這 樣 子 好 所 以 這 顯 示 gan 呢 是 以 不 好 train 而 聞 名 的 所 以 接 下 來 我 們 就 要 講 一 些 gan 訓 練 的 小 技 巧 而 gan 有 什 麼 樣 訓 練 的 小 技 巧 呢 而 其 中 的 最 其 實 它 gan 訓 練 的 小 技 巧 非 常 非 常 多 那 我 想 了 很 久 以 後 我 們 只 挑 一 個 最 知 名 的 來 講 這 個 最 知 名 的 就 是 很 多 人 都 聽 過 是 不 是 沒 電 了 hello hello 好 換 一 個 麥 克 風 hello hello 好 這 個 最 知 名 的 就 是 很 多 人 都 聽 過 的 wgan 那 這 個 wgan 是 什 麼 呢 在 講 wgan 之 前 我 們 先 講 js divergence 有 什 麼 樣 的 問 題 在 最 早 的 gan 說 我 們 要 minimize 的 是 js divergence 那 選 擇 js divergence 的 時 候 會 有 什 麼 問 題 呢 好 在 想 js divergence 的 問 題 之 前 我 們 先 看 一 下 pg 跟 pdata 有 什 麼 樣 的 特 性 那 pg 跟 pdata 有 一 個 非 常 關 鍵 的 特 性 是 pg 跟 pdata 它 們 重 疊 的 部 分 往 往 非 常 少 怎 麼 說 呢 這 邊 有 兩 個 理 由 第 一 個 理 由 是 來 自 於 data 本 身 的 特 性 因 為 你 想 pg 跟 pdata 它 們 都 是 要 產 生 圖 片 的 那 圖 片 其 實 是 高 維 空 間 裡 面 的 一 個 低 維 的 manifold 怎 麼 知 道 圖 片 是 高 維 空 間 裡 面 低 維 的 manifold 呢 因 為 你 想 想 看 你 在 高 維 空 間 裡 面 隨 便 sample 一 個 點 它 通 常 都 沒 有 辦 法 構 成 一 個 二 次 元 人 物 的 頭 像 所 以 二 次 元 人 物 的 頭 像 它 的 分 布 啊 在 高 維 的 空 間 中 其 實 是 非 常 狹 窄 的 所 以 二 次 元 頭 像 的 分 布 這 個 圖 片 的 分 布 其 實 是 高 維 空 間 中 的 低 維 的 manifold 或 者 是 如 果 是 以 二 維 空 間 來 想 的 話 那 圖 片 的 分 布 可 能 就 是 二 維 空 間 的 一 條 線 二 維 空 間 中 多 數 的 點 都 不 是 圖 片 就 高 維 空 間 中 隨 便 sample 一 個 點 都 不 是 圖 片 只 有 非 常 小 的 範 圍 sample 出 來 它 會 是 圖 片 所 以 從 這 個 角 度 來 看 從 資 料 本 身 的 特 性 來 看 pg 跟 pdata 它 們 都 是 low dimensional 的 manifold 用 二 維 空 間 來 講 pg 跟 pdata 都 是 二 維 空 間 中 的 兩 條 直 線 而 二 維 空 間 中 的 兩 條 直 線 除 非 它 剛 好 重 合 不 然 它 們 相 交 的 範 圍 幾 乎 是 可 以 忽 略 的 這 是 第 一 個 理 由 那 也 許 有 人 說 啊 這 個 也 許 圖 片 根 本 就 不 是 什 麼 low dimensional 的 manifold 那 會 不 會 第 一 個 理 由 就 不 成 立 了 呢 那 我 給 你 第 二 個 理 由 第 二 個 理 由 是 我 們 是 從 來 都 不 知 道 pg 跟 pdata 長 什 麼 樣 子 我 們 對 pg 跟 pdata 它 的 分 布 的 理 解 其 實 來 自 於 sample 所 以 也 許 pg 跟 pdata 它 們 是 有 非 常 大 的 overlap 的 範 圍 但 是 我 們 實 際 上 在 了 解 這 個 pg 跟 pdata 在 計 算 它 們 的 divergence 的 時 候 我 們 是 從 pdata 裡 面 sample 一 些 點 出 來 從 pg 裡 面 sample 一 些 點 出 來 如 果 你 sample 的 點 不 夠 多 你 sample 的 點 不 夠 密 那 就 算 是 這 兩 個 divergence 實 際 上 這 兩 個 distribution 實 際 上 有 重 疊 但 是 假 設 你 sample 的 點 不 夠 多 對 discriminator 來 說 它 也 是 沒 有 重 疊 的 就 是 這 個 藍 色 的 分 布 跟 紅 色 的 分 布 明 明 是 有 重 疊 的 但 如 果 你 從 藍 色 分 布 sample 一 些 點 紅 色 分 布 sample 一 些 點 這 些 點 你 又 sample 得 不 夠 多 你 根 本 就 可 以 畫 一 條 楚 河 漢 界 把 紅 色 的 點 跟 藍 色 的 點 完 全 地 分 開 來 然 後 說 紅 色 的 點 它 的 分 布 就 是 在 這 個 楚 河 漢 界 的 右 邊 藍 色 的 點 就 在 左 邊 它 們 完 全 是 沒 有 任 何 衝 突 所 以 以 上 給 你 兩 個 理 由 試 圖 說 服 你 說 pg 跟 pdata 這 兩 個 分 布 它 們 重 疊 的 範 圍 是 非 常 小 的 而 幾 乎 沒 有 重 疊 這 件 事 情 對 於 js divergence 會 造 成 什 麼 問 題 呢 js divergence 有 個 特 性 是 兩 個 沒 有 重 疊 的 分 布 js divergence 算 出 來 就 永 遠 都 是 log2 不 管 這 兩 個 分 布 長 什 麼 樣 所 以 兩 個 分 布 只 要 沒 有 重 疊 算 出 來 就 一 定 是 log2 不 管 它 們 長 什 麼 樣 子 算 出 來 都 是 log2 所 以 舉 例 來 說 假 設 這 是 你 的 pdata 這 是 你 的 pg 它 們 都 假 設 它 們 都 是 一 條 直 線 然 後 中 間 有 很 長 的 距 離 你 算 它 們 的 js divergence 是 log2 假 設 你 的 pg 跟 pdata 其 實 蠻 接 近 的 那 中 間 的 間 隔 其 實 是 比 較 小 的 算 出 來 結 果 還 是 log2 除 非 你 的 pg 跟 pdata 有 重 合 不 然 這 個 pg 跟 pdata 只 要 它 們 是 兩 條 直 線 它 們 這 兩 條 直 線 沒 有 相 交 那 算 出 來 就 是 log2 算 出 來 這 個 case 算 出 來 是 log2 這 個 case 算 出 來 也 是 log2 那 但 是 明 明 這 個 case 就 比 這 個 case 好 中 間 這 個 case 中 間 這 個 generator 明 明 就 比 左 邊 這 個 generator 好 但 是 你 不 知 道 明 明 藍 色 的 線 就 跟 紅 色 的 線 比 較 近 但 是 從 js divergence 上 面 看 不 出 這 樣 子 的 現 象 那 既 然 從 js divergence 上 看 不 出 這 樣 的 現 象 你 在 training 的 時 候 你 根 本 就 沒 有 辦 法 把 這 樣 子 的 generator update 參 數 變 成 這 樣 子 的 generator 因 為 對 你 的 loss 來 說 對 你 的 目 標 來 說 這 兩 個 generator 是 一 樣 好 或 者 是 一 樣 糟 那 以 上 是 從 比 較 理 論 的 方 向 來 說 明 如 果 我 們 從 更 直 觀 的 實 際 操 作 的 角 度 來 說 明 你 會 發 現 當 你 是 用 js divergence 的 時 候 你 就 假 設 你 今 天 在 train 一 個 binary 的 classifier 去 分 辨 real 的 image 跟 generated image 你 會 發 現 實 際 上 你 通 常 train 完 以 後 正 確 率 幾 乎 都 是 100% 為 什 麼 因 為 你 sample 的 圖 片 根 本 就 沒 幾 張 對 你 的 discriminator 來 說 你 sample 256 張 real 的 圖 片 256 張 fake 的 圖 片 它 直 接 用 硬 背 的 都 可 以 把 這 兩 組 圖 片 分 開 知 道 說 誰 是 real 誰 是 fake 所 以 實 際 上 如 果 你 有 自 己 train 過 gan 的 話 你 會 發 現 如 果 你 用 binary 的 classifier train 下 去 你 會 發 現 你 幾 乎 每 次 train 完 你 的 classifier 以 後 也 就 你 train 完 你 的 discriminator 以 後 正 確 率 都 是 100% 我 們 本 來 會 期 待 說 這 個 discriminator 的 loss 也 許 代 表 了 某 些 事 情 這 個 binary classifier loss 也 許 代 表 某 些 事 情 這 個 loss 越 來 越 大 代 表 問 題 越 來 越 難 代 表 我 們 的 generated data 跟 real 的 data 越 來 越 接 近 但 實 際 上 你 在 實 際 操 作 的 時 候 你 根 本 觀 察 不 到 這 個 現 象 這 個 binary classifier 訓 練 完 的 loss 根 本 沒 有 什 麼 意 義 因 為 它 總 是 可 以 讓 它 的 正 確 率 變 到 100% 兩 組 image 都 是 sample 出 來 的 它 硬 背 都 可 以 得 到 100% 的 正 確 率 你 根 本 就 沒 有 辦 法 看 出 你 的 generator 有 沒 有 越 來 越 好 所 以 過 去 尤 其 是 在 還 沒 有 wgan 這 樣 的 技 術 在 我 們 還 用 binary classifier 當 作 discriminator 的 時 候 train gan 真 的 就 很 像 巫 術 黑 魔 法 你 根 本 就 不 知 道 你 train 的 時 候 有 沒 有 越 來 越 好 所 以 怎 麼 辦 呢 那 時 候 做 法 就 是 你 每 次 update 幾 次 generator 以 後 你 就 要 把 你 的 圖 片 print 出 來 看 然 後 你 就 要 一 邊 那 個 吃 飯 一 邊 看 那 個 圖 片 生 成 的 結 果 然 後 跑 一 跑 就 發 現 哇 壞 掉 了 然 後 咔 掉 重 做 這 樣 子 所 以 以 前 你 根 本 就 沒 有 不 像 我 們 在 train 一 般 的 network 的 時 候 你 有 個 loss function 然 後 那 個 loss 隨 著 訓 練 的 過 程 會 慢 慢 慢 慢 變 小 那 你 就 會 看 說 loss 慢 慢 變 小 你 就 放 心 知 道 說 你 的 network 有 在 train 但 會 不 會 overfitting 是 另 外 一 件 事 至 少 還 在 它 在 training data 上 有 越 來 越 好 但 是 對 gan 而 言 本 來 我 們 期 待 classifier 的 loss 可 以 提 供 一 些 資 訊 但 是 當 你 的 classifier 是 一 個 簡 單 一 般 的 binary classifier 的 時 候 它 訓 練 的 結 果 你 就 沒 有 任 何 資 訊 你 每 次 訓 練 出 來 正 確 率 都 是 100% 你 根 本 不 知 道 你 的 generator 有 沒 有 越 來 越 好 變 成 你 只 能 夠 用 人 眼 看 用 人 眼 守 在 電 腦 前 面 看 發 現 結 果 不 好 咔 掉 重 新 用 一 組 hyperparameter 重 新 調 一 下 network 加 工 重 做 所 以 過 去 訓 練 gan 是 有 點 辛 苦 的 那 既 然 是 js divergence 的 問 題 於 是 有 人 就 想 說 那 會 不 會 換 一 個 衡 量 兩 個 distribution 的 相 似 程 度 的 方 式 換 一 種 divergence 就 可 以 解 決 這 個 問 題 了 呢 於 是 就 有 了 這 個 wasserstein 或 使 用 wasserstein distance 的 想 法 好 那 wasserstein distance 這 邊 有 一 個 冷 這 邊 有 一 個 冷 知 識 就 是 這 個 w 其 實 這 邊 是 唸 v 不 是 唸 不 是 發 w 的 音 不 是 唸 wasserstein distance 是 唸 wasserstein distance 好 那 這 個 wasserstein distance 是 怎 麼 計 算 的 呢 wasserstein distance 的 想 法 是 這 個 樣 子 假 設 你 有 兩 個 distribution 一 個 distribution 我 們 叫 它 p 另 外 一 個 distribution 我 們 叫 它 q wasserstein distance 它 計 算 的 方 法 就 是 想 像 你 在 開 一 台 推 土 機 推 土 機 的 英 文 叫 做 earth mover 想 像 你 在 開 一 台 推 土 機 那 你 把 p 想 成 是 一 堆 土 把 q 想 成 是 你 要 把 土 堆 放 的 目 的 地 那 這 個 推 土 機 把 p 這 邊 的 土 挪 到 q 所 移 動 的 平 均 距 離 就 是 wasserstein distance 在 這 個 例 子 裡 面 我 們 假 設 p 都 集 中 在 這 個 點 q 都 集 中 在 這 個 點 對 推 土 機 而 言 假 設 它 要 把 p 這 邊 的 土 挪 到 q 這 邊 那 它 要 平 均 走 的 距 離 就 是 d 所 以 在 這 個 例 子 裡 面 假 設 p 集 中 在 一 個 點 q 集 中 在 一 個 點 這 兩 個 點 之 間 的 距 離 是 d 的 話 那 p 跟 q 的 wasserstein distance 就 是 d 那 因 為 在 講 這 個 wasserstein distance 的 時 候 你 要 想 像 有 一 個 earth mover 有 一 個 推 土 機 在 推 土 所 以 其 實 wasserstein distance 又 叫 earth mover distance 但 是 如 果 是 更 複 雜 的 distribution 你 要 算 wasserstein distance 就 有 點 困 難 了 怎 麼 說 呢 假 設 這 是 你 的 p 假 設 這 是 你 的 q 假 設 你 開 了 一 個 推 土 機 想 要 把 p 把 它 重 新 塑 造 一 下 形 狀 讓 p 的 形 狀 跟 q 比 較 接 近 一 點 那 有 什 麼 樣 的 做 法 呢 你 會 發 現 說 你 可 能 的 moving plans 就 是 你 把 q 把 p 重 新 塑 造 成 q 的 方 法 有 無 窮 多 種 你 可 以 說 我 把 這 邊 的 土 搬 到 這 裡 來 我 把 這 邊 的 土 搬 到 這 裡 來 把 p 變 成 q 但 你 也 可 以 捨 近 求 遠 說 我 把 這 裡 的 土 搬 到 這 裡 來 把 這 裡 的 土 搬 到 這 裡 來 捨 近 求 遠 一 樣 還 是 可 以 把 p 變 成 q 所 以 當 我 們 考 慮 比 較 複 雜 的 distribution 的 時 候 把 q 把 p 變 成 q 的 方 法 是 有 非 常 非 常 多 不 同 的 方 法 你 有 各 式 各 樣 不 同 的 moiving plan 用 不 同 的 moving plan 你 算 出 來 的 距 離 你 推 土 機 平 均 走 的 距 離 就 不 一 樣 在 左 邊 這 個 例 子 裡 面 推 土 機 平 均 走 的 距 離 比 較 少 在 右 邊 這 個 例 子 裡 面 因 為 捨 近 求 遠 推 土 機 平 均 走 的 距 離 比 較 大 那 難 道 這 個 p 跟 q 它 們 之 間 的 wasserstein distance 會 根 據 你 的 不 同 的 方 法 不 同 的 這 個 推 土 機 行 進 的 方 法 就 算 出 不 同 的 值 嗎 為 了 讓 wasserstein distance 只 有 一 個 值 所 以 這 邊 wasserstein distance 的 定 義 是 窮 舉 所 有 的 moving plans 然 後 看 哪 一 個 推 土 的 方 法 哪 一 個 moving 的 計 畫 哪 一 個 推 土 的 計 畫 可 以 讓 平 均 的 距 離 最 小 那 個 最 小 的 值 才 是 wasserstein distance 所 以 會 窮 舉 所 有 把 p 變 成 q 的 方 法 然 後 看 哪 一 個 推 土 的 平 均 距 離 最 短 那 選 最 短 的 那 個 距 離 當 作 是 wasserstein distance 所 以 其 實 要 計 算 wasserstein distance 是 挺 麻 煩 的 你 會 發 現 說 光 我 只 是 要 計 算 一 個 distance 我 居 然 還 要 解 一 個 optimization 的 問 題 解 出 這 個 optimization 的 問 題 才 能 算 wasserstein distance 好 那 我 們 先 不 講 怎 麼 計 算 wasserstein distance 這 件 事 我 們 先 來 講 假 設 我 們 能 夠 計 算 wasserstein distance 的 話 它 可 以 帶 給 我 們 什 麼 樣 的 好 處 呢 那 假 設 pg 跟 pdata 它 們 的 距 離 是 d0 那 在 這 個 例 子 裡 面 wasserstein distance 算 出 來 就 是 d0 在 這 個 例 子 裡 面 pg 跟 pdata 它 們 之 間 的 距 離 是 d1 那 wasserstein distance 算 出 來 的 距 離 就 是 d1 那 假 設 d1 比 較 小 d0 比 較 大 那 算 wasserstein distance 的 時 候 這 個 case 的 wasserstein distance 就 比 較 小 這 個 case 的 wasserstein distance 就 比 較 大 所 以 我 們 就 可 以 知 道 說 由 左 向 右 的 時 候 wasserstein distance 是 越 來 越 小 的 所 以 如 果 你 觀 察 wasserstein distance 的 話 會 知 道 說 從 左 到 右 我 們 的 generator 越 來 越 進 步 但 是 如 果 你 觀 察 discriminator 你 會 發 現 你 觀 察 不 到 任 何 東 西 對 discriminator 而 言 這 邊 每 一 個 case 算 出 來 的 js divergence 都 是 一 樣 都 是 一 樣 好 或 一 樣 差 但 是 如 果 換 成 wasserstein distance 由 左 向 右 的 時 候 我 們 會 知 道 說 我 們 的 discriminator 做 我 們 的 generator 做 得 越 來 越 好 所 以 我 們 換 一 個 計 算 divergence 的 方 式 我 們 就 可 以 解 決 js divergence 有 可 能 帶 來 的 問 題 這 讓 我 想 到 什 麼 呢 這 又 讓 我 想 到 一 個 演 化 的 例 子 這 是 眼 睛 的 生 成 右 邊 這 個 是 人 類 的 眼 睛 人 類 的 眼 睛 是 非 常 地 複 雜 的 那 有 一 些 生 物 它 有 非 常 原 始 的 眼 睛 比 如 說 有 一 些 細 胞 具 備 有 感 光 的 能 力 這 可 以 看 做 是 最 原 始 的 眼 睛 但 是 這 些 最 原 始 的 眼 睛 怎 麼 變 成 最 複 雜 的 眼 睛 呢 這 對 人 類 來 說 其 實 覺 得 非 常 難 想 像 這 個 這 麼 簡 單 只 是 一 些 感 光 的 細 胞 在 皮 膚 上 經 過 突 變 產 生 一 些 感 光 的 細 胞 聽 起 來 像 是 一 個 合 理 的 但 是 天 擇 突 變 怎 麼 可 能 產 生 這 麼 複 雜 的 器 官 呢 怎 麼 產 生 眼 睛 這 麼 精 巧 的 器 官 呢 那 如 果 你 直 接 覺 得 說 從 這 個 地 方 就 可 以 一 步 跳 到 這 個 地 方 那 根 本 不 可 能 發 生 但 是 中 間 其 實 是 有 很 多 連 續 的 步 驟 從 感 光 細 胞 到 眼 睛 中 間 其 實 是 有 連 續 的 步 驟 的 舉 例 來 說 感 光 的 細 胞 可 能 會 出 現 在 一 個 比 較 凹 陷 的 地 方 皮 膚 凹 陷 下 去 這 樣 感 光 細 胞 可 以 接 受 來 自 不 同 方 向 的 光 源 然 後 後 來 覺 得 說 乾 脆 把 凹 陷 的 地 方 蓋 起 來 後 來 覺 得 蓋 起 來 的 地 方 裡 面 可 以 放 一 些 液 體 然 後 最 後 就 變 成 了 人 的 眼 睛 而 從 這 邊 跳 到 這 邊 這 一 步 非 常 大 但 是 這 邊 每 一 小 步 都 可 以 讓 一 個 生 命 存 活 的 機 率 變 大 都 可 以 讓 生 命 繁 衍 下 去 的 機 率 變 高 既 然 這 邊 每 一 個 步 驟 都 可 以 讓 生 命 繁 衍 的 機 率 變 高 那 生 命 就 可 以 從 左 邊 一 直 演 化 到 右 邊 最 終 產 生 複 雜 的 器 官 而 我 覺 得 對 於 當 你 使 用 wgan 當 你 使 用 這 個 wasserstein distance 來 衡 量 你 的 divergence 的 時 候 其 實 就 製 造 了 類 似 的 效 果 本 來 pg0 跟 pdata 非 常 地 遙 遠 你 要 它 一 步 從 這 裡 跑 到 這 裡 一 步 從 這 裡 跑 到 這 裡 讓 這 個 pg0 跟 pdata 直 接 align 在 一 起 是 不 可 能 的 可 能 非 常 地 困 難 對 js divergence 而 言 它 需 要 做 到 直 接 從 這 一 步 跳 到 這 一 步 它 的 js divergence 的 loss 才 會 有 差 異 但 是 對 w distance 而 言 你 只 要 每 次 有 稍 微 把 pg 往 pdata 挪 近 一 點 w distance 就 會 有 變 化 w distance 有 變 化 你 才 有 辦 法 train 你 的 generator 去 minimize w distance 所 以 這 就 是 為 什 麼 當 我 們 從 js divergence 換 成 wasserstein distance 的 時 候 可 以 帶 來 的 好 處 好 那 wgan 實 際 上 就 是 用 當 你 用 wasserstein distance 來 取 代 js divergence 的 時 候 這 個 gan 就 叫 做 wgan 那 接 下 來 你 會 遇 到 的 問 題 就 是 wasserstein distance 是 要 怎 麼 算 呢 pdata 跟 pg 它 的 wasserstein distance 要 怎 麼 計 算 呢 wasserstein distance 是 一 個 非 常 複 雜 的 東 西 我 光 要 算 個 wasserstein distance 還 要 解 一 個 optimization 的 問 題 實 際 上 要 怎 麼 計 算 那 這 邊 就 不 講 過 程 直 接 告 訴 你 結 果 解 下 面 這 個 opimilazion 的 problem 解 出 來 以 後 你 得 到 的 值 就 是 wasserstein distance 就 是 pdata 跟 pg 的 wasserstein distance 那 這 邊 我 發 現 我 犯 了 一 個 小 小 的 錯 誤 是 什 麼 樣 小 小 的 錯 誤 呢 就 是 這 邊 的 x 可 能 都 把 它 改 成 y 會 跟 前 面 的 投 影 片 比 較 一 致 所 以 這 邊 的 x 在 前 面 的 投 影 片 裡 面 其 實 都 是 y 它 們 指 的 都 是 一 張 圖 片 而 不 是 它 們 指 的 都 是 network 的 輸 出 而 不 是 network 的 輸 入 好 那 這 個 式 子 裡 面 有 什 麼 樣 的 東 西 呢 我 們 就 觀 察 一 下 這 個 式 子 這 個 式 子 裡 面 有 說 x 如 果 是 從 pdata 來 的 那 我 們 要 計 算 它 的 ex 的 期 望 值 x 如 果 是 從 pg 來 的 我 們 計 算 它 的 d(x) 的 期 望 值 但 是 前 面 乘 上 一 個 負 號 所 以 如 果 你 要 maximum 這 個 objective function 你 會 達 成 什 麼 樣 的 效 果 你 會 達 成 如 果 x 是 從 pdata sample 出 來 的 d(x) 就 discriminator 的 output 要 越 大 越 好 如 果 x 是 從 pg 從 generator sample 出 來 的 那 d(x) 也 就 discriminator 的 output 應 該 要 越 小 越 好 但 是 這 邊 還 有 另 外 一 個 限 制 它 不 是 光 叫 你 把 這 裡 括 號 大 括 號 裡 面 的 值 變 大 就 好 還 有 一 個 限 制 是 d 不 能 夠 是 一 個 隨 便 的 function d 必 須 要 是 一 個 1-lipschitz 的 function 可 能 會 問 說 1-lipschitz 是 什 麼 東 西 呢 如 果 你 不 知 道 是 什 麼 的 話 也 沒 有 關 係 我 們 這 邊 你 就 想 成 d 必 須 要 是 一 個 足 夠 平 滑 的 function 它 不 可 以 是 變 動 很 劇 烈 的 function 它 必 須 要 是 一 個 足 夠 平 滑 的 function 那 為 什 麼 足 夠 平 滑 這 件 事 情 是 非 常 重 要 的 呢 我 們 可 以 從 直 觀 來 理 解 它 假 設 這 個 是 真 正 的 資 料 的 分 布 這 是 generated 的 資 料 的 分 布 如 果 我 們 沒 有 這 個 限 制 只 看 大 括 號 裡 面 的 值 的 話 大 括 號 裡 面 的 目 標 是 要 這 些 真 正 的 值 它 的 d(x) 越 大 越 好 那 要 讓 generated 的 值 它 的 d(x) 越 小 越 好 如 果 你 沒 有 做 任 何 限 制 只 單 純 要 這 邊 的 值 越 大 越 好 這 邊 的 值 越 小 越 好 在 藍 色 的 點 跟 綠 色 的 點 也 就 是 真 正 的 image 跟 generated 的 image 沒 有 任 何 重 疊 的 情 況 下 你 的 discriminator 會 做 什 麼 它 會 給 real 的 image 無 限 大 的 正 值 給 generated 的 image 無 限 大 的 負 值 所 以 你 這 個 training 根 本 就 沒 有 辦 法 收 斂 而 且 你 會 發 現 說 只 要 這 兩 堆 data 沒 有 重 疊 你 算 出 來 的 值 都 是 無 限 大 你 算 出 來 的 這 個 maximum 值 都 是 無 限 大 這 顯 然 不 是 我 們 要 的 這 不 就 跟 js divergence 的 問 題 一 模 一 樣 嗎 所 以 這 邊 你 需 要 加 上 這 個 限 制 其 實 你 要 加 上 這 個 限 制 以 後 你 這 個 maximum 的 值 才 會 是 wasserstein distance 才 是 做 wgan 好 那 為 什 麼 加 上 這 個 限 制 就 可 以 解 決 剛 才 的 問 題 呢 因 為 這 個 限 制 是 要 求 discriminator 不 可 以 太 變 化 劇 烈 它 必 須 要 夠 平 滑 那 今 天 如 果 你 要 求 你 的 discriminator 夠 平 滑 的 時 候 假 設 real data 跟 generated data 它 們 距 離 比 較 近 那 你 就 沒 有 辦 法 讓 real 的 data 值 非 常 大 然 後 generated 的 值 非 常 小 因 為 如 果 你 讓 real 的 值 非 常 大 generated 的 值 非 常 小 它 們 中 間 的 差 距 很 大 那 這 一 個 discriminator 變 化 就 很 劇 烈 它 就 不 平 滑 了 它 就 不 是 1-lipschitz 那 為 了 要 是 1-lipschitz 這 邊 的 值 沒 辦 法 很 大 這 邊 的 值 沒 辦 法 很 小 讓 discrimination 必 須 足 夠 平 滑 直 覺 發 現 說 如 果 real 跟 generated 的 data 差 距 離 很 遠 那 它 們 的 值 就 可 以 差 很 多 這 邊 算 出 來 的 值 就 會 比 較 大 你 的 wasserstein distance 就 比 較 大 如 果 real 跟 generated 很 近 就 算 它 們 沒 有 重 合 因 為 有 了 這 一 個 限 制 有 了 這 一 個 寫 在 max 下 面 的 1-lipschitz function 的 限 制 那 你 就 發 現 說 它 們 其 實 不 會 真 的 都 跑 到 無 限 大 它 們 的 距 離 因 為 有 1-lipschitz function 的 限 制 所 以 real data 的 值 跟 generated data 的 值 就 沒 有 辦 法 差 很 多 那 你 算 出 來 的 wasserstein distance 就 會 比 較 小 好 那 接 下 來 的 問 題 就 是 怎 麼 做 到 這 個 限 制 呢 怎 麼 確 保 discriminator 一 定 符 合 1-lipschitz function 的 限 制 呢 最 早 剛 提 出 wgan 的 時 候 其 實 沒 有 什 麼 好 想 法 只 知 道 寫 出 了 這 個 式 子 那 要 怎 麼 真 的 解 這 個 式 子 呢 有 點 困 難 所 以 最 早 的 一 篇 wgan 的 paper 最 早 使 用 wasserstein 的 那 一 篇 paper 它 說 了 它 做 了 一 個 比 較 rough 比 較 粗 糙 的 處 理 的 方 法 它 是 說 我 就 train 一 個 network 那 train network 的 時 候 如 果 我 training 的 那 個 參 數 我 就 要 求 它 bound 在 c 跟 -c 之 間 如 果 超 過 c 就 gradient descent update 以 後 超 過 c 就 設 為 c gradient descent update 以 後 小 於 -c 就 直 接 設 為 -c 那 其 實 這 個 方 法 並 不 一 定 真 的 能 夠 讓 discriminator 變 成 1-lipschitz function 那 你 可 以 想 像 說 這 個 方 法 也 許 真 的 可 以 讓 我 們 的 discriminator 比 較 平 滑 但 它 並 沒 有 真 的 去 解 這 個 optimization 的 problem 它 並 沒 有 真 的 讓 discriminator 符 合 這 個 限 制 所 以 接 下 來 就 有 其 它 的 想 法 有 一 個 想 法 叫 做 gradient penalty gradient penalty 是 出 自 improved wgan 這 篇 paper 那 improve wgan 這 邊 paper 是 說 假 設 這 個 是 你 的 real data 的 分 布 這 個 是 你 的 這 個 fake data 的 分 布 那 我 在 real data 這 邊 取 一 個 sample fake data 這 邊 取 一 個 sample 兩 點 連 線 中 間 再 取 一 個 sample 我 要 求 這 個 點 它 的 gradient 要 接 近 1 那 你 可 能 覺 得 說 這 個 不 知 道 不 知 道 在 說 些 什 麼 這 樣 這 件 事 情 的 關 係 跟 這 個 限 制 的 關 係 到 底 是 什 麼 呢 那 就 詳 見 improved wgan 的 paper 那 其 實 我 覺 得 你 現 在 也 不 一 定 要 真 的 非 常 較 真 說 這 件 事 情 gradient penalty 跟 這 個 限 制 之 間 的 關 係 因 為 其 實 有 更 多 其 它 的 方 法 真 的 可 以 去 解 這 個 問 題 那 其 實 後 來 improved wgan 之 後 還 有 什 麼 improved 的 improved wgan 真 的 有 這 篇 paper 它 就 是 把 這 個 限 制 再 稍 微 改 一 改 有 另 外 一 篇 paper 就 叫 improved the improved wgan 那 今 天 其 實 你 有 一 個 方 法 真 的 把 d 限 制 讓 它 是 1-lipschitz function 這 個 叫 做 spectral normalization 那 我 就 把 它 的 論 文 放 在 這 邊 給 大 家 參 考 那 如 果 你 要 train 真 的 非 常 好 的 gan 你 可 能 會 需 要 用 到 spectral normalizaion 
Just now, I used a bunch of metaphors And then explained to you how GAN works And also practically told you How the operation of GAN is carried out So, what comes next is We're going to talk about the theoretical part a little Discuss some elements that won't be covered in farm literature To let you know in reality Why such operations of GAN are conducted And why there's the interaction between the Generator and the Discriminator Allowing our Generator to produce images that resemble real human faces What exactly the interactions behind this are doing what exactly is happening Let's first clarify what exactly is our training goal today Did you know that when we train Networks you need to set a Loss Function After setting, you use Gradient Descent to adjust your parameters to minimize that Loss Function and that's it What exactly are we trying to minimize or maximize in this generation's problem? What exactly should we minimize? Or what should we maximize? What are those things? We need to figure these out So we can proceed with the next steps Okay, inside the Generator What are we exactly trying to minimize? Or, what should we maximize? The thing we want to minimize is like this We have a Generator Give it a bunch of Vectors Give it something sampled from a Normal Distribution After inputting these into the Generator It will generate a more complex Distribution This complex Distribution We call it PG Then we have a ton of Data This is the real Data The real Data forms another Distribution It's called Pdata We expect the closer PG is to Pdata, the better Okay, if you can't imagine this all at once If you don't understand what this PG-Pdata thing is We are going to explain it using a one-dimensional situation We assume that the Input of the Generator is a one-dimensional vector The Output of the Generator is also a one-dimensional vector Our real Data is also a one-dimensional vector Then our Normal Distribution looks like this No problem After throwing it into the Generator, each point here, suppose you input five points, each point there, its position will change, then you will create a new Distribution, perhaps originally everyone was concentrated in the middle, through this Generator, through a very complex network, after doing something unknown. These points are divided into two sides So your Distribution becomes like this And Pdata refers to the distribution of the actual data The real data distribution might look like this The situation of it being divided into two sides is more extreme There are more things on the left There are fewer things on the right You would expect the distribution on the left to be closer to the distribution on the right The closer, the better If put into an equation You can write it like this This Div Of PG and Pdata here What it means is PG and Pdata Divergence between these two Distributions What does Divergence mean here What Divergence means here is You can think of these two as Some kind of distance between these two Distributions If this Divergence is larger It means these two Distributions are less alike The smaller the divergence means these two distributions are closer Divergence is a measure of the similarity of two distributions And now, our goal is to find a generator The so-called finding a generator the thing we are actually doing is finding the parameters in a generator finding a set of parameters in a generator The Generator is also a network There are a bunch of weights and biases Find a set of parameters for the Generator It can generate PG and Pdata for us The smaller the Divergence, the better What I'm looking for is exactly this type of Generator Here it's written as G* So what we need to do here It's very similar to a typical Train Network We told you in the first lesson that We have defined a Loss Function Find a set of parameters to Minimize the Loss Function We've actually defined our Loss Function now In the problem of Generation Our loss function That is the Divergence of PG and Pdata Is the distance between the two The closer they get That means the PG generated is more similar to Pdata So, PG and Pdata We hope the more they resemble, the better So, we hope for PG and Pdata The smaller the Divergence, the better What we need to do is find a G To make the Divergence as small as possible But we've encountered a difficult problem here What kind of difficult problem is it This Loss We are able to calculate it But how is this divergence calculated? Perhaps, you know some Divergence formulas. For example, KL Divergence For instance, JS Divergence These divergences are used in such continuous On the Distribution, You need to create something quite complicated In implementation, you hardly know how to calculate the integral We can't calculate this Divergence at all We can't calculate this Divergence How are we supposed to find a G How to minimize this Divergence This is the problem encountered by GAN This is what we do in the Train process Problems we encounter when using the Generator As for GAN Is a very magical approach It can break through We don't know how to calculate the limitations of Divergence So the problem I'm encountering now is Don't know how to calculate Divergence And what GAN tells us is What GAN tells us is As long as you know how to extract from PG and Pdata These two Distributions Sample things Then you can calculate the Divergence You don't need to know PG and Pdata What does their actual Formulation look like As long as you can sample, You can calculate the Divergence And can PG and Pdata be sampled? They can be sampled How to calculate from the real data When we sample something Then you bring out your photo library Randomly generate from the gallery Randomly sample some images. You get Pdata How can we get from inside the Generator Produce some things Then you exercise your Generator Enter this Normal The vector that comes out of the Normal Distribution Sample Throw it into the Generator As we previously mentioned This here is your Distribution You use it to sample the distribution If it's simple if you can sample it, So, we chose Normal Distribution We know the formula It's possible to sample We are coming from the Normal Distribution Sample a bunch of Vectors and give them to the Generator Let the Generator produce a bunch of pictures Then these images are the results of PG Sample We have a way to perform sampling from PG We can sample from Pdata Next The entire GAN series of work Mainly to tell you that How to, under the premise of merely sampling, I have no clue about PG and Pdata What does the complete Formulation look like in reality? Given the premise that we can only perform sampling Even calculated out It has actually estimated the Divergence Okay, so this relies on the power of the Discriminator As we just mentioned, the Discriminator How is it trained? We have a lot of Real Data This real data is the result of sampling from Pdata We have a large amount of generated data Data generated It can be seen as the result from the PG Sample Based on the Real Data and the Generated Data I'll train a Discriminator Its training goal It's about seeing the Real Data Give it a higher score Looking at this Generated Data Give it a lower score We have been talking about this just now The goal of training the Discriminator The goal is to distinguish between good and not so good images Distinguishing between real images and generated images So when you see a true image, give it a high score Giving a low score to the generated image So how was it just now in reality You can also write it as a formula Treat it as an optimization problem This is how the problem of optimization is like We need to train a Discriminator This Discriminator can be maximized A certain Function We call this the Objective Function What we want to maximize We call it the Objective Function If we Minimize it, we call it the Loss Function We are now looking for a D It can maximize this Objective Function What does this objective function look like? This is what the Objective Function looks like We have a ton of Y It is Sampled from Pdata It means they are the real images And we throw this real image into D Get a score and take a Log On the other hand We have a bunch of Y It is generated from PG, from the Generator Throw these images into the Discriminator as well We get a score Then take Log 1 - D (Y) We hope for this Objective Function V The bigger, the better We hope the larger V is, the better It means we hope that the D (Y) here is as large as possible We hope that if Y is sampled from Pdata The bigger it is, the better We hope that if Y is from This comes from a PG sample The smaller, the better Then we go to maximize the formula V We will maximize it Find a D that can be maximized This Objective Function We are actually trying to make D (Y) as large as possible Makes D (Y), the machine on this side The smaller the value generated by the Generator for images, the better The smaller the value of the Discriminator Output, the better What about this matter, then? Actually equals to You might find it strange to suddenly write this formula But you don't necessarily need to use this Objective Function It appears as such It could have been written differently Why it was written like this in the earliest years There is a clearly justified reason There is a very clear motive It's to get the Discriminator Similar to Binary Classification And classification Associated with binary classification How should I put it In fact, this Objective Function It is the Cross Entropy multiplied by a negative sign We know when we are training a classifier We just need to minimize cross entropy So when we maximize This Objective Function When maximizing cross entropy and multiplied by a negative sign It is actually equivalent to minimizing cross entropy Which is equivalent to training a It is like training a Classifier So, what the Discriminator really does, is If the Discriminator does something Is to maximize this Objective Function This discriminator It can actually be considered as a Classifier What it does is take these blue points Real Images sampled from Pdata Considered as Class 1 Get the fake Image samples from PG Sample Considered as Class 2 There are data from two classes Train a binary classifier After training, it's like Solved this optimization problem The most magical part here is the following sentence This formula The values inside this red box It's related to JS Divergence The interesting thing is, in fact In my opinion, the original GAN paper... The idea might really come from Binary Classifier Initially, the Discriminator was used Writing a Binary Classifier And then we have this Objective Function After squeezing through a series of derivations This Objective Function Its maximum It's you finding a D This can make the Objective Function When its value is at its maximum This maximum value is related to JS Divergence They are not exactly the same So obviously at the beginning It's not specifically designed for JS Divergence But after some derivation Discover that they are strongly related As for the actual derivation process You can refer to the original article written by Ian J. Goodfellow Actually, the derivation process inside I think it's written pretty clear So, the really miraculous place is The maximum value of this Objective Function It is related to Divergence As we just said We don't know how to calculate Divergence No problem Train your Discriminator After it's trained See how high its Objective Function can go The value is related to Divergence Well, we did not take the proof out here I told everyone But we can still understand it intuitively Why the value of this Objective Function It's associated with Divergence So, this intuitive understanding is not very difficult. Because you can think about it Assume PG and Pdata Its Divergence is very small Namely, PG and Pdata seem similar The difference between them is not that significant They are similar to the samples produced by PG and Pdata The blue star and the red star They are mixed together At that time for the Discriminator Discriminator is being trained Binary Classifier For the Discriminator Considering that these two sets of data are mixed together It will then be difficult to separate This problem is difficult So since this problem is difficult When you solve this optimization problem You will not be able to make the value of the Objective very large So this Objective, this V of The value of Maximum is relatively small So, minor divergence Corresponding to the small objective function The maximum value So it's not the value of the Objective Function itself This is about the Objective Function during enumeration The maximum value that the Discriminator could get If today Your two sets of data are very different Their Divergence is considerable For the Discriminator You can easily separate them When the Discriminator can easily separate it This Objective Function can surge very high So, when you have a big Divergence The maximum value of this Objective Function The possibility is huge Of course, this is explained in an intuitive way here For the detailed proof, please refer to the original GAN paper Some assumptions have been made inside For instance, the Capacity of the Discriminator is infinite After such assumptions We can achieve this maximum value And some derivations related to JS Divergence So, we say Our original goal was to find a Generator To minimize the divergence between PG and Pdata But we are stuck not knowing how to calculate the Divergence Now, we need to know We just need to train a Discriminator After the training is complete The maximum value of this Objective Function Is this Divergence It's related to this Divergence Why don't we just take the item in the red box Why substitute it with Divergence? Why don't we just take the Divergence Replace it with this item in the red box So, we have such an Objective Function This Objective Function seems complicated at first glance It has a Minimum And there's a maximum value, So if you're not careful, you'll end up confused We are going to Mini What we need is a Generator to minimize the thing inside the red box But the thing inside the red frame This is another optimization problem It is under the condition of a given Generator Find a Discriminator This is the Discriminator The higher the V, this Objective Function, the better And we need to find a G Trying to minimize the value within the red frame This G is the Generator we want And what we just talked about, this Generator and Discriminator Interaction, the process of deceiving each other In fact, we want to solve the one that involves Minimization Maximize this Min Max too, The Min Max issue It's via the following one The argument of GAN we just discussed In reality Why the argument below can solve this problem You can also refer to the original GAN Paper Speaking up to this point Perhaps you may ask Why is it JS Divergence? And it's not really JS Divergence It's related to JS Divergence. Why not use the real JS Divergence? Or without anything else Like the KL Divergence You can definitely do this You just need to alter the Objective Function You can measure all sorts of Divergences Then, how to design Objective Function Obtaining different divergences There is a Paper called f-GAN, There is very detailed evidence It has many Tables telling you different divergences, How to design its Objective Function What kind of Objective Function you design Look for its Maximum Value What kind of Divergence will it become It is all detailed in this article Some people might think at the beginning The reason why GAN is not well trained Maybe it's because It's like we're not really This is to minimize JS Divergence But after the introduction of this f-GAN paper It tells you We have the ability to minimize JS Divergence But even if you really can minimize JS divergence The result is still not very good GAN is still not very well trained Okay, so what about GAN? It is infamous for its difficulty in training So you know the saying No pain, no gain Well, so this shows GAN is Is famous for being difficult to train So next, we're going to discuss some Small tricks of GAN training So, what are some training tips for GAN? And the utmost In fact, there are many, many small tricks for training GAN After a lot of thought We just choose the most well-known one to talk about This is the most well-known one that many people have heard of Is it out of battery Hello Hello Okay, switch to another microphone Hello Hello Okay, this is the most famous It's the well-known WGAN that many people have heard of So what is this WGAN? Before talking about WGAN Firstly, let's talk about the problems with JS Divergence In the earliest GAN talk What we need to minimize is JS Divergence When choosing JS Divergence What problems may occur? Well, before we consider the problem of JS Divergence Let's first look at the characteristics of PG and Pdata Then PG and Pdata have a very crucial feature The overlap between PG and Pdata is often very small How should I put this There are two reasons here The first reason comes from the nature of the Data itself Because you want PG and Pdata They are all to generate pictures That image is actually in high-dimensional space A low-dimensional Manifold How to know the picture is a high-dimensional space The low-dimensional manifold inside. Think about it In the high-dimensional space Just sample any point It usually can't form one the avatar of a two-dimensional character, So, the distribution of two-dimensional character avatars In high-dimensional spaces It's actually very narrow So, the distribution of anime avatar The distribution of this picture In fact, it is a low-dimensional Manifold in high-dimensional space Or if you think in terms of a two-dimensional space The distribution of the picture It might just be a line in two-dimensional space. Most points in a two-dimensional space aren't pictures Just randomly sample a point in high-dimensional space Neither of them is an image Only a very small range The sample will be a picture So from this perspective Considering from the characteristics of the data itself PG and Pdata They are all Low Dimensional Manifolds Explained in a two-dimensional space Both PG and Pdata are two straight lines in two-dimensional space And two straight lines in two-dimensional space unless they coincide exactly, Otherwise, their intersecting ranges This is almost negligible This is the first reason Someone might say This picture might not mean anything Low Dimensional Manifold Would the first reason still be valid then? Then I give you a second reason The second reason is We never know what PG and Pdata look like Our approach to PG and Pdata Understanding its distribution it actually comes from the Sample So maybe PG and Pdata They have a very large Overlap range But in reality In understanding this PG and Pdata When calculating their divergence We sample some points from Pdata Sample some points from PG If you don't have enough sample points Your sampling points are not dense enough Even though these two Divergences actually, These two Distributions actually have an overlap But if the points you sample are not sufficient For Discriminator It also has no overlap That is the blue distribution and the red distribution There is clearly an overlap But if you sample some points from the blue distribution Sample some points from the red distribution You didn't sample enough points You could easily draw a clear boundary. Completely separating the red dots from the blue ones Speaking of the red dots Its distribution is on the right side of this boundary line The blue point is on the left They are totally without any conflict So, I gave you two reasons above Try to convince you that PG and Pdata are these two distributions Their overlapping scope is very small And there's barely any overlap What problem would JS Divergence cause for us? JS Divergence has a characteristic They are two non-overlapping distributions Calculated JS Divergence It's always Log2 no matter what these two distributions look like, So two distributions do not overlap The calculation will definitely be Log2 No matter what they look like The calculations are all Log2 So, for example Suppose this is your Pdata This is your PG They all are Assuming they are all a straight line And there's a long distance in the middle You calculate their JS Divergence Is log2 Suppose your PG and Pdata are actually quite close Actually, the gap between them is quite small The result is still Log2 Unless your PG overlaps with Pdata Otherwise, as long as this PG and Pdata are two straight lines, These two lines do not intersect The result would be Log2 Calculate this case The result is Log2 In this case, the result is also Log2 But this case is clearly better than that case In the middle of this Case The Generator in the middle Obviously it's better than the Generator on the left But you don't know Ironically, the blue line is closer to the red line But from the perspective of JS Divergence Can't see this kind of phenomenon Since it's from the JS Divergence You cannot observe such a phenomenon. During your training You can't possibly use this Generator Update parameter becomes such a Generator Because it involves your Loss For your objective These two Generators are equally good Or just as bad The above is more from a theoretical perspective If we explain from a more intuitive, practical perspective you will discover, When you are using JS Divergence Just assume you are training one today, Binary's Classifier To distinguish the real image Compared to Generated Image You will find that after you actually finish your training, Accuracy is almost always 100% Why? Because you hardly have a few pictures in your Sample In terms of your Discriminator You sample 256 real pictures 256 fake images It uses the hard backing directly Both sets of pictures can be separated Knowing who is Real and who is Fake So in reality If you have trained GAN yourself, you would find If you use a binary classifier to train You will find that After you train your Classifier almost every time, Meaning after you've finished training your Discriminator The accuracy is always 100% We would normally expect to say This Discriminator's Loss Might imply certain things. This Binary Classifier Loss Perhaps it represents something This loss is getting bigger and bigger Signifies that the problem is getting harder It means our Generated Data Getting closer and closer to Real Data But in reality In practice, you can't even observe this phenomenon the loss after the binary classifier is trained, There's really no significance Because it can always make its accuracy reach 100% Both sets of images are sampled It can achieve 100% accuracy even with hard backing You can't see your Generator at all Is it getting better So in the past Particularly before the advent of technologies such as WGAN, When we were still using Binary Classifier When acting as a Discriminator Training GANs is really like sorcery, black magic You have no idea what you're doing when you're training Is it getting better What can we do then? The method used at that time was... How many times you update the Generator You need to print your pictures out for inspection And then you will have to eat while doing that While looking at the results of the image generation And after running, you find out, wow, it's broken And then redo it from scratch So you never had it before Unlike when we Train a typical Network You have a loss function And then that Loss decreases as training progresses It will slowly become smaller Then you would notice that Loss slowly decreases You can rest assured knowing your Network is being trained But whether it will Overfit is another matter At least it's getting better and better on its training data But for GAN Originally, we expected the Classifier's Loss It can provide some information But when your Classifier is one Simply put, during a typical Binary Classifier If the outcome of its training, you don't have any information Each time you train, the accuracy is 100% You don't even know your Generator Are things getting better It becomes you can only use human eyes to see Watching with human eyes in front of the computer If the results are bad, discard it Use a new set of Hyperparameter Let's readjust the Network Refine and redo So training GAN in the past was a bit tough Since the problem is JS Divergence So some people thought Would it be possible to change to another? The way to measure the similarity of two distributions Change a Divergence We can solve the problem this way That's how Wasserstein came into being Or the idea of using Wasserstein Distance, Well, there is a cool thing about Wasserstein Distance Here's a little-known fact It's this W Actually, this is pronounced as 'V' It's not pronounced, not the sound of W It's not called Wasserstein Distance It's pronounced Wasserstein Distance Alright, this Wasserstein Distance How is it calculated? The concept of Wasserstein Distance is like this Assume you have two Distributions We'll call this Distribution 'P'. We call the other Distribution Q The method of calculating the Wasserstein Distance Imagine you're operating a bulldozer The English term for a bulldozer is Earth Mover Imagine you are driving a bulldozer Imagine P as a pile of dirt Think of Q as the destination where you want to place the pile of soil Then, this dozer pushes the dirt from P's side The average distance moved to Q Which is the Wasserstein Distance in this case, We assume P all concentrated at this point Q is all concentrated at this point For bulldozers Assuming it wants to move the soil from P to Q The average distance it needs to travel It's D So, in this example Assuming P is concentrated at a point Q concentrates at one point The distance between these two points is D The Wasserstein Distance between P and Q It is D Because we're discussing this When dealing with the Wasserstein Distance You have to imagine there is an Earth Mover There's a bulldozer pushing dirt So in fact the Wasserstein Distance Also known as Earth Mover Distance But if it's a more complex Distribution You need to calculate the Wasserstein Distance It's a bit difficult How should I put this Assume this is your P Assume this is your Q Assume you're driving a bulldozer Wanting to reshape P Make the shape of P closer to Q So, what are the approaches? You would realize Your possible Moving Plans It's like you're taking Q to replace P There are infinitely many ways to reshape into Q You can say I moved the soil from here to there I'm moving the soil from here to there Turn P into Q But you can also say 'no need to reinvent the wheel', I moved the soil from here to there Move the soil from here to there Prefer far to near You can still turn P into Q So when we consider Especially when dealing with more complex Distributions, The method of changing Q and P into Q There are so many different ways You have a variety of different Moving Plans With different Moving Plans The distance you've calculated The average distance your bulldozer travels varies In this example on the left The bulldozer travels less distance on average In this example on the right, because it favors the far over the near The bulldozer travels a larger average distance Could it be the between P and Q Wasserstein Distance It will vary according to your different methods The distinctive way this bulldozer operates Even if you calculate different values In order to make the Wasserstein Distance have only one value So here the definition of the Wasserstein Distance is, Enumerating all the Moving Plans And see which method of pushing the earth Which moving plan we are talking about Which plan of bulldozing Can minimize the average distance That smallest value That is the Wasserstein Distance So all methods of changing P into Q will be exhausted Then see which bulldozer has the shortest average distance Then choose the shortest distance As the Wasserstein Distance So actually we need to calculate the Wasserstein Distance It can be quite troublesome. You will find that I just need to calculate a distance I actually have to solve an Optimization problem Solving this Optimization problem Then we can calculate the Wasserstein Distance Okay, let's not talk about this for now How to calculate the Wasserstein Distance Let's talk assuming we can calculate Speaking of Wasserstein Distance What kind of advantages can it bring us Assuming the distance between PG and Pdata is D0 In this example The calculated Wasserstein Distance is D0 In this example The distance between PG and Pdata is D1 As for the distance calculated by the Wasserstein Distance It's D1 Suppose D1 is smaller D0 is greater When calculating the Wasserstein Distance In this case, the Wasserstein Distance is relatively smaller the Wasserstein distance of this case is relatively large. So we can know that When moving from left to right The Wasserstein Distance is becoming smaller So if you observe If you know about the Wasserstein Distance, From left to right, our Generator is developing progressively But if you observe the Discriminator You will find that you can't observe anything For the Discriminator The JS Divergence of each case here is calculated They are all the same All are equally good or equally bad But if you switch to Wasserstein Distance When we move from left to right, we would know Our Discriminator is doing that. Our Generator is getting better Therefore, we switch to another way to calculate Divergence We can solve the JS Divergence dilemma Possible problems it might bring This reminds me of something This reminds me of an evolutionary example This is the formation of the eye This on the right is a human eye The human eye is incredibly complex Some organisms have very primitive eyes For example, some cells have the ability to detect light This can be seen as the original eye But these most primitive eyes How did it become the most complex eye This is actually very difficult to imagine for humans This is quite simple It's just some photosensitive cells on the skin After mutation, some photosensitive cells are produced Sounds like a reasonable But the natural selection mutation How could it possible to generate such a complex organ How to produce such a delicate organ as the eye? Then if you feel directly You can jump from here to there in one step That's simply not possible. But there are actually many continuous steps in between From photoreceptor cells to eyes In fact, there are continuous steps in between For instance Photosensitive cells might It appears in a more concave area The skin sinks in, Such a photoreceptor cell can receive light from different directions And then I realized Just cover the recessed areas. later, you feel that inside the covered area, You can put some liquid in and eventually it turns into a human eye, And to make this step from here to there Is very large But every small step here Can all increase the chance of a life surviving Both can increase the chance of propagation of life Since each step here All can increase the probability of life reproduction Then life can evolve from the left to the right Finally, complex organs are produced And I think when you use WGAN When you use this Wasserstein Distance When measuring your Divergence In fact, it creates a similar effect Originally, PG0 and Pdata were very distant You want it to go from here to there in one step Run from here to there in one step Align this PG0 with Pdata Align it directly Is impossible It might be extremely challenging For JS Divergence It needs to jump directly from this step to this step Its JS Divergence's Loss will make a difference However, in terms of W distance You just need to every time It somewhat pushes PG closer to Pdata W Distance will change The W Distance has changed Then you will be able to train your Generator To minimize W Distance So this is why When we start with the JS Divergence When it is converted into the Wasserstein Distance The benefits it can bring Ok, the WGAN in reality is used When you use the Wasserstein Distance When we replace JS Divergence This GAN is called WGAN The problem you will encounter next is How do you calculate the Wasserstein Distance? Pdata and PG How is its Wasserstein Distance calculated Waterstone Distance It is a very complex thing All I need to calculate is the Wasserstein Distance And also need to solve an optimization problem How to calculate it in real terms Here, I won't explain the process Just tell you the result directly Solve this optimization problem below The value you get after solving it. It is Wasserstein Distance It's the Wasserstein Distance between Pdata and PG, In that case, I realise there's a little error I made What exactly is this small error? It is changing all the X on this side into Y It will be more consistent with the previous slides So this X in the previous slide Actually, it's all Y They all refer to one picture Instead of They all refer to the network output Instead of the input of the Network Alright, what do we have in this equation? Let's observe this equation It is mentioned in this formula If X comes from Pdata Next, we need to calculate its Ex expected value X if it's from PG We calculate the expected value of its D(x), But multiplied by a negative sign in front So, if you want the maximum This Objective Function What kind of effect would you achieve? You will achieve If X comes from the Pdata Sample D(x) The bigger the output of the Discriminator, the better If X is from PG It comes from a generator sample Then D(x) That is, the output of the Discriminator Should be as small as possible But there is another limitation here It's not just asking you to do this Just make the value in the parentheses bigger There's also one limitation D cannot be a random function D must be a 1-Lipschitz function You might ask What is Lipschitz, you ask? If you don't know what it is It doesn't matter In this case, just think of it as D must be a sufficiently smooth function It can't be a rapidly varying Function It has to be a sufficiently smooth function Why is having sufficient smoothness so important? We can understand it intuitively Assume this is the real data distribution This is the distribution of the data generated If we don't have this restriction If you only looked at the values within the brackets, The goal is inside the brackets That these are the true values The larger its D(x), the better We need the generated values The smaller its D(x), the better If you don't set any restrictions You simply want the value on this side to be as large as possible The smaller the value here, the better Between the blue dot and the green dot In other words, the real Image Corresponds to the Generated image Without any overlaps What will your Discriminator do It will give a positive value to the Real image Assign an infinite negative value to the generated image So your Training is basically impossible to converge And you will find As long as these two sets of data do not overlap The values you calculate are all infinitely large The maximum value you calculate is infinite This is clearly not what we want Doesn't this issue same as JS Divergence? So here, you need to add this restriction After you add this constraint This maximum value you have, This is when it becomes a Wasserstein Distance This is how WGAN works Good, then why add this constraint? This can solve the previous problem Because this restriction is asking for the Discriminator It can't change too drastically It must be smooth enough Now, if you When the requirement is to have a smooth Discriminator Assume Real Data and Generated Data They are relatively close Then you can't make the value of Real Data very large, And the value generated is very small Because if you make the Real value very large, The value generated is very small The gap between them is quite large Then the variation of this Discriminator is quite drastic It becomes non-smooth It's not 1-Lipschitz In order to fulfill 1-Lipschitz, The value here can't be very large The value here can't be very small Make the Discrimination smooth enough Intuitively found that If there's a significant difference between the real and generated data, Their values can vary greatly, The calculated value here will be relatively larger Your Wasserstein Distance is relatively large If Real and Generated are very close Even if they do not overlap Because of this limitation With this written under the Max 1-Lipschitz Function's constraint Then you would find that, They actually won't all run to infinity The distance between them Because of the constraint of the 1-Lipschitz Function So, the values of Real Data and Generated Data The difference wouldn't be so significant then The Wasserstein Distance you've calculated Will be smaller Alright, the next problem is How to achieve this restriction? How to ensure the Discriminator must meet the constraints of 1-Lipschitz Function When WGAN was initially proposed Actually, there's no good idea You only know how to write this formula How to actually solve this equation It's a bit difficult So the earliest WGAN paper The earliest paper using Wasserstein It revealed that it made a relatively rough approximation A rougher method of handling It's saying that I just train a network When training the Network If I am training that parameter I asked it to be bound between C and -C If it exceeds C The Gradient Descent Update exceeds C afterwards Set it as C Gradient Descent Update is less than -C after is simply set to -C Actually, this method It doesn't necessarily empower the Discriminator Transforming it into a 1-Lipschitz Function You can imagine this method Maybe it can really enhance our Discriminator Which is smoother But it did not really resolve this Problem of optimization It doesn't actually allow the Discriminator Complies with this restriction So, there are other ideas coming up next There's a concept called Gradient Penalty. Gradient Penalty originated from The Improved WGAN paper That Improve WGAN, this paper says Assume this is the distribution of your Real Data This is the distribution of your Fake Data Then, I'll get a sample from the Real Data side Take a sample from the Fake Data side Take another sample in the middle of the two points' connection I require the gradient of this point to be close to 1 You might think this I don't know, I don't know what's being said The relationship of this issue It's about the relationship with this restriction What is it exactly Refer to the Improved WGAN paper for details Actually, I think you currently It's not really essential to be stringent about it This thing called Gradient Penalty The relationship between this limitation Because there are actually many other methods We can actually solve this problem Actually, after the Improved WGAN And what's more about the 'Improved Improved WGAN' There really is this paper It just slightly modifies this constraint Another paper is called, 'Improved The Improved WGAN' So today, actually, you have a method Really limit D Making it a 1-Lipschitz Function This is called Spectral Normalization Then I will put its thesis here for everyone to refer to If you want to really well train a GAN You may need to use Spectral Normalization 