我嘗試使用強化學習來重複選擇指定點集合中出發點的最近點,直到達到複雜(和無關的)結束條件。 (這是對我主要問題的簡化。)選擇最接近原點的強化學習
包含可能點的二維數組傳遞給強化學習算法,該算法可以選擇它認爲最理想的點。
A [1, 10]
B [100, 0]
C [30, 30]
D [5, 7]
E [20, 50]
在這種情況下,D
將是最好的選擇。 (該算法應該理想地輸出3
,從範圍0
到4
)
但是,每當我訓練的算法,它似乎沒有學到什麼「概念」是的,而是僅僅是選擇,比如說,C
是通常是的最佳選擇,所以它應該總是選擇那個。
import numpy as np
import rl.core as krl
class FindOriginEnv(krl.Env):
def observe(self):
return np.array([
[np.random.randint(100), np.random.randint(100)] for _ in range(5)
])
def step(self, action):
observation = self.observe()
done = np.random.rand() < 0.01 # eventually
reward = 1 if done else 0
return observation, reward, done, {}
# ...
我應該修改一下關於我的算法的內容,以便它真正瞭解它正試圖完成的目標?
- 觀察形狀?
- 獎勵功能?
- 行動選擇?
Keras代碼將不勝感激,但不是必需的;純粹的算法解釋也會非常有幫助。