0
在處理非結(jié)構(gòu)化數(shù)據(jù)的問題上,人工智能和深度學習方法一直都表現(xiàn)出眾且廣為人知,無論是在自然語言處理、知識庫自動構(gòu)建,還是圖像視頻的識別和生成應用中,都有很多成熟案例。
然而對于結(jié)構(gòu)化數(shù)據(jù)的研究,似乎已經(jīng)被人工智能和深度學習忘之腦后。結(jié)構(gòu)化數(shù)據(jù)普遍存在于各類商業(yè)應用軟件和系統(tǒng)中,例如產(chǎn)品數(shù)據(jù)存儲,交易日志,ERP 和 CRM 系統(tǒng)中都存在大量結(jié)構(gòu)化數(shù)據(jù),這些結(jié)構(gòu)化數(shù)據(jù)仍應用著陳舊的數(shù)據(jù)技術處理,如基于規(guī)則的系統(tǒng),決策樹等。這樣的方法需要人工進行特征提取,操作繁瑣且需要耗費大量人力進行數(shù)據(jù)標簽。
雖然人工智能的最新發(fā)展已經(jīng)從非結(jié)構(gòu)化數(shù)據(jù)中挖掘出了巨大價值,但對結(jié)構(gòu)化數(shù)據(jù)而言,其研究和應用也是不可忽視的,因為結(jié)構(gòu)化數(shù)據(jù)對于驅(qū)動企業(yè)的業(yè)務發(fā)展、營收、數(shù)據(jù)安全以及數(shù)據(jù)治理方面都有著重大意義。
不同于非結(jié)構(gòu)化數(shù)據(jù),結(jié)構(gòu)化數(shù)據(jù)的 AI 研究一直存在著一個巨大的挑戰(zhàn),那就是其對于數(shù)據(jù)質(zhì)量的高度敏感性。對于非結(jié)構(gòu)化數(shù)據(jù)而言,人們或許可以接受分辨率不高的視頻,略帶瑕疵的圖像識別。但對于擁有大量結(jié)構(gòu)化數(shù)據(jù)的大型企業(yè)來說,其核心業(yè)務數(shù)據(jù)是不容許有絲毫差錯的。比如對于制藥公司來說,藥品的劑量、價格和數(shù)量即使出現(xiàn)細微的數(shù)據(jù)錯誤,都有可能帶來巨大的災難。
研究這些核心業(yè)務數(shù)據(jù)(結(jié)構(gòu)化數(shù)據(jù))在人工智能上的應用,是具有極大價值的,但受限于數(shù)據(jù)質(zhì)量的高要求,大型企業(yè)在這類研究上舉步維艱。盡管人工智能在結(jié)構(gòu)化數(shù)據(jù)上的應用研究已經(jīng)有數(shù)十年的時間,但目前仍進展甚微。
數(shù)據(jù)背后的業(yè)務復雜性,基于特定規(guī)則和邏輯的系統(tǒng)復雜性,需要人工介入的數(shù)據(jù)清洗和準備工作的高成本,都阻礙著這一研究的發(fā)展。要在結(jié)構(gòu)化數(shù)據(jù) AI 應用上有所成果,首先需要解決人工數(shù)據(jù)清洗和準備的問題,找到極少或者沒有人為干預的自動化方法,才能使得這一應用可落地可拓展。
這也是為什么機器學習方法能適用于結(jié)構(gòu)化數(shù)據(jù)準備和清洗的原因,最終的解決方案需要能夠提取企業(yè)數(shù)據(jù)特征并且理解毫不相干的數(shù)據(jù)上下文,能夠從大量數(shù)據(jù)集中訓練出模型,預測數(shù)據(jù)質(zhì)量,甚至能提出數(shù)據(jù)質(zhì)量的修復建議。
將這樣的模型應用于數(shù)據(jù)準備和清洗中,可以解決結(jié)構(gòu)化數(shù)據(jù)長期以來存在的問題——需要大量人工介入的數(shù)據(jù)準備和清洗工作。這樣的解決方案有以下的要求:
可以將業(yè)務規(guī)則在內(nèi)的所有信號和上下文,函數(shù)依賴和鍵等約束條件以及數(shù)據(jù)的統(tǒng)計屬性進行組合。
能夠避免構(gòu)建大量的規(guī)則,同時可以兼容極端情況。在許多情況下,結(jié)構(gòu)化數(shù)據(jù)中的規(guī)則管理比清洗噪音數(shù)據(jù)更具挑戰(zhàn)性,成本更高。
最終,模型所提供的預測應用于標準的數(shù)據(jù)質(zhì)量測試中,能夠傳達一種「信心」:模型的預測能夠解決大多數(shù)情況,而人工,只需要專注去處理特殊的案例。
雖然結(jié)構(gòu)化數(shù)據(jù)在 AI 應用的研究中困難重重,我們還是找到了一些方法并有所進展。處理結(jié)構(gòu)化數(shù)據(jù)并不僅僅依賴于數(shù)據(jù)本身的特征 (稀疏,異構(gòu),豐富的語義和領域知識),數(shù)據(jù)表集合 (列名,字段類型,域和各種完整性約束等)可以解碼各數(shù)據(jù)塊之間的語義和可能存在的交互的重要信息。
舉個例子,兩個不同的城市不可能都對應相同的郵政編碼,一個項目的總預算不可能超過其計劃的開支。這都是可以明確提供的條件約束,這些條件約束增強了機器學習模型在結(jié)構(gòu)化數(shù)據(jù)處理上的能力,而不僅僅是做統(tǒng)計分析。
處理結(jié)構(gòu)化數(shù)據(jù)的其中一大挑戰(zhàn)在于,結(jié)構(gòu)化數(shù)據(jù)可能是異構(gòu)的,同時組合了不同類型的數(shù)據(jù)結(jié)構(gòu),例如文本數(shù)據(jù)、定類數(shù)據(jù)、數(shù)字甚至圖像數(shù)據(jù)。其次,數(shù)據(jù)表有可能非常稀疏。想象一個 100 列的表格,每列都有 10 到 1000 個可能值(例如制造商的類型,大小,價格等),行則有幾百萬行。由于只有一小部分列值的組合有意義,可以想象,這個表格可能的組合空間有多么「空」。
如果沒有任何結(jié)構(gòu)、領域知識和條件約束,就很難了解數(shù)據(jù)如何生成及其準確性。因此,在構(gòu)建結(jié)構(gòu)化數(shù)據(jù)準備和清洗的解決方案過程中,我們總結(jié)了存在的三個主要挑戰(zhàn):
如何將背景知識轉(zhuǎn)化為模型輸入,以解決數(shù)據(jù)稀疏性和異構(gòu)性帶來的挑戰(zhàn)?在預測某個列中的值時,我們?nèi)绾卧跈C器學習模型中傳遞關鍵約束、函數(shù)依賴關系、否定約束和其他復雜的完整性邏輯作為模型輸入?
在訓練數(shù)據(jù)有限且存在臟數(shù)據(jù),甚至有時都沒有訓練數(shù)據(jù)的情況下如何學習模型呢?以識別結(jié)構(gòu)化數(shù)據(jù)錯誤的模型為例,該模型查找各種數(shù)據(jù)錯誤,包括錯別字、缺失值、錯誤值、矛盾事實、數(shù)據(jù)錯位等問題。使用非常有限的可用錯誤樣本和可用數(shù)據(jù)中存在的這些錯誤來訓練這樣的模型,就是需要克服的挑戰(zhàn)。
模型如何拓展到大規(guī)模應用?如何能支撐上百萬個的隨機變量?如果把實驗條件下訓練出來的模型,直接應用到復雜商業(yè)環(huán)境中的結(jié)構(gòu)化數(shù)據(jù),毫無疑問,結(jié)果肯定是失敗的。
我們開發(fā)了 inductiv,這是一個用于結(jié)構(gòu)化數(shù)據(jù)的 AI 平臺,訓練模型理解數(shù)據(jù)的生成和「污染」過程。inductiv 可用于結(jié)構(gòu)化數(shù)據(jù)的準備和清洗,例如錯誤檢測、預測缺失值、錯誤校正、空值補齊、數(shù)據(jù)融合等。Inductiv 歸屬于學術開源項目 HoloClean(www.holoclean.io),該項目是我們在 2017 年與滑鐵盧大學、威斯康星大學麥迪遜分校和斯坦福大學合作啟動的。
HoloClean 采用經(jīng)典的噪聲通道模型來學習數(shù)據(jù)的生成和「污染」過程。完整的研究論文:https://cs.uwaterloo.ca/~ilyas/papers/DeSaICDT2019.pdf。
HoloClean 利用所有已知的領域知識(例如規(guī)則)、數(shù)據(jù)中的統(tǒng)計信息以及其他可信任來源作為屬性,來構(gòu)建復雜的數(shù)據(jù)生成和錯誤檢測模型,此模型可用于發(fā)現(xiàn)錯誤并能夠提供修復建議,給出最有可能的替換值。
圖 1 :「干凈」的數(shù)據(jù)是按照一定的生成過程生成的。我們也觀察到了臟數(shù)據(jù)的生成過程。通過建模和參數(shù)化,我們將數(shù)據(jù)清理轉(zhuǎn)變?yōu)榱艘粋€推斷問題
雖然這樣的模型已經(jīng)幫助我們將數(shù)據(jù)清理和數(shù)據(jù)錯誤檢測問題轉(zhuǎn)變?yōu)闄C器學習中的推理問題,但要訓練出表達力足夠強,能夠?qū)靡?guī)?;哪P停€是極有難度的。
針對上文提到的挑戰(zhàn),如何使用很少的樣本數(shù)據(jù)進行訓練的問題,我們在論文中提出了解決方案。
模型。數(shù)據(jù)錯誤的異構(gòu)性和異構(gòu)性帶來的其他影響,導致很難找到適合的統(tǒng)計特征和完整性約束作為屬性,來幫助區(qū)分錯誤值和正確值。這些屬性對應著數(shù)據(jù)庫的屬性級、元組級和數(shù)據(jù)集級的特征,而這些特征都是用來表示數(shù)據(jù)分布的。圖 2 中描述的模型學習了一個表示層,該層通過捕獲這些多級特征,來學習應用于錯誤檢測的二分類器。
數(shù)據(jù)不平衡。數(shù)據(jù)錯誤的種類非常多,但通常樣本數(shù)據(jù)中出現(xiàn)的錯誤數(shù)據(jù)是很少的,因此機器學習算法在面對不平衡的數(shù)據(jù)集時,訓練出來的結(jié)果通常不太樂觀。因此,不常見的數(shù)據(jù)錯誤,其特征經(jīng)常被識別為噪音,因此被忽略。與常見數(shù)據(jù)錯誤相比,不常見的數(shù)據(jù)錯誤其識別的錯誤率很高。如圖 3,我們提出了應用「數(shù)據(jù)擴增強」方法,按照學習到的錯誤生成策略來制造許多「偽」錯誤,使用少量的真實數(shù)據(jù)錯誤來學習策略參數(shù)。當樣本的錯誤數(shù)據(jù)有限時,這一方法可以用于增加錯誤數(shù)據(jù)在樣本數(shù)據(jù)中的分布。
圖 2: 具有多級特征的錯誤檢測模型
圖 3: 使用錯誤生成策略以解決訓練數(shù)據(jù)不平衡問題
諸如數(shù)據(jù)準備、數(shù)據(jù)清洗、錯誤檢測和缺失值填補之類的數(shù)據(jù)問題,都可以應用一個統(tǒng)一的、可規(guī)模化的推理引擎進行建模。這樣的引擎要求能夠?qū)Α附Y(jié)構(gòu)化」數(shù)據(jù)的生成以及錯誤的產(chǎn)生進行建模。更重要的是,結(jié)合我們上文提到的各種挑戰(zhàn),這一模型還需要納入一些現(xiàn)代機器學習原理:
用于生成訓練數(shù)據(jù)的?數(shù)據(jù)增強和數(shù)據(jù)編程
目標列/值建模所需要的各種上下文的表示,例如學習異構(gòu)數(shù)據(jù)的嵌入空間
自我監(jiān)督學習,盡可能利用所有數(shù)據(jù)。比如使用其他值來重建某些觀察到的數(shù)據(jù)值
將領域知識和規(guī)則輸入到模型中,擴展模型的表達能力
進行一些系統(tǒng)級別的優(yōu)化,例如學習數(shù)據(jù)分區(qū)和本地索引,以完善模型的可拓展性,提高模型適應多種數(shù)據(jù)分布的能力。
Inductiv 將我們之前提到的所有研究,融合于一個統(tǒng)一的 AI 內(nèi)核中,它可以支持多種數(shù)據(jù)準備和清洗的應用。
圖 4 描繪了前文提到的多種方法的核心組成部分,以處理不同的數(shù)據(jù)類型(例如量化數(shù)據(jù)的回歸分析,定類數(shù)據(jù)的分類)。這些方法包括了基于注意力的上下文表示機制、分布式學習、數(shù)據(jù)切片以及多任務學習的自我監(jiān)督。
在 MLSys 2020 論文中,我們提出了一種基于注意力的學習架構(gòu),用于混合類型結(jié)構(gòu)化數(shù)據(jù)的缺失值填補(圖 5)。
圖 4:Inductiv 統(tǒng)一推理引擎的核心組成部分
圖5:基于注意力的上下文表示和多任務學習的示例架構(gòu)
如今的商業(yè)化數(shù)據(jù)中,絕大部分重要數(shù)據(jù)都是結(jié)構(gòu)化的,然而由于對數(shù)據(jù)質(zhì)量的高要求,使得很多有價值的研究都望而卻步。
通過采用機器學習的方法,我們可以將結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)準備和清洗問題都視為一個統(tǒng)一的預測任務,不過這種方式存在著規(guī)?;?,異構(gòu)性,稀疏性以及復雜語義和專業(yè)領域知識的挑戰(zhàn)。 雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
而 Inductiv 引擎作為首個用于結(jié)構(gòu)化數(shù)據(jù)處理的可擴展 AI 平臺,則成功解決了這些挑戰(zhàn)!
via https://towardsdatascience.com/ai-should-not-leave-structured-data-behind-33474f9cd07a
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。