天天看點

吳軍,資訊論40講,20,去除噪音:如何獲得更多更準确的資訊?

上一講說了噪音,以及它和資訊的相伴關系,并且知道了用信噪比來度量和還原資訊。我們講了,當信噪比非常低的時候,我們是無法從噪音中分離出資訊的。是以很多時候我們要通過過濾噪音,提高信噪比。

在日常學習和工作中,去除噪音提取有效資訊的原則也很重要。今天我們就來談談消除噪音的問題。

噪音通常可以根據産生的原因以及表現形式作如下的分類:

1.能夠找到噪音來源的 vs 不清楚來源的。

比如說開車時汽車馬達的聲音,就是已知來源的噪音,而你打電話時,覺得對方的聲音不清楚,有噪音,那些噪音常常原因不明,或者說來源太多,講不清楚。

去除知道來源的噪音,最簡單的方法就是屏蔽它們,比如把汽車裡面的隔音做好,車廂内就會顯得很安靜。如果你坐過直升機,就會發現它的發動機和螺旋槳的噪音巨大,任何隔音材料都不可能把艙内的噪音降到你能聽清楚說話的程度,是以坐直升機大家都是戴耳罩,用麥克風講話。

還有很多時候你即使知道了噪音的來源,也有方法消除它們,但是無法實施。比如晚上10點鐘樓下一群跳廣場舞的,搞出很大動靜,但是你顯然沒有本事讓他們不跳,甚至沒有本事讓他們降低噪音。這種時候就要采用我們後面提到的方式降噪了。

至于來源不清楚的噪音,去除時,常常比清楚噪音的來源要更困難。

2.有規律的噪音 vs 随機的噪音,固定頻率的噪音 vs 白噪音。

汽車的馬達聲其實是有規律的噪音,它的頻率比較固定。集市上的就是随機噪音了。顯然前一種比後一種好去除。

有些噪音頻率比較固定,比如鳥叫,這很容易從背景中去除,但是如果是各種頻率都有的噪音,也就是白噪音,那就很難去除了。

了解了噪音的分類,我們就來談談怎麼去除它們。不過這裡我們先強調一點,下面的内容大多是介紹利用計算機如何去除噪音的,而不是我們的耳朵怎麼做。事實上我們的耳朵很缺乏抗噪的能力。

第一個常用的方法就是利用資訊的備援。

如果我們受到來源已知、規律性比較強的噪音的幹擾,比如汽車發動機的聲音,很容易去除。比如在汽車中進行語音識别時,當麥克風接收到人說話的聲音後,在進行信号處理之前,會先減去馬達的聲音。

這件事很容易做,增加一個專門接收發動機噪音的麥克風即可。事實上在汽車裡,哪怕發動機的噪音能量極高,完全淹沒了我們說話的聲音,人可能聽不清,但是計算機識别起來并不難。

類似的,如果一個上司在大會場作報告,在不同角度安裝幾個麥克風即可(它們通常也被稱為麥克風陣列),通過對比幾個麥克風收到的語音,就可以判斷哪些是信号,哪些是噪音。這種方法,從本質上講,利用了資訊的備援度,也就是說,利用多餘的資訊,減少誤差。

對于知道來源,但是沒有規律性的噪音,處理起來難度加大了不少。通常解決方案會和應用場景有關。比如在卡拉OK廳使用的麥克風,對距離非常敏感,這樣不會将幾米以外喝酒劃拳的聲音收進去。

第二個方法就是換一個角度看問題。

在一個次元分不開的兩件事,換個角度看就分得清清楚楚了。比如下面這張圖,從正面看藍色的長方體和紅色的橢球重疊了,分不開,但是從側面看,它們之間的距離其實很大。

當然這隻是打了一個比方,我們不妨看一些真實的例子。

比如說一個劇組在拍外景,有一堆鳥在叽叽喳喳叫,那些就是噪音。但是這種噪音其實很容易過濾掉,因為使用我們前面說的傅裡葉變換可以将所有的音頻信号變成頻率信号,鳥的叫聲在特定的頻率上,隻要将那個頻率的信号過濾掉就可以了。

音樂會現場錄音時,會通過這種辦法把類似咳嗽聲處理幹淨。如果照相機的感光器上有了灰塵,Photoshop也會用類似的方法進行過濾。

不過,如果噪音分布在各個頻率,也就是所謂的白噪音,這一招就不靈了,實際上最初香農研究資訊論,就源于往語音中加入白噪音。

那是二戰時候的事情,當時貝爾實驗室的研究員香農接受了美國政府一項秘密任務。那時候英國首相丘吉爾時常會和美國方面通電話,但是由于電話是模拟信号,不是數字信号,很難加密。

更要命的是,當時的電話都是通過電話線打出去的,是實實在在的實體連線。如果德國人找到了電話線,中間實施監聽,那麼英國首相和美國方面講的内容就都被竊取了。

于是美軍想到一個可能的解決辦法,就是将丘吉爾的電話變成數字化的,中間混入白噪音,這樣德國人聽起來像一些噪音。

由于白噪音産生的算法是美國人想出來的,德國人如果不知道這個算法,是無法過濾掉噪音的。美國軍方就想知道這個想法是否可行可靠,而香農的任務就是研究這個課題。

當時香農經常和圖靈一起喝咖啡,吃飯,兩個人談論了很多東西,但就是不談彼此的工作。其實他們所從事的研究有很大的相似性,圖靈的任務是破譯德國人的秘密,而香農其實是給盟軍加密。如果他們能夠進行學術交流,其實對各自的工作都大有益處。但是在戰争期間他們被要求嚴格保守秘密,他們也做到了這一點。

最後香農證明,這種想法是可行的,因為噪音分布在各個頻率,任何算法都無法過濾掉。但這有一個前提,就是對方不可能知道你産生白噪音的算法,否則他們可以複制這種白噪音,然後從信号噪音相混的資訊中将噪音濾除。

香農也就是在這個課題的基礎上,發展起來了資訊論。是以資訊論的出現,在一定程度上要感謝噪音。

當然,很多人會想,我不搞通信,是否有必要了解這些知識呢?其實,正如我們上一講講到的,噪音存在于各種信号中,不僅僅在通信中才會遇到,比如說曆史上的記錄,就混雜了很多的噪音,而我們平時聽到的消息,常常也是如此。

有意思的是,生活中的噪音和通信中的一樣,有些能找到源頭,有些則不能,有些能找到規律,有些則沒有。于是,過濾資訊中的噪音最簡單有效的方法,其實也不外乎上面兩種。

第一種是通過資訊的備援和比對,過濾噪音。

舉一個例子,如果今天美國總統特朗普發表了一番言論,當然媒體對此有記錄和報道。但是,各種媒體可能記錄有誤差,而且可能還有意無意加入自己的看法,把不是特朗普意思的内容加到他頭上,這樣就主觀或客觀地引入了噪音。

如果你隻從一個資訊源了解資訊,你其實很難判斷所獲得的是噪音還是信号。如果你從多個資訊源了解資訊,雖然它們各自都有噪音,但是由于報道的角度不同,很多噪音彼此可以抵消掉,獲得的則是資訊,或者說是信噪比很高的資訊。

這就和在會場的不同地方擺置好幾個麥克風是同樣的道理。當然,如果所有的媒體都站在同一個位置,讀再多媒體的内容都不可能将噪音過濾掉。

我在《Google方法論》中講到過,最可貴的意見不是所謂客觀的,而是真正反映自己想法的主觀的意見。因為那種看似唯一客觀的理論,其實是有偏差的,當一個企業,隻有上司一個人的意見時,那些原本不大的噪音就被放大,以至于會淹沒信号。

相反,如果每一個人都把自己主觀的意見說出來,雖然每一個人有偏見,也就是說噪音,但是合在一起我們就得到了大衆想法的輪廓。

第二種,将有噪音的資訊分解到不同的次元過濾噪音,這個方法可以怎麼用呢?

比如,中國人常常很糾結一個問題,就是老婆和媽媽掉到水裡後先救誰。這個問題兩難的重要原因在于,要考慮的因素太多,以至于大家越想越糊塗。其實在這個問題上解套并非難事,關鍵是厘清楚什麼是我們該考慮的資訊,什麼是噪音,或者說你最看重哪方面。

比如,如果你覺得孝道是第一位的,或者覺得以後誰和我生活更長時間是第一位的,作出選擇就沒有什麼難的。這時,你其實是将這個資訊混雜着噪音的問題,投射到了某些你能夠區分的次元,比如孝道次元,或者和你未來一起生活的時間。

在這兩個次元上比較,就很容易區分大小。這就如同将聲音從能量的高低,投射到頻率的次元後,就能簡單地從頻率高低識别出鳥的噪音,然後過濾掉一樣。

當然,如果你反過來思考去利用噪音,想将一些資訊隐藏在噪音中不被别人發現,最好的辦法就是制造毫無規律的白噪音。

Google資訊安全部門曾經為了防止偷盜賬号的人反複試驗密碼,增加了一個輸入驗證碼的要求,這樣反複猜測密碼的人就無法使用計算機試錯了。為了對視覺有障礙的人使用這種驗證碼的功能,Google提供了語音提示。

但是這樣一來就出現了一個漏洞,因為盜号者可以使用語音自動識别。于是,開發這項服務的工程師就往語音提示中加入了一些噪音,降低語音識别率。但是除了前兩天給盜号者增加了難度,兩天後,情況又像以前那麼糟糕了,于是他們找到我詢問原因。

我就問他們語音是哪裡來的,他們說是在飯廳裡錄了些噪音加進去的。我說問題就出在這裡,由于他們錄的噪音就那麼幾分鐘來回使用,盜号者很快發現了這一點,他隻要對比每天不同語音提示的差異,很容易找到加進去的噪音,然後就像過濾鳥叫聲那樣過濾掉即可。

如果想讓盜号者過濾不掉噪音,就要在語音的各個頻率加入随機的噪音,也就是白噪音。後來他們這麼做了,果然盜号的成功率就降低了很多。

要點總結

我們介紹了噪音的種類和來源,并且介紹了兩種去除噪音的方法,即利用備援度去除噪音,以及從不同次元看問題去除噪音。

我們介紹了生活中的噪音,并且強調了去除通信中的噪音和去除生活中的噪音,其實是同樣的原理。

可能會有讀者朋友好奇,我們這一子產品明明是講資訊傳輸的,那麼為什麼要先講噪音呢?它和資訊傳輸有關系麼?下一講我們就來談這個問題。

繼續閱讀