基于浅层神经网络(全连接网络)的强化学习算法(Reinforce) 在训练过程中出现梯度衰退(degenerate)的现象
首先给出一个代码地址:
https://gitee.com/devilmaycry812839668/CartPole-PolicyNetwork
强化学习中的策略网络算法。《TensorFlow实战》一书中强化学习部分的策略网络算法,仿真环境为gym的CartPole,本项目是对原书代码进行了部分重构,并加入了些中文注释,同时给出了30次试验的运行结果。
=======================================
可以看到,上面的代码是比较简单的Reinforce算法,其中策略函数使用浅层的三层神经网络(全连接),激活函数使用Relu,进行了30次试验,每次试验进行了10000 个episodes的训练,但是神奇的发现这30次试验中居然第5次试验,第21次试验出现了严重的梯度衰退的想象。
给出梯度衰退时部分训练结果:
Average reward for episode 1375 : 200.000000.
Average reward for episode 1400 : 200.000000.
Average reward for episode 1425 : 200.000000.
Average reward for episode 1450 : 200.000000.
Average reward for episode 1475 : 200.000000.
Average reward for episode 1500 : 200.000000.
Average reward for episode 1525 : 200.000000.
Average reward for episode 1550 : 192.480000.
Average reward for episode 1575 : 140.440000.
Average reward for episode 1600 : 104.240000.
Average reward for episode 1625 : 20.080000.
Average reward for episode 1650 : 12.560000.
Average reward for episode 1675 : 10.720000.
Average reward for episode 1700 : 11.080000.
Average reward for episode 1725 : 12.000000.
Average reward for episode 1750 : 10.560000.
Average reward for episode 1775 : 11.040000.
Average reward for episode 1800 : 10.360000.
Average reward for episode 1825 : 10.080000.
Average reward for episode 1850 : 10.640000.
Average reward for episode 1875 : 10.360000.
Average reward for episode 1900 : 10.360000.
Average reward for episode 1925 : 10.480000.
Average reward for episode 1950 : 10.360000.
Average reward for episode 1975 : 9.680000.
Average reward for episode 2000 : 10.000000.
Average reward for episode 2025 : 10.720000.
Average reward for episode 2050 : 10.000000.
Average reward for episode 2075 : 10.000000.
Average reward for episode 2100 : 10.520000.
Average reward for episode 2125 : 10.640000.
Average reward for episode 2150 : 9.760000.
Average reward for episode 2175 : 11.040000.
可以看到在第5次和第21次试验中当训练到一定episodes后训练结果下降到极坏的水平(远低于随机策略的结果,随机策略结果应该在26左右),因此我们可以发现这时的训练已经发生了梯度衰退问题,degenerate问题。以前一直以为衰退问题只会出现在深层网络中,没有想到在浅层网络中也发现了衰退现象。
查阅相关论文《Skip connections eliminate signulairites》 发现浅层网络也是会出现衰退现象的,解答了自己的疑问,原来浅层神经网络也是可能会出现衰退问题的。
基于浅层神经网络(全连接网络)的强化学习算法(Reinforce) 在训练过程中出现梯度衰退(degenerate)的现象的更多相关文章
- Andrew Ng - 深度学习工程师 - Part 1. 神经网络和深度学习(Week 3. 浅层神经网络)
=================第3周 浅层神经网络=============== ===3..1 神经网络概览=== ===3.2 神经网络表示=== ===3.3 计算神经网络的输出== ...
- 吴恩达《深度学习》-第一门课 (Neural Networks and Deep Learning)-第三周:浅层神经网络(Shallow neural networks) -课程笔记
第三周:浅层神经网络(Shallow neural networks) 3.1 神经网络概述(Neural Network Overview) 使用符号$ ^{[
- deeplearning.ai 神经网络和深度学习 week3 浅层神经网络 听课笔记
1. 第i层网络 Z[i] = W[i]A[i-1] + B[i],A[i] = f[i](Z[i]). 其中, W[i]形状是n[i]*n[i-1],n[i]是第i层神经元的数量: A[i-1]是第 ...
- 基于MNIST数据集使用TensorFlow训练一个没有隐含层的浅层神经网络
基础 在参考①中我们详细介绍了没有隐含层的神经网络结构,该神经网络只有输入层和输出层,并且输入层和输出层是通过全连接方式进行连接的.具体结构如下: 我们用此网络结构基于MNIST数据集(参考②)进行训 ...
- deeplearning.ai 神经网络和深度学习 week3 浅层神经网络
1. 第i层网络 Z[i] = W[i]A[i-1] + B[i],A[i] = f[i](Z[i]). 其中, W[i]形状是n[i]*n[i-1],n[i]是第i层神经元的数量: A[i-1]是第 ...
- 伯克利、OpenAI等提出基于模型的元策略优化强化学习
基于模型的强化学习方法数据效率高,前景可观.本文提出了一种基于模型的元策略强化学习方法,实践证明,该方法比以前基于模型的方法更能够应对模型缺陷,还能取得与无模型方法相近的性能. 引言 强化学习领域近期 ...
- tensorFlow(四)浅层神经网络
tensorFlow见基础 实验 MNIST数据集介绍 MNIST是一个手写阿拉伯数字的数据集. 其中包含有60000个已经标注了的训练集,还有10000个用于测试的测试集. 本次实验的任务就是通过手 ...
- Tensorflow MNIST浅层神经网络的解释和答复
本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/51416540 看到之前的一篇博文:深入 ...
- 一文读懂 深度强化学习算法 A3C (Actor-Critic Algorithm)
一文读懂 深度强化学习算法 A3C (Actor-Critic Algorithm) 2017-12-25 16:29:19 对于 A3C 算法感觉自己总是一知半解,现将其梳理一下,记录在此,也 ...
- 从有约束条件下的凸优化角度思考神经网络训练过程中的L2正则化
从有约束条件下的凸优化角度思考神经网络训练过程中的L2正则化 神经网络在训练过程中,为应对过拟合问题,可以采用正则化方法(regularization),一种常用的正则化方法是L2正则化. 神经网络中 ...
随机推荐
- 用 Easysearch 帮助大型车企降本增效
最近某头部汽车集团需要针对当前 ES 集群进行优化,背景如下: ES 用于支撑包括核心营销系统.管理支持系统.财务类.IT 基础设施类.研发.自动驾驶等多个重要应用,合计超 50 余套集群,累计数据超 ...
- 通过JS来触发<a>链接来实现图片下载
function downloadImg(){ var url = '实际情况的图片URL'; // 获取图片地址 var a = document.createElement('a'); // 创建 ...
- Ansible-playbook剧本进阶
剧本高级特性篇 循环 在写 playbook 的时候发现了很多 task 都要重复引用某个相同的模块,比如一次启动10个服务,或者一次拷贝10个文件,如果按照传统的写法最少要写10次,这样会显得 pl ...
- CentOS7学习笔记(四) 系统运行级别
什么是运行级别 在CentOS系统中包含七种运行级别,例如命令行或图形化界面就是最常用的运行级别 运行级别的两种表示方式及作用 运行级别 运行级别 作用说明 0 poweroff.target 关机 ...
- iOS:长图切割并转为动画gif——精灵表单sprite Sheet的转化
iOS:长图切割并转为动画gif--精灵表单sprite Sheet的转化 通常的,iOS显示gif可以将文件转为NSData后再对其进行解析,通过CADisplayLink逐帧进行提取.播放,判断N ...
- 带有ttl的Lru在Rust中的实现及源码解析
TTL是Time To Live的缩写,通常意味着元素的生存时间是多长. 应用场景 数据库:在redis中我们最常见的就是缓存我们的数据元素,但是我们又不想其保留太长的时间,因为数据时间越长污染的可能 ...
- 《最新出炉》系列入门篇-Python+Playwright自动化测试-52- 字符串操作 - 下篇
1.简介 在日常的自动化测试工作中进行断言的时候,我们可能经常遇到的场景.从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言.这个时候就需要我们对字符串进行操作,宏哥 ...
- UBI 文件系统的支持 与 有关文件系统的image的制作
背景 UBI文件系统是一种较新类型的文件系统. 内核支持 Symbol: MTD_UBI [=y] Type : tristate Prompt: Enable UBI - Unsorted bloc ...
- python爬虫-xpath基础
# 准备一个html格式文档 doc = ''' <div> <ul> <li class="item-0"><a href=" ...
- 【Python】python笔记:时间模块/时间函数
1.Python时间模块 import time import datetime # 一: time模块 ############## # 1.时间戳 print (time.time()) # 16 ...