在GitHub上帮我

加强js公司

#About **REINFORCEjs**是一个强化学习库,它实现了几种常见的RL算法,这些算法由有趣的web演示支持,目前由[@karpathy](https://twitter.com/karpathy)维护。特别是,该库目前包括: ##### 动态规划 #######。求解器使用标准的表格方法将没有钟声和哨声,并且环境必须提供动态。

右图:一个用动态规划解决的简单网格世界。非常令人兴奋。前往GridWorld:DP演示使用GridWorld环境和策略迭代。
###表格时间差分学习包括SARSA和Q学习。代理仍然维护表值函数,但不需要环境模型,并从经验中学习。此外,还包括了对许多铃声和口哨的支持,例如资格跟踪和计划(优先扫描)。 ###### 深度Q学习 ############。该方法用神经网络对动作值函数Q(s,a)进行建模,从而允许连续输入空间。但是,使用固定数量的离散动作。该实现包括了大部分的功能(例如,体验回放、TD错误钳制以提高健壮性); ###### 策略梯度 该实现包括一个随机策略梯度代理,它使用强化和LSTM来学习参与者策略和值函数基线,以及[Silver et al](http://www0.cs.ucl.ac.uk/staff/d.Silver/web/Publications_files/Deterministic Policy Gradients.pdf)对最近确定性策略梯度的实现。为了实现这一点(特别是LSTMs),这个库包含了我以前的项目[recurrentjs](https://github.com/karpathy/recurrentjs)的一个分支,它允许人们在矩阵上建立计算图并执行自动反支撑。我不包括策略梯度方法的演示,因为不幸的是,当前的实现是挑剔的和不稳定的(随机的和确定性的)。我仍然在库中包含代码,以防有人想四处查看。我怀疑是有bug(很难确切地知道),或者是我遗漏了一些让它们可靠工作所需的提示/技巧。 示例库用法 ``javascript```对于大多数应用程序(例如简单游戏),DQN算法是一种安全的选择。如果您的项目有一个不太大的有限状态空间,则DP或tabular TD方法更合适。例如,DQN代理满足一个非常简单的API:
//创建环境对象
 var env={};
 env.getNumStates=function(){return 8;}
 env.getMaxNumActions=function(){return 4;}
//创建DQN代理
 var spec={alpha:0.01}//查看DQN页面上的完整选项
 agent=new RL.DQNAgent(env,spec);
 
 setInterval(function(){//启动学习循环
 var action=agent.act(s);//s是一个长度为8 
//。。。在环境中执行动作,得到奖励
 agent.learn(reward);//agent改进了自己的Q、策略、模型等,奖励为float 
},0);
换句话说,你给代理传递一些向量,它就给你一个动作。然后你用“奖赏”信号奖励或惩罚它的行为。随着时间的推移,代理将调整其参数,以获得最大的回报github在麻省理工学院的执照下。