神奇的二進位
「有個女生抱著一摞書出圖書館,探測儀響了。女生慌忙放下書一本一本過探測儀。看門阿姨看到說,虧你還是個大學生,於是阿姨把一摞書分成兩半,一半一半地過探測儀,很快找到了觸發警報的那本書。……」
這個網上的段子中圖書館阿姨採用了指數效應的logN原理,化繁為簡,最快速地找到問題。那麼,再往深處思考,為什麼要採用2的底的對數呢? 為什麼不把書分為3份,豈不是更快?原因很簡單,因為探測儀檢測的結果只有2種——是與否,而分為3份的書無法在一次檢測中就確定觸發警報的書在哪一摞中。探測儀檢測的結果只有是與否2種,卻可以在很少的次數內檢測無論多麼「巨大」的書庫。如果把是與否用0和1表示,就是本文要談的二進位。
0 與 1的編碼
隨著上世紀第一台電子計算機的問世,人類進入到了信息社會,而信息社會裡面所有的信息如文字、圖片、音頻、視頻、虛擬現實等,背後都是0與1的比特串。也就是說,僅僅通過0和1,我們就可以表達映射整個世界。
二進位難道只是一個現代科技創新的發明嗎?顯然不是。空間上有上下、左右、前後,時間上有過去有未來、有快有慢、有長有短等等,我們認知世界的方法就是靠一個一個維度,而每個維度與生俱來就有兩個方向。1的N次方永遠為1,2的N次方卻趨近於無窮,我們可以利用每一個維度的「2」的特性表達無限的信息。
假設這樣一個場景,你和距離很遠的同伴只能通過一個手電筒進行溝通,由於距離太遠,想通過手電筒畫出漢字或英文字母的嘗試非常困難,那麼怎麼辦?顯然只剩下唯一的選擇,控制手電筒亮的長短進行傳遞信息,非常簡潔容易識別。剩下的只需要你和同伴之間約定一長一短代表什麼字母、兩長一短又代表什麼等等,對於26個英文字母來說,這個相當容易,而且需要的次數很短,最多4到5次足以。
上面手電筒只是一個簡單示例,在計算機發明之前,世界範圍內廣泛應用的二進位編碼就是著名的摩爾斯電碼。它由兩種基本信號組成:短促的點信號「·」,讀「滴」(Di);保持一定時間的長信號「—」,讀「嗒」(Da)。通過這些嘀、嗒就能夠非常方便的表示26個英文字母等,如下所示:
0 與 1 的計算
二進位的編碼可以表達無限的信息,但如果只是編碼,那它也僅僅只是個好看的花瓶而已。現代計算機的偉大之處還在於,我們能對任何信息進行計算,那麼這麼強大而不可思議的計算是怎麼實現的呢?從一個簡單的加法運算的實現我們就能理解它的奇妙之處。
加法的基本計算過程是先把每一位對齊,從最低位開始計算,並逐步進位。對應到二進位,你會發現整個過程變得極度的簡單。如下所示,單獨看每一位的計算:
由於會存在進位,所以把位的相加計算拆分為兩部分,一個是和的計算,一個是進位的計算,分別如下:
這哪裡是我們熟悉的10進位加法運算,分明就是簡單的布爾邏輯運算。
1)先看進位的運算
它直接對應的就是AND邏輯與運算。
2)再看求和的計算
它與 OR邏輯或 和 NAND邏輯與非 的運算都很像,只差一位,如下所示:
稍微思考就可以發現,可以再對 OR 和 NAND的結果再做一個AND邏輯與運算就可以得到我們要的結果。
至此,二進位的加法運算其實就是對每個位進行 OR 、NAND、AND 3種邏輯運算即可,中學物理裡面最基本的電路就可以做到。對於AND 運算,把兩個繼電器開關串聯即可;對於 OR 運算,把兩個繼電器開關並聯即可;對於 NAND運算,對AND運算加上反向器即可。當通過電路實現了最基本的加法器之後,就可以構造用加法實現減法、乘法、除法以及計算貸款、發射衛星等所有複雜的現實世界的運算。
0 與 1 的智能
如果只是單純的計算,那麼計算機也不過只是一個計算工具而已。事實上,從計算機誕生起,人類對通過計算機實現人工智慧的追求就沒有停止過。隨著計算機存儲與計算能力指數級的增長,人類通過計算機實現人工智慧的腳步原來越快,2016年3月,代表人工智慧技術最前沿的AlphaGo 與韓國圍棋大師李世石的人機對決更是引爆了人工智慧。隨後這兩年落地的應用越來越多,可以說無處不在,從高鐵站的人臉識別到智能手機助手的人機對話,從電商的精準購物推薦到導航的最優路線規劃,從替代醫生的智能醫療診斷到代表未來交通的無人駕駛等等。而實現這些令人驚嘆的人工智慧應用的背後,是一個叫深層神經網路的技術。那麼深層神經網路到底是什麼呢?
如上圖所示,深層神經網路實際上就是由很多分層堆疊連接的一個個神經元組成的網路。人工智慧要做的就是以這樣的一個網路結構來去做到從inputs -> outputs 的計算,比如對應於人臉識別,輸入的是人臉的清晰圖像,輸出的是代表該個體的人臉編碼,再比如無人駕駛,輸入的是汽車感測器等收集到的實時圖像等其他信息,輸出的是汽車的駕駛操作等等。
而基於深層神經網路能夠做到人工智慧的關鍵就是,這樣的神經網路模型具備「無限」擬合從 inputs到 outputs 的能力,因此我們才能通過訓練模型參數得到各種各樣複雜的AI。那麼組成具備「無限」擬合能力的神經網路中的一個個神經元到底是什麼呢?它具有什麼樣的魔法?
如上圖所示,每個神經元其實只做了2個計算步驟:
Step 1:將連接到該神經元的輸入進行線性加權求和
Step 2:對求和後的結果做一個非線性的變換,如sigmoid函數、tanh函數、relu函數等
就是這樣簡單,然後通過許多這樣的神經元組合成深層神經網路,卻創造了無限擬合的能力。線性加權與非線性激活這兩步,就好像 0 和 1 ,創造了無限可能,創造了AI截止到目前為止最好的實現。
啟示
神奇的二進位給我震撼的其實就是這樣的一個公式 「1=1,1+1=無限」,從而給我兩個啟示:
第一,辯證思維。「曲則全,枉則直,窪則盈,敝則新,少則得,多則惑」,如果我們看待或追求事物的思維永遠是全、直、盈、新、多等,不去看另一面,那就好像0與1的世界裡面大部分都是靜止不動的0 或 1,會局限,會狹隘,會迷惑。辯證的看問題,是更透徹認識這個世界的根本方法。
第二,大道至簡。需要做好技術編程,好幾十種語言幾百個框架;想去做好管理,好多理論學派幾百本書籍;想去學營銷推廣,層出不窮的概念與幾千個案例。怎麼學?如果每學習一個事務都需要從「從零開始」,那麼我們永遠只能在追趕。好的道理都是相通的,就好像深度神經網路的線性加權與非線性激活就可以「無限擬合」,牛逼的人必須找到自己的「極簡」方法論,構建對複雜世界的認知。
TAG:聽雨三十年 |