---
# System prepended metadata

title: 1_state env 實驗

---

# 1_state env 實驗

用toy example是否能設計出一個FW會卡在local optimal的設計，然後global sampling能找到一個較佳的解，同時我們想知道在這個情況加入BO是否有幫助

## 精確critic實驗(toy_env):
1_state env
state: [0]
action: [0,8]
Reward function:(np.cos(2x) + x * np.cos(6x) - np.cos(4.6*x)), x=action
![](https://i.imgur.com/x8TGyZf.png)
Reward function設計目的：以簡單的三角函數疊加預期做出很多local optimal的環境，並去嘗試不同演算法是否能脫離local optimal
## algorithm:
**FW:** 直接使用Frank–Wolfe的方法去尋找參考action去做policy更新
Global sampling: 使用sobel seq.去尋找critic/reward function最大的action當參考action去做policy更新
**BO:** 使用bayesian optimization去尋找reward function最大的action當參考action去做policy更新
**accurate critic:** 訓練一個critic network並使用true reward function去更新
**inaccurate critic:** 訓練一個critic network並使用true reward function每次都會增加一個30 * N(0,1)去更新，預期訓練出一個不準確的critic
**true critic:** 在BO或是global sampling中直接使用true reward function
## learning parameters:
epsilon greedy: epsilon = 0.1
seed: 1,2,3
warmup steps = 100
training steps = 99900
lr_c = 0.1
lr_a = 0.01
critic = network critic
policy = network policy
sample_number = 30
policy_batch_size = 8
critic_batch_size = 64
BO sample number = 20 + 10
BO acquisition function sample number = 1000
policy update old_action <= lr_a * ref_a + (1-lr_a) * old_action

## result:
![](https://i.imgur.com/wUlPvcH.png)

結果討論:

Global sampling：主要的表現會取決於critic的訓練情形，我們可以觀察不同的演算法訓練出的critic和實際reward function的差別，
![](https://i.imgur.com/bqkJ0o6.png)

雖然我們可以利用優先權的改變讓一些經驗比較容易在replay buffer中被選取到，但是訓練的精確度可能還是會取決於探索，
舉例來說如果我們要探索到action [6.1~ 6.5]這段的Reward的機率就會是 0.1(epsilon) * (6.5-6.1)/8 = 0.005在我們的實驗步數中可能比較難取到

FW：可以顯現出卡在local optimal的現象(reward function的第一個波峰)

BO：雖然testing reward出來的表現看起來不佳，但是我觀察到目前的policy network出來的action都是6.5附近，結果上來說可以幫助我們找到最佳解，但是這邊可能要思考不能收斂的原因