最近,上網遇見的驗證碼「越來越有內容」了。為了證明自己是真人,除了輸入方框裡的文字,還得從下面圖中挑出路牌、交通號誌這種事。
連續遇到好幾次後,突然醒悟:這哪是在填驗證碼,根本就是在幫別人標記資料,訓練 AI 啊! 不管是幫圖片分類: 幫路標描邊: 還是選出路標: 感覺都是在教自動駕駛的 AI 認路啊。
其實,「輸驗證碼就是幫 AI 工作」並不是筆者想太多。我們在輸驗證碼時義務勞動的歷史,從古早文字驗證碼時期就開始了。
每次輸入驗證碼,你都在當義工今天,應用最廣的驗證碼系統就是 reCAPTCHA (Completely Automated Public Turing Test To Tell Computers and Humans Apart,區分人機的全自動圖靈測試系統)了。
這家被 Google 收購的公司,承擔了世界大部分網路人機驗證工作(上述 3 個例子均來自 reCAPTCHA)。
2007 年,reCAPTCHA 創始人之一,卡內基美隆大學教授路易斯‧馮‧安(Luis von Ahn)想到:「如果人類與機器各有擅長,能否利用驗證碼系統,讓人類和機器共同解決問題?」 當時亟待解決的問題就是,如何把浩如煙海的人類紙質典籍數位化。
想要數位化文字,一種方法是人工輸入。這種方法費時費力,還容易出現錯誤。另一種方法是先掃描文件,再結合光學文字辨識技術轉成文字檔。聽起來很美,但有些年代久遠或本身品質就差的文件掃描後實在太糊了…… 以至於電腦辨識漏洞百出,根本沒法看。 為了解決文件數位化的問題,2007 年,路易斯推出新的驗證碼系統 reCAPTCHA。
reCAPTCHA 驗證碼系統裡,一個驗證碼由兩部分構成。
第一部分和傳統驗證碼一樣,是自動生成並經過變形處理的文字,用來檢驗你是不是真人。第二部分,則是從無法辨識的文字檔截取出來的詞。 如果用戶正確輸入前半部,那 reCAPTCHA 就會假設用戶輸入的後半部也是正確的,然後把錄入結果傳回 reCAPTCHA的主機。
傳回主機後,主機還會把結果再派發給多個用戶交叉驗證,確保沒有不小心或故意輸錯單詞。
也就是說,真正有效的人機測試在驗證碼前半段已完成,後半段就是用戶義務為人類文明貢獻了。
那麼,reCAPTCHA 到底貢獻多大?
2007 年推出之初,reCAPTCHA 每天都幫助錄入 3 千萬個字元。2008 年,數字飆升到 6 千萬個。粗略統計,全世界每天都有 2 億個字元透過 reCAPTCHA 錄入,相當於人類 15 萬小時工作量。
也就是說,一個人要不吃不喝不睡兩年半,才能完成 reCAPTCHA 一天的工作量。
到今天為止,reCAPTCHA 已錄入從 1851 年至今所有《紐約時報》,共計 1,300 萬篇文章。除《紐約時報》外, reCAPTCHA 還數位化超過 2,500 萬本書,而全球圖書數量約 1.3 億本。 路易斯接受媒體 The Hustle 採訪時這樣評價 reCAPTCHA :「我創造了一個系統,以十秒為單位,數百萬小時為增量,來利用世界最寶貴的資源:人的大腦。」
驗證碼在剝削我們?如果 reCAPTCHA 的故事到這裡就結束了,每個人都會很開心。但事情沒那麼簡單。
2009 年,Google 以約 2,780 萬美元收購 reCAPTCHA,並開始利用 reCAPTCHA 幫助標記資料。
正如前文所說,reCAPTCHA 前半段是在驗證你是不是真人,後半段就是真人為驗證碼工作了。
2012 年,Google 開始把 Google 街景難以辨識的門牌和路標加入驗證碼,請用戶幫忙標記。 除了標門牌路標,使用戶幫忙分類資料庫也是常見形式。比如下圖這種請用戶「挑出所有包含路標的圖片」驗證碼。 如今,Google AI 已能精確辨認路標文字和數字,準確度和人不相上下。
當有一天我們終於能使用 Google 的自動駕駛技術,依靠 AI 辨識路標和路燈等等時,這背後無法說沒有上千萬用戶無償標記的功勞。 對這目的,Google 也不否認。在 reCAPTCHA 官網,Google 公開說明 reCAPTCHA 集眾人之力標記資料、訓練 AI 的「眾包」模式。 但仍有用戶表示不滿。
一位覺得驗證碼不道德的 Reddit 用戶寫:「這就好像讓幾百萬個人每人為你做 5 秒工作,然後一毛錢都不給,這對嗎?」 驗證碼的前世今生驗證碼誕生之初,是為了解決一個切實的問題。
網路世界這麼大,你怎麼知道另一端是不是一隻狗(或機器人)?
在公開版面,刷評機器人可用大量垃圾評論和廣告淹沒真人用戶的有價資訊;在金融交易平台,程式可靠不停試驗來暴力破解密碼;在票務網站,我敢說你就算有十隻手也搶不過自動刷票的黃牛。
如何確定網路要求是真人傳送,成了維護網路環境和保護用戶安全的大問題。
2002 年,正是路易斯‧馮‧安提出了切實可行的解決方案,能分清對面「是人是狗」。
雖然電腦運算和分析能力比人類強,但當時的電腦連「一隻小貓在跑」這種難不倒 3 歲小孩的圖都認不出來。基於這種思想,路易斯和其他同事合作開發了 reCAPTCHA 的祖先 CAPTCHA,也就是俗稱的驗證碼。
初代驗證碼一般是一些經過扭曲變形的文字或數字。人類可辨識這些文字(儘管偶爾也會出現連人類也認不出的情況),但機器難以理解字元的含義。 之後驗證碼也經歷了算數題、選擇題,甚至植入廣告等更新,但都掩不住最致命的問題:雖然 CAPTCHA 已是相對較好的解決方案,但並非完美。
透過撞程式庫、人工智慧辨識影像、甚至把驗證碼圖片傳回給人工再批量輸入等方法,駭客總能為垃圾程式檔找到可乘之機。
更別提有些驗證碼,連真人都搞不定! ▲ 加分題:請點擊圖中所有郭采潔和夏雨喬(圖片來源:鄉民網友自製的惡搞圖)。
正因為驗證碼浪費時間,辨識難度大,且對執行某些特定行為(比如爬資料或做學術研究)的人類用戶而言極不友善,驗證碼長期在「網路時代最煩人發明」榜上名列前茅。
於是, reCAPTCHA 推出更科學的驗證系統。這種驗證系統會偵測用戶的用戶端環境,追蹤用戶的滑鼠和鍵盤作業軌跡,提高機器人的模擬成本。用戶再也不需要苦哈哈辨識歪歪扭扭的文字,只要點擊「我不是機器人」對話方塊,就能通過驗證。 既然已有更簡單、更安全的方式,那麼伴隨我們成長的驗證碼,是不是也該淘汰了呢?這種能解決大問題的「眾包模式」,又是否合理呢? |