好 那 個 講 完 domain adaptation 以 後 我 們 就 稍 微 休 息 一 下 然 後 下 一 堂 課 就 會 播 放 助 教 的 錄 影 其 實 助 教 在 講 domain adaptation 這 一 段 講 得 非 常 地 清 楚 所 以 我 們 這 邊 就 會 比 較 快 地 帶 過 那 等 一 下 如 果 你 有 聽 不 清 楚 的 地 方 其 實 等 一 下 助 教 的 錄 影 你 還 有 機 會 再 聽 一 次 如 果 等 一 下 講 的 東 西 雖 然 我 講 得 有 點 快 但 你 已 經 聽 得 非 常 懂 了 那 等 一 下 播 助 教 錄 影 的 時 候 你 就 休 息 一 下 去 做 其 它 事 情 好 那 我 們 呢 就 開 始 來 講 domain adaptation 的 部 分 吧 好 到 目 前 為 止 我 們 已 經 訓 練 了 很 多 machine learning 的 model 所 以 對 大 家 來 說 訓 練 一 個 classifier 完 全 不 是 一 個 問 題 所 以 假 設 要 你 訓 練 一 個 數 字 的 classifier 你 只 要 有 給 你 訓 練 資 料 你 訓 練 好 一 個 模 型 然 後 apply 在 用 在 測 試 資 料 上 就 結 束 了 那 像 數 字 辨 識 這 麼 簡 單 的 問 題 你 在 benchmark corpus 在 mnist benchmark corpus 上 隨 便 做 一 做 可 能 都 會 做 到 99.5% 的 正 確 率 但 是 假 設 今 天 測 試 資 料 跟 訓 練 資 料 的 分 布 不 一 樣 怎 麼 辦 呢 我 們 舉 一 個 簡 單 的 例 子 假 設 訓 練 的 時 候 你 的 數 字 是 黑 白 的 但 測 試 的 時 候 你 的 數 字 是 彩 色 的 會 發 生 什 麼 樣 的 事 情 呢 你 可 能 會 覺 得 說 一 邊 是 黑 白 的 一 邊 是 雖 然 一 邊 是 黑 白 的 一 邊 是 彩 色 的 但 是 對 model 來 說 數 字 的 形 狀 是 一 樣 的 它 能 夠 在 黑 白 的 圖 片 上 認 出 數 字 來 在 彩 色 的 圖 片 上 會 不 會 應 該 也 可 以 認 出 數 字 來 呢 但 實 際 上 不 是 如 果 你 今 天 在 這 樣 子 黑 白 的 數 字 上 面 訓 練 一 個 模 型 直 接 用 到 彩 色 的 數 字 上 你 得 到 的 正 確 率 會 非 常 地 低 會 低 到 只 有 57% 不 能 算 是 一 個 及 格 的 分 數 所 以 我 們 今 天 知 道 說 一 旦 訓 練 資 料 跟 測 試 資 料 它 中 間 有 一 些 差 異 它 們 中 間 的 分 布 是 不 一 樣 的 你 在 訓 練 資 料 上 訓 練 出 來 的 模 型 在 測 試 資 料 上 面 可 能 就 會 壞 掉 那 這 種 問 題 叫 做 domain shift 也 就 是 當 你 的 訓 練 資 料 跟 測 試 資 料 它 的 分 布 有 些 不 同 的 時 候 這 種 狀 況 叫 做 domain shift 在 多 數 的 這 種 作 業 裡 面 或 者 是 benchmark corpus 裡 面 我 們 都 假 設 無 視 domain shift 這 個 問 題 我 們 的 訓 練 資 料 跟 測 試 資 料 往 往 有 著 一 樣 的 分 布 那 這 樣 都 會 給 大 家 一 個 錯 誤 的 印 象 就 是 哇 這 個 今 天 的 什 麼 人 工 智 慧 真 的 是 很 厲 害 都 超 越 人 類 啦 在 很 多 任 務 上 面 都 有 極 高 的 正 確 率 但 是 實 際 上 用 在 真 實 的 應 用 上 當 你 的 訓 練 資 料 跟 測 試 資 料 的 中 間 有 一 點 差 異 的 時 候 機 器 能 不 能 夠 做 得 好 就 是 一 個 未 知 數 了 那 我 們 今 天 就 是 要 來 講 說 假 設 訓 練 資 料 跟 測 試 資 料 有 一 點 差 異 的 時 候 有 沒 有 什 麼 方 法 可 以 讓 我 們 能 夠 做 得 比 什 麼 都 不 做 結 果 還 要 好 好 那 今 天 就 是 要 講 domain adaptation 的 技 術 那 domain adaptation 的 技 術 也 可 以 看 做 是 transfer learning 的 一 種 怎 麼 說 呢 transfer learning 就 是 你 在 a 任 務 上 學 到 的 技 能 可 以 被 用 在 b 任 務 上 那 對 於 domain adaptation 來 說 你 的 訓 練 資 料 是 一 個 domain 你 的 測 試 資 料 是 另 外 一 個 domain 你 在 訓 練 資 料 上 面 某 一 個 domain 上 學 到 的 資 訊 你 要 把 它 用 到 另 外 一 個 domain 用 到 測 試 資 料 上 面 所 以 你 是 把 一 個 domain 學 到 的 知 識 用 在 另 外 一 個 domain 上 所 以 它 可 以 看 做 是 transfer learning 的 其 中 一 個 環 節 那 在 過 去 上 課 的 錄 影 裡 面 有 完 整 的 講 了 transfer learning 相 關 的 技 術 那 因 為 今 天 時 間 有 限 我 們 就 只 focus 在 domain adaptation 的 部 分 就 好 如 果 你 有 興 趣 的 話 你 可 以 再 看 一 下 過 去 上 課 的 錄 影 好 那 domain shift 其 實 有 很 多 種 不 同 的 類 型 我 們 剛 才 看 到 的 只 是 domain shift 的 其 中 一 種 可 能 是 模 型 輸 入 的 資 料 的 分 布 有 變 化 的 狀 況 那 輸 入 分 布 有 變 化 是 一 種 可 能 性 其 實 還 有 另 外 一 種 可 能 性 是 輸 出 的 分 布 也 可 能 有 變 化 舉 例 來 說 在 你 的 訓 練 資 料 上 面 可 能 每 一 個 數 字 它 出 現 的 機 率 都 是 一 樣 的 但 是 在 測 試 資 料 上 面 可 能 每 一 個 輸 出 的 機 率 是 不 一 樣 的 有 可 能 某 一 個 數 字 它 輸 出 的 機 率 特 別 大 有 沒 有 可 能 有 這 種 事 情 發 生 呢 這 也 是 有 可 能 的 那 這 也 是 一 種 domain shift 還 有 一 種 更 罕 比 較 罕 見 但 也 不 是 完 全 不 可 能 發 生 的 狀 況 是 輸 入 跟 輸 出 雖 然 分 布 可 能 是 一 樣 的 但 它 們 之 間 的 關 係 變 了 也 許 在 你 的 訓 練 資 料 裡 面 這 種 東 西 叫 做 0 但 是 在 你 的 測 試 資 料 裡 面 這 種 東 西 叫 做 1 這 也 不 是 不 可 能 的 也 是 有 可 能 發 生 這 種 狀 況 嘛 也 是 有 可 能 發 生 說 輸 入 跟 輸 出 它 們 的 關 係 不 一 樣 在 訓 練 跟 測 試 資 料 不 一 樣 的 狀 況 那 這 又 是 另 外 一 種 domain shift 那 我 們 今 天 呢 只 專 注 在 輸 入 資 料 不 同 的 domain shift 的 上 面 好 那 在 等 一 下 的 課 程 裡 面 這 個 測 試 的 資 料 我 們 說 它 來 自 target domain 訓 練 的 資 料 我 們 說 它 來 自 source domain 所 以 source domain 是 我 們 的 訓 練 資 料 target domain 是 我 們 的 測 試 資 料 好 那 在 domain adaptation 裡 面 我 們 的 這 個 情 境 是 這 個 樣 子 的 我 們 有 一 堆 訓 練 資 料 那 這 邊 我 們 就 直 接 拿 手 寫 數 字 辨 識 來 當 作 我 們 的 例 子 啦 我 們 有 一 堆 訓 練 資 料 那 這 些 資 料 來 自 source domain 而 且 這 些 訓 練 資 料 是 有 標 註 的 我 們 知 道 每 張 圖 片 對 應 的 數 字 是 什 麼 但 是 我 們 希 望 再 用 這 些 資 料 訓 練 出 一 個 模 型 這 個 模 型 可 以 用 在 不 一 樣 的 domain 上 那 要 把 這 個 模 型 用 在 不 一 樣 的 domain 上 在 訓 練 的 時 候 我 們 就 必 須 要 對 另 外 一 個 domain 也 就 是 現 在 測 試 資 料 所 在 的 target domain 有 一 些 了 解 那 隨 著 了 解 的 程 度 不 同 我 們 就 有 不 同 的 domain adaptation 的 方 法 那 了 解 最 多 的 是 假 設 我 們 在 target domain 上 我 們 有 一 點 資 料 而 且 這 些 資 料 居 然 還 有 label 那 這 是 一 種 情 況 但 還 有 另 外 一 種 更 好 的 狀 況 是 也 許 你 根 本 在 target domain 上 就 有 一 大 堆 的 資 料 那 些 資 料 也 都 有 label 那 你 其 實 就 不 需 要 做 domain adaptation 你 直 接 拿 target domain 的 資 料 來 訓 練 就 好 了 所 以 如 果 你 在 target domain 上 已 經 有 一 大 堆 的 資 料 而 且 它 們 還 有 標 註 那 你 不 需 要 做 domain adaptation 那 要 做 domain adaptation 的 情 境 可 能 是 你 有 target domain 的 資 料 也 有 標 註 但 是 量 非 常 地 少 那 在 這 種 狀 況 下 怎 麼 辦 呢 那 這 種 狀 況 還 算 是 在 domain adaptation 裡 面 比 較 容 易 處 理 的 狀 況 如 果 你 今 天 遇 到 的 是 有 標 註 資 料 只 是 資 料 量 很 少 的 情 況 下 你 可 以 用 這 些 有 標 註 的 資 料 來 微 調 你 在 source domain 上 訓 練 出 來 的 模 型 那 這 邊 所 謂 的 微 調 就 跟 你 在 做 bert 的 時 候 的 行 為 很 像 就 是 你 已 經 有 一 個 在 source domain 上 訓 練 好 的 model 那 你 拿 target domain 的 data 只 稍 微 跑 個 兩 三 個 epoch 就 足 夠 了 好 那 在 這 一 種 情 境 下 你 需 要 注 意 的 問 題 就 是 因 為 你 的 target domain 的 資 料 量 非 常 少 所 以 你 要 小 心 不 要 overfit 也 就 是 說 你 不 要 在 target domain 上 的 資 料 上 跑 太 多 的 iteration 那 如 果 你 跑 太 多 的 iteration 可 能 會 overfit 到 target 的 這 些 少 量 的 資 料 上 然 後 呢 你 在 你 真 正 的 testing set 上 就 做 不 好 這 是 有 可 能 的 那 為 了 避 免 overfitting 的 情 況 過 去 就 有 很 多 的 solution 比 如 說 把 learning rate 調 小 一 點 舉 例 來 說 你 要 讓 fine-tune 前 跟 fine-tune 後 的 模 型 的 參 數 不 要 差 很 多 或 者 是 讓 fine-tune 前 跟 fine-tune 後 的 模 型 它 的 輸 入 跟 輸 出 的 關 係 不 要 差 很 多 等 等 那 有 很 多 不 同 的 方 法 那 這 邊 呢 我 們 就 不 細 講 好 那 今 天 主 要 想 要 跟 大 家 分 享 的 情 境 也 是 我 們 作 業 要 處 理 的 情 境 是 我 們 在 targe domain 上 有 大 量 的 資 料 但 是 這 些 資 料 是 沒 有 標 註 的 你 的 targe domain 是 有 顏 色 的 數 字 你 也 蒐 集 到 了 一 大 堆 有 顏 色 的 數 字 的 圖 片 但 是 沒 有 人 標 註 說 每 一 張 圖 片 裡 面 的 數 字 是 什 麼 那 我 們 在 作 業 裡 面 要 處 理 的 就 是 遇 到 這 種 狀 況 的 時 候 到 底 應 該 要 怎 麼 解 呢 好 到 底 應 該 要 怎 麼 解 呢 那 像 這 種 情 境 其 實 是 蠻 符 合 你 在 真 實 的 系 統 上 有 可 能 會 發 生 的 情 境 舉 例 來 說 你 在 實 驗 室 裡 面 訓 練 了 一 個 模 型 你 想 要 把 它 用 在 真 實 的 場 域 裡 面 你 就 把 你 的 模 型 上 線 那 確 實 有 一 些 人 來 用 但 是 你 發 現 你 得 到 的 feedback 很 差 大 家 都 嫌 棄 你 的 系 統 正 確 率 很 低 那 怎 麼 辦 但 是 你 這 個 時 候 你 也 許 就 可 以 用 domain adaptation 的 技 術 那 因 為 你 的 系 統 已 經 上 線 也 真 的 有 人 使 用 所 以 你 可 以 蒐 集 到 一 大 堆 的 資 料 只 是 這 些 資 料 它 們 是 沒 有 標 註 的 那 現 在 要 問 的 問 題 是 怎 麼 用 這 些 沒 有 標 註 的 資 料 來 幫 助 我 們 在 source domain 上 訓 練 出 一 個 模 型 它 可 以 用 在 targe domain 上 呢 那 這 邊 最 basic 的 想 法 是 這 個 樣 子 的 這 邊 基 本 的 概 念 是 這 個 樣 子 我 們 想 要 找 一 個 feature extractor 這 個 feature extractor 它 其 實 也 是 一 個 network 這 個 network 呢 吃 一 張 圖 片 作 為 輸 入 它 吐 出 一 個 vector 吐 出 一 個 feature 雖 然 source domain 跟 target domain 它 們 的 image 表 面 上 看 起 來 不 一 樣 但 是 feature extractor 會 把 它 們 不 一 樣 的 部 分 拿 掉 只 抽 取 出 它 們 共 同 的 部 分 所 以 雖 然 從 圖 片 上 看 起 來 這 兩 組 圖 片 一 個 有 顏 色 一 個 沒 有 顏 色 它 本 來 就 很 不 一 樣 但 是 我 們 期 待 說 這 個 feature extractor 可 以 學 到 就 無 視 顏 色 這 件 事 情 把 顏 色 的 資 訊 濾 掉 那 今 天 不 管 是 來 自 source domain 的 圖 片 還 是 來 自 target domain 的 圖 片 只 要 通 過 這 個 feature extractor 以 後 它 得 到 的 feature 看 起 來 是 沒 有 差 異 的 它 們 看 起 來 有 一 樣 的 分 布 那 這 樣 你 就 可 以 用 這 些 feature 訓 練 一 個 模 型 在 source domain 上 訓 練 一 個 模 型 直 接 用 在 target domain 上 那 接 下 來 的 問 題 就 是 怎 麼 找 出 這 樣 一 個 feature extractor 好 怎 麼 找 出 這 樣 的 一 個 feature extractor 呢 那 其 實 我 們 可 以 把 一 個 一 般 的 classifier 就 分 成 feature extractor 跟 label predictor 兩 個 部 分 我 們 知 道 一 個 image 的 classifier 就 是 輸 入 一 張 image output 就 是 分 類 的 結 果 那 假 設 這 個 image 的 classifier 有 10 層 那 我 們 就 說 前 5 層 算 是 feature extractor 後 5 層 算 是 label predictor 因 為 前 5 層 你 一 個 image 通 過 前 5 層 它 輸 出 就 是 一 個 vector 嘛 那 如 果 你 上 cnn 的 話 它 輸 出 其 實 是 feature map 啦 但 feature map 拉 直 也 可 以 看 做 是 一 個 vector 嘛 那 這 個 vector 再 丟 到 label predictor 的 後 面 5 層 它 會 產 生 class 那 所 以 我 們 可 以 把 前 5 層 看 做 是 feature extractor 那 你 可 能 會 問 說 那 為 什 麼 是 前 5 層 呢 為 什 麼 不 是 前 4 層 前 3 層 前 2 層 前 1 層 呢 可 以 是 前 4 前 3 前 2 前 1 這 個 是 你 自 己 決 定 的 一 個 classifier 裡 面 哪 些 部 分 算 feature extractor 哪 些 部 分 算 是 label predictor 這 個 是 你 自 己 決 定 的 那 這 個 也 算 是 一 個 hyper parameter 啦 就 跟 network 架 構 要 調 一 下 一 樣 要 調 一 樣 那 如 果 你 今 天 呢 用 domain adaptation 的 方 法 那 這 邊 等 一 下 要 用 的 方 法 叫 domain adversarial training 用 domain adversarial training 你 要 把 classifier 裡 面 的 哪 個 部 分 哪 幾 層 當 做 feature extractor 這 個 也 要 問 你 自 己 那 這 個 也 是 你 自 己 要 決 定 的 好 那 我 們 現 在 要 怎 麼 來 訓 練 這 個 feature extractor 跟 label predictor 呢 今 天 對 於 source domain 上 的 資 料 source domain 上 的 資 料 是 有 標 註 的 我 們 就 期 待 把 source domain 的 資 料 丟 進 去 那 就 去 跟 訓 練 一 個 一 般 的 分 類 器 一 樣 它 通 過 feature extractor 再 通 過 label predictor 可 以 產 生 正 確 的 答 案 但 不 一 樣 的 地 方 是 target domain 的 這 些 資 料 我 們 有 一 堆 target domain 的 資 料 但 這 些 資 料 是 沒 有 任 何 的 標 註 的 這 些 資 料 是 沒 有 任 何 的 標 註 的 所 以 我 們 不 能 說 把 這 些 資 料 丟 進 去 以 後 期 待 label predictor 會 output 什 麼 數 字 因 為 我 們 根 本 不 知 道 label predictor 要 output 什 麼 數 字 才 是 對 的 但 是 這 些 資 料 可 以 怎 麼 被 使 用 呢 這 些 資 料 的 使 用 方 式 就 是 我 們 把 這 些 圖 片 丟 到 這 個 image 丟 進 這 個 image classifier 然 後 我 們 把 feature extractor 的 output 拿 出 來 看 拿 出 來 看 以 後 我 們 希 望 source domain 的 圖 片 丟 進 去 的 feature 跟 target domain 的 圖 片 丟 進 去 的 feature 它 們 看 起 來 要 分 不 出 差 異 就 是 這 個 source domain 的 圖 片 我 們 用 它 的 feature 我 們 用 藍 色 的 點 來 表 示 target domain 的 圖 片 它 的 feature 我 們 用 紅 色 的 點 來 表 示 我 們 要 這 些 藍 色 的 點 跟 這 些 紅 色 的 點 分 不 出 差 異 那 怎 麼 讓 藍 色 的 點 跟 紅 色 的 點 分 不 出 差 異 呢 那 這 個 就 要 藉 由 domain adversarial training 的 技 術 那 等 一 下 如 果 你 覺 得 這 一 段 講 得 有 點 快 也 沒 有 關 係 等 一 下 助 教 會 再 更 詳 細 地 講 過 一 次 好 那 我 們 現 在 要 做 的 事 情 就 是 訓 練 一 個 domain 的 classifier 這 個 domain 的 classifier 它 就 是 一 個 二 元 的 分 類 器 它 吃 這 個 vector 當 作 輸 入 它 要 做 的 事 情 就 是 判 斷 說 這 個 factor 是 來 自 於 source domain 還 是 來 自 於 target domain 它 要 判 斷 這 個 factor 是 來 自 source domain 還 是 來 自 target domain 而 feature extractor 它 學 習 的 目 標 就 是 要 去 想 辦 法 騙 過 這 個 domain classifier 那 聽 到 騙 過 這 件 事 情 欸 是 不 是 讓 你 腦 中 就 浮 現 了 gan 這 個 東 西 是 不 是 就 浮 現 了 generative adversaria network 這 個 東 西 呢 沒 錯 domain adversarial training 就 非 常 像 是 gan 你 可 以 把 feature extractor 想 成 是 generator 把 domain classifier 想 成 是 discriminator 那 其 實 domain adversarial training 最 早 的 paper 我 記 得 是 發 表 在 2015 年 的 icml 上 面 比 那 個 gan 還 要 稍 微 晚 一 點 點 啦 不 過 它 們 幾 乎 可 以 說 是 同 時 期 的 作 品 在 domain adversarial training 那 篇 paper 裡 面 是 有 引 用 到 gan 那 篇 paper 但 那 時 候 gan 那 篇 paper 還 沒 有 上 neurips 所 以 它 只 說 欸 有 一 篇 有 另 外 一 篇 paper 它 提 了 一 個 叫 gan 的 想 法 然 後 它 是 technical report 放 在 網 路 上 的 還 跟 我 的 想 法 有 點 像 所 以 它 們 算 是 一 個 同 時 期 的 作 品 好 但 是 講 到 這 邊 這 個 domain adversarial training 跟 gan 還 是 有 一 點 不 一 樣 那 在 這 個 遊 戲 裡 面 對 generator 好 像 優 勢 太 大 了 那 對 generator 來 說 它 要 騙 過 discriminator 完 全 不 需 要 花 什 麼 力 氣 有 一 個 非 常 無 腦 的 做 法 就 是 你 的 feature extractor 也 就 是 你 的 generator 不 管 看 到 什 麼 輸 入 永 遠 都 輸 出 0 就 好 了 看 到 什 麼 輸 入 我 都 輸 出 一 個 zero factor 那 對 domain classifier 來 說 它 完 全 不 知 道 input 的 image 是 什 麼 它 永 遠 都 看 到 zero factor 它 就 完 全 無 法 分 辨 這 個 factor 來 自 於 哪 一 個 domain 但 是 這 顯 然 不 是 我 們 要 的 狀 況 如 果 feature extractor 只 會 輸 出 zero factor 那 這 樣 子 等 於 根 本 就 什 麼 事 都 沒 有 做 是 一 樣 的 那 這 件 事 情 會 發 生 嗎 其 實 這 件 事 情 是 不 會 發 生 的 為 什 麼 因 為 label predictor 也 需 要 這 個 feature label predictor 它 也 需 要 這 個 feature 讓 它 可 以 去 判 斷 輸 入 的 圖 片 屬 於 哪 一 個 類 別 所 以 假 設 generator 它 就 直 接 放 一 個 大 絕 說 今 天 不 管 輸 入 什 麼 樣 的 image 我 輸 出 都 是 zero factor 那 對 於 label predictor 來 說 它 就 沒 有 辦 法 判 斷 是 哪 一 張 圖 片 那 在 這 個 情 況 下 因 為 feature extractor 它 還 是 需 要 產 生 這 個 factor 讓 label predictor 可 以 產 生 正 確 的 圖 片 所 以 feature extractor 它 就 不 能 放 大 絕 它 就 不 能 看 到 什 麼 東 西 永 遠 都 輸 出 zero factor 好 那 這 邊 呢 我 們 用 符 號 再 稍 微 把 我 們 剛 才 講 過 的 事 情 再 重 新 說 說 得 更 清 楚 一 點 假 設 label predictor 的 參 數 我 們 就 叫 它 θp domain classifier 的 參 數 叫 做 θd 然 後 feature extractor 的 參 數 叫 做 θf 然 後 呢 這 個 source domain 上 的 這 些 image 它 的 classification 的 這 個 cross entropy 就 source domain 這 些 image 它 是 有 label 的 所 以 你 可 以 算 它 們 的 cross entropy 你 根 據 它 們 的 cross entropy 訂 出 一 個 loss 而 θp 它 的 喔 這 邊 還 沒 有 講 θp 這 邊 是 有 一 個 l l 是 這 個 domain 的 這 個 這 個 source domain 上 的 那 些 image 它 有 label 你 可 以 算 出 cross entropy 然 後 對 於 這 個 domain 的 classifier 而 言 它 要 去 想 辦 法 分 辨 source 跟 target domain 的 差 距 它 要 去 做 一 個 binary 的 classification 的 問 題 它 要 去 做 一 個 二 元 分 類 的 問 題 這 個 分 類 的 問 題 有 一 個 loss 叫 做 ld 那 我 們 現 在 要 去 找 一 個 θp 它 可 以 讓 這 個 l 越 小 越 好 我 們 要 去 找 一 個 θd 它 可 以 讓 這 個 ld 越 小 越 好 你 說 label predictor 它 要 做 的 事 情 就 是 讓 這 個 source domain 的 image 分 類 越 正 確 越 好 domain classifier 要 做 的 事 情 就 是 讓 domain 的 分 類 越 正 確 越 好 而 feature extractor 呢 feature extractor 它 要 做 的 事 情 是 它 站 在 label predictor 這 邊 然 後 呢 它 要 去 捅 domain classifier 一 刀 它 要 去 做 domain classifier 相 反 的 事 情 所 以 這 個 feature extractor 它 的 loss 是 label predictor 的 loss l 去 減 掉 domain classifier 的 loss 叫 做 ld 喔 所 以 feature extractor 它 的 loss 就 是 大 l 減 掉 ld 你 要 去 找 一 個 參 數 找 一 組 參 數 θf 它 可 以 讓 大 l 減 ld 的 值 越 小 越 好 好 這 個 是 最 原 始 的 domain adversarial training 的 做 法 但 這 真 的 是 最 好 的 做 法 嗎 你 可 以 想 想 看 喔 那 這 個 詳 情 我 們 就 不 細 講 這 個 留 給 大 家 自 己 思 考 自 己 發 覺 你 想 想 看 喔 假 設 domain classifier 它 的 工 作 是 要 把 source domain 跟 target domain 分 開 是 要 看 到 這 種 圖 片 它 知 道 它 的 feature 來 自 source domain 看 到 這 種 圖 片 它 知 道 它 的 feature 來 自 target domain 它 要 把 這 兩 組 feature 分 開 而 feature extractor 如 果 它 的 loss 是 domain classifier 直 接 加 一 個 負 號 那 意 味 著 什 麼 意 味 著 說 它 要 做 的 事 情 就 是 跟 domain classifier 相 反 本 來 domain classifier 看 到 這 張 圖 片 的 feature 它 說 是 source 那 現 在 feature extractor 是 要 讓 domain classifier 看 到 這 個 圖 片 以 後 它 說 是 target 看 到 這 個 圖 片 反 過 來 要 說 是 source 如 果 你 這 麼 做 不 是 也 把 兩 組 feature 分 開 來 了 嗎 我 們 說 我 們 現 在 要 做 的 事 情 是 要 讓 domain 跟 這 個 source 跟 target domain 沒 有 差 別 但 是 你 今 天 不 管 是 用 ld 還 是 負 的 ld 其 實 都 是 要 把 source 跟 target domain 分 開 呀 你 去 讓 ld 的 值 本 來 domain classifier 是 要 讓 ld 的 值 越 小 越 好 你 現 在 是 負 的 ld feature extractor 要 讓 ld 的 值 越 大 越 好 其 實 也 是 把 source 跟 target domain 分 開 所 以 這 未 必 是 最 好 的 做 法 至 於 怎 麼 做 當 然 這 招 是 有 用 的 這 招 是 有 用 的 那 但 是 怎 麼 做 可 以 做 得 更 好 欸 這 個 留 給 大 家 慢 慢 思 考 好 那 我 們 來 看 一 下 domain adversarial training 最 原 始 的 paper 它 做 的 結 果 怎 麼 樣 呢 當 年 看 到 這 個 paper 的 時 候 真 的 覺 得 結 果 非 常 地 驚 人 好 那 這 邊 呢 它 做 了 四 個 任 務 那 上 半 部 是 source domain 的 圖 片 這 邊 其 實 都 是 數 字 辨 識 啦 那 下 半 部 呢 都 是 target domain 的 圖 片 好 如 果 今 天 呢 我 們 是 拿 target domain 的 圖 片 來 做 training target domain 的 圖 片 來 做 testing 那 結 果 像 是 這 個 樣 子 每 一 個 任 務 正 確 率 都 是 90% 以 上 但 如 果 說 我 們 今 天 是 source domain training target domain testing train 在 黑 白 的 數 字 上 測 試 在 彩 色 的 數 字 上 結 果 直 接 慘 掉 哇 這 直 接 慘 掉 沒 辦 法 做 啦 結 果 直 接 慘 掉 那 如 果 加 上 domain adversarial training 的 話 結 果 怎 麼 樣 呢 你 會 發 現 說 本 來 如 果 只 train 在 黑 白 的 圖 片 上 測 試 在 彩 色 的 圖 片 上 正 確 率 57.5 那 如 果 今 天 有 做 domain adversarial training 正 確 率 就 飆 升 到 81% 在 很 多 其 他 任 務 上 進 步 量 都 挺 明 顯 的 59 到 71 74 到 88.7 這 個 進 步 量 都 是 挺 明 顯 的 那 這 個 就 是 domain adversarial training 好 到 這 邊 我 們 停 一 秒 鐘 看 看 有 沒 有 同 學 有 問 題 哦 好 我 看 一 下 好 有 一 個 同 學 問 說 domain classifier 這 裡 是 類 似 k-means clustering 嗎 欸 不 是 它 就 是 一 個 二 元 的 分 類 器 domain 那 個 classifier 它 就 是 一 個 network 它 也 可 以 有 很 多 層 那 它 有 幾 層 也 是 你 自 己 決 定 的 所 以 它 不 是 一 個 這 個 k-means clustering 它 就 是 一 個 classifier 它 要 去 訓 練 說 看 到 一 個 input 一 個 feature 的 vector 那 output 就 是 它 是 屬 於 source domain 還 是 target domain 哦 有 同 學 幫 我 回 答 了 哦 是 助 教 好 助 教 幫 我 回 答 了 好 好 那 我 們 就 繼 續 講 啦 好 那 剛 才 這 整 套 想 法 還 是 有 一 個 限 制 有 一 個 小 小 的 問 題 什 麼 樣 小 小 的 問 題 呢 我 們 來 看 看 哦 今 天 藍 色 的 圈 圈 跟 藍 色 的 三 角 形 代 表 source domain 上 的 兩 個 class 那 我 們 當 然 可 以 找 一 個 boundary 去 把 這 兩 組 class 把 它 分 開 來 對 於 target domain 上 的 data 我 們 沒 有 任 何 的 class 的 label 我 們 就 只 能 說 所 有 target domain 的 data 我 們 都 用 這 個 正 方 形 來 表 示 它 那 我 們 今 天 訓 練 的 目 標 就 是 要 讓 這 些 正 方 形 它 的 分 布 跟 這 個 圈 圈 三 角 形 合 起 來 的 分 布 越 接 近 越 好 但 是 什 麼 叫 做 越 接 近 越 好 呢 左 邊 這 個 case 紅 色 的 點 跟 藍 色 的 點 它 們 也 算 是 蠻 align 在 一 起 的 也 算 是 分 布 蠻 接 近 的 右 邊 這 個 case 紅 色 的 點 跟 藍 色 的 點 它 們 也 算 是 分 布 蠻 接 近 的 但 是 你 覺 得 左 邊 比 較 好 還 是 右 邊 比 較 好 呢 好 我 們 試 試 看 這 邊 有 沒 有 可 能 進 行 互 動 欸 左 邊 覺 得 左 邊 比 較 好 的 同 學 你 就 在 聊 天 室 輸 入 一 個 1 欸 右 邊 覺 得 右 邊 比 較 好 的 同 學 你 就 在 聊 天 室 輸 入 一 個 2 好 我 們 看 看 有 沒 有 辦 法 做 互 動 好 那 我 順 便 回 答 一 下 同 學 的 問 題 proposed approach 後 面 括 號 的 百 分 比 是 什 麼 意 思 那 個 百 分 比 就 是 進 步 量 啦 就 是 進 步 量 那 個 沒 有 什 麼 特 別 的 的 意 思 好 然 後 呢 有 同 學 問 說 訓 練 資 料 只 有 source data 的 狀 況 哦 他 是 在 @ 別 人 他 在 回 答 別 人 的 問 題 好 好 大 家 都 選 2 大 家 都 選 2 也 有 同 學 選 -1 好 選 2 的 超 級 多 好 好 我 看 選 大 多 數 的 同 學 呢 都 覺 得 是 右 邊 沒 錯 很 多 人 也 覺 得 是 右 邊 所 以 我 們 是 不 是 應 該 要 讓 右 邊 的 狀 況 發 生 而 避 免 讓 左 邊 的 狀 況 發 生 呢 好 怎 麼 做 呢 怎 麼 讓 右 邊 的 狀 況 發 生 左 邊 的 狀 況 不 要 發 生 呢 也 許 一 個 可 能 的 想 法 是 我 們 既 然 知 道 藍 色 的 圈 圈 跟 藍 色 的 三 角 形 它 們 的 分 界 點 在 哪 裡 這 個 分 界 點 我 們 是 知 道 的 那 我 們 應 該 要 讓 這 些 方 形 雖 然 我 們 不 知 道 它 是 哪 一 個 類 別 但 我 們 讓 這 些 方 形 遠 離 這 一 個 分 界 點 怎 麼 讓 方 形 遠 離 這 個 分 界 點 呢 那 在 文 獻 上 就 有 很 多 不 同 的 做 法 啦 你 可 以 參 考 一 下 文 獻 看 看 你 覺 得 怎 麼 做 比 較 好 舉 例 來 說 一 個 最 簡 單 的 做 法 是 說 呃 今 天 我 有 很 多 unlabeled 的 圖 片 丟 到 feature extractor 再 丟 到 label predictor 以 後 我 不 知 道 它 是 哪 一 個 類 別 但 是 我 希 望 它 離 boundary 越 遠 越 好 那 什 麼 叫 做 離 boundary 越 遠 越 好 呢 如 果 今 天 輸 出 的 結 果 非 常 地 集 中 叫 做 離 boundary 遠 如 果 今 天 輸 出 的 結 果 每 一 個 類 別 都 非 常 地 接 近 叫 做 離 boundary 近 所 以 我 希 望 說 把 unlabled 的 image 丟 進 feature extractor 再 丟 進 label predictor 輸 出 的 結 果 它 離 boundary 越 遠 越 好 也 就 是 說 這 集 中 在 某 一 個 類 別 上 我 們 雖 然 不 知 道 它 應 該 算 是 哪 一 個 類 別 但 至 少 應 該 集 中 在 某 一 個 類 別 上 好 那 這 只 是 一 種 招 數 並 不 是 全 部 那 你 可 以 參 考 一 下 文 獻 比 如 說 有 一 個 知 名 的 方 法 叫 做 dirt-t dirt-t 這 個 dirt-t 它 其 實 它 paper 裡 面 還 特 別 告 訴 你 說 這 個 要 唸 dirty 要 唸 dirty 這 個 大 家 都 是 這 個 模 型 命 名 大 師 都 會 命 名 一 些 很 有 創 意 的 名 字 好 這 個 dirt-t 是 一 個 招 數 還 有 另 外 一 個 招 數 叫 這 個 maximum classifier discrepancy 如 果 你 要 在 這 個 domain adaptation 作 業 裡 面 得 到 最 好 的 結 果 的 話 那 這 些 招 數 是 不 可 或 缺 的 那 實 際 上 這 些 招 數 怎 麼 進 行 還 挺 複 雜 這 個 就 留 給 大 家 自 己 研 究 那 這 邊 還 有 一 個 問 題 什 麼 樣 的 問 題 呢 我 們 到 目 前 為 止 好 像 都 假 設 說 source domain 跟 target domain 它 的 類 別 都 要 是 一 模 一 樣 source domain 假 設 是 影 像 分 類 的 問 題 source domain 有 老 虎 獅 子 跟 狗 target domain 也 應 該 要 有 老 虎 獅 子 跟 狗 但 是 真 的 一 定 會 這 樣 嗎 target domain 是 沒 有 label 的 我 們 根 本 不 知 道 target domain 裡 面 有 什 麼 樣 的 類 別 而 在 這 個 圖 示 裡 面 這 個 實 心 的 實 線 的 圈 圈 代 表 source domain 裡 面 有 的 東 西 這 個 虛 實 線 的 圈 圈 代 表 target domain 裡 面 有 的 東 西 所 以 呢 有 沒 有 可 能 是 這 個 source domain 裡 面 的 東 西 比 較 多 target domain 裡 面 的 東 西 比 較 少 呢 有 沒 有 可 能 是 source domain 裡 面 的 東 西 比 較 少 target domain 的 東 西 比 較 多 呢 有 沒 有 可 能 兩 者 雖 然 有 交 集 但 是 各 自 都 有 獨 特 的 類 別 呢 這 都 是 有 可 能 發 生 的 所 以 在 這 個 前 提 之 下 你 說 source domain 跟 target domain 你 硬 要 把 它 們 完 全 align 在 一 起 聽 起 來 有 點 問 題 呀 因 為 舉 例 來 說 在 這 個 case 裡 面 哦 你 說 你 要 讓 source domain 的 data 跟 target domain 的 data 它 們 的 feature 完 全 match 在 一 起 那 意 味 著 說 你 硬 是 要 讓 老 虎 去 變 得 跟 狗 像 或 者 是 老 虎 硬 是 要 變 得 跟 獅 子 像 到 時 候 你 就 分 不 出 老 虎 這 個 類 別 了 聽 起 來 就 是 有 問 題 的 方 法 那 怎 麼 解 決 這 個 問 題 怎 麼 解 決 source domain 跟 target domain 它 可 能 有 不 一 樣 的 label 的 問 題 那 你 可 以 參 見 這 個 universal domain adaptation 這 篇 文 章 好 那 我 們 來 看 看 有 沒 有 同 學 有 問 題 要 問 的 好 有 同 學 問 說 如 果 feature extractor 是 cnn 而 不 是 linear layer 那 domain classifier input 就 是 feature map 拉 直 的 latent embedding 這 樣 latent space 學 到 的 東 西 把 兩 個 domain 分 部 彌 平 會 不 會 有 影 響 因 為 feature map 本 來 就 有 space 的 關 係 現 在 卻 硬 是 被 拉 直 你 說 得 非 常 對 真 的 你 說 得 非 常 對 就 是 feature extractor 它 是 一 個 複 雜 的 network 然 後 我 們 硬 是 要 把 兩 個 domain 的 東 西 拉 在 一 起 會 不 會 變 成 它 只 是 為 了 拉 在 一 起 而 拉 在 一 起 它 根 本 就 沒 有 學 到 我 們 本 來 希 望 這 個 feature space 學 到 的 東 西 呢 簡 單 的 回 答 就 是 會 會 所 以 domain adaptation 沒 有 大 家 想 像 得 那 麼 容 易 train 起 來 雖 然 好 像 剛 才 講 得 都 非 常 地 順 利 那 作 業 裡 面 可 以 自 己 體 驗 一 下 啦 這 個 domain adaptation 算 是 偏 難 做 的 一 個 作 業 所 以 呃 這 一 個 你 知 道 我 們 在 train 的 時 候 我 們 有 兩 件 事 情 有 兩 件 事 互 相 結 抗 一 個 是 要 去 騙 過 domain classifier 另 外 一 個 是 要 讓 分 類 變 正 確 那 我 們 期 待 說 這 兩 件 事 情 都 可 以 同 時 做 好 也 就 是 說 一 方 面 既 騙 過 domain classifier 一 方 面 又 分 類 分 得 好 那 就 同 時 把 兩 個 domain align 在 一 起 同 時 latent space 我 們 又 希 望 它 的 分 布 是 正 確 的 比 如 說 我 們 覺 得 1 跟 7 比 較 像 那 他 們 為 了 要 讓 classifier 做 好 那 今 天 你 的 feature extractor 就 會 讓 1 跟 7 比 較 像 然 後 1 跟 比 如 說 1 跟 4 比 較 不 像 它 就 讓 1 跟 4 拉 得 比 較 遠 一 點 我 們 期 待 說 藉 由 需 要 把 label predictor 的 performance 衝 高 這 件 事 情 latent representation 裡 面 的 這 個 space 仍 然 是 保 留 一 個 比 較 好 的 latent space 但 是 不 一 定 這 件 事 不 一 定 總 是 會 成 功 了 如 果 你 今 天 你 給 domain classifier 就 是 要 騙 過 domain classifier 這 件 事 情 的 權 重 太 大 你 的 model 就 會 學 到 說 它 都 只 想 騙 過 domain classifier 它 就 不 會 產 生 好 的 latent space 所 以 剛 才 同 學 問 的 問 題 確 實 是 有 可 能 會 發 生 的 所 以 大 家 在 實 做 的 時 候 這 個 也 是 有 些 參 數 要 調 的 好 好 希 望 這 樣 有 回 答 到 同 學 的 問 題 好 那 接 下 來 還 有 一 個 更 嚴 峻 的 狀 況 剛 才 我 們 是 假 設 說 沒 有 labeled data 但 至 少 有 一 大 堆 這 個 時 候 你 還 可 以 說 我 要 把 兩 個 space 呢 把 它 拉 在 一 起 但 是 有 一 個 可 能 是 假 設 不 只 沒 有 label 而 且 data 還 很 少 比 如 說 我 就 只 有 一 張 而 已 這 個 時 候 你 只 有 一 張 你 的 這 個 target domain 只 有 一 張 只 有 一 個 點 你 根 本 沒 有 辦 法 跟 那 個 source domain 把 它 align 在 一 起 這 個 時 候 怎 麼 辦 呢 假 設 target domain 的 data 非 常 少 的 時 候 怎 麼 辦 呢 也 不 是 沒 有 方 法 啦 有 一 個 方 法 叫 做 testing time training 它 的 縮 寫 是 ttt 這 個 我 們 就 把 連 結 附 在 這 邊 給 大 家 參 考 testing time training 就 是 想 要 處 理 假 設 我 的 target domain 沒 有 label 而 且 還 只 有 一 張 的 時 候 到 底 應 該 要 怎 麼 辦 但 其 實 還 有 一 個 更 嚴 峻 的 狀 況 這 個 狀 況 是 如 果 我 什 麼 都 不 知 道 怎 麼 辦 呢 如 果 我 們 對 target domain 一 無 所 知 的 話 怎 麼 辦 呢 這 個 時 候 又 分 成 兩 種 情 形 對 target domain 一 無 所 知 的 這 種 問 題 這 個 時 候 我 們 就 不 叫 domain 的 adaptation 通 常 就 叫 domain generalization 因 為 我 們 並 不 是 要 adapt 到 某 一 個 特 定 的 domain 上 我 們 對 那 個 特 定 的 domain 已 經 一 無 所 知 了 我 們 是 期 待 今 天 機 器 學 到 domain generalization 在 testing 的 時 候 不 管 來 什 麼 神 奇 的 domain 它 都 可 以 處 理 那 domain generalization 又 分 成 兩 種 狀 況 一 種 狀 況 是 我 的 訓 練 資 料 非 常 地 豐 富 本 來 就 包 含 了 各 式 各 樣 不 同 的 domain 假 設 你 要 做 貓 狗 的 分 類 器 那 你 現 在 呢 在 訓 練 資 料 裡 面 有 真 實 的 貓 跟 狗 的 照 片 有 素 描 的 貓 跟 狗 的 照 片 然 後 有 這 個 水 彩 畫 的 貓 跟 狗 的 照 片 期 待 因 為 訓 練 資 料 有 多 個 domain 模 型 可 以 學 到 如 何 彌 平 domain 間 的 差 異 今 天 有 測 試 資 料 是 卡 通 的 貓 跟 狗 它 也 可 以 處 理 這 是 一 種 狀 況 那 這 種 狀 況 你 還 比 較 能 夠 想 像 要 怎 麼 處 理 那 我 們 這 邊 就 不 細 講 我 們 都 只 各 放 一 些 有 代 表 性 的 論 文 給 大 家 參 考 但 還 有 另 外 一 種 你 會 覺 得 真 的 不 知 如 何 下 手 的 狀 況 是 假 設 訓 練 資 料 只 有 一 個 domain 呢 假 設 你 的 訓 練 資 料 只 有 一 個 domain 而 測 試 資 料 有 多 種 不 同 的 domain 的 話 怎 麼 處 理 呢 在 文 獻 上 也 不 是 沒 有 人 試 也 是 有 人 試 著 去 解 惑 這 種 問 題 的 那 他 怎 麼 做 呢 這 細 節 我 們 就 不 講 啦 在 概 念 上 就 是 有 點 像 是 data augmentation 雖 然 你 只 有 一 個 domain 的 資 料 想 個 data augmentation 的 方 法 去 產 生 多 個 domain 的 資 料 然 後 你 就 可 以 套 上 面 這 個 secnario 來 做 做 看 看 能 不 能 夠 在 測 試 的 時 候 新 的 domain 都 可 以 做 好 好 這 個 是 domain generalization 好 那 這 個 部 分 就 是 很 簡 短 的 跟 大 家 帶 過 這 個 domain adaptation 的 種 種 技 術 更 多 的 細 節 在 下 一 堂 課 助 教 的 說 明 裡 面 都 還 會 跟 大 家 仔 細 地 說 明 我 們 在 這 邊 呢 就 先 休 息 5 分 鐘 休 息 一 下 然 後 我 們 等 一 下 再 回 來 
Okay, after finishing the topic on Domain Adaptation We'll take a brief break Then, the next part will be a video lecture by the teaching assistant Actually, the teaching assistant's explanation on Domain Adaptation Was very clear So we'll go through here a bit quickly If there's something you didn't understand Actually, after the teaching assistant's video lecture You'll have another chance to listen again If there's something I said later Though I speak a bit fast But you've already understood very well So when the teaching assistant's recording is played later Take a break and do something else Well, then we Let's start with the part about Domain Adaptation Good, so far We have trained a lot of Machine Learning Models So for everyone Training a Classifier is not a problem at all So if you're asked to train a digit Classifier All you need is your training data Once you've trained a model And apply it to your test data, it's all done So, in case of a simple problem such as digit recognition In the Benchmark Corpus Or in the MNIST Benchmark Corpus Just give it a shot You can probably achieve a 99.5% accuracy rate But what if today's test data Doesn't have the same distribution as the training data What do we do then? Let's start with a simple example Suppose during training your numbers are black and white but when testing your numbers are in color What will happen then? You might think that one side is black and white while the other is although one side is black and white and the other is in color but to the model the shape of the numbers is the same It can recognize numbers on black and white pictures On the colored picture. Could it also be able to recognize numbers? But in reality, it's not If you are on such black and white numbers today Train a model Directly used on colored numbers The accuracy you get will be very low It can be lowered to only 57% It's not a passing score So we know today Once there is a difference between the training data and the testing data There are some disparities in between Their distributions are not identical The model you trained based on the training data May fail when applied on the testing data Such a problem is called Domain Shift That is, when your training data and testing data Have somewhat different distributions This situation is referred to as Domain Shift In most of these tasks Or inside the Benchmark Corpus We assume to ignore the issue of Domain Shift Our training data and testing data Often have the same distribution This will give everyone a false impression. Wow, this is today's artificial intelligence It's truly remarkable They've surpassed humans. It has a high accuracy rate in many tasks But in actual use in real-world applications, When your training data is in between the test data. When there's a slight divergence Can machines do a good job It's an unknown quantity now So, today we're here to talk about Assuming that the training data and the test data When there's a slight difference Is there a method that could help us, Doing something is better than doing nothing Alright, today we are going to discuss Domain Adaptation techniques The technology of Domain Adaptation Can also be seen as a type of Transfer Learning How should I put it Transfer Learning is The skills you learned in Task A It can be used on task B For Domain Adaptation. Your training data is a Domain Your test data is from another Domain You are working on the training data Information learned from a certain Domain You have to apply it to another Domain to the testing data So you are taking the knowledge learned from one domain Used on another Domain So it can be considered as One of the aspects of Transfer Learning That's in the video footage from past classes A complete lecture on Transfer Learning techniques was given. Because our time today is limited We just focus on The part for Domain Adaptation is good enough If you are interested You can go back and watch the lecture recordings Okay, that's Domain Shift There are actually many different types What we just saw It's just one of the possibilities of a Domain Shift. It's a situation where the distribution of the data input to the model changes The change in the input distribution is a possibility Actually, there's another possibility The output distribution could also change For example, in your training data, The probability of each number appearing might be the same But on the test data The probability of each output might be different it's possible that a certain number could generate an especially large probability, Is it possible for this to happen? This is also possible Then this is also a kind of Domain Shift There is a rarer, more uncommon method But it's not an entirely impossible situation Although the input and output might have the same distribution But their relationship has changed Perhaps in your training data This thing is called 0 But in your test data This thing is called 1 This isn't impossible. This kind of situation could also occur There is still a possibility that The relationship between the input and output is not the same In situations where the training and testing data are different Then this is another type of Domain Shift Then today, we will only focus on The Domain Shift above different input data Alright, in the upcoming lecture This is the test data We say it comes from the data trained on the Target Domain We say it originates from the Source Domain, So Source Domain is our training data Target Domain is our test data Okay, in Domain Adaptation Our scenario is like this, We have a bunch of training data Here, we directly use handwriting digit recognition Use it as our example We have a bunch of training data These data come from the Source Domain Moreover, these training data are labeled We know what number corresponds to each picture But we hope to use these data again. Train a model This model can be applied to different Domains To apply this model to a different Domain When training We have to approach another domain Which is the Target Domain where the current test data resides. Some understanding The depth of understanding varies We have different methods of Domain Adaptation The one that understands the most is Assuming we are on the Target Domain We only have a bit of data And these data surprisingly have Labels This is a situation But there's another better situation Maybe you're basically on the Target Domain Had a lot of data Those data also have labels Then, you actually do not need to do Domain Adaptation You can directly use the data from the Target Domain for training So, if you're on the Target Domain There is already a lot of data And they also have annotations Then, you don't need to do Domain Adaptation The situation for Domain Adaptation might be You have data from the Target Domain and it's labelled But the amount is very small So, what to do in this situation? Then this kind of situation is still considered within the scope of Domain Adaptation Easier situation to handle If you encounter... We have annotated data, it's just that the data volume is very small You can use these annotated data To fine-tune the model you trained on the Source Domain So the so-called fine-tuning here It's very similar to when you were working with BERT You already have one on the Source Domain The well-trained Model Then you take the data from the Target Domain Running a couple of epochs would suffice. Ok, in this type of scenario What you need to pay attention to is... Because the amount of data from your Target Domain is very small So, be careful not to overfit. In other words, you shouldn't rely only on the data from the Target Domain. Running too many iterations So what should you do if you run too many iterations It may overfit to these small amount of target data And then, you don't do well on your real Testing Set This is possible So, to prevent overfitting, There have been many solutions in the past For example, make the Learning Rate a little smaller For example, before you start fine-tuning and the parameters of the fine-tuned model There should not be a huge difference. Or before fine-tuning With the fine-tuned model The relationship between its input and output Not to have a big difference and so on There are many different methods As for this part, we won't go into detail Well, the main scenario I want to share with you today is This is also the situation we need to deal with in our assignment We have a wealth of data in the Target Domain But these data are unlabelled Your Target Domain is colored numbers You've also collected a bunch of images of colored numbers But no one marked it What is the number in each image What we need to deal with in the assignment is When encountering this kind of situation What exactly should be the solution? Okay, what should be the solution? In situations like these Actually, it matches quite well with how you do in the real system Possible scenarios that might occur For instance, you trained a model in the lab You want to use it in real fields You just have to launch your model. Indeed, some people came to use it But, you find the feedback you get is poor Everyone dislikes your system because the accuracy is very low What should we do But at this moment, Perhaps you can use the technique of Domain Adaptation Because your system is already online There are indeed people who use this So you can gather a lot of data Only these data are not labeled The question now is How to use these unlabeled data to assist us in the Source Domain. Training a model It can be used in the target domain And the most basic idea here looks like this. The basic concept here is like this We want to find a Feature Extractor This Feature Extractor In fact, it is also a Network. This network takes a picture as input It emits a Vector Spit out a feature Although Source Domain and Target Domain are related Their images look different on the surface But the Feature Extractor, This will remove their differences Only extract the parts they have in common So even though it looks from the picture These two pictures, one has color and another does not It's fundamentally different from the start But we expect to say This Feature Extractor can learn Ignoring the matter of color To filter out the information about color Whether it's a picture from the Source Domain today It's still from the pictures of the Target Domain. Just after passing this Feature Extractor, The Feature it obtains seems to have no difference They seem to have the same distribution Then you can use these Features Train a model Train a model on the Source Domain Apply it directly to the target domain The next question would be How to find such a Feature Extractor Alright, how do we find such a Feature Extractor? In fact, we can make an ordinary Classifier It's divided into Feature Extractor And the two parts of the Label Predictor We know a Image Classifier. It's about inputting an Image and getting an Output Which is the result of the classification Let's assume this Image's Classifier has 10 layers Then we say The first 5 layers could be regarded as Feature Extractor The last five layers are considered as the Label Predictor Because of the first 5 layers Your one image passes through the first five layers Its output is a Vector If you go on CNN What it outputs is actually a Feature Map Even when the Feature Map is straightened It can also be considered as a Vector, right? This vector Throwing it to the back five layers of the Label Predictor is also fine. It will generate a class So, we can take the first five layers Regarded as a Feature Extractor Then you might ask Why are there only 5 layers? Why not the first 4 layers, the first 3 layers, the first 2 layers, the first layer? It can be the first 4, the first 3, the first 2, the first 1 It's your own decision Inside a Classifier Which parts are considered the Feature Extractor Which parts are considered a Label Predictor This is what you decide This is also considered a Hyper Parameter Just like adjusting the Network architecture We need to adjust something What if you today Using the method of Domain Adaptation The method that we're going to use here is called Domain Adversarial Training Using Domain Adversarial Training Which part or layers inside the Classifier should you use Use it as a Feature Extractor You also have to ask yourself Well, this is something you have to decide on your own Okay, how are we going to train this now? The Feature Extractor and Label Predictor Today, regarding the data on the Source Domain The data on the Source Domain is labeled We look forward to throwing the Source Domain data in Then go and train a regular classifier as usual It passes through the Feature Extractor And then go through the Label Predictor It can produce the correct answer But the difference is These data from the target domain We have a bunch of data from the Target Domain But these data are not labeled at all These data are without any annotations So we can't say After throwing these data in Anticipating what number the Label Predictor will output Because we have no idea about the Label Predictor What number should be outputted correctly But how can these data be used? This is how these data are used We throw these pictures into this Image Put it into this Image Classifier Then we take Take a look at the output of the Feature Extractor After taking a look at it We hope that the images from the Source Domain The Feature that's thrown in Features thrown in with Target Domain's pictures They seem indistinguishable This is the image of the Source Domain We use its Feature We illustrate with blue dots Images of the target domain Its features are represented by red dots We need these blue points and these red points Can't distinguish the differences So how do we distinguish between the blue points and the red points? Cannot distinguish the differences This needs to be achieved by The technology of Domain Adversarial Training If you think this section is a bit fast later on It doesn't matter. The assistant will explain this in more detail later Alright, what we have to do now is Training a Domain Classifier This Domain's Classifier It's a binary classifier It takes this Vector as input What it needs to do is to judge This Factor is derived from the Source Domain It still comes from the Target Domain It needs to judge this Factor Comes from the Source Domain. Or is it from the Target Domain And the objective that the Feature Extractor is learning The aim is to trick the Domain Classifier Hearing about this deception Hey, does it come to mind? The thing called Gan Did it just appear This thing called Generative Adversarial Network Yes, Domain Adversarial Training It's very much like Gan You can regard the Feature Extractor Think of it as Generator Take the Domain Classifier, Consider it as Discriminator Actually, Domain Adversarial Training The earliest paper I remember it was published at ICML in 2015 It's a bit later than that Gan But they could almost be considered works of the same period. In the Domain Adversarial Training paper It cited the Gan paper But at that time, the Gan paper It hasn't been to NeurIPS yet So it simply states Hey, there is another paper It proposed an idea called Gan And it's a technical report posted online It's somewhat similar to my idea So they are considered works from the same period Okay, but when we come to this point This Domain Adversarial Training It's a bit different from Gan In this game The Generator seems to have too much advantage From the perspective of the Generator It has to fool the Discriminator No effort is needed at all There's a very thoughtless approach It's your Feature Extractor So it's your Generator No matter what input it sees, Just always output 0 When I see any input, I always output a Zero Factor In the case of the Domain Classifier It has no idea what the Input Image is It always sees Zero Factor It can't distinguish this Factor at all Coming from which domain But clearly, this is not the situation we want. If the Feature Extractor only outputs Zero Factor So it's like nothing was done at all Will this happen? Actually, this will not happen Why Because the Label Predictor also needs this feature The Label Predictor also needs this Feature Allowing it to make the decision Which category does the input picture belong to? So, suppose the Generator directly uses a powerful move No matter what kind of image is inputted today My output is always Zero Factor As for the Label Predictor It can't determine which picture it is In this case, Because of the Feature Extractor It still needs to generate this Factor It allows the Label Predictor to generate the correct picture So, the Feature Extractor can't be magnified infinitely It can't see anything Always output Zero Factor Okay, what about this side? Let's use symbols to recap what we've just explained Say it again, but clearer this time Assuming the parameters of the Label Predictor Let's call it θp The parameters for the Domain Classifier are called θd And the parameter of Feature Extractor is called θf Then, these images on this Source Domain Its Classification's Cross Entropy Like these Image from the Source Domain It is labeled So you can calculate their Cross Entropy You follow their Cross Entropy Establish a loss And for θp, it's Oh, we haven't talked about θp here Over here there's an L L represents this particular Domain Those images on this source domain It has a Label You can calculate the Cross Entropy And for the Classifier of this Domain It's trying to distinguish The gap between Source and Target Domain It is going to do one The problem of Binary Classification It is designed to solve a binary classification problem This classification problem has a loss named Ld So now, we need to find a θp, It can make this L as small as possible We have to find a θd It can make this Ld as small as possible You said what the Label Predictor needs to do It allows the images from the Source Domain The more accurate the classification, the better What Domain Classifier needs to do It's about making the classification of the Domain as accurate as possible And what about the Feature Extractor The job of the Feature Extractor is It stands on the side of the Label Predictor Then, it has to take a strike at the Domain Classifier It wants to do the opposite of what the Domain Classifier does So this Feature Extractor Its Loss is the Loss L of Label Predictor And reducing the loss of the Domain Classifier Called Ld Oh, so the Loss of the Feature Extractor It's actually Big L minus Ld You need to find a parameter, a set of parameters θf It can make the value of L subtract Ld as small as possible Okay, this is the most original The method of Domain Adversarial Training But is this really the best approach? You can think about it We won't go into details about this I leave this for everyone to think about and discover on their own Think about it Assume the job of the Domain Classifier The goal is to separate Source Domain and Target Domain It's about seeing this kind of image It knows its feature comes from the Source Domain When seeing this kind of image It knows its Feature comes from the Target Domain It needs to separate these two groups of features If the Loss of the Feature Extractor, Is to directly add a negative sign to the Domain Classifier What does that mean? This means it has a task to do Which is opposite to the Domain Classifier Originally, the Domain Classifier saw the features in this image It is said to be the Source That's the Feature Extractor now The purpose is to let the Domain Classifier see this image It says it's a target If you look at this image, it's called a Source when reversed If you do this Didn't they also separate the two sets of Features? We say what we are about to do now. is to let Domain and There is no difference between this Source and Target Domain. But no matter you use Ld today, Still a negative Ld Actually, it is necessary to Separate the Source and Target Domain You let the value of Ld The original Domain Classifier The goal is to minimize the value of Ld You are currently in the negative Ld. The Feature Extractor needs to make the value of Ld as large as possible It also separates the Source and Target Domain So this might not be the best approach As to how to do it, Of course, this method is useful This trick is useful But how can we do it even better, Hey, let's leave this for everyone to think about slowly Alright, let us take a look Domain Adversarial Training The most original paper So, what is the result of it? The moment I saw this Paper I really find the results astounding Okay, over here, it has performed four tasks. The upper part is the picture of the Source Domain In fact, all of this is digital recognition What about the lower half? They are pictures from the Target Domain Okay, if it happens today We use images from the Target Domain for training Use pictures from the Target Domain for Testing So the result looks like this The accuracy of each task is over 90%. But if you say We are doing Source Domain Training today Target Domain Testing Train on black and white numbers Testing on colored numbers The result is a disaster Wow, this is a direct disaster, it can't be done The results were a disaster What if we add Domain Adversarial Training? How did it turn out? You would realize that if we were only to train on black and white images It's tested on colored images Accuracy 57.5 If Domain Adversarial Training is applied today, The accuracy rate will skyrocket to 81% The progress on many other tasks is quite obvious From 59 to 71 From 74 to 88.7 The progress made is quite noticeable This is what we call Domain Adversarial Training Let's pause here for a second Check if any classmates have questions. Oh, okay Let me see Okay, a classmate asked, Domain Classifier Is this similar to k-means clustering Hey, no It's a binary classifier That 'Domain' Classifier It is a Network It can also have many layers The number of layers is also decided by you So it is not one This k-means clustering It is a Classifier It needs to be trained to recognize one Input a feature vector Then, the Output is that it belongs to the Source Domain Or is it Target Domain? Oh, a classmate helped me answer Oh, it's the teaching assistant Okay, the assistant teacher answered for me Good Okay, let's continue then Okay, this whole idea just now There's still a limitation There's a small issue What kind of minor problems? Let's take a look Today, the blue circle and the blue triangle It represents two classes on the Source Domain, We could of course find a Boundary Separate these two sets of Class. For the Data on the Target Domain We have no labels for any class We can only say all the data of the target domain We are using this square to represent it Our training goal today The goal is to figure out the distribution of these squares The closer the distribution is to this circle and triangle combined, the better But what does 'the closer, the better' mean This case on the left The red dots and the blue dots They are also quite aligned together You could say the distribution is quite similar This case on the right The red dot and the blue dot. They are also considered fairly close in distribution But you think the left side is better Or maybe the right side is better Alright, let's see if there's a possibility of interaction here Hey, the left side Students who think the left side is better You simply type a 1 in the chat room Hey, to the right Students who think the right side is better You just type a 2 in the chat room Okay, let's see if we can interact Okay, I will answer the student's question in the meantime Proposed Approach What does the percentage in parentheses mean? That percentage. That's the amount of progress It's the amount of progress There is no particular meaning Good Then, a student asked The situation where only Source Data is available for training Oh, he's tagging someone He is answering other people's questions Good Alright, everyone chose 2 Everyone chose 2 Some students chose -1 Ok Choosing 2 there's a lot, great Okay, I see most of the students have chosen this We all perceive it as the right side That's correct, many people also think it's on the right. So, should we make the situation on the right happen? And to prevent the situation on the left from happening? Okay, how to do it How to make the situation on the right happen Don't let the situation on the left happen Perhaps, one possible idea is Since we know about the blue circles and blue triangles Where is their boundary? We know this boundary Then, we should enable these squares Although we don't know which category it belongs to But we keep these squares away from this dividing point How to keep the square away from this boundary There are many different methods documented in the literature. You can refer to the literature See what you think would be the best approach For example, the simplest method is to say Uh, I have a lot of Unlabeled pictures today Throw it into the Feature Extractor After throwing it into the Label Predictor I don't know which category it belongs to But I hope it's as far away from the Boundary as possible What does it mean that the further from the Boundary, the better? If the output results are very concentrated today To be called away from Boundary If the result output today is very close in every category It's called being close to the Boundary So I hope to apply the unlabeled images Put it into the Feature Extractor Then put them into the Label Predictor The output result The further from the Boundary, the better That is to say, it concentrates on a certain category Although we are unsure which category it should belong to But at least it should focus on a certain category Alright, this is just a trick Not all of it You may refer to the literature For instance, there's a renowned method known as DIRT-T DIRT-T This DIRT-T, it is actually It even specially tells you in the Paper This should be read as Dirty The pronunciation is Dirty This is a commonly used model naming convention Always naming some very creative names Okay, this DIRT-T is a move We have another trick called this, Maximum Classifier Discrepancy If you want to proceed in this Domain Adaptation assignment, To obtain the best results These tricks are indispensable, So, how exactly should these tactics be carried out? It's quite complex I'll leave this for everyone to research Then there is another question here What kind of problem is it? Up to now, It seems all assumed to say Source Domain and Target Domain The categories should all be identical. Let's say the source domain is a problem of image classification The Source Domain includes tigers, lions, and dogs The Target Domain should also have tigers, lions, and dogs But will it really be like this? The Target Domain does not have a label We have no idea what's inside the Target Domain. What kind of categories are there? In this illustration, the solid one represents The solid circles represent Things that exist in the Source Domain This circle with dashed and solid lines Represents something within the Target Domain, So, is it possible that The content within this Source Domain is more substantial There are fewer things in the Target Domain Is there a possibility that There are fewer items in the Source Domain There are more things in the Target Domain Is it possible that the two have an intersection But each has its own unique category All of these could potentially happen So, under this premise You're talking about Source Domain and Target Domain If you insist on aligning them completely Sounds like there's a problem For instance, in this case Oh, you said you want to let the data of Source Domain With the data from the Target Domain Their Features completely match together This implies that You insist on making the tiger look like a dog Or it's about the tiger wanting to look like the lion Eventually, you won't be able to differentiate the category of the tiger It sounds like a problematic method So how do we solve this problem How to solve the Source Domain and Target Domain It may have different Label issues You can refer to this This paper on Universal Domain Adaptation Alright, let's see if any students have questions to ask Okay, a student asked If the Feature Extractor is CNN rather than a Linear Layer That Domain Classifier Input Which is the Feature Map Straightened Latent Embedding What Latent Space has learned in this way Would smoothing over two Domains cause any impact Because the Feature Map inherently has a relationship with Space Now it is forcibly straightened You are absolutely right You're absolutely right which is the Feature Extractor It's a complex network And we have to insist Pulling things from two Domains together. Could it be that it's only pulled together just to be together It hasn't learnt anything at all We originally hoped What this Feature Space has learned The simple answer is yes Will So, Domain Adaptation It's not as easy to train as everyone imagines Although it seems to have gone very smoothly as I just said You can experience it by yourself in the assignment This Domain Adaptation This is somewhat a difficult task So, uh, this one You know when we're training We have two things Two things are opposing each other. One way is to deceive the Domain Classifier Another thing is to make the classification correct We expect that these two things can both be done well at the same time. In other words, to some extent, fool the Domain Classifier On one hand, the classification was done well Then align the two domains together At the same time, Latent Space We hope its distribution is correct For example, we think 1 and 7 are more similar They are trying to make the Classifier work Your Feature Extractor of today It will make 1 and 7 look similar And 1 and, For example, 1 and 4 don't look alike it aims to distance 1 and 4 a bit more, What we expect is, It works by improving the performance of the Label Predictor About this surge The space in this latent representation While still preserving a better Latent Space But it's not a guarantee, this thing might not always succeed If you give the Domain Classifier today The goal is to deceive the Domain Classifier The weight of this matter is too heavy Your Model will also learn to say It only wants to deceive the Domain Classifier It won't create a good Latent Space So as the student asked earlier Indeed, it's possible happen. So when everyone is implementing There are also some parameters to adjust Okay Okay, hope this answers the student's question Okay, next, there's an even more serious situation We previously assumed that we do not have Labeled Data But at least there's a lot You can still say this at this moment I'm going to bring the two Spaces together But one possibility could be Assume not just lack of labels And there is very little Data For example, I only have one At this point, you only have one You have only one Target Domain There's only one point You simply can't interact with that Source Domain Align it together What should we do at this moment? Imagine when there's very little data in the target domain What to do It's not like there are no solutions Have a method called Testing Time Training Its abbreviation is TTT We've included the link here for your reference, During Testing Time, dealing with it is what Training is for Assuming my Target Domain doesn't have a Label And when there's only one of them What should you do But there's actually a more severe situation This situation is What should I do if I don't know anything? If we know nothing about the Target Domain What should we do At this time, it splits into two scenarios The problem of knowing nothing about the Target Domain At this point, we don't call it Domain Adaptation It's usually called Domain Generalization Because what we are trying to do is not Adapt to a specific Domain We know nothing about that particular Domain We expect the machine to learn today Domain Generalization During the Testing Regardless of what magical Domain comes along, It can handle all of that That is Domain Generalization There are two kinds of situations One situation is that my training data is very rich Originally it included a variety of different Domains Assume you are creating a classifier for cats and dogs What about you right now, in the training data There are real photos of cats and dogs There are pictures of cats and dogs sketched And then there's this watercolor painting of a cat and a dog Expect multiple Domains in the training data The model can learn how to bridge the gap between Domains Today, the test data is about cartoon cats and dogs It can also handle This is a situation Can you imagine how to handle this situation more? Then we won't go into detail here We only put some representative papers For everyone's reference But there's another one You might feel really unsure about where to start What if the training data only has one domain Assume that your training data only has one domain If there are multiple different Domains in the test data How to deal with it It's not like no one has tried in the literature There are people trying to solve such problem So how does he do it We won't go into these details Conceptually, it is somewhat similar to Data Augmentation Although you only have data from one Domain Think of a Data Augmentation method To generate data for multiple domains Then, you can try using this Secnario. Let's see if we can during the test. The new domain can be done well Well, this is Domain Generalization Alright, this section is just a brief overview for everyone The various techniques of Domain Adaptation More details Within the explanation by the teaching assistant in the next class We will still carefully explain to everyone Let's take a 5-minute break here Take a break, and we'll be back later 