memoscan
← all memos

Memo 0x396d83bf…bdfa4f on Ethereum

这是一篇学习熵和思考一大堆相关内容的杂乱笔记。我今天太困了,所以先乱写一通,很可能存在错误,之后有空了会继续修改,把我乱想的废话删掉。之前提到信源编码的最优压缩问题和推理的最优压缩问题是一样的吗?或者说是否有值得借鉴之处呢?算法,或者推理的本质是基于推理规则应用某个公理或者定理,公理定理和推理规则又可以用某种字符串来表示,那么整本书籍都可以看作字符串,但是目标确实也不大一样,推理要求我们使用已有公理,能够在未来解决更多有意义的问题。一个压缩编码方式,是否可以对应一个公理规则和推理规则呢?可能是可以对应的。具体而言,推理的时候应用了某个字符串获得一个计算结果,而查表解压缩的过程也一样......也许是完全可以对应起来的。但是即使如此,如果存在无穷无尽的潜在的数学理论,把数学理论最优压缩了就是最优质的数学书了?并非如此,如加法理论上可以推出乘法,但这并不代表背9*9乘法表没有现实意义了。不过,随着内容的变长,最优压缩表也会变。算法复杂度更重要。考虑假设已知存在某个囊括了所有数学理论的完全书籍作为压缩目标,压缩后,解压出来的数学理论,很多也是不那么重要但是却存在的,比如100+1 = 101,作为一个具体的整数运算定理。完全可以用“末尾是0的数,如果不是9,加一则直接尾数加一,若是9,变成0,再进位”来替代。这个规则更强大,更长,复用率更高,因而压缩率和复用率是耦合的关系,因此损失函数也许是不能直接对整体参数求和构造,具体而言,若一个概念的能够快速求解特定问题,但是复用率低则不行,也许是要使用类似UCT中分子分母构造公式的方式来平衡的。特定定理的描述长度高一点,也可能是没关系的,可能这个参数没那么重要,主要还是看解压后其描述的算法的复杂度,有些算法由于存在递归,因而算法复杂度很高。那算法复杂度具体是怎么来的呢,也许是需要记录定理或者算法的预估复杂度的。考虑递归算法作为一种复杂的算法,或者定理,其用到的底层指令集,具体也是可以用二进制描述的,那它一定可以预估一个算法复杂度,应当可以通过图,或者一些记录的数值来计算出或者预估出推理复杂度或者时间。工程上,也许直接把时间和验证器加入损失参数,让AI自己判断是搜索还是推理,以及自行自我进化优化参数优化架构设计损失函数自己想办法出来即可。也许是需要已有的现实知识的参与的。但是也许数学本身就是不一定需要现实世界,像AlphaZero一样,这种算法很可能是存在的,因为代数方程、数论这些东西也许是只要有意识就能存在的。下面考虑哥德尔数化的数学书中出现过的n个词用整数1-n,或者其对应的二进制来表示,推理规则(对词汇的替换操作等,有输入有输出)描述为这些词汇的排列组合,范畴图化后的数学书,从宏观上看就是一张复杂的有向图(节点是公理定理,还有可能还有的节点是词汇,应用中间推理规则节点,按照序关系的箭头构成的图),但是我也在想,也许只看公理定理,能够在输入后推理成功,则给予箭头,丢掉推理规则和词汇定义等节点,如果是这样,宏观上只有公理和定理,微观上看,图的节点内部包含了一系列的词汇,用于描述如何应用该公理定理,或者说算法。考虑假设已知存在某个囊括了所有数学理论的完全书籍,其范畴图是一个超复杂的有向图,最基本的公理(也有可能还包括推理规则和类似哥德尔数的基础词汇和定义)是能够推出这一切的所有根节点,而叶节点则有些类似100+1=101那种几乎没啥用的,目标当然是证明更多的定理或者发明更优质的算法,但是想要理论上证明更多的定理,有根节点就够了,因而,关键在于优化目标,之前的想法是,也许是要用深度强化学习去拟合选取过去推理时候用的常用定理。在胡扯了,压缩是压缩,打包新词汇可是凭空造词啊,还是要用深度学习的,除非把新词也当做一个叶节点。那么目标就是找到整个图中的高价值节点,这种寻找应当是要用深度学习来尝试的。节点的历史复用率显然是很重要的,但是也有可能跟高等数学书具体算式反而变少了类似,不能太绝对了,压缩率同样重要,但是压缩率具体是要考虑推理的算法复杂度的,而不是仅仅是推理链条的拓扑路径长度。不对不对不对,我算微积分的时候没有用到中间的证明过程,搞错了,默认它对就行了,我今天好晕啊,但是我真担心我突然有个大发现被监控到然后被抢先发布了(没错我又在幻想了),所以我先把这篇上链了...在未知能够推出特定节点的情况下,应用推理规则来进行推理,得到某个待应用的定理,需要用神经网络来判断这个定理的价值。。—————————————————————下面是关于熵的笔记:信息量的例子如下:投骰子,点数大于0,本来就大于0,所以信息量为0比特。点数大于3,排除了一半,可以用一个比特的字符来确定,信息量为1bit。点数确定为5,信息量为多少呢? 信息量的衡量方式是,计算排除了多少不确定性。对于2^n个数字,确定一个数字的例子,要100%完全确定具体是哪个数字,需要n次二分,所以理论上需要n个单位的信息量才能完全确定。而确定的可能性为1/2^n,因此,对于可能性为1/2^n的事件,需要信息价值为n才能完全确定。所以信息量即信息价值I=log2(1/p)=-log2(p),对应于n=log2(1/(1/2^n)),所以,点数为5的信息量为-log2(1/6)即log2(6)比特。对于一系列的事件,每件事情的发生概率为Pi,由信息量公式可以得知,概率越小的事件信息量越大,大量事件反复发生,那么获得这些事件的结果即存在一个信息量的期望,期望具体是多少呢?就是平均的信息量,即所有事件发生时候的信息量与其发生概率的乘积的累加,称为信息熵,对于未知的事件的概率分布,它存在一个极值,在概率分布均匀的时候取最大。信息熵是信息量的期望,而热力学的熵是dQ/T,其中dQ表示系统在微⼩过程中,系统在温度为T的热源处吸收的热量。这两者怎么会有关联呢?下面复习一下热力学,热力学第一定律就是能量守恒,第二定律是低温不可能自动把热量发送到高温,或者说不可能把热变成功而不产生影响,因为变成功了就可以送到高温,同时送到高温了又可以变成功。通过热力学的公式推导,能推出不可逆的绝热过程,熵增加。那为什么这种不可逆的过程具有方向性呢,底层的原理是什么呢?对于气体,存在分子的无规则运动,考虑分子的空间分布,处于某种平衡态的概率最大,即比较均匀的分布,在演化过程中,气体会自发走向平衡态。而考虑分子的动能分布,统计力学中也可以推出类似的结论,在总能量等宏观约束下,平衡分布对应的微观实现方式最多,因此系统通常自发趋向热平衡。所以热会自发地从高温物体走向低温物体。顺带一提,引力可能也是一种类似熵增或者吸引子的效应。由于平衡态熵最大,而概率也最大,熵和特定宏观态的微观态频数存在关联S=klnW,一个简化的例子是,对于体积为V的气体,单个分子出现在单位体积的概率的倒数为W=cV,V是比例系数,N个分子的微观态个数为cV的n次方。那熵是怎么来的呢?反正可以公式变来变去,最后算出来的结果是和之前的熵dQ/T一样。对于n个宏观态的体系,pi是能级概率,那么熵=-k求和(pilnpi),如果是等概率,则pi=1/微观状态可能数,由于p相等,求和号消失,S = -klnpi即klnW,如所有分子都在左边这一宏观态对于的微观状态数少,熵低。需要注意的是,W指的是符合该宏观态的微观状态数,物理上将所有微观态构成的空间称为相空间,信息熵logN亦是等可能事件数量,并不是全部宏观态。它们都在度量在只知道宏观约束时,微观状态还剩下多少不确定性。话说香农的信息熵的对数底数是2,而Gibbs熵是自然对数,为什么形式一样呢?因为lna/lnb=logb(a),lnp/ln2=log2(p)实际上只相差了ln2和玻尔兹曼常数作为系数而已。下面是信息熵中关于最优压缩问题的内容,需要注意的是,压缩方式要有个对照表,那么实际上还是需要额外信息的,只是在足够长的文本下忽略了。以及计算这个极限,要知道字符出现的概率。此外,信息熵只是理论极限但不给出压缩方式。回看信息熵的定义,对于压缩整本书籍如果每个字符用-log2(P)个bit来处理,那么总编码长度为-log2(P)*每个字符出现频数,再求和,平均编码长度就是再除以总数,那就是求和-pilog2(P),就是信息熵没错。信息熵为什么是理论压缩长度的极限?因为理论上这就是最优编码方式了,不过严格证明要用数学上的Kraft 不等式。那这个编码方式是可见的?用特定的二进制只能编码一个字符,但是每个字符的编码方式是不一样的,无法统一处理,既然长度不统一,计算机怎么解析?只要允许不同字母编码长度不同即可,设计变长编码时,遵守规则:任何一个字符的编码,都不能是另一个字符编码的前缀。那么,前缀码一定可以构造出吗?前缀码的构造,等同于画二叉树,是可以的,理论上是把所有的字符都放在这棵树的叶子节点(也就是没有后续分叉的末端节点)上 。香农第一定理证明了,对于足够长的随机源序列,存在编码方案使平均编码长度无限接近熵。话说香农有给出那种编码方式吗?香农并没有给出编码方式,给出的是一种非构造性证明。具体香农是怎么证明的,问了AI讲不清楚,这个以后查查资料再更新...交叉熵就是用真实的概率分布的P替代熵的公式中来计算熵,为什么这玩意最小化能够优化模型呢?因为概率越小的事件信息量越大,若模型对真实结果分配的概率很低,-log (q) 就很大;特别是模型自信地预测错误时,正确结果的预测概率接近零,因此惩罚极大。