前言
機器學習可以大致分為四類:
- 監督學習
- 無監督學習
- 半監督學習
- 強化學習
監督學習是利用標記了的樣本進行學習,無監督學習則是使用未標記的樣本進行學習,這兩個是我們最常見的。半監督學習則是樣本中只有少量帶標記的樣本,多數樣本都未標記,利用這些樣本進行學習。強化學習則是很不同的一種學習方式,它沒有規則的訓練樣本和標籤,主要通過獎勵和懲罰達到學習的目的。
什麼是強化學習
《最強大腦》曾經有個挑戰專案叫蜂巢迷宮,挑戰者不斷嘗試不斷試錯。強化學習做法也類似,它主要包含三個概念:狀態、動作和回報。同樣是以迷宮為例,智慧體所在的位置即是狀態,從某個位置向某方向走一步則為動作,比如可以向左向右或向上向下,每走一步會產生回報,比如撞到牆就是負回報,好的動作則會帶來正回報。而且不僅要關注當前的回報,還要關注長期的回報,通過不斷試錯學習到一個長期回報的動作序列。
強化學習是機器學習的主要學習方法之一,智慧體從環境到行為的學習,也就是如何在環境中採取一些列行為,才能使得獎勵訊號函式的值最大,即獲得的累積回報最大。
強化學習不同於監督學習,監督學習通過正確結果來指導學習,而強化學習通過環境提供的訊號對產生的動作的好壞做一種評價,它必須要靠自身經歷進行學習。學習後智慧體知道在什麼狀態下該採取什麼行為,學習從環境狀態到動作的對映,該對映稱為策略。
如下圖,一個智慧體agent通過與環境environment相互互動並以一定的策略改變環境,agent可以從環境中得到狀態$S_t$,然後執行一個動作$A_t$,接著得到一個即時回報$R_t$,最後轉移到下一個狀態。
所以整個過程就可以總結為根據當前觀察狀態值找到一個最優的動作使得回報最多。
Markov決策過程
智慧體與環境的互動過程會生成一個序列,
對應的Markov動態過程為:agent初始狀態為$S_0$,然後執行動作$A_0$,得到回報$R_1$,然後轉移到下個狀態$S_1$,不斷重複。
這個過程構成Markov決策過程,服從“未來獨立於過去”的Markov假設,所以下一時刻的狀態只取決於當前時刻狀態。即
如果定義了一個轉換過程後,得到的回報函式累加和為
強化學習目標就是尋找一個最佳的策略,使回報加權和的期望值最大。
而t時刻的累積回報可以表示為
可以看到包含了一個阻尼係數r,它的取值為0到1,越靠後的狀態對回報的影響越小,逐步衰減。
在某個狀態s下,價值函式為
價值函式可以看成兩部分,$R_{t+1}$為即時回報,
為下一狀態價值函式值的打折值。上面的價值函式為Bellman Equation形態,即動態規劃方程,可用迭代方式求解。
Q學習
前面說到的是狀態價值函式,我們還需要動作價值函式,它可以用來根據動作價值的大小而做出動作。Q學習即是學習不同狀態下各個動作的質量,它定義為
它同樣可以變換成Bellman Equation形態,
最優動作價值函式,
可以看到最大化當前的動作價值函式就是最大化當前回報和下一時刻狀態的最優動作價值函式。
動作價值函式雖然能直接計算出Q值,但實際學習時並沒有直接使用該Q值來更新,而是通過漸進的方式來更新。學習的方法可用如下虛擬碼說明,首先初始化Q學習的狀態集和動作集組成的陣列,然後觀察初始狀態,接著不斷重複執行:選擇一個動作,觀察回報並轉移到新狀態,更新Q學習陣列值,涉及迭代方式更新,由於我們不能知道下一刻狀態的Q值,所以更新時用之前迭代的Q值來更新此次迭代的Q值,其中α表示學習率。
initialize Q[numstates,numactions] arbitrarily
observe initial state s
repeat
select and carry out an action a
observe reward R and new state s'
Q[s,a] = Q[s,a] + α(R + γmaxa'Q[s',a'] - Q[s,a])
s = s'
until terminated複製程式碼
強化學習的特點
- 它是試錯學習,因為它沒有像監督學習一樣的直接指導資訊,所以它只能不斷去跟環境互動不斷試錯來獲取最佳策略。
- 它的回報具有延遲性,因為它往往只能在最後一個狀態才能給出指導資訊,這個問題也讓回報的分配更加困難,即在得到正回報或負回報後怎麼分配給前面的狀態。
強化學習的運用
- 比如飛行器的飛行控制。
- 比如控制機器人的行走。
- 比如學習怎麼玩遊戲。
- 比如學習怎麼理財投資。
- 比如學習怎麼下棋。
以下是廣告
========廣告時間========
鄙人的新書《Tomcat核心設計剖析》已經在京東銷售了,有需要的朋友可以到 item.jd.com/12185360.ht… 進行預定。感謝各位朋友。
=========================
歡迎關注: