Lesson 17 Reinforcement Learning(RL)

听课(李宏毅老师的)笔记,方便梳理框架,以作复习之用。本节课主要讲了强化学习Reinforcement Learning(RL).
在这里插入图片描述
人类不知道正确答案是什么,收集资料很困难的时候,就可以用强化学习。通过与环境的互动,来知道什么是好的什么是不好的。
在这里插入图片描述

outline
在这里插入图片描述

What is RL(Three steps in ML)

Machine Leaning≈Looking for a Function

强化学习模型中,有两个重要的部分:actor和environment。actor通过观察environment得到observation作为输入,再输出action来影响environment,environment会向actor发出reward告诉actor这个action是好的还是坏的。所以实际上actor就是一个函数。
在这里插入图片描述

Example: Playing Video Game

以一个小游戏作为例子来讲解强化学习中actor和environment的相互作用机制。
最下面那个绿色的是母舰,可以开火杀掉外星人从而得到分数,橙色的保护壳,不能摧毁,母舰可以躲在保护壳后面。左上角的数字代表杀掉外星人得到的分数。终止条件是所有外星人都被杀死,或者母舰被外星人摧毁。
在这里插入图片描述

控制手柄的玩家作为actor,主机是environment,游戏的画面是observation,玩家可以发出向右的动作,可以得到0个reward哈哈哈哈(因为只有开火杀掉外星人才会有分)。
在这里插入图片描述
再比如玩家发出开火的动作杀掉了一个外星人,这时会得到reward=5。强化学习的目标就是最大化reward.
在这里插入图片描述

Example: Learning to play Go

第二个例子就是alphaGO, 此时alphaGO是actor,人类棋手是environment,棋盘是observation, 下一步棋就是action.
在这里插入图片描述

在下棋的过程中,大多数时候,reward都是0,只有赢了,reward才是1,输了reward就是-1. 强化学习的目标是最大化reward.
在这里插入图片描述

the Framework of Reinforcement Learning

在学习强化学习的框架之前,先来复习机器学习的框架。第一步:先定义一个含有未知参数的函数;第二步:定义loss function;第三步:训练模型,使loss变小。
在这里插入图片描述

Step 1: Function with Unknown

跟机器学习类似的,第一步就是定义一个含有未知数的function。那么在强化学习中,这个function实际上就是actor。
以击落外星人游戏为例,function的输入就是游戏画面的pixels,而输出就是各类行动的分数。
在actor内部,最后一层是softmax layer,使得最后输出是各类行动的分数,在最后选择哪一个行动时,并不是直接选择分数最高的行动,而是以对应的概率选择。比如left的分数是0.7,那么将会以70%的概率向左。这样做具有一定的随机性,在一些游戏里可能会有更好的结果。
在这里插入图片描述

Step 2: Define “Loss”

通过action1,从observation1转到observation2,得到的奖励为r1;通过action2,从observation2转到observation3,得到的奖励为r2。以此类推。
在这里插入图片描述

### 无刷直流电机的强化学习控制 无刷直流电机(Brushless DC Motor, BLDC)的控制是一个复杂的动态系统问题,强化学习(Reinforcement Learning, RL)提供了一种自适应优化控制策略的方法。在 MATLAB 中,可以使用 Reinforcement Learning Toolbox 来实现 BLDC 电机的智能控制。 #### 强化学习的基本框架 强化学习的核心是智能体(Agent)通过与环境(Environment)交互来学习最优策略(Policy)。在 BLDC 控制问题中,环境通常是电机的动态模型,而智能体则负责调整控制信号(如 PWM 占空比)以实现期望的转速或转矩控制。智能体的目标是最大化累积奖励(Reward),该奖励函数通常设计为误差(如实际转速与目标转速的差值)的负函数[^1]。 #### MATLAB 中的实现步骤 1. **建立 BLDC 电机模型** 可以使用 Simulink 或 Simscape Electrical 来构建 BLDC 电机的仿真模型。Simulink 提供了丰富的电力电子和电机模块,可以方便地搭建包括逆变器、编码器、电流传感器等在内的完整系统[^1]。 2. **定义强化学习环境接口** 使用 Reinforcement Learning Toolbox 中的 `rlFunctionEnv` 或 `rlPredefinedEnv` 来定义环境接口。输入包括当前状态(如转速、电流、误差等),输出为动作(如 PWM 占空比),奖励函数通常定义为: ```matlab reward = -abs(current_speed - target_speed); ``` 3. **选择合适的强化学习算法** 对于连续控制问题,推荐使用以下算法之一: - **DDPG(Deep Deterministic Policy Gradient)**:适用于高维连续动作空间。 - **TD3(Twin Delayed DDPG)**:改进的 DDPG 算法,减少过估计问题。 - **SAC(Soft Actor-Critic)**:在探索和利用之间取得良好平衡,适用于复杂电机控制[^1]。 4. **训练智能体** 使用 `trainOpts` 设置训练选项,如最大训练步数、批量大小等,并调用 `train` 函数进行训练: ```matlab trainingOpts = rlTrainingOptions(... 'MaxEpisodes', 1000, ... 'MaxStepsPerEpisode', 500, ... 'Verbose', false, ... 'Plots', 'training-progress'); trainingStats = train(agent, env, trainingOpts); ``` 5. **部署与测试** 训练完成后,可以将学习到的策略部署到 Simulink 模型中进行测试,也可以导出为 C/C++ 代码用于嵌入式系统实现。 #### 示例:BLDC 控制的强化学习智能体 ```matlab % 定义观测和动作空间 obsInfo = rlNumericSpec([5 1]); % 5个状态变量(如转速、电流等) actInfo = rlNumericSpec([1 1], 'LowerLimit', 0, 'UpperLimit', 1); % PWM占空比范围[0,1] % 创建DDPG智能体 agent = rlDDPGAgent(obsInfo, actInfo); % 定义环境 env = rlFunctionEnv(observationFunction, actionFunction, rewardFunction); % 设置训练选项并开始训练 trainingOpts = rlTrainingOptions('MaxEpisodes', 500); trainingStats = train(agent, env, trainingOpts); ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

香菜菜菜菜子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值