1、强化学习基础总结

1、监督学习:

  • 输入数据(标准的数据)没有关联
  • 需要告诉机器学习器正确的标签是什么
    2、独立同分布
    iid(independent and identically distributed)
    假设样本空间中全体样本服从一个未知分布,我们获得的每个样本都是独立地从这个分布上采样获得的
    3、强化学习的困难
    智能体不能得到即时的反馈,然而我们希望智能体能在这个环境中学习

4、强化学习和监督学习区别

  1. 强化学习:有序数据 监督学习:独立数据
  2. 学习器:并没有告诉我们每一步正确的动作应该是什么,它需要自己去发现哪些动作可以带来最多的奖励
  3. 智能体获得能力的过程:不断试错过程(探索,利用)**(在监督学习里没有)*
  4. 强化学习:没有非常强的监督者,只有奖励信号,奖励信号是延迟的
  5. 强化学习:试错探索

5、早期强化学习:标准化学习
深度强化学习=强化学习+深度学习(deep reinforcement learning)
6、有序决策:
强化学习:

  • 智能体与环境交互问题
  • 近期奖励和远期奖励的权衡

7、状态:对世界的完整描述
观测:对状态的部分描述,可能会遗漏一些信息
8、深度强化学习:用实值得变量、矩阵,更高阶变量
9、马尔可夫决策:Markov decision process,MDP
部分可预测马尔可夫决策:(partially observable Markov decision process,POMDP)_
S,A,T,R,Ω,O,R
10、强化学习智能体:

  • 策略
  • 价值函数
  • 模型

11、策略:

随机性策略(stochastic policy):(常用)
Π函数
优点:

  • 更好探索
  • 动作多样性

确定性策略(deterministic policy):直接采取最有可能的动作
12、价值函数:
折扣因子(discount factor)
13、模型:状态转移概率 奖励函数
14、强化学习智能体类型:

  • 基于价值+基于策略=演员-评论员智能体
    基于价值:不连续,离散,Q学习,Sarsa
    基于策略:策略梯度(policy,Gradient,PG)
  • 有模型 免模型

15、单步强化学习:K-臂赌博机(K-armed bandit)(多臂赌博机)
16、Gym库:离散:gym.space.Discrete
连续:gym.space.Box

import gym  # 导入 Gym 的 Python 接口环境包
env = gym.make('CartPole-v0')  # 构建实验环境
env.reset()  # 重置一个回合
for _ in range(1000):
    env.render()  # 显示图形界面
    action = env.action_space.sample() # 从动作空间中随机选取一个动作
    env.step(action) # 用于提交动作,括号内是具体的动作
env.close() # 关闭环境
import gym  
env = gym.make('CartPole-v0')  
env.reset()  
for _ in range(1000):
    env.render()  
    action = env.action_space.sample() 
    observation, reward, done, info = env.step(action)
    print(observation)
env.close()    
from gym import envs
env_specs = envs.registry.all()
envs_ids = [env_spec.id for env_spec in env_specs]
print(envs_ids)

1、强化学习基础总结_第1张图片

import gym
env = gym.make('MountainCar-v0')
print('观测空间 = {}'.format(env.observation_space))
print('动作空间 = {}'.format(env.action_space))
print('观测范围 = {} ~ {}'.format(env.observation_space.low,
        env.observation_space.high))
print('动作数 = {}'.format(env.action_space.n))

观测空间 = Box([-1.2 -0.07], [0.6 0.07], (2,), float32)
动作空间 = Discrete(3)
观测范围 = [-1.2 -0.07] ~ [0.6 0.07]
动作数 = 3

智能体“:

class BespokeAgent:
    def __init__(self, env):
        pass
    
    def decide(self, observation): # 决策
        position, velocity = observation
        lb = min(-0.09 * (position + 0.25) ** 2 + 0.03,
                0.3 * (position + 0.9) ** 4 - 0.008)
        ub = -0.07 * (position + 0.38) ** 2 + 0.07
        if lb < velocity < ub:
            action = 2
        else:
            action = 0
        return action # 返回动作

    def learn(self, *args): # 学习
        pass
    
agent = BespokeAgent(env)

你可能感兴趣的:(人工智能,强化学习,蘑菇书)