自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 经典网络架构-ResNet

深度网络有一个普遍的问题:随着网络层数的增加,准确率是先增后减的,准确率增加是很好理解的,毕竟网络变深之后,模型的学习能力也随之变强,结果也相应地变好,但是结果变差是反直觉的,这种现象被称为网络退化,有人给出解释:模型的参数规模超过数据规模,模型可能发生了过拟合现象。其中$x_1,x_2,x_3$分别为第1、2、3层网络的输入,$y=x_4$为网络的输出,由于每一层都经过激活函数,求导的结果会较小,因此最后相乘的结果也会很小,即浅层的网络的梯度很小,网络学习能力下降。- ##深度网络的退化。

2023-10-03 19:25:38 261

原创 基于Pytorch的强化学习(DQN)之REINFORCE VS A2C

目录1. 引言2. 比较3. 本质联系1. 引言我们前面两次学习了与baseline有关的两种算法:REINFORCE 和 A2C,仔细阅读的同学会发现两者的神经网络的结构是一致的,那么这两者究竟有什么关系呢?2. 比较我们先来看看两者的算法REINFORCE:观测到从 时刻到游戏结束的一个trajectory 计算观测到的return 计算误差 更新策略网络 更新价值网络A2C:观测到一个 transition 计算TD targe...

2022-04-10 21:59:03 3786 4

原创 基于Pytorch的强化学习(DQN)之 A2C with baseline

目录1. 引言2. 数学推导3. 算法1. 引言我们上次介绍了利用到了baseline的一种算法:REINFORCE。现在我们来学习一下另一种利用到baseline的算法:Advantage Actor-Critic(A2C)2. 数学推导我们在Sarsa算法中推导出了这个公式,我们分部期望两边对求期望我们便得到了关于状态价值函数的递推关系式使用蒙特卡罗算法近似右侧期望,我们得到又由,也是使用蒙特卡罗算法,我们得到,总结一下,现在我们...

2022-04-07 10:01:35 1147 6

原创 基于Pytorch的强化学习(DQN)之 REINFORCE with baseline

目录1. 引言2. 估计2.1 估计期望2.2 估计价值函数2.3 估计状态函数3. 算法3.1 策略网络3.2 价值网络1. 引言我们上次讲到了baseline的基本概念,今天来讲讲使用到baseline的常用算法:REINFORCE2. 估计我们之前得到了状态价值函数的梯度表达式 我们希望使其梯度上升,现状就需要解决这么几个难题:等式右侧是一个期望表达式,不好计算;含有未知的 ;含有未知的,现在我们来解决这几个问题。2.1 估计期望.

2022-04-05 22:29:49 1184 5

原创 基于Pytorch的强化学习(DQN)之 Baseline 基本概念

目录1. 引言2. 数学推导2.1 引理2.2 改进的策略梯度2.3 蒙特卡罗模拟3. baseline的选择1. 引言我们前面讲过策略梯度下降算法,现在来介绍一种加快收敛速度的方法:设置Baseline。2. 数学推导我们之前推导过状态价值函数梯度的公式,以下证明源于这个公式。2.1 引理我们先证明一个引理:其中是不依赖于的量这个 引理告诉我们:只要我们找到一个不依赖于的量,就有2.2 改进的策略梯度由与...

2022-04-04 22:04:56 2117 3

原创 基于Pytorch的强化学习(DQN)之 Multi-agent 训练架构

目录1. 引言2. 训练架构2.1 Fully decentralized2.2 Fully centralized2.3 Centralized&Decentralized1. 引言我们上一次讲到了Multi-agent的基本概念,现在来讲讲具体的训练方法,以Actor-Critic方法为例。2. 训练架构我们知道在Single-agent中的Actor-Critic方法中需要一个策略函数 作为Actor进行执行action,还有一个价值函数 进

2022-04-03 17:01:08 8508 4

原创 基于Pytorch的强化学习(DQN)之 Multi-agent 基本概念

目录1. 引言2. 基本分类2.1 Fully cooperative2.2 Fully competitive2.3 Mixed cooperative&competitive2.4 Self interested3. 专业术语3.1 state and action3.2 state transtition3.3 reward and return3.4 policy network3.5 state value function3.6 c

2022-04-02 20:28:10 3523 7

原创 基于Pytorch的强化学习(DQN)之 Dueling Network

目录1. 引言2. 数学推导2.1 最优价值函数2.2 最优状态函数2.3 优势函数3. 网络结构3.1 优势网络3.2 状态网络3.3 新的DQN1. 引言我们之前学习了许多DQN的优化技巧,现在我们再来看看一种有趣的DQN的优化:Dueling network2. 数学推导2.1 最优价值函数我们之前已经学过了最优价值函数,这里的是动作价值函数,最优指的是对策略求最优。2.2 最优状态函数类比于最优价值函数,我们给出最优...

2022-03-31 21:56:30 1091 4

原创 基于Pytorch的强化学习(DQN)之 Overestimation

目录1. 引言2. Overestimation2.1 Maximization2.2 Bootstrapping3. Solution3.1 Target Network3.2 Double DQN1. 引言我们现在来介绍在TD算法中出现的一类问题:高估(overestimation)。这个问题会极大地影响TD算法的准确性,下面来具体介绍高估问题和其解决方案。2. Overestimation我们所说的高估指的是对TD target 的高估,下面是两种

2022-03-30 22:21:37 1212 1

原创 基于Pytorch的强化学习(DQN)之 Experience Replay

目录1. 引言2. 经验回放算法2. 优先经验回放2.1 抽取方法改进2.2 学习率修正1. 引言我们之前学过TD 算法,基本的TD算法的思路如下观测到一个transition 计算TD target 计算TD error 梯度下降我们发现一个transition在使用之后就会被丢弃了,我们不会在后面使用到它,这样的训练速度就非常慢:想象AI在打boss,但是一下就被秒了,它从中获取不到足够的信息,只能一遍又一遍地去刷boss,那又需要将前面的所以关..

2022-03-29 22:44:50 1985 5

原创 基于Pytorch的强化学习(DQN)之 Multistep TD target

目录1. 引言2. 数学推导3. 文献1. 引言我们之前已经学习了Sarsa算法和Q-learning算法,我们知道这两者都是基于TD算法的,我们又知道TD算法效果改变受TD target影响,我们思考一下,如果我们选用包含真实信息更多的TD target,效果会不会更好呢?下面我们来进行数学推导。2. 数学推导一切都源于这个公式:,我们再使用这个公式将展开得到这个公式相较于前一个公式更加精确,因为它含有两个真实信息,而前面的公式只有一个,于是我们可以进一步...

2022-03-26 21:43:44 2675 7

原创 基于Pytorch的强化学习(DQN)之Q-learning

目录1. 引言2. 数学推导3. 算法1. 引言我们上次已经介绍了Saras算法,现在我们来学习一下和Saras算法非常相似的一个算法:Q-learning算法。Q-learning是一种用于机器学习的强化学习技术。 Q-learning的目标是学习一种策略,告诉Agent在什么情况下要采取什么行动。 它不需要环境模型,可以处理随机转换和奖励的问题,而无需进行调整。对于任何有限马尔可夫决策过程(FMDP),Q学习找到一种最优的策略,即从当前状态开始,它在任何和所有后续

2022-03-25 17:53:29 1988 2

原创 基于Pytorch的强化学习(DQN)之Sarsa算法

目录1. 引言2. 数学推导2. 算法步骤1. 引言我们现在来看看强化学习中一种常用的算法:Sarsa算法。它常用于学习动作价值网络 。2. 数学推导我们知道动作价值函数 就是return对于随机变量state和action的期望值,即:我们之前推导过一个return的递推式:将其代入得到我们知道就是的期望,于是我们得到等式右端含有随机变量,我们使用来近似,用来近似,于是我们有,又由于等式右端整体是一个期望不好计算,于是我们使...

2022-03-24 22:16:20 1343 2

原创 基于Pytorch的强化学习(DQN)之蒙特卡罗算法

目录1. 大数定律2. 估算圆周率2.1 公式2.2 代码2. 估算定积分3.1 公式3.2 代码1. 大数定律大数定律是蒙特卡罗算法的理论依据,大数定律的内容如下在随机事件的大量重复出现中,往往呈现几乎必然的规律,这个规律就是大数定律。我们来简单看看伯努利大数定律的严格数学表达:设是次独立试验中事件A发生的次数,且事件A在每次试验中发生的概率为,则对任意正数 有通俗地说,这个定理就是在试验不变的条件下,重复试验多次,随机事件的频率近似于它的概

2022-03-23 21:31:37 1057 4

原创 基于Pytorch的强化学习(DQN)之策略学习

目录1. 引言2. 数学推导2.1 状态价值函数2.2 策略梯度2.3 蒙特卡罗近似3. 算法1. 引言我们上次讲到了价值学习,这次我们来看看基于策略的学习,我们状态价值函数能够描述当前状态下局势的好坏,如果越大那局势不就会越好吗,所以我们得到了策略学习的基本思想:找到最优的action使达到最大。2. 数学推导2.1 状态价值函数我们之前知道状态价值函数,我们先用神经网络来近似,这里的是神经网络的参数,如果我们认为与无关,...

2022-03-22 15:58:19 2259 8

原创 基于Pytorch的强化学习(DQN)之价值学习

1. 引言我们上次最后提到了动作价值函数,它是与状态(state)、动作(action)和策略函数有关的概率分布函数,其中我们提到的它取最优策略后得到的最优动作价值函数,其中的影响已经被消除,所以在给定状态下我们想要最优化就是寻找最好的,所谓价值学习就是使用神经网络DQN来拟合函数,其中是观测到的状态是网络的输入,是agent需要做出的动作,是网络的输出值,表示网络的参数,下面我们来介绍强化学习(DQN)。2. DQN我们刚刚提到我们需要状态作为输入值,在许多情...

2022-03-20 22:08:30 2053 2

原创 基于Pytorch的强化学习(DQN)之基础概念

目录1. 数学知识1.1 随机变量与观测值1.2 概率密度函数1.3 期望2. 专业术语2.1 agent2.2 action2.3 state2.4 policy2.5 reward2.6 state transition2.7 trajectory2.8 return2.9 value function2.9.1 动作价值函数2.9.2 状态价值函数3.OpenAI Gym讲完了神经网络的一些基本知识,我们现在来学习强化学习(D

2022-03-19 21:22:35 1128 3

原创 基于Pytorch的神经网络之autoencoder

目录1. 引言2.结构3.搭建网络4.代码1. 引言今天我们来学习一种在压缩数据方面有较好效果的神经网络:自编码(autoencoder)。2.结构自编码的主要思想就是将数据先不断encode进行降维提取其中的关键信息,再decode解码成新的信息,我们的目标是要使我们生成的信息和原信息尽可能相似,有点像我们做题一样,先刷大量的题,提取其中的关键解题思路,遇到同类型的题目就会写了,基本结构如下这个网络先将信息不断压缩,再解压,对比原始数据和新数据的差别,再反.

2022-03-18 22:40:03 2551 2

原创 基于Pytorch的神经网络之CNN

目录1.引言2.基本结构2.1 输入层2.2 卷积层2.3 激励层2.4 池化层2.5 全连接层3. 数字识别3.1 搭建部分这里主要讲讲神经网络的搭建部分。3.2 效果3.3 全部代码1.引言之前几篇文章简单介绍了一下神经网络的基础知识和简单应用,现在我们来学习一个十分有用的神经网络:卷积神经网络(CNN)。2.基本结构CNN可以简单分为五个部分,每一部分有不同的用处。2.1 输入层输入层的主要作用是对数据进行预处理,使其..

2022-03-17 22:52:58 4151 4

原创 基于Pytorch的神经网络之Optimizer

目录1.引言2.各种优化器2.1 SGD2.2 Momentum2.3 RMSprop2.4 Adam3.效果对比1.引言我们之前提到进行反向传播时我们需要用到优化器(Optimizer)来优化网络中的参数,优化器有许多种,下面介绍几种常见的优化算法。2.各种优化器2.1 SGD优化算法中比较基本的一种就是随机梯度下降法(SGD),它通过从全部样本中选取一部分样本计算梯度(使函数下降最快的方向向量),在其中随机选取一个梯度来下降,依据此来调整参数的值,

2022-03-16 22:54:03 1213 8

原创 基于Pytorch的神经网络之Classfication

1.引言我们上次介绍了神经网络主要功能之一预测,本篇大部分内容与回归相似,有看不懂的点可以看看我回归Regression,今天介绍一下神经网络的另一种功能:分类。2.网络搭建2.1 准备工作还是先引用我们所需要的库,和回归所需的一样。import torchimport torch.nn.functional as Fimport matplotlib.pyplot as pltn_data = torch.ones(2000, 2)x0 = torch.normal(2*..

2022-03-15 20:45:54 1358 7

原创 基于Pytorch的神经网络之Regression

目录1.引言2.神经网络搭建2.1 准备工作2.2 搭建网络2.3 训练网络3.效果4. 完整代码1.引言我们之前已经介绍了神经网络的基本知识,神经网络的主要作用就是预测与分类,现在让我们来搭建第一个用于拟合回归的神经网络吧。2.神经网络搭建2.1 准备工作要搭建拟合神经网络并绘图我们需要使用python的三个库。import torchimport torch.nn.functional as Fimport matplotlib.pypl

2022-03-14 21:29:23 2880 5

原创 基于Pytorch的神经网络之激活函数

1.引言上一篇文章我们提到了神经网络中前向传播中数据经过线性变换后会传入一个激活函数(activation function),以满足我们解决非线性问题的需求。2.激活函数类常见的激活函数有以下四种。2.1 Sigmoid2.1.1 表达式与图像表达式:图像:2.1.2 优缺点优点:将整个实轴映射到区间内,输出值适合充当下一层的输入值。缺点:由于该函数的导数最大值只有0.25,经过一层梯度值变为原来的四分之一,经过多层后梯度值会变得越来越接近0,在...

2022-03-13 14:33:35 1258 4

原创 基于Pytorch的神经网络之基础理论

目录1.引言1.1 生物神经网络1.2 人工神经网络2.神经元基本结构2.1 输入2.2 处理2.2.1 加权求和2.2.2 激活函数2.3 输出3.神经网络结构3.1 输入层3.2 隐藏层3.3 输出层1.引言1.1 生物神经网络生物神经网络(Biological Neural Networks)一般指生物的大脑神经元,细胞,触点等组成的网状结构1.2 人工神经网络2.神经元基本结构神经网络的结构可以简

2022-03-12 14:41:03 1025 1

原创 R语言相关性分析函数和相关性检验函数

1. 相关性分析函数我们用cor函数来计算两组数据的相关系数,结果越靠近1,正相关性越强,越靠近-1,负相关性越强> cor(state.x77) Population Income Illiteracy Life Exp Murder HS Grad Frost AreaPopulation 1.00000000 0.2082276 0.10762237 -0.06805195 0.3436428 -

2022-01-16 11:53:07 3557 1

原创 R语言频数统计函数和独立性检验函数

1. 频数统计函数1.1 数据分组我们要进行频数统计,首先要利用因子对数据进行分组,以mtcars数据集为例,如果要对cyl中的数据进行离散分组> mtcars$cyl<-as.factor(mtcars$cyl)> split(mtcars$cyl)> split(mtcars,mtcars$cyl)$`4` mpg cyl disp hp drat wt qsec vs am gear carbDatsun 710

2022-01-15 12:00:01 998 2

原创 R语言数学统计函数和描述性统计函数

目录1. 数学统计函数2. 描述性统计函数2.1 summary()2.2 fivenum ()2.3 describe()1. 数学统计函数R语言中有许多基于概率论的数学统计函数。这里主要讨论R中的概率分布函数,R中有将近20种不同分布的函数它们都有几种前缀,其中d开头代表其是概率密度函数,p开头是分布函数,q开头是分布函数的反函数,r开头是产生满足该分布的随机数,在d、p、q、r后面加上相应分布的名称就构成了相应的函数例如r+binomial->rbinom()表.

2022-01-14 16:11:54 1218 3

原创 R语言Excel的读写

目录1.R的工作路径1.1 查看R的工作路径1.2 修改R的工作路径2.Excel的导入2.1 readxl包2.2 直接导入3.Excel的操作3.1 查看excel3.2 获取一行或一列数据3.3 添加新列我们进行数据分析中常常用到Excel,那么我们将Excel中的数据导入R中进行分析要怎么操作呢?1.R的工作路径我们要将Excel导入R首先要将相应的Excel文件放在R的工作路径下1.1 查看R的工作路径> getwd()[1].

2022-01-13 20:00:52 6496 3

原创 R语言字符串

目录1.计算字符串长度nchar2.粘贴字符串paste3.提取字符substr4.转大写toupper5.转小写tolower6.首字母大小写gsub7.查找字符串grep8.查找字符串match9.字符串分块strsplit11.组合字符串outer处理信息不可避免地要面对字符串,R提供了许多处理字符串的函数1.计算字符串长度nchar> nchar("hello world")[1] 112.粘贴字符串paste> past

2022-01-12 11:09:51 1133 2

原创 R语言因子和缺失数据

目录1.因子1.1 介绍1.2 使用2.缺失数据2.1 介绍2.2 发现NA2.3 移除NA2.4 其他缺失数据2.4.1 NaN2.4.2 Inf1.因子1.1 介绍在R语言中,变量分为连续型变量,有序型变量和名义型变量,连续型变量是有可量化的课比较数据,有序型变量是不可量化的可比较的数据而名义型数据是不可比较的数据,其中名义型变量和有序型变量称为因子(factor),这些变量的可能值称为一个水平(level),由这些水平值构成的向量就是因子1.

2022-01-11 14:22:47 564 4

原创 R语言列表和数据框

目录1.列表1.1创建1.2 访问1.2.1 下标访问1.2.2 名称访问1.2.3符号访问1.3 注意2.数据框2.1 创建2.2 访问2.2.1 下标访问2.2.2 名称访问2.2.3 符号访问2.2.4 函数访问1.列表1.1创建> a<-c(1:20)> b<-matrix(1:20,4,5)> mlist<-list(a,b)> mlist[[1]] [1] 1 2 ...

2022-01-10 11:26:21 600 8

原创 R语言向量与矩阵

目录1.向量1.1 介绍1.2 使用1.2.1 创建1.2.2 运算1.2.3 索引1.3 相关函数1.3.1 求长度1.3.2 插入数据1.3.3 删除2.矩阵2.1 介绍2.2 使用1.向量1.1 介绍R语言中的向量与数学中的向量不同,是用于储存数值型、字符型或逻辑型数据的一维数组1.2 使用1.2.1 创建我们用赋值符号<-和c(元素)来创建一个向量> x<-c(1,2,3,4,5)> x.

2022-01-09 19:15:12 2046 2

原创 R语言基础函数

目录1.数学函数1.1 绝对值 abs()1.2 开方 sqrt()1.3对数 log()1.4三角 sin()、cos()、tan()1.5取整1.5.1 向上取整 ceiling()1.5.2 向下取整 floor()1.5.3 整数部分 trunc()1.5.4 保留位数round()1.5.5 有效数字四舍五入 signif()2.统计函数2.1 求和 sum()2.2 最值 max()、min()2.3 范围 range()2.3..

2022-01-08 12:05:56 2391

原创 R语言环境配置

R是用于统计分析、绘图的语言和操作环境。GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。要学习R语言,我们先要搭建R语言编程的环境1.R的下载和安装1.1进入R的官网点击:https://www.r-project.org/出现如图页面,点击红圈处download R1.2 选择镜像找到China,自行选择一个国内镜像下载即可1.3 选择对应操作系统找到对应的系统下载就行了2.RStudio的下载和安装..

2022-01-07 18:05:53 4192

原创 C语言qsort()函数的使用(详解)

目录1.参数含义1.首元素地址base2.元素个数num3.元素大小size4.自定义比较函数compar2.使用方式1.头文件2.compar的实现3.整体代码qsort()函数(quick sort)是八大排序算法中的快速排序,能够排序任意数据类型的数组其中包括整形,浮点型,字符串甚至还有自定义的结构体类型。1.参数含义void qsort (void* base, size_t num, size_t size,int (*compar)(const.

2021-09-09 22:06:26 29071 23

原创 C语言指针进阶详解

我们之前已经学习了指针的基础知识:指针基础。现在我们来深入了解一下指针与字符串,数组,和函数相关的操作。目录1.字符指针2.指针数组3.数组指针4.数组传参5.函数指针1.字符指针我们已经知道了数组名在大部分时候表示数组的地址,指针本质上也表示一个地址,那么我们能否用指针来创建一个字符串呢?int main(){ char arr1[] = "abcdef"; char arr2[] = "abcdef"; const char* p1 = "abc...

2021-09-08 18:48:57 286 6

原创 C语言实现简单计算器

1.实现目标我们要实现一个简易计算器,提供可选择功能包括加,减,乘,除,取模和异或。2.实现方法1.回调函数法首先我们需要打印一个计算器菜单供使用者选择计算类型,我们可以自定义简单的菜单函数menu,再利用do while循环加switch语句完成用户选则功能,具体实现方法可以看我的另一篇博客:猜数字游戏。如果是在每一个case里进行打印提示和,输入数字和函数调用会显得非常繁冗,并且不利于新运算类型的添加,我们可以将其改进:将以上数条语句包装,利用一个函数Calc来实现我们将不同的运算函数的

2021-09-07 20:56:54 4505 13

原创 C语言中几个基础的字符串函数(简单易懂)

目录1.获取字符串的长度的strlen2.比较两个字符串的长度的strcmp3.复制一个字符串替代另一个字符串的strcpy4.复制一个字符前n位替代另一个字符串前n位的strncpy5.将一个字符串黏贴至另一个字符串尾部的strcat6.将一个字符串前n位黏贴至另一个字符串尾部的strncat7.将小写字符转换成大写字符的strupr8.将大写字符转换成小写字符的strlwr9.将字符串前n位修改为同种字符的memsetC语言的字符串库函数有一个专用的头文件&...

2021-08-31 20:53:39 416 4

原创 C语言结构体详解

目录1.结构体的定义与产生2.结构体的使用1.结构体的创建2.结构体变量的创建和使用3.结构体与指针4.结构体传参1.结构体的定义与产生结构体是什么?结构体本质上是一种数据类型,但它可以包括若干个“成员”,每个成员的类型可以相同也可以不同,也可以是基本数据类型或者又是一个构造类型。所以C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,也就是结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合)的变量封装在内部,通过

2021-08-30 15:36:07 346 4

原创 时间复杂度和空间复杂度

目录1.时间复杂度1.时间复杂度的概念和计算方法2.几个简单算法的时间复杂度1.循环嵌套2.二分查找3.冒泡排序2.空间复杂度1.空间复杂度的概念和计算方法2.几个简单算法的时间复杂度1.未定数组2.递归函数1.时间复杂度1.时间复杂度的概念和计算方法在计算机科学中,时间复杂性,又称时间复杂度,算法的时间复杂度是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数

2021-08-29 21:59:49 866 6

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除