DQN学习整理

前言:如果你需要学习概念学习细节,那么这篇文章不适合你阅读。我写这篇博客只为了记录自己学习的过程以及反思,写给自己看的。最近因为比赛接触到DQN,学习过程中遇到很多问题,主要是通过查资料与重复理解的方法进行攻克。到现在我也只能说自己对这方面有所了解,但还是不够精通,同时也意识到自己在代码能力方面还是有很大的提升空间。从最开始连pycharm都没有用过,python语言也不太了解的情况下,入手尝试去做这个项目,相比于最开始还是有些进步的,只是想对于我们组的大佬深感自己效率不高。以下是自己这段时间的收获。

DQN入手

  • DQN工程化
    • DQN算法流程
    • 模块划分
  • pycharm小白使用技巧
  • 个人感悟
    • 写代码经验积累

DQN工程化

DQN是从Q-learning改进过来的,将Q-Table换成一个函数,再引入神经网络,于是深度强化学习的方法DQN就诞生了!最开始从马尔科夫决策过程(MDP)到贝尔曼方程,文字资料与视频资料均上手进行学习,包括各个变量比如Q的定义,如何算出来的,和V有什么区别等等,但这只是前期的概念积累,要真正解决问题还是需要钻研算法流程。

DQN算法流程

DQN学习整理_第1张图片DQN学习整理_第2张图片研究透流程之后,应当做到自己按照自己的理解去写代码模块,网上有很多DQN代码可以借用,按照自己的逻辑去码就可以。

模块划分

大致可以分成1.环境env.py 2.DqnCore.py 3.运用place.py
其中环境部分主要功能是:1.产生初始状态 2.状态与环境进行交互产生数据;DqnCore主要功能是声明DQN类并定义各种过程函数,方便后面调用 3.利用训练好的DQN网络完成实际任务。

pycharm小白使用技巧

文件内检索:
Ctrl + F
文件内替换
Ctrl + R
项目内查找
Shift + Shift
属性、类、方法显示
Ctrl + F12
Alt + 7
这些快捷键用的最多的是Ctrl + F,以及Ctrl 加鼠标左键查看功能

个人感悟

写代码经验积累

1.不要上来就深究各种概念,妄图一点细节都不差地去理解数学家们经过这么多年的研究搞出来的东西,你没那么优秀能做到完美!
2.不要深究的话,很多东西不理解怎么办?你应该要注意自己脑子里不多的理解力资源应该放在什么位置?运用一个算法需要你理解什么?理解算法流程呀!理解这个算法的接口,比如说环境怎么去写,怎样通过分析项目需求去将别人的DQN解耦,从而运用到自己的项目里。而这部分绝对是整个项目代码的核心要解决的问题,需要你的逻辑分析能力和基础的代码能力。这方面才是真正需要锻炼提升的地方。
3.学一个东西,先学三遍再说,不要一上来不容易理解就开始怀疑自己,将注意力资源浪费在其他的地方,要想花少的时间做事情,就要珍惜自己的注意力资源。

你可能感兴趣的:(学习,python,开发语言)