古人常說「鶴立雞群」來表示某人的才華出眾,高於常人,不同凡響。但如果這句話套用在製造業時則可能會讓生產者和消費者都不太高興,因為沒有人想拿到一個超出(或不足)生產標準的瑕疵品。因此如何穩定生產,即時找出異常生產數據的「異常偵測(Abnormal Detection, AD)」[1]技術就成了「工業4.0」及「智慧製造」不可或缺的一項技術指標。
目前有很多產業及領域都可以運用人工智慧(Artificial Intelligence, AI)或機器學習(Machine Learning, ML)技術來進行「異常偵測」,包括像網路資安入侵、股匯交易、電商消費、金融盗刷、保險詐欺、醫學生理訊號、生產設備運作及環境感測等。而智慧製造領域中,如馬達(速度、電流、雜音)、震動、溫度、噪音及亮度都是需要被長期監測的。另外進階的電腦視覺(Computer Vision, CV)或自動光覺檢測(Automated Optical Inspection, AOI)系統更是生產品質控管的最佳幫手。這麼多領域所需要的異常偵測技術各有不同,無法一次道盡,本文將先針對傳統加工製造業最常遇到一元分類(或稱一類分類)(One-Class Classification, OCC)異常偵測開始說起。
一般人工智慧最常使用的監督式學習(Supervised Learning, SL)二分類算法(或稱模型)在正例(異常品)、負例(正常品)數量接近時通常表現不錯。但現實狀況常會遇到負例可能超過90%甚至高到99%,正例樣本非常難收集,在如此不平衡的數據集下幾乎難以訓練出合用的模型。加上大部份的生產者可能都定不出真正的正例的種類及進一步的分類規範,所以加深了導入監督式學習分類算法的難度。因此透過非監督式(Unsupervised Learning, UL)的一元分類(把所有資料都假設為正常品)[2][3][4][5]自動找出各項參數(資料維度)合理區間,即可有效分離出異常(離群點Outlier)內容,這樣是較容易實現及導入的方式。目前常見作法有「基於支持向量機式」、「基於深度自動編碼器式」及「基於生成對抗網路式」,接下來就分別為大家說明不同方式的原理、優缺點及如何從人工監督走向「智慧製造」。
基於支持向量機式
傳統機器學習領域的支持向量機(Support Vector Machine, SVM)常用於二分類,主要概念是找出資料中一個(多維)超平面(Hyper Plane)能完美分割二組(正例、負例)數據(如Fig. 1左上圖)。借鑑這條思路,可延伸變成找出一個(多維)超球體的中心c及半徑r來包圍所有已知數據(只有正常一類),而這種方法稱為支持向量數據描述(Support Vector Data Description, SVDD)(如Fig. 1右上圖)。
但這種方式對於資料維度過高或資料分佈不集中時,不容易找到合適的超球面半徑,或者找到的超球面很容易包含到異常資料(離群點)。如Fig. 1下圖所示,若資料為一直角形分佈,當設定資料間為較小高斯分佈時,則聚合出的邊界就較貼近真正需求,隨著高斯分佈的半徑增加時,則就接近一個球體,當異常點出現在左上角時就容易被誤認為是正常資料。
Fig. 1左上:SVM二元分類示意圖,右上:SVDD一元分類示意圖,下:不同高斯分佈產生一元分類超球面示意圖。[4](點擊圖放大) |
基於深度自動編碼器式
在深度學習中有一種非監督學習技術,稱為自動編碼器(Auto Encoder, AE)(如Fig. 2上圖所示)。它可以將高(多)維資料經過多層神經網路將其編碼(或稱壓縮),提取出特徵後,再將其還原解碼(或稱解壓縮)回相同維度資料,仍能保持接近原始內容的特性。
當資料分佈不均勻或維度過高時,利用SVDD常會找不到合適的超球面圓心及半徑,此時若先將資料使用深度自動編碼器(Deep Auto Encoder, DAE)方式提取出特徵(或稱降維),將資料分佈轉成低維度資料,如此就較容易使用SVDD找到新的超球面圓心、半徑,正確找出離群點,如Fig. 2下圖所示。雖然這種方式雖可大大簡化找尋特徵的時間,但實務上究竟需要多少層、多少個特徵才能充份表達特定資料集的特性就需要花點時間測試一下,並非一體適用。
Fig. 2 上:深度學習自動編碼示意圖。下:基於深度學習自動編碼式一元分類示意圖。[5](點擊圖放大) |
基於生成對抗網路式
在深度學習技術中,生成對抗網路(Generative Adversarial Network, GAN)常用來產生一些看似真實但其實不存在的資料,以滿足資料集不足或分佈不平均的問題,例如常見的偽人臉產生器Deepfake。其主要思路有兩大元素生成網路(Generative Network)和判別網路(Discriminative Network),生成網路負責產生虛假資料讓判別網路學習真偽,如此反覆訓練即可得到真偽難辨的資料集。但原則上產生的虛假資料類型還是會依賴原始資料集的類型分佈。舉例來說,資料集中有男、女、老、少甚至不同膚色的人臉,那生成的結果可能就是一張資料集中沒有但看起來非常真實的人臉,但不會變成狗臉。但若資料集中有人臉和狗臉,那生成出的臉就有可能偏向正常人臉或狗臉甚至很像狗的人臉或很像人的狗臉。
由於這項技術可以從現有資料集中學習到資料集分佈特性,因此很適合用來協助找出非(高維)超球形分佈的資料集的邊界。如Fig. 3上圖所示,藍色點為正常資料,紅色點為異常(離群)資料,淡藍色點為潛在可能異常點,藍色實線為正確邊界,當資料分佈非超球形可以表示時,就會出像紅色邊界那樣的錯誤邊界。
從Fig. 3中圖可看出生成對抗網路一元分類異常偵測的架構,首先訓練一個網路來生成虛假資料,再混合真實資料訓練判別網路,經過不斷迭代(Iteration),最終就可收歛至較合理的真實邊界,如此即可分出正常和異常資料點。從Fig. 3下圖更可清楚看出收歛過程,經過200次迭代已逐漸收歛,但當最小最大值(mini-max)遊戲達到納許(Nash)平衡時準確性則會急劇下降,需要更進一步改善。
Fig. 3 上:不同類型資料分佈及分類邊界,中:單生成對抗網路產生正確分類邊界架構,下:生成對抗迭代收歛示意圖。[6](點擊圖放大) |
為解決上述問題,可利用多個生成網路產生更多樣態資料集加入訓練,如Fig. 4上圖所示,這樣的作法另外可解決多個資料簇(群聚)無法用一個超球體表示問題。從Fig. 4下圖中即可看出收歛過程及對多個資料簇的效果。但這種作法的缺點亦顯而易見,就是增加非常多的訓練時間及過程,且存在可能在某一個子網路訓練無法收歛時而失敗。
Fig. 4 上:多生成對抗網路產生正確分類邊界架構,下:生成對抗迭代收歛示意圖。[6](點擊圖放大) |
如何從人力監督走向智慧製造
雖然前面已提及許多一元分類異常偵測的作法,但這些並非全部作法,也不一定適用所有類形異常偵測問題,但已經足夠啟發大家探索更多更有效的可能做法,免去傳統人力監看或改善只設一組上、下限值的生產模式。對於尚未導入人工智慧的傳統工廠,可先不用大幅投資採購具有自動偵測收集機台資訊及分析功能的全新生產設備,只需先在傳統機台上加裝大量不同的感測器(如電流、聲音、震動、溫度、重量、亮度等),再配合小型物聯網(Internet of Thing, IoT)裝置以無線傳輸方式收集資料到區域工作站(或個人電腦)或雲端(公有雲或私有雲)進行即時運算,如此便可用最小成本逐步導入智慧製造,朝精簡人力介入、減少不良品、提高生產效率、降低停機率及強化生產品質邁進。
小結
在「智慧製造」中利用人工智慧進行「異常偵測」已是不可或缺的一環,利用大量已知的正常資料進行「一元分類」來偵測異常狀態,不僅可免去資料標註的苦工,還可自動找出資料分佈(生產穩定度)樣態,若再根據不同屬性分別建置合適的警示模型,如此就能小兵立大功,讓生產更加順暢。
*本文同步發行於歐尼克斯實境互動工作室部落格(https://omnixri.blogspot.com)及AI HUB(https://aihub.org.tw),歡迎連結至AI HUB網站【社群互動】下【AI技術交流區】瀏覽更多精采文章*
參考文獻:
[1] 維基百科,異常檢測
https://zh.wikipedia.org/wiki/%E5%BC%82%E5%B8%B8%E6%A3%80%E6%B5%8B
[2] Wikipedia, One-class classification
https://en.wikipedia.org/wiki/One-class_classification
[3] SS Khan et al., 2009, "A survey of recent trends in one class classification".
https://cs.uwaterloo.ca/~s255khan/files/occ_survey09.pdf
[4] Khan, Shehroz S. et al., 2014, "One-class classification: taxonomy of study and review of techniques."
https://arxiv.org/pdf/1312.0049.pdf
[5] Ruff, Lukas et al., 2018, "Deep one-class classification."
http://proceedings.mlr.press/v80/ruff18a/ruff18a.pdf
[6] Y ezheng Liu et al., 2019, "Generative Adversarial Active Learning for Unsupervised Outlier Detection"
https://arxiv.org/pdf/1809.10816.pdf
Hi, 感謝分享
回覆刪除我想請問您對於其他領域的 AD 是否也有研究? 以這個github為例, 他有討論到tie-series AD, one class AD, OOD AD..
https://github.com/hoya012/awesome-anomaly-detection
如果有針對各種類型的AD, 討論實例, 就更棒囉~
感謝您對本文如此有興趣,下一期專欄(預計二週後)正好是介紹時間序列型的異常檢測,屆時再請不吝指教。
刪除關於時序型異常偵測可參考本站「【AI HUB專欄】如何利用時序型資料異常偵測提昇智慧製造成效 」 http://omnixri.blogspot.com/2020/06/ai-hub.html
刪除