深度学习大部分是监督学习,并且须要海量,高质量的数据对。这在现实世界,是很是难的事情。人类的学习过程里,不可能让一个孩子,看一亿张图片,才学会识别一只猫。python
强化学习则更像人类的学习过程,此次3天达到世界顶尖高手水平的alpha zero也是基于强化学习的算法,从0开始。链接主义学习里,有监督学习,非监督学习,还有强化学习,强化学习靠环境提供的强化信号对动做的优劣作评价。git
下面这篇文章对RL作了很好的总结:github
http://karpathy.github.io/2016/05/31/rl/算法
OpenAI gym提供一个很好的强化学习的工具箱:网络
https://github.com/openai/gym函数
咱们看看强化学习能作什么有意思的事情。工具
Atari是一个古老的打乒乓球的游戏。学习
再看一个MDP决策:人工智能
咱们就让RL作相似的事情,本文先介绍让计算机从像素开始学会打乒乓球。spa
乒乓球的游戏规则就很少介绍,直接看系统如何实现,咱们不仅针对这个游戏作系统设计,咱们设计尽可能经过的系统,能完成更多任务,看以下的策略网络。
pip install gym,这个强化学习的开发包是须要的。atari_py这个包也是须要的。
t_states = tf.placeholder(tf.float32, shape=[None,80,80]) # policy network network = InputLayer(t_states, name='input') network = DenseLayer(network, n_units=H, act=tf.nn.relu, name='hidden') network = DenseLayer(network, n_units=3, name='output') probs = network.outputs sampling_prob = tf.nn.softmax(probs) t_actions = tf.placeholder(tf.int32, shape=[None]) t_discount_rewards = tf.placeholder(tf.float32, shape=[None]) loss = tl.rein.cross_entropy_reward_loss(probs, t_actions, t_discount_rewards) train_op = tf.train.RMSPropOptimizer(learning_rate, decay_rate).minimize(loss)
这里损失函数,咱们仍然使用交叉熵损失:
cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, targets=actions)
但在这个基础上,乘以环境反馈的回报reward:
loss = tf.reduce_sum(tf.multiply(cross_entropy, rewards))
action = tl.rein.choice_action_by_probs(prob.flatten(), [1,2,3]) observation, reward, done, _ = env.step(action)
每一次行动,系统会给出一个reward,奖励或惩罚,而后训练最优的行动方案。
强化还能够作不少很酷的事情,后续继续更新。
关于做者:魏佳斌,互联网产品/技术总监,北京大学光华管理学院(MBA),特许金融分析师(CFA),资深产品经理/码农。偏心python,深度关注互联网趋势,人工智能,AI金融量化。致力于使用最前沿的认知技术去理解这个复杂的世界。
扫描下方二维码,关注:AI量化实验室(ailabx),了解AI量化最前沿技术、资讯。