閱讀963 返回首頁    go 阿裏雲 go 技術社區[雲棲]


用超級瑪麗理解機器學習基礎

1.png

有關神經網絡和機器學習的文章很多,因為這個主題在最近幾年裏非常受歡迎。該領域看起來似乎讓人難以靠近,並且非常難以理解,許多人認為必須是數學家或統計學家才能掌握機器學習的相關概念。然而,機器學習和神經網絡的基本概念不一定像人們想象的那樣複雜。

本文的目的是通過一個簡單的例子來解釋機器學習工作原理的高層概念。希望這能為你繼續閱讀和學習相關知識帶來更多的興趣和信心。

增強學習

機器學習程序與常規程序的不同之處在於程序員沒有在機器學習程序中明確地定義邏輯,而是創建了一個能夠自己學習如何成功完成任務的程序。下麵我給出的例子是一個強化學習機器學習程序。該程序接收**輸入**,自己做出相關的決策並產生一個**輸出**,然後根據輸出中產生的**獎勵**進行學習,並一遍又一遍地重複這整個過程。這可能聽起來很抽象,但是我們人類學習如何做事也是一樣的。下麵我會把它分解成與人類學習相關的幾個步驟。我們將以超級馬裏奧為例。

在開始我們這個虛構的實驗之前,你必須把自己想象成是一個電腦遊戲新手。你從來沒有聽說過超級馬裏奧,更沒有玩過。然後,有人向你展示這個遊戲。

輸入

在屏幕中,你可以看到一些簡單的2D場景,這就是你的輸入。其中,你可以看一個小人,那就是馬裏奧,你還能看到場景中的所有其他物體。

輸出

你有四種方式與遊戲進行互動:向左走、向右走、蹲下、跳躍。這些就是你的輸出。你可以根據輸入來決定應該選擇哪個輸出。

獎勵

你目前可能並不清楚遊戲中潛在的獎勵,但很快就會得到第一手經驗。每個輸出的獎勵在遊戲中是不同的。如果你隻是向左或向右走,那麼獎勵很低。如果你靠近一個硬幣,則獎勵稍高一些。如果你跳進一個神秘的盒子,那麼獎勵會再高一些。但是,如果你被敵人擊中,那麼獎勵是負的,不用說,負數獎勵更像是一種懲罰。

學習如何玩超級馬裏奧

作為一名新手,你可以從按右箭頭開始遊戲。這樣,你就會得到馬裏奧向右移動的獎勵。然而,隨著你繼續按右箭頭,馬裏奧最終會碰到一個板栗仔,這樣,你被會被獎勵死亡!

2.png
馬裏奧因為碰到板栗仔而獎勵死亡

不用擔心,你可以重新開始。這一次,當你注冊了板栗仔向你走來的輸入時,你可以嚐試其他輸出以獲得不同的獎勵。經過幾次嚐試之後,你就會意識到,要獲得最高獎勵的輸出就需要跳到板栗仔的頭頂,或者直接跳過它。你現在開始學習如何玩超級馬裏奧了哦。

3.png
當馬裏奧跳過板栗仔的時候,就會獎勵繼續活著

這個過程展示了強化學習是如何在現實生活中發揮作用的。機器學習程序一開始是一塊幹淨的白板,不知道自己應該要做什麼。然後,它需要一個輸入,並開始試圖找出哪個輸出能讓它得到最高的獎勵。這個概念非常符合人類通過**試錯**來學習的過程。我們首先以一種方式去嚐試,然後以另一種方式去嚐試,直到獲得我們想要或者期望的獎勵。

但是大家都知道如何玩超級馬裏奧……

是的,沒有人真的需要學習如何打超級馬裏奧,因為這是一個非常直觀的遊戲。即使是孩子也能玩得非常好。

而我們這樣做的目的是要將以往的經驗包含在遊戲中,從而能夠更好地探索遊戲規則,以便更快地獲得更高的獎勵。在機器學習中,這稱之為**訓練**。

訓練

如前所述,每當機器學習程序開始嚐試弄清楚如何完成一項任務時,它就會以一塊幹淨的白板開始。因此,給程序一些訓練數據很重要,這樣它才能從這些基礎開始,直至學會如何完成任務,並確保在此期間不會反複地犯一些小錯誤。

當然,隻要給予足夠的時間,機器學習算法將能夠訓練自己以成功完成給定的任務。盡管這可能需要花費很長時間,但最重要的還是要為你的程序提供高質量的訓練數據,以獲得更準確的結果。

結論

本文的關鍵是要讓讀者理解機器學習算法是如何像人類一樣學習並完成任務的。在傳統的程序中,決策以條件語句的形式硬編碼到程序中。例如,在超級馬裏奧遊戲中就是依靠程序員來識別威脅並進入條件分支:如果發現威脅,請執行此特定操作,否則繼續。這種傳統程序和機器學習程序的主要區別在於,機器學習程序最終可以自主地做出決定。這樣,機器學習程序就可以在無需重新編程的情況下用於完成其他類似的任務。我們的演示程序在玩超級馬裏奧之後可以很好地學習玩其他遊戲,而且玩得越多成績越高。這種行為與人類非常類似。

這篇文章隻是對一個非常有深度的主題做了簡單的介紹。如果你有興趣深入了解人工智能和機器學習的話,我推薦你閱讀一下這個係列的文章

文章原標題《Understanding basics of machine learning through Super Mario》,作者:Adam Wattis,譯者:夏天,審校:主題曲。

文章為簡譯,更為詳細的內容,請查看原文

最後更新:2017-09-25 17:03:30

  上一篇:go  基於阿裏的Node全棧之路(二)阿裏負載均衡的HTTPS優化方案
  下一篇:go  Redis中的事件處理模型