重溫五條 AI 基礎規(guī)律
?本文詳細介紹了5條幫助工程師們處理技術(shù)問題的基礎AI規(guī)律,enjoy~
如果每個人都有足夠的時間和熱誠,并樂意去大學拿個 AI 學位,那你大概就不會讀到這篇博客了。
雖說 AI 的工作方式挺神秘的,但在處理技術(shù)問題的時候,以下這五個 AI 原則應該可以幫你規(guī)避一些錯誤。它們對于當代的基于統(tǒng)計學習的機器學習(Machine Learning)系統(tǒng),尤其是深度學習(Deep Learning)系統(tǒng)尤其適用。
這篇來自eloquent.ai博客的文章所說的,總結(jié)起來就是這 5 條 AI 原則:
- 利用未曾見過的數(shù)據(jù)評估AI系統(tǒng)
- 更多數(shù)據(jù)可以帶來更好的模型
- 有效數(shù)據(jù)的價值遠遠超過無效數(shù)據(jù)
- 從一個簡單的基線開始
- 人工智能并不是魔法
給大家一個小小的忠告——通過對機器學習的基本理解,這篇文章將更有意義。
一、利用未曾見過的數(shù)據(jù)評估AI系統(tǒng)
在上一篇文章中,我們介紹了如何構(gòu)建分類器以將圖像標記為貓(綠色圓圈)或狗(藍色三角形)。
在將我們的訓練數(shù)據(jù)轉(zhuǎn)換為向量之后,我們得到了下面的圖表,其中紅線表示我們的“決策邊界”(即將訓練數(shù)據(jù)轉(zhuǎn)換為向量后,這條“邊界線”就將圖像劃分為貓和狗)。
顯然,圖中的決策邊界錯誤地將一只貓(綠色圓形)標記標記成了狗(藍色三角形),即遺漏了一個訓練個樣本。那么,是什么讓訓練算法沒有選擇下圖中的紅線作為決策邊界呢?
在這兩種情況下,我們對訓練集進行分類都得到了同樣的準確率——兩中決策邊界都標錯了一個例子。但是如圖示,當我們在數(shù)據(jù)中加上一只未出現(xiàn)過的貓時,只有左圖的決策邊界會正確地預測這個點為貓:
分類器可以在用來訓練它的數(shù)據(jù)集上工作得很順利,但它未必適用于訓練的時候沒有見過的數(shù)據(jù)。
此外,即使分類器在特定類型的輸入(例如,室內(nèi)場景中的貓)上工作良好,它對于相同任務的不同數(shù)據(jù)(例如,室外場景中的貓)也可能無法很好地工作。
盲目地購買 AI 系統(tǒng)而不對相關(guān)的未知信息進行測試,可能會付出很大的代價。
一種測試未知數(shù)據(jù)的實用方法是——先保留一部分數(shù)據(jù)不提供給開發(fā)人工智能系統(tǒng)的企業(yè)或個人,然后自己通過生成的系統(tǒng)運行這些保留數(shù)據(jù)。最不濟,也得保證你能自己試用才行。
二、更多數(shù)據(jù)可以帶來更好的模型
如果給你下面的訓練數(shù)據(jù)集,你會把決策邊界畫在哪里?
你想的可能沒錯——許多決策邊界可以準確地分割這些數(shù)據(jù)。
雖然下面的每個假設決策邊界都正確地分割了數(shù)據(jù),但它們彼此之間的差別很大,正如我們上面所看到的,其中一些可能會在目前尚未見到的數(shù)據(jù)(也就是你真正關(guān)心的數(shù)據(jù))上更糟糕:
從這個小數(shù)據(jù)集中,我們不知道這些彼此不同的決策邊界中,究竟哪一個最準確地代表了現(xiàn)實世界。缺乏數(shù)據(jù)會導致不確定性,因此我們得收集更多數(shù)據(jù)點,并將其添加到初始圖表中,則可得到下圖:
額外的數(shù)據(jù)能幫助我們大幅縮小選擇范圍,立即畫出綠色和藍色間的決策邊界,因此決策邊界會是如下所示:
當機器學習模型表現(xiàn)異常時,潛在的問題通常是模型沒有經(jīng)過足夠或正確的數(shù)據(jù)訓練。盡管更多的數(shù)據(jù)幾乎總是有幫助,但需要注意,數(shù)據(jù)越多可能得到的回報卻在減少。當
我們將第一個圖的數(shù)據(jù)加倍時,準確度明顯增加。但是基于該圖表,如果將數(shù)據(jù)再加倍,則精度的提高不會有之前那么大。
準確度隨著訓練數(shù)據(jù)的數(shù)量大致呈對數(shù)增長,因此從 1k 到 10k 個樣本可能比從 10k 到 20k 個對準確性產(chǎn)生更大的影響。
對于我個人來說,這一條特別忌諱,尤其是對于預算緊張的創(chuàng)業(yè)公司:你們經(jīng)常給ML工程師支付數(shù)高額薪水,但也請確保提供足夠的預算和時間來讓他們仔細收集數(shù)據(jù)。
?三、有效數(shù)據(jù)的價值遠遠超過無效數(shù)據(jù)
在上面的例子中,雖說有更多的數(shù)據(jù)會對訓練有所幫助,但前提是它們足夠準確才行。
還是前面的例子,在收集了附加數(shù)據(jù)之后,可以得到一個這樣的圖形和一個決策邊界,如下所示:
但是,如果這些新數(shù)據(jù)點中的一些其實是被錯誤標記了,而真是情況是下面這樣的呢?
我們要注意,雖然這些標記錯誤的點與第一個圖中的點坐標相同,但它們代表的意義已經(jīng)改變。
這導致了一個完全不同的決策邊界:
即使只有四分之一的數(shù)據(jù)集被錯誤標記,但很明顯,錯誤的數(shù)據(jù)會對我們的模型構(gòu)建有重大影響。
我們可以在訓練期間使用一些技術(shù)來減少標記數(shù)據(jù)時的錯誤,但這些技術(shù)作用有限。在大多數(shù)情況下,清理基礎數(shù)據(jù)更加容易和可靠。
這里的要點是“有效數(shù)據(jù)”至關(guān)重要,有效數(shù)據(jù)意味著數(shù)據(jù)準確標記,意味著數(shù)據(jù)合理涵蓋了我們想關(guān)注的范圍,也意味著訓練集中同時存在簡單案例和困難案例等等。
因而決策邊界沒有那么多的擺動空間,只有一個“正確”的答案。
四、 從一個簡單的基線開始
這并不是說你應該嘗試了一點簡單的東西就覺得滿意然后停下來。
即便你最終的方法既現(xiàn)代又復雜,通過這條原則,你也會開發(fā)得更快,并且最終的結(jié)果也會更好。
我可以舉一個關(guān)于我自己的真實例子,當我讀研一時,我們實驗室的同學兼 Eloquent 的研究員 Angel 和我參與了一個項目,我們各自將語言里描述時間的詞轉(zhuǎn)化成可供機器閱讀的格式。
本質(zhì)上來說,就是試圖讓計算機理解諸如“上周五”或“明天中午”之類的短語。
由于這些項目是申基金所必需的,Angel 致力于一個實用性強,有確定性的規(guī)則系統(tǒng)。她為了讓這個系統(tǒng)能實用起來而絞盡腦汁。
而我當時只是一個在實驗室輪崗的學生,團隊讓我自主選擇任何花哨的方法,就像糖果店里的孩子一樣。我探索了最時髦、最動人的語義解析方法。
在我的項目中,我運用了 EM、共軛先驗、一個完整的自定義語義解析器等等新奇的方法。
差不多十年之后,我很高興還留下了一篇受到好評并且引用數(shù)還行的論文。然而,Angel 的項目 SUTime 呢,現(xiàn)在是斯坦福流行的 CoreNLP 工具包中最常用的組件之一——簡單的方法擊敗了時髦的方法。
你可能以為我已經(jīng)吸取了教訓,然而幾年之后,當我成為一名高年級研究生時,我要讓另一個系統(tǒng)啟動并用于另一個基金項目。
我再一次試圖訓練一個花哨的機器學習模型,但幾乎沒有做出什么成果。有一天我覺得無比失敗和沮喪,以至于我甚至開始寫“模式”。
“模式”就是一些簡單的確定性規(guī)則。比如,當一個句子包含“出生于”這個詞時,則假設這是一個出生地。模式不會學習,作用有限,但它們易于編寫且用起來合理。
最后,基于模式的系統(tǒng)不僅勝過我們原來的系統(tǒng),它后來還被加到了 NIST 排名前 5 的系統(tǒng)中,并深深影響了那些基于機器學習的模型高性能系統(tǒng)。
結(jié)論就是:先做簡單的事。當然了,我們還有其他更好的理由:
1. 它會給你的最終模型的性能提供一個安全的最低值
當你做出一個簡單的基準模型之后,你會希望任何聰明的東西都會擊敗它。幾乎不會有什么模型會比一個基于規(guī)則的模型表現(xiàn)還要差。
這給你的更高級的方法提供了一個比較,如果你的高級方法的表現(xiàn)更差,那意味著你有什么東西徹底做錯了,并不是任務太過艱巨。
2. 通常簡單的方法需要較少的或不用訓練數(shù)據(jù)
這就使你可以在沒有大量數(shù)據(jù)投資的情況下進行原型設計。
3. 它經(jīng)常會揭示出手頭任務的難度
這通常會向你指明如何選擇更好的機器學習方法來處理這些困難的部分;此外,它還能向你指明如何給需要更多數(shù)據(jù)的方法收集數(shù)據(jù)。
4. 簡單的方法一般只需要很少的額外努力就可以泛化到未見過的數(shù)據(jù)上
(記?。嚎偸怯媚P蜎]有見過的數(shù)據(jù)來評估模型?。└唵蔚哪P屯菀捉忉專@使得它們更具可預測性,因此讓它們向沒有見過的數(shù)據(jù)上泛化的過程也更明了。
五、人工智能并不是魔法
這句話是我經(jīng)常掛在嘴邊的。
大家雖然表面上都表示贊同,但心里未必真的服氣,因為人工智能看起來就像魔術(shù)一樣。
在談到 Eloquent 人工智能的宏偉未來計劃時,我對曾經(jīng)反復強調(diào)這個錯誤觀念感到內(nèi)疚。
我從訓練機器學習模型的細節(jié)中得到的越多,模型看起來就越看起來不像是曲線的擬合,它們看起來更像一個黑匣子,我可以付出一些代價來進行操控。
人們很容易忘記,現(xiàn)代機器學習領域還很年輕——只有二三十歲。與現(xiàn)代機器學習工具包的成熟度和復雜性相比,整個領域仍然相當不成熟。它的快速進步使人們很容易忘記這一點。
機器學習的一部分邪惡之處在于它具有內(nèi)在的概率性。它在技術(shù)上無所不能,但不一定達到你想要的準確度。
我懷疑在許多機構(gòu)中,在組織結(jié)構(gòu)圖上添加新東西時,“準確度”的細微差別被漏下,只留下“人工智能可以做任何事情”的敘述部分。
你如何將不可能與可能分開?
我嘗試遵循一些最佳做法:
1. 與實際訓練模型的人交談
不是團隊領導,不是部門主管,而是讓模型訓練代碼運行起來的人。他們通??梢愿玫亓私饽P偷墓ぷ髟砑捌湎拗啤?/p>
確保他們愿意隨時告訴你,你的模型有限制并且在某些方面表現(xiàn)不佳。我敢保證,無論他們是否告訴你,你的模型總會有一些不行的方面。
2. 對于NLP項目可以使用一個快速又繁雜的基于規(guī)則的系統(tǒng)來檢查任務的可行性
機器學習是一種很好的方式,可以用來生成一個非常大且模糊的、很難用人工的方法寫下來的規(guī)則集。
但如果一開始你就很難寫下一套合理的規(guī)則來完成你的任務,那這通常是一個不好的跡象。
然后,收集一個小數(shù)據(jù)集并嘗試使用你學習到的系統(tǒng)。
接下來是一個稍微大一點的數(shù)據(jù)集,并且在你獲得表現(xiàn)提升時繼續(xù)這樣做。一個重要的經(jīng)驗法則就是:準確度隨著數(shù)據(jù)集大小的對數(shù)而增長。
3. 永遠不要相信高得出奇的準確性:任何超過 95 或 97% 的數(shù)值
同樣地,不要相信任何高于人類輸出平的準確性,或者高于一致性評價。
很大概率上,要么是數(shù)據(jù)集有缺失,有么是評估不完善。兩者都經(jīng)常發(fā)生,即使是對于經(jīng)驗豐富的研究人員。
作者:Gabor Angeli
翻譯:劉肉醬
來源:https://blog.eloquent.ai/2018/09/18/5-fundamental-ai-principles/
本文來源于人人都是產(chǎn)品經(jīng)理合作媒體 @雷鋒網(wǎng),翻譯@劉肉醬
題圖來自Unsplash,基于CC0協(xié)議。
5條AI建設的原則:
利用未曾見過的數(shù)據(jù)評估AI系統(tǒng)
更多數(shù)據(jù)可以帶來更好的模型
有效數(shù)據(jù)的價值遠遠超過無效數(shù)據(jù)
從一個簡單的基線開始
人工智能并不是魔法