自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

靡不有初鲜克有终

古之成大事者,不惟有超世之才,亦唯有坚韧不拔之志也!

  • 博客(207)
  • 资源 (2)
  • 收藏
  • 关注

原创 强化学习15——Proximal Policy Optimization (PPO)算法详细推导

在Policy Gradient推导和REINFORCE算法两篇文章介绍了PG算法的推导和实现,本篇要介绍的算法是Proximal Policy Optimization (PPO),中文叫近短策略优化算法。PPO由于其非常的好的性能与易于实现等特性,已被作为OpenAI公司的首选算法,可见这个算法的优秀性能,具体可以查看OpenAI-PPO一、Policy Gradient 的不足采样效率低下:PG采用MC采样方式,每次基于当前的策略对环境采样一个episode数据,然后基于这些数据更新策略,这个过

2022-01-27 17:34:20 8366 4

原创 强化学习 14 —— TD3 算法详解与 tensorflow 2.0 实现

上篇文章 强化学习 13 —— DDPG算法详解 中介绍了DDPG算法,本篇介绍TD3算法。TD3的全称为 Twin Delayed Deep Deterministic Policy Gradient(双延迟深度确定性策略)。可以看出,TD3就是DDPG算法的升级版,所以如果了解了DDPG,那么TD3算法自然不在话下。一、算法介绍TD3算法主要对DDPG做了三点改进,将会在下面 一一讲解,两者的代码也很相似,本篇只展示改进的部分,所以如果对DDPG算法不太熟悉,强烈建议参考上一篇博客 强化学习 13—

2020-08-22 17:15:17 8870 4

原创 强化学习13 —— Deep Deterministic Policy Gradient(DDPG)算法原理与 tensorflow 2.0 实现

上篇文章介绍了强化学习——Actor-Critic算法详解加实战 介绍了Actor-Critic,本篇文章将介绍 DDPG 算法,DDPG 全称是 Deep Deterministic Policy Gradient(深度确定性策略梯度算法) 其中 PG 就是我们前面介绍了 Policy Gradient,在强化学习10——Policy Gradient 推导 已经讨论过,那什么是确定性策略梯度呢?一、确定性策略与确定性策略对应的是随机性策略,就是神经网络输出的是动作的分布,在确定每一步动作时,我们需要

2020-08-22 17:05:31 5882 25

原创 强化学习 12 —— Actor-Critic 算法介绍与 Tensorflow 2.0 实现

一、Actor-Critic 介绍1、引入 Actor-Critic我们还是从上篇强化学习——REINFORCE Algorithm推导出的目标函数的梯度说起:∇θJ(θ)=Eπθ[∑t=0T−1Gt⋅∇θ  log  πθ(at∣st)]\nabla_\theta J(\theta) = E_{\pi_\theta} \left[\sum_{t=0}^{T-1}G_t\cdot \nabla_\theta\;log\;\pi_\theta(a_t|s_t) \right]∇θ​J(θ)=Eπθ​

2020-08-22 16:39:04 3977 9

原创 强化学习 11 —— REINFORCE 算法推导与 tensorflow2.0 代码实现

在上篇文章强化学习——Policy Gradient 公式推导我们推导出了 Policy Gradient:∇θJ(θ)≈1m∑i=1mR(τi)  ∑t=0T−1∇θ  log  πθ(ati∣sti)\nabla_\theta J(\theta) \approx \frac{1}{m}\sum_{i=1}^mR(\tau_i)\;\sum_{t=0}^{T-1}\nabla_\theta\;log\;\pi_\theta(a_t^i|s_t^i)∇θ​J(θ)≈m1​i=1∑m​R(τi​)t=0

2020-08-16 10:30:38 4929 6

原创 强化学习 10 —— Policy Gradient详细推导

前面几篇文章价值函数近似、DQN算法、DQN改进算法DDQN和Dueling DQN我们学习了 DQN 算法以及其改进算法 DDQN 和 Dueling DQN 。他们都是对价值函数进行了近似表示,也就是 学习价值函数,然后从价值函数中提取策略,我们把这种方式叫做 Value Based。一、Value Based 的不足回顾我们的学习路径,我们从动态规划到蒙地卡罗,到TD到Qleaning再到DQN,一路为计算Q值和V值绞尽脑汁。但大家有没有发现,我们可能走上一个固定的思维,就是我们的学习,一定要算Q

2020-08-16 10:26:35 3690 2

原创 强化学习 9 —— DQN 改进算法 DDQN、Dueling DQN 详解与tensorflow 2.0实现

上篇文章强化学习——详解 DQN 算法我们介绍了 DQN 算法,但是 DQN 还存在一些问题,本篇文章介绍针对 DQN 的问题的改进算法一、Double DQN 算法1、算法介绍DQN的问题有:目标 Q 值(Q Target )计算是否准确?全部通过 max  Qmax\;QmaxQ 来计算有没有问题?很显然,是有问题的,这是因为Q-Learning 本身固有的缺陷—过估计过估计是指估计得值函数比真实值函数要大,其根源主要在于Q-Learning中的最大化操作,对于 TD Target:r+γ  

2020-08-10 15:02:22 6401 4

原创 强化学习 8 —— DQN 代码 Tensorflow 2.0 实现

在上一篇文章强化学习——DQN介绍 中我们详细介绍了DQN 的来源,以及对于强化学习难以收敛的问题DQN算法提出的两个处理方法:经验回放和固定目标值。这篇文章我们就用代码来实现 DQN 算法一、环境介绍1、Gym 介绍本算法以及以后文章要介绍的算法都会使用 由 OpenAIOpenAIOpenAI 推出的GymGymGym仿真环境, GymGymGym 是一个研究和开发强化学习相关算法的仿真平台,了许多问题和环境(或游戏)的接口,而用户无需过多了解游戏的内部实现,通过简单地调用就可以用来测试和仿真,并

2020-08-10 14:57:49 10250 12

原创 强化学习 7—— 一文读懂 Deep Q-Learning(DQN)算法

上篇文章强化学习——状态价值函数逼近介绍了价值函数逼近(Value Function Approximation,VFA)的理论,本篇文章介绍大名鼎鼎的DQN算法。DQN算法是 DeepMind 团队在2015年提出的算法,对于强化学习训练苦难问题,其开创性的提出了两个解决办法,在atari游戏上都有不俗的表现。论文发表在了 Nature 上,此后的一些DQN相关算法都是在其基础上改进,可以说是打开了深度强化学习的大门,意义重大。论文地址:Mnih, Volodymyr; et al. (2015). H

2020-08-10 14:42:10 17768 3

原创 强化学习 6 ——价值函数逼近 (VFA)

上篇文章强化学习——时序差分 (TD) 控制算法 Sarsa 和 Q-Learning我们主要介绍了 Sarsa 和 Q-Learning 两种时序差分控制算法,在这两种算法内部都要维护一张 Q 表格,对于小型的强化学习问题是非常灵活高效的。但是在状态和可选动作非常多的问题中,这张Q表格就变得异常巨大,甚至超出内存,而且查找效率极其低下,从而限制了时序差分的应用场景。近些年来,随着神经网络的兴起,基于深度学习的强化学习称为了主流,也就是深度强化学习(DRL)。一、函数逼近介绍我们知道限制 Sarsa 和

2020-08-10 14:09:39 2819

原创 强化学习 5 —— SARSA and Q-Learning 算法代码实现

强化学习 5 —— SARSA and Q-Learning上篇文章 强化学习——时序差分 (TD) — SARSA and Q-Learning 我们介绍了时序差分TD算法解决强化学习的评估和控制问题,TD对比MC有很多优势,比如TD有更低方差,可以学习不完整的序列。所以我们可以在策略控制循环中使用TD来代替MC。优于TD算法的诸多优点,因此现在主流的强化学习求解方法都是基于TD的。这篇文章会使用就用代码实现 SARSA 和 Q-Learning 这两种算法。一、算法介绍关于SARSA 和 Q-Le

2020-08-09 19:30:27 2841 1

原创 强化学习 4 —— 时序差分法(TD)的解决无模型的预测与控制(SARSA and Q-Learning)

强化学习 4 —— Model Free TD在上篇文章强化学习 3 ——蒙特卡洛 (MC) 采样法的预测与控制中我们讨论了 Model Free 情况下的策略评估问题,主要介绍了蒙特卡洛(MC)采样法的预测与控制问题,这次我们介绍另外一种方法——时序差分法(TD)一、时序差分采样法(TD)对于MC采样法,如果我们没有完整的状态序列,那么就无法使用蒙特卡罗法求解了。当获取不到完整状态序列时, 可以使用时序差分法(Temporal-Difference, TD)。1、TD 简介对于蒙特卡洛采样法计算

2020-08-09 17:55:41 3942 2

原创 强化学习 3 —— 使用 蒙特卡洛(MC)解决无模型问题

强化学习 3—— Model-free MC一、问题引入回顾上篇强化学习 2 —— 用动态规划求解 MDP我们使用策略迭代和价值迭代来求解MDP问题1、策略迭代过程:1、评估价值 (Evaluate)vi(s)=∑a∈Aπ(a∣s)(R(s,a)+γ∑s′∈SP(s′∣s,a)⋅vi−1(s′))v_{i}(s) = \sum_{a\in A} \pi(a|s) \left( {\color{red}R(s, a)} + \gamma \sum_{s' \in S} {\color{red}

2020-08-09 17:30:05 2480 2

原创 强化学习 2 —— 用动态规划解决 MDP 问题 (Policy Iteration and Value Iteration)

强化学习 2—— 用动态规划求解 MDP在上一篇文章 强化学习 1 —— 一文读懂马尔科夫决策过程 MDP 介绍了马尔科夫过程,本篇接着来介绍如何使用动态规划方法来求解。动态规划的关键点有两个:一是问题的最优解可以由若干小问题的最优解构成,即通过寻找子问题的最优解来得到问题的最优解。二是可以找到子问题状态之间的递推关系,通过较小的子问题状态递推出较大的子问题的状态。在上一篇中我们提到的状态价值的贝尔曼方程:vπ(s)=∑a∈Aπ(a∣s)(R(s,a)+γ∑s′∈SP(s′∣s,a)⋅vπ(

2020-08-09 17:16:05 4109 2

原创 自编码器 Tensorflow 实战 MNIST 数据集

1、生成模型1.1、什么是生成模型​ 概率统计层面:能够在给丁某一些隐含参数的条件下,随机生成观测数据的这样一种模型,称之为“生成模型”。它给观测值和比周数据系列制定一个连和概率分布​ 机器学习层面:直接对数据进行建模,比如根据某个变量的概率密度函数进行数据采样。在贝叶斯算法中,直接对连和概率分布P(x,y)进行建模,然后利用贝叶斯公式进行求解P(y|x)。1.2、生成模型分类第一类:完全表示出数据确切的分布函数第二类:没有办法完全表示出确切的分布函数,但是,能够做到的是新的数据的生成,而具

2020-07-20 10:51:00 1105

原创 MNIST 手写数据集介绍

MNIST 手写数据集介绍1、数据集介绍MNIST数据集是机器学习领域中非常经典的一个数据集,最简单的方法就是使用如下代码直接加载:import tensorflow as tf(X_train, y_train), (X_test, y_test) = tf.keras.datasets.mnist.load_data()print(X_train.shape, y_train.shape)print(X_test.shape, y_test.shape)(60000, 28, 28)

2020-06-09 19:22:45 2391

原创 卷积生成对抗网络---生成手写数字

深度卷积生成对抗网络(DCGAN)---- 生成 MNIST 手写图片1、基本原理生成对抗网络(GAN)由2个重要的部分构成:生成器(Generator):通过机器生成数据(大部分情况下是图像),目的是“骗过”判别器判别器(Discriminator):判断这张图像是真实的还是机器生成的,目的是找出生成器做的“假数据”训练过程固定判别器,让生成器不断生成假数据,给判别器判别,开始生成器很弱,但是随着不断的训练,生成器不断提升,最终骗过判别器。此时判别器判断假数据的概率为50%

2020-06-06 16:30:25 498

原创 强化学习 1 —— 一文读懂马尔科夫决策过程(MDP)

强化学习 — 马尔科夫决策过程(MDP)一、马尔科夫过程(Markov Process)马尔科夫性某一状态信息包含了所有相关的历史,只要当前状态可知,所有的历史信息都不再需要,当前状态就可以决定未来,则认为该状态具有马尔科夫性P(St+1∣St)=p(St+1∣S1,S2,⋯ ,St)P(S_{t+1}|S_t) = p(S_{t+1}|S_1, S_2, \cdots , S_t)P(St+1​∣St​)=p(St+1​∣S1​,S2​,⋯,St​)马尔科夫过程又叫做马尔科夫链(Markov

2020-06-06 16:17:43 9492 4

原创 kNN 算法实现

kNN Algorithmimport numpy as npimport matplotlib.pyplot as pltraw_data_X = [[3.4, 2.3], [3.1, 1.8], [1.3, 3.4], [3.6, 4.7], [2.3, 2.9], ...

2020-03-05 22:52:05 183

原创 PCA 重建 Fashion_mnist 数据集

import tensorflow as tffrom tensorflow import kerasimport numpy as npfrom sklearn.decomposition import PCAimport matplotlib.pyplot as pltfrom PIL import Image读取数据(x_train, y_train), (x_test, y...

2020-03-03 11:00:45 867

原创 自编码器重建 Fashion_mnist 数据集

自编码器from PIL import Imageimport tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras import Sequential, layersimport numpy as npfrom matplotlib import pyplot as plt加载数据集(x_train,...

2020-03-03 10:57:25 718 1

原创 神经网络之反向传播算法(BP)公式推导

反向传播算法详细推导反向传播(英语:Backpropagation,缩写为BP)是“误差反向传播”的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。 在神经网络上执行梯度下降法的主要算法。该算法会先按前向传播方式计算(并缓存)每个节点的输出值,然后再按反向传播...

2020-01-09 02:21:18 886

原创 神经网络之动手实现反向传播(BP)算法

反向传播算法实战我们将实现一个 4 层的全连接网络,来完成二分类任务。网络输入节点数为 2,隐藏 层的节点数设计为:25、50和25,输出层两个节点,分别表示属于类别 1 的概率和类别 2 的概率,如下图所示。这里并没有采用 Softmax 函数将网络输出概率值之和进行约束, 而是直接利用均方误差函数计算与 One-hot 编码的真实标签之间的误差,所有的网络激活 函数全部采用 Sigmoid ...

2020-01-08 05:17:30 744 1

原创 Golang实现简单爬虫框架(5)——项目重构与数据存储

前言在上一篇文章《Golang实现简单爬虫框架(4)——队列实现并发任务调度》中,我们使用用队列实现了任务调度,接下来首先对两种并发方式做一个同构,使代码统一。然后添加数据存储模块。注意:本次并发是在上一篇文章简单并发实现的基础上修改,所以没有贴出全部代码,只是贴出部分修改部分,要查看完整项目代码,可以查看上篇文章,或者从github下载项目源代码查看1、项目重构(1)并发引擎通过分析我...

2019-05-30 15:36:21 321

原创 Golang实现简单爬虫框架(4)——队列实现并发任务调度

前言在上一篇文章《Golang实现简单爬虫框架(3)——简单并发版》中我们实现了一个最简单并发爬虫,调度器为每一个Request创建一个goroutine,每个goroutine往Worker队列中分发任务,发完就结束。所有的Worker都在抢一个channel中的任务。但是这样做还是有些许不足之处,比如控制力弱:所有的Worker在抢同一个channel中的任务,我们没有办法控制给哪一个wor...

2019-05-27 11:46:25 1085 1

原创 Golang实现简单爬虫框架(3)——简单并发版

在上篇文章Golang实现简单爬虫框架(2)——单任务版爬虫中我们实现了一个简单的单任务版爬虫,对于单任务版爬虫,每次都要请求页面,然后解析数据,然后才能请求下一个页面。整个过程中,获取网页数据速度比较慢,那么我们就把获取数据模块做成并发执行。在项目的基础上,实现多任务并发版爬虫。项目github地址:https://github.com/NovemberChopin/golang-crawle...

2019-05-22 10:49:45 465 2

原创 Golang实现简单爬虫框架(2)——单任务版爬虫

Golang实现简单爬虫框架(2)——单任务版爬虫上一篇博客《Golang实现简单爬虫框架(1)——项目介绍与环境准备》中我们介绍了go语言的开发环境搭建,以及爬虫项目介绍。本次爬虫爬取的是珍爱网的用户信息数据,爬取步骤为:1.进入珍爱网城市页面爬取所有的城市信息2.进入城市详情页爬取用户URL地址信息3.进入用户详情页爬取所需要的用户信息注意:在本此爬虫项目中,只会实现一个简单的...

2019-05-21 20:43:58 1077

原创 Golang实现简单爬虫框架(1)——项目介绍与环境准备

Golang实现简单爬虫框架(1)——项目介绍与环境准备最近学习Go语言,看了慕课网Google工程师深度讲解go语言这门课,现在把课程中的爬虫项目整理出来,同时也作为自己学习的一个总结。本人菜鸟一枚,如有任何问题,欢迎大家指正。一、环境准备1、go语言安装Go安装包下载网址:https://studygolang.com/dl选择对应的版本下载即可Windows用户推荐使用msi安...

2019-05-21 20:37:13 1615

原创 蓝桥杯 数字三角形

问题描述  (图3.1-1)示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路  径,使该路径所经过的数字的总和最大。  ●每一步可沿左斜线向下或右斜线向下走;  ●1<三角形行数≤100;  ●三角形中的数字为整数0,1,…99;  .  (图3.1-1)输入格式  文件中首先读到的是三角形的行数。  接下来描述整个三角形输出格

2017-12-11 17:08:42 389

原创 蓝桥杯练习 未名湖的烦恼

//问题描述//  每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。//  每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)//输入格式//  两个整数,

2017-12-11 15:10:11 324

原创 蓝桥杯: 矩阵乘法

题目:给定一个N阶矩阵A,输出A的M次幂(M是非负整数)  例如:  A =  1 2  3 4  A的2次幂  7 10  15 22输入格式  第一行是一个正整数N、M(1  接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值输出格式  输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开样例输入

2017-12-10 22:21:48 508

原创 蓝桥杯 矩形面积交

//基础练习 矩形面积交////        问题描述//          平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们////        给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。//        输入格式//          输入仅包含两行,每行描述一个矩形。//          在每行中,给出矩形的

2017-12-10 17:30:16 318

原创 蓝桥杯: 完美的代价

问题描述  回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。  交换的定义是:交换两个相邻的字符  例如mamad  第一次交换 ad : mamda  第二次交换 md : madma  第三次交换 ma : madam (回文!完美!)输入

2017-12-09 15:49:29 604

原创 蓝桥杯 Sine之舞

题目:最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。  不妨设  An=sin(1–sin(2+sin(3–sin(4+...sin(n))...)  Sn=(...(A1+n)A2+n-1)A3+...+2)An+1  FJ想让奶牛们计算Sn的值,

2017-12-07 23:08:22 895

原创 计算机网络知识总结

本文转载自公众号:算法与数学之美原文链接:http://mp.weixin.qq.com/s/E-LntcaKBZ4G5iDIwJxrXw  计算机网络学习的核心内容就是网络协议的学习。网络协议是为计算机网络中进行数据交换而建立的规则、标准或者说是约定的集合。因为不同用户的数据终端可能采取的字符集是不同的,两者需要进行通信,必须要在一定的标准上进行。一个很形象地比喻就是我们的语言,我们

2017-11-05 12:22:48 315

原创 JavaScript——闭包

闭包 var makePrison = function (prisoner) { return function() { return prisoner } }; var joshPrison = makePrison( 'Josh Powell' ) var mikePrison = makePrison('Mike Mikows

2017-10-16 18:11:13 228

原创 JavaScript函数——更深入的窥探

函数--更深入的窥探 window.onload = function () { //函数和匿名函数 var prison = function() { console.log('prison called!'); } prison() /*************************************/

2017-10-16 18:10:37 225

原创 JavaScript执行环境和执行环境对象

执行环境和执行环境对象 /* * 执行环境对象 第一轮 * */ //当outer()调用时,创建一个新的执行对象// {// // } outer(1) //声明参数并赋值// {// arg: 1// } function outer( arg ) { //声明局部变量,但没有赋值//

2017-10-16 17:51:46 423

原创 JavaScript的变量和作用域

JavaScript的变量和作用域函数外声明:全局变量函数内声明:局部变量注意:如果在函数中创建局部变量时未写var关键字,则为全局变量变量提升:1、javascript的变量声明会被提升到它们所在函数的顶部。而初始化仍在原来的地方2、JavaScript并没有重写代码;每次调用函数时,声明都会重新提升 function prison () {

2017-10-16 17:38:06 283

原创 JavaScript中map()函数的用法

map 方法 (Array) (JavaScript) 对数组的每个元素调用定义的回调函数并返回包含结果的数组。语法array1.map(callbackfn[, thisArg])参数参数

2017-10-13 19:07:29 6110

Soft Actor-Critic(SAC)算法tensorflow实现

Soft Actor-Critic(SAC)算法tensorflow实现,SAC是深度强化学习中对于连续动作控制的又一经典。

2020-08-09

myeclipse.10.6_crack破解程序

myeclipse.10.6_crack破解程序

2017-07-27

空空如也

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

TA关注的人

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