KL Divergence and JS Divergence
KL散度定义假设有两个概率分布 和 ,他们对应的概率密度分别为 和 如果想要用 去近似 则这其中的 KL 散度为:
hint 注意KL散度不具有对称性
在离散的情况下面,可以写成:
理解将KL散度展开成两项,有:
Hint:为什么最后不是反过来的因为 H(P,Q)自带一个负号
第一项是交叉熵,代表用 去编码 需要的编码长度,所以KL散度可以理解为用Q拟合P比直接使用P需要多用多少信息
JS散度由于KL散度具有不对称性,这里提出JS散度
定义首先设 则如果全部展开,这个式子是:
GAIL
最大熵逆强化学习的另一种写法这里给出IRL的另一种表述形式,即:这其中的 表示策略 的熵
Hint:中间的 部分可以理解为首先是在确定 的情况下面选择一个策略让 的熵是最大的,然后在这个情况下算出 再真实的专家策略获得的奖励做比较
在学出来这个 之后,再学习出最优策略 的过程是
关于这个式子怎么推导最佳的策略,请看文章 Maximum Entropy Inverse Reinforcement Learning
GAIL如果这里的数据量比较小,就会导致过拟合,所以考虑加上一个对于奖励函数 的正则项,即 ,把这个式子变成:
那么这样重建出来的就是及满足了熵正则又不会过拟合
怎么解上面的式子考虑定义一个occupancy measure 为:可以认为这个是策略 下面出现行为-状态对 的概率密度
如果有了这个重建的策略定义为:
经过一通算可以发现,这里最后的优化目标就是找到而带入 occupancy measure 可以把上面的式子改成而这恰好是拉格朗日对偶函数
正则化器的定义首先定义
然后定义正则化器为:对于给专家数据状态-动作对赋予较⼤负代价的代价函数,该 ...
Maximum Entropy Inverse Reinforcement Learning 论文阅读
背景知识熵信息熵的定义是其含义是含有信息的多少
符号定义轨迹这里定义轨迹是一组决策中所经过的状态、选择的动作的集合
专家示例定义专家的示例(expert demonstrarion)为
表示遵从专家策略选择的一组轨迹
对于价值函数的表示这篇论文认为,价值函数可以相对每个状态的特征进行线性表示,即对于任意一个状态 都可以找到一个 维的向量 来表征其特征,而对于所有状态,可以用一个共享的k维参数向量 表示,即:
重建的价值函数定义重建的价值函数为:表示在某条轨迹下面,所获取的所有价值函数的总和
在前一个假设下,可以写作:
最大熵方法Partition Function(分区函数)定义即对所有轨迹下的所获得的价值函数之和的指数进行求和(连续的情况下就是积分)
MaxEnt Formulation在定义的情况下,最大化
来自知乎的解释参考文献:最大熵逆强化学习(Maximum Entropy Inverse Reinforcement Learning)公式推导与疑惑 - 知乎 (zhihu.com)
最大熵学习的追求是要求以 为Reward函数参数时,轨迹概率分布的信息熵最大。那么 ...
How to Install cmake-3.30
到官网查看对应的包并下载解压官网网址是https://cmake.org/files/ 在这个网址下面找到你想要安装的cmake版本,本文以 v3.30/cmake-3.30.0.tar.gz 为例
注意,这里要找的是形如cmake-X.XX.X.tar.gz 的包,而不是各种带了linux的版本
找一个你喜欢的地方,使用命令
1wget https://cmake.org/files/v3.30/cmake-3.30.0.tar.gz
下载压缩包,并使用命令
1sudo tar -zxvf cmake-3.30.0.tar.gz
进行解压
开始安装使用 ./configure 配置进入对应目录
1cd cmake-3.30.0
然后运行命令
1sudo ./configure
错误排查:如果你发现这里找不到 ./configure 说明你下载的包不对,你可能下载了带linux后缀的各种包
开始配置,如果遇到报错 Could NOT find OpenSSL 使用命令
1sudo apt install libssl-dev
安装libssl 并重新运行
1sudo ./c ...
Transformer
概述Transformer是一种基于attention的 seq2seq 模型,即根据输入的开头,生成预测的后续输出。
参考文章/视频链接直观解释注意力机制,Transformer的核心 | 深度学习第6章[1706.03762] Attention Is All You Need (arxiv.org)
模型总体结构Transformer的模型总体采用的是一个 encoder-decoder 的结构,其结构图如下:
正则表达式(regular expression)
正则表达式概述正则表达式是用于匹配字符串的一种表达式,他可以精确描述某种字符串的特征用一匹配和提取
字符单个字符可以用单个的字符表示正则表达式必须匹配一个字符,例如,使用 abc 作为正则表达式,那么会提取所有的含有 abc 的部分,包括某个单次中含有 abc 这个片段,例如 abcdef 中的 abc 也会被匹配。
字符集合字符的集合用 [] 中括号包裹,表示这个位置上面可能有[] 中的某个字符,例如 ab[cde] 就可以匹配 abc\abd\abe 但不会匹配 abf 在这个里面,可以使用例如 [0-9] 表示匹配 0 到 9 中的任意一个字符。
如果要表示取反,可以在括号里面加上一个 ^ 例如 [^A-Z] 表示这里匹配一个除了大写字母之外的字符
其他元字符通配符这里的单个的通配符是 . 在没有其他符号包裹的情况下,. 可以匹配任意一个字符。
数字集合数字可以简写为 \d 是digit的缩写
边界字符
\b 表示单词的边界,例如 \babc\b 就只会匹配 abc 这个独立的单词,而 abcd 或 aabc 则不会被匹配
\B 表示非单词的边界,与上面相反
\w 表示任意单词字 ...
Binary Index Tree(树状数组)
概述树状数组是支持 复杂度的维护和 的查询的数据结构,其本质是二叉树去掉了包含重复信息的节点而成的,即只保留了以下标为根的子树的所有信息,即 tree[n]保留以节点n为根的子树的和,形状如图:
前置知识——lowbit的计算对于一个数的二进制,例如 那么想要获得其最后的0的个数,可以利用补码的机制进行计算,即
1234int lowbit(int x){ return x & (-x);}
这是由于,在计算机中,对于一个整形取相反数,就是各位取反然后末尾加1,那么末尾所有的0在取反的时候都会变成1,再+1之后,只有最后一个不是0的位会变成1,其余位都是0,而从最低有效位开始的第一个1之前的所有位都只会进行取反,而第二步+1的进位都影响不到,所以在按位与运算的时候都会变成0,只有第一个1的位置上面保留了1
关于树状数组结构的观察观察上面那棵树的结构可以发现,每个节点下标的末尾有几个0就代表这个节点在第几层,例如1和3的末尾没有0所以在第0层,而8的二进制是1000末尾有三个0所以在第三层,那么可以知道,对于节点下标为的节点,包含了到这个区间的数的和 。而对于节点 它的 ...
PMM实验报告
PMM部分总体思路PMM部分我选择的是一个 allocator 和一个类 slab 组成的。在分配一个大小为 的内存的时候,首先去查找管理大小 的 slab 中有无空闲的对象,如果有,则直接利用这个对象进行分配,如果没有,这个 slab 就会向 allocator 申请一个或多个页,然后利用这些页来生成对应的对象,分配给 kalloc 接口。
在归还的时候,同样是首先查询整个分配表,查询到分配记录,然后根据分配记录,把这个指针交给对应大小的 slab , slab 会把这个指针还给分配它的页。如果这一页的所有分配都被归还了,那么就把这一整页还给 allocator ,并交由 allocator 归还到堆区。
分配逻辑小内存分配的逻辑小内存分配的时候,首先会向对应的 slab 申请分配,下面以 2B 大小的空间申请为例进行介绍。首先,2B-slab 会检查自己名下有没有空闲的页,如果所有的页都被分配出去了,那么就会向 allocator 申请一个新的页,并且把第一个 Byte 分配给这个申请,并且在自己的bitmap里面进行标记。如果当前页仍有空闲,那么就会查找bitmap,找到第一 ...
如何优雅地使用LaTeX(LaTeX分段编译技巧)
前言众所周知,在使用Overleaf编写LaTeX的时候,免费版的编译速度和时间限制非常让人不爽,如果想用Beamer做PPT做不了两页就会出现超时,那么有没有办法能够优雅地编写超长文本呢?
答案是有的,本文提供一种通过分段的方式实现分块编译,并且每次可以只编译你正在写的部分,节约免费编译时间提高编译速度的方法。
LaTeX分段编译API简介最简单的LaTeX分段编译API就是 \include{xxx.tex} 和 \input{xxx.tex} 这两个命令,他们的区别引用一段GPT4 的回答:
在 LaTeX 中,\include{}、\input{} 和 \includeonly{} 是用来管理和组织大型文档的三个非常有用的命令。它们各自有不同的特点和用途:
\input{filename}
用途: \input{} 命令用于将指定文件的内容在当前位置直接插入。它适合用于引入格式设置、自定义命令、较短的文本片段等。
特点: \input{} 不会启动新的一页,它就像是把被引入文件的内容直接复制到 \input{} 命令的位置一样。你可以在文档的任何地方使用 \input{} ...
关于AI的思考
我认为人工智能技术的普及带来的最主要的影响就是生产力的更新换代。首先先回顾一下历史上的历代的工业革命。第一次工业革命由纺纱机的发明开启。机械首次进入人们的视野中。机械带来了纺织业生产力的极大提升,因此让人类社会步入了新的阶段。而第二次的科技革命和电气革命以及第三次的信息革命,同样也是由新的科技带来生产力质的飞跃,从而促成人类社会的进步。而现在,AI显然就是下一个带来生产力革命的技术。
这里我主要谈谈在经济领域AI带来的影响。
在经济领域,AI正逐渐成为增长的重要驱动力。通过自动化和优化工作流程,AI帮助企业提高效率、降低成本,并创造新的商业模式。例如,AI算法能够分析消费者行为,预测市场趋势,从而帮助企业制定更有效的市场策略。最典型的例子,就是现在抖音的推荐算法。抖音的推荐算法基于强化学习框架,能够根据用户的浏览记录,精确推送相关内容,并且能够引导用户关注它想要推荐的带货产品。现在抖音的推荐算法已经列入我国不可出口清单,可见其含金量。这种推荐算法极大地提高了抖音带货的浏览量和热度,助力现在的网红经济发展。
此外,机器学习技术也在金融服务领域大放异彩,它能进行复杂的数据分析,提供精准的信 ...