强化学习笔记

这里写自定义目录标题

  • 参考资料
  • 基础知识
  • 16.3 有模型学习
    • 16.3.1 策略评估
    • 16.3.2 策略改进
    • 16.3.3 策略迭代
    • 16.3.3 值迭代
  • 16.4 免模型学习
    • 16.4.1 蒙特卡罗强化学习
    • 16.4.2 时序差分学习
      • Sarsa算法:同策略算法(on-policy):行为策略是目标策略
      • Q-learning算法:异策略算法(off-policy):行为策略不是目标策略
      • 多步时序差分:无偏且方差小
  • 16.5 值函数近似
  • 16.6 模仿学习
    • 16.6.1 直接模仿学习
    • 16.6.2 逆强化学习
  • 深度Q网络算法
    • 经验回放(experience replay)
    • 目标网络(target network)
    • deep Q network, DQN
    • Double Deep Q-Network
    • 优先级经验回放 (prioritized experience replay, PER)
    • Dueling Deep Q-Network
  • 策略梯度 Policy Gradients
    • REINFORCE:蒙特卡洛策略梯度
  • 近端策略优化(proximal policy optimization,PPO)
  • Actor-Critic
  • 信赖域策略优化 (Trust Region Policy Optimization, TRPO)
  • 深度确定性策略梯度 (Deep Deterministic Policy Gradient, DDPG)
  • Soft Actor-Critic

参考资料

《机器学习》周志华
《机器学习》(西瓜书)公式详解
南瓜书PumpkinBook

Reinforcement Learning: An Introduction
second edition
Richard S. Sutton and Andrew G. Barto
incompleteideas代码
张尚彤代码

周沫凡强化学习
周沫凡强化学习代码
周沫凡Python tutorial

张伟楠,沈键,俞勇
动手学强化学习
动手学强化学习代码

蘑菇书
王琦,杨毅远,江季,Easy RL:强化学习教程,人民邮电出版社,2022.
Easy RL:强化学习教程

面向非地面网络的智能无线资源管理机制与算法研究
[1]曹阳. 面向非地面网络的智能无线资源管理机制与算法研究[D]. 电子科技大学, 2023. DOI: 10.27005/d.cnki.gdzku.2023.000168.

波束成形论文代码

中文整理的强化学习资料

我的笔记2020年简书
我的笔记2020年CSDN

model-free

回合更新/单步更新on-policy / off-policy基于概率/基于价值策略状态动作
Monte Carlo回合更新on-policy / off-policy
Sarsa单步更新on-policy基于价值离散离散
Q learning单步更新off-policy基于价值离散离散
DQN单步更新off-policy基于价值连续离散
Policy Gradients基础版的policy gradients是回合更新。升级版的policy gradients是单步更新。on-policy基于概率随机连续
REINFORCE回合更新on-policy基于概率随机连续
Actor-Criticon-policyactor会基于概率做出动作。critic会对做出的动作给出动作的价值。
TRPOon-policy随机
PPOon-policy随机
DDPGoff-policy确定连续
Soft Actor-Critic随机

基础知识

以单智能体强化学习为例,具体的MDP数学模型M可以概括为M={S,A,R,P},其中,S,A,R和P分别表示智能体的状态集合、动作集合,奖励函数集合和状态转移概率集合。

强化学习任务对应了四元组 E= (X,A,P,R)

  1. 状态空间X
  2. 动作空间A
  3. 状态转移概率P:X×A×X→实数域
  4. 奖赏R:X×A×X→实数域

确定性策略:a=π(x),即在状态x下执行a动作;
随机性策略:P=π(x,a),即在状态x下执行a动作的概率。

强化学习在某种意义上可看作具有“延迟标记信息”的监督学习问题

K-摇臂赌博机
仅探索法:将尝试的机会平均分给每一个动作,即轮流执行,最终将每个动作的平均奖赏作为期望奖赏的近似值。
仅利用法:将尝试的机会分给当前平均奖赏值最大的动作。
欲累积奖赏最大,则必须在探索与利用之间达成较好的折中

ε-贪心法:基于一个概率来对探索和利用进行折中
以ε的概率进行探索,即以均匀概率随机选择一个动作;
以1-ε的概率进行利用,即选择当前最优的动作。

Softmax算法:基于当前每个动作的平均奖赏值来对探索和利用进行折中
τ趋于0时, Softmax 将趋于“仅利用”
τ趋于无穷大时, Softmax 将趋于“仅探索”

16.3 有模型学习

有模型学习:状态空间、动作空间、转移概率以及奖赏函数都已经给出

预测(prediction)和控制(control)是马尔可夫决策过程里面的核心问题。
预测(评估一个给定的策略)的输入是马尔可夫决策过程 <S,A,P,R,γ> 和策略π,输出是价值函数Vπ。
控制(搜索最佳策略)的输入是马尔可夫决策过程 <S,A,P,R,γ>,输出是最佳价值函数(optimal value function)V∗和最佳策略(optimal policy)π∗。

16.3.1 策略评估

状态值函数(V):Vπ(x),即从状态x出发,使用π策略所带来的累积奖赏;
状态-动作值函数(Q):Qπ(x,a),即从状态x出发,执行动作a后再使用π策略所带来的累积奖赏。
在这里插入图片描述
递归形式:Bellman 等式
递归形式

16.3.2 策略改进

最优策略:使得值函数对所有状态求和的值最大的策略
最优策略
最优值函数:最优策略对应的值函数
策略改进:策略改进

16.3.3 策略迭代

策略迭代:不断迭代进行策略评估策略改进,直到策略收敛、不再改变为止
策略迭代

16.3.3 值迭代

值迭代:不断迭代进行策略评估,直到值函数收敛、不再改变为止
值迭代

16.4 免模型学习

在原始策略上使用ε-贪心策略
贪心策略

16.4.1 蒙特卡罗强化学习

蒙特卡罗强化学习:通过采样来进行策略评估。
多次“采样”,然后求取平均累积奖赏来作为期望累积奖赏的近似
由于采样必须为有限次数,因此该方法更适合于使用 步累积奖赏的强化学习任务。
估计状态-动作值函数
同策略蒙特卡罗强化学习算法
同策略(on-policy)蒙特卡罗强化学习算法:被评估和被改进的都是同一个策略
异策略(off-policy)蒙特卡罗强化学习算法:仅在评估时使用ε-贪心策略,而在改进时使用原始策略

蒙特卡罗强化学习算法没有充分利用强化学习任务的 MDP 结构

the target policy: the policy being learned about
the behavior policy: the policy used to generate behavior
In this case we say that learning is from data “off” the target policy, and the overall process is termed off-policy learning.
目标策略:正在被学习的策略
行为策略:被用来产生行为的策略
同策略(on-policy):行为策略是目标策略
智能体直接采用正在优化的策略函数收集训练数据,即利用自身在特定时间内产生的连续决策轨迹更新当前的DNN参数。
异策略(off-policy):行为策略不是目标策略。
智能体在收集训练数据时采用与正在优化的策略函数不一致的策略。

16.4.2 时序差分学习

蒙特卡罗强化学习算法在一个完整的采样轨迹完成后再对所有的状态-动作对进行更新。
实际上这个更新过程能增量式进行。
时序差分(Temporal Difference ,简称 TD )学习则结合了动态规划与蒙特卡罗方法的思想,能做到更高效的免模型学习。

Sarsa算法:同策略算法(on-policy):行为策略是目标策略

每次更新值函数需知道前一步的状态(state)x、前一步的动作(action)a、奖赏值(reward)R、当前状态(state)x’、将要执行的动作(action)a’:
更新值函数
更新步长α越大,则越靠后的累积奖赏越重要。
策略

sarsa

Q-learning算法:异策略算法(off-policy):行为策略不是目标策略

每次更新值函数需知道前一步的状态(state)x、前一步的动作(action)a、奖赏值(reward)R、当前状态(state)x’
Q-learning
异策略算法的这个循环可以拆开成2个部分:与环境交互(执行动作,获得奖励和观察状态)和学习(用动作,奖励,状态更新Q),从而实现离线学习。

离线学习的行为策略一直没更新,训练效果应该也不好

Q-learning的目标策略不管行为策略会产生什么动作。Q-learning的目标策略默认下一个动作就是 Q 值最大的那个动作,并且默认按照最佳的策略去优化目标策略,所以它可以更大胆地去寻找最优的路径,它表现得比 Sarsa 大胆得多。

多步时序差分:无偏且方差小

蒙特卡洛方法利用当前状态之后每一步的奖励而不使用任何价值估计
时序差分算法只利用一步奖励和下一个状态的价值估计。

蒙特卡洛方法:无偏(unbiased),方差大
方差大,因为每一步的状态转移都有不确定性,而每一步状态采取的动作所得到的不一样的奖励最终都会加起来,这会极大影响最终的价值估计;

时序差分算法:有偏,方差小
方差小,因为只关注了一步状态转移,用到了一步的奖励
有偏,因为用到了下一个状态的价值估计而不是其真实的价值。

多步时序差分可以结合二者的优势

多步sarsa
Sarsa(0):Sarsa 是一种单步更新法, 在环境中每走一步, 更新一次自己的行为准则。等走完这一步以后直接更新行为准则
Sarsa(1):走完这步, 再走一步, 然后再更新
Sarsa(n):如果等待回合完毕我们一次性再更新呢, 比如这回合我们走了 n 步
Sarsa(lambda):有了一个 lambda 值来代替我们想要选择的步数
lambda 是脚步衰减值, 是一个在 0 和 1 之间的数
当 lambda 取0, 就变成了 Sarsa 的单步更新
当 lambda 取 1, 就变成了回合更新, 对所有步更新的力度都是一样
当 lambda 在 0 和 1 之间, 取值越大, 离宝藏越近的步更新力度越大

16.5 值函数近似

直接对连续状态空间的值函数进行学习
值函数能表达为状态的线性函数
线性值函数近似 Sarsa 算法
线性值函数近似 Q-learning算法

16.6 模仿学习

16.6.1 直接模仿学习

直接模仿人类专家的“状态-动作对"

16.6.2 逆强化学习

逆强化学习:从人类专家提供的范例数据中反推出奖赏函数

深度Q网络算法

Q-learning 算法:状态和动作都是离散的,并且空间都比较小的情况下适用
Q函数
若动作是连续(无限)的,神经网络的输入:状态s和动作a。输出:在状态s下采取动作a能获得的价值。
若动作是离散(有限)的,除了可以采取动作连续情况下的做法,我们还可以:神经网络的输入:状态s。输出:每一个动作的Q值。
通常 DQN(以及 Q-learning)只能处理动作离散的情况,因为在Q函数的更新过程中有max_a这一操作。
Q网络:用于拟合Q函数的神经网络

DQN 算法最终更新的目标:最小化损失函数
Q 网络的损失函数构造为均方误差的形式:
损失函数

经验回放(experience replay)

如果某个算法使用了经验回放,该算法就是异策略算法。
维护一个回放缓冲区,将每次从环境中采样得到的四元组数据(状态、动作、奖励、下一状态)存储到回放缓冲区中,训练 Q 网络的时候再从回放缓冲区中随机采样若干数据来进行训练。
好处:

  1. 打破样本之间的相关性,让其满足独立假设。
    在 MDP 中交互采样得到的数据本身不满足独立假设,因为这一时刻的状态和上一时刻的状态有关。
    非独立同分布的数据对训练神经网络有很大的影响,会使神经网络拟合到最近训练的数据上。
    回放缓冲区里面的经验来自于不同的策略,我们采样到的一个批量里面的数据会是比较多样的。
  2. 提高样本效率。
    每一个样本可以被使用多次,十分适合深度神经网络的梯度学习。
    与环境交互比较慢,训练网络比较快。

目标网络(target network)

损失函数包含神经网络的输出,因此在更新网络参数的同时目标也在不断地改变,这非常容易造成神经网络训练的不稳定性。
在这里插入图片描述
训练网络:用于计算损失函数的前一项,并且使用正常梯度下降方法来进行更新。
目标网络:用于计算损失函数的后一项
训练网络在训练中的每一步都会更新。
目标网络的参数每隔几步才会与训练网络同步一次。
这样做使得目标网络相对于训练网络更加稳定。
目标网络

deep Q network, DQN

DQN算法 NIPS 2013

Double Deep Q-Network

[1509.06461] Deep Reinforcement Learning with Double Q-learning
DQN的问题:DQN算法通常会导致对Q值的过高估计

DQN:Q_next = max(Q_next(s’, a_all))
Y t D Q N ≡ R t + 1 + γ max ⁡ a Q ( S t + 1 , a ; θ t − ) Y_{t}^{\mathrm{DQN}} \equiv R_{t+1}+\gamma \max _{a} Q\left(S_{t+1}, a ; \boldsymbol{\theta}_{t}^{-}\right) YtDQNRt+1+γmaxaQ(St+1,a;θt)
Double DQN:Q_next = Q_next(s’, argmax(Q_eval(s’, a_all)))
Y t DoubleDQN  ≡ R t + 1 + γ Q ( S t + 1 , argmax ⁡ a Q ( S t + 1 , a ; θ t ) ; θ t − ) Y_{t}^{\text {DoubleDQN }} \equiv R_{t+1}+\gamma Q\left(S_{t+1}, \underset{a}{\operatorname{argmax}} Q\left(S_{t+1}, a ; \boldsymbol{\theta}_{t}\right); \boldsymbol{\theta}_{t}^{-}\right) YtDoubleDQN Rt+1+γQ(St+1,aargmaxQ(St+1,a;θt);θt)
DQN
DQN的优化目标为DQN,动作的选取依靠目标网络
Double DQN 的优化目标为DDQN,动作的选取依靠训练网络

用训练网络计算使Q值最大的动作
用目标网络计算Q值
当前的Q网络w用于选择动作
旧的Q网络w−用于评估动作

Double DQN 的代码实现可以直接在 DQN 的基础上进行,无须做过多修改。

优先级经验回放 (prioritized experience replay, PER)

[1511.05952] Prioritized Experience Replay
Double Learning and Prioritized Experience Replay
重视值得学习的样本
时序差分误差 = 网络的输出与目标之间的差距
如果采样过的数据的时序差分误差特别大,那么应该让它们以比较大的概率被采样到。
时序差分误差

优先级经验回放
batch 抽样的时候并不是随机抽样, 而是按照 Memory 中的样本优先级来抽
用到 TD-error, 也就是 Q现实 - Q估计 来规定优先学习的程度
如果 TD-error 越大, 就代表我们的预测精度还有很多上升空间, 那么这个样本就越需要被学习, 也就是优先级 p 越高

Dueling Deep Q-Network

[1511.06581] Dueling Network Architectures for Deep Reinforcement Learning
Dueling DQN 能够很好地学习到不同动作的差异性,在动作空间较大的环境下非常有效。

将Q网络分成两个通道
Q η , α , β ( s , a ) = V η , α ( s ) + A η , β ( s , a ) Q_{\eta, \alpha, \beta}(s,a) = V_{\eta, \alpha}(s) + A_{\eta, \beta}(s,a) Qη,α,β(s,a)=Vη,α(s)+Aη,β(s,a)
V η , α ( s ) V_{\eta, \alpha}(s) Vη,α(s):状态价值函数,与action无关
A η , β ( s , a ) A_{\eta, \beta}(s,a) Aη,β(s,a):该状态下采取不同动作的优势函数,与action有关
η \eta η是状态价值函数和优势函数共享的网络参数,一般用在神经网络中,用来提取特征的前几层
α \alpha α β \beta β分别为状态价值函数和优势函数的参数。

竞争深度Q网络的问题:最后学习的结果可能是这样的:
智能体就学到 V(s) 等于 0,A(s,a) 等于 Q,就和原来的深度Q网络一样。

解决方案:在把 A(s,a)与 V(s) 加起来之前,先处理A(s,a),比如减去均值
减去优势函数的均值
虽然它不再满足贝尔曼最优方程,但实际应用时更加稳定。
减去优势函数的均值4

策略梯度 Policy Gradients

基于值函数的方法:学习值函数,然后根据值函数导出一个策略。学习过程中并不存在一个显式的策略
基于策略的方法:直接显式地学习一个目标策略。

REINFORCE:蒙特卡洛策略梯度

蒙特卡洛方法与时序差分方法
Gt:从第t步开始,往后能够获得的总奖励
REINFORCE
因为使用了蒙特卡洛方法,REINFORCE 算法的梯度估计的方差很大

近端策略优化(proximal policy optimization,PPO)

Actor-Critic

信赖域策略优化 (Trust Region Policy Optimization, TRPO)

深度确定性策略梯度 (Deep Deterministic Policy Gradient, DDPG)

DDPG算法则采用行动者-批评家(actor-critic)模型,即采用两类分别称为行动者网络与批评家网络的不同DNN。
批评家网络即为传统的值函数,来评估不同状态下的收益;
行动者网络则指策略函数,描述状态和离散动作或连续动作分布的映射关系。

Soft Actor-Critic

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/155483.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Studio 安装及使用

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

电脑游戏录屏软件,记录游戏高光时刻

电脑游戏录制是游戏爱好者分享游戏乐趣、技巧和成就的绝佳方式&#xff0c;此时&#xff0c;一款好用的录屏软件就显得尤为重要。本文将为大家介绍三款电脑游戏录屏软件&#xff0c;通过对这三款软件的分步骤详细介绍&#xff0c;让大家更加了解它们的特点及使用方法。 电脑游戏…

视频剪辑技巧:如何高效地将多个视频合并成一个新视频

在视频制作过程中&#xff0c;将多个视频合并成一个新视频是一个常见的操作。这涉及到将多个片段组合在一起&#xff0c;或者将不同的视频素材进行混剪。无论是制作一部完整的影片&#xff0c;还是为社交媒体提供短视频&#xff0c;都要掌握如何高效地将多个视频合并。现在一起…

ky10 server arm 在线编译安装openssl3.1.4

在线编译脚本 #!/bin/shOPENSSLVER3.1.4OPENSSL_Vopenssl versionecho "当前OpenSSL 版本 ${OPENSSL_V}" #------------------------------------------------ #wget https://www.openssl.org/source/openssl-3.1.4.tar.gzecho "安装OpenSSL${OPENSSLVER}...&q…

Joern安装与使用

环境准备 Joern需要在Linux环境中运行&#xff0c;所以在Windows系统中需要借助WSL或虚拟机安装。 JDK安装 Joern的运行需要JAVA环境的支持&#xff0c;本次采用的是JDK17&#xff0c;其他版本建议看一下Joern官方文档。 apt install openjdk-17-jre-headless 配置JAVA环境变…

Win11+Modelsim SE-64 10.6d搭建UVM环境

1、添加源文件及tb文件 在目录下建立文件夹&#xff0c;将DUT和Testbench添加进去&#xff0c;文件夹内容如下所示&#xff1a; 2、以《UVM实战》中的例子做简单的示例&#xff1a; 2.1 设计文件 &#xff1a;dut.sv 功能很简单&#xff0c;即将接受到的数据原封不动发送出去…

UE4基础篇十六:自定义 EQS 生成器

UE4 中的 EQS 带有一组很好的查询项生成器,但在某些情况下,您可能更喜欢根据需要创建生成器。我决定编写自己的生成器,因为我必须编写一个查询来找到查询器周围的最佳位置,但又不能太靠近它。我知道我可以添加一个距离测试来随着距离增加分数,但我什至不想考虑距查询器一定…

vulnhub5

靶机下载地址&#xff1a; https://download.vulnhub.com/boredhackerblog/hard_socnet2.ova 信息收集 第一步信息收集&#xff0c;还是老方法我习惯 fscan 和 nmap 一起用 Fscan 简单探测全局信息 ┌──(kali㉿kali)-[~/Desktop/Tools/fscan] └─$ ./fscan_amd64 -h 19…

5.4 Windows驱动开发:内核通过PEB取进程参数

PEB结构(Process Envirorment Block Structure)其中文名是进程环境块信息&#xff0c;进程环境块内部包含了进程运行的详细参数信息&#xff0c;每一个进程在运行后都会存在一个特有的PEB结构&#xff0c;通过附加进程并遍历这段结构即可得到非常多的有用信息。 在应用层下&am…

轿车5+1汽车变速器变速箱同步器操纵机构机械结构设计CAD汽车工程

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;汽车变速器 获取完整论文报告说明书工程源文件 变速器工程图 操纵机构3D图 一、机械式变速器的概述及其方案的确定 1.1 变速器的功用和要求 变速器的功用是根据汽车在不同的行驶条件下提出的要求&#xff0c;改变发动机…

仪表盘:pyecharts绘制

一、仪表盘 在数据分析中&#xff0c;仪表盘图&#xff08;dashboard&#xff09;的作用是以一种简洁、图表化的方式呈现数据的关键指标和核心信息&#xff0c;以帮助用户快速理解数据的情况&#xff0c;并从中提取关键见解。 仪表盘图通常由多个图表、指标和指示器组成&…

[羊城杯2020]easyphp .htaccess的利用

[CTF].htaccess的使用技巧总结 例题讲解 掌握知识&#xff1a; 测试发现是阿帕奇服务器&#xff0c;就想到上传文件利用.htaccess配置文件执行jpg文件中的php代码&#xff0c;但是再进行第二次文件写入时会把之前的文件删除掉&#xff0c;所以不能上传两次来利用&#xff0c…

Altium Designer学习笔记6

原理图库的制作&#xff0c;SMA元件的制作&#xff1a; 图形不是很重要&#xff0c;重要的是管脚的功能。 Design Item ID和Designator两个值是要注意的。 进行Place放置&#xff0c;切换到原理图工作区&#xff0c;测试下功能。 AD9851元件库制作&#xff1a; 不需要再新建原…

【Ubuntu】Ubuntu arm64 部署 Blazor Server 应用

部署步骤 发布安装运行环境&#xff1a;dotnet-sdk&#xff08;必装&#xff09;、aspnetcore-runtime、dotnet-runtime安装证书设置环境变量&#xff1a;临时变量、当前用户永久变量、所有用户的永久变量运行&#xff1a;终端运行、后台运行 基本情况 开发系统环境 系统&am…

使用sonar对webgoat进行静态扫描

安装sonar并配置 docker安装sonarqube&#xff0c;sonarQube静态代码扫描 - Joson6350 - 博客园 (cnblogs.com) 对webgoat进行sonar扫描 扫描结果 bugs Change this condition so that it does not always evaluate to "false" 意思是这里的else if语句不会执行…

OpenShift 4 - 部署 RHODS 环境,运行 AI/ML 应用(视频)

《OpenShift / RHEL / DevSecOps 汇总目录》 说明&#xff1a;本文已经在 OpenShift 4.14 RHODS 1.33 的环境中验证 文章目录 RHODS 简介安装 RHODS 环境运行环境说明用 RHODS Operator 安装环境创建 Jupyter Notebook 运行环境 开发调式 AI/ML 应用部署运行 AI/ML 应用视频参…

2024湖南师范大学计算机考研分析

24计算机考研|上岸指南 湖南师范大学 湖南师范大学创建于1938年&#xff0c;位于历史文化名城长沙&#xff0c;是国家“211工程”重点建设大学、国家“双一流”建设高校、教育部普通高等学校本科教学工作水平评估优秀高校。学校拥有6个“十二五”国家重点学科、21个博士学位授…

MySQL 的执行原理(五)

5.6 再深入查询优化 5.6.1. 全局考虑性能优化 5.6.3.1. 为什么查询速度会慢 在尝试编写快速的查询之前&#xff0c;需要清楚一点&#xff0c;真正重要是响应时间。如果把查询看作是一个任务&#xff0c;那么它由一系列子任务组成&#xff0c;每个子任务都会消耗一定的时间。…

深度学习入门:自建数据集完成花鸟二分类任务

自建数据集完成二分类任务&#xff08;参考文章&#xff09; 1 图片预处理 1 .1 统一图片格式 找到的图片需要首先做相同尺寸的裁剪&#xff0c;归一化&#xff0c;否则会因为图片大小不同报错 RuntimeError: stack expects each tensor to be equal size, but got [3, 667…

【OpenCV实现图像:在Python中使用OpenCV进行直线检测】

文章目录 概要霍夫变换举个栗子执行边缘检测进行霍夫变换小结 概要 图像处理作为计算机视觉领域的重要分支&#xff0c;广泛应用于图像识别、模式识别以及计算机视觉任务中。在图像处理的众多算法中&#xff0c;直线检测是一项关键而常见的任务。该任务的核心目标是从图像中提…