我正在努力弄清楚我想怎么做,所以我希望这里的人可以提供一些指导。
场景-我有一个10个字符串,我们称它为DNA,由以下字符组成:
F
-
+
[
]
X
例如DNA = ['F', 'F', '+', '+', '-', '[', 'X', '-', ']', '-']
现在,这些DNA字符串可以从其中得到 fitness 或 reward 值转换为物理表示。因此,此方案的RL流程图如下所示:
P.S。最大适合度未知或指定。
第1步:获取随机的DNA字符串
第2步:计算适应度
第3步:获取另一个随机DNA字符串
第4步:计算适应度
第5步:计算梯度,然后查看哪种方式向上
第6步:训练ML算法以生成越来越好的DNA字符串,直到适应性不再提高
为清楚起见,出于我的目的,最好的DNA字符串,即能恢复最高适应性的字符串是:
['F', 'X', 'X', 'X', 'X', 'F', 'X', 'X', 'X', 'X']
如何训练ML算法来学习此算法并输出此DNA字符串?
我正尽力将策略梯度方法包罗万象,但是我对ML算法的输入是什么? OpenAI Gym示例中没有像这样的状态。
编辑: 最终目标-学习生成适合度更高的DNA字符串的算法。这必须在没有任何人工监督的情况下发生,即不是监督学习而是强化学习。
类似于将进化出更好的DNA字符串的GA
答案 0 :(得分:2)
假设问题在于将给定的字符串变异为具有更高适应性值的另一个字符串,则马尔可夫决策过程可以建模为:
fitness(next_state) - fitness(state) + similarity(state,next_state)
或fitness(next_state) - fitness(state)
您可以从Q学习开始,其中包含维度为10的离散操作,每个操作有6个选择:(F, -, +, [, ], X)