結構化數據不應該被人工智慧忘之腦後 !
- 2020 年 3 月 17 日
- 筆記

文 | Ihab Ilyas
整理 | 這隻萌萌
在處理非結構化數據的問題上,人工智慧和深度學習方法一直都表現出眾且廣為人知,無論是在自然語言處理、知識庫自動構建,還是影像影片的識別和生成應用中,都有很多成熟案例。
然而對於結構化數據的研究,似乎已經被人工智慧和深度學習忘之腦後。
結構化數據普遍存在於各類商業應用軟體和系統中,例如產品數據存儲、交易日誌、ERP和CRM系統中都存在大量結構化數據,這些結構化數據仍應用著陳舊的數據技術處理,如基於規則的系統,決策樹等。這樣的方法需要人工進行特徵提取,操作繁瑣且需要耗費大量人力進行數據標籤。
雖然人工智慧的最新發展已經從非結構化數據中挖掘出了巨大價值,但對結構化數據而言,其研究和應用也是不可忽視的,因為結構化數據對於驅動企業的業務發展、營收、數據安全以及數據治理方面都有著重大意義。
不同於非結構化數據,結構化數據的AI研究一直存在著一個巨大的挑戰,那就是其對於數據品質的高度敏感性。
對於非結構化數據而言,人們或許可以接受解析度不高的影片,略帶瑕疵的影像識別。但對於擁有大量結構化數據的大型企業來說,其核心業務數據是不容許有絲毫差錯的。比如對於製藥公司來說,藥品的劑量、價格和數量即使出現細微的數據錯誤,都有可能帶來巨大的災難。
研究這些核心業務數據(結構化數據)在人工智慧上的應用,是具有極大價值的,但受限於數據品質的高要求,大型企業在這類研究上舉步維艱。儘管人工智慧在結構化數據上的應用研究已經有數十年的時間,但目前仍進展甚微。
數據背後的業務複雜性,基於特定規則和邏輯的系統複雜性,需要人工介入的數據清洗和準備工作的高成本,都阻礙著這一研究的發展。要在結構化數據AI應用上有所成果,首先需要解決人工數據清洗和準備的問題,找到極少或者沒有人為干預的自動化方法,才能使得這一應用可落地可拓展。
這也是為什麼機器學習方法能適用於結構化數據準備和清洗的原因,最終的解決方案需要能夠提取企業數據特徵並且理解毫不相干的數據上下文,能夠從大量數據集中訓練出模型,預測數據品質,甚至能提出數據品質的修復建議。
將這樣的模型應用於數據準備和清洗中,可以解決結構化數據長期以來存在的問題 —— 需要大量人工介入的數據準備和清洗工作。這樣的解決方案有以下的要求:
- 可以將業務規則在內的所有訊號和上下文,函數依賴和鍵等約束條件以及數據的統計屬性進行組合。
- 能夠避免構建大量的規則,同時可以兼容極端情況。在許多情況下,結構化數據中的規則管理比清洗噪音數據更具挑戰性,成本更高。
- 最終,模型所提供的預測應用於標準的數據品質測試中,能夠傳達一種 「信心」:模型的預測能夠解決大多數情況,而人工,只需要專註去處理特殊的案例。
雖然結構化數據在AI應用的研究中困難重重,研究者們還是找到了一些方法並有所進展。處理結構化數據並不僅僅依賴於數據本身的特徵(稀疏,異構,豐富的語義和領域知識),數據表集合 (列名,欄位類型,域和各種完整性約束等)可以解碼各數據塊之間的語義和可能存在的交互的重要資訊。
舉個例子,兩個不同的城市不可能都對應相同的郵政編碼,一個項目的總預算不可能超過其計劃的開支。這都是可以明確提供的條件約束,這些條件約束增強了機器學習模型在結構化數據處理上的能力,而不僅僅是做統計分析。
處理結構化數據的其中一大挑戰在於,結構化數據可能是異構的,同時組合了不同類型的數據結構,例如文本數據、定類數據、數字甚至影像數據。其次,數據表有可能非常稀疏。想像一個100列的表格,每列都有10到1000個可能值(例如製造商的類型,大小,價格等),行則有幾百萬行。由於只有一小部分列值的組合有意義,可以想像,這個表格可能的組合空間有多麼「空」。
如果沒有任何結構、領域知識和條件約束,就很難了解數據如何生成及其準確性。因此,在構建結構化數據準備和清洗的解決方案過程中,可總結出存在的三個主要挑戰:
- 如何將背景知識轉化為模型輸入,以解決數據稀疏性和異構性帶來的挑戰?在預測某個列中的值時,我們如何在機器學習模型中傳遞關鍵約束、函數依賴關係、否定約束和其他複雜的完整性邏輯作為模型輸入?
- 在訓練數據有限且存在臟數據,甚至有時都沒有訓練數據的情況下如何學習模型呢?以識別結構化數據錯誤的模型為例,該模型查找各種數據錯誤,包括錯別字、缺失值、錯誤值、矛盾事實、數據錯位等問題。使用非常有限的可用錯誤樣本和可用數據中存在的這些錯誤來訓練這樣的模型,就是需要克服的挑戰。
- 模型如何拓展到大規模應用?如何能支撐上百萬個的隨機變數?如果把實驗條件下訓練出來的模型,直接應用到複雜商業環境中的結構化數據,毫無疑問,結果肯定是失敗的。
對此,滑鐵盧大學教授 Ihab Ilyas開發了一個用於結構化數據的AI平台——inductiv,訓練模型理解數據的生成和「污染」過程。inductiv可用於結構化數據的準備和清洗,例如錯誤檢測、預測缺失值、錯誤校正、空值補齊、數據融合等。Inductiv歸屬於學術開源項目HoloClean(www.holoclean.io),該項目是 Ihab Ilyas 團隊在2017年與滑鐵盧大學、威斯康星大學麥迪遜分校和斯坦福大學合作啟動的。
1、將數據清洗視為一個AI任務
HoloClean採用經典的雜訊通道模型來學習數據的生成和「污染」過程。完整的研究論文:https://cs.uwaterloo.ca/~ilyas/papers/DeSaICDT2019.pdf。
HoloClean利用所有已知的領域知識(例如規則)、數據中的統計資訊以及其他可信任來源作為屬性,來構建複雜的數據生成和錯誤檢測模型,此模型可用於發現錯誤並能夠提供修復建議,給出最有可能的替換值。

作者也觀察到了臟數據的生成過程 。通過建模和參數化,我們將數據清理轉變為了一個推斷問題。
雖然這樣的模型已經幫助我們將數據清理和數據錯誤檢測問題轉變為機器學習中的推理問題,但要訓練出表達力足夠強,能夠將應用規模化的模型,還是極有難度的。
2、構建數據錯誤檢測的解決方案
針對上文提到的挑戰,如何使用很少的樣本數據進行訓練的問題, Ihab Ilyas 在論文中提出了解決方案。
- 模型。數據錯誤的異構性和異構性帶來的其他影響,導致很難找到適合的統計特徵和完整性約束作為屬性,來幫助區分錯誤值和正確值。這些屬性對應著資料庫的屬性級、元組級和數據集級的特徵,而這些特徵都是用來表示數據分布的。圖2中描述的模型學習了一個表示層,該層通過捕獲這些多級特徵,來學習應用於錯誤檢測的二分類器。
- 數據不平衡。數據錯誤的種類非常多,但通常樣本數據中出現的錯誤數據是很少的,因此機器學習演算法在面對不平衡的數據集時,訓練出來的結果通常不太樂觀。因此,不常見的數據錯誤,其特徵經常被識別為噪音,因此被忽略。與常見數據錯誤相比,不常見的數據錯誤其識別的錯誤率很高。如圖3,我們提出了應用「數據擴增強」方法,按照學習到的錯誤生成策略來製造許多「偽」錯誤,使用少量的真實數據錯誤來學習策略參數。當樣本的錯誤數據有限時,這一方法可以用於增加錯誤數據在樣本數據中的分布。

圖2:多級特徵的錯誤檢測模型

3、inductiv 引擎:現代 AI在結構化數據中的應用
諸如數據準備、數據清洗、錯誤檢測和缺失值填補之類的數據問題,都可以應用一個統一的、可規模化的推理引擎進行建模。這樣的引擎要求能夠對「結構化」數據的生成以及錯誤的產生進行建模。更重要的是,結合上文提到的各種挑戰,這一模型還需要納入一些現代機器學習原理:
- 用於生成訓練數據的數據增強和數據編程
- 目標列/值建模所需要的各種上下文的表示,例如學習異構數據的嵌入空間
- 自我監督學習,儘可能利用所有數據。比如使用其他值來重建某些觀察到的數據值
- 將領域知識和規則輸入到模型中,擴展模型的表達能力
- 進行一些系統級別的優化,例如學習數據分區和本地索引,以完善模型的可拓展性,提高模型適應多種數據分布的能力。
Inductiv將之前提到的所有研究,融合於一個統一的AI內核中,它可以支援多種數據準備和清洗的應用。
圖 4 描繪了前文提到的多種方法的核心組成部分,以處理不同的數據類型(例如量化數據的回歸分析,定類數據的分類)。這些方法包括了基於注意力的上下文表示機制、分散式學習、數據切片以及多任務學習的自我監督。
在MLSys 2020論文中,作者提出了一種基於注意力的學習架構,用於混合類型結構化數據的缺失值填補(圖5)。


4、結語
如今的商業化數據中,絕大部分重要數據都是結構化的,然而由於對數據品質的高要求,使得很多有價值的研究都望而卻步。
通過採用機器學習的方法,我們可以將結構化數據的數據準備和清洗問題都視為一個統一的預測任務,不過這種方式存在著規模化,異構性,稀疏性以及複雜語義和專業領域知識的挑戰。
而Inductiv引擎作為首個用於結構化數據處理的可擴展AI平台,則成功解決了這些挑戰!
via https://towardsdatascience.com/ai-should-not-leave-structured-data-behind-33474f9cd07a

