【深度强化学习 DRL 快速实践】策略梯度算法 (PG)

深度强化学习(DRL)算法 2 —— PPO 之 Clipped Surrogate Objective 篇 在之前的文章里介绍了,提出了两个缺点,其中缺点一,在后续提出的 DRL 算法 PPO 解决了,今天我们就来看看大名鼎鼎的 PPO 算法。 阅读详情

在这里插入图片描述

PG(1984,Sutton) 核心改进点

策略梯度算法 (PG): 直接对策略函数进行建模,可以适用于连续的动作空间

  • model-free, on-policy, PG, stochastic 策略
核心改进点说明
策略梯度优化通过Actor网络直接优化策略,适应连续动作问题: θ n e w = θ o l d + α ∇ θ J ( θ ) \theta_{new} = \theta_{old} + \alpha \nabla_\theta J(\theta) θnew​=θold​+α∇θ​J(θ)

PG 网络更新 – 基于蒙特卡洛估计的 REINFORCE

∇ θ J ( θ ) ≈ ∑ t = 0 T − 1 ∇ θ log ⁡ π θ ( a t ∣ s t ) G t ,where  G t = ∑ t ′ = t T γ t ′ − t r t ′ \nabla_\theta J(\theta) \approx \sum_{t=0}^{T-1} \nabla_\theta \log \pi_\theta(a_t | s_t) G_t,\text{where } G_t = \sum_{t'=t}^{T} \gamma^{t' - t} r_{t'} ∇θ​J(θ)≈t=0∑T−1​∇θ​logπθ​(at​∣st​)Gt​,where Gt​=t′=t∑T​γt′−trt′​


详细网络更新公式推导

策略更新目标:使得 θ \theta θ 策略下得到的所有轨迹 τ \tau τ 的回报期望 R ˉ θ \bar{R}_\theta Rˉθ​ 最大化: 可以用 N 条轨迹的均值近似

  • τ = { s 1 , a 1 , r 1 , s 2 , a 2 , r 2 , … , s τ , a τ , r τ } \tau = \{s_1, a_1, r_1, s_2, a_2, r_2, \dots, s_\tau, a_\tau, r_\tau\} τ={s1​,a1​,r1​,s2​,a2​,r2​,…,sτ​,aτ​,rτ​}
    R ˉ θ = ∑ τ R ( τ ) P ( τ ∣ θ ) ≈ 1 N ∑ n N R ( τ n ) \bar{R}_\theta =\textcolor{red}{\sum_\tau} R(\tau) \textcolor{red}{P(\tau | \theta)} \approx \textcolor{blue}{\frac{1}{N} \sum_n^N}R(\tau^n) Rˉθ​=τ∑​R(τ)P(τ∣θ)≈N1​n∑N​R(τn)

计算梯度 (近似)

∇ R ˉ θ = ∑ τ R ( τ ) ∇ P ( τ ∣ θ ) = ∑ τ R ( τ ) P ( τ ∣ θ ) ∇ P ( τ ∣ θ ) P ( τ ∣ θ ) = ∑ τ R ( τ ) P ( τ ∣ θ ) ∇ θ log ⁡ P ( τ ∣ θ ) ≈ 1 N ∑ n = 1 N R ( τ n ) ∇ θ log ⁡ P ( τ n ∣ θ ) \nabla \bar{R}_\theta = \sum_{\tau} R(\tau) \nabla P(\tau | \theta) = \sum_\tau R(\tau) P(\tau | \theta) \frac{\nabla P(\tau | \theta)}{P(\tau | \theta)}=\textcolor{red}{\sum_\tau} R(\tau) \textcolor{red}{P(\tau | \theta)} \nabla_\theta \log P(\tau | \theta)\\ \approx \textcolor{blue}{\frac{1}{N} \sum_{n=1}^N} R(\tau^n) \nabla_\theta \log P(\tau^n | \theta) ∇Rˉθ​=τ∑​R(τ)∇P(τ∣θ)=τ∑​R(τ)P(τ∣θ)P(τ∣θ)∇P(τ∣θ)​=τ∑​R(τ)P(τ∣θ)∇θ​logP(τ∣θ)≈N1​n=1∑N​R(τn)∇θ​logP(τn∣θ)

  • 注:转为 log 时利用了公式 d log ⁡ ( f ( x ) ) d x = 1 f ( x ) ⋅ d f ( x ) d x \frac{d \log(f(x))}{dx} = \frac{1}{f(x)} \cdot \frac{d f(x)}{dx} dxdlog(f(x))​=f(x)1​⋅dxdf(x)​

其中, ∇ θ log ⁡ P ( τ n ∣ θ ) \nabla_\theta\log P(\tau^n | \theta) ∇θ​logP(τn∣θ) 可以做进一步表示

P ( τ ∣ θ ) = p ( s 1 ) ∏ t = 1 T p ( a t ∣ s t , θ ) p ( r t , s t + 1 ∣ s t , a t ) log ⁡ P ( τ ∣ θ ) = log ⁡ p ( s 1 ) + ∑ t = 1 T log ⁡ p ( a t ∣ s t , θ ) + log ⁡ p ( r t , s t + 1 ∣ s t , a t ) ∇ θ log ⁡ P ( τ ∣ θ ) = ∑ t = 1 T ∇ θ log ⁡ p ( a t ∣ s t , θ ) P(\tau|\theta) = p(s_1) \prod_{t=1}^{T} p(a_t|s_t, \theta) p(r_t, s_{t+1}|s_t, a_t) \\ \log P(\tau|\theta) = \log p(s_1) + \sum_{t=1}^{T} \log p(a_t|s_t, \theta) + \log p(r_t, s_{t+1}|s_t, a_t)\\ \nabla_\theta\log P(\tau | \theta) = \sum_{t=1}^{T} \nabla_\theta \log p(a_t | s_t, \theta) P(τ∣θ)=p(s1​)t=1∏T​p(at​∣st​,θ)p(rt​,st+1​∣st​,at​)logP(τ∣θ)=logp(s1​)+t=1∑T​logp(at​∣st​,θ)+logp(rt​,st+1​∣st​,at​)∇θ​logP(τ∣θ)=t=1∑T​∇θ​logp(at​∣st​,θ)

所以梯度 (近似)的表示更新为

∇ R ˉ θ ≈ 1 N ∑ n = 1 N ∑ t = 1 T n R ( τ n ) ∇ θ log ⁡ p ( a t n ∣ s t n , θ ) \nabla \bar{R}_\theta \approx {\frac{1}{N} \sum_{n=1}^N} \sum_{t=1}^{T^n} R(\tau^n) \nabla_\theta \log p(a_t^n | s_t^n, \theta) ∇Rˉθ​≈N1​n=1∑N​t=1∑Tn​R(τn)∇θ​logp(atn​∣stn​,θ)

  • 注:梯度用的是总的回报 R ( τ n ) R(\tau^n) R(τn) 而不是 a t n a_t^n atn​ 对应的即时奖励,也就是说,总的回报会增强/减弱轨迹上所有有利/有害的动作输出;进一步,由于对于第 t 个step,所选择的动作只会影响未来的 U t n = ∑ t T n r t n U^n_t = \sum_t^{T^n} r^n_t Utn​=t∑Tn​rtn​ 所以 R ( τ n ) R(\tau^n) R(τn) 可以被优化为 U t n U^n_t Utn​,对应本文一开始所给出的梯度公式

关于如何理解这个梯度,李宏毅老师类比分类学习的讲法也很有启发,强烈推荐学习下 【PG 李宏毅 B 站】

进一步的 还可以通过添加 baseline 等方法进一步优化表现

  • 解决全正数值的奖励导致的 – 没有被 sample 到的 action 输出概率会下降 (因为其他被 sample 到了的 actions,获得了正数值的奖励导致其被视为 有利的动作,进而被增强了其的输出) 的问题

基于 stable_baselines3 的快速代码示例

  • 见后续 PPO 算法章节

参考资料:策略梯度算法(PG)详解

DRL:DQN, PG, AC, DDPG, SAC概述 深度强化学习 Deep Reinforcement Learning DQN DQN的出现事实上是解决了Q-learning中state数量的限制,在Q-learning中,无论是state的数量还是action的数量都没法做到很大,而DQN利用神经网络取代了Q-learning中的Q表从而解决了第一个问题:state数量的限制,这是一个novel 的ideal,2013年第一篇论文问世,随之在2015年nature刊登。 先给出一个算法框图,源自一位班级同学: 要是觉得上面这个同学的图过于眼花缭乱,看下 阅读详情

相关推荐

深度强化学习 | 图文详细推导深度确定性策略梯度DDPG算法

本文系统解析了演员-评论家(Actor-Critic)架构的双网络设计原理:其中Actor网络负责输出确定性动作策略,Critic网络评估动作价值,二者协同优化;接着讲解了基于AC架构的深度确定性策略梯度DDPG算法,提供了网络架构图和算法流程图加深理解

FRIGIDWINTER的博客 3878

深度强化学习(DRL)

DRL形成背景 深度强化学习(Deep Reinforcement Learning)顾名思义,是深度学习与强化学习的结合,因此深度强化学习弥补了DL和RL的不足之处。 深度学习最近火热,大家也都有所了解,就是通过多层网络和非线性变换,去学习数据的分布式特征表示,因此深度学习侧重于对事物的感知和表达。 而强化学习,了解的同学都知道,通过奖惩机制去挖掘最优策略,因此它侧重于学习解决问题的策略。...

coder_Gray的博客 1万+

深度强化学习的优化策略与技巧

1.背景介绍 深度强化学习(Deep Reinforcement Learning, DRL)是一种智能化的学习方法,它结合了强化学习(Reinforcement Learning, RL)和深度学习(Deep Learning, DL)两个领域的优点,以解决复杂的决策和控制问题。在过去的几年里,DRL已经取得了显著的成果,如AlphaGo、Alpha

AI天才研究院 1054

【DRL】深度强化学习介绍

深度强化学习本文介绍:[Python] 深度Q网络(DQN)实现[Python] REINFORCE算法实现[Results] 运行结果随着深度学习的迅猛发展,深度强化学习(Deep Reinforcement Learning, DRL)将深度学习与强化学习相结合,使得处理高维状态空间成为可能。

博主关注人工智能、强化学习、嵌入式等||985高校A+学科研究生、猿龄六年||优快云博客专家、2024年博客之星TOP33、华为云享专家、人工智能领域优质创作者。 4847

深度强化学习 | 详细推导随机/确定性策略梯度定理

本文详细推导随机性策略梯度定理和确定性策略梯度定理,为后续基于策略的深度强化学习算法设计奠定理论基础

FRIGIDWINTER的博客 3293

【深度学习常用算法】十、深度强化学习之策略梯度方法:从理论到PPO算法的全面解析

摘要:本文系统阐述了深度强化学习中策略梯度方法的核心原理及其代表算法PPO(近端策略优化)的技术细节。作为直接优化策略函数的强化学习方法,策略梯度特别适合处理连续动作空间问题,在自动驾驶决策、机械臂控制等领域具有广泛应用。文中详细解析了策略梯度定理、重要性采样、信任区域优化等关键技术,通过PyTorch实现完整的PPO算法,并在Mujoco物理仿真环境和真实机械臂平台上验证有效性。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1498

【深度强化学习 DRL 快速实践】深度确定性策略梯度算法 (DDPG)

DDPG 快速实践:model-free, off policy, actor-critic, deterministic 策略

哒哒哒哒 哒哒 1302

kettle多表数据迁移

点击 文件——新建——作业,在左侧的 核心对象 标签下选择 通用,双击添加一个 start ,一个 转换 ,一个 作业 和一个 成功 到右侧的作业面板,这些作业项都可以改名字。点击文件—新建—转换,在左侧的 核心对象 标签下选择 输入 下的 表输入,双击添加到右侧的转换面板,再选择 作业 下的 复制记录到结果 ,双击添加到右侧的转换面板。新建转换,在左侧的 核心对象 标签下选择 作业 下的 从结果获取记录,双击添加到右侧的转换面板,再选择 作业 下的 设置变量 ,双击添加到右侧的转换面板。

u014061745的博客 1342

DRL策略梯度

深度强化学习——策略梯度

weixin_42230458的博客 1682

Overleaf+EndNote+BibTeX:手把手搞定Elsevier期刊投稿的参考文献格式(避坑指南)

本文详细介绍了如何利用Overleaf、EndNote和BibTeX三大工具无缝协作,解决Elsevier期刊投稿中的参考文献格式问题。从工具链配置、文献库导出、BibTeX文件优化到Overleaf集成与编译,提供全流程指南和常见问题解决方案,帮助学术新手高效完成Elsevier期刊投稿。

weixin_30616969的博客 512

断点回归(regression discontinuity design)学习笔记

本篇博文主要是对断点回归的一些学习和总结~ 学习材料如下: 1 断点回归设计RDD分类与操作案例 2 RDD断点回归, Stata程序百科全书式的宝典 3 断点回归设计的前沿研究现状, RDD 4 让“跳跃”更有意义:断点回归设计(RDD) 5 Stata: 断点回归 (RDD) 教程 6 怎么用通俗的语言解释断点回归?它与DID的区别是什么 7 Watering Down Environmental Regulation in China,Guojun He, Shaoda Wang, Bing Zhan

Claire_chen_jia的博客 9万+

深度强化学习DRL——策略学习

策略学习是通过求解一个优化问题,学出最优策略函数或者它的近似函数(比如策略网络)

2301_79815102的博客 1367

HIDL概述

HIDL背景 Treble 是 Google Android 团队的一项重大项目,意在 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。Android 7.x 及更早版本中没有正式的供应商接口,因此设备制造商必须更新大量 Android 代码才能将设备更新到新版 Android 系统: 图1 Treble ...

u013357557的专栏 2万+

深度强化学习(Deep Reinforcement Learning, DRL)的学习路线参考

了解这些算法的原理和训练过程,并掌握重要的技巧,如经验回放(memory replay)、目标网络(target network)等。深度强化学习(Deep Reinforcement Learning, DRL)是一个结合了深度学习和强化学习的研究领域,它在许多复杂和高维度的任务中展现出了强大的能力,比如游戏、机器人控制等。探索与利用的平衡:了解强化学习中的探索与利用的平衡问题,包括ε-greedy策略、Softmax策略、UCB算法等。了解它们的定义和优化目标,并了解如何选择适合任务的损失函数。

lhyyds的博客 2967

实测对比:DECIMER、Img2Mol、MolScribe,哪个化学结构识别工具更靠谱?

化学结构识别(CSR)工具的核心任务是将分子结构图像转换为SMILES(Simplified Molecular Input Line Entry System)表示。这一过程需要克服图像质量差异、绘制风格变化以及特殊基团识别等挑战。三款工具采用不同的技术路线:DECIMER:基于EfficientNetV2+Transformer架构,优势在于处理标准期刊文献中的分子图示Img2Mol。

weixin_32576389的博客 346

从MCU到MPU:瑞萨RZN2L上手初体验,给Cortex-M工程师的Cortex-R52入门避坑指南

本文详细介绍了从MCU到MPU的过渡经验,特别是瑞萨RZN2L开发板的实战避坑指南。针对Cortex-M工程师转向Cortex-R52内核的挑战,文章深入解析了启动流程、内存管理、中断响应等九大本质差异,并提供了硬件设计陷阱和软件迁移的实用技巧,帮助开发者快速适应MPU开发环境。

weixin_29158413的博客 258

深度强化学习算法综述:从基础到最前沿

1.背景介绍 深度强化学习(Deep Reinforcement Learning,DRL)是一种结合了深度学习和强化学习的人工智能技术,它可以让计算机系统通过与环境进行交互来学习如何做出最佳决策。深度强化学习的核心思想是利用神经网络来表示状态值函数(Value Function)和策略(Policy),从而实现自主学习和优化。 深度强化学习的应用范围广泛,包括游戏AI、自动驾驶、机器人控制、...

AI天才研究院 7003

Python学习第32天:Web前端入门

本文介绍了Web前端开发三大核心技术:HTML、CSS和JavaScript。首先概述了HTML的发展历程和HTML5新特性,详细讲解了常用HTML标签如文本、列表、链接、图像、表格、表单等。其次介绍了CSS的基础语法、选择器、颜色字体设置、盒子模型和布局定位方法。最后简要提及JavaScript为网页添加交互功能的作用。文章为Python开发者提供了前端技术的基础知识,帮助理解网页的结构、样式和行为实现原理。

tigerhhzz的博客 1911

深度强化学习算法(五)(附带MATLAB程序)

我们首先定义一个目标函数,它表示在当前策略下的期望累计奖励。假设我们的目标是最大化从状态分布中采样的累计奖励。目标函数可以表示为:其中R 是累积奖励,是给定参数的策略函数% 环境的网格尺寸% 目标位置% 移动% 上% 下% 左% 右end% 确保状态在环境范围内% 奖励和完成标志reward = 1;else% 小的负奖励以鼓励较短路径endend策略梯度方法的推导过程涵盖了如何通过直接对策略函数进行优化来提高累积奖励。

qq_35623594的博客 2278

【HAL库】STM32CubeMX开发----STM32F407----ETH+LAN8720A+LWIP----ping通

本次实验以芯片为MCU,使用25MHz外部时钟源。以太网PHY层芯片为LAN8720A,由MCU引脚PA8提供时钟。

MQ0522的博客 4843

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

深度强化学习的优化技巧与实践

1.背景介绍 深度强化学习(Deep Reinforcement Learning, DRL)是一种人工智能技术,它结合了深度学习和强化学习两个领域的优点,以解决复杂的决策问题。在过去的几年里,DRL已经取得了显著的成果,如AlphaGo、AlphaZero等。然而,DRL的实际应用仍然面临着许多挑战,如算法效率、探索与利用平衡等。 本文将介绍深度强化学习的优化技巧与实践,旨在帮助读者更好地理...

AI天才研究院 1294

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Deep Reinforcement Learning DRL深度强化学习入门知识笔记

我记录了自己在学习强化学习的过程中的学习进展、相关知识点的笔记以及个人的理解。这些内容可能不完全是专业的解释,但我相信它们对大家掌握深度强化学习会有所帮助。另外,我手写了一些证明过程,虽然字迹不太美观,还请大家多多包涵。学习视频详情见王树森老师:也可参照赵世钰老师:【一张图讲完强化学习原理】 30分钟了解强化学习名词脉络 (youtube.com)这两位老师的讲解都非常出色。记得使用目录来查阅内容。这些资料非常详细、全面,不仅适合预习,还可以作为今后的参考。

WeichengDu的博客 2395

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

深度强化学习的探索与利用平衡策略

1.背景介绍 深度强化学习(Deep Reinforcement Learning, DRL)是一种人工智能技术,它结合了深度学习和强化学习两个领域的优点,以解决复杂的决策问题。在过去的几年里,DRL已经取得了显著的成果,如AlphaGo、AlphaZero等。然而,DRL仍然面临着许多挑战,如探索与利用的平衡、过度探索、不稳定的学习等。在这篇文章中,我们将探讨深度强化学习的探索与利用平衡策略,...

AI天才研究院 1104

【强化学习-Mode-Free DRL】深度强化学习如何选择合适的算法?DQN、DDPG、A3C等经典算法&Mode-Free DRL算法的四个核心改进方向

【强化学习-DRL】深度强化学习如何选择合适的算法?

weixin_46234454的博客 1282

深度强化学习的实践案例:成功经验与分析

1.背景介绍 深度强化学习(Deep Reinforcement Learning, DRL)是一种融合了深度学习和强化学习的人工智能技术,它具有很高的潜力,已经在许多领域取得了显著的成果,例如人工智能(AI)、机器学习(ML)、计算机视觉(CV)、自然语言处理(NLP)、机器人控制等。DRL的核心思想是通过智能体与环境之间的互动来学习行为策略,以最大化累积奖励。 在本文中,我们将从以下六个方...

AI天才研究院 1899

深度强化学习的优化方法:从算法到实践

1.背景介绍 深度强化学习(Deep Reinforcement Learning, DRL)是一种人工智能技术,它结合了深度学习和强化学习两个领域的优点,以解决复杂的决策和控制问题。在过去的几年里,DRL已经取得了显著的成果,例如在游戏(如Go和StarCraft II)、机器人控制、自动驾驶、语音识别等方面的应用。然而,DRL的优化方法仍然是一个活跃的研究领域,因为它们对于实际应用的性能和效...

AI天才研究院 1087
上一篇: 【深度强化学习 DRL 快速实践】深度确定性策略梯度算法 (DDPG)
下一篇: 【深度强化学习 DRL 快速实践】Value-based 方法总结
CODE_RabbitV
博客等级 码龄7年 2930粉丝 218原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值