![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
强化学习
文章平均质量分 53
星之所望
兴趣使然的AI工程师
展开
-
《强化学习的数学原理》思维导图,供初学者参考
【强化学习的数学原理】课程的思维导图原创 2023-07-01 10:00:46 · 298 阅读 · 0 评论 -
linux,anaconda,SSLError错误解决方法
在anaconda命令行中,执行命令报SSLError报错信息如下:Fetching package metadata ...CondaHTTPError: HTTP None None for url <https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/linux-64/repodata.json>Elapsed: NoneAn HTTP error occurred when trying to retrieve t原创 2022-04-15 19:22:53 · 2813 阅读 · 0 评论 -
pytorch ray 出现 Windows fatal exception: access violation错误的解决方案(远程主机强迫关闭了一个现有的连接)
训练PPO算法,出现Windows fatal exception: access violation问题。PPO算法是一个多线程算法,为了加速训练,使用GPU和显存加速计算。该问题不能稳定复现。为了节约现存,PPO的公共参数储存在内存中,worker数据存储在显存中,然后可能数据交换有问题,会出现多线程错误,将公共参数同样存放在显存中,问题消失了。原:@ray.remoteclass ParameterServer: def __init__(self): se原创 2021-12-09 12:24:19 · 2670 阅读 · 0 评论 -
ray安装踩坑记录
当前ray的最新版本为1.8.0,对应的cloudpickle为2.0.0,无法执行ray.init()报错为typeerror:can't pickle function objects,通过错误信息和单步调试发现,ray.cloudpickle在当前虚拟环境不能正常运行,具体为无法dumps(),很奇怪,release不应该有这种问题,观察conda list发现系统已经安装了cloudpickle1.2.2,测试发现该版本能够正常dumps,判断为版本问题,可能当前虚拟环境cloudpick原创 2021-11-24 22:05:55 · 6082 阅读 · 2 评论 -
强化学习调参实践
1、如果出现神经网络输出数值很大,而且过快收敛问题,如下那么有可能是state没有除255。重新试试原创 2021-11-14 23:24:43 · 1080 阅读 · 0 评论 -
【星际争霸2中的强化学习-1】使用 PySC2 构建虫族机器人
中文网站上关于星际争霸2中AI模型的训练资料非常少,这里找到一篇比较好的pysc2使用的文章,翻译一下,方便阅读。代码:GitHub - skjb/pysc2-tutorial: Tutorials for building a PySC2 botTutorials for building a PySC2 bot. Contribute to skjb/pysc2-tutorial development by creating an account on GitHub.https://hub.fas翻译 2021-09-22 21:00:45 · 1469 阅读 · 1 评论 -
算法学习(二十一)——DDPG
DDPG全称deep deterministic policy gradient,虽然名字里有policy gradient,但是实际上和DQN比较相似。他采用AC框架,算法中同样存在actor和critic,但是和AC中不用,actor输出的不是策略(实际上就是一个概率分布),而是一个确定的动作,critic输出的不是V而是Q,actor的loss是梯度上升,而不是带权值的梯度更新。其他和AC很像,critic同样使用td-error进行更新。和DQN一样,DDPG也包括targer网络和更新用网络,所以原创 2021-09-17 22:02:10 · 1701 阅读 · 0 评论 -
windows下安装baselines
baselines安装的难点在于mujoco,新版的mujoco无法在win下安装,所以只能安装1.5一下版本。首先按照这个安装Win10+python3+gym+baselines的完整安装_南瓜南瓜我是香橙啊的博客-CSDN博客_baselines安装Windows10+python3.6下的gym完整安装呕心沥血……对Windows系统也太不友好了,记录一下安装gym库的坑坑洼洼。一、安装Atari1、解压swig,将解压路径配置到环境变量Path2、conda install ffmpeg3原创 2021-09-14 20:04:33 · 1452 阅读 · 0 评论 -
算法学习(二十)——GAE
全称是generalized advantage estimator,几乎所有最先进的policy gradient算法实现里面都使用了该技术,适合高维状态,一般都是PPO+GAE。该算法主要改进在于对A的估计。优势函数可以写成如下:一步的优势函数进一步展开为:其中V 的值都是估计的,因此A的估计存在偏差。优势函数的2步估计及无穷步估计分别为:可以看到,随着步数的增加,V的比重逐渐减少,所以不准确的影响也在逐渐减少。GAE的方法是改进对优势函数的估计,将偏差控制...原创 2021-09-13 21:40:00 · 4819 阅读 · 0 评论 -
算法学习(十九)——A3C
C51属于值分布强化学习算法,传统强化学习算法中的Q为数值,而累积回报应该是一个随机变量Z,分布强化学习算法就是对累积回报随机变量的整个分布 Z(s,a) 进行建模,C51是一种具体实现方法。...原创 2021-09-12 23:00:14 · 1919 阅读 · 1 评论 -
算法学习(十八)——Actor Critic
理论上的解释:强化学习(Reinforcement learning)中Actor-Critic算法该如何深入理解? - 白辰甲的回答 - 知乎 https://www.zhihu.com/question/56692640/answer/289913574简单解释一下就是:以Policy Gradient算法族中的REINFORCE为基础,通过用TD代替MC 的方式减少方差,同时引入Critic机制,从而让训练速度更快,更容易和更准的逼近环境。Actor 逼近Critic,Critic逼近环境原创 2021-09-05 20:30:56 · 193 阅读 · 0 评论 -
算法学习(十七)——A2C和PPO
PPO算法有三个重点:1.可以输出连续的控制信号,比如输出正太分布的均值和方差作为一个连续动作的动作概率2.将PG的在线学习,改成离线学习,提高数据的利用率。具体方法是使用重要性采样,将不同动作的TD-Error加上一个动作的概率,从而可以在用不同阶段策略的数据更新本阶段的模型。3.N-step参数更新方式。原本的AC模型中,使用0阶的TD-Error更新模型,前向探索能力不足,使用N步之后的TD-Error可以更有效的获取动作的好坏。调参技巧:PPO算法玩Atari游戏的时候,原创 2021-04-01 16:51:34 · 4785 阅读 · 0 评论 -
Gym Atari环境预处理Wrapper解读
前言在深度强化学习的实验中,Atari游戏占了很大的地位。现在我们一般使用OpenAI开发的Gym包来进行与环境的交互。本文介绍在Atari游戏的一些常见预处理过程。该文所涉及到的wrapper均来自OpenAI baselineshttps://github.com/openai/gym...一些常见Wrapper解读Noop Resetclass NoopResetEnv(gym.Wrapper): def __init__(self, env, noop_max=30):转载 2021-03-15 13:26:33 · 2825 阅读 · 1 评论 -
算法学习(十六)——D3QN
D3QN以DQN为基础,加入double和dueling两种改进。收敛速度更快,收敛更加稳定。demo:import torchimport torch.nn as nnimport torch.nn.functional as Fimport numpy as npimport gymimport matplotlib.pyplot as pltimport copyimport osimport randomos.environ["KMP_DUPLICATE_LIB_OK原创 2021-03-07 23:19:05 · 4270 阅读 · 2 评论 -
算法学习(十四)——word2vec
个人理解:就是获取一个没有偏置和激活函数的全连接隐层,将高维的one-hot数据转变为稠密、低维、有相似性的关系的矩阵,分为CBOW, skip-gram两种方法。参考:https://www.zhihu.com/question/45027109https://www.jianshu.com/p/9eab3894ae8ahttps://www.bilibili.com/video/BV1Lb411p7FD代码:from gensim.models import word2vec原创 2021-03-06 21:08:34 · 138 阅读 · 0 评论 -
算法学习(十三)——Policy Gradient
感性的认识:如果说DQN是一个TD+神经网络的算法,那么PG是一个蒙特卡洛+神经网络的算法。pg直接输出每个动作在当前场景的概率,而后根据概率选择动作,相当于对当前场景的一个分类。每个episode更新一次,对当前的(s,a)赋予相同的r的更新,r为最终的奖励,虽然有些动作不好给了高的奖励,但是随着游戏次数的增多,好的动作会逐渐筛选出来。为了避免每次的奖励都是正的,使用baseline对最终的奖励进行修正。核心公式:其中R为一个episode的奖励,b为奖励的baselin.原创 2021-03-06 08:40:35 · 325 阅读 · 4 评论 -
算法学习(十二)——dueling DQN
相比于原版的DQN,改进在于输出。原本的DQN只在输出的时候按照动作数量,进行输出。dueling DQN从常识出发,将输出分为价值函数和动作函数,价值函数输出一个实数,表示对当前局势的价值量,动作函数输出每个动作的价值。这个改进并没有理论上的解释,就是单纯凑出来好用。原版DQN网络的输出: def forward(self, x): x = self.conv1(x) x = self.conv2(x) x = self.co原创 2021-03-02 20:26:45 · 1892 阅读 · 0 评论 -
算法学习(十一)—— Prioritized Experience Replay
基本思想:使用包含更多信息的样本训练网络,如何快速的选出这些样本以及如何消除样本选择不均匀导致的参数更新错误是重点。使用条件:奖励密度不够高、关键点:TD-error、sumtree和isweightsTD-error:其目的在于不用样本赋予的权重,sumtree:用于对不同TD-error的数据提供一个选择上的优先级。抽样时, 我们会将 p 的总和除以 batch size, 分成 batch size 那么多区间, (n=sum(p)/batch_s.原创 2021-03-02 12:51:08 · 771 阅读 · 0 评论 -
算法学习(五)——alphago Zero模型
论文原文:https://xueshu.baidu.com/usercenter/paper/show?paperid=2c541a0965ba18d2f7f835ecdbe4f37d&site=xueshu_sealphago Zero模型的理解:1.不再使用监督数据对模型进行训练,使用自博弈的方式,自动生成数据,学习围棋的知识。2.使用包含40个残差结构的网络,效果很好3.前向搜索很有用,使用前向搜索的alphago Zero得分5185,使用裸网络的得分为3055,打不过a原创 2021-01-08 19:57:05 · 1311 阅读 · 0 评论 -
one-hot编码
在很多机器学习任务中,特征并不总是连续值,而有可能是分类值。比如星期类型,有星期一、星期二、……、星期日,比如浏览器类型有["uses Firefox","uses Chrome","uses Safari","uses Internet Explorer"]。对于这些离散型特征,可以用几个数字表示特征值,如用1表示星期一,2表示星期二;也可以用one-hot编码,如用[1,0,0,0,0...转载 2018-11-10 09:53:25 · 295 阅读 · 0 评论 -
ConvLSTM的用法
简单RNN与LSTM对比LSTM计算示意LSTM计算示意import torchfrom torch import nnimport torch.nn.functional as ffrom torch.autograd import Variable# Define some constantsKERNEL_SIZE = 3PADDING = KERNE...转载 2020-03-08 10:58:48 · 5654 阅读 · 1 评论 -
用Gym学习强化学习之Policy Gradient
作者:Cloudyyyyy@HIT兴趣方向:自然语言处理、人工智能目录什么是强化学习 强化学习的问题要素 Gym简介 Policy Gradient实战 总结 参考1 什么是强化学习强化学习在机器学习的应用分类里常常和监督学习和非监督学习并列。在监督学习和非监督学习中,我们可以获得固定的数据集,将数据集喂给特定的模型,拟合数学公式,学习其特征规律。监督学习 ...转载 2020-03-10 21:01:02 · 492 阅读 · 0 评论 -
to_categorical函数介绍
to_categorical就是将类别标签向量转换为二进制(只有0和1)的矩阵类型表示。每一个标签用矩阵的对应的行向量来表示。np_utils.to_categorical(数据的类别标签, 总类别数)例如类别的标签为0、1、2、3、4,将数据分为这5类,则经过to_categorical函数作用后。0—1 0 0 0 01—0 1 0 0 02—0 0 1 0 03—0 0 0 ...转载 2020-03-14 20:12:34 · 2285 阅读 · 0 评论 -
graphviz 的使用及pytorch结构的生成
graphviz类似于excel,想要使用它需要先进行本地的安装。官方网站http://www.graphviz.org/可以选择安装msi或者zip,我在win8.1下使用msi安装失败,所以下载的zip版本,然后把bin文件添加进系统路径,供python调用然后需要在python的环境中安装graphviz-2.38-hfd603c8_2.tar.bz2,具体可以在清华...原创 2020-03-20 10:14:24 · 577 阅读 · 0 评论 -
嵌入(embedding)层的理解
首先,我们有一个one-hot编码的概念。假设,我们中文,一共只有10个字。。。只是假设啊,那么我们用0-9就可以表示完比如,这十个字就是“我从哪里来,要到何处去”其分别对应“0-9”,如下:我 从 哪 里 来 要 到 何 处 去0 1 2 3 4 5 6 7 8 9那么,其实我们只用一个列表就能表示所...转载 2020-03-25 09:22:59 · 2452 阅读 · 0 评论 -
onehot编码的意义
处理离散型特征和连续型特征并存的情况,如何做归一化。参考博客进行了总结:https://www.quora.com/What-are-good-ways-to-handle-discrete-and-continuous-inputs-together总结如下:1、拿到获取的原始特征,必须对每一特征分别进行归一化,比如,特征A的取值范围是[-1000,1000],特征B的取值范围是[-1,...转载 2020-04-11 10:00:02 · 347 阅读 · 0 评论 -
两个矩阵有值的点的叠加
# 合成整体图像 layer_sum = np.zeros((100, 100, 3), dtype="bool") layer_sum_255 = np.zeros((100, 100, 3), dtype="bool") # 与原矩阵进行或运算 for obj_id in obj_id_list: ...原创 2020-04-11 16:25:15 · 318 阅读 · 0 评论 -
机器学习中离散量和连续量共同编码及不同量纲的影响
离散量使用onehot编码,变成全是0和1的值。这时候离散量和连续量的量纲不统一。量纲不统一会导致模型收敛速度变慢,对学习率比较敏感,甚至不收敛,因此如果量纲信息不重要,最好统一量纲,将连续量映射到0-1。个人理解,有错误欢迎指出。...原创 2020-04-17 20:20:32 · 575 阅读 · 0 评论 -
【python】Keras、Tensorflow 如何切换 GPU 和 CPU(强制使用CPU)
在代码的开头,所有 import 之前,加入下面两行代码:import osos.environ["CUDA_VISIBLE_DEVICES"] = "-1" # 这一行注释掉就是使用cpu,不注释就是使用gpu。一般情况下,运行tensorflow时,默认会占用可以看见的所有GPU,那么就会导致其它用户或程序无GPU可用,那么就需要限制程序对GPU的占用。并且,一般我们的程序也用不了...转载 2020-04-18 08:43:40 · 5810 阅读 · 0 评论 -
去量纲、数据归一化
1、去量纲指是去除数据单位之间的不统一,将数据统一变换为无单位(统一单位)的数据集,也可以作为指标的权重,进行后续的加权计算。2、数据归一化数据分标准化是将数据按比例缩放,使之落入一个小的特定区间,在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。A、对一维数据的缩放有如下定义:0-1归一化(nor...转载 2020-04-18 09:01:14 · 7027 阅读 · 1 评论 -
python sklearn模块提示ImportError: cannot import name datasets
报错原因很简单,因为我的文件名叫sklearn,然后系统就屏蔽了真正的sklearn,所以改下名字就行了原创 2020-08-19 20:05:58 · 4487 阅读 · 0 评论 -
算法学习(一)——Minimax算法
作者:还想养只小短腿链接:https://www.zhihu.com/question/27221568/answer/140874499来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。先来说极小极大算法主要应用于什么样的游戏:1. 零和游戏(Zero-sum Game):意思就是你死我活,一方的胜利代表另一方的失败,比如,象棋,五子棋等。2. 完全信息(Perfect Information):玩家知道之前所有的步骤。象棋就是完全信息,因为玩家是交替着落子,.转载 2020-12-29 16:05:58 · 6122 阅读 · 5 评论 -
算法学习(二)——Alpha-Beta剪枝算法
参考:https://blog.csdn.net/weixin_42192933/article/details/105873866剪枝流程这里以流程图来表述图中红 线 \textcolor{Red}{红线}红线代表被剪枝的部分,蓝 线 \textcolor{Blue}{蓝线}蓝线代表流程,正方形代表maximum,圆形代表minimum剪枝算法内部旨在求α \alphaα的下界极大值,β \betaβ的上界极小值讨 论 \textcolor{Red}{讨论}讨论:\qquad流程5与流程原创 2020-12-29 16:55:02 · 961 阅读 · 0 评论 -
算法学习(三)——蒙特卡洛树搜索
四个阶段:选择,展开,模拟,反传关键公式:信任度上限树(Upper Confidence bound applied to Trees(UCT))参考文章:https://zhuanlan.zhihu.com/p/25345778参考代码:https://github.com/zhangshun97/AI_Gomocup/tree/master/mcts参考论文:基于蒙特卡洛树搜索的计算机围棋博弈研究_于永波疑惑:查找的资料中没有涉及展开深度参数的设置,参考代码展原创 2021-01-03 22:51:40 · 717 阅读 · 0 评论 -
算法学习(四)——alphago模型
模型推荐看原文:https://xueshu.baidu.com/usercenter/paper/show?paperid=a7600bdc74f5a07ed65256035cd15c6b&site=xueshu_se自己的理解:MCTS解决的是算力分配的问题,alphago主要解决了两个问题:一是把深度学习和蒙特卡洛法相结合,取得一个准确和速度的平衡,用于评估当前局面。二是使用监督数据,防止强化学习网络陷入策略循环,然后通过自博弈再提升自己。alphago模型实际上并不美原创 2021-01-05 22:07:50 · 1384 阅读 · 0 评论 -
算法学习(六)——alpha Zero模型
论文:https://xueshu.baidu.com/usercenter/paper/show?paperid=dba68ff4f67c98a046754cf804cf1d7e&site=xueshu_se理解:0.应用领域:完美信息零和博弈,但是可以不对称规则,位置相关规则,表述更加丰富1.将应用在围棋领域的alphago zero拓展到了象棋和将棋领域,围棋表述和输出相对简单,因为表述是布尔的,输出只有位置信息,而象棋要复杂一些,使用了如下方法:2.训练的时候不再使用55原创 2021-01-14 20:13:10 · 1418 阅读 · 0 评论 -
算法学习(七)——一些基本概念:model base和model free,On-Policy 和 Off-Policy,On-Line 学习和 Off-Line 学习
model base指状态之间的转移关系确定,从而可以将决策问题转化成一个马尔科夫过程,从而用动态规划的方式得到最优解。如下图:model free使用更加广泛,不需要明确的状态和之间的转移概率。...原创 2021-01-17 10:37:34 · 1185 阅读 · 1 评论 -
算法学习(八)——SARSA和Q-Learning
SARSA的伪代码:Q-Learning的伪代码:区别在于更新方式:关于ε-greedy:一种贪心选择算法,类似的还有UCB(最大置信度上界),在稍后的文章中再详细解释。Q-learning很好的参考文章:http://mnemstudio.org/path-finding-q-learning-tutorial.htm...原创 2021-01-17 19:43:51 · 253 阅读 · 0 评论 -
算法学习(九)——MuZero模型
论文:Mastering Atari, Go, chess and shogi by planning with a learned modelgithub复现:https://github.com/werner-duvaud/muzero-general参考文章:https://blog.csdn.net/jsjytc/article/details/108318156http://deeprl.neurondance.com/d/119-muzeromodel-based自己原创 2021-01-26 18:13:19 · 1105 阅读 · 0 评论 -
算法学习(十)——强化学习中的奖励设置(不完整)
强化学习中奖励函数的设置非常复杂,这里只是总结一下我的理解。1.收益信号只能用来传达什么是你想要实现的目标,而不是如何实现現这个目标。所以不应该把奖励设置的过于细致。2.使用惩罚项可能导致智能体一动不动,因为不动就不会有惩罚。所以有惩罚项的训练过程可能存在搜索不足的问题。3.渐进型的奖励容易实现,但是很容易违背第一条原则,而事件型的奖励符合第一条原则,但是效果一般很差,比如要到达某一个点,但是只在目标点给奖励,这样训练的智能体寻路效果一般都不好。4.据说如果batchsize如果为2^12,原创 2021-01-26 18:51:02 · 5378 阅读 · 2 评论