人工智能如何本身玩遊戲?

人工智能

近些年來,人工智能在各種媒體大肆宣傳報道下又大火了起來。以大衆的眼光來看,人工智能看似已經無所不能了,自動駕駛、智能機器人、人臉識別、語音翻譯以及下圍棋玩遊戲等等,這些都不在話下。mysql

正所謂外行看熱鬧內行看門道,實際上,目前的人工智能所用到的技術主要是一些機器學習算法,屬於弱人工智能。雖然它能實現不少神奇的應用,但它的侷限性也很大,只有在清楚瞭解人工智能的機制原理後纔不至於被媒體誇大的報道牽着走。這篇文章咱們準備深刻理解人工智能如何本身玩遊戲。git

image

機器學習

總的來講,機器學習是人工智能的一個分支,是實現人工智能的一種途徑。機器學習理論主要研究的是一些能讓機器自動學習的算法,它能從數據樣本中自動學習到規律,而後經過學習到的規律對未知數據進行預測。github

image

機器學習大體能夠分爲四類:算法

  • 監督學習,監督學習是利用標記了的樣本進行學習。
  • 無監督學習,無監督學習則是使用未標記的樣本進行學習。
  • 半監督學習,數據樣本中只有少許帶標記的樣本,多數樣本都未標記,利用這些樣本進行學習。
  • 強化學習,是一種很不一樣的學習方式,它沒有規則的訓練樣本和標籤,主要經過獎勵和懲罰達到學習的目的。

一個小遊戲

有個小遊戲,以下圖,進入入口後初始位置爲A,陰影部分表示大炕,踩進去就沒命了得重來,操做能夠上下左右,最終走到H位置就算勝利。假如不知道哪些是大坑的狀況下,讓你來玩這個遊戲,你會怎麼玩?你應該有不少方法來完成這個遊戲的。但若是是機器呢?怎樣才能讓機器本身學會玩這個遊戲呢?答案就是強化學習!sql

image

強化學習

《最強大腦》曾經有個挑戰項目叫蜂巢迷宮,挑戰者不斷嘗試不斷試錯。強化學習作法也相似,它主要包含三個概念:狀態、動做和回報。一樣是以迷宮爲例,智能體所在的位置便是狀態,從某個位置向某方向走一步則爲動做,好比能夠向左向右或向上向下,每走一步會產生回報,好比撞到牆就是負回報,好的動做則會帶來正回報。並且不只要關注當前的回報,還要關注長期的回報,經過不斷試錯學習到一個長期回報的動做序列。網絡

image

智能體從環境中學習行爲策略,也就是如何在環境中採起一些列行爲,才能使得獎勵信號函數的值最大,即得到的累積回報最大。強化學習經過環境提供的信號對產生的動做的好壞作一種評價,它必需要靠自身經歷進行學習。在習得模型後智能體就知道在什麼狀態下該採起什麼行爲,學習從環境狀態到動做的映射,該映射稱爲策略。數據結構

以下圖,一個智能體經過與環境交互並以必定的策略改變環境,智能體能夠從環境中獲得狀態,而後執行一個動做,接着獲得一個即時回報,最後轉移到下一個狀態。整個過程就能夠總結爲根據當前觀察狀態值找到一個最優的動做使得回報最多。併發

image

馬爾科夫決策過程

在理解強化學習以前,咱們先了解咱們要解決什麼樣的問題。其實強化學習過程就是優化馬爾科夫決策過程,它由一個數學模型組成,該模型在代理的控制下對隨機結果進行決策。機器學習

image

代理能夠執行某些動做,例如上下左右移動,這些動做可能會獲得一個回報,回報能夠是正數也能夠是負數,它會致使總分數變更。同時動做能夠改變環境並致使一個新的狀態,而後代理能夠執行另一個動做。狀態、動做和回報的集合、轉換規則等,構成了馬爾科夫決策過程。分佈式

決策相關元素

在整個馬爾科夫決策過程當中,涉及到如下五個重要的元素。

  • 狀態集合,全部可能狀態。
  • 動做集合,全部動做,它能使某個狀態轉換爲另外一狀態。
  • 狀態轉移機率,特定的狀態下執行不一樣動做的機率分佈。
  • 回報函數,從一個狀態到另外一個狀態所獲得的回報。
  • 折扣因子,用於決定將來回報的重要性。

image

強化學習訓練主要就是計算各個狀態下不一樣動做的回報,並不是瞬間完成的,而是要通過大量嘗試。下一個狀態取決於當前狀態和動做,而且狀態不依賴於先前的狀態,沒有記憶,符合馬爾可夫性。

強化學習是智能體與環境之間的迭代交互,須要考慮幾點:

  • 處於某種狀態,決策者將在該狀態下選擇一個動做;
  • 能隨機進入一個新狀態並給決策者相應的回報做爲響應;
  • 狀態轉移函數選擇的動做將影響新狀態的選擇;

image

強化學習的特色

  • 它是試錯學習,由於它沒有像監督學習同樣的直接指導信息,因此它只能不斷去跟環境交互不斷試錯來獲取最佳策略。
  • 它的回報具備延遲性,由於它每每只能在最後一個狀態才能給出指導信息,這個問題也讓回報的分配更加困難,即在獲得正回報或負回報後怎麼分配給前面的狀態。

image

學習模型

通過不斷試錯後,最終經過強化學習習得一個模型,該模型可以學習到各個狀態下各個動做的質量,有了這個就能完成這個小遊戲了。

image

學習過程的大體思路爲:入口進去,A點有兩個方向,剛開始沒有回報,隨機選一個方向。若是爲下,則一直往下,到達B後發現沒路,獲得一個負100回報,結束。下次又來到B上面一格,更新本身的回報。不斷更新到最後在A處時,往下的回報爲-50,那就選擇往右。到達D後一樣先隨機,而後將格子的回報值更新好。由於要看長遠點,因此須要看將來n個時刻的回報指望,固然越遠的回報值會打折越多。n個時刻綜合起來D向右的回報大點,因而往右,到達F。去G的路上的格子通過迭代也都回報值變小,到H的回報值都較大,直到出口。

總結

因此,人工智能玩遊戲的機制原理就是強化學習,機器會經過不斷嘗試不斷試錯去總結一個擁有長期回報的策略,經過這個策略就能完成遊戲。其實如今在不少領域和應用都是經過強化學習來實現的,好比飛行器的飛行控制、控制機器人的行走、學習怎麼玩遊戲、學習怎麼理財投資等等。

image

github

github.com/sea-boat/Ma…

-------------推薦閱讀------------

個人開源項目彙總(機器&深度學習、NLP、網絡IO、AIML、mysql協議、chatbot)

爲何寫《Tomcat內核設計剖析》

2018彙總數據結構算法篇

2018彙總機器學習篇

2018彙總Java深度篇

2018彙總天然語言處理篇

2018彙總深度學習篇

2018彙總JDK源碼篇

2018彙總Java併發核心篇

2018彙總讀書篇


跟我交流,向我提問:

歡迎關注:人工智能、讀書與感想、聊聊數學、分佈式、機器學習、深度學習、天然語言處理、算法與數據結構、Java深度、Tomcat內核等相關文章

相關文章
相關標籤/搜索