回應 : 0
奇、趣、妙、識
人機互動時代,懂點演算法才能贏
吳晶辰
資料提供者
2021年4月8日

演算法在我們的生活中應用場景越來越多,嘗試去瞭解它,瞭解電腦思考的方式能幫你在這個人機共存的時代中更加如魚得水。但是當你想要瞭解“演算法是什麼”你將獲得的是知識、是定義;可當你想要瞭解“什麼是演算法”,你將從根本理解演算法。 

 

從實際問題出發,能夠幫你更快融入“演算法的世界”。在下面這篇文章中,就有一個“魚香肉絲和蛋糕製作”的生活實例,快速講清算法的本質是什麼、它的優勢在哪兒、我們又如何去判斷演算法的好壞。 

 

其實演算法的門檻沒有你想像中那麼高,想要理解演算法嗎?快跟著《吳晶辰·演算法通識16講》主理人、亞馬遜公司資深演算法科學家吳晶辰一起來看看到底“什麼是演算法”吧。 

 

既然要學習演算法,那就先要搞清楚,演算法到底是什麼? 

 

在演算法科學家眼裡,這個問題很簡單,演算法就是有輸入、有輸出的解決問題的計算步驟。可記住這句話你就懂什麼是演算法了嗎?並沒有。 

 

所以說,我們想討論的其實並不是“演算法是什麼”,而是“什麼是演算法”。 

 

請注意,這兩者是有區別的,前者告訴你一個知識,給你一個演算法的定義。後者帶你理解演算法,讓你識別出電腦做事與人類做事的核心差異。理解了這個核心差異,我們自然就懂了演算法是什麼。 

 

 

演算法對明確性有極其嚴苛的要求

 

我們先來講講,什麼是演算法。要理解這個問題,我們要先追問,電腦做事與人做事的核心差異是什麼。咱們來看這麼一個案例。 

 

有一位特別厲害的媒婆,王婆,牽線搭橋的成功率特別高。隔壁村的趙婆聽說之後,來跟王婆取經。 

 

王婆告訴她,“我給人介紹物件就看四要素:雙方離得近不近,年齡相差大不大,愛好匹不匹配,性格合不合得來。這幾條大都滿足就合適。其中性格最重要,只要性格合得來,其他條件可以適當放鬆。” 

 

趙婆學完,果然牽線搭橋的成功率顯著提升。 

 

王婆的孫子是程式師,他跟王婆說:“您把方法告訴我,我給您寫一套演算法,自動匹配,不用挨家挨戶跑去看了。”王婆聽了高興壞了,這孩子太有出息了,於是把這四要素如數家珍似的講了一遍。

 

 

 

結果,王婆的孫子很失望,“您這四要素不是演算法,電腦實現不了,要不您再想想?” 

 

這“四要素”明明幫趙婆也提高了業務能力,為什麼不是演算法呢?演算法要求有輸入、輸出、計算過程,這“四要素”方法也有啊。這輸入是男女生的住址、年齡、愛好、性格四個維度的資訊,然後做匹配計算,輸出就是匹配的人選呀。 

 

問題出在,這“四要素”的方法不夠明確。是輸入也不明確,計算過程也不明確。 

 

就拿離得遠近來說,表面上看很明確,輸入雙方住址,計算距離唄。但就算你把經緯度都要來,也解決不了“近不近”的問題。

 

 我們來分析一下,多近算近?方圓幾十公里算近嗎?你可能有過這樣的經驗,住在市中心,3公里以外都懶得去,嫌遠。住在郊區呢?10公里,開車也就一腳油的事,都算近。所以,什麼叫近,不明確。 

 

其次,離誰近?是男生和女生的家?還是包含工作地點?如果有好幾套房子呢?怎麼算?這也不明確。當出現多個地點,多個距離,怎麼處理優先順序呢?也不明確。 

 

你可能想,有這麼複雜嗎?的確,王婆親自來幹,或者教給趙婆,都沒這麼複雜。但要交給電腦來幹,那對不起,這些問題必須明確,一個都不能少。 

 

你看,這就是演算法和人的核心差異,人做事可以接受一定程度的模糊,演算法卻對明確性有極其嚴苛的要求。

 

再拿我舉個例子。我在美國難得回家,每次回家爸爸會給我做魚香肉絲,媽媽會給我烤蛋糕。他們跟我說,我們也是演算法工程師,按照菜譜做菜就是執行一套演算法。 

 

聽起來是這樣,做菜也是有輸入和輸出的計算過程。魚香肉絲要輸入豬肉、泡薑、木耳,要豬肉切絲、鹽少許、醬油少許。烤蛋糕要輸入15克黃油,30克麵粉,要放進200度烤箱,烤20分鐘。 

 

但你仔細回憶一下,魚香肉絲的輔菜稍微有點變化,或者換個人做,味道可能就不一樣了。但烤蛋糕只要嚴格遵照菜譜,誰來烤都一樣。 

 

所以從這個角度來說,魚香肉絲的菜譜不是演算法,烤蛋糕的才是。因為烤蛋糕的菜譜可以無數次複現,誰來幹都一樣。 

 

到這裡總結一下,演算法要求極其明確。當一個解決方案足夠明確,必然可以讓這個演算法無數次再現,同一個演算法,相同的輸入必然可以得到相同的輸出。不會因為執行的電腦不同、人不同,就導致不同的結果。 

 

能不能複現也是我們衡量明確性的標準。當你有一個問題要交給演算法解決,就要不斷明確每個細節,保證演算法執行之後能夠複現。所以本質上來說,演算法就是一套通過確定性保證解決問題的工具。 

 

 

模型化是演算法優勢的本質 

 

好,演算法需要明確,可只靠嚴苛的明確性,就能叱吒人類社會嗎? 

 

你可能有這樣的感覺,演算法在今天已經侵入我們工作和生活的方方面面了。找物件,可以上王婆的紅娘系統;想網購,下單一個保溫壺,購物網站會一直推薦保溫壺;想看電影,搜索一個《風聲》,各種諜戰片撲面而來。 

 

演算法是靠什麼優勢,成功“入侵”人類社會的呢?我的答案是,模型化。你可能不會想到,剛才那些看起來完全不相關的程式,背後可能是一套演算法。 

 

什麼叫模型化?簡單來說,模型化就是對不同的問題,用同樣的方式來看待,用同一套演算法來解決。 

 

購物網站、搜尋引擎,沒有“紅娘四要素”這個理論,甚至還需要調用不同行業的背景知識,但數學模型可能完全是一樣的。 

 

比如,在紅娘演算法中,人與人之間的匹配分數,可以被看成是一個“距離”問題。匹配度高,距離近;匹配度低,距離遠。距離,可以定義人和人的遠近,也可以定義商品和商品的相關性,可以定義搜索詞和電影之間的相關度。 

 

表面上,這是紅娘牽線問題、商品推薦問題、搜尋引擎問題,但在演算法工程師的眼裡,這全是“距離”問題。這就是模型化。 

 

模型化最大的價值,就是賦予演算法超乎尋常的問題遷移能力。 

 

我看過一個這樣的研究,慕尼克工業大學用演算法預測《權力的遊戲》的劇情。你看過這部美劇肯定知道,劇中人物常常意想不到就送命了。 

 

這誰活誰死,能預測嗎?還真別不信,這個團隊在最後一季上映之前就預測,龍媽是所有角色中最可能活下來的。 

 

正確與否,咱先不論,就說說這個團隊預測用的模型。他們用的是保險公司的壽命預測模型,是不是又出人意料,又合情合理?保險公司分析的什麼?是人的壽命和性別、遺傳病史、是否吸煙等等之間的統計關係。 

 

而劇情裡同樣包含了角色的壽命和他們所處的家族、配偶、聯盟資訊等關係。

 

脫去現實描述,裡面隱藏的是就用多個變數來估計一個目標變數的統計預測模型。 

 

你看,模型就是一個問題脫去現實描述外衣之後的邏輯內核。 

 

同樣一種邏輯內核可以在不同的問題中穿梭,來描述不同的現實關係。正是這種穿梭的能力,讓演算法能在不同領域中快速遷移。

 

 

 

演算法沒有好壞之分,都是人的思想

 

你可能也聽到了一些不同的聲音,演算法帶來了歧視、排斥、不公平。怎麼有的演算法“好”,有的演算法“壞”呢?我想給你送達的最後一個認知是,演算法沒有好壞,背後都是設計者的思想。 

 

咱們還是從一個案例來講。機器學習領域有一個很經典的演算法,叫K臨近演算法,在解決分類問題上很好用。 

 

比如,在做腫瘤活體實驗之前,用K臨近演算法可以通過腫瘤的特徵資訊,判斷它是良性的,還是惡性的。 

 

那具體K鄰近演算法是怎麼實現的呢?我們每看到一個新腫瘤,就把它的特徵和資料庫裡和它最相近的那幾個腫瘤進行比較。 

 

比如說,有10個最相近的,裡面8個是良性的,2個是惡性的。於是醫生可以預判,患者有20%的可能性,得的是惡性腫瘤。 

 

同樣一套演算法,也被用到對簡歷進行評分上。結果,申請人的性別成了影響預測結果的主要因素。同樣的簡歷內容,把名字改成男性的名字,演算法就給出高分,改成女性,得分就較低。這是赤裸裸的歧視啊。 

 

同一套演算法,怎麼一會“好”,一會“壞”呢? 

 

其實,如果你把這套演算法再用回到腫瘤的預測,也可能有類似的問題。把患者的性別從女性改成男性,那麼預測出是惡性腫瘤的概率也會高一些。因為男性得癌症的幾率高一些,這時候,我們不會認為演算法歧視吧。 

 

在演算法抽象模型的遷移當中,我們能接受腫瘤預測中的“歧視”,但容忍不了簡歷篩選中的“歧視”,這是演算法出了錯嗎? 

 

不是。問題出在了,應用K臨近演算法的演算法設計者對問題的理解上面。 

 

K臨近演算法認為,要預測的資料和已有的資料在分佈上是類似的。也就是說,在診斷腫瘤的時候,資料庫中的男性更容易患癌症,那麼預測的時候,男性患癌症的概率也更高。 

 

但在簡歷預測的問題中,這個假設就不一定成立,或者說不應該成立,可能過去職場就存在歧視,又或者採集的資料中男女性別不平衡出現了問題。 

 

不是演算法錯了,只是在不同場景裡,我們需要的價值偏好和設計思想不同。 

 

所以,不要對演算法評判對錯、評判好壞,演算法的模型只是人思想的體現,如果演算法出了問題,請回到人身上找問題。 

 

演算法永遠不會完美,在這裡,我借用統計學家喬治·博克斯的一句名言:“所有的模型都是錯誤的,但有些是有用的。”演算法也一樣,沒有好壞,有用就好。

 

 

 

 

 

 

文章來源: 羅輯思維
 
我要回應
我的稱呼
回應 / 意見
驗証文字
 
 
 

 

Copyright © Easy Property Co., Limited. All Rights Reserved.