强化学习部分总结 (未完)

1 什么是强化学习?

监督学习:让系统在有标签训练集上按照每个样本对应的标签推断出相应的反馈机制,进而在未知标签上能够计算一个尽可能正常的结果

无监督学习:让系统在无标签训练集上发现隐藏的结构,自动对输入资料进行分类或分群。

强化学习:是除监督学习和无监督学习的第三种机器学习范式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kb1uCm1X-1657430399913)(assets/1652361255473.png)]

强化学习(Reinforcement Learning, RL,评价学习、增强学习)是机器学习的范式和方法论之一,用于描述和解决agent与环境交互中,通过学习策略以达到最大化或实现特定目标的问题。

强化学习:

1、强化学习是机器学习的一种方法。

2、强化学习是agent与环境之间的交互。

3、强化学习的目标是追求最大回报或特定目标。

强化学习是一种学习如何从状态映射到行为获取奖励最大的学习机制,agent需要不断从环境中进行实验,通过环境给予的反馈(award)来不断优化状态-行为的对应关系。


2 强化学习的特征与特点

强化学习的两个特征:反复实验(trail and error)和延迟奖励(delay reward)。

强化学习的特点:

1、没有监督者,只有一个奖励信号。

2、延迟反馈,而不是即时反馈。

3、具有时间序列性质。

4、agent的行为影响后续数据。


3 强化学习的要素与框架

强化学习的要素:策略(policy)、奖励(award)、价值(value)、环境/模型(model)

3.1 Policy

policy定义一个从环境状态和agent状态行为映射。policy是强化学习的核心,

1、policy定义agent的行为。

2、policy是状态到行为的映射。

3、policy是具体的映射或随机分布。

3.2 Reward

Reward定义了强化学习的目标在每个时间步骤内,环境向强化学习发出的标量值为奖励,奖励能定义agent的好坏。

1、奖励是一个标量的反馈信号。

2、奖励表示在某一步骤agent的表现如何。

3、agent的任务就是一个时间段内积累的总奖励值最大。

3.3 Value

价值函数是对长期收益的衡量,其从一个长期的角度评判当前行为的收益

1、价值函数是对未来奖励的预测。

2、价值函数可以评估状态的好坏。

3、价值函数的计算需要对状态之间的转移进行分析。

3.4 model

强化学习有基于模型(model-based)和不基于模型(model-free)两种方法。model是对环境的模拟。

model-based:当给出状态和行为后,通过model就可以预测接下来的状态和对应的奖励。

model-free:通过对策略和价值函数分析进行学习。

1、模型能预测环境下一步的表现。

2、表现具体由预测的状态和奖励来反应。

3.5 Return(cumulative future reward) 回报|未来累积回报

t时刻的return叫做 U t U_t Ut

把t时刻开始未来所有的奖励都累加起来,一直加到游戏结束最后一个奖励 U t = R t + R t + 1 + R t + 2 + . . . R n U_t = R_t+R_{t+1}+R_{t+2}+...R_n Ut=Rt+Rt+1+Rt+2+...Rn

3.6 Discounted return 折扣回报

折扣率为 γ , γ ∈ ( 0 , 1 ) \gamma,\gamma ∈ (0,1) γγ(0,1),需要自定义。

现在奖励与未来奖励对比,未来奖励具有不确定性,于是将未来的奖励打一个折扣。

U t = R t + γ 1 R t + 1 + γ 2 R t + 2 + . . . γ n R n U_t = R_t+\gamma^1 R_{t+1}+\gamma^2R_{t+2}+...\gamma^nR_n Ut=Rt+γ1Rt+1+γ2Rt+2+...γnRn

4 强化学习流程

1.action
2.reward
3.obervation
agent state
model

1、首先agent根据当前状态 S t a S_t^a Sta做出一个行为 A t A_t At对model产生一个影响

2、然后model对agent反馈一个奖励信号 R t R_t Rt

3、此时agent从model中发现一些信息 O t O_t Ot

4、最后agent进入一个新状态,依次类推。


5 例子 马里奥 (一定要看)

以马里奥游戏为例子:

5.1 定义

state为环境状态,当前状态就是游戏此刻的画面。

action为向左、向右、上挑三个动作。

agent就是马里奥(在一个应用中谁做动作,谁就是agent)

model是游戏程序。

5.2 policy

policy为 π \pi π函数,其根据观测到的state进行决策,控制agent运行。 π ( a ∣ s ) = P ( A = a ∣ S = s ) \pi(a|s)=P(A=a|S=s) π(as)=P(A=aS=s),在当前状态 s s s下,做出动作 a a a的概率密度。

将当前state(画面)输入到policy函数 π \pi π中,此刻会计算出向左、向右、向上的概率,根据此概率选择一个action,或者根据一个确定的policy选择action。

例如: a = ′ l e f t ′   o r   ′ r i g h t ′   o r   ′ u p ′ a ='left' \ or\ 'right'\ or\ 'up' a=left or right or up

π ( l e f t ∣ s ) = 0.2 \pi(left|s)=0.2 π(lefts)=0.2

π ( r i g h t ∣ s ) = 0.1 \pi(right|s)=0.1 π(rights)=0.1

π ( u p ∣ s ) = 0.7 \pi(up|s)=0.7 π(ups)=0.7

5.3 reward

agent做出一个动作,游戏就会给出一个奖励(该奖励需要自定义),马里奥每吃到一个金币,奖励 R + = 1 R+=1 R+=1,强化学习的目标就是使获得的奖励总和尽量高。

5.4 状态转移 state transition

当前state下,马里奥每做一个动作,游戏就会给出一个新状态,这个过程叫状态转移,状态转移可以是固定的或随机的。

状态转移p函数: p ( s ′ ∣ s , a ) = P ( S ′ = s ∣ S = s , A = a ) p(s'|s,a)=P(S'=s|S=s,A=a) p(ss,a)=P(S=sS=s,A=a)

5.5 agent与环境交互

agent是马里奥,当前状态是 S t S_t St,动作是 a t a_t at

agent根据 S t S_t St做出一个 a t a_t at,model根据 a t a_t at会反馈奖励reward。



6 强化学习的随机性

6.1 动作随机性

policy函数 π \pi π控制agent,给定当前状态S,按照policy输出概率随机抽样,获得动作action。

State
left
π(left|s)=0.2
up
π(up|s)=0.7
right
π(right|s)=0.1

6.2 状态转移随机性

当agent做出动作后,model用状态转移函数p算出概率,然后使用随机抽样得到下一状态S‘。

State
agent
State1'
p(State1'|s,a)=0.3
State2'
p(State2'|s,a)=0.7

7 价值函数 value-function

7.1 动作价值函数 Q ( s , a ) Q(s,a) Q(s,a)

状态s执行动作a时获得总价值 Q ( s , a ) Q(s,a) Q(s,a)

7.2 状态价值函数

tate–>agent
agent–>A(“State1’
p(State1’|s,a)=0.3”)
agent–>B(“State2’
p(State2’|s,a)=0.7”)


# 7 价值函数 value-function

## 7.1 动作价值函数$Q(s,a)$

状态s执行动作a时获得总价值$Q(s,a)$,

## 7.2 状态价值函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
强化学习应用到 UNet 中需要进行以下步骤: 1. 定义状态空间和动作空间:对于 UNet,我们可以将状态空间定义为图像,动作空间定义为网络中的参数。 2. 定义奖励函数:奖励函数应该鼓励网络输出正确的分割结果。 3. 定义 Q 函数:我们可以使用 Q 函数来评估给定状态和动作组合的价值。 4. 训练强化学习模型:通过使用 Q 学习算法或其他强化学习算法,我们可以训练模型以在给定状态下选择最佳动作。 下面是一个简单的代码示例,展示了如何将强化学习应用到 UNet 中: ```python import torch import torch.nn as nn import torch.optim as optim import numpy as np # 定义 UNet 模型 class UNet(nn.Module): def __init__(self): super(UNet, self).__init__() # 待续... def forward(self, x): # 待续... # 定义强化学习模型 class QLearning: def __init__(self, state_dim, action_dim, gamma=0.99, alpha=0.1, epsilon=0.1): self.gamma = gamma self.alpha = alpha self.epsilon = epsilon self.q_table = np.zeros((state_dim, action_dim)) def choose_action(self, state): if np.random.uniform() < self.epsilon: return np.random.choice(range(self.q_table.shape[1])) else: return np.argmax(self.q_table[state, :]) def learn(self, state, action, reward, next_state): q_predict = self.q_table[state, action] q_target = reward + self.gamma * np.max(self.q_table[next_state, :]) self.q_table[state, action] += self.alpha * (q_target - q_predict) # 定义状态空间和动作空间的维度 state_dim = 100 action_dim = 10 # 初始化 UNet 模型和强化学习模型 unet_model = UNet() q_learning = QLearning(state_dim, action_dim) # 定义优化器 optimizer = optim.Adam(unet_model.parameters(), lr=0.001) # 定义损失函数 criterion = nn.CrossEntropyLoss() # 训练模型 for epoch in range(num_epochs): for i, (images, labels) in enumerate(train_loader): # 将图像和标签转换为张量 images = images.to(device) labels = labels.to(device) # 前向传播 outputs = unet_model(images) # 计算损失函数和奖励 loss = criterion(outputs, labels) reward = 1 if np.argmax(outputs) == np.argmax(labels) else 0 # 选择动作并更新 Q 表 state = images.numpy().flatten() action = q_learning.choose_action(state) next_state = unet_model.state_dict().numpy().flatten() q_learning.learn(state, action, reward, next_state) # 反向传播和优化 optimizer.zero_grad() loss.backward() optimizer.step() ``` 需要注意的是,上面的代码示例只是一个简单的示例,实际应用中需要根据具体情况进行修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

St-sun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值