深度學習大部分是監督學習,並且須要海量,高質量的數據對。這在現實世界,是很是難的事情。人類的學習過程裏,不可能讓一個孩子,看一億張圖片,才學會識別一隻貓。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量化最前沿技術、資訊。