kegra:用Keras深度学习知识图
你好。?我在過去的文章中提到我正在為企業(yè)數(shù)據(jù)集進(jìn)行認(rèn)知計(jì)算。?就是這樣。
本文將需要深入學(xué)習(xí)的一些理解,但您應(yīng)該能夠遵循對數(shù)據(jù)科學(xué)的最小理解。
我一直致力于在GPU上深入學(xué)習(xí)的圖形中檢測模式。?Thomas Kipf?編寫了一個用?Keras對圖形節(jié)點(diǎn)進(jìn)行分類的好庫?。?本文基于他的作品“?圖形卷積網(wǎng)絡(luò)的半監(jiān)督分類?”。?我們來看一下。
首先,圖表是什么?
那么,我關(guān)心我工作中的知識圖。?這些圖表代表像“白宮”和“唐納德特朗普”這樣的實(shí)體作為節(jié)點(diǎn),像“作品”這樣的關(guān)系是邊緣。?我們?nèi)绾螛?gòu)建這些圖表是另一回事。?在本文中,我正在研究交易數(shù)據(jù)以訓(xùn)練分類器來識別欺詐交易。?如果你更喜歡頂點(diǎn)和圓弧而不是節(jié)點(diǎn)和邊緣,那么閱讀這篇文章?。
我在這個奇怪的圖表世界中感到賓至如歸。?我在圖表上的工作可以追溯到我的碩士論文。?在那項(xiàng)工作中,我有興趣在有向無環(huán)圖內(nèi)找到共同元素(凸子圖)。?我正在確定基于它運(yùn)行的軟件添加到處理器的定制指令。?我用整數(shù)線性規(guī)劃來解決這個問題。?在大圖上,求解器可能需要數(shù)小時甚至數(shù)天。
這一系列研究的鏈接:
- 嵌入式人工神經(jīng)網(wǎng)絡(luò)硬件/軟件代號研究
- 可調(diào)指令集擴(kuò)展標(biāo)識
- 用于人工神經(jīng)網(wǎng)絡(luò)的ASIP
- 用定制指令在FPGA上進(jìn)行人工神經(jīng)網(wǎng)絡(luò)加速
- 硬件約束下改進(jìn)的ISE識別
- 并行指令集擴(kuò)展標(biāo)識
- 針對可配置多處理器的靜態(tài)任務(wù)調(diào)度
- 為多處理器片上系統(tǒng)硬件/軟件協(xié)同設(shè)計(jì)工具鏈設(shè)計(jì)和實(shí)現(xiàn)指令集擴(kuò)展標(biāo)識
- SING:多處理器系統(tǒng)芯片設(shè)計(jì)和系統(tǒng)生成工具
以下是OrientDB中知識圖本體的一個例子:
來源:?OrientDB演示頁面其次,我們可以發(fā)現(xiàn)什么樣的模式?
我們想要標(biāo)記節(jié)點(diǎn)。?圖中的每個實(shí)體都有一些我們想要分類的特征,而我們只有一些節(jié)點(diǎn)的標(biāo)簽。?我們可以預(yù)測出簡單的布爾標(biāo)簽,比如“人物”或“不是人物”,還有更有趣的標(biāo)簽,比如節(jié)點(diǎn)分類到幾個類別之一。?然后我們可以做更復(fù)雜的回歸,比如根據(jù)圖表中的實(shí)體數(shù)據(jù)預(yù)測實(shí)體所帶來的風(fēng)險(xiǎn)。?這包括節(jié)點(diǎn)到其他節(jié)點(diǎn)的連接。?讓我們堅(jiān)持本文中的布爾節(jié)點(diǎn)標(biāo)簽/分類問題,以保持簡單。?我們希望通過大約4,000個銀行帳戶標(biāo)記594,643筆交易,要么是可疑的,要么是不可疑。?我們希望在不到一分鐘的時間內(nèi)完成?。?不是幾小時或幾天。
第三,我們?nèi)绾味xkegra理解的圖形?
我們需要指定兩個文件。?第一個節(jié)點(diǎn)具有節(jié)點(diǎn)描述,第二個節(jié)點(diǎn)說明節(jié)點(diǎn)如何連接。?在kegra提供的cora示例中,有2,708個節(jié)點(diǎn)的描述和標(biāo)簽,其中有5,429個邊(節(jié)點(diǎn)對),用于定義節(jié)點(diǎn)彼此的連接。
以下是每個文件幾行的視圖:
節(jié)點(diǎn)之間的鏈接 每個節(jié)點(diǎn)ID后面跟著特征(大多數(shù)為0),最后還有一個節(jié)點(diǎn)標(biāo)簽(例如Neural_Networks,Case_Based)。? 這些功能大多為0,并在上面的屏幕截圖中為許多行換行。? 每個特征表示在某個單詞的文檔(節(jié)點(diǎn))中的使用。? 更多信息請點(diǎn)擊此處kegra自述文件?。讓我們試試看
首先,你需要Keras 2,所以這樣做:
點(diǎn)安裝keras - 升級假設(shè)你安裝了Keras和TensorFlow,keras-gcn依賴于gcn,所以讓我們克隆并逐個安裝它們。
#install gcn git clone https://github.com/tkipf/gcn.git cd gcn / python setup.py安裝 cd .. #install keras-gcn git clone https://github.com/tkipf/keras-gcn.git cd keras-gcn / python setup.py安裝首先,讓我們使用kegra稱為cora的現(xiàn)成示例運(yùn)行代碼。?我們在輸出中看到cora從原始數(shù)據(jù)中檢測并打印了預(yù)期的節(jié)點(diǎn)數(shù)和邊數(shù)。
訓(xùn)練運(yùn)行在cora數(shù)據(jù)集上:36%的準(zhǔn)確性和上升。 cora數(shù)據(jù)集的測試結(jié)果:77.6%的準(zhǔn)確性。我們現(xiàn)在對kegra理解輸入文件的方式做一些小改動,只是為了讓這些名字更好。?在github的當(dāng)前版本中,輸入文件是描述節(jié)點(diǎn)之間的弧的“* .cites”,描述節(jié)點(diǎn)的“* .content”。?相反,我改變了kegra以讀取“* .link”和“* .node”文件。?你的數(shù)據(jù)文件夾現(xiàn)在應(yīng)該是這樣的:
?/ kegra / keras-gcn / kegra $ ls -l data / cora / 總計(jì)7720 -rwxrwxr-x 1 ubuntu ubuntu 69928 Dec 3 02:52 cora.link(was cora.cites) -rwxrwxr-x 1 ubuntu ubuntu 7823427 Dec 3 02:52 cora.node(was cora.content) -rwxrwxr-x 1 ubuntu ubuntu 1560 Dec 3 02:52自述文件 ?/ kegra / keras-gcn / kegra $ ls -l data / customerTx / 總計(jì)7720 -rwxrwxr-x 1 ubuntu ubuntu 7823427 Dec 3 05:20 customerTx.node -rwxrwxr-x 1 ubuntu ubuntu 1560 Dec 3 05:20自述文件 -rwxrwxr-x 1 ubuntu ubuntu 69928 Dec 3 05:20 customerTx.link現(xiàn)在讓我們用交易數(shù)據(jù)填寫customerTx.node和customerTx.link?。?第一個文件是銀行客戶及其功能的列表。?格式是:
快速查看一些交易記錄。? 在這種情況下,有貨幣的發(fā)送者和收款人,以及已發(fā)送金額的記錄(金額欄),以及由審閱交易的人類分析員(欺詐欄)應(yīng)用的標(biāo)簽。? 我們可以忽略前兩列(索引和步驟欄)。 邊緣文件(?customerTx.link?)記錄雙方在每次交易中的人員。 節(jié)點(diǎn)文件(?customerTx.node?)將圖表中每個節(jié)點(diǎn)上的信息記錄為每筆交易的資金發(fā)送者。? txCount列列出了離開節(jié)點(diǎn)的事務(wù)(邊)的數(shù)量。? amountMean列指定平均事務(wù)大小。? “?欺詐平均值”列是此數(shù)據(jù)涵蓋期間發(fā)件人帳戶上標(biāo)記的交易的平均值。? 請注意,絕大多數(shù)交易都可以,而不是FRAUD,這是一種數(shù)據(jù)集失衡?。 圖中有4112個節(jié)點(diǎn)。? 分析師平均有2.3%被標(biāo)記為問題。我們現(xiàn)在可以使用kegra來分析各種分析精度的圖表。
如果系統(tǒng)是由完美的分析師對數(shù)據(jù)進(jìn)行培訓(xùn)的,那么應(yīng)該完全學(xué)會如何分析圖表。?但是,如果人類分析師在20%的時間內(nèi)出錯,那么kegra模型的預(yù)測能力應(yīng)該同樣被限制在80%。?為了試驗(yàn)這個,我給圖形標(biāo)簽添加了不同數(shù)量的隨機(jī)噪聲,看看kegra會如何做,因?yàn)橛?xùn)練數(shù)據(jù)的質(zhì)量越來越差。
以表格和圖表形式顯示的結(jié)果如下:
交易標(biāo)簽實(shí)驗(yàn)的原始結(jié)果,在知識圖上使用深度學(xué)習(xí) 這與上表中的數(shù)據(jù)相同,但更易于理解圖形這里有很多東西需要消化。?首先,我們看到,隨著數(shù)據(jù)(藍(lán)色)中的噪聲增加,早期停止(x軸上的標(biāo)簽)會在訓(xùn)練中更早和更早地進(jìn)行踢球。?這告訴我們,特征數(shù)量太少(少數(shù)列)導(dǎo)致訓(xùn)練數(shù)據(jù)過度擬合。?其次,我們看到測試精度通常低于訓(xùn)練精度。?這是預(yù)期的,因?yàn)橛?xùn)練數(shù)據(jù)對于分類器而言是熟悉的,而測試數(shù)據(jù)則不是。?第三,測試精度不為零。?好!?這意味著分類器可以僅使用圖形和每個節(jié)點(diǎn)的特征(txCount,amountMean和fraudMean)重新生成OK / FRAUD標(biāo)簽。?第四,隨著注入的噪聲(藍(lán)色)上升,分類器(橙色)的準(zhǔn)確度下降。?這意味著結(jié)果不是隨機(jī)的。?第五,我們看到,訓(xùn)練準(zhǔn)確度(紅色)加上附加噪聲(藍(lán)色)增加了大約100%,這意味著分類器與標(biāo)注數(shù)據(jù)集的分析師一樣好/壞,但不會更糟。
總之,kegra在知識圖譜分類上表現(xiàn)得非常好。?與他們的論文中的結(jié)果相比,這些結(jié)果可能太好了。?我將檢查交易文件中的欺詐標(biāo)簽列是否太具有說明性,并將其替換為難以用來從諸如原籍國,城市,郵政編碼等更廣泛的數(shù)據(jù)集中預(yù)測的功能。
我的下一個動作是從源文件中重新生成具有更多列的交易數(shù)據(jù)集,并查看kegra是否仍然表現(xiàn)如此出色。?在cora數(shù)據(jù)集上沒有提前停止,所以我懷疑交易數(shù)據(jù)對kegra來說并不具有挑戰(zhàn)性,這是我之前提到的原因之一。?也許如果我將更多語義特征嵌入到生成的圖中......我可以做很多有趣的事情作為下一步。
特別感謝Thomas Kipf在出版前觀察這篇文章。?與我平常的高級文章相比,這是一篇非常復(fù)雜的文章,可以準(zhǔn)備(和閱讀)。?如果你喜歡這篇關(guān)于圖表的深度學(xué)習(xí)文章,那么請讓我知道寫出更多這樣的研究內(nèi)容。?我也很高興在評論中聽到您的意見。?你怎么看?
https://towardsdatascience.com/kegra-deep-learning-on-knowledge-graphs-with-keras-98e340488b93
總結(jié)
以上是生活随笔為你收集整理的kegra:用Keras深度学习知识图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 揭开知识库问答KB-QA的面纱1·简介篇
- 下一篇: 深度学习在智能助理中的应用