用TensorFlow構(gòu)建你的第一個游戲AI入門教程
本文通過一種簡單的 Catch 游戲介紹了深度強化學(xué)習(xí)的基本原理,并給出了完整的以 Keras 為前端的 TensorFlow 代碼實現(xiàn),是入門深度強化學(xué)習(xí)的不錯選擇。
去年,DeepMind 的 AlphaGo 以 4-1 的比分打敗了世界圍棋冠軍李世乭。超過 2 億的觀眾就這樣看著強化學(xué)習(xí)(reinforce learning)走上了世界舞臺。幾年前,DeepMind 制作了一個可以玩 Atari 游戲的機器人,引發(fā)軒然大波。此后這個公司很快被谷歌收購。
很多研究者相信,強化學(xué)習(xí)是我們創(chuàng)造通用人工智能(ArTIficial General Intelligence)的最佳手段。這是一個令人興奮的領(lǐng)域,有著許多未解決的挑戰(zhàn)和巨大的潛能。
強化學(xué)習(xí)起初看似非常有挑戰(zhàn)性,但其實要入門并不困難。在這篇文章中,我們將創(chuàng)造一個基于 Keras 的簡單機器人,使它能玩 Catch 游戲。
Catch 游戲
原始的 Catch 游戲界面
Catch 是一個非常簡單的街機游戲,你可能在孩提時代玩過它。游戲規(guī)則如下:水果從屏幕的頂部落下,玩家必須用一個籃子抓住它們;每抓住一個水果,玩家得一分;每漏掉一個水果,玩家會被扣除一分。這里的目標(biāo)是讓電腦自己玩 Catch 游戲。不過,我們不會使用這么漂亮的游戲界面。相反,我們會使用一個簡單的游戲版本來簡化任務(wù):
簡化的 Catch 游戲界面
玩 Catch 游戲時,玩家要決定三種可能的行為。玩家可以將籃子左移、右移或保持不動。這個決定取決于游戲的當(dāng)前狀態(tài)。也就是說,取決于果子掉落的位置和籃子的位置。我們的目標(biāo)是創(chuàng)造這樣一個模型:它能在給定游戲屏幕內(nèi)容的情況下,選擇導(dǎo)致得分最高的動作。
這個任務(wù)可以被看做一個簡單的分類問題。我們可以讓游戲?qū)<叶啻瓮孢@個游戲,并記錄他們的行為。然后,可以通過選擇類似于游戲?qū)<业摹刚_」動作來訓(xùn)練模型。
但這實際上并不是人類學(xué)習(xí)的方式。人類可以在無指導(dǎo)的情況下,自學(xué)像 Catch 這樣的游戲。這非常有用。想象一下,你如果每次想學(xué)習(xí)像 Catch 一樣簡單的東西,就必須雇傭一批專家玩這個游戲上千次!這必然非常昂貴而緩慢。
而在強化學(xué)習(xí)中,模型不會根據(jù)標(biāo)記的數(shù)據(jù)訓(xùn)練,而是通過以往的經(jīng)歷。
深度強化學(xué)習(xí)
強化學(xué)習(xí)受行為心理學(xué)啟發(fā)。我們并不為模型提供「正確的」行為,而是給予獎勵和懲罰。該模型接受關(guān)于當(dāng)前環(huán)境狀態(tài)的信息(例如計算機游戲屏幕)。然后,它將輸出一個動作,就像游戲手柄一樣。環(huán)境將對這個動作做出回應(yīng),并提供下一個狀態(tài)和獎懲行為。
據(jù)此,模型學(xué)習(xí)并尋找最大化獎勵的行為。
實際上,有很多方式能夠做到這一點。下面,讓我們了解一下 Q-Learning。利用 Q-Learning 訓(xùn)練計算機玩 Atari 游戲的時候,Q-Learning 曾引起了轟動?,F(xiàn)在,Q-Learning 依然是一個有重大意義的概念。大多數(shù)現(xiàn)代的強化學(xué)習(xí)算法,都是 Q-Learning 的一些改進(jìn)。
理解 Q-Learning