強化學習演算法都需要建立一個類似Qtable的表格嗎?

我是想處理一個無狀態的模型,或者說狀態太多且不斷地變化,無法形成一個狀態-行為集,想求問各位,強化學習中有處理這種問題的方法嗎?我之前研究的Q學習都是按照建立Q表的方式來處理的,這對於狀態過多的模型來講很難處理,謝謝各位!!


謝邀,

你擔心的問題, 正是幾十年前困擾工程師們的一個疑難問題. 因為當時的計算機運算能力不強, 即使有了強化學習的各種演算法, 也只能解決數據量少的問題. 而隨著計算機硬體提升, 我們就有了新的方法來處理這種問題. (說了一堆廢話..)

強化學習中最著名的演算法就屬 Q-Learning 了, 傳統的 Q-Learning 有個弊端, 也就是你提到的, 必須將 狀態-動作 值存放在 Q-Table Q 表中計算更新. 但是我們的計算機硬體是有限的, 對於狀態無限多(下圍棋), 動作無限多(轉動機器手臂的角度), 電腦是存不下這樣無限大的表格. 所以工程師就想了一個辦法, 讓我們估計 Q 值吧.

這樣就有了現在各種著名演算法 (DQN, Policy Gradient, Actor-Critic...) 的前身. 為了估計 Q 值, 我們就會要學習一個 Function Approximator, 用這個 function 來估算 Q 值 (取代掉之前在 Q 表裡提取 Q 值). 這方式有一個不足之處, 就是這個 Function approximator 並不是天生就懂 Q 值是多少, 他是需要一步步學習才能知道比較準確的 Q 值的大小的. 順著這條思路, 我們就有了各種各樣的 approximation 的方法.

了解各種強化學習方法

方式太多了..在這裡列舉有點困難, 還好我有做一些介紹比較著名演算法的短視頻 (莫煩 Python). 特別適合初學者. 還為初學者打造了從0開始的強化學習練手視頻教程 (莫煩 Python). 放心這些都是不收費, 只為大家學習. (聽起來像廣告..哈哈哈)


你說的是表格型強化學習演算法,對於表格型強化學習演算法,Q值函數都存儲在表格中,強化學習的過程就是優化這張Q表格。但是當狀態數很多或狀態是連續的時候,表格的方法肯定不現實。這時,可以利用值函數逼近的方法。將你的狀態進行編碼,抽象成特徵,然後值函數用特徵的逼近函數來表示,這時候的強化學習演算法稱為值函數逼近的方法。具體解釋可參看我在知乎專欄的文章:

強化學習入門 第五講 值函數逼近 - 知乎專欄


Q learning在處理狀態集離散情況時確實是使用表格來存儲Q value,但是對於連續狀態集是採用函數(或神經網路)表示或者逼近的,具體例子你可以看看將dl和Q learning結合的dqn的例子——2013年DeepMind 在NIPS上發表的Playing Atari with Deep Reinforcement Learning


不是的,只有在離散情況下而且表不會很大的才可以使用。對於連續狀態或者連續動作,你是沒辦法用表格的,除非你把它離散化。但是離散化時,如果狀態由10個變數表達,你把每個變數離散化為20個,那麼光狀態就有20^10個。你還有動作呢。所以這是沒辦法存成表格的。其實,你也沒必要存起來,直接使用估計器就行了。DQN DDPG A3C這些都是可以參考的。


推薦閱讀:

如何通過machine learning的手法預測 Google 下一個要關閉的服務是什麼?
如何評價DeepMind的DNI?
語音識別對單個聲學模型需要做 viterbi beam嗎?
語言學研究對機器的語音識別或者語音輸出有實質性的幫助嗎?
在對時間序列進行分類時,隱馬爾科夫模型、人工神經網路和支持向量機這三種模型哪種更合適,為什麼?

TAG:機器學習 | 強化學習ReinforcementLearning |