傅立葉變換的智慧

2020-01-02     發現洞見


傅立葉變換(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] 精英日課第二季,《哥德爾不完備性定理的世界觀》。


文章來源: https://twgreatdaily.com/bkR-aG8BMH2_cNUgTZaz.html