Deep Reinforcement Learning (4) --- Q-learning (Advanced Tips)
這一個部分延續上一篇文章,對 Q-Learning 的一些技巧做了更深入的延伸。
這一個部分延續上一篇文章,對 Q-Learning 的一些技巧做了更深入的延伸。
Q-Learning 是 Reinforcement Learning 中一種 Value-Based 的方法,在 Q-Learning 中,並不直接去學習一個 Policy 而是要學習一個評價函數 Critic,來評價某一個 policy \(\pi\) 在某一個 state \(s\) 中採取行為後,後續得到的期望 Reward 有多少。
因此,我們可以知道,一個 Critic \(V^{\pi}(s)\) 必須配合一個 policy \(\pi\) ,才能來計算後續的 Reward 有多少。
我們前面所用的技巧稱為 " On Policy " ,意思就是,我們用來跟 Environment 互動的 Actor 跟我們要訓練的 Actor 是同一個。
但前面有提到,這樣的訓練其實會花非常多時間,因為每一次參數更新完,就必須要重新讓 Actor 跟 Environment 互動收集新的資料,然後再進行訓練。是不是有辦法可以讓 Actor 跟 Environment 互動收集的資料拿來更新多次參數,省去一直收集資料的冗長過程 ?
這就是 " Off Policy " 的作用。在 Off Policy 中,我們利用一個不同的 Actor 、Policy \(\pi_{\theta}'\) 來跟 Environment 互動收集資料,然後讓我們想要訓練的 Actor 、 Policy \(\pi_{\theta}'\) 利用這些資料,一次進行多次參數更新。
作為 Deep Reinforcement Learning 的第一堂課,主要是針對 Machine Learning 中 RL 的部分進行簡單的複習及補充。有些基礎的概念,在 MLDS GAN 系列課程中也已有提及,閱讀此篇筆記前可先看看 " Reinforcement Learning " 及 " Generative Adversarial Network (9) — Sequence Generation " 這兩篇筆記。
在這篇論文中,作者推出了一個嶄新的物件偵測方式 -- YOLO。原本的物件偵測任務是利用分類器來進行,但在 YOLO 中,作者們將物件偵測視為一個回歸任務,來從空間中分割出邊界框 ( Bounding Box )並且計算出類別機率。僅利用一個神經網路進行一次計算來直接預測邊界框及類別機率,也因為整個偵測過程只有使用單一個神經網路,因此可以視為是一個 End-to-End 的優化過程。
GAN 講了這麼多,重點還是要得到一個夠好的 Generator 可以生成我們想要的東西。可是,什麼樣的 Generator 是夠好的 ? 我們怎麼評估訓練完成的 Generator ?
在 GAN 的應用中,前面有提到可以用來做 conditional image generation,這種技術我們可以用來進行圖像風格的轉換、語音上的轉換...等等。
當我們訓練出一個 GAN 之後,在之前的部分有說過,我們總會希望可以藉由調整 Vector 的某些維度來改變生成圖像的一些特徵。例如 : 金髮轉黑髮、年輕便年老或是男人變女人...等等。但我們也有說過,我們很難知道每一個維度所代表的意義為何,也有可能根本每一個維度都無法區分出屬於哪一個圖像特徵。
在 GAN 中,我們會隨機 input 一組向量,然後生成一個我們要的物件 ( 可能是圖片、文字、語句... )。直覺的,我們總會希望這一組向量的每一個維度都代表某一個特性、性質。
但是現實總是沒有想像中美好。
\(G=(V,E)\ is\ a\ directed\ graph\ and\ I(e)=lenth\ of\ edge\ e\in E,\\ where\ I(e)\geq0\ can\ be\ distance,time\ or\ cost.\) \(Find\ the\ shortest\ path\ P(v)\ from\ s\ to\ each\ other\ v\in V-\{s\},\ where\ I(P)=lenth\ of\ P=\sum_{e\in P} I(e)\) 給定一個有向圖以及每個 edge 的 "長度"( 可以是距離、花費時間、花費成本...),試圖找出從 s 出發距離最短的路徑。