前一篇討論了人工智慧/機器學習中的歧視與刻板印象的強化,
這篇要繼續延伸討論另一個相關議題:
難以被理解的複雜模型。
儘管複雜的東西本來就比簡單的東西難理解,
很多時候要理解一樣複雜的東西,
需要很多背景知識。
但機器學習之中卻有很多複雜的東西,
是沒有人知道它為什麼可以得到好的結果的。
也就是說,就算是專業的人工智慧科學家,
也不一定總是可以理解為什麼對機器學習的模型,
做出某一個調整後,能夠得到好的結果。
在比較早期機器學習發展的時候,
常見的一些機器學習模型設計,
像是決策樹(Decision Tree)或是
支持向量機(Support Vector Machine)、
他的複雜度可能是來自於很多的特徵值,
或是基於基本模型延伸更複雜的設計,
像是決策森林(Decision Forests),
或是使用一些變換函數(Kernel Function)去改變
資料的基本分佈空間等等的。
還有每個模型都會有一些「參數(Parameters)」
一但變得複雜,很多時候可能即使是人工智慧科學家,
也不一定可以很好掌握該怎麼樣可以改進結果,
或是即使改進了,也沒有很好的方式解釋為什麼。
這個情況在非監督式學習裡也有。
例如「分群(Clustering)」的問題,
也就是根據資料的性質,把它分成N個族群。
很多時候分群的結果都很難被理解。
另一個非監督式學習的問題是
「主題模型(Topic Modeling)」,
也就是把文本自動分成N個主題的問題,
他也是一種分群的問題,
但他強調文本之間的關聯性。
其中最常見的演算法叫做
「Latent Dirichlet Allocation(LDA)」,
它的原理是根據字詞在文件中出現的頻率,
一個字如果在越少文件出現,
但出現很多次,
你可以想像他是一個主題比較關鍵的字。
比如說我在討論前端開發會出現很多Angular啊,
React啊,這些著名的前端框架,
但在其他主題裡這些字較少出現,
你就可以說Angular/React是前端開發的主題的代表字。
然而這個演算法也是理論非常漂亮,
但實務上去做,很多時候很難解釋為什麼得到那樣的結果,
很多推出來的主題也都很不合理。
這樣的情況,在現在當紅的深度學習(Deep Learning)更加嚴重了。
在這個系列前面提到心理學時有提到,
深度學習是基於一種腦神經元網路的模型,
他跟傳統的機器學習模型不一樣的是,
很多特徵值的變化變成了直接由結構產生,
在訓練模型時會自己做特徵值篩選。
這是什麼意思呢?我們可以想成,
傳統的機器學習的特徵值,
如果你想要有衍生的特徵值,
你得要自己去生成。
像是如果我要做上面的主題模型,
除了單一字的關鍵字之外,
如果我要拿詞組拿做特徵值,
我得自己去計算詞組,
然後加進去特徵值的集合。
但在深度學習裡,
這些衍伸計算都可以是網路架構的一部分,
所以機器在學的時候,
這些也會變成學習的一部分。
這樣的好處是他變得可以更加細節地去學習,
但壞處就是他變得更加複雜,
我們很難去說改變深度學習模型的一個部分,
或是再多加什麼資料,
對於模型的影響是什麼。
在越來越複雜的情況之下,
訓練模型的人,很多時候可能就是把所有的可能性試過一次,
看哪一個比較好,就用哪一個模型。
實際上為什麼會比較好,模型實際上學了什麼,
都變成一個黑盒子(Blackbox),
讓人無法理解。
這個問題在近幾年越來越受到重視,
後來形成了一個新的領域叫做「可以解釋的人工智慧(Explainable AI)」。
在下一篇我來更仔細地談這個部分。