從2048學TD learning (2)

2018.07.04 柯筑苓

2021 年新增:

https://ko19951231.github.io/2021/01/01/2048/

這篇寫得比投影片好多了喔

RL

  • 要發展的是完整的一套策略
  • 沒有絕對的對與錯
  • 只有較好的策略跟較差的策略
  • 每步的好壞對錯是根據於整個策略而言

目前數據

  • 手玩可以玩到多少
  • AI簡單玩可以玩到多少
  • 目前的AI可以玩到多少

問題

  • 存一整個盤面當查詢key,是不明智的

Q: 為什麼

Learning的精隨

見微知著

N-tuple network

乍看很呆,但很有用

仔細一想也覺得很精妙

整盤都存,需要幾格來存?

  • 假設每一塊磚的種類有12種可能(0~2048)
  • 16塊磚就有12^16種可能=1.8e17

只存中間,需要幾格來存?

  • 假設每一塊磚的種類有12種可能(0~2048)
  • 4塊磚就有12^4種可能=20736

旁邊沒考慮到的怎辦

  • 加一些你覺得需要取的地方上去

double middle[20736]

double left_up[20736]

double left_down[20736]

double right_up[20736]

double right_down[20736]

double w[5][20736]

可以自己選位置嗎

可以不要田形狀嗎

可以不要四格嗎

 

當然可以阿

修改:查表與更新表

查表(選步時)

  • 把盤面上的feature都拿去查表
  • 得到的數值平均,就是這個盤面的數值

更新表(訓練時)

算好這個盤面與目標值的差距後

將每個feature的值都往該目標更新

原本:5、3、1、5、4 (18)

目標:4、3、5、5、3 (20)

差距:+2

learning rate : 0.1

更新後:5.2、3.2、1.2、5.2、4.2

旋轉對稱

你說,取最上面一條四個

跟取最右邊一條四個

有什麼不一樣呢?

 

 

對,他們一樣

(畫紙)

所以注意,取feature就不要取重複的了

原本做的feature還有用嗎

當然有阿

N-tuple以外的feature

  • 方塊大小的分佈
  • 空格的位置
  • ...其它

概念相同

  • 枚舉所有可能有多少種,就開那麼大的陣列
  • 選步記得取,訓練記得更新
  • 旋轉對稱記得做
Made with Slides.com