Blog

Fari

技术、阅读与日常记录。

正梯度仍然使得policy的probability增大

现象 使用policy gradient算法写了一个小模型,训练过程中发现模型很快会收敛到一个非常糟糕的结果,理论上不应该呀,因为按照policy gradient算法原理来说,对于某个action,如果你给了负的reward,那么模型会减小该action出现的概率,但我的实验表明,模型不仅没减小该action的概率,甚至还会增加它的概率,最终它的概率甚至会 …

Adam优化器

优化器的进化 训练一个policy gradient模型时,发现如果使用SGD,模型练不起来,很容易就出问题,而使用Adam则会好很多,这里回顾一下Adam的原理: 梯度下降法的梯度迭代公式为: $$ θ_t ← θ_{t-1} - μg_t $$其中 \( g_t \) 为t时刻函数对θ的偏导,μ为学习率。 如此一来,在模型训练时就需要指定μ这个超参数,且 …

Policy gradient中为什么必须给概率取log?

注意:这篇文章没有解释原因,只是探索了一个相似方法 一般认为是可以用来简化计算的,log可以将原本的累乘转换为累加,例如 a*b*c 总体加上一个log就可以转换为 loga+logb+logc,当然,能总体加log是因为log保留的原来函数的单调方向,转成加法还有个好处就是一定程度上可以防止梯度消失或爆炸,因为连乘很容易为0或无穷 使用最朴素的policy …

Policy gradient 与 e-greedy

在训练qlearning网络时,通常会设置一定的概率去做一些探索,以求能做出更好的决策。而在Policy gradient中,也是需要探索的,但是它会有一些问题 我写了一个MLP来作为policy,在训练过程中,每次做决策都使用 argmax 来寻找当前模型认为最好的action,模型不会收敛,想想它当然是不会收敛的,因为policy gradient训练模 …

gym实时渲染模型训练效果

深度强化学习模型在训练玩游戏时,不渲染游戏画面可以大大加快训练速度 # 将 render_mode 设置为 None 就不会渲染游戏,设置为 "human" 就会以图像帧的形式渲染 # 注:老版本需要调用 render 方法才会渲染,新版本会在调用 reset 方法时就自动渲染 env = gymnasium.make("CartPole-v1", …

随机到之前不会的题

刚才刷leetcode时候随机了一题,发现这道题我竟然点过赞,并且加入了收藏 我想这应该是我很久之前刷过的一题,没有提交记录,当时应该没做出来,并且应该看过了其他人的解决方案还是没做出来的那种,觉得方法很巧妙也很common,所以才点赞加收藏,希望下次能做出来。 我有理由相信我当时应该花了很长时间来做这道题,甚至几个小时,因为那时我做一题基本是按小时计时的, …

深度强化学习简介

这是一篇深度强化学习视频的笔记 https://www.bilibili.com/video/BV1XP4y1d7Bk 什么是强化学习 强化学习方法分为三类:Policy-based(训练一个actor,例如 policy gradient)、Value-based(训练一个critic,例如 Q-learning)、Actor-Critic 所谓的 …

Shortest Path in Binary Matrix

https://leetcode.com/problems/shortest-path-in-binary-matrix/ 以下为我的思考过程: 我首先想到能否使用动态规划解题,因为,假设要求解的坐标为(i,j),那么我只需要知道其邻域八个坐标的解,即对于给定任意grid中的坐标,如果该坐标值为0,则我只需使用 1+min(邻域坐标最短路径)即可求解。但细想 …

Content-Type: multipart/form-data

什么是 Content-Type 头 在http响应头或请求头中会看到一个名为Content-Type的头信息,它表示的就是文档的类型信息(Multipurpose Internet Mail Extensions or MIME type 即 MIME type) 一个url其实就是一个远程文件的地址,通常一个文件可以通过后缀名来区分文件类型,但是浏览器通 …

异或产生的思考

刚才做一道算法题,觉得它的解很有启发性,题目是:给定一个int数组,数组只有一个数字只出现了一次,其他都是成对出现的,数组是乱序的,请找出这个数字 https://leetcode.com/problems/single-number/description/。 题目很简单,我的做法是先排序,然后再遍历入栈,若栈顶元素与当前元素相同则出栈,最后栈中剩余的那个 …