看了這篇 2017 Microsoft AI and Research 的文章 “Large-Scale Domain Adaptation via Teacher-Student Learning“ 覺得滿有意思的,加上很容易實作,因此就分析一下這篇的可行性。
設計了一個 MNIST Toy Example 來展示 T/S Learning 的能力,自己也想知道這個方法有多可靠。相關的實驗 code 請參考 github
讓學習變成一種習慣
看了這篇 2017 Microsoft AI and Research 的文章 “Large-Scale Domain Adaptation via Teacher-Student Learning“ 覺得滿有意思的,加上很容易實作,因此就分析一下這篇的可行性。
設計了一個 MNIST Toy Example 來展示 T/S Learning 的能力,自己也想知道這個方法有多可靠。相關的實驗 code 請參考 github
若我們字典裡有 $N$ 個 words, 第 $i$ 個字 $w^i$ 應該怎麼表示呢?
通常使用 one-hot vector 來表示: 把 $w^i$ 變成一個長度 $N$ 的向量 $x^i$。
使用 MNIST and notMNIST 做了一個 AutoEncoder with Fully Connected DNN 的實驗。
依序將實驗結果根據如下步驟顯示出來,程式碼可以參考 [github]
從一開始決定上課後,經過了半年終於來到 Udacity Term2 最後一個 Project 了。只能說盡量讓自己把每一個做的 project 都寫一篇 blog 記錄,但這陣子時間真的不夠用,所以這篇就從 high level 的角度瀏覽一下內容。
記得當年念博的時候,對於SVM頗有愛,也覺得掌握度很高惹,就是 kernel method + convex optimization 的完美合體。直到某天看到 structureSVM,看了老半天實在不得要領,當時就放下沒再管了。多年後 (2015),剛好台大李宏毅教授教的課程最後一堂 Project demo,有請我們部門介紹做的一些內容給學生,才看到了強大的李老師的課程內容。他所教的 structure learning/svm 實在有夠清楚,又非常 general,真的是強到爆! 本人又年輕,又謙虛,我的新偶像阿!
附上一張我與新偶像的合照… XD
以下內容為筆記用,方便日後回想,來源 大都是李老師的內容。
前幾篇討論了很多 Kalman Filter 以及它相關的變形,如: EKF and UKF。這些方法我們都可以放在 Bayes Filter 的框架下來看,這麼做的話,KF 就只是其中一個特例了 (都是高斯分布的情形)。而如果我們只考慮幾個離散點的機率,並用蒙地卡羅法來模擬取樣的話,這種實作方式就會是 Particle Filter 。所以掌握了 Bayes Filter 背後的運作方式對於理解這些方法是很有幫助的。
一些變數的意義仍然跟前幾篇一樣:
資料為 Udacity 課程內容。事實上 UKF 挺囉嗦的,單純看本文應該無法理解,必須搭配前兩篇 KF and EKF 和 CTRV。主要是筆記用,讓自己可以根據文章完整實做出來。
一切的一切都來自於 Kalman Filter 的 State-Space model 假設,我們來稍微回顧一下。
$$\begin{align} x_k = F_kx_{k-1}+\nu_k \\ z_k = H_kx_k+\omega_k	\\ \end{align}$$資料為 Udacity 課程內容
在上一篇 EKF 中,我們其實假設的是 constant velocity model (CV),也就是如下的關係式
$$\begin{align}
x_k = Fx_{k-1}+\nu_k \\
x_k=
\left(
\begin{array}{clr}
p_x \\
p_y \\
v_x \\
v_y
\end{array}
\right),
F=
\left(
\begin{array}{clr}
1 & 0 & \Delta{t} & 0 \\
0 & 1 & 0 & \Delta{t} \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 1
\end{array}
\right)
\end{align}$$
正好滿足 Kalman Filter 中 State-space model 的假設,但這樣的 motion model 很明顯太單純了,因為車子總是在變速且轉彎。因此真實在使用的時候不會用 CV model,那會用什麼呢? 以下為幾種可用的:
Udacity term2 (Sensor Fusion, Localization, and Control) 的第一個 Project 就是用 KF and EKF 將 Lidar and Radar 的資訊做 fusion 並且可以 tracking。由於 KF/EKF 的數學符號很多,因此想筆記一下方便日後回想,所以主要以我自己看的角度,可能有些地方會沒有明確說明。本篇的筆記來源是
若要實作所有的計算流程不管理論的話,可直接跳到 “7. 總結 Lidar and Radar Fusion”。
GAN 作者設計出一個 Minimax game,讓兩個 players: 生成器 G 和 鑑別器 D 去彼此競爭,並且達到平衡點時,此問題達到最佳解且生成器 G 鍊成。大致上訓練流程為先 optimize 鑑別器 D for some iterations,然後換 optimize 生成器 G (在 optimize G 時,此問題等價於最佳化 JSD 距離),重複上述 loop 直到達到最佳解。
但是仔細看看原來的最佳化問題之設計,我們知道在最佳化 G 的時候,等價於最佳化一個 JSD 距離,而 JSD 在遇到真實資料的時會很悲劇。
怎麼悲劇呢? 原因是真實資料都存在 local manifold 中,造成 training data 的 p.d.f. 和 生成器的 p.d.f. 彼此之間無交集 (或交集的測度為0),在這種狀況 JSD = log2 (constant) almost every where。也因此造成 gradients = 0。
這是 GAN 很難訓練的一個主因。
也因此 WGAN 的主要治本方式就是換掉 JSD,改用 Wasserstein (Earth-Mover) distance,而修改過後的演算法也是簡單得驚人!