本發(fā)明屬于計算機領域,特別涉及一種基于深度強化學習的web服務組合方法。
背景技術:
::隨著網(wǎng)絡信息技術的不斷發(fā)展,用戶對軟件系統(tǒng)的功能需求也越來越多樣化、復雜化和多變化。這種趨勢催生了軟件產(chǎn)品的一種新的設計或架構的理念:面向服務架構(service-orientedarchitecture,soa),它要求應用程序必須是被開發(fā)的可提供良好接口的交互服務的獨立集合。而web服務作為一種建立可互操作的分布式應用程序的新平臺,是基于網(wǎng)絡的、分布式的、自描述的、模塊化的組件,它執(zhí)行特定的任務,遵循一定的技術規(guī)范,可以在網(wǎng)上發(fā)布、定位和調(diào)用,從而成為實現(xiàn)soa體系架構的最有前景的技術手段。現(xiàn)今軟件系統(tǒng)的構建規(guī)模不斷擴大,業(yè)務流程也越來越復雜,單個web服務有限的功能已經(jīng)不能滿足用戶的需要,如何將已有的服務復用組合構建滿足用戶復雜需求、保證服務質(zhì)量,成為web服務應用集成的核心問題。從最初的完成功能目標,到后來關注qos(qualityofservice,服務質(zhì)量)保證服務質(zhì)量,大批學者們已近在web服務組合領域做了大量的研究工作。但是,由于internet網(wǎng)絡環(huán)境的動態(tài)性和組合規(guī)模的不斷擴大,使web服務組合領域依然面臨著一些挑戰(zhàn)。因此,對web服務組合方法的研究和創(chuàng)新有著重要而現(xiàn)實的意義。近年來,有一些研究人員采用強化學習技術來解決自適應性服務組合問題,但是值得注意的是這些方法忽略了許多問題。(1)現(xiàn)有的服務組合方法,將服務組合建模為一個馬爾可夫決策過程(markovdecisionprocess,mdp)。然而在實際環(huán)境中agent是無法完全感知環(huán)境信息的,這種部分感知的問題屬于非馬爾可夫型環(huán)境,如果不針對強化學習算法進行處理的話,這種學習將無法收斂。(2)強化學習的理論關注的是小規(guī)模、離散的問題,但在真實的服務組合的問題中,所面對的服務組合問題的規(guī)模是不容小覷的并且狀態(tài)之間也是連續(xù)的。(3)強化學習利用從環(huán)境中獲得回饋被廣泛的應用于實際問題的解決。在經(jīng)典的強化學習算法中,值函數(shù)采用策略查找表(look-uptable)保存。在面對大規(guī)模服務組合為問題時,這種策略顯然有一定的局限性。循環(huán)神經(jīng)網(wǎng)絡(recurrentneuralnetworks-rnn)是一種常見的深度學習網(wǎng)絡結構,它由一個或者多個反饋回路組成,賦予神經(jīng)網(wǎng)絡對時間進行顯示建模的能力。循環(huán)神經(jīng)網(wǎng)絡(rnn)適用于序列化的數(shù)據(jù)并且對這些數(shù)據(jù)的可以較為精確的模擬,它記錄每個時刻的激活值,通過添加跨域時間點的自連接隱藏層增強了網(wǎng)絡的時間相關性,但是相反的這也導致了整個網(wǎng)絡很難訓練并且出現(xiàn)梯度消失的現(xiàn)象。技術實現(xiàn)要素:發(fā)明目的:針對現(xiàn)有技術中存在的問題,本發(fā)明提供一種解決了現(xiàn)實環(huán)境的部分可觀察性,更加準確的進行服務選擇組合提供給用戶高質(zhì)量的基于深度強化學習的web服務組合方法。技術方案:為解決上述技術問題,本發(fā)明提供一種基于深度強化學習的web服務組合方法,包括如下步驟:1)獲取用戶需求,構建當前任務下的部分可觀察馬爾可夫決策過程服務組合模型;2)初始化系統(tǒng)參數(shù)以及網(wǎng)絡結構,并將模型的開始狀態(tài)作為系統(tǒng)當前狀態(tài);3)當?shù)螖?shù)m小于k次(即學習片段episode的次數(shù)),隨機選擇動作直接進入步驟5,否則進入步驟4;4)采用啟發(fā)式行為選擇策略選擇一個行為。判斷當前狀態(tài)是否屬于隱藏狀態(tài)集,如何屬于隱藏狀態(tài)集則判定當前狀態(tài)為隱藏狀態(tài),并通過循環(huán)神經(jīng)網(wǎng)絡lstm模擬的策略空間選擇最大概率的動作。如果不屬于隱藏狀態(tài)集則判斷當前狀態(tài)為完全可見狀態(tài)并通過查詢q值表選擇最優(yōu)的動作;5)采用ε-greedy策略選擇最終執(zhí)行動作,并與環(huán)境交互得到反饋;6)對于歷史信息進行存儲,并更新循環(huán)神經(jīng)網(wǎng)絡或者q值表,利用熵計算當前狀態(tài)是否為隱藏狀態(tài),如果判斷結果是隱藏狀態(tài)則加入隱藏狀態(tài)集合,如果判斷結果不是隱藏狀態(tài)則加入完全可見狀態(tài)集合,最后進入下一步;7)系統(tǒng)當前狀態(tài)設置為下一個狀態(tài),對當前狀態(tài)是否為終止狀態(tài)進行判斷,如果是終止狀態(tài)則進入步驟8,如果不是終止狀態(tài)則返回步驟3;8)觀察神經(jīng)網(wǎng)絡的收斂情況以及q值表中長期得益矩陣所有值的變化幅度,使得神經(jīng)網(wǎng)絡收斂以及所有值的變化幅度小于閾值,采用貪心原則,選取一條從開始狀態(tài)到終止狀態(tài)的組合路徑,依照模型的映射關系,生成web服務組合工作流,將服務組合結果反饋給用戶。進一步的,所述步驟4中采用啟發(fā)式行為策略選擇一個動作的具體步驟為:已知隱藏狀態(tài)集h(s),判斷s是否屬于h(s);若狀態(tài)s∈h(s),則直接由adqrc模型根據(jù)信念狀態(tài)和歷史信息作為輸入,動作的分布概率為輸出,選擇最大概率的動作;否則通過q查詢q值表選擇最優(yōu)的動作。進一步的,所述步驟2中初始化系統(tǒng)參數(shù)的具體步驟為:初始化折扣因子γ,0<γ<1;初始化學習率α,0<α<1;區(qū)分狀態(tài)的臨界值τ;初始化adqrc模型中神經(jīng)網(wǎng)絡的權重和偏置;初始化瞬間效益矩陣和長期效益矩陣,用來計算學習過程中的的效益數(shù)據(jù);初始化q值映射表<s,a,q>;初始化隱藏狀態(tài)集合h(s)={},用一個存儲表d(s,a,q)存儲經(jīng)過一個學習片段之后所學習到的信息;初始化迭代次數(shù)m為1以及開始判斷狀態(tài)類別的迭代次數(shù)檻值k。進一步的,所述步驟6中利用熵計算當前狀態(tài)是否為隱藏狀態(tài)的具體步驟為:采用熵值來區(qū)分出隱藏狀態(tài)還是完全可見狀態(tài),用h(s)表示其中ai,aj表示在狀態(tài)s下可執(zhí)行的動作,q(s,ai)是狀態(tài)s下執(zhí)行ai動作的q值,q(s,aj)是狀態(tài)s下執(zhí)行aj動作的q值。若h(s)>τ,則該狀態(tài)為隱藏狀態(tài),其中τ表示區(qū)別隱藏狀態(tài)和可見狀態(tài)的臨界值。進一步的,所述步驟6中更新q值表的具體步驟如下:5.1)首先在狀態(tài)s下選擇at,計算瞬時效益值r(s);將不同的qos屬性的數(shù)值進行規(guī)格化處理,映射到[0,1]區(qū)間中。當qos屬性和服務質(zhì)量之間存在正相關時:將各個qos屬性進行權值加權求和操作,公式為:其中m代表qos屬性的數(shù)量,wi表示各個qos屬性的權重,權重和為1;5.2)然后根據(jù)強化學習中的q學習方法,計算本次迭代中,系統(tǒng)在當前狀態(tài)s下執(zhí)行動作at時的效益值,計算公式為:其中s′是s的下一后繼狀態(tài),表示通過lstm網(wǎng)絡模擬的q值的估算值,并將計算結果更新q值表。與現(xiàn)有技術相比,本發(fā)明的優(yōu)點在于:本發(fā)明將循環(huán)神經(jīng)網(wǎng)絡(recurrentneuralnetworks-rnn)與強化學習結合,希望通過rnn來作為強化學習中函數(shù)估計的方法,提高準確性、高效性,并且增加預測性以應對環(huán)境的動態(tài)變化。本發(fā)明解決服務組合中存在的環(huán)境動態(tài)變化、部分可觀察狀況,組合規(guī)模龐大等挑戰(zhàn),將對soa服務組合問題提供一種有效的解決方案,為目前不斷擴展的功能需求和不斷提高的軟件質(zhì)量要求提供了有效的保證。本發(fā)明針對大規(guī)模、動態(tài)場景的可進行快速、自適應性的web服務組合方法,這一方法解決了現(xiàn)實環(huán)境的部分可觀察性,更加準確的進行服務選擇組合提供給用戶高質(zhì)量的組合結果,此外其rnn帶有的預測特點也使該方法盡管在多變的環(huán)境中仍保持精確性。本發(fā)明在對已發(fā)布的簡單功能的服務進行組合,以滿足實際應用中用戶的復雜需求的過程中,由于互聯(lián)網(wǎng)環(huán)境是動態(tài)不可預知的,因而基于網(wǎng)絡的web服務也是具有動態(tài)變化性的。例如qos水平下降或是服務功能衰退。這些因素導致組合方案的失敗。因此本發(fā)明充分考慮到適應這些動態(tài)不確定因素的重要性,在組合過程中提高了自適應性,從而交付給用戶可靠的組合方案。另一方面,面對用戶需求功能不斷復雜,增加了組合流程中抽象服務的數(shù)量,同質(zhì)服務(功能相同,qos不同)的增長擴展了候選服務集的空間。而一個服務具有個抽象服務,每個抽象服務擁有個候選服務的組合問題,就會有種組合服務構建方式。因此在當前web服務快速發(fā)展的環(huán)境中,鮮有辦法真正解決了這個大規(guī)模問題。本發(fā)明對優(yōu)化組合算法做了研究,在已有的強化學習基礎上結合深度學習框架rnn,提出了一種新的組合方法:自適應性深度強化學習方法(adaptivedeepq-learningandrnncompositionnetwork,adqrc)不僅可以有效的解決現(xiàn)實環(huán)境的大量不確定性問題,而且可以解決強化學習表存儲的弊端提高函數(shù)的泛化能力。此外,為了更好的提高系統(tǒng)的效率,本發(fā)明在狀態(tài)分類上進行了處理,將狀態(tài)分為隱藏狀態(tài)和可見狀態(tài),采用不同的方法儲存其信息。在建模問題上,現(xiàn)有的利用強化學習機制進行服務組合的方法中,通常將服務組合過程建模為馬爾可夫決策過程(markovdecisionprocess,mdp),然后應用某種強化學習算法予以求解。這類建模方法在現(xiàn)實中可能很難運用,缺少了對環(huán)境的部分可觀察性特點的考慮。所以本發(fā)明對服務組合流程采用部分可觀察馬爾可夫(partially-observablemarkovdecisionprocess,pomdp)的建模方式,利用lstm網(wǎng)絡結構來對值函數(shù)進行模擬。附圖說明圖1為本發(fā)明的總體流程圖;圖2為自適應性深度強化學習adqrc框架結構示意圖;圖3為agent自主行為選擇結構示意圖;圖4為傳統(tǒng)的rnn網(wǎng)絡模型示意圖。具體實施方式下面結合附圖和具體實施方式,進一步闡明本發(fā)明。本發(fā)明將基于rnn的改進網(wǎng)絡lstm網(wǎng)絡結構模型,對利用強化學習進行服務組合的過程進行改進,構建了一個創(chuàng)新性的自適應性深度強化學習方法(adaptivedeepq-learningandrnncompositionnetwork,adqrc)如圖2所示。循環(huán)神經(jīng)網(wǎng)絡是一個賦予神經(jīng)網(wǎng)絡對時間進行顯示建模的能力,通過添加跨域時間點的自連接隱藏層。也就是說,隱藏層的反饋,不僅僅進入輸出端,而且還進入了下一時間步驟的隱藏層。rnn可以將前期信息與當前任務連接,例如在一個服務組合的過程中,每個服務的狀態(tài)是變化的,但是又是有規(guī)律的,并不是完全的隨機變化。例如一個服務的在以往的表現(xiàn)中,可達性和成功率都比較高,響應時間比較短,可能隨著網(wǎng)絡狀況的變化,服務的屬性狀態(tài)會有一些變化,但是相對的趨勢其實也是有規(guī)律的,各屬性都會相應的整體往同一趨勢調(diào)整。所以在模擬q值的時候,不應該把之前的信息丟棄,這種狀態(tài)對應q值的變化是持久性的。在傳統(tǒng)的神經(jīng)網(wǎng)絡中并不能做到這點,看起來是一種巨大的弊端。但是rnn解決了這個問題,rnn是包含循環(huán)的網(wǎng)絡,允許信息的持久化。圖1描繪了循環(huán)神經(jīng)網(wǎng)絡的原理。如果通過兩個時間步來展開整個網(wǎng)絡,就得到一個無環(huán)形式的可視化,其中權重(從輸入到隱藏和隱藏到輸出)在每個時間步都是相同的。由此我們可以看出其深度不僅僅發(fā)生在輸入和輸出之間,而且還發(fā)生在跨時間步上,每個時間步又可以被認為是一個層。圖2為本發(fā)明所提出面向大規(guī)模、部分可觀察場景下,用于解決自適應性的服務組合問題的adqrc框架結構。其中大致分為三大模塊:lstm網(wǎng)絡模塊、強化學習模塊、環(huán)境模塊,這三個模塊之間信息相互傳遞。首先強化學習模塊和環(huán)境模塊交互,采用試錯的方法學習,但與通常方法不同的是,強化學習模塊在進行動作選擇的時候,采用了圖3的策略,其和lstm網(wǎng)絡模塊之間進行信息傳遞,從而選擇最佳動作。其次在lstm網(wǎng)絡模塊采用神經(jīng)網(wǎng)絡的方法進行函數(shù)估計,取代強化學習中查找表的策略,記q為目標函數(shù),也就是在強化學習模塊通過與環(huán)境模塊交互獲得的值函數(shù);為通過神經(jīng)網(wǎng)絡方法的估計函數(shù)。假設值函數(shù)的初始狀態(tài)為r0,m:(s,a)→m(s,a)為函數(shù)的估計算子(本發(fā)明中就是lstm網(wǎng)絡),γ表示強化學習中的值迭代,則在學習中產(chǎn)生的值函數(shù)序列為r0,m(r0),γ(m(r0)),m(γ(m(r0))),γ(m(γ(m(r0))))...最后在agent和環(huán)境不斷交互學習的過程中,強化學習不斷更新的q值也會實時更新給lstm網(wǎng)絡,不斷訓練網(wǎng)絡結構。在訓練的過程中并不是更新單獨的q值,而是更新神經(jīng)網(wǎng)絡中的參數(shù)來最小化損失參數(shù):其中函數(shù)表示誤差函數(shù),在訓練的過程中要減少誤差,θi表示神經(jīng)網(wǎng)絡中神經(jīng)元之間的權重參數(shù),表示通過lstm網(wǎng)絡模擬的q值的估算值,等式中采用梯度下降的方法對神經(jīng)網(wǎng)絡中的參數(shù)進行更新。在訓練整個神經(jīng)網(wǎng)絡的時候,它既泛化了下一個目標狀態(tài)的q值,又更新了當前狀態(tài)的q值,而這種更新影響著其他的q值,這個過程是震蕩發(fā)散的。圖3描述了本發(fā)明中創(chuàng)新性的agent的動作選擇策略,首先在adqrc框架中會對狀態(tài)進行分類,一類是完全可觀察的,這種狀態(tài)在采取最佳行為時,它的反饋值總是好的;另一種是隱藏狀態(tài),這種狀態(tài)可能有多種最佳動作,但是沒有一種動作在執(zhí)行后給出一個穩(wěn)定的正反饋值。所以針對隱藏狀態(tài)下的q值變化幅度大的特點,采用熵值來區(qū)分出隱藏狀態(tài)若h(s)>τ,則該狀態(tài)為隱藏狀態(tài),其中τ表示區(qū)別隱藏狀態(tài)和可見狀態(tài)的臨界值。所以圖3中agent在進行動作選擇的時候首先判斷當前所處的狀態(tài)s是隱藏狀態(tài)還是可見狀態(tài),再決定才用什么方式得到q值。若當前狀態(tài)是隱藏狀態(tài),則采用lstm網(wǎng)絡前饋傳播得到q值;相反若當前狀態(tài)是可見狀態(tài),則通過查找表的方式。這種自適應性的方式,可以靈活的選擇動作策略,既保證了準確性也提高了效率。圖4描述了整個自適應性深度強化學習方法(adaptivedeepq-learningandrnncompositionnetwork,adqrc)的算法流程。最后通過實例來對本發(fā)明的步驟進行說明:實例背景:假定用戶甲在籌備一次從a地到b地的旅游計劃,首先他將自己的需求(如計劃中包括時間安排、預算范圍、個人偏好等)提交給web服務引擎,構建一個完整的需求模型,目的是希望web服務執(zhí)行引擎能夠選擇合適的web服務完成組合服務,使其在功能滿足的條件下在用戶體驗上也能夠最佳。實施步驟:1)模型建立階段;web服務引擎根據(jù)用戶的事先的信息進行需求分解,得到組件服務的功能需求和非功能需求。例如在本實例中,可以將功能需求分為五個部分:交通方式選擇、出行要求設置、酒店選擇、抵達時間計算和最終預訂確認5個部分。非功能需求可能包括:經(jīng)費預算上限、個人舒適度等等。然后將問題轉換問本方法的模型。具體而言,用部分可觀察馬爾可夫(partially-observablemarkovdecisionprocess,pomdp)模型模擬整個組合流程,將web服務的前置和后置條件作為pomdp的狀態(tài)空間,其中將狀態(tài)集合分為兩個集合:隱藏集合h(s)和可見集合,在學習過程中通過熵值區(qū)分這兩個狀態(tài)集合。其次把可執(zhí)行的web服務定義成動作狀態(tài),動作表示從一個狀態(tài)轉換為另一個狀態(tài)的行為,用web服務的質(zhì)量參數(shù)當做是得益值所述初始化系統(tǒng)參數(shù)和變量的具體內(nèi)容為:初始化折扣因子γ,0<γ<1;初始化學習率α,0<α<1;區(qū)分狀態(tài)的臨界值τ;初始化adqrc模型中神經(jīng)網(wǎng)絡的權重(隨機生成)和偏置;初始化瞬間效益矩陣和長期效益矩陣,用來計算學習過程中的的效益數(shù)據(jù);初始化q值映射表<s,a,q>;初始化隱藏狀態(tài)集合h(s)={},表用來記錄每個時間片;初始化迭代次數(shù)m為1以及開始判斷狀態(tài)類別的迭代次數(shù)檻值k;2)系統(tǒng)首先將開始狀態(tài)s0設置為系統(tǒng)的當前狀態(tài);3)當?shù)螖?shù)小于k次(即學習片段episode的次數(shù)),隨機選擇動作直接進入步驟5,否則進入步驟4;4)采用啟發(fā)式行為選擇策略選擇一個行為。判斷當前狀態(tài)屬于可見狀態(tài)還是隱藏狀態(tài),即是否屬于h(s)。若狀態(tài)s∈h(s),則直接由adqrc模型選擇出概率最大的動作;否則通過查詢q值遍歷在狀態(tài)s下的動作,得到最大的效益值的amax;5)根據(jù)ε-greedy策略選擇at,計算瞬時效益值r(s),計算方法如下:首先將不同的qos屬性的數(shù)值進行規(guī)格化處理,映射到[0,1]區(qū)間中。當qos屬性和服務質(zhì)量之間存在正相關時:其次將各個qos屬性進行權值加權求和操作,公式為:其中m代表qos屬性的數(shù)量,wi表示各個qos屬性的權重(依賴于用戶的個人偏好),權重和為1;6)根據(jù)強化學習中的q學習方法,計算本次迭代中,系統(tǒng)在當前狀態(tài)s下執(zhí)行動作at時的效益值,計算公式為:其中s′是s的下一后繼狀態(tài)。當m=1時,長期得益矩陣屬于初始化狀態(tài),其中的所有長期得益值均為初始值0。7)通過狀態(tài)的熵值,區(qū)別狀態(tài)s的類別,是屬于可見狀態(tài)還是隱藏狀態(tài),計算公式如下:若h(s)>τ,則將狀態(tài)s放入集合h(s)中。并將一個學習片段(eposide)的q值儲存在d(s,a,q)中;否則,狀態(tài)s為可見狀態(tài),更新q值表中的信息8)每個學習片段之后,根據(jù)數(shù)據(jù)d(s,a,q)更新lstm網(wǎng)絡,直到網(wǎng)絡收斂。最后,系統(tǒng)執(zhí)行這一工作流并將最終的服務組合結果反饋給用戶甲,從而完成了一次完整的服務組合過程。以上所述僅為本發(fā)明的實施例子而已,并不用于限制本發(fā)明。凡在本發(fā)明的原則之內(nèi),所作的等同替換,均應包含在本發(fā)明的保護范圍之內(nèi)。本發(fā)明未作詳細闡述的內(nèi)容屬于本專業(yè)領域技術人員公知的已有技術。當前第1頁12當前第1頁12