導航:首頁 > 網路共享 > 軟體缺陷檢測圖神經網路

軟體缺陷檢測圖神經網路

發布時間:2022-11-04 01:32:06

『壹』 軟體缺陷度量方法簡述

1.原則上來講,我們更希望一種規范化開發的體系來規正這個命題,不需要為此傷腦筋。但在里程碑或計劃的截止時間點能結束測試對大多數的軟體項目僅僅是一種期望,而不是既定的現實。理想的情況下,我們可以嚴格執行計劃,然後在計劃要求的deadline或者里程碑點上提交交付件,以確認該里程碑是否達到要求,是否可以進行下一階段的工作——但正如前提所言,這個僅僅是理想情況
2.現在讓我們現實一點。我們為什麼會有這樣的問題(一個軟體如何確定測試結束點)?往往就是因為我們不知道何時可以結束一個軟體的測試。不管教科書上如何說明一個軟體只要還在生命周期內,就無法結束測試,但現實要求我們在某一個時間點上,結束對軟體某一階段的測試。那麼,這個問題實際上就已經轉化為確定該階段測試的結束點的方法了。這個方法可能是一種規范,一套流程,一些交付件,一些評審,一些由統計學原理得出的收斂曲線或者僅僅只是一些確認而已。而個人認為,無論這個方法是何種形式的,其基本的要求就是能達成一種協議,確認該協議生效——那麼這個階段的測試就結束了,至於這個點在什麼時間,我想就是完成所有要求的這些確認的時間而已。
在軟體消亡之前,如果沒有測試的結束點,那麼軟體測試就永無休止,永遠不可能結束。軟體測試的結束點,要依據自己公司具體情況來制定,不能一概而論!個人認為測試結束點由以下幾個條件決定::
1.基於「測試階段」的原則:
每個軟體的測試一般都要經過單元測試、集成測試、系統測試這幾個階段,我們可以分別對單元測試、集成測試和系統測試制定詳細的測試結束點。每個測試階段符合結束標准後,再進行後面一個階段的測試。舉個例子來說:單元測試,我們要求測試結束點必須滿足「核心代碼100%經過Code Review」、「功能覆蓋率達到100%」、「代碼行覆蓋率不低於80%」、「不存在A、B類缺陷」、「所有發現缺陷至少60%都納入缺陷追蹤系統且各級缺陷修復率達到標准」等等標准。集成測試和系統測試的結束點都制定相關的結束標准,當然也是如此。
2.基於「測試用例」的原則:
測試設計人員設計測試用例,並請項目組成員參與評審,測試用例一旦評審通過,後面測試時,就可以作為測試結束的一個參考標准。比如說在測試過程中,如果發現測試用例通過率太低,可以拒絕繼續測試,待開發人員修復後再繼續。在功能測試用例通過率達到100%,非功能性測試用例達到95%以上,允許正常結束測試。但是使用該原則作為測試結束點時,把握好測試用例的質量,非常關鍵。
3.基於「缺陷收斂趨勢」的原則:
軟體測試的生命周期中隨著測試時間的推移,測試發現的缺陷圖線,首先成逐漸上升趨勢,然後測試到一定階段,缺陷又成下降趨勢,直到發現的缺陷幾乎為零或者很難發現缺陷為止。我們可以通過缺陷的趨勢圖線的走向,來定測試是否可以結束,這也是一個判定標准。
4.基於「缺陷修復率」的原則:
軟體缺陷在測試生命周期中我們分成幾個嚴重等級,它們分別是:嚴重錯誤、主要錯誤、次要錯誤、一般錯誤、較小錯誤和測試建議6種。那我們在確定測試結束點時,嚴重錯誤和主要錯誤的缺陷修復率必須達到100%,不允許存在功能性的錯誤;次要錯誤和一般錯誤的缺陷修復率必須達到85%以上,允許存在少量功能缺陷,後面版本解決;對於較小錯誤的缺陷修復率最好達到60%~70%以上。對於測試建議的問題,可以暫時不用修改。
5.基於「驗收測試」的原則:
很多公司都是做項目軟體,如果這種要確定測試結束點,最好測試到一定階段,達到或接近測試部門指定的標准後,就遞交用戶做驗收測試。如果通過用戶的測試驗收,就可以立即終止測試部門的測試;如果客戶驗收測試時,發現了部分缺陷,就可以針對性的修改缺陷後,驗證通過後遞交客戶,相應測試也可以結束。
6.基於「覆蓋率」的原則:
對於測試「覆蓋率」的原則,個人覺的只要測試用例的「覆蓋率」覆蓋了客戶提出全部的軟體需求,包括行業隱性需求、功能需求和性能需求等等,只要測試用例執行的覆蓋率達到100%,基本上測試就可以結束。如「單元測試中語句覆蓋率最低不能小於80%」、「測試用例執行覆蓋率應達到100%」和「測試需求覆蓋率應達到100%」都可以作為結束確定點。如果你不放心,非得要看看測試用例的執行效果,檢查是否有用例被漏執行的情況,可以對常用的功能進行「抽樣測試」 和「隨機測試」。對於覆蓋率在單元測試、集成測試和系統測試,每個階段都不能忽略。
7.基於「項目計劃」的原則:
大多數情況下,每個項目從開始就要編寫開發和測試的Schele,相應的在測試計劃中也會對應每個里程碑,對測試進度和測試結束點做一個限制,一般來說都要和項目組成員(開發,管理,測試,市場,銷售人員)達成共識,團隊集體同意後制定一個標准結束點。如果項目的某個環節延遲了,測試時間就相應縮短。大多數情況下是所有規定的測試內容和回歸測試都已經運行完成,就可以作為一個結束點。很多不規范的軟體公司,都是把項目計劃作為一個測試結束點,但是如果把它作為一個結束點,測試風險較大,軟體質量很難得到保證。
8.基於「缺陷度量」的原則:
這個原則也許大家用的不是很多,了解比較少。我們可以對已經發現的缺陷,運用常用的缺陷分析技術和缺陷分析工具,用圖表統計出來,方便查閱,分時間段對缺陷進行度量。我記得以前zhuzx在這個論壇上提出過缺陷分析技術這個問題,我不再重復講述。我們也可以把 「測試期缺陷密度」和 「運行期缺陷密度」作為一個結束點。當然,最合適的測試結束的准則應該是「缺陷數控制在一個可以接受的范圍內」。比如說:一萬行代碼最多允許存在多少個什麼嚴重等級的錯誤,這樣比較好量化,比較好實施,成為測試缺陷度量的主流。
9.基於「質量成本」的原則:
一個軟體往往要從「質量/成本 /進度」三方面取得平衡後就停止。至於這三方面哪一項佔主要地位,就要看是什麼軟體了。比如說是:人命關天的航天航空軟體,那還是質量重要些,就算多花點錢、推遲一下進度,也要測試能保證較高質量以後才能終止測試,發布版本。如果是一般的常用軟體,由於利益和市場的原因,哪怕有bug,也必須得先推出產品,沒辦法呀。一般來說,最主要的參考依據是:「把找到缺陷耗費的代價和這個缺陷可能導致的損失做一個均衡」。具體操作的時候,可以根據公司實際情況來定義什麼樣的情況下算是「測試花費的代價最劃算、最合理」,同時保證公司利益最大化。如果找到bug的成本比,用戶發現bug的成本還高,也可以終止測試。
10.基於「測試行業經驗」的原則:
很多情況下,測試行業的一些經驗,也可以為我們的測試提供借鑒。比如說測試人員對行業業務的熟悉程度,測試人員的工作能力,測試的工作效率等等都會影響到整個測試計劃的執行。如果一個測試團隊中,每個人都沒有項目行業經驗數據積累,拿到一個新的項目,自然是一頭霧水,不知道從何處開始,測試質量自然不會很高。因此通過測試者的經驗,對確認測試執行和結束點也會起到關鍵性的作用

『貳』 軟體缺陷的分類標准

1.缺陷標識(Identifier): 缺陷標識是標記某個缺陷的一組符號。每個缺陷必須有一個唯一的標識。
2.缺陷類型 (Type): 缺陷類型是根據缺陷的自然屬性劃分的缺陷種類。
3.缺陷嚴重程度 (Severity) :缺陷嚴重程度是指因缺陷引起的故障對軟體產品的影響程度。
4.缺陷優先順序(Priority): 缺陷的優先順序指缺陷必須被修復的緊急程度。
5.缺陷狀態(Status) :缺陷狀態指缺陷通過一個跟蹤修復過程的進展情況。
6.缺陷起源(Origin) :缺陷來源指缺陷引起的故障或事件第一次被檢測到的階段。
7.缺陷來源(Source): 缺陷來源指引起缺陷的起因。
8.缺陷根源(Root Cause): 缺陷根源指發生錯誤的根本因素。 F- Function :影響了重要的特性、用戶界面、產品介面、硬體結構介面和全局數據結構。並且設計文檔需要正式的變更。如邏輯,指針,循環,遞歸,功能等缺陷。
A- Assignment: 需要修改少量代碼,如初始化或控制塊。如聲明、重復命名,范圍、限定等缺陷。
I- Interface: 與其他組件、模塊或設備驅動程序、調用參數、控制塊或參數列表相互影響的缺陷。
C- Checking: 提示的錯誤信息,不適當的數據驗證等缺陷。
B Build/package/merge :由於配置庫、變更管理或版本控制引起的錯誤。
D- Documentation: 影響發布和維護,包括注釋。
G- Algorithm :演算法錯誤。
U-User Interface:人機交互特性:屏幕格式,確認用戶輸入,功能有效性,頁面排版等方面的缺陷。
P-Performance:不滿足系統可測量的屬性值,如:執行時間,事務處理速率等。
N-Norms:不符合各種標準的要求,如編碼標准、設計符號等。 軟體測試錯誤嚴重程度
1.Critical:不能執行正常工作功能或重要功能。或者危及人身安全。
2.Major:嚴重地影響系統要求或基本功能的實現,且沒有辦法更正。(重新安裝或重新啟動該軟體不屬於更正辦法)
3.Minor:嚴重地影響系統要求或基本功能的實現,但存在合理的更正辦法。(重新安裝或重新啟動該軟體不屬於更正辦法)
4.Cosmetic:使操作者不方便或遇到麻煩,但它不影響執行工作功能或重要功能。
5.Other:其它錯誤。
同行評審錯誤嚴重程度
1.Major:主要的,較大的缺陷
2.Minor:次要的,小的缺陷 1.Resolve Immediately:缺陷必須被立即解決。
2.Normal Queue:缺陷需要正常排隊等待修復或列入軟體發布清單。
3.Not Urgent:缺陷可以在方便時被糾正。 1.Submitted: 已提交的缺陷
2.Open :確認「提交的缺陷」,等待處理
3.Rejected: 拒絕「提交的缺陷」,不需要修復或不是缺陷
4.Resolved :缺陷被修復
5.Closed :確認被修復的缺陷,將其關閉 1.Requirement:在需求階段發現的缺陷
2.Architecture:在構架階段發現的缺陷
3.Design:在設計階段發現的缺陷
4.Code:在編碼階段發現的缺陷
5.Test:在測試階段發現的缺陷 1.Requirement: 由於需求的問題引起的缺陷
2.Architecture: 由於構架的問題引起的缺陷
3.Design: 由於設計的問題引起的缺陷
4.Code: 由於編碼的問題引起的缺陷
5.Test: 由於測試的問題引起的缺陷
6.Integration: 由於集成的問題引起的缺陷

『叄』 有缺陷圖和無缺陷圖在神經網路中的作用

加快學習速度、集中注意力。在神經網路中,缺陷並不會影響低層次的統計特徵,如圖像的垂直翻轉,同時對性能並沒有持久的影響,以及最終可以通過進一步的訓練來克服。在神經網路中,有缺陷的圖像能夠增加自身的活躍性,使學習能力的速度更快,而無缺陷的圖像有集中注意力的作用,提高自製力。

『肆』 suakit工作原理

工作原理:連續可變氣門正時技術,根據發動機的不同工作狀態,通過調節氣門關閉的時機,從而提高發動機的動力性能,提高燃油經濟性。 被吸入發動機氣缸的空氣因慣性,進氣過程結束後保留進入氣缸的趨勢。此時如果延遲氣門關閉時間,氣缸可吸入更多的空氣,可以提高體積效率。其結果是延遲氣門關閉時間越長,高轉速下的性能就越高;反之越是提前關閉氣門,低轉速下的運轉越穩定,扭矩越大。

『伍』 求軟體測試大神解釋下這張流程圖什麼意思

首先從流程圖上看,該圖是問題跟蹤流程圖。
1.新提交的:一般由測試人員提交問題,主要是描述問題現象,然後提交給對應開發;
2.已解決的:開發人員收到問題後,開始對問題進行分析,判斷該問題是否為軟體缺陷,如果是,則需要修改程序,如果不是,則需要將問題退回給測試人員;
3.已驗證的:開發人員確認問題為軟體缺陷後,修改問題,將「已解決的」的問題通過版本更新的形式或其他提交到測試人員,此時問題成為待驗證問題,「已驗證的」由測試人員操作,確定開發修改正確後,問題將關閉。
4.已關閉的:從上面的描述,一種是開發人員認為問題不屬於軟體缺陷,因此將問題退回給測試人員,一種測試人員驗證問題通過後,問題可以關閉了。
5.未解決的:如果前面開發認為不是軟體缺陷的問題,測試認為是軟體缺陷,此時則不會將問題關閉,則是重新提交,成為未解決的,另外一種是驗證的時候仍存在問題,驗證不通過,也會成為未解決。需要開發重新修改軟體,成為「已解決的」。
從上圖來看,該流程圖明顯不夠完善,很難看得問題在各個階段的狀態,建議以問題狀態作為跟蹤依據更好。

『陸』 推薦系統論文閱讀(十)-基於圖神經網路的序列推薦演算法

論文:

論文地址: https://arxiv.org/abs/1811.00855

論文題目:《Session-based Recommendation with Graph Neural Networks》SR-GNN

github: https://github.com/CRIPAC-DIG/SR-GNN

基於會話的推薦一般是將序列會話建模,將整個session進行編碼,變成一個隱向量,然後利用這個隱向量進行下一個點擊預測。但是這種方法沒有考慮到item直接復雜的轉換(transitions)關系,也就是item之間在點擊的session中除了時間順序外還有復雜的有向圖內的節點指向關系,所以之前的方法不足以很好的對點擊序列進行建模。

現有基於會話的推薦,方法主要集中於循環神經網路和馬爾可夫鏈,論文提出了現有方法的兩個缺點:

1)當一個session中用戶的行為數量十分有限時,這些方法難以獲取准確的用戶行為表示。如當使用RNN模型時,用戶行為的表示即最後一個單元的輸出,論文認為只有這樣並非十分准確。

2)根據先前的工作發現,物品之間的轉移模式在會話推薦中是十分重要的特徵,但RNN和馬爾可夫過程只對相鄰的兩個物品的 單向轉移關系 進行建模,而忽略了會話中其他的物品。

為了克服上述缺陷,本文提出了用圖神經網路對方法對用戶對session進行建模:

下面具體介紹怎麼進行圖序列推薦

V = {v1,v2...vm}為全部的item,S = { }為一個session裡面按時間順序的點擊物品,論文的目標是預測用戶下一個要點擊的物品vs,n+1,模型的任務是輸出所有item的預測概率,並選擇top-k進行推薦。

我們為每一個Session構建一個子圖,並獲得它對應的出度和入度矩陣。

假設一個點擊序列是v1->v2->v4->v3,那麼它得到的子圖如下圖中紅色部分所示:

另一個例子,一個點擊序列是v1->v2->v3->v2->v4,那麼它得到的子圖如下:

同時,我們會為每一個子圖構建一個出度和入度矩陣,並對出度和入度矩陣的每一行進行歸一化,如我們序列v1->v2->v3->v2->v4對應的矩陣如下:

這個矩陣裡面的值是怎麼計算的呢?下面講一下:

看左邊的出度矩陣,第一行為 0 1 0 0 ,代表著v1->v2,因為v1,只有一個指向的item,所以為1;看第二行,0 0 1/2 1/2,因為v2有指向v3和v4的邊,所以進行歸一化後每一個值都變成了1/2。入度矩陣的計算方法也是一樣的,就不再說了。

本文採用的是GRU單元進行序列建模,將圖信息嵌入到神經網路中,讓GRU充分學習到item之間的關系,傳統的GRU只能學到相鄰的兩個物品之間的關系,加入圖信息後就能學到整個session子圖的信息。

計算公式如下:

為了剛好的理解這個計算過程,我們還是使用之前那個例子:v1->v2->v3->v2->v4來一步步分析輸入到輸出的過程。

(1) 是t時刻,會話s中第i個點擊對應的輸入, 是n✖️2n的矩陣,也就是會話子圖的完整矩陣,而 是其中一行,即物品vi所對應的那行,大小為1✖️2n,n代表序列中不同物品的數量。

如果按照例子來看,如果i取2,那麼 為 [0 0 1/2 1/2 1/2 0 1/2 0]

進一步的,可以把 :拆解為[ , ]

(2) 可以理解為序列中第i個物品,在訓練過程中對應的嵌入向量,這個向量隨著模型的訓練不斷變化,可以理解為隱藏層的狀態,是一個d維向量。

   (3)  H是d*2d的權重向量,也可以看作是一個分塊的矩陣,可以理解為H=[Hin|Hout],每一塊都是d*d的向量。

那麼我們來看看計算過程:

1)[ ..., ] ,結果是d * n的矩陣,轉置之後是n*d的矩陣,計作

2) : H相當於[   ],即拆開之後相乘再拼接,因此結果是一個1 * 2d的向量。

上面就是完整的第i個點擊的輸入的計算過程,可以看到,在進入GRU計算之前,通過跟As,i矩陣相乘,把圖信息嵌入到了神經網路中取,加深了神經網路學習到的item之間的交互信息。

此外,就是GRU的計算過程了,跟原始的GRU不一樣的地方在於輸入從xt變成了嵌入了圖信息的as,i。

通樣也有更新門和重置門,計算方法跟原始GRU一模一樣。

這里的 其實就是相當於原始gru中的 ,只不過在SR-GNN裡面,進行一輪運算的時候i是沒有變化,相當於每個物品單獨進去GRU進行計算,得到自己的向量,也就是說在GRU的計算過程中, 是不斷變化的,看一下源碼更易於理解:

hidden就是公式裡面的 ,在gru的每一個step計算中都會進行更新,這里我有個疑問,如果所有item的hidden都更新的話,那麼應該是整個序列中所有的item並行進入GRU中進行計算,每一個step都得到自己的vector,當每個item的vector更新後,下一個step就重新根據新的 計算 ,接著計算下一個step。

計算過程大概就是下面這樣:

這里有四個GRU並行計算,沒次更新自己的hidden狀態,輸入則考慮所有的hidden和圖信息。

從上面的圖看來,每一個item都要進行T個step得到自己的item-vec,所以經過T個step後,我們就得到了序列中所有item的向量,即:

圖中用藍色框框畫出來的向量,有了這些向量後,我們怎麼得到預測結果呢?這就引入了下一個問題。

觀察上面的模型結構,我們看到attention,沒錯,我們認為一個session中的這些item-vec並不都對預測結果產生影響,有些item對結果影響很大,有些影響很小,所以我們進行了加權求和。同時,論文認為session對最後一個item-vec,s1=vn是重要的,所以單獨拿出來:

公式(6)就是簡單的attention操作,其實從公式上來看就是計算每個vi跟最後一個向量vn的權值,然後進行加權求和。

在最後的輸出層,使用sh和每個物品的embedding進行內積計算,這里vi應該是item的embedding層出來的向量,而不是後面一直更新的hidden:

最後通過一個softmax得到最終每個物品的點擊概率:

損失函數為交叉熵損失函數:

從數據上來看,SR-GNN超過了經典的GRU4REC,這也說明了圖信息的嵌入能帶來更好的推薦效果。

本論文很巧妙的將圖信息嵌入的神經網路中,更高地讓GRU學習到每個item之間的關系,不再局限於相鄰的物品之間進行學習。近年來,圖神經網路的思想和方法屢屢被用在推薦系統中,學好圖神經網路應該是推薦系統的下一個熱潮。

『柒』 缺陷檢測演算法

基本兩個步驟:
1、缺陷檢出,演算法較多,本人認為是不變矩陣法和主成分分析法;
2、缺陷識別和分類,多數使用BP神經網路進行訓練,提高識別率。

『捌』 軟體缺陷分類標准

軟體缺陷(software defect)分類標准缺陷屬性屬性名稱 描述 缺陷標識(Identifier) 缺陷標識是標記某個缺陷的一組符號。每個缺陷必須有一個唯一的標識 缺陷類型 (Type) 缺陷類型是根據缺陷的自然屬性劃分的缺陷種類。 缺陷嚴重程度 (Severity) 缺陷嚴重程度是指因缺陷引起的故障對軟體產品的影響程度。 缺陷優先順序(Priority) 缺陷的優先順序指缺陷必須被修復的緊急程度。 缺陷狀態(Status) 缺陷狀態指缺陷通過一個跟蹤修復過程的進展情況。 缺陷起源(Origin) 缺陷來源指缺陷引起的故障或事件第一次被檢測到的階段。 缺陷來源(Source) 缺陷來源指引起缺陷的起因。 缺陷根源(Root Cause) 缺陷根源指發生錯誤的根本因素。缺陷類型(Type)缺陷類型編號 缺陷類型 描述 10 F- Function 影響了重要的特性、用戶界面、產品介面、硬體結構介面和全局數據結構。並且設計文檔需要正式的變更。如邏輯,指針,循環,遞歸,功能等缺陷。 20 A- Assignment 需要修改少量代碼,如初始化或控制塊。如聲明、重復命名,范圍、限定等缺陷。 30 I- Interface 與其他組件、模塊或設備驅動程序、調用參數、控制塊或參數列表相互影響的缺陷。 40 C- Checking 提示的錯誤信息,不適當的數據驗證等缺陷。 50 B Build/package/merge 由於配置庫、變更管理或版本控制引起的錯誤。 60 D- Documentation 影響發布和維護,包括注釋。 70 G- Algorithm 演算法錯誤。 80 U-User Interface 人機交互特性:屏幕格式,確認用戶輸入,功能有效性,頁面排版等方面的缺陷。 90 P-Performance 不滿足系統可測量的屬性值,如:執行時間,事務處理速率等。 100 N-Norms 不符合各種標準的要求,如編碼標准、設計符號等。缺陷嚴重程度(Severity)1.3.1 軟體測試錯誤嚴重程度 # 缺陷嚴重等級 描述 1 Critical 不能執行正常工作功能或重要功能。或者危及人身安全。 2 Major 嚴重地影響系統要求或基本功能的實現,且沒有辦法更正。(重新安裝或重新啟動該軟體不屬於更正辦法) 3 Minor 嚴重地影響系統要求或基本功能的實現,但存在合理的更正辦法。(重新安裝或重新啟動該軟體不屬於更正辦法) 4 Cosmetic 使操作者不方便或遇到麻煩,但它不影響執行工作功能或重要功能。 5 Other 其它錯誤。1.3.2 同行評審錯誤嚴重程度 # 缺陷嚴重等級 描述 Major 主要的,較大的缺陷 Minor 次要的,小的缺陷缺陷優先順序(Priority)# 缺陷優先順序 描述 1 Resolve Immediately 缺陷必須被立即解決。 2 Normal Queue 缺陷需要正常排隊等待修復或列入軟體發布清單。 3 Not Urgent 缺陷可以在方便時被糾正。缺陷狀態(Status)缺陷狀態 描述 Submitted 已提交的缺陷 Open 確認「提交的缺陷」,等待處理 Rejected 拒絕「提交的缺陷」,不需要修復或不是缺陷 Resolved 缺陷被修復 Closed 確認被修復的缺陷,將其關閉缺陷起源(Origin)缺陷起源 描述 Requirement 在需求階段發現的缺陷 Architecture 在構架階段發現的缺陷 Design 在設計階段發現的缺陷 Code 在編碼階段發現的缺陷 Test 在測試階段發現的缺陷缺陷來源(Source)缺陷來源 描述Requirement: 由於需求的問題引起的缺陷 Architecture: 由於構架的問題引起的缺陷Design: 由於設計的問題引起的缺陷 Code: 由於編碼的問題引起的缺陷Test: 由於測試的問題引起的缺陷 Integration: 由於集成的問題引起的缺陷

『玖』 圖神經網路是怎麼煉成的:GNN基本原理簡介

此文算是對Google Research這篇 A Gentle Introction to Graph Neural Networks 神作的閱讀筆記.

十多年來,研究人員開發了一種稱之為圖神經網路(Graph Neural Networks,GNNs)的技術,旨在將如今在深度學習的諸多任務中摧枯拉朽的神經網路,應用到圖結構之上,從而讓神經網路捕捉到更錯綜復雜的交叉特徵,以期待在一些任務上取得更佳的效果。鑒於操作圖數據結構的復雜性,盡管已經發展了十幾年,它在實際應用中卻剛剛起步,即時是google也才開始研究將其被應用到葯品研發、物理模擬、假新聞檢測、交通預測和推薦系統等領域。

盡管GNN是一個新興的研究領域,但圖結構的數據其實在我們身邊無處不在。那麼什麼是圖呢?

這個理科生應該都清楚,圖有點(Vertex)和邊(Edge)兩部分組成,一個圖就代表了各個實體節點(node)之間的關系(edge):

每個節點或者邊都可以包含它的一些屬性信息,比如如果一個節點表示一個人,那麼就可以包含這個人的姓名、性別、身高、體重之類的..我們研究需要的信息。
而這些信息,都可以用通用的向量的形式存入其中:

還有別忘了一點,邊是可以有方向的,按此我們還能分為有向圖或是無向圖。邊的方向代表了信息的傳遞方向,例如a是b的微信好友,那b也是a的微信好友,好友關系自然是沒方向的,而比如a是b的爹,那顯然b就不是a的爹,此時叫爹的關系就是有有方向的。

圖結構的構建是非常靈活的,可以根據個人的設計構建出各種不一樣的圖。而作為開發者顯然要結合實際解決的問題來構建合適的圖。

正如前面所提到的,圖無處不在。你可能已經熟悉例如知識圖譜、社交網路之類的圖數據。當時顯然,圖是一種極其強大的通用數據表示,傳統神經網路中用到的歐式空間的數據,同樣可以用圖來表示,例如可以將圖像和文本建模為圖結構數據。

比如,我們可以將一張圖片的每個像素作為圖的節點,再將相鄰的像素用邊連接起來,就構造了一個該圖像的圖。

如上圖展示了一個5*5的圖片的鄰接矩陣表示和圖表示。

我們將每個單詞作為節點,並將每個節點連接到下一個節點,就得到了一個文本的圖:

當然,在實踐中我們並不會這樣來編碼文本和圖像,因為所有的圖和文本都是非常規則的結構,表示成圖就多此一舉了。
我們再來看一些例子,這些數據的結構更加復雜,除了圖之外很難用其他方式來表達。

分子是構成物質的基石,我們可以用節點來表示它的原子和電子,用邊來表示共價鍵,這樣便將一個分子表示成了一個圖:

不同的圖可以表示出不同的分子結構:

都說社會是一個大熔爐,身處其中的人和事物之間會發生極其復雜的關系。這種關系的表示用普通的表格數據是很難表示的,而圖卻能很好的展現。

下圖是將莎士比亞歌劇《奧賽羅》中的任務關系表示成圖:

怎麼樣,如果沒看過歌劇能推測出那些是主角嗎?

下面是將一個空手道競標賽的對戰關系構建為圖:

類似的可以表示為圖的數據還有很多很多,比如論文的引用之類統統都可以表示為圖,下面是現實世界中不同規模的數據圖表示的統計數據:

可見,各種各樣規模的數據都可以輕松的用圖來表示。

在上面我們列舉了這么多的圖,那麼我們該對這些圖數據執行什麼任務呢?

圖上的預測任務一般分為三類:

下面我們通過具體的示例來說明GNN怎麼來解決上述的三個級別的預測問題。

在圖級別的任務中,我們的目標是預測整個圖的屬性。例如我們通過分子圖,來預測該分子的氣味或是者它是否是與某些疾病有關的受體。
它的輸入是完整的圖:

輸出是圖的分類:

節點級任務一般就是預測每個節點的類型。
一個經典的例子就是Zach的空手道俱樂部。該數據集市一個單一的社交網路圖,猶豫政治分歧,講師Hi先生和管理員John之間不和導致空手道俱樂部分裂,其中的學員一部分效忠於Hi先生,一部分效忠於John。每個節點代表空手道聯系著,邊代表空手道之外這些成員的互動,預測問題就是判斷這些節點是效忠於誰的。

邊級任務其實就是預測每個邊的屬性.
在目標檢測的語義分割任務中,我們也許不止要識別每個目標的類型,還需要預測各個目標之間的關系.我們可以將其描述為邊級別的分類任務:給定表示圖像中的對象的節點,我們希望預測哪些節點共享一條邊,或者該邊的值是多少。如果我們希望發現實體之間的連接,我們可以考慮圖是完全連通的,並根據它們的預測值修剪邊來得到一個稀疏圖。

用圖表示就是這樣的過程:

那麼我們要如何使用神經網路來處理上述各種類型的任務呢?

首先要考慮的是如何將圖結構數據適配到神經網路.
回想一下啊,傳統的神經網路輸入的往往是矩陣形式的數據,那麼要如何把圖作為輸入呢?
圖表示有四種類型的信息:節點(nodes),邊(edges),全局上下文(global-context),聯通性(connectivity).對於前三種信息,有一個非常簡單的方案,比如將節點排序,然後每個節點表示為一個向量,所有節點就得到了一個節點的矩陣,同理,邊和上下文也可以這么搞.
但是要標識連通性就沒有這么簡單了,也許你會想到用臨街矩陣來表示,但是這樣表示會有明顯的缺陷,因為節點數的規模往往是巨大的,對於一個數百萬節點的圖,那將耗費大量的空間,而且得到的矩陣往往也十分的稀疏,可以說空間利用率會很低.
當然,你也許會想,可以用稀疏矩陣來存儲,這樣就只需要存儲連通的情況,空間利用率將大大提升,但是我們還要考慮到一點,就是稀疏矩陣的高性能計算一直是個艱難的,尤其是在用到GPU的情況.
並且,使用鄰接矩陣還有一個問題就是各種不同的鄰接矩陣可以標識相同的連通性,而這些矩陣並不能保證在神經網路中取的相同的效果.比如,同樣的連通性,通過調換列的順序,就能得到不同的鄰接矩陣:

現在,我們成功的將圖結構成功表示成了置換不變的矩陣格式,終於可以使用圖形神經網路(GNN)來做圖形預測任務了。
GNN是對保持圖對稱性(置換不變性)的圖的所有屬性(節點、邊、全局上下文)的可優化變換。
我們將使用Gilmer等人提出的「消息傳遞神經網路」框架構建GNN,並使用Battaglia等人介紹的圖網路網路架構示意圖。GNNS採用「圖輸入,圖輸出」架構,這意味著這些模型類型接受圖作為輸入,其中包含節點,邊和全局上下文的信息,並逐步地轉換這些圖嵌入,而不會更改輸入的連接圖結構。

我們使用最開始提到的那個圖來構建一個最簡單的GNN,輸入的圖是相應節點,邊,全局信息的向量,我們針對每個向量使用一個MLP層來作變換,於是得到一個新的圖.

針對上述構建的最簡單的GNN,我們如何在上面描述的任何任務中進行預測呢?這里我們僅僅考慮二進制分類的情況,但這個框架可以很容易地擴展到多類或回歸的情況。
如果是對節點分類,我們只要在最後一層接一個線性類器就可以了:

但是上面的預測過程有點過於簡單了,完全沒有用到圖的結構信息,我們在此基礎上增加一個pooling操作,以增加它的邊緣信息:

具體操作是把待預測節點的鄰居節點以及全局的信息進行聚合再做預測,即將這些embedding向量加到一起得到一個新的向量,再輸入到最後的線性分類器.

同理,如果我們只有節點相應邊的信息的話,也可以用類似的方式pooling,然後得到節點的向量表示再輸入分類器:

反之,如果我們只有節點的信息,那麼也可以用邊所連接的兩個節點來pooling出邊的向量,然後將器輸入到分類器預測邊的類型:

顯然,不管是哪種任務,整個GNN的推理過程都是一樣的,可以表示為這樣一個端到端的過程:

不過,顯而易見的,這個簡單的GNN在分類前只是對每個向量進行了一個變換,而沒有用到圖結構的任何信息,雖然在最後做預測的時候做了一些pooling的聚合,但也始終沒有用到adjacency的信息,因此這個GNN的作用相當有限,但是它為我們提供了一個圖結構層變換和堆疊的基本思路.

針對上面最簡單GNN的不足,我們可以在其中根據連通性增加更加復雜的變換從而引入整個圖結構的信息,我們將這個過程稱之為信息傳遞.
信息傳遞包含三個步驟:

這個過程有點類似於卷積操作,每個節點匯聚了其鄰居的節點,經過多個層的變換,它將涵蓋全圖的信息.
於是我們可以將這個節點信息傳遞應用到上述的圖變換過程中:

然後,我們發現它並沒用用上邊的信息,於是可以把邊信息也加上,變成這樣:

既然把邊的信息加上了,那怎麼可以漏掉全局信息呢,於是完整的信息傳遞就可以表示成這樣:

以上,我們梳理了最簡單的GNNs是怎麼完成的,你應該已經對GNN有了一個基本的了解,就像學會了傳統神經網路中最簡單的全連接網路類似,關於GNN還有更多不同種類的更復雜的圖需要取了解和學習,但你只要掌握了以上的思想,學習起來也是十分容易的.

『拾』 SSOS項目的軟體缺陷預防過程有哪幾個階段

SSOS項目的軟體缺陷預防過程有以下4個階段:

第1階段:確定缺陷的技術原因並改正;

第2階段:確定並改正缺陷的過程原因;

第3階段:改正遺漏缺陷的缺陷檢測活動;

第4階段:檢查產品中別處的類似缺陷。

發現軟體缺陷後,要盡快修復缺陷。其原因在於錯誤並不只是在編程階段產生,需求和設計階段同樣會產生錯誤。也許一開始,只是一個很小范圍內的錯誤,但隨著產品開發工作的進行,小錯誤會擴散成大錯誤,為了修改後期的錯誤所做的工作要大得多,即越到後來往前返工也越遠。如果錯誤不能及早發現,那隻可能造成越來越嚴重的後果。缺陷發現或解決的越遲,成本就越高。

(10)軟體缺陷檢測圖神經網路擴展閱讀:

軟體缺陷的表現形式不僅體現在功能的失效方面,還體現在其他方面。主要類型有:軟體沒有實現產品規格說明所要求的功能模塊;軟體中出現了產品規格說明指明不應該出現的錯誤;軟體實現了產品規格說明沒有提到的功能模塊;軟體沒有實現雖然產品規格說明沒有明確提及但應該實現的目標;軟體難以理解,不容易使用,運行緩慢,或從測試員的角度看,最終用戶會認為不好。

閱讀全文

與軟體缺陷檢測圖神經網路相關的資料

熱點內容
汽車中控無網路連接怎麼回事 瀏覽:890
國內家用網路電視哪個好 瀏覽:606
寬頻信號是幾G網路 瀏覽:485
舊路由器怎麼擴展網路 瀏覽:661
300平的店一月多少網路費 瀏覽:581
圖解大學校園計算機網路的點 瀏覽:414
未識別網路共享怎麼解決 瀏覽:939
怎麼讓家裡網路信號增強 瀏覽:73
如何更改網路連接狀態 瀏覽:840
哪個網路直播間人最多 瀏覽:738
怎麼看小米連接的網路 瀏覽:311
撥號無法訪問移動網路紅米雙卡 瀏覽:596
10系統手機網路 瀏覽:876
一句網路多少錢 瀏覽:369
沒電了移動網路能用嗎 瀏覽:303
系統出現網路異常 瀏覽:758
網路畫板如何設置隨機取數 瀏覽:942
wifi代理後app無網路 瀏覽:537
mac連不上共享網路 瀏覽:781
廈門網路連接 瀏覽:549

友情鏈接