什么是算法?
今天,“算法”這個詞已為越來越多的人所熟知。從微信上傳遞文件和圖片,到百度、谷歌等搜索引擎上的網頁排名,再到收發電子郵件,我們幾乎沒有一天不與算法打交道。
那么,什么是算法呢?
如果你去問計算機科學家,他們會告訴你:算法就是用計算機語言編寫的一串指令,它接受輸入,對輸入的信息執行一些可重復的運算,然后提供輸出。
一個簡單的例子是冒泡排序算法(或許你在學計算機語言的時候,自己就編過這樣的程序),你向它輸入一串數字,讓它按從小到大的順序重新排列。它首先比較前兩個數字。如果前一個大于后一個,就將它們對調。否則,就換到下一對。它會一次又一次地循環,直到不需要任何交換為止,這時它就會輸出一個排好序的數字列表。如果你在網上購物時按價格從低到高篩選產品,那么冒泡排序算法就會在幕后啟動。
![]()
不過,“算法”一詞的流行用法正在發生變化:它越來越多地被用來描述計算機所完成的幾乎任何事情。這也包括人工智能(AI)和機器學習領域,在這些領域,算法的步驟并不總是那么清晰明了的。
以神經網絡為例,這是一種模仿人腦的人工智能系統。我們可以通過大數據來訓練它,但它到底從大數據中學到了什么,連算法的開發者也未必了然。所以,未來算法一方面會變得越來越強大,另一方面可能會變得越來越不透明。
接下來,讓我們來了解幾個算法,它們對我們的生活影響很大,又相對比較透明,容易被我們理解。
1、社交媒體(以臉書為例):新聞推送算法
很少有能像臉書(Facebook)算法那樣擁有如此強大的力量。這家社交媒體巨頭的算法控制著每月28億用戶從哪些好友那里看到哪些更新,以及他們在新聞推送中將讀到哪些標題。
臉書算法實際上是幾十個基于一系列技術并不斷調整的軟件。這些軟件會分析該公司所謂的“庫存”:用戶關注的個人、網頁或群組的帖子集合。然后,它使用神經網絡,根據各種因素(需要考慮大約10萬個因素!)對這些帖子進行評分。最終,為每個用戶提供單一的排名——就是最后被推送給用戶的內容。
臉書很少公開談論其算法的具體運作方式。事實上,在單個用戶的層面上,它自己也不知道是怎么運作的。算法產生的結果對每個用戶來說都是獨一無二的,就像他們的指紋一樣。
這種復雜性可能會在未來對臉書造成影響。長期以來,臉書希望讓用戶在其平臺上停留更長時間,以便銷售更多廣告,所以有時會優先推送一些與社會公益不符但吸引眼球的內容,這引起了人們的擔憂,導致很多社會人士呼吁和施壓臉書對其算法做出調整。
2、天氣預報(以英國為例):統一模型算法
英國的天氣預報是世界一流的,這得益于一個名為“統一模型”的算法。它的工作原理是從氣象站和衛星獲取大氣狀態的數據,然后進行推斷,計算出大氣的變化情況。結果決定了我們看到的天氣圖標是晴天還是雪天。該算法圍繞一組描述液體和氣體流動方式的著名方程——斯托克斯方程展開。雖然我們不可能精確地求解這些方程,但如果把大氣狀態的一系列漸進變化加在一起,就可以近似地求解。這就是統一模型算法的作用。
幾十年來,計算機處理器的運算速度越來越快,使得像統一模型這樣的算法能夠以更短的時間處理測量數據,從而做出更好、更快的預測。雖然別的地方的天氣預報經常出錯,但英國氣象臺預報次日氣溫誤差在2℃以內的準確率達到了92%。因此,雖然它還不能完全準確地預報每場降雨,但確實是一種相當可靠的算法。
3、數字共享:JPEG壓縮算法
你在QQ或者微信上一定傳送過圖片吧?有很多圖片是JPEG格式的。但JPEG不只是一種文件類型,實際上它是一種用于壓縮圖像數據量的算法。我們之所以能以驚人的速度在網上分享圖片,部分原因就是得益于這種壓縮算法。
JPEG以“聯合圖像專家組”的英文名命名,該組織早在1992年就制定了這一標準。該算法本身相當復雜,但它基于對人類視覺的簡單洞察:雖然圖像和聲音是越清晰越好,但事實上清晰到一定程度,再清晰下去已無必要,因為我們的眼睛和耳朵的分辨力是有限的,并不能感知到每一個無限精確的細節;而圖像和聲音越清晰,數據量就越大,傳輸起來就越費流量和時間。因此,為了兼顧圖像質量和傳輸效率,壓縮算法將重點放在眼睛或耳朵能夠感知的重要內容上。
![]()
人眼對亮度比對顏色要敏感500到1000倍,這是因為視網膜中負責感知顏色和負責感知亮度的是不同類型的細胞。JPEG就是利用了這一點,舍棄了部分的顏色信息,而更精確地保留了亮度信息。其他類型的壓縮算法可以壓縮其他類型的文件,例如MP3通常用于壓縮音樂文件。
4、萬維網:網頁排名算法
谷歌之所以能迅速崛起為搜索領域的巨頭,首先要歸功于它的網頁排名算法PageRank。
在谷歌開發出PageRank之前,搜索算法往往依賴于分析網頁上的文字。比如你在搜索引擎上輸入“大科技”,那么搜索引擎就會去搜索所有包含有“大科技”三個字的網頁。哪個網頁上出現的頻次最高,哪個網頁就排在最前面。
PageRank的工作方式與此不同:它根據鏈接網站的數量和權威性為每個鏈接分配一個等級。如果網站A鏈接到網站B,網站B將繼承網站A的部分PageRank,從而提高其在谷歌搜索上的排名。這可以提供更好、更準確的搜索結果。
![]()
PageRank算法的影響力已今非昔比。現在取而代之的是,谷歌使用一系列不同的算法來分析決定網站排名的數百種不同因素。你可能沒有意識到,你所在的位置、你使用的搜索設備和一天中什么時間你使用搜索,再加上許多其他微妙的因素(并非所有因素谷歌都會透露),都會影響到你的搜索結果。譬如,你在白天用谷歌搜索“大科技”和在夜里用谷歌搜索“大科技”,得到的結果可能會不完全一樣。所以,該算法已經變得越來越不透明了。
5、金融:交易算法
金融交易一直是嚴重依賴算法的領域。這不僅是因為人類的頭腦容易犯錯,還因為算法瞬間就能分析數十年的價格信息,并能神速地買入、賣出。如今,算法控制著全球的金融交易。
有一種金融算法被稱為高頻交易,比如利用全球各地股票交易所開盤或收盤的微小時差,計算機以驚人的速度進行大量交易。每筆交易都可能只獲得微薄的利潤,但利潤累加起來就相當可觀。
![]()
更常見的算法是規定在何種情況下買賣股票和債券等金融資產。在這里,起決定性的因素不是快速,而是要盡量減少人為的偏見。這類算法主要由處理巨額資金的基金開發和使用,其運作并不公開。迄今為止,全球一半以上的金融決策都是根據這些算法做出的。
如今,金融交易算法正變得日益復雜。一些基金正在超越簡單的規則,使用人工智能和機器學習。基于這些技術的算法,其輸入變量不僅有股市數據,還有諸如首席執行官接受媒體采訪時使用正面和負面詞匯的數量等等。假以時日,這可能會讓擁有最智能算法的公司獨占鰲頭。
6、加密:RSA算法
在不知情的情況下,你一定已經用過RSA加密算法。這是一種算法和協議的組合,可以在計算機之間私密地發送信息。這些秘密可以是電子郵件,也可以是你的銀行信息。
發送秘密信息的方法依賴于對信息進行加密,只有目標收件人才能解密。一種簡單的加密方法是將信息中的每個字母在字母表中往后移動一個。例如,你發送“Ij!”,收件人事先知道你的加密規則,所以只要逆轉加密過程,就能解密得到原來的“Hi!”。
問題是,第一次發送信息時,你必須公開告訴收件人你的加密方法,這就削弱了系統的安全性。但這里有一個竅門:如果收件人事先生成兩把密鑰(即加密的規則),一把為公鑰,一個把私鑰。他把公鑰通過互聯網公開傳送給你,然后你用公鑰加密信息,再把密件傳給收件人;收件人則用只有他們自己知道的私鑰解密,這樣就不容易泄密了。
![]()
實現這一點需要一個條件,即加密很容易,解密卻很難。RSA算法就是利用素數的特殊性來實現這一點的。
RSA基于一個簡單的數論事實:將兩個大素數相乘十分容易,但要想對其乘積進行因數分解卻極其困難,因此可以將乘積作為公鑰,而兩個大素數本身作為私鑰。目標收件人自己先選定兩個非常大的素數,把乘積作為公鑰告訴發件人,然后發件人用公鑰加密,把密件傳給收件人,收件人拿自己知道的這兩個素數作為私鑰解密。
在現實生活中,RSA算法處理的是巨大的素數,這樣的系統幾乎不可能被破解。但是,將一個大數進行因數分解,只對經典計算機來說比較困難,對于足夠大的量子計算機來說,是輕而易舉的事情。不過不用擔心,密碼學家正在加緊研制連量子計算機也難以破解的加密技術。
7、健康:分診算法
想象一下,你開始感到胸痛難忍。你迅速撥打急救電話。在許多國家,那頭接電話的將是一個智能接線員,它會根據算法向你提出一系列問題,以確定你是心臟病發作還是其他疾病。結果將決定是否需要派救護車以及派車的速度。
在其他醫療領域,算法也開始在沒有太多人工干預的情況下使用。比如,在一些非緊急醫療分流服務的App中,用戶會被引導回答一系列問題,以幫助引導他們掛哪個科的號。此外,還有一些癥狀檢查App,它們會詢問你的癥狀,然后根據算法提出可能的診斷建議。
更復雜的機器學習算法也得到了應用。有幾種系統可以讀取醫學影像,例如從X光片中發現骨折的跡象,或從眼部掃描中發現與糖尿病有關的失明。這類算法是通過大數據訓練開發出來的。在某些情況下,其可靠性已經超過了專業醫生。一些醫院已經開始使用這些系統,聯合人類醫生進行雙重檢查,以幫助更快地做出診斷。
8、互聯網:互聯網協議套件
當你發送電子郵件或在瀏覽器中輸入信息時,你是在要求你的電腦與互聯網上的另一臺電腦交換信息。這種連接受一套龐大的算法和規則(即互聯網協議套件)的支配。
這些規則的目的是確保流量到達需要到達的地方。比如說你要給臺灣的朋友發一封電子郵件,但最近臺灣海峽發生了地震,連接大陸的電纜斷了。那難道你的郵件就發不成了嗎?
為了確保這類事情不會發生,互聯網協議套件并不指定組成互聯網的電纜的確切路線,以防部分線路中斷。取而代之的是,信息被切碎成許多個數據包,算法會幫助它們找到任何可行的路線,每個數據包都會根據前一個數據包的反饋來確定自己的軌跡。一旦到達目的地,數據包就會重新組合在一起。
這些算法是于1974年開始實施的。從那時起,它就成了互聯網的主干——但一路走來,它也做了一些調整。
其中一個原因是它與內部協議(IP)地址系統緊密配合。IP地址系統為互聯網世界從服務器到智能手機的每個連接設備提供了一個唯一的、機器可讀的標識。隨著世界的互聯程度越來越高,可用的IP地址數量也在不斷減少,到2017年幾乎全部用完。這是因為在第一個互聯網版本中,只有43億個IP地址可用。
值得慶幸的是,后來互聯網得到了升級。新的地址系統IPv6擁有的IP地址數比地球表面的原子還多。因此,即使未來有數萬億臺設備接入互聯網,我們也不會很快用完地址。
9、科學研究:蒙特卡羅算法
第二次世界大戰期間,研制原子彈的科學家們需要了解原子核的鏈式反應,而且不能出任何差錯。問題是,其中涉及的物理學太復雜,無法用傳統方法進行分析。于是,數學家斯坦尼斯瓦夫·烏拉姆設計了一套算法,利用當時剛剛誕生的計算機,以全新的方式解決了這個問題。
烏拉姆的想法是多次模擬一個物理現象,看看會出現什么情況,從而得出最可能的結果。比如,模擬一個中子轟擊一個鈾原子核,不停地改變兩者之間的徑向距離(即兩者最接近時的距離),看看會有什么結果。這樣我們就可以大致知道,當現實中一束包含很多中子的束流射向一個鈾原子核,會有什么結果。烏拉姆以一種叫“蒙特卡羅”的紙牌游戲來命名這種算法,因為他最先是通過模擬紙牌游戲的結果來測試這種算法的。
![]()
如今,蒙特卡羅算法的應用非常廣泛,從預測股市趨勢到新藥物合成,不一而足。因為在很多復雜的情況下,沒有現成的數學公式可以直接計算出結果,而蒙特卡羅算法為了解這些復雜行為提供了一條捷徑。如果沒有蒙特卡羅算法,今天我們使用的許多藥物就不會存在。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.