加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

压缩,武功,确定性和不确定性

(2011-07-12 08:13:06)
标签:

杂谈

    最近一直在看压缩,在思索压缩的本质。产生冗余的原因,如何识别冗余,如何识别实质;不确定性是怎么产生的,确定性是怎么产生的,怎么识别,怎么量化?
    这段时间为了THUIRDB到处跑,看到南来北往的人们,我发现一个很奇怪的现象,我每天去学校,只背一个小书包,而跑外地,可能需要一个拉杆箱,如果要出国,可能需要拖个大箱子。
    去学校,这个不确定性最小,这个不确定性可以描述为:“可能需要电脑、电源、可能需要纸笔等”
    去外地,这个不确定性增加了一下,可以描述为:“可能需要电脑、电源、纸笔、换洗衣服、剃须刀等等”
    出国,这个不确定性又加大了,在之前的基础上,可描述为:“还需要护照,四季换洗的衣服,常用的生活用品等”
    因此我们可以首先得到这么一个朴素的结论:“不确定性越大,所需要的物质基础更多”。
    例如我们要对一个传感器的输出值进行编码。
    这个传感器是个二极管,只有0和1这两个值,这编码长度为1。
    这个传感器是个四值的装置,我们可以用00,01,10,11编码来表示。每个输出值只需要2。就足以区分不确定性。
    在比如在DB开发中,对变长的value在存储的时候,需要记录value的长度,value长度这个不确定性需要有一个物理上的存在来表达。我们可以在这个字符串前面增加一个表示长度的信息(比如一个uint32_t);也可以在字符串的结尾加上'/0',我们不试图讨论这两种方法的优劣,但必须用一个“物理存在”来“应付”这种不确定性。
   
    我们很讨厌不确定性,这需要耗费物理量,我们想简化,怎么办呢?这就需要压缩。怎么压缩呢?就是在“不确定性中找确定性”。
    举个例子,如果value我们已知是表示人类姓名的,那么这个字符串需要人类能记忆,已知非洲的人名最多可以有数千个字符(姚明曾表示队友穆托姆博的全名要读一天)。那么表示value长度的值大致可设为uint16_t,如果我们又拿到一个“确定性”,这个名字表示中国人的姓名,则我想用一个uint8_t就足够了。
    再比如我们有这样一个整数序列1,3,3,7,14,35,60。这个序列的值y和下标值x具有这样的规律,y=2^x。但如果按照这样的规律这个序列应该是1,2,4,8,16,32,64。如果我们将整数序列转化为一个model+残差,则这个整数序列可以表示为y=2^x+(0,1,-1,-1,3,-4)。其中y=2^x就是model,而(0,1,-1,-1,3,-4)就是残差,残差的每个数值变化都很小,按照此前的例子可以知道,用很短的编码来表示即可。
   
    武功也类似,我们看金庸武侠,很少有大师是只通一门武功的,而很少有大师是招式背得很全,很刻板的。按照我的理解大师所需要掌握的只是那个model,并理解残差用以对应不确定性所起到的作用,而深入理解各种武功的model后,就可以融汇贯通成更一般的model,而残差是不确定性,是特例,只需要见招拆招即可。
    江南七怪只学到了1,3,3,7,14,35,60这个水平,背诵的很熟,但人脑有限,只能掌握这么多。
    梅超风只学到了一个model+残差,背诵的也很熟,但model太单一,残差也太单一,不能应付复杂局面。
    黄药师博古通今,学到了多个model和多个残差,融汇贯通,终成大师。
    因此武功的最高境界应该是,心中无剑,手中亦无剑,无并不是表是没有,而是简化到了接近无的境界。

 
    最后回到旅行这个例子上,我们最喜欢的工具往往是哪些自适应性强,万金油型的,例如瑞士军刀,瑞士军刀是一个很好的压缩例子,他把那么多不确定性的需求,压缩在一个小刀内,通过精巧的设计,达到了体积小,复用性强,可以应付复杂场面。其本质还是一个model+多个残差。

 

    短短一文,也很难把想要说的表达清楚,希望给自己保留一个思考的节点,日后在来研究。 


 

0

阅读 收藏 喜欢 打印举报/Report
后一篇:无题
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有