好 那 個 接 下 來 我 們 要 講 auto-encoder 那 auto-encoder 我 們 可 能 先 講 一 小 段 以 後 我 們 就 下 課 休 息 一 下 然 後 我 再 把 auto-encoder 的 部 分 補 完 然 後 等 一 下 助 教 就 會 講 跟 auto-encoder 有 關 的 作 業 好 那 我 們 來 講 auto-encoder 那 在 講 auto-encoder 之 前 其 實 auto-encoder 也 可 以 算 是 self-supervised learning 的 一 環 所 以 再 讓 我 們 用 非 常 短 的 時 間 來 看 一 下 self-supervised learning 的 framework 那 self-supervised learning 是 怎 麼 運 作 的 首 先 你 有 大 量 的 沒 有 標 註 的 資 料 用 這 些 沒 有 標 註 的 資 料 你 可 以 去 訓 練 一 個 模 型 你 必 須 發 明 一 些 不 需 要 標 註 資 料 的 任 務 比 如 說 做 填 空 題 比 如 說 預 測 下 一 個 token 你 必 須 要 自 己 想 一 些 不 需 要 標 註 資 料 的 任 務 給 你 的 模 型 進 行 學 習 那 這 個 不 用 標 註 資 料 的 學 習 叫 做 self-supervised learning 或 者 是 也 有 人 叫 pre-training 那 用 這 些 不 用 標 註 資 料 的 任 務 學 完 一 個 模 型 以 後 它 本 身 沒 有 什 麼 用 bert 只 能 做 填 空 題 gpt 只 能 夠 把 一 句 話 補 完 但 是 你 可 以 把 它 用 在 其 他 下 游 的 任 務 裡 面 你 可 以 把 self-supervised learning 的 model 做 一 點 點 的 微 微 的 調 整 就 可 以 用 在 下 游 的 任 務 裡 面 那 在 這 些 self-supervised learning 的 任 務 裡 面 在 這 些 不 用 標 註 資 料 就 可 以 學 習 的 任 務 裡 面 在 有 bert 在 有 gpt 之 前 其 實 有 一 個 更 古 老 的 任 務 更 古 老 的 不 需 要 用 標 註 資 料 的 任 務 就 叫 做 auto-encoder 所 以 你 也 可 以 把 auto-encoder 看 作 是 self-supervised learning 的 一 種 pre-train 的 方 法 當 然 可 能 不 是 所 有 人 都 會 同 意 這 個 觀 點 有 人 可 能 會 說 這 個 auto-encoder 不 算 是 self-supervised learning 這 個 auto-encoder 很 早 就 有 了 嘛 2006 年 15 年 前 就 有 了 嘛 然 後 self-supervised learning 是 19 年 才 有 這 個 詞 彙 嘛 所 以 auto-encoder 不 算 self-supervised learning 的 一 環 那 這 個 都 是 見 仁 見 智 的 問 題 這 種 名 詞 定 義 的 問 題 真 的 我 們 就 不 用 太 糾 結 在 這 個 地 方 從 self-supervised learning 它 是 不 需 要 用 label data 來 訓 練 這 個 觀 點 來 看 auto-encoder 我 認 為 它 可 以 算 是 self-supervised learning 的 其 中 的 一 種 方 法 它 就 跟 填 空 預 測 接 下 來 的 token 是 很 類 似 的 概 念 只 是 用 的 是 另 外 不 一 樣 的 想 法 好 那 接 下 來 我 們 就 來 先 看 一 下 auto-encoder 是 怎 麼 運 作 的 好 那 auto-encoder 是 怎 麼 運 作 的 呢 那 現 在 我 們 因 為 剛 才 在 講 self-supervised learning 的 時 候 都 是 用 文 字 做 例 子 那 現 在 我 們 換 成 用 影 像 來 做 例 子 假 設 你 有 非 常 大 量 的 圖 片 在 auto-encoder 裡 面 你 有 兩 個 network 一 個 叫 做 encoder 一 個 叫 做 decoder 他 們 就 是 兩 個 network 這 兩 個 network 做 的 事 情 是 什 麼 這 兩 個 network 做 的 事 情 是 encoder 把 一 張 圖 片 讀 進 來 它 把 這 張 圖 片 變 成 一 個 向 量 就 encoder 它 可 能 是 很 多 層 的 cnn 把 一 張 圖 片 讀 進 來 它 的 輸 出 是 一 個 向 量 接 下 來 這 個 向 量 會 變 成 decoder 的 輸 入 decoder 會 產 生 一 張 圖 片 所 以 decoder 的 network 的 架 構 可 能 會 像 是 gan 裡 面 的 generator 它 是 11 個 向 量 輸 出 一 張 圖 片 不 管 是 encoder 還 是 decoder 反 正 就 是 多 層 的 network 那 現 在 訓 練 的 目 標 是 什 麼 訓 練 的 目 標 是 希 望 encoder 的 輸 入 跟 decoder 的 輸 出 越 接 近 越 好 假 設 你 把 圖 片 看 作 是 一 個 很 長 的 向 量 的 話 我 們 就 希 望 這 個 向 量 跟 decoder 的 輸 出 這 個 向 量 這 兩 個 向 量 他 們 的 距 離 越 接 近 越 好 也 有 人 把 這 件 事 情 叫 做 reconstruction 叫 做 重 建 因 為 我 們 就 是 把 一 張 圖 片 壓 縮 成 一 個 向 量 接 下 來 decoder 要 根 據 這 個 向 量 重 建 原 來 的 圖 片 那 我 們 希 望 原 輸 入 的 結 果 跟 重 建 後 的 結 果 越 接 近 越 好 講 到 這 邊 你 可 能 會 發 現 說 這 個 東 西 這 個 概 念 似 曾 相 似 沒 錯 我 們 在 講 cycle gan 的 時 候 已 經 講 過 了 這 個 概 念 對 不 對 我 們 說 在 做 cycle gan 的 時 候 我 們 會 需 要 兩 個 generator 第 一 個 generator 把 x domain 的 圖 片 轉 到 y domain 另 外 一 個 generator 把 y domain 的 圖 片 轉 回 來 希 望 最 原 先 的 圖 片 跟 轉 完 兩 次 後 的 圖 片 越 接 近 越 好 那 這 邊 encoder 和 decoder 這 個 auto-encoder 的 概 念 跟 cycle gan 其 實 是 一 模 一 樣 的 都 是 希 望 所 有 的 圖 片 經 過 兩 次 轉 換 以 後 要 跟 原 來 的 輸 出 越 接 近 越 好 而 這 個 訓 練 的 過 程 完 全 不 需 要 任 何 的 標 註 資 料 你 只 需 要 蒐 集 到 大 量 的 圖 片 你 就 可 以 做 這 個 訓 練 所 以 它 是 一 個 unsupervised learning 的 方 法 跟 self-supervised 那 一 系 列 pre-training 的 做 法 一 樣 你 完 全 不 需 要 任 何 的 標 註 資 料 那 像 這 樣 子 這 個 encoder 的 輸 出 有 時 候 我 們 叫 它 embedding 我 們 在 講 bert 的 時 候 也 提 過 embedding 這 個 詞 彙 了 那 有 的 人 叫 它 representation 有 的 人 叫 它 code 因 為 encoder 是 一 個 編 碼 嘛 所 以 這 個 有 人 把 這 個 vector 叫 做 code 那 其 實 指 的 都 是 同 一 件 事 情 好 那 這 個 auto-encoder 的 技 術 要 怎 麼 用 呢 怎 麼 把 train 的 auto-encoder 用 在 downstream 的 任 務 裡 面 呢 常 見 的 用 法 就 是 原 來 的 圖 片 你 也 可 以 把 它 看 作 是 一 個 很 長 的 向 量 但 這 個 向 量 太 長 了 不 好 處 理 那 怎 麼 辦 呢 你 把 這 個 圖 片 丟 到 encoder 以 後 輸 出 另 外 一 個 向 量 這 個 向 量 你 會 讓 它 比 較 短 比 如 說 只 有 10 維 只 有 100 維 那 你 拿 這 個 新 的 向 量 來 做 你 接 下 來 的 任 務 也 就 是 圖 片 不 再 是 一 個 很 高 維 度 的 向 量 它 通 過 encoder 的 壓 縮 以 後 變 成 了 一 個 低 維 度 的 向 量 你 再 拿 這 個 低 維 度 的 向 量 來 做 接 下 來 想 做 的 事 情 這 就 是 常 見 的 auto-encoder 用 在 downstream 的 任 務 用 在 下 游 任 務 的 方 法 那 因 為 通 常 encoder 的 輸 入 是 一 個 維 度 非 常 高 的 向 量 而 encoder 的 輸 出 也 就 是 我 們 的 embedding representation 或 者 code 它 是 一 個 非 常 低 維 度 的 向 量 比 如 說 輸 入 是 100×100 的 圖 片 那 100×100 那 就 是 1 萬 維 的 向 量 了 如 果 是 rgb 那 就 是 3 萬 維 的 向 量 但 是 通 常 encoder 的 output 你 會 設 得 很 小 比 如 說 10 100 這 樣 的 等 級 所 以 這 個 這 邊 會 有 一 個 特 別 窄 的 地 方 所 以 這 個 部 分 這 個 encoder 的 輸 出 有 時 候 又 叫 做 bottleneck 叫 做 瓶 頸 就 本 來 輸 入 是 很 寬 的 輸 出 也 是 很 寬 的 中 間 特 別 窄 所 以 這 一 段 就 叫 做 bottleneck 而 encoder 做 的 事 情 是 把 本 來 很 高 維 度 的 東 西 轉 成 低 維 度 的 東 西 把 高 維 度 的 東 西 轉 成 低 維 度 的 東 西 又 叫 做 dimension 的 reduction dimension reduction 這 個 技 術 我 相 信 你 在 machine learning 相 關 的 應 用 上 應 該 常 常 聽 到 這 個 名 詞 那 有 關 dimension reduction 的 技 術 它 其 實 牽 涉 的 非 常 非 常 地 廣 所 以 我 們 這 邊 就 不 再 細 講 因 為 這 門 課 我 們 只 專 注 在 深 度 學 習 相 關 的 技 術 你 可 以 把 auto-encoder 的 encoder 當 作 拿 來 做 dimension reduction 那 其 他 還 有 很 多 不 是 deep learning base 的 不 是 以 深 度 學 習 為 基 礎 的 dimension reduction 的 技 術 我 就 把 錄 影 的 連 接 留 在 這 邊 比 如 說 pca 比 如 說 t-sne 我 就 把 錄 影 的 連 結 留 在 這 邊 給 大 家 參 考 好 那 auto-encoder 到 底 好 在 哪 裡 當 我 們 把 一 個 高 維 度 的 圖 片 變 成 一 個 低 維 度 的 向 量 的 時 候 到 底 帶 來 什 麼 樣 的 幫 助 這 讓 我 想 到 神 鵰 俠 侶 的 其 中 一 段 我 不 知 道 大 家 有 沒 有 看 過 神 鵰 俠 侶 就 是 我 可 以 做 個 調 查 有 看 過 神 鵰 俠 侶 的 同 學 可 以 舉 手 一 下 嗎 哇 這 麼 多 好 手 放 下 比 我 想 像 的 多 太 多 了 我 還 以 為 現 在 大 家 已 經 沒 有 在 看 金 庸 了 這 個 神 鵰 俠 侶 裡 面 有 一 段 就 是 楊 過 進 去 那 個 絕 情 谷 遇 到 這 個 絕 情 谷 谷 主 公 孫 止 的 弟 子 就 是 樊 一 翁 樊 一 翁 就 是 這 個 人 那 樊 一 翁 的 武 器 是 什 麼 他 的 武 器 除 了 一 根 鋼 杖 以 外 還 有 他 的 鬍 子 他 可 以 去 甩 動 他 的 鬍 子 當 做 一 個 軟 鞭 來 使 用 他 的 鬍 子 甩 起 來 有 兩 丈 那 麼 長 可 以 是 一 個 很 厲 害 的 武 器 楊 過 跟 他 打 了 很 久 都 難 分 上 下 突 然 呢 楊 過 說 我 在 三 招 之 內 一 定 要 剪 掉 你 的 鬍 子 大 家 突 然 都 很 詫 異 想 說 楊 過 雖 然 武 功 可 能 比 樊 一 翁 還 高 一 點 但 是 也 沒 有 高 太 多 怎 麼 有 辦 法 三 招 就 剪 掉 他 的 鬍 子 後 來 楊 過 真 的 在 三 招 內 剪 掉 他 的 鬍 子 為 什 麼 呢 因 為 楊 過 發 現 說 這 個 鬍 子 是 由 頭 所 操 控 的 雖 然 鬍 子 甩 開 來 有 兩 丈 那 麼 長 但 是 頭 能 夠 做 的 變 化 還 是 有 限 的 所 以 雖 然 表 面 鬍 子 的 鞭 法 非 常 地 厲 害 但 是 只 要 直 接 去 打 他 的 頭 就 直 接 去 打 他 臉 就 會 逼 著 他 不 得 不 閃 避 就 會 逼 著 他 這 個 鬍 子 能 夠 動 的 路 線 變 得 有 限 然 後 就 打 敗 了 樊 一 翁 就 把 他 的 鬍 子 剪 掉 了 故 事 結 束 那 這 個 跟 auto-encoder 有 什 麼 關 係 呢 好 我 們 來 想 一 下 auto-encoder 這 件 事 情 它 要 做 的 是 把 一 張 圖 片 壓 縮 又 還 原 回 來 但 是 還 原 這 件 事 情 為 什 麼 能 成 功 呢 你 想 想 看 假 設 本 來 圖 片 是 3×3 3×3 很 小 但 我 們 就 假 設 3×3 好 了 本 來 的 圖 片 是 3×3 你 要 用 9 個 數 值 來 描 述 一 張 3×3 的 圖 片 假 設 encoder 輸 出 的 這 個 向 量 是 二 維 的 我 們 怎 麼 有 可 能 從 二 維 的 向 量 去 還 原 3×3 的 圖 片 還 原 9 個 數 值 呢 我 們 怎 麼 有 辦 法 把 9 個 數 值 變 成 2 個 數 值 又 還 原 成 3 又 還 原 回 9 個 數 值 呢 能 夠 做 到 這 件 事 情 是 因 為 對 於 影 像 來 說 並 不 是 所 有 3×3 的 矩 陣 都 是 圖 片 圖 片 的 變 化 其 實 是 有 限 的 你 隨 便 sample 一 個 random 的 noise 隨 便 sample 一 個 矩 陣 出 來 它 通 常 都 不 是 你 會 看 到 的 圖 片 或 舉 例 來 說 假 設 圖 片 是 3×3 的 那 它 的 變 化 雖 然 表 面 上 應 該 要 有 3×3 個 數 值 才 能 夠 描 述 3×3 的 圖 片 但 是 也 許 它 的 變 化 實 際 上 是 有 限 的 也 許 你 把 圖 片 蒐 集 起 來 發 現 說 它 只 有 這 樣 子 的 類 型 跟 這 樣 子 的 類 型 其 他 類 型 根 本 就 不 是 你 一 般 在 訓 練 的 時 候 會 看 到 的 狀 況 就 是 因 為 說 圖 片 的 變 化 還 是 有 限 的 所 以 你 在 做 這 個 encoder 的 時 候 encoder 可 以 說 我 就 只 用 兩 個 維 度 就 可 以 描 述 一 張 圖 片 雖 然 圖 片 是 3×3 應 該 用 9 個 數 值 才 能 夠 儲 存 但 是 實 際 上 它 的 變 化 也 許 只 有 兩 種 類 型 那 你 就 可 以 說 看 到 這 種 類 型 我 就 左 邊 這 個 維 度 是 1 右 邊 是 0 看 到 這 種 類 型 就 左 邊 這 個 維 度 是 0 右 邊 這 個 維 度 是 1 那 所 以 對 應 到 剛 才 這 個 樊 一 翁 的 例 子 就 是 這 個 鬍 子 是 圖 片 複 雜 的 狀 態 是 原 來 的 圖 片 是 原 來 圖 片 的 pixel 是 原 來 圖 片 的 像 素 而 encoder 做 的 事 情 就 是 化 繁 為 簡 本 來 比 較 複 雜 的 東 西 它 只 是 表 面 上 比 較 複 雜 事 實 上 它 的 變 化 其 實 是 有 限 的 你 只 要 找 出 它 有 限 的 變 化 你 就 可 以 把 本 來 複 雜 的 東 西 把 它 變 得 用 比 較 簡 單 的 方 法 來 表 示 它 如 果 我 們 可 以 把 複 雜 的 圖 片 用 比 較 簡 單 的 方 法 來 表 示 它 那 我 們 就 只 需 要 比 較 少 的 訓 練 資 料 在 下 游 的 任 務 裡 面 我 們 可 能 就 只 需 要 比 較 少 的 訓 練 資 料 就 可 以 讓 機 器 學 到 我 們 本 來 要 它 學 的 事 情 這 個 就 是 auto-encoder 的 概 念 那 auto-encoder 它 從 來 都 不 是 一 個 新 的 想 法 它 真 的 是 非 常 非 常 地 有 歷 史 舉 例 來 說 在 這 個 hinton 大 家 知 道 hinton 吧 hinton 就 是 deep learning 之 父 hinton 在 06 年 的 science 的 paper 裡 面 就 有 提 到 auto-encoder 這 個 概 念 只 是 那 個 時 候 用 的 network 跟 今 天 用 的 network 當 然 還 是 有 很 多 不 一 樣 的 地 方 我 們 講 2006 年 是 15 年 前 15 年 前 的 auto-encoder 長 什 麼 樣 子 那 個 時 候 人 們 不 覺 得 deep 的 network 是 train 得 起 來 的 那 時 候 覺 得 說 這 個 把 network 疊 很 多 很 多 層 然 後 每 一 層 一 起 train 不 太 可 能 成 功 所 以 那 時 候 的 信 念 是 每 一 層 應 該 分 開 訓 練 所 以 hinton 用 的 是 一 個 叫 做 restricted boltzmann machine 的 技 術 縮 寫 是 rbm 我 們 特 別 把 hinton 15 年 前 的 文 章 把 它 的 裡 面 的 這 個 paper 裡 面 的 圖 拿 出 來 給 大 家 看 一 下 過 去 15 年 前 人 們 是 怎 麼 看 待 深 度 學 習 這 個 問 題 那 個 時 候 覺 得 說 要 train 一 個 這 個 很 深 的 network 不 太 可 能 每 一 層 分 開 要 train 雖 然 這 個 說 很 深 也 沒 有 很 深 只 是 三 層 這 個 跟 你 作 業 2 做 得 還 要 更 shallow 對 不 對 但 是 在 15 年 前 這 個 已 經 是 哇 很 深 啊 它 有 三 層 太 可 怕 了 好 那 這 個 三 層 要 分 開 來 訓 練 才 可 以 那 這 邊 說 分 開 來 訓 練 這 件 事 情 叫 做 pretraining 但 它 跟 self-supervised learning 的 pre-train 又 不 一 樣 大 家 了 解 我 的 意 思 嗎 假 設 你 說 auto-encoder 這 個 東 西 是 pre-train 那 現 在 這 個 pre-train 是 pre-train 的 pre-train 它 是 要 pre-train 那 個 auto-encoder 而 且 每 一 層 用 一 個 叫 做 rbm 的 技 術 分 開 來 訓 練 先 把 每 一 層 都 訓 練 好 再 全 部 接 起 來 做 微 調 這 件 事 情 那 這 邊 的 微 調 並 不 是 bert 的 微 調 它 是 微 調 那 個 pre-train 的 model 好 那 這 個 restricted boltzmann machine 你 會 發 現 今 天 很 少 有 人 在 提 到 它 了 它 其 實 不 是 一 個 deep learning 的 技 術 它 有 點 複 雜 我 們 在 這 門 課 裡 面 也 沒 有 打 算 要 深 入 細 講 什 麼 是 restricted boltzmann machine 那 為 什 麼 現 在 都 沒 有 什 麼 人 用 它 呢 就 是 因 為 它 沒 有 什 麼 用 這 樣 子 在 過 去 呢 在 10 年 前 呢 都 相 信 這 個 deep 的 network 一 定 要 用 restricted boltzmann machine 然 後 其 實 hinton 後 來 在 2012 年 的 時 候 有 一 篇 paper 偷 偷 在 結 尾 下 一 個 結 論 說 其 實 restricted boltzmann machine 也 沒 有 什 麼 必 要 哈 哈 哈 這 樣 子 所 以 後 來 就 沒 有 什 麼 人 再 用 restricted boltzmann machine 而 且 那 時 候 還 有 一 個 神 奇 的 信 念 是 覺 得 說 那 個 encoder decoder 它 必 須 是 對 稱 所 以 encoder 的 第 一 層 跟 encoder 的 最 後 跟 decoder 的 最 後 一 層 他 們 必 須 互 為 transpose 不 過 現 在 已 經 沒 有 比 較 少 有 人 在 使 用 這 樣 子 的 限 制 好 這 張 投 影 片 只 想 告 訴 你 說 auto-encoder 不 是 新 的 概 念 它 是 一 個 非 常 有 歷 史 的 概 念 那 auto-encoder 還 有 一 個 常 見 的 變 形 叫 做 de-noising 的 auto-encoder de-noising 的 auto-encoder 是 說 我 們 把 原 來 要 輸 進 去 給 encoder 的 圖 片 加 上 一 些 雜 訊 就 自 己 隨 便 找 一 個 雜 訊 把 它 加 進 去 然 後 一 樣 通 過 encoder 一 樣 再 通 過 decoder 試 圖 還 原 原 來 的 圖 片 那 我 們 現 在 還 原 的 不 是 encoder 的 輸 入 encoder 的 輸 入 的 圖 片 是 有 加 雜 訊 的 我 們 要 還 原 的 不 是 encoder 的 輸 入 我 們 要 還 原 的 是 加 入 雜 訊 以 後 的 結 果 加 入 雜 訊 說 錯 加 入 雜 訊 之 前 的 結 果 所 以 你 會 發 現 說 現 在 encoder 跟 decoder 除 了 還 原 原 來 的 圖 片 這 個 任 務 以 外 它 還 多 了 一 個 任 務 這 個 任 務 是 什 麼 這 個 任 務 就 是 它 必 須 要 自 己 學 會 把 雜 訊 去 掉 encoder 看 到 的 是 沒 有 雜 訊 的 圖 片 但 decoder 要 還 原 的 目 標 是 encoder 看 到 的 是 有 加 雜 訊 的 圖 片 但 decoder 要 還 原 的 目 標 是 沒 有 加 雜 訊 的 圖 片 所 以 encoder 加 decoder 他 們 合 起 來 必 須 要 聯 手 能 夠 把 雜 訊 去 掉 這 樣 你 才 能 夠 把 de-noising 的 auto-encoder 訓 練 起 來 那 說 到 de-noising 的 auto-encoder 有 沒 有 發 現 這 個 概 念 其 實 也 一 點 都 不 陌 生 呢 de-noising 的 auto-encoder 也 不 算 是 太 新 的 技 術 至 少 在 2008 年 的 時 候 就 已 經 有 相 關 的 論 文 了 但 是 如 果 你 看 今 天 的 bert 的 話 其 實 你 也 可 以 把 它 看 作 就 是 一 個 de-noising 的 auto-encoder 輸 入 我 們 會 加 masking 那 些 masking 其 實 就 是 noise bert 的 模 型 就 是 encoder 它 的 輸 出 就 是 embedding 在 講 bert 的 技 術 的 時 候 我 們 就 告 訴 你 說 這 個 輸 出 就 叫 做 embedding 接 下 來 有 一 個 linear 的 模 型 就 是 decoder decoder 要 做 的 事 情 就 是 還 原 原 來 的 句 子 也 就 是 把 填 空 題 被 蓋 住 的 地 方 把 它 還 原 回 來 所 以 我 們 可 以 說 bert 其 實 就 是 一 個 de-noising 的 auto-encoder 有 同 學 可 能 會 問 說 為 什 麼 這 個 decoder 一 定 要 linear 的 呢 它 不 一 定 要 是 linear 它 可 以 不 是 linear 或 者 是 我 們 換 一 個 說 法 這 個 bert 它 有 12 層 最 小 的 那 個 bert 有 12 層 比 較 大 的 有 24 層 或 者 是 48 層 好 那 最 小 的 bert 是 12 層 如 果 我 們 說 這 個 12 層 中 間 第 6 層 的 輸 出 是 embedding 那 你 其 實 也 可 以 說 剩 下 的 6 層 就 是 decoder 你 可 以 說 bert 就 假 設 你 在 用 bert 的 時 候 你 用 的 不 是 第 12 層 的 輸 出 而 是 第 6 層 的 輸 出 那 你 完 全 可 以 說 bert 的 前 6 層 就 是 encoder 後 面 6 層 就 是 decoder 總 之 這 個 decoder 沒 有 一 定 要 是 linear 
Alright, next we're going to discuss Auto-Encoder That Auto-Encoder We will probably discuss a short part first, and then We'll take a break And then I will complete the part about the Auto-Encoder And then later, the teaching assistant will discuss The assignment related to Auto-Encoder Alright, let's discuss the Auto-Encoder Before we discuss Auto-Encoder, Auto-Encoder can actually be considered as a part of Self-Supervised Learning. So, let's take a very short time to look at the framework of Self-Supervised Learning. How does Self-Supervised Learning work? First, you have a large amount of unlabeled data, using these unlabeled data You can go to train a model You have to invent some tasks that don't require annotated data For example, doing fill-in-the-blanks For example, predicting the next Token You have to think of some tasks that don't require annotated data To train your model This learning without annotated data is called Self-Supervised Learning Or some people call it Pre-Training That uses these tasks that don't need annotation data Once a model is learned It doesn't have much use by itself BERT can only fill in the blanks GPT can only complete a sentence But you can use it in other downstream tasks You can use the Self-Supervised Learning Model Make a little minor adjustment It can be used in downstream tasks In these Self-Supervised Learning tasks In tasks where learning can occur without labeled data Before there was BERT and GPT There was actually an older task An even older task that doesn't require labeled data It is called Auto-Encoder So you can also think of Auto-Encoder Consider it as self-supervised learning A kind of Pre-Train method Of course, not everyone might agree with this viewpoint while some may refer to this as an Auto-Encoder, It's not really Self-Supervised Learning This Auto-Encoder has been around for a while It already existed 15 years ago, in 2006 And then, Self-Supervised Learning is The term only exists since 19 years So the Auto-Encoder It's not part of Self-Supervised Learning Well, this is a matter of perspective The issue of defining these terms Really, we don't need to get too hung up on this point From Self-Supervised Learning It doesn't need Label Data for training From this perspective I believe Auto-Encoder can be considered as One of the methods of Self-Supervised Learning, It's like filling in the gaps, predicting The upcoming Token is a very similar concept It's just that we use a different idea Okay, let's take a look next How does the Auto-Encoder work Okay, so how does Auto-Encoder work? Now we Because we were just discussing Self-Supervised Learning. We always use text as examples Now, we're using an image as an example Assume you have a massive amount of pictures In the Auto-Encoder, you have two networks One is called the Encoder One called Decoder They are two Networks What are these two networks doing This is what the two Networks do The Encoder reads an image It turns this picture into a vector The Encoder could be many layers of CNN Load a picture Its output is a vector Following this, the vector will become the input for the Decoder Decoder will generate an image So, the architecture of the Decoder’s Network It might be like the Generator in GAN It outputs an image from 11 vectors Whether it's the Encoder or the Decoder After all, it's a multi-layered Network So what is our training objective now? The goal of training is to hope that The input of the Encoder and the output of the Decoder The closer, the better If you consider a picture as a long vector we hope that this vector is aligned with the output of the Decoder. This vector The closer the distance between these two vectors, the better Some people also call this Reconstruction It's called reconstruction Because we just take a picture Compressed into a vector Next, the Decoder needs to rely on this vector To reconstruct the original image We hope for the result of the original input The closer to the rebuilt result, the better At this point, you might realize This thing, this concept seems familiar Yes, when we're talking about Cycle GAN I've explained this concept, haven't I We said when doing Cycle GAN We will need two Generators The first Generator Transferring images from X Domain to Y Domain Another one is Generator Convert the images from the Y Domain back. Hoping for the original picture The closer the picture is to the twice-transformed image, the better Here, the Encoder and the Decoder This is the concept of Auto-Encoder It's actually the same as Cycle GAN All pictures are expected to go through two transformations The closer it is to the original output, the better And the process of this training Completely unnecessary for any annotation data All you need is to collect a large number of pictures You can do this training So, it uses unsupervised learning And the series of Self-Supervised The method is the same as Pre-Training You don't need any marked data at all The output of an Encoder like this, Sometimes we call it Embedding When we talk about BERT We have also brought up the term Embedding Some people call it Representation Some people call it Code Because an Encoder is a code, right? So, some people call this Vector as 'Code' Which actually refers to the same thing Alright, so how do we use this Auto-Encoder technology How to train the Auto-Encoder How can it be used in downstream tasks? A common usage is The original image You can also think of it as a very long vector But this vector is too long, it's not easy to handle What should we do then After you throw this picture into the Encoder, Output another vector You would want to make this vector shorter For instance, only in 10 dimensions or only in 100 dimensions Then you use this new vector for your next task That is, the image is no longer a high-dimensional vector After being compressed by the Encoder Turned it into a low-dimensional vector Then take this low-dimensional vector, To do what you want to do next This is quite common Auto-Encoder is used in downstream tasks Methods used in downstream tasks Because usually the input of the Encoder It is a vector with very high dimensions And the output of the Encoder Which is our Embedding Representation or Code It is a very low-dimensional vector For instance, if the input is a 100×100 image Then 100×100 is a 10,000-dimensional vector If it is RGB, it is a vector of 30,000 dimensions But typically the Output of the Encoder is set very small For example, levels like 10 100 So, there is a particularly narrow part here So, this section The output of this Encoder Sometimes also referred to as Bottleneck Called bottleneck The original input was very broad. The output is also very wide, especially narrow in the middle That's why this part is called a Bottleneck. And what the Encoder does Transforming something that was initially high-dimensional. Turn into low-dimensional things Turning high-dimensional stuff into low-dimensional stuff Also called Dimension Reduction Dimension Reduction, this technique I believe you have experience in Machine Learning applications You should hear this term often The technology related to Dimension Reduction It actually involves a very wide range So we will no longer elaborate on this here Because of this course We are solely focusing on techniques related to deep learning You can use the Encoder of the Auto-Encoder is used for Dimension Reduction, There are still many other methods that aren't based on Deep Learning Not based on deep learning Dimension Reduction technique I'll leave the link to the video recording here. For example, PCA or T-SNE I'll leave the video link here for everyone's reference Well, what make Auto-Encoder so good When we look at a high-dimensional image When it becomes a low-dimensional vector After all, what kind of help does it provide? This reminds me of a part in The Condor Heroes I don't know if you guys have seen The Return of Condor Heroes I can conduct an investigation Can students who have watched 'The Condor Heroes' raise their hands? Wow, so many, alright, hands down That's way more than I imagined I thought everyone had stopped reading Jin Yong by now There's a section within this Swordsman couple, It's when Yang Guo entered the Loveless Valley. Encountering a disciple of the unfeeling valley master Gongsun Zhi It is Fan Yi Weng Fan Yi Weng is this person What is Fan Yi Wen's weapon His weapon, besides a steel staff, And his beard he can use his beard as a sort of soft whip, His beard is flung about two Zhangs long, It can be a powerful weapon Yang Guo and him had a very long fight with no clear winner Suddenly, Yang Guo said I must trim your beard within three moves Everyone is suddenly very surprised We could say Yang Guo's martial arts could be slightly superior to Fan YiWen's But it's not much higher How could one possibly cut off his beard in three moves Later on, Yang Guo really did cut off his beard within three moves Why is that? Because Yang Guo realized that This mustache is controlled by the head. Even though the beard swings two meters long But the changes that can be made to the head are still limited So although the surface mustache's whipping method is very good But just aim directly at his head Just go straight for his face This forces it to dodge It will force the range of his beard movement to become limited And then defeated Fan Yi-Weng Just cut off its mustache. The story ends So, what does this have to do with Auto-Encoder? Okay, let's think about it What the Auto-Encoder has to do It's about compressing an image and restoring it But why is this reconstruction successful? Think about it, suppose the original picture is 3×3 3×3 is very small But let's just assume 3x3 The original picture was 3x3. You're using 9 values to describe a 3x3 image Assume that the vector output by the Encoder is two-dimensional How could we possibly from a two-dimensional vector... To reconstruct a 3x3 image How to restore the nine values? How can we transform nine numerical values into just two? Also restored to 3 And it's been restored to 9 values The reason it can do this is because Regarding the image, Not all 3x3 matrices are images The changes in the images are actually limited You can sample any random noise Randomly sample a matrix The output is not usually the picture you would see Or for instance Assume the picture is 3x3 Then its changes Although on the surface there should be 3×3 values This allows it to describe a 3x3 picture But perhaps its changes are actually limited Maybe you collected the images and found out It only has this type of category With this type of thing Other types are not at all The situation you would typically see when training This is because the variation in images is still limited So when you're working on this Encoder We could say Encoder I can describe an image with just two dimensions Although the image is 3×3 Nine numbers should be used for storage But in fact, its changes may only be of two types Then, you could say when you see this kind of type On the left corner, the dimension is 1, while on the right it is 0 When you see this type, the dimension on the left is 0 The dimension on the right is 1 So, corresponding to the example of Fan Yi-Ong just now It's like this beard represents the complexity of the image It's the original picture Is the original picture's Pixel It is the original pixel of the image What the Encoder does is simplify complexity Originally, more complex things It's just more complex on the surface In fact, its changes are limited You just need to find its limited changes You could simplify complex things Try to simplify it and represent it in a more straightforward way. If we can handle complex images, Expresses it in a simpler way We only require lesser training data In the downstream tasks, We might only need less training data This allows the machine to learn What we were originally trying to teach it This is the concept of Auto-Encoder That Auto-Encoder It has never been a new concept. It really has a great history For example, in this Hinton You all know Hinton, right Hinton is considered the father of Deep Learning It's in the paper Hinton published in Science in 2006. We also mentioned the concept of Auto-Encoder It was just the network used at that time It's similar to the network we're using today. Of course, there are still many differences We said that 2006 was just 15 years ago What the Auto-Encoder looked like 15 years ago There was a time when people didn't notice Deep Network can be trained At that time, it seemed to stack many layers of Network Then training every layer together is unlikely to succeed So the belief back then was Each layer should be trained separately So what Hinton used is called The technique of the Restricted Boltzmann Machine The abbreviation is RBM We particularly took an article by Hinton from 15 years ago Within it, We'll take out the diagram from the paper for everyone to see 15 years ago How do people perceive the issue of deep learning? At that time, I thought Training such a deep network is unlikely Each layer needs to be trained separately Although this seems deep, it's not really deep It's only three layers This is even more shallow than your Homework 2 Right or not? But this was already the case 15 years ago Wow, it's pretty deep. It has three layers, which is quite scary. Well, these three layers need to be trained separately The act of training them separately is called Pretraining. But it's related to the pre-training of Self-Supervised Learning It's different Does everyone understand what I mean? Assuming you say the Auto-Encoder is Pre-Train What is this Pre-Train now? The pre-training of pre-training It's for pre-training that Auto-Encoder And each layer uses a technique called RBM Train separately Train each layer first, Combine them all for fine-tuning The fine-tuning here is not BERT's fine-tuning Is it fine-tuning the pre-trained model? Well then, this Restricted Boltzmann Machine You will find that very few people mention it today In fact, it's not a Deep Learning technique it is a bit complex, We didn't intend to go into detail in this course What is a Restricted Boltzmann Machine Then why isn't it widely used now? That's because it's not really useful In the past, ten years ago They all believe in this Deep Network You must use Restricted Boltzmann Machine Actually, Hinton later on in 2012 There's a paper that subtly draws a conclusion at the end, Actually, it is a Restricted Boltzmann Machine. No need to laugh about it like this So later not many people used it Restricted Boltzmann Machine And there was also a magical belief at that time some might think of an Encoder-Decoder, It must be symmetrical So, the first layer of Encoder With the end of the Encoder connected with the final layer of the Decoder, They must be each other's transpose However, there's nothing left now Fewer people are using such restrictions Okay, this slide just wants to tell you that Auto-Encoder is not a new concept It's a concept with a significant history That Auto-Encoder also has a common variation It's called a De-Noising Auto-Encoder The 'De-Noising' Auto-Encoder means We feed the original image to the Encoder Add some noise Just arbitrarily add some noise into it Then pass it through the Encoder as usual It then passes through the Decoder again Attempting to restore the original image What we are restoring now It's not an input to the Encoder. The input image of the encoder has noise added What we need to restore is not the Encoder's input what we aim to restore is the result after noise introduction, Added noise, I misspoke The result before adding noise So you will find that Now Encoder and Decoder Apart from the task of restoring the original image It has an additional task What is this task? This is the task It needs to learn to remove the noise by itself The encoder sees an image without noise But the target to be restored by the Decoder is What the Encoder sees is a picture with added noise But the goal of Decoder is Pictures without the addition of noise So, combine Encoder and Decoder They have to team up to eliminate the noise Only in this way can you Training a De-Noising Auto-Encoder Speaking of the De-Noising Auto-Encoder Have you noticed this concept? Actually, it's not unfamiliar at all A De-noising Auto-Encoder It's not exactly a new technology At least in 2008 There are already related papers But if you look at BERT today In fact, you can see it as one of De-noising Auto-Encoder We add masking to the input Those Maskings are actually Noise The model of BERT is the Encoder Its output is Embedding When discussing the technology of BERT Let's just say this output is called Embedding Next, there is a Linear model It's the Decoder The tasks for the decoder It's about restoring the original sentence, In other words, it's covering the gap in the fill-in-the-blank question Restoring it back So, we can say BERT is actually De-Noising Auto-Encoder Some students might ask Why does this Decoder have to be linear? It doesn't have to be Linear It doesn't have to be Linear Or, we can say it another way This BERT has 12 layers The smallest BERT has 12 layers The larger ones have 24 layers, or some even have 48 layers Alright, the smallest BERT has 12 layers If we say this is in the middle of 12 layers The output of the 6th layer is Embedding You could actually say the remaining 6 layers It is the Decoder You can refer to BERT Suppose that you are using BERT, What you're using is not the output of the 12th layer But rather, the 6th layer's output Then you can absolutely say The first 6 layers of BERT are the Encoder The last 6 layers are the Decoder Anyway, this Decoder There's no necessity for it to be Linear 