目录(点击切换)
本文节选自《计算之魂》电子版:
//第3章//万物皆编码一一抽象与表示//20多年前我在做博士论文的时候遇到这么一个问题。我用一种机器学习的算法训练一个统计模型时总是出错,检查了公式、程序和数据,都没有发现问题,而且这个错误总出现在选代很多步之后。后来我跟踪每一步的运行,发现这个机器学习莫法在收化之前有可能在一个阶段上发散,有些参数就变得非常大,有些参数就变得非常小。结果一个绝对值大数和一个绝对值小数相除,就溢出了(数值超过了10!虽然一般人难以想象,但是在机器学习中这种情况还是会遇到的)。为了防止溢出,我事先把它们都变成了对数,乘除改为加减。这看似解决了溢出的问题,其实在不知不觉中引入了精度的问题,因此当一个大数字和一些小数字相加减时,小数字总是被忽略掉。这时我才想到,计算机所能够表示的数字看似范围很大,宣称的精度也达到要求,但是它其实不能同时兼顾这两头,也就是说并非数轴上的数它都能表示。比如我们有一个大数字X-3.625x108,加上一个小数字)王1.457x10。从理论上讲,它们相加的结果是3.62500000000000000001457x105\",但双精度的浮点数实际上表示不了这个数字,因
计算之魂内容概括
此它被近似为3.625x10!,也就是龙本身。这时,就算把?加102次,由于每一次都被恕略掉,等于白加。虽然我们都知道在半上加108次了后真正的结果是5.082x10\",但计算机给的结果还是3.625x10\"。这祥结果自然会出错。当然,问题找到了也就能解决了。在这件事情之后,我在利用计算机处理数据时,特别是一些数值相差非常大的数据时,会特别小心。需要大的和大的一同处理,小的和小的一同处理;先做粗调的事,再做精调的事。兼顾了这两方面,溢出和精度的问题都得到了解决。要点在编码长度(二进制位数)一定的情况下,编码能表示的不同信息的数量是有限的。此信息的动态范围和精度就是一对矛盾,我们不可能既要动态范围大,还要求精度高。根据不同的应用平衡二者的关系,是信息编码的艺术。思考题3.3设计一种编码方法,用8位二进制数表示浮点数。(食会例会汪)115//计算之魂/3.4非线性编码和增量编码(差分编码)今天,计算机很多时候被用于多媒体信息的压缩、传输和处理,这里面都涉及对信息的编码,而其中的关键在于把握范围和精度的平衡。通常可行的办法是采用非线性编码来扩大范围,完成粗调;用增量编码来缩
计算之魂这本书可以学到什么东西
短编码长度,完成精调。在说明这两种编码的原理之前,我们先以对语音的编码为例,说说最简单的线性编码。对图3.1所示的一段语音进行编码,最简单的方法就是一个一个点采样,然后将其变成-32768~32767的整数,这样就可以用16位二进制数进行编码。今天的长途电话采用的就是这种编码方式,叫作脉冲编码调制(PCM)编码。ua图3.1,一段语音的波形图那么如何利用非线性编码压缩一下编码的长度呢?一个简单的方法就是对信号求对数,缩小信号的动态范围。这样用更少的编码(比如8比特)就可以表示上面的语音信号了。对数函数有一个特点,那就是对较小的数字分辨率较高,对大的数字分辩率则比较低,这正好符合语音信息和图像信息的特点。但是这种非线性的编码也有一个新的问题,假如一段信号的数值是3210,3208,3206,3211,3220,3212,…,取对数后值都差不多。不过,如果我们将这一组数字一起观察,而不是一个数据一个数据地编码,就可以利用数据前后的相关性,只需要对前后数据的增量进行编码,当然第一个数字需要有完整的编码。这样,我们可以将上面的一组数字做一个等价的变换,变成如下形式:116
计算之魂吴军百度云
| 计算之魂作者 | 计算之魂 百度网盘 |
| 计算之魂总和最大区间 | 计算之魂电子书下载 |
| 计算之魂 吴军 下载 | 计算之魂epub下载 |
综上:计算之魂百度云下载值得推荐阅读

评论已关闭!