自從AlphaGo赢了之後,人工智能就變得非常熱門了。不過,大家在關注“智能”時,卻很少把注意力放在“人工”上,似乎感覺上了人工智能之後,一切都能自動化了。其實,這份智能的背後有着大量的“人工”,還有相當多不能自動化的事情。
這裡的"人工"主要展現在兩個方面:
1. 資料準備
現代的人工智能技術,或者說機器學習,其基本方法和N多年前的資料挖掘并沒有什麼太大的不同,也還是将大量資料喂給計算機用于訓練模型,模型生成之後就可以用于自動化處理,看起來就像有了智能。
然而,用于實際業務的機器學習項目,并不像AlphaGo那樣可以自己生成資料來訓練(其實AlphaGo的前期版本也用了大量現存的棋譜),必須使用實際發生過的資料才能訓練模型。不同的資料訓練出來的模型完全不同,資料的品質嚴重影響模型的效果。
但是,實際的資料五花八門,散落在各個應用系統中。想把它們整理出來供算法使用,并不是一件容易的事。機器學習需要的常常是比較規整的寬表資料,這還需要把各個應用系統中的關聯資料拼接到一起;而各系統的資料編碼規則可能不一樣,這還需要先統一化;有些資料還是原始的文本(日志)形式,還需要事先從中抽取出結構化的資訊;更不要說還有從網際網路上扒出來的資料。
有經驗的程式員都知道,一個資料挖掘項目中,用于資料準備的時間大約會占到70%-80%,也就是說,絕大多數工作量都花在訓練模型之前。
這其實就是我們常說的ETL工作了,這些事看起來沒什麼技術含量,似乎是個程式員就能做,人們也就不很關心,但成本卻高得要命。
2. 資料科學家
ETL整理好的資料,也仍然不是那麼好用的。還需要資料科學家來進行進一步處理才能進入模組化環節。比如有些資料有缺失的,那麼需要有某種辦法來補缺;資料的偏度太大,而很多統計學方法要假定資料分布要盡量滿足正态分布,這就需要先做一遍糾偏;還需要根據業務情況生成衍生變量(比如從日期生成星期、節假日等)。這些工作雖然也是模組化前準備工作,但需要較專業的統計學知識,我們一般不把它算作為ETL的範圍。
機器學習的模組化算法有好幾十種,各種算法都有各自的适用範圍,還有大量的參數需要調節。如果用錯了模型或調錯了參數,那就會得到非常不智能的結果了。這時候又需要資料科學家們不斷地嘗試,計算并考察資料特征,選用合理的模型和參數,根據結果再反複疊代,經常較漫長的時間才能建一個實用的模型出來,短則二三周、長則二三月。
不過,近年來也出現一些完全自動疊代的手段(主要是神經網絡),但計算時間很長,而且在許多領域(如金融風控)的效果并不太好,更有效的仍然是由資料科學家主導的方案,然而資料科學家們又少又貴。
是不是覺得現在的技術還有點low?人工智能的背後原來一點也不智能!
原文釋出時間為:2018-04-19
本文作者:蔣步星
本文來自雲栖社群合作夥伴“
資料派THU”,了解相關資訊可以關注“
”。