在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于模型的學(xué)習(xí)vs無模型學(xué)習(xí)

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-11-22 09:06 ? 次閱讀

聽到“強化學(xué)習(xí)”,你首先想到的是什么?最常見的反應(yīng)是有太多數(shù)學(xué)知識、非常復(fù)雜。但是我認為這是一個非常迷人的研究領(lǐng)域,在今天的文章中,我會把其中的技術(shù)分解成多種易于理解的概念。

你一定聽說過OpenAI和DeepMind,這兩家機構(gòu)在強化學(xué)習(xí)領(lǐng)域都作出了重要進步。OpenAI的強化學(xué)習(xí)智能體可以在Dota 2中擊敗人類對手。

你是否認為我們用動態(tài)編程可以打造一個像Dota 2一樣復(fù)雜的機器人呢?

很不幸,答案是否定的。因為Dota 2中的狀態(tài)有很多,要收集所有具體狀態(tài)幾乎不可能。所以我們開始采用強化學(xué)習(xí)或者更具體的無模型學(xué)習(xí)。

在這篇文章中,我們要試著理解蒙特卡羅學(xué)習(xí)的基本概念。當(dāng)沒有有關(guān)環(huán)境的先驗信息時,所有的信息都從經(jīng)驗中獲取,此時就要用到蒙特卡羅學(xué)習(xí)方法。在這一過程中,我們會用到OpenAI Gym工具包,并且用Python實現(xiàn)這一方法。

基于模型的學(xué)習(xí) vs 無模型學(xué)習(xí)

我們知道,動態(tài)編程適用于解決已知環(huán)境基礎(chǔ)模型的問題(更準(zhǔn)確地說是基于模型的學(xué)習(xí))。強化學(xué)習(xí)指的是從玩游戲的經(jīng)驗中學(xué)習(xí),但是,我們卻從未在動態(tài)編程中玩過游戲,或者體驗環(huán)境。我們有關(guān)于環(huán)境的完全模型,其中包含了所有狀態(tài)轉(zhuǎn)換的可能。

但是,在大多數(shù)現(xiàn)實生活情境中,從一種狀態(tài)轉(zhuǎn)換到另一種狀態(tài)的可能性是無法提前預(yù)知的。

假設(shè)我們想訓(xùn)練一個機器人學(xué)習(xí)下象棋,將棋盤環(huán)境的變化看作是馬爾科夫決策過程(MDP)。

現(xiàn)在根據(jù)棋子的位置,環(huán)境可以有很多種狀態(tài)(超過1050),另外還會有許多可能做出的動作。這種環(huán)境下的模型幾乎無法設(shè)計出來。

一種可能的解決方法是重復(fù)地下棋,接收到可以獲勝的積極獎勵以及會輸?shù)舯荣惖南麡O獎勵。這就是從經(jīng)驗中學(xué)習(xí)的過程。

蒙特卡羅方法案例

通過生成合適的隨機數(shù),并觀察數(shù)字遵循一定特征的,這種方法都可以看作是蒙特卡羅方法。

在下面的案例中,我們試著用筆和紙找到π的值。首先畫一個正方形,然后以原點為圓心,正方形邊長為半徑畫圓。現(xiàn)在我們用C3PO機器人在正方形內(nèi)隨機畫點,一共有3000個點,結(jié)果如下:

所以,π的值用以下公式計算:

其中N是紅點落入圓圈中的次數(shù)。可以看到,我們通過計算隨機點的比例估算出了π的值。

蒙特卡羅強化學(xué)習(xí)

用于強化學(xué)習(xí)的蒙特卡羅方法是直接從經(jīng)驗中學(xué)習(xí),沒有先驗知識。這里的隨機因素就是返回結(jié)果或獎勵。

需要注意的是,這種方法只能應(yīng)用于偶爾發(fā)生的馬爾科夫決策過程。原因是在計算任意返回之前,這一episode就要停止。我們并不在每次動作結(jié)束后就更新,而是在每個episode結(jié)束后更新。它的方法很簡單,即取每個狀態(tài)所有采樣軌跡的平均回報。

和動態(tài)編程類似,這里有一種策略評估和策略改進方法,我們將在下面兩個部分進行講解。

蒙特卡羅方法評估

這里的目標(biāo)是學(xué)習(xí)在策略pi的訓(xùn)練下得到的價值函數(shù)vpi(s)。返回的值是總體折扣獎勵:

同時價值函數(shù)是預(yù)期回報:

我們可以通過添加樣本并除以總樣本數(shù)來估計預(yù)期值:

其中i表示episode指數(shù),s表示狀態(tài)指數(shù)。

問題時我們要如何得到這些樣本的返回值?為了做到這一點,我們需要運行多個episode來生成它們。

對每次運行的episode,我們會有一系列狀態(tài)和獎勵。對于獎勵,我們可以用定義計算返回值,是左右未來獎勵的總和。

以下是算法每一步的內(nèi)容:

對策略、價值函數(shù)進行初始化

根據(jù)當(dāng)前策略生成一次episode并跟蹤這一過程中遇到的狀態(tài)

從上一步中選擇一種狀態(tài)。

當(dāng)這一狀態(tài)第一次出現(xiàn)時,將接收到的返回值添加到列表中

對所有返回值進行平均

計算平均值時設(shè)定狀態(tài)的值

4. 重復(fù)步驟3

這里我們重點講解步驟3.1,“添加收到的返回值到列表中”。

用一個簡單例子理解這一概念,假設(shè)這里有一種環(huán)境,其中包含了兩種狀態(tài)A和B。以下是兩次樣本的episode:

A+3=>A表示從狀態(tài)A轉(zhuǎn)移到狀態(tài)A需要獎勵+3.

蒙特卡羅控制

和動態(tài)編程類似,一旦我們有了隨機策略中的價值函數(shù),重要的任務(wù)就是用蒙特卡羅尋找優(yōu)化策略。

用模型改進策略所需的公式如下:

該公式通過尋找可以將獎勵最大化的動作,對策略進行了優(yōu)化。但是,這里的重點是用了遷移概率,這在無模型學(xué)習(xí)中是無法獲取的。

因為我們不知道狀態(tài)遷移概率p(s’,r/s,a),我們不能提前進行搜索。于是,所有信息都是通過玩游戲或環(huán)境探索得來的。

策略的改進是根據(jù)當(dāng)前價值函數(shù)讓策略變得貪婪,在這種情況下,我們有了一個動作-價值函數(shù),所以在建立貪婪策略時不需要模型。

如果大多數(shù)動作并沒有得到具體研究,一種貪婪策略只會支持一個特定動作。解決方法有兩種:

Exploring starts

在這種算法中,所有狀態(tài)的動作對是不可能成為起始對的,這就保證了每個episode都會帶領(lǐng)智能體到新狀態(tài)中,所以智能體會對環(huán)境有更多了解和探索。

epsilon-Soft

如果環(huán)境中只有一個起始點該怎么辦(例如棋盤類游戲)?這個時候探索起始點就沒有意義了,這里就要用到?-貪婪方法。

想保證探索繼續(xù)進行,最簡單的方法就是以非零概率嘗試所有動作。?選擇的動作可以將價值函數(shù)最大化,并且隨機選擇動作。

現(xiàn)在我們理解了基礎(chǔ)的蒙特卡羅控制和預(yù)測,接下來就用Python實現(xiàn)這些算法吧。我們會導(dǎo)入OpenAI Gym中的冰凍湖環(huán)境進行演示。

用Python實現(xiàn)蒙特卡羅方法

智能體控制人物在網(wǎng)格中的移動,其中一些是可以移動的,另一些可能會讓智能體掉入水中。另外,智能體的移動方向是不確定的,如果智能體找到正確的路就能獲得獎勵。

S:起始點,安全;F:冰凍湖面,安全;H:洞,危險;G:目標(biāo)點

游戲的任務(wù)就是讓智能體從起始點到達目標(biāo)點,不要掉進洞里。這里附上OpenAI Gym的安裝細節(jié)和文件:gym.openai.com/docs/,下面就開始用Python實現(xiàn)吧!

首先,我們要定義集中函數(shù)設(shè)置蒙特卡羅算法。

創(chuàng)建環(huán)境

import gym

import numpy as np

importoperator

fromIPython.display import clear_output

from time import sleep

import random

import itertools

import tqdm

tqdm.monitor_interval = 0

隨機策略函數(shù)

def create_random_policy(env):

policy = {}

for key in range(0, env.observation_space.n):

current_end = 0

p = {}

for action in range(0, env.action_space.n):

p[action] = 1 / env.action_space.n

policy[key] = p

return policy

存儲狀態(tài)動作值的詞典

def create_state_action_dictionary(env, policy):

Q = {}

for key in policy.keys():

Q[key] = {a: 0.0for a in range(0, env.action_space.n)}

return Q

運行episode的函數(shù)

def run_game(env, policy, display=True):

env.reset()

episode = []

finished = False

whilenot finished:

s = env.env.s

if display:

clear_output(True)

env.render()

sleep(1)

timestep = []

timestep.append(s)

n = random.uniform(0, sum(policy[s].values()))

top_range = 0

for prob in policy[s].items():

top_range += prob[1]

if n < top_range:

action = prob[0]

break

state, reward, finished, info = env.step(action)

timestep.append(action)

timestep.append(reward)

episode.append(timestep)

if display:

clear_output(True)

env.render()

sleep(1)

return episode

測試策略和計算獲勝概率的函數(shù)

def test_policy(policy, env):

wins = 0

r = 100

for i in range(r):

w = run_game(env, policy, display=False)[-1][-1]

if w == 1:

wins += 1

return wins / r

首次蒙特卡羅預(yù)測和控制

def monte_carlo_e_soft(env, episodes=100, policy=None, epsilon=0.01):

ifnot policy:

policy = create_random_policy(env) # Create an empty dictionary to store state action values

Q = create_state_action_dictionary(env, policy) # Empty dictionary for storing rewards for each state-action pair

returns = {} # 3.

for _ in range(episodes): # Looping through episodes

G = 0# Store cumulative reward in G (initialized at 0)

episode = run_game(env=env, policy=policy, display=False) # Store state, action and value respectively

# for loop through reversed indices of episode array.

# The logic behind it being reversed is that the eventual reward would be at the end.

# So we have to go back from the last timestep to the first one propagating result from the future.

for i in reversed(range(0, len(episode))):

s_t, a_t, r_t = episode[i]

state_action = (s_t, a_t)

G += r_t# Increment total reward by reward on current timestep

ifnot state_action in [(x[0], x[1]) for x in episode[0:i]]: #

if returns.get(state_action):

returns[state_action].append(G)

else:

returns[state_action] = [G]

Q[s_t][a_t] = sum(returns[state_action]) / len(returns[state_action]) # Average reward across episodes

Q_list = list(map(lambda x: x[1], Q[s_t].items())) # Finding the action with maximum value

indices = [i for i, x in enumerate(Q_list) if x == max(Q_list)]

max_Q = random.choice(indices)

A_star = max_Q # 14.

for a in policy[s_t].items(): # Update action probability for s_t in policy

if a[0] == A_star:

policy[s_t][a[0]] = 1 - epsilon + (epsilon / abs(sum(policy[s_t].values())))

else:

policy[s_t][a[0]] = (epsilon / abs(sum(policy[s_t].values())))

return policy

完成后運行算法并檢查獎勵:

結(jié)語

蒙特卡羅學(xué)習(xí)到此并未結(jié)束,除此之外還有另一類稱為“離線蒙特卡羅”的方法,這種方法用另一種策略生成的返回值學(xué)習(xí)優(yōu)化策略。

本文提到的是在線方法,類似在做中學(xué),而離線方法更強調(diào)的是看別人的示范從中學(xué)習(xí)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 智能體
    +關(guān)注

    關(guān)注

    1

    文章

    230

    瀏覽量

    10899
  • 強化學(xué)習(xí)
    +關(guān)注

    關(guān)注

    4

    文章

    269

    瀏覽量

    11478

原文標(biāo)題:用OpenAI Gym工具解釋蒙特卡羅學(xué)習(xí)

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    機器學(xué)習(xí)模型類型分類

    ?機器學(xué)習(xí)按照模型類型分為監(jiān)督學(xué)習(xí)模型監(jiān)督學(xué)習(xí)模型
    的頭像 發(fā)表于 09-05 11:45 ?3351次閱讀
    機器<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>模型</b>類型分類

    機器學(xué)習(xí)模型評估指標(biāo)

    機器學(xué)習(xí)模型指標(biāo)在機器學(xué)習(xí)建模過程中,針對不同的問題,需采用不同的模型評估指標(biāo)。
    發(fā)表于 09-06 12:51 ?1401次閱讀
    機器<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>模型</b>評估指標(biāo)

    【《大語言模型應(yīng)用指南》閱讀體驗】+ 基礎(chǔ)知識學(xué)習(xí)

    收集海量的文本數(shù)據(jù)作為訓(xùn)練材料。這些數(shù)據(jù)集不僅包括語法結(jié)構(gòu)的學(xué)習(xí),還包括對語言的深層次理解,如文化背景、語境含義和情感色彩等。 自監(jiān)督學(xué)習(xí)模型采用自監(jiān)督學(xué)習(xí)策略,在大量
    發(fā)表于 08-02 11:03

    深度學(xué)習(xí)模型是如何創(chuàng)建的?

    具有深度學(xué)習(xí)模型的嵌入式系統(tǒng)應(yīng)用程序帶來了巨大的好處。深度學(xué)習(xí)嵌入式系統(tǒng)已經(jīng)改變了各個行業(yè)的企業(yè)和組織。深度學(xué)習(xí)模型可以幫助實現(xiàn)工業(yè)流程自動
    發(fā)表于 10-27 06:34

    部署基于嵌入的機器學(xué)習(xí)模型

    1、如何在生產(chǎn)中部署基于嵌入的機器學(xué)習(xí)模型  由于最近大量的研究,機器學(xué)習(xí)模型的性能在過去幾年里有了顯著的提高。雖然這些改進的模型開辟了新的
    發(fā)表于 11-02 15:09

    隨機塊模型學(xué)習(xí)算法

    由于隨機塊模型能夠有效處理不具有先驗知識的網(wǎng)絡(luò),對其研究成為了機器學(xué)習(xí)、網(wǎng)絡(luò)數(shù)據(jù)挖掘和社會網(wǎng)絡(luò)分析等領(lǐng)域的研究熱點.如何設(shè)計出具有模型選擇能力的快速隨機塊模型
    發(fā)表于 01-09 18:20 ?1次下載

    BigBiGAN問世,“GAN父”都說酷的監(jiān)督表示學(xué)習(xí)模型有多優(yōu)秀?

    BigBiGAN是一種純粹基于生成模型監(jiān)督學(xué)習(xí)方法,它在ImageNet上實現(xiàn)了圖像表示學(xué)習(xí)的最好的結(jié)果。
    的頭像 發(fā)表于 07-11 15:48 ?2995次閱讀

    太秀了!DeepMind推出最強表示學(xué)習(xí)模型BigBiGAN

    研究人員廣泛評估了BigBiGAN模型的表示學(xué)習(xí)和生成性能,證明這些基于生成的模型在ImageNet上的監(jiān)督表示學(xué)習(xí)和無條件圖像生成方面都
    的頭像 發(fā)表于 07-13 08:01 ?4256次閱讀

    機器學(xué)習(xí)中的模型強化學(xué)習(xí)算法及研究綜述

    模型化強化學(xué)習(xí)(Mode- based reinforcement Lear-ning)和模型強化學(xué)習(xí)( Model- ree reirη
    發(fā)表于 04-08 11:41 ?11次下載
    機器<b class='flag-5'>學(xué)習(xí)</b>中的<b class='flag-5'>無</b><b class='flag-5'>模型</b>強化<b class='flag-5'>學(xué)習(xí)</b>算法及研究綜述

    模型化深度強化學(xué)習(xí)應(yīng)用研究綜述

    深度強化學(xué)習(xí)(DRL)作為機器學(xué)習(xí)的重要分攴,在 Alphago擊敗人類后受到了廣泛關(guān)注。DRL以種試錯機制與環(huán)境進行交互,并通過最大化累積獎賞最終得到最優(yōu)策略。強化學(xué)習(xí)可分為
    發(fā)表于 04-12 11:01 ?9次下載
    <b class='flag-5'>模型</b>化深度強化<b class='flag-5'>學(xué)習(xí)</b>應(yīng)用研究綜述

    模型為什么是深度學(xué)習(xí)的未來?

    與傳統(tǒng)機器學(xué)習(xí)相比,深度學(xué)習(xí)是從數(shù)據(jù)中學(xué)習(xí),而大模型則是通過使用大量的模型來訓(xùn)練數(shù)據(jù)。深度學(xué)習(xí)
    的頭像 發(fā)表于 02-16 11:32 ?2278次閱讀

    如何評估機器學(xué)習(xí)模型的性能?機器學(xué)習(xí)的算法選擇

    如何評估機器學(xué)習(xí)模型的性能?典型的回答可能是:首先,將訓(xùn)練數(shù)據(jù)饋送給學(xué)習(xí)算法以學(xué)習(xí)一個模型。第二,預(yù)測測試集的標(biāo)簽。第三,計算
    發(fā)表于 04-04 14:15 ?1232次閱讀

    深度學(xué)習(xí)模型訓(xùn)練過程詳解

    深度學(xué)習(xí)模型訓(xùn)練是一個復(fù)雜且關(guān)鍵的過程,它涉及大量的數(shù)據(jù)、計算資源和精心設(shè)計的算法。訓(xùn)練一個深度學(xué)習(xí)模型,本質(zhì)上是通過優(yōu)化算法調(diào)整模型參數(shù),
    的頭像 發(fā)表于 07-01 16:13 ?2175次閱讀

    深度學(xué)習(xí)中的模型權(quán)重

    在深度學(xué)習(xí)這一充滿無限可能性的領(lǐng)域中,模型權(quán)重(Weights)作為其核心組成部分,扮演著至關(guān)重要的角色。它們不僅是模型學(xué)習(xí)的基石,更是模型
    的頭像 發(fā)表于 07-04 11:49 ?3495次閱讀

    AI大模型與深度學(xué)習(xí)的關(guān)系

    AI大模型與深度學(xué)習(xí)之間存在著密不可分的關(guān)系,它們互為促進,相輔相成。以下是對兩者關(guān)系的介紹: 一、深度學(xué)習(xí)是AI大模型的基礎(chǔ) 技術(shù)支撐 :深度學(xué)習(xí)
    的頭像 發(fā)表于 10-23 15:25 ?2449次閱讀
    主站蜘蛛池模板: 福利毛片 | 人人澡人人人人夜夜爽 | 日韩高清成人毛片不卡 | 黄色工厂在线播放 | 亚洲综合在线最大成人 | 欧美性猛交xxxx乱大交高清 | 久久青草91线频免费观看 | 亚洲成人精品在线 | 俺去啦在线视频 | 天天操天天操 | 欧美高清a| 女人张腿让男子桶免费动态图 | 精品午夜久久福利大片免费 | 美女黄色一级毛片 | 国模于子涵啪啪大胆 | 亚洲日本一区二区 | 日本日本69xxxx | 视频网站黄 | 91精品国产亚洲爽啪在线影院 | 日干夜干天天干 | a黄色网| 国产999星空传媒在线观看 | 久操成人| 四虎影院网址大全 | 九九九国产在线 | 一区二区三区在线看 | 日日摸夜夜爽 | 国产成人教育视频在线观看 | 成人三级在线播放线观看 | 色多多视频在线观看播放 | 四虎影视在线观看 | 久久久久久久国产视频 | 奇米影视亚洲四色8888 | 又粗又长又爽又长黄免费视频 | 一级毛片真人免费播放视频 | 国产成人av在线 | 夜夜精品视频一区二区 | 97影院午夜午夜伦不卡 | 男人午夜小视频 | 天天操天天干天天 | 在线精品小视频 |