- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有兴趣实现 Q 学习(或某种形式的强化学习)以找到最佳协议(protocol)。目前,我有一个用 Python 编写的函数,我可以在其中接受协议(protocol)或“ Action ”和“状态”并返回一个新状态和一个“奖励”。但是,我很难找到我可以在这种情况下使用的 Q-learning 的 Python 实现(即可以像黑盒子一样学习函数的东西)。我看过 OpenAI gym,但这需要编写一个新环境。有人知道我可以为此采用的更简单的包或脚本吗?
我的代码是这样的形式:
def myModel (state, action, param1, param2):
...
return (state, reward)
我正在寻找的是以下形式的算法:
def QLearning (state, reward):
...
return (action)
还有一些方法来保持在状态之间转换的 Action 。如果有人知道在哪里可以找到它,我会非常兴奋!
最佳答案
此处提供的许多评论要求您对强化学习有深入的了解。看来你刚开始接触强化学习,所以我建议从最基本的 Q 学习算法开始。
学习 RL 的最佳方法是自己编写基本算法代码。该算法有两部分(模型、代理),它看起来像这样:
model(state, action):
...
return s2, reward, done
其中 s2 是模型在执行 Action a 后进入的新状态。奖励基于在该状态下执行该操作。完成只是代表剧集是否结束。看起来你已经有了这部分。
下一部分是代理,如下所示:
states = [s1, s2, s3, ...]
actions = [a1, a2, a3, ...]
Q_matrix = np.zeros([state_size, action_size])
discount = 0.95
learning_rate = 0.1
action_list = []
def q_learning_action(s, Q_matrix):
action = index_of_max(Q_matrix[s, :])
action_list.append(action) # Record your action as requested
return action
def q_learning_updating(s, a, reward, s2, Q_matrix):
Q_matrix[s, a] = (1 - learning_rate)Q_matrix[s, a] + learning_rate*(reward + gamma*maxQ_matrix[s2, a])
s = s2
return s, Q_matrix
有了这个,您可以构建一个 RL 智能体来学习许多基本知识以实现最佳控制。
基本上,Q_learning_actions 为您提供了对环境执行所需的操作。然后使用该 Action ,计算模型的下一个状态和奖励。然后使用所有信息,用新知识更新您的 Q 矩阵。
如果有任何不合理之处请告诉我!
关于python - 如何实现 Q-learning 来逼近最优控制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52240631/
我使用 Theano 设计了一个神经网络,用于近似数学多重函数。但是我一直无法逼近非线性函数,例如:2x/x+3 等。但是网络在线性函数上表现良好。 我使用 1 个隐藏层和 2 个神经元。我试过增加隐
我目前正在研究余弦的近似值。由于最终目标设备是使用 32 位浮点 ALU/LU 的自行开发,并且有专门的 C 编译器,因此我无法使用 C 库数学函数(cosf,...)。我的目标是编写在准确性和指令/
我正在寻找一个更快的实现或更好的函数近似 cmath . 我需要加速以下功能 pow(x,y) exp(z*pow(x,y)) 哪里z<0 . x来自 (-1.0,1.0) 和 y来自 (0.0, 5
我是一名优秀的程序员,十分优秀!