pos機(jī)自學(xué)入門

 新聞資訊2  |   2023-07-13 09:47  |  投稿人:pos機(jī)之家

網(wǎng)上有很多關(guān)于pos機(jī)自學(xué)入門,機(jī)器不學(xué)習(xí)的知識(shí),也有很多人為大家解答關(guān)于pos機(jī)自學(xué)入門的問(wèn)題,今天pos機(jī)之家(www.www690aa.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來(lái)看下吧!

本文目錄一覽:

1、pos機(jī)自學(xué)入門

pos機(jī)自學(xué)入門

機(jī)器不學(xué)習(xí) www.jqbxx.com : 深度聚合機(jī)器學(xué)習(xí)、深度學(xué)習(xí)算法及技術(shù)實(shí)戰(zhàn)

從今天開(kāi)始整理強(qiáng)化學(xué)習(xí)領(lǐng)域的知識(shí),主要參考的資料是Sutton的強(qiáng)化學(xué)習(xí)書(shū)和UCL強(qiáng)化學(xué)習(xí)的課程。這個(gè)系列大概準(zhǔn)備寫10到20篇,希望寫完后自己的強(qiáng)化學(xué)習(xí)碎片化知識(shí)可以得到融會(huì)貫通,也希望可以幫到更多的人,畢竟目前系統(tǒng)的講解強(qiáng)化學(xué)習(xí)的中文資料不太多。

第一篇會(huì)從強(qiáng)化學(xué)習(xí)的基本概念講起,對(duì)應(yīng)Sutton書(shū)的第一章和UCL課程的第一講。

1. 強(qiáng)化學(xué)習(xí)在機(jī)器學(xué)習(xí)中的位置

強(qiáng)化學(xué)習(xí)的學(xué)習(xí)思路和人比較類似,是在實(shí)踐中學(xué)習(xí),比如學(xué)習(xí)走路,如果摔倒了,那么我們大腦后面會(huì)給一個(gè)負(fù)面的獎(jiǎng)勵(lì)值,說(shuō)明走的姿勢(shì)不好。然后我們從摔倒?fàn)顟B(tài)中爬起來(lái),如果后面正常走了一步,那么大腦會(huì)給一個(gè)正面的獎(jiǎng)勵(lì)值,我們會(huì)知道這是一個(gè)好的走路姿勢(shì)。那么這個(gè)過(guò)程和之前講的機(jī)器學(xué)習(xí)方法有什么區(qū)別呢?

強(qiáng)化學(xué)習(xí)是和監(jiān)督學(xué)習(xí),非監(jiān)督學(xué)習(xí)并列的第三種機(jī)器學(xué)習(xí)方法,從下圖我們可以看出來(lái)。

強(qiáng)化學(xué)習(xí)來(lái)和監(jiān)督學(xué)習(xí)最大的區(qū)別是它是沒(méi)有監(jiān)督學(xué)習(xí)已經(jīng)準(zhǔn)備好的訓(xùn)練數(shù)據(jù)輸出值的。強(qiáng)化學(xué)習(xí)只有獎(jiǎng)勵(lì)值,但是這個(gè)獎(jiǎng)勵(lì)值和監(jiān)督學(xué)習(xí)的輸出值不一樣,它不是事先給出的,而是延后給出的,比如上面的例子里走路摔倒了才得到大腦的獎(jiǎng)勵(lì)值。同時(shí),強(qiáng)化學(xué)習(xí)的每一步與時(shí)間順序前后關(guān)系緊密。而監(jiān)督學(xué)習(xí)的訓(xùn)練數(shù)據(jù)之間一般都是獨(dú)立的,沒(méi)有這種前后的依賴關(guān)系。

再來(lái)看看強(qiáng)化學(xué)習(xí)和非監(jiān)督學(xué)習(xí)的區(qū)別。也還是在獎(jiǎng)勵(lì)值這個(gè)地方。非監(jiān)督學(xué)習(xí)是沒(méi)有輸出值也沒(méi)有獎(jiǎng)勵(lì)值的,它只有數(shù)據(jù)特征。同時(shí)和監(jiān)督學(xué)習(xí)一樣,數(shù)據(jù)之間也都是獨(dú)立的,沒(méi)有強(qiáng)化學(xué)習(xí)這樣的前后依賴關(guān)系。

2. 強(qiáng)化學(xué)習(xí)的建模

我們現(xiàn)在來(lái)看看強(qiáng)化學(xué)習(xí)這樣的問(wèn)題我們?cè)趺磥?lái)建模,簡(jiǎn)單的來(lái)說(shuō),是下圖這樣的:

上面的大腦代表我們的算法執(zhí)行個(gè)體,我們可以操作個(gè)體來(lái)做決策,即選擇一個(gè)合適的動(dòng)作(Action)At。下面的地球代表我們要研究的環(huán)境,它有自己的狀態(tài)模型,我們選擇了動(dòng)作At后,環(huán)境的狀態(tài)(State)會(huì)變,我們會(huì)發(fā)現(xiàn)環(huán)境狀態(tài)已經(jīng)變?yōu)镾t+1,同時(shí)我們得到了我們采取動(dòng)作At的延時(shí)獎(jiǎng)勵(lì)(Reward)Rt+1。然后個(gè)體可以繼續(xù)選擇下一個(gè)合適的動(dòng)作,然后環(huán)境的狀態(tài)又會(huì)變,又有新的獎(jiǎng)勵(lì)值。。。這就是強(qiáng)化學(xué)習(xí)的思路。

那么我們可以整理下這個(gè)思路里面出現(xiàn)的強(qiáng)化學(xué)習(xí)要素。

第一個(gè)是環(huán)境的狀態(tài)S, t時(shí)刻環(huán)境的狀態(tài)St是它的環(huán)境狀態(tài)集中某一個(gè)狀態(tài)。

第二個(gè)是個(gè)體的動(dòng)作A, t時(shí)刻個(gè)體采取的動(dòng)作At是它的動(dòng)作集中某一個(gè)動(dòng)作。

第三個(gè)是環(huán)境的獎(jiǎng)勵(lì)R,t時(shí)刻個(gè)體在狀態(tài)St采取的動(dòng)作At對(duì)應(yīng)的獎(jiǎng)勵(lì)Rt+1會(huì)在t+1時(shí)刻得到。

下面是稍復(fù)雜一些的模型要素。

第四個(gè)是個(gè)體的策略(policy)π,它代表個(gè)體采取動(dòng)作的依據(jù),即個(gè)體會(huì)依據(jù)策略π來(lái)選擇動(dòng)作。最常見(jiàn)的策略表達(dá)方式是一個(gè)條件概率分布π(a|s), 即在狀態(tài)s時(shí)采取動(dòng)作a的概率。即π(a|s)=P(At=a|St=s).此時(shí)概率大的動(dòng)作被個(gè)體選擇的概率較高。

第五個(gè)是個(gè)體在策略π和狀態(tài)s時(shí),采取行動(dòng)后的價(jià)值(value),一般用vπ(s)表示。這個(gè)價(jià)值一般是一個(gè)期望函數(shù)。雖然當(dāng)前動(dòng)作會(huì)給一個(gè)延時(shí)獎(jiǎng)勵(lì)Rt+1,但是光看這個(gè)延時(shí)獎(jiǎng)勵(lì)是不行的,因?yàn)楫?dāng)前的延時(shí)獎(jiǎng)勵(lì)高,不代表到了t+1,t+2,...時(shí)刻的后續(xù)獎(jiǎng)勵(lì)也高。比如下象棋,我們可以某個(gè)動(dòng)作可以吃掉對(duì)方的車,這個(gè)延時(shí)獎(jiǎng)勵(lì)是很高,但是接著后面我們輸棋了。此時(shí)吃車的動(dòng)作獎(jiǎng)勵(lì)值高但是價(jià)值并不高。因此我們的價(jià)值要綜合考慮當(dāng)前的延時(shí)獎(jiǎng)勵(lì)和后續(xù)的延時(shí)獎(jiǎng)勵(lì)。價(jià)值函數(shù)vπ(s)一般可以表示為下式,不同的算法會(huì)有對(duì)應(yīng)的一些價(jià)值函數(shù)變種,但思路相同。:

vπ(s)=Eπ(Rt+1+γRt+2+γ2Rt+3+...|St=s)

其中γ是第六個(gè)模型要素,即獎(jiǎng)勵(lì)衰減因子,在[0,1]之間。如果為0,則是貪婪法,即價(jià)值只由當(dāng)前延時(shí)獎(jiǎng)勵(lì)決定,如果是1,則所有的后續(xù)狀態(tài)獎(jiǎng)勵(lì)和當(dāng)前獎(jiǎng)勵(lì)一視同仁。大多數(shù)時(shí)候,我們會(huì)取一個(gè)0到1之間的數(shù)字,即當(dāng)前延時(shí)獎(jiǎng)勵(lì)的權(quán)重比后續(xù)獎(jiǎng)勵(lì)的權(quán)重大。

第七個(gè)是環(huán)境的狀態(tài)轉(zhuǎn)化模型,可以理解為一個(gè)概率狀態(tài)機(jī),它可以表示為一個(gè)概率模型,即在狀態(tài)s

s下采取動(dòng)作a,轉(zhuǎn)到下一個(gè)狀態(tài)s′的概率,表示為Pss′a。

第八個(gè)是探索率?,這個(gè)比率主要用在強(qiáng)化學(xué)習(xí)訓(xùn)練迭代過(guò)程中,由于我們一般會(huì)選擇使當(dāng)前輪迭代價(jià)值最大的動(dòng)作,但是這會(huì)導(dǎo)致一些較好的但我們沒(méi)有執(zhí)行過(guò)的動(dòng)作被錯(cuò)過(guò)。因此我們?cè)谟?xùn)練選擇最優(yōu)動(dòng)作時(shí),會(huì)有一定的概率?不選擇使當(dāng)前輪迭代價(jià)值最大的動(dòng)作,而選擇其他的動(dòng)作。

以上8個(gè)就是強(qiáng)化學(xué)習(xí)模型的基本要素了。當(dāng)然,在不同的強(qiáng)化學(xué)習(xí)模型中,會(huì)考慮一些其他的模型要素,或者不考慮上述要素的某幾個(gè),但是這8個(gè)是大多數(shù)強(qiáng)化學(xué)習(xí)模型的基本要素。

3. 強(qiáng)化學(xué)習(xí)的簡(jiǎn)單實(shí)例

這里給出一個(gè)簡(jiǎn)單的強(qiáng)化學(xué)習(xí)例子Tic-Tac-Toe。這是一個(gè)簡(jiǎn)單的游戲,在一個(gè)3x3的九宮格里,兩個(gè)人輪流下,直到有個(gè)人的棋子滿足三個(gè)一橫一豎或者一斜,贏得比賽游戲結(jié)束,或者九宮格填滿也沒(méi)有人贏,則和棋。

這個(gè)例子的完整代碼在這里。例子只有一個(gè)文件,很簡(jiǎn)單,代碼首先會(huì)用兩個(gè)電腦選手訓(xùn)練模型,然后可以讓人和機(jī)器對(duì)戰(zhàn)。當(dāng)然,由于這個(gè)模型很簡(jiǎn)單,所以只要你不亂走,最后的結(jié)果都是和棋,當(dāng)然想贏電腦也是不可能的。

我們重點(diǎn)看看這個(gè)例子的模型,理解上面第二節(jié)的部分。如何訓(xùn)練強(qiáng)化學(xué)習(xí)模型可以先不管。代碼部分大家可以自己去看,只有300多行。

首先看第一個(gè)要素環(huán)境的狀態(tài)S

S。這是一個(gè)九宮格,每個(gè)格子有三種狀態(tài),即沒(méi)有棋子(取值0),有第一個(gè)選手的棋子(取值1),有第二個(gè)選手的棋子(取值-1)。那么這個(gè)模型的狀態(tài)一共有3^9=19683個(gè)。

接著我們看個(gè)體的動(dòng)作A,這里只有9個(gè)格子,每次也只能下一步,所以最多只有9個(gè)動(dòng)作選項(xiàng)。實(shí)際上由于已經(jīng)有棋子的格子是不能再下的,所以動(dòng)作選項(xiàng)會(huì)更少。實(shí)際可以選擇動(dòng)作的就是那些取值為0的格子。

第三個(gè)是環(huán)境的獎(jiǎng)勵(lì)R,這個(gè)一般是我們自己設(shè)計(jì)。由于我們的目的是贏棋,所以如果某個(gè)動(dòng)作導(dǎo)致的改變到的狀態(tài)可以使我們贏棋,結(jié)束游戲,那么獎(jiǎng)勵(lì)最高,反之則獎(jiǎng)勵(lì)最低。其余的雙方下棋動(dòng)作都有獎(jiǎng)勵(lì),但獎(jiǎng)勵(lì)較少。特別的,對(duì)于先下的棋手,不會(huì)導(dǎo)致結(jié)束的動(dòng)作獎(jiǎng)勵(lì)要比后下的棋手少。

# give reward to two players

def giveReward(self):

if self.currentState.winner == self.p1Symbol:

self.p1.feedReward(1)

self.p2.feedReward(0)

elif self.currentState.winner == self.p2Symbol:

self.p1.feedReward(0)

self.p2.feedReward(1)

else:

self.p1.feedReward(0.1)

self.p2.feedReward(0.5)

第四個(gè)是個(gè)體的策略(policy)π

π,這個(gè)一般是學(xué)習(xí)得到的,我們會(huì)在每輪以較大的概率選擇當(dāng)前價(jià)值最高的動(dòng)作,同時(shí)以較小的概率去探索新動(dòng)作,在這里AI的策略如下面代碼所示。

里面的exploreRate就是我們的第八個(gè)要素探索率?。即策略是以1??的概率選擇當(dāng)前最大價(jià)值的動(dòng)作,以?的概率隨機(jī)選擇新動(dòng)作。

# determine next action

def takeAction(self):

state = self.states[-1]

nextStates = []

nextPositions = []

for i in range(BOARD_ROWS):

for j in range(BOARD_COLS):

if state.data[i, j] == 0:

nextPositions.append([i, j])

nextStates.append(state.nextState(i, j, self.symbol).getHash())

if np.random.binomial(1, self.exploreRate):

np.random.shuffle(nextPositions)

# Not sure if truncating is the best way to deal with exploratory step

# Maybe it\'s better to only skip this step rather than forget all the history

self.states = []

action = nextPositions[0]

action.append(self.symbol)

return action

values = []

for hash, pos in zip(nextStates, nextPositions):

values.append((self.estimations[hash], pos))

np.random.shuffle(values)

values.sort(key=lambda x: x[0], reverse=True)

action = values[0][1]

action.append(self.symbol)

return action

第五個(gè)是價(jià)值函數(shù),代碼里用value表示。價(jià)值函數(shù)的更新代碼里只考慮了當(dāng)前動(dòng)作的現(xiàn)有價(jià)值和得到的獎(jiǎng)勵(lì)兩部分,可以認(rèn)為我們的第六個(gè)模型要素衰減因子γ為0。具體的代碼部分如下,價(jià)值更新部分的代碼加粗。具體為什么會(huì)這樣更新價(jià)值函數(shù)我們以后會(huì)講。

# update estimation according to reward

def feedReward(self, reward):

if len(self.states) == 0:

return

self.states = [state.getHash() for state in self.states]

target = reward

for latestState in reversed(self.states):

value = self.estimations[latestState] + self.stepSize * (target - self.estimations[latestState])

self.estimations[latestState] = value

target = value

self.states = []

第七個(gè)是環(huán)境的狀態(tài)轉(zhuǎn)化模型, 這里由于每一個(gè)動(dòng)作后,環(huán)境的下一個(gè)模型狀態(tài)是確定的,也就是九宮格的每個(gè)格子是否有某個(gè)選手的棋子是確定的,因此轉(zhuǎn)化的概率都是1,不存在某個(gè)動(dòng)作后會(huì)以一定的概率到某幾個(gè)新?tīng)顟B(tài),比較簡(jiǎn)單。

從這個(gè)例子,相信大家對(duì)于強(qiáng)化學(xué)習(xí)的建模會(huì)有一個(gè)初步的認(rèn)識(shí)了。

以上就是強(qiáng)化學(xué)習(xí)的模型基礎(chǔ),下一篇會(huì)討論馬爾科夫決策過(guò)程。

以上就是關(guān)于pos機(jī)自學(xué)入門,機(jī)器不學(xué)習(xí)的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于pos機(jī)自學(xué)入門的知識(shí),希望能夠幫助到大家!

轉(zhuǎn)發(fā)請(qǐng)帶上網(wǎng)址:http://www.www690aa.com/newsone/84176.html

你可能會(huì)喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。