---
# System prepended metadata

title: '**An Outsider’s Tour of Reinforcement Learning (Part3)**'

---

# **An Outsider’s Tour of Reinforcement Learning (Part3)**

[TOC]

## **[The Linearization Principle](http://www.argmin.net/2018/02/05/linearization/)**

:::info
If a machine learning algorithm does crazy things when restricted to linear models, it’s going to do crazy things on complex nonlinear models too
:::

- Linearization Principle 可將機器學習中遇到的複雜問題變為易處理的簡單問題
- 線性模型的應用並非理解機器學習的充分條件，但卻是解決問題時很有用的方法
&nbsp;


### Inserting Batch Norm layers speeds up SGD 
[随機梯度下降(Stochastic gradient descent)](https://cdn-images-1.medium.com/max/1600/1*4YZoC8lSqwaxBV7neh4lGg.gif) &emsp;[SGDv](https://www.youtube.com/watch?v=Q3pTEtSEvDI)   
![](https://i.imgur.com/R03ryNq.png)

SGD是用於優化differentiable 目標函數的迭代方法，一次跑一個樣本或是小批次(mini-batch)樣本然後算出一次梯度或是小批次梯度的平均後就更新一次，這個樣本或是小批次的樣本是隨機抽取的。
&nbsp;

**[Batch normalization](https://en.wikipedia.org/wiki/Batch_normalization)**

在每次SGD時，通過mini-batch來對相應的activation作規範化操作。
(當我們有0到1和1到1000的features時，我們能將它們標準化以加速學習)
在神經網路訓練時遇到收斂速度很慢，或梯度爆炸等無法訓練的狀況時可以嘗試BN來解決。另外，在一般使用情況下也可以加入BN來加快訓練速度，提高模型精度。
&nbsp;

### SGD is successful despite many local optima and saddle points.

線性模型不會有saddle points，但如果模型被授予的parameters多於data points，則訓練誤差將包含許多局部最小值。

:::info
- SGD avoids saddle points is an artifact of selection bias
- It possible that we only hear about the cases where we avoid saddles
:::

**Q : SGD 究竟能不能避開 saddle points ?**
&nbsp;
### Dropout works better than other randomization strategies ?

Dropout 技術能防止training data的co-adaptations並減少神經網路中的overfitting，是目前深度學習中廣為使用的技巧之一。
Dropout 能在深度學習網路的訓練過程中，對於神經網路單元，按照一定的概率將其暫時從網路中丟棄。對於隨機梯度下降來說，由於是隨機丟棄，故而每一個mini-batch都在訓練不同的網路。
&nbsp;
&nbsp;
![](https://i.imgur.com/1ol23tV.png)
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;Standard Neural Net &emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;After applying dropout.
&nbsp;
### Deep nets can memorize random labels, and yet, they generalize.
常見的神經網路具有許多的參數，而它們可以 fit 你想要的 sign pattern ，即使在大型模型與線性模型上也是如此。

&emsp;
### One more for good luck: The Adam algorithm.

Adam演算法即自適應時刻估計方法（Adaptive Moment Estimation），能計算每個參數的自適應學習率，其是隨機梯度下降演算法的擴展式，近來其廣泛用於深度學習應用中。
Adam 演算法和傳統的隨機梯度下降不同。隨機梯度下降保持單一的學習率更新所有的權重，學習率在訓練過程中並不會改變。Adam 通過計算梯度的一階矩估計和二階矩估計為不同的參數設計獨立的自適應性學習率。

&nbsp;
Adam 演算法的提出者描述其為兩種隨機梯度下降擴展式的優點集合，即：

- 適應性梯度演算法（AdaGrad）為每一個參數保留一個學習率以提升在稀疏梯度（即自然語言和計算機視覺問題）上的性能。
- 均方根傳播（RMSProp）基於權重梯度最近量級的均值為每一個參數適應性地保留學習率。這意味著演算法在非穩態和在線問題上有很有優秀的性能。

&emsp;
:::info
- Adam 是一種在深度學習模型中用來替代隨機梯度下降的優化演算法。
- Adam 結合了 AdaGrad 和 RMSProp 演算法最優的性能，它還是能提供解決稀疏梯度和雜訊問題的優化方法。
- Adam 調參數相對簡單，默認參數就可以處理絕大部分的問題。
:::

&emsp;
&emsp;
:::warning
Adam was not only just as sensitive to hyperparameters as normal SGD but also consistently achieved worse test error than SGD.
:::

&emsp;
Q : Adam 真的是最主流最好用的優化演算法嗎 ? 為何使用SGD的人依舊如此的多 ?

Q : Adam 的收斂速度很快，但精調參數的SGD能夠取得更好的結果。那麼     能夠使用Adam快速下降，再用SGD進行優化嗎 ?



&emsp;
&emsp;
### Linearization for RL
 
&emsp;
雖然 Linearization Principle 無法解釋神經網路的所有特性，但我們仍能得知有許多現象能適用於線性模型。

&emsp;
&emsp;
&emsp;
:::info
下一部分將介紹 Linear Quadratic Regulator
:::


&emsp;
&emsp;
&emsp;
&emsp;

參考資料 : 

http://www.argmin.net/2018/02/05/linearization/