[转自]https://www.toutiao.com/i6777318172765717006/(版权归原作者所有如有侵权请立即与我联系,我将及时处理)
傅里叶变换(Fourier Transform,有时候被写成“傅立叶变换”)是一个特别常用的数学工具,很可能你已经在大学学过,但我想专门讲讲。傅里叶变换是构建现代科技的一个基础方法,它可以说是无处不在 —— 而我感觉这个操作背后有个智慧,值得每个人深思。
就算你没正式学过,你也很可能听说过“傅里叶变换”这个词。计算机上的声音和图像信号、工程上的任何波动信息、数学上的解微分方程、天文学上对遥远星体的观测,到处都要用到傅里叶变换。你用手机播放MP3音乐、看图片、语音识别,这些都是傅里叶变换的日常应用。吴军最近在得到开了个讲信息论的课,其中也提到了傅里叶变换 [1]。
什么是傅里叶变换呢?维基百科的说法是“是一种线性积分变换,用于信号在时域(或空域)和频域之间的变换”……这句话恐怕比较难懂,而且懂这句话的人也未必理解傅里叶变换的本质。这一讲我们忽略所有的数学细节,一个公式都不用,直奔思想。
*
以我之见,从本质上来说,傅里叶变换,是把一个复杂事物拆解成一堆标准化的简单事物的方法。
咱们用声音来举个例子 [2]。注意声波只是应用傅里叶变换的一个例子,傅里叶变换既不必是关于声音的,也不必是关于波动的。
咱们先说什么是“简单事物”。声音其实就是空气的震动。你拨动一下琴弦,耳边传来一个纯净的、而且在短时间内是持续的声音。像一个 A 音符,大约每秒钟要震动 440 次,所以除非是重低音,你通常不一定能感觉到震动,但是你能感到音量和音调 —— 音量就是震动的幅度,音调就是震动的频率。
下面这张图表现了一个简单的声音。横坐标是时间,纵坐标是震动的幅度。这个声音呈现完美的周期性变化,说明它的频率是固定的,它有一个单纯的音调。这个曲线的形状是“正弦波”,也就是高中学过的正弦曲线的样子。
这就是一个简单事物。真实世界中绝大多数声音都不是简单的,比如我们说话的语音就明显不是一个纯净的音调。放大了细看,复杂的声音是下面这样杂乱的震动 ——
好,现在关键的洞见来了:复杂的震动,可以看做是一系列简单震动的叠加。
比如上面那条曲线看似复杂,其实是三个简单波动相加而成的 ——
你可以把图中最下面的复杂曲线当成你在一天之中感受到的温度变化。表面看来,你感受到的温度变化很复杂,但是实际上,你知道你是在同时经历三件事情。图中的红色曲线就相当于大自然温度的自然变化,绿色曲线相当于你在室内还是室外,蓝色曲线代表你是穿上还是脱下外套。
把这一件复杂的事情拆解成三件简单的事情,你就完全能看明白它到底是怎么回事儿了。
而所谓傅里叶变换就是说,如果我们先规定好一系列的简单波动,那么任何一个复杂的波动,就都可以用这些简单波动拆解。
比如我们看下面这个波形 ——
这个形状看起来有点怪,但是似乎又有一种整齐的规律,那到底是什么规律呢?傅里叶变换是一套数学操作,能把任何形状的曲线拆解成一系列简单波形的叠加。上面这个波形,其实是下面这几种波的叠加 ——
图中蓝色的,就是一系列简单波动。傅里叶变换能告诉我们图中每一个简单波动对红色曲线的贡献度有多大,比如说
红色曲线 = 频率是 100 的蓝色曲线 × 0.5 + 频率是 200 的蓝色曲线 × 0.2 + 频率是 300 的蓝色曲线 × 0.1 + 频率是 400 的蓝色曲线 × 0.08 + ……
那现在我们设想一下,如果上面那些各种频率的蓝色曲线都是大家约定俗成的“标准化的简单事物”,那么想要描写那个看似复杂的红色曲线,我们就只需要报出组成它的各种蓝色曲线的“成分”也就可以了!
红色曲线 = (0.5, 0.2, 0.1, 0.08, ……)
这就是傅里叶变换。
*
现在你看出傅里叶变换的好处来了没有?明明是一条复杂的曲线,可是我们只需要用几个数字就可以描写它!
这就是数字音乐的原理。那些标准化的简单音调都是大家约定好的,所以只需要记录一个声音分解成简单音调的成分值就行。而且因为特别高频和特别低频的声音人的耳朵是听不见的,所以标准化简单音调并没有无限多个,我们只需要用很有限的一组数字就能描写一段时间内的一个复杂声音……这就是最基本的 WAVE 音频格式。把 WAVE 文件里的信息再做一些压缩处理,就是 MP3。JPG 图像的原理也是类似的,只要把时间上的波动改成空间上的波动就行。
傅里叶变换并不要求你记录的这一段信息具有周期性。任何形状的线条都可以用那些标准化的简单曲线合成出来,哪怕只有一个周期也可以做,是不是“波动”并不重要。
那些“标准化的简单音调”都是如何选取的呢?这其中有一些讲究,要求“不重不漏”。所谓不漏,就是它们组合在一起必须在一定的分辨率之内,能覆盖耳朵能听见的所有频率;所谓不重,就是它们互相之间不能有重叠。比如你不能说这一个简单蓝色曲线又可以用其他几个简单蓝色曲线合成出来 —— 那样的话傅里叶变换的解就不是唯一的了。
这些标准化的简单事物是一个傅里叶变换的基石,你可以把它们想象成“维度”。复杂事物就好像是由那一大堆简单事物构成的多维空间中的一点,每一种简单事物的成分就构成了这个复杂事物的坐标。为了保证坐标系统的清爽,各个维度之间应该是互相垂直(数学语言叫“正交”)的关系,也就是谁也不能覆盖和取代谁。
数学概念就说到这里,下面说意义。
*
你每一次对着菜谱做菜,都是在做傅里叶变换。
菜谱说,用这个、这个和这个食材,什么时候加多少盐,什么时候放多少水……那些食材、盐和水,就是傅里叶变换中的那些“简单的标准化事物”。
菜谱无需告诉你牛肉是什么东西、西蓝花是什么东西、盐和水又是什么东西,大家约定俗成都知道它们是什么东西。菜谱只需要把成分告诉你就行。
这说明什么呢?说明如果一个社会有一个大家约定俗成的、标准化的简单事物话语体系,我们的交流就会非常方便。这也说明,要想让交流方便和高效,你就必须得有一个约定俗成的、标准化的简单事物话语体系。
比如古代行军打仗有个最原始的密码系统。事先约定二十个字,每个字代表一个意思。通信的时候写一首诗,比如其中有一句是“大漠孤烟直”。收信人一看“大”字上盖了个章,而知道事先的约定是“大”的意思是要求增兵,就知道你想说什么。
没有这个标准化的约定,我们就无法有效交流。请问谁能用语言精确描写前面图中那条曲线呢?了解一个领域,就得了解这个领域的话语体系。
*
现实中使用的傅里叶变换,总是失真的。理论上有无限个标准化简单音调,但是现实中我们只用有限个数字描写一个声音,这是因为那些不易分辨的、或者振幅特别低的音调都被省略了。所以对数字化声音来说,你得知道你面临下面这几个限制 ——
1. 你发不出不能用我们选取的那几个标准化音调描写的声音;
2. 你的声音的特别细微之处,将会被忽略;
3. 所有能传播的声音都是规定好的单纯声音的排列组合而已。
要不怎么福柯说,“人类的一切知识都是通过‘话语’获得的,任何脱离‘话语’的东西都是不存在的。”
这就意味着,在傅里叶变换的视角下,这个世界并没有什么新鲜的东西。
*
比如有一天你做了一个梦。你觉得这个梦太精彩了,就把它写成了一个小说,你认为这要是拍成电影肯定能火!你兴冲冲地把它拿个一个编剧朋友看,结果他说,你这不就是《罗生门》× 0.5 + 《哈姆雷特》× 0.2 + 《侏罗纪公园》× 0.3 吗?
他给你的剧情做了个傅里叶变换。
现在的情况是凡是能想到的剧情,可能都已经被人拍过了。我以前专门写文章说过 [3],TV Tropes 这个网站列举了所有的剧情桥段。
你所谓的创造,通常只不过是已知的、标准化的简单事物的排列组合而已。
这就是为什么成熟的领域里搞“纯创新”那么难。如果这个领域已经形成了自己特有的话语体系 —— 也就是说都用上傅里叶变换了 —— 你首先要做的大概是学习这个话语体系。
不过好在真实世界并不一定是一个完全可以数字化的封闭系统 [4],也许傅里叶变换终究不能把整个世界给标准化。
注释
[1] 吴军·信息论 40 讲,《10.等价性:信息是如何压缩的?》
[2] 这一小节的图片和主要例子来自 AATISH BHATIA, The Math Trick Behind MP3s, JPEGs, and Homer Simpson’s Face, Nautilus, JUN 10, 2019.
[3] 《万万没想到》:桥段会毁了你的生活。
[4] 精英日课第二季,《哥德尔不完备性定理的世界观》。