AI学习笔记之——强化学习(Reinforcement Learning, RL)

简介: 诚如在之前文章提到的,机器学习按照从那里学的角度可以分为:监督学习,无监督学习和强化学习三大类。之前的文章大多数都是介绍的前两类,而第三类强化学习(RL)确是最接近我们所想象的人工智能。

诚如在之前文章提到的,机器学习按照从那里学的角度可以分为:监督学习,无监督学习和强化学习三大类。之前的文章大多数都是介绍的前两类,而第三类强化学习(RL)确是最接近我们所想象的人工智能。

强化学习简介

强化学习(RL)就是在环境中与环境的互动不停地学习的,非常像人类学习走路,学习骑车,学习游泳等等。

想象一下自己刚刚开始学习骑自行车的样子,东扭西歪的,还摔过不少跤,最后才逐渐熟练掌握的。这种东扭西歪的动作恰恰就是对周围环境的不停反馈,如果动作不当摔倒了,就是个负反馈,下次再做这个动作就要小心了。用力蹬踏板的时候车子就向前走,这就是个正反馈,要继续保持这个动作前进。

与学习监督学习和非监督学习不一样,强化学习涉及到环境(Environment),反馈(Reward),智能体(Agent),Action(行动)并不是写几段Python代码,找个数据库就能开始学习的。还好,现在有有如OpenAI这样的开源平台,让初学者能够很快通过游戏的形式上手强化学习的项目。

在这里我简单介绍一个OpenAI 里面的小游戏,抛砖引玉让大家理解一下什么是强化学习。

OpenAI

OpenAI 的gym里面有一个叫(cart_pos的小游戏)[gym.openai.com],就是水平方向上有一个可以左右移动的平台,平台上有一个木棍,在重力的作用下会左右摇摆,你要做的事情就是左右移动平台使其保持平衡不要掉下来。

img_24ec46a849a1bda6d434fe6f8f3f47e5.gif

游戏的环境参数实际上就是如下图的四个变量:
[Horizontal Position,Horizontal Velocity, Angle of Pole, Angular Velocity]

img_b317ef5fa782bfba7827cf10c8cf5334.png

首先以最简单的方式造一个机器人。

# Gotta import gym!
import gym

# Make the environment, replace this string with any
# from the docs. (Some environments have dependencies)
env = gym.make('CartPole-v0')

# Reset the environment to default beginning
env.reset()

# Using _ as temp placeholder variable
for _ in range(1000):
    # Render the env
    env.render()

    # 这里是关键
    env.step(env.action_space.sample()) # take a random action

这段代码不多解释,可以参考官方网文档, 其中最关键的是这一句

    env.step(env.action_space.sample())

我们实际上是让平台随机移动,可以想象结果是这样的。


img_23eb9a0529e2ddd4618be0a45ae66b8b.gif

代码控制Agent

一般学习的对象我们叫做机器人或者Agent, 我们怎么简单地让这个Agent 智能一下呢?

最简单的方法就是当棍子向左偏的时候(Angle >0)就向右移动(Action = 1),向右偏(Angle<=0)就向左移动(Action = 0)。代码实现如下:

注意,四个环境变量是需要在obseervation中提取出来的,角度参数就是pole_ang

import gym
env = gym.make('CartPole-v0')
# print(env.action_space.)
# #> Discrete(2)
# print(env.observation_space)
# #> Box(4,)
observation = env.reset()

for t in range(1000):

    env.render()

    cart_pos , cart_vel , pole_ang , ang_vel = observation

    # Move Cart Right if Pole is Falling to the Right

    # Angle is measured off straight vertical line
    if pole_ang > 0:
        # Move Right
        action = 1
    else:
        # Move Left
        action = 0

    # Perform Action
    observation , reward, done, info = env.step(action)
    print(observation)

效果如下,虽然还是不稳定,但是比让平台随机移动还是有了点效果。


img_b7ab25c38cf6c076fc61a58f721774a5.gif

总结

注意上面通过if语句实现对Agent的控制,是完全没有用到机器学习的,因为逻辑是写死的,机器根本就没有“学习”的过程。

这里用这个例子只是简单让读者理解强化学习是什么,就是向人一样,通过行动和环境的反馈不停地修正进行学习的。后续的文章会引入神经网路,让机器学起来。


相关文章
AI学习笔记之——如何理解机器学习(Machine Learning)
人工智能学习笔记之——人工智能基本概念和词汇
人工智能学习笔记二 —— 定义问题

文章首发steemit.com 为了方便墙内阅读,搬运至此,欢迎留言或者访问我的Steemit主页

目录
相关文章
|
3天前
|
人工智能 测试技术 API
AI计算机视觉笔记二十 九:yolov10竹签模型,自动数竹签
本文介绍了如何在AutoDL平台上搭建YOLOv10环境并进行竹签检测与计数。首先从官网下载YOLOv10源码并创建虚拟环境,安装依赖库。接着通过官方模型测试环境是否正常工作。然后下载自定义数据集并配置`mycoco128.yaml`文件,使用`yolo detect train`命令或Python代码进行训练。最后,通过命令行或API调用测试训练结果,并展示竹签计数功能。如需转载,请注明原文出处。
|
3天前
|
JSON 人工智能 数据格式
AI计算机视觉笔记二十六:YOLOV8自训练关键点检测
本文档详细记录了使用YOLOv8训练关键点检测模型的过程。首先通过清华源安装YOLOv8,并验证安装。接着通过示例权重文件与测试图片`bus.jpg`演示预测流程。为准备训练数据,文档介绍了如何使用`labelme`标注工具进行关键点标注,并提供了一个Python脚本`labelme2yolo.py`将标注结果从JSON格式转换为YOLO所需的TXT格式。随后,通过Jupyter Notebook可视化标注结果确保准确性。最后,文档展示了如何组织数据集目录结构,并提供了训练与测试代码示例,包括配置文件`smoke.yaml`及训练脚本`train.py`,帮助读者完成自定义模型的训练与评估。
|
3天前
|
人工智能 并行计算 PyTorch
AI计算机视觉笔记十八:Swin Transformer目标检测环境搭建
本文详细记录了Swin Transformer在AutoDL平台上的环境搭建与训练过程。作者从租用GPU实例开始,逐步介绍了虚拟环境的创建、PyTorch安装、mmcv及mmdetection的配置,并解决了安装过程中遇到的各种问题,如cython版本冲突等。最后,通过修改代码实现目标检测结果的保存。如需了解更多细节或获取完整代码,请联系作者。原文链接:[原文链接](请在此处插入原文链接)。
|
4天前
|
机器学习/深度学习 人工智能 PyTorch
AI计算机视觉笔记三十二:LPRNet车牌识别
LPRNet是一种基于Pytorch的高性能、轻量级车牌识别框架,适用于中国及其他国家的车牌识别。该网络无需对字符进行预分割,采用端到端的轻量化设计,结合了squeezenet和inception的思想。其创新点在于去除了RNN,仅使用CNN与CTC Loss,并通过特定的卷积模块提取上下文信息。环境配置包括使用CPU开发板和Autodl训练环境。训练和测试过程需搭建虚拟环境并安装相关依赖,执行训练和测试脚本时可能遇到若干错误,需相应调整代码以确保正确运行。使用官方模型可获得较高的识别准确率,自行训练时建议增加训练轮数以提升效果。
|
4天前
|
人工智能 开发工具 计算机视觉
AI计算机视觉笔记三十:yolov8_obb旋转框训练
本文介绍了如何使用AUTODL环境搭建YOLOv8-obb的训练流程。首先创建虚拟环境并激活,然后通过指定清华源安装ultralytics库。接着下载YOLOv8源码,并使用指定命令开始训练,过程中可能会下载yolov8n.pt文件。训练完成后,可使用相应命令进行预测测试。
|
3天前
|
人工智能 PyTorch 算法框架/工具
AI计算机视觉笔记二十二:基于 LeNet5 的手写数字识别及训练
本文介绍了使用PyTorch复现LeNet5模型并检测手写数字的过程。通过搭建PyTorch环境、安装相关库和下载MNIST数据集,实现了模型训练与测试。训练过程涉及创建虚拟环境、安装PyTorch及依赖库、准备数据集,并编写训练代码。最终模型在测试集上的准确率达到0.986,满足预期要求。此项目为后续在RK3568平台上部署模型奠定了基础。
|
3天前
|
人工智能 TensorFlow 算法框架/工具
AI计算机视觉笔记十七:实例分割
本文介绍了计算机视觉中的实例分割技术,通过结合目标检测和语义分割的方法,实现对图像中不同实例的精确区分与标记。以识别多只猫为例,详细描述了使用Mask R-CNN模型进行实例分割的过程,并提供了相关代码及环境搭建指南。通过实例演示,展示了如何利用该技术成功识别并分割出图像中的各个对象。
|
3天前
|
人工智能 并行计算 测试技术
AI计算机视觉笔记三十一:基于UNetMultiLane的多车道线等识别
该项目基于开源数据集 VIL100 实现了 UNetMultiLane,用于多车道线及车道线类型的识别。数据集中标注了六个车道的车道线及其类型。项目详细记录了从环境搭建到模型训练与测试的全过程,并提供了在 CPU 上进行训练和 ONNX 转换的代码示例。训练过程约需 4 小时完成 50 个 epoch。此外,还实现了视频检测功能,可在视频中实时识别车道线及其类型。
|
4天前
|
传感器 人工智能 算法
AI计算机视觉笔记二十七:YOLOV8实现目标追踪
本文介绍了使用YOLOv8实现人员检测与追踪的方法。通过为每个人员分配唯一ID,实现持续追踪,并可统计人数,适用于小区或办公楼出入管理。首先解释了目标检测与追踪的区别,接着详细描述了使用匈牙利算法和卡尔曼滤波实现目标关联的过程。文章提供了基于IOU实现追踪的具体步骤,包括环境搭建、模型加载及追踪逻辑实现。通过示例代码展示了如何使用YOLOv8进行实时视频处理,并实现人员追踪功能。测试结果显示,该方法在实际场景中具有较好的应用潜力。
|
3天前
|
人工智能 测试技术 PyTorch
AI计算机视觉笔记二十四:YOLOP 训练+测试+模型评估
本文介绍了通过正点原子的ATK-3568了解并实现YOLOP(You Only Look Once for Panoptic Driving Perception)的过程,包括训练、测试、转换为ONNX格式及在ONNX Runtime上的部署。YOLOP由华中科技大学团队于2021年发布,可在Jetson TX2上达到23FPS,实现了目标检测、可行驶区域分割和车道线检测的多任务学习。文章详细记录了环境搭建、训练数据准备、模型转换和测试等步骤,并解决了ONNX转换过程中的问题。