Rainbow: Combining Improvements in Deep Reinforcement Learning


鄭重聲明:原文參見標題,如有侵權,請聯系作者,將會撤銷發布!

arXiv:1710.02298v1 [cs.AI] 6 Oct 2017 (AAAI 2018)

 

Abstract

  深度強化學習社區對DQN算法進行了一些獨立的改進。但是,尚不清楚這些擴展中的哪些是互補的,是否可以有效地組合。本文研究了DQN算法的六個擴展,並通過經驗研究了它們的組合。我們的實驗表明,該組合在數據效率和最終性能方面均提供了Atari 2600基准測試的最新性能。我們還提供了詳細的消融研究結果,顯示了每個組件對整體性能的貢獻。

 

Introduction

  深度Q網絡算法(DQN;Mnih et al. 2013,2015)啟動了將強化學習(RL)擴展到復雜的順序決策問題的許多最新成功。它將Q學習與CNN和經驗重播相結合,使其能夠從原始像素中學習如何以人類水平的性能玩許多Atari游戲。從那時起,許多擴展方案被提出以增強其速度或穩定性。
  雙重DQN (DDQN;van Hasselt, Guez, and Silver 2016) 通過去耦選擇和bootstrap動作的評估,解決了Q學習的高估偏差(van Hasselt 2010)。優先經驗重播(Prioritized Experience Replay, Schaul et al. 2015)通過重播更多的轉換內容,從中學習更多來提高數據效率。對偶網絡結構(Wang et al. 2016)通過分別表示狀態價值和動作優勢來幫助推廣各種動作。從A3C(Mnih et al.2016)中使用的多步bootstrap目標學習(Sutton 1988;Sutton and Barto 1998),可以改變偏差-方差權衡並有助於將新觀察到的獎勵更快地傳播到較早訪問的狀態。分布Q學習(Bellemare, Dabney, Munos 2017)學習折扣回報的分類分布,而不是估計均值。帶噪DQN(Fortunato et al. 2017)使用隨機網絡層進行探索。當然,這個列表並不詳盡。

  這些算法中的每一種都可以在單獨情況下顯著提高性能。由於它們基於共享框架來解決根本不同的問題,因此可以合理地將它們組合在一起。在某些情況下,已經有這么做的:優先DDQN和對偶DDQN都使用雙重Q學習,並且對偶DDQN也與優先經驗重播結合在一起。在本文中,我們提出研究一種結合了所有上述成分的智能體。我們展示了如何將這些不同的想法整合在一起,並且它們確實在很大程度上是互補的。實際上,它們的結合在Arcade學習環境(Bellemare et al. 2013)的57套Atari 2600游戲的基准套件中帶來了最新的技術成果,無論是數據效率還是最終性能。最后,我們顯示了消融研究的結果,以幫助了解不同成分的貢獻。

 

Background

  強化學習解決了智能體學習如何在環境中動作以最大化標量獎勵信號的問題。沒有直接監督會被提供給智能體,例如,永遠不會直接告訴智能體采取最優動作。

 

Agents and environments. 在每個離散時間步驟t = 0, 1, 2 …,環境向智能體提供觀察值St,智能體通過選擇動作At進行響應,然后環境提供下一個獎勵Rt+1,折扣γt+1和狀態St+1。這種交互被形式化為馬爾可夫決策過程(Markov Decision Process,MDP),即元組(S, A, T, r, γ),其中S是狀態的有限集合,A是動作的有限集合,T(s, a, s') = P[St+1 = s' | St = s, At = a]是(隨機)轉換函數,r(s, a) = E[Rt+1 | St = s, At = a]是獎勵函數,而γ ∈ [0, 1]是折扣因子。在我們的實驗中,MDP將是episodic的,其中常數γt = γ,除非episode終止(γt = 0),但算法以一般形式表示。

  在智能體方面,動作選擇由策略π給出,該策略定義了每個狀態的動作概率分布。根據在時間 t 遇到的狀態St,我們將折扣回報定義為智能體收集的未來獎勵的折扣總和,其中未來k步獎勵的折扣由該時間之前折扣的乘積給出,。智能體的目標是通過找到好的策略來最大化期望折扣回報。

  該策略可以直接學習,也可以根據其他一些學習量來構建。在基於價值的強化學習中,當從給定狀態vπ(s) = Eπ[Gt | St = s](或狀態-動作對,qπ(s, a) = Eπ[Gt | St = s, At = a])開始執行策略π時,智能體將學習期望折扣回報或價值的估計。從狀態-動作價值函數派生新策略的一種常見方法是相對於動作價值ε-貪婪地采取動作。這對應於以概率(1 - ε)采取最高價值的動作(貪婪動作),否則以概率ε隨機均勻地采取動作。此類策略用於引入一種探索形式:通過根據其當前估計值隨機選擇局部最優的動作,智能體可以在適當的時候發現並糾正其估計值。主要的局限性在於,很難發現可以延伸到未來的替代動作方案。這激發了更直接的探索形式的研究。

 

Deep reinforcement learning and DQN. 較大的狀態與/或動作空間使得難以分別學習每個狀態和動作對的Q值估計。在深度強化學習中,我們使用深度(即多層)神經網絡表示智能體的各種組成部分,例如策略π(s, a)或價值q(s, a)。這些網絡的參數通過梯度下降進行訓練,以最小化一些合適的損失函數。

  在DQN中(Mnih et al. 2015),深度神經網絡和RL通過使用CNN成功地組合在一起,以近似估計給定狀態St的動作價值(以原始像素幀棧的形式輸入到網絡中)。在每個步驟中,智能體基於當前狀態,相對於動作價值ε-貪婪地選擇一個動作,並將狀態(St, At, Rt+1, γt+1, St+1)添加到重播內存緩沖區(Lin 1992),其中包含最近的一百萬個轉換。通過使用隨機梯度下降來優化神經網絡的參數,以最小化損失:

其中 t 是從重播內存中隨機選取的時間步驟。損失的梯度僅反向傳播到在線網絡的參數θ中(這也用於選擇動作);該項表示目標網絡的參數;未直接優化的在線網絡的定期復制。優化是使用RMSprop(Tieleman and Hinton 2012)(一種隨機梯度下降的變體)對從經驗重播中均勻采樣的小批處理進行的。這意味着在上述損失中,時間索引 t 將是最近的一百萬次轉換以來的隨機時間索引,而不是當前時間。使用經驗重播和目標網絡可以相對穩定地學習Q值,並在數款Atari游戲中帶來超出人類的性能。

 

Extensions to DQN

  DQN是一個重要的里程碑,但是現在知道該算法的一些局限性,並且已經提出了許多擴展。我們提出選擇六個擴展,每個擴展都解決了局限性並提高了整體性能。為了使選擇的規模易於管理,我們選擇了一組擴展程序來解決不同的問題(例如,只是眾多探索中的一個)。

 

Double Q-learning. 由於等式1中的最大化步驟,傳統的Q學習受到高估偏差的影響,這可能會損害學習。雙重Q學習(van Hasselt 2010)通過在引導目標執行的最大化中解耦來解決此高估的問題,即從其評估中選擇動作。使用下面的損失,可以將其與DQN有效結合 (van Hasselt, Guez, and Silver 2016):

事實證明,此更改可以減少DQN所存在的有害高估,從而提高性能。

 

Prioritized replay. DQN從重播緩沖區均勻采樣。理想情況下,我們希望更頻繁地對那些需要學習的轉換進行采樣。作為學習潛能的智能體,優先經驗重播(Schaul et al. 2015)以相對於最后遇到的絕對TD誤差的概率pt對轉換進行采樣:

其中w是決定分布形狀的超參數。新的轉換將以最高優先級插入到重播緩沖區中,從而偏向於最近的轉換。請注意,即使幾乎沒有什么可以了解的,隨機轉換也可能會受到青睞。

 

Dueling networks. 對偶網絡是為基於價值的RL設計的神經網絡架構。它具有兩個計算流,即價值流和優勢流,共享一個卷積編碼器,並由一個特殊的聚合器合並(Wang et al. 2016)。這對應於以下動作價值分解:

其中ξ,η和Ψ分別是共享編碼器fξ,價值流vη和優勢流aΨ的參數;並且θ = {ξ, η, Ψ}是它們的串聯。

 

Multi-step learning. Q學習累積單個獎勵,然后在下一步中使用貪婪動作進行bootstrap。或者,可以使用前視多步目標(Sutton 1988)。我們定義從給定狀態St截斷的n步回報為:

然后通過最小化替代損失來定義DQN的多步變體:

適當調整n的多步目標通常會導致學習速度更快(Sutton and Barto 1998)。

 

Distributional RL. 我們可以學習估計回報的分布,而不是期望回報。最近,Bellemare, Dabney, and Munos (2017)提出以概率密度放置在離散支持z上來建模此類分布,其中z是具有Natoms ∈ N+個原子的向量,對於i ∈ {1, ... , Natoms},定義為在此支持上定義時間 t 處的近似分布dt,每個原子 i 上的概率密度為,使得目標是更新θ,以使該分布與回報的實際分布緊密匹配。

  要學習概率密度,關鍵的見解是回報分布滿足Bellman方程的一個變體。對於給定的狀態St和動作At,最優策略π*下的回報分配應與通過獲取下一個狀態St+1和動作的分布,根據折扣將其收縮為零,並根據獎勵(或隨機情況下的獎勵分布)進行調整。然后,通過首先為目標分布構造新的支持,然后最小化分布dt和目標分布之間的Kullbeck-Leibler散度來推導Q學習的分布變體:

其中Φz是目標分布到固定支持z上的L2投影,並且是相對於狀態St+1中平均動作價值的貪婪動作。

  與非分布情況一樣,我們可以使用參數的凍結復制來構建目標分布。與DQN中一樣,參數化分布可以由神經網絡表示,但具有Natoms x Nactions個輸出。對輸出的每個動作維度獨立應用softmax,以確保每個動作的分布都適當地歸一化。

 

Noisy Nets. 在“蒙特祖瑪的復仇”這類游戲中,使用ε-貪婪策略進行探索的局限性顯而易見,在游戲中必須執行許多動作才能獲得第一筆獎勵。帶噪網絡(Fortunato et al. 2017)提出了一種將確定性和噪聲流相結合的帶噪線性層:

其中εb和εw是隨機變量,表示按元素乘積。然后可以使用此變換來代替標准線性y = b + Wx。隨着時間的流逝,網絡可以學會忽略噪聲流,但是會在狀態空間的不同部分以不同的rate忽略噪聲流,從而允許采用自退火形式的狀態條件探索。

 

The Integrated Agent

  在本文中,我們將所有上述組件整合到單個集成智能體中,我們將其稱為Rainbow。
  首先,我們將一步分布損失(3)替換為多步變量。我們通過根據累計折扣收縮價值分布,並用截斷的n步折扣回報對其進行移位,構造目標分布。這對應於將目標分布定義為。產生的損失為:

其中,Φz是在z上的投影。
  通過將根據在線網絡選擇的St+n中的貪婪動作作為bootstrap動作,並使用目標網絡評估這種動作,我們將多步分布損失與雙重Q學習結合起來。

  在標准成比例優先重播中(Schaul et al. 2015),使用絕對TD誤差確定轉換的優先級。這可以使用平均動作價值在分布設置中進行計算。但是,在我們的實驗中,所有分布Rainbow變體均按KL損失作為轉換的優先級,因為這是該算法最小化的方法:

用KL損失作為優先級對於帶噪的隨機環境可能更為穩健,因為即使回報不確定,損失也會繼續減少。
  該網絡結構是適用於回報分布的對偶網絡結構。網絡具有共享表示fξ(s),然后將其送入具有Natoms個輸出的價值流vη和具有Natoms x Nactions個輸出的優勢流aξ,其中將表示對應於原子 i 和動作a的輸出。對於每個原子zi,將價值和優勢流匯聚在一起,就像在對偶DQN中一樣,然后通過softmax層以獲得用於估計回報分布的歸一化參數分布:

其中,

  然后我們用等式(4)中描述的等效噪聲替換所有線性層。在這些帶噪線性層中,我們使用分解高斯噪聲(Fortunato et al. 2017)來減少獨立噪聲變量的數量。

 

Experimental Methods

  現在,我們描述用於配置和評估學習智能體的方法和設置。

 

Evaluation Methodology. 我們從Arcade學習環境中評估了57種Atari 2600游戲上的所有智能體(Bellemare et al. 2013)。我們遵循Mnih et al. (2015)和van Hasselt et al. (2016)的訓練和評估程序。在訓練過程中,通過暫停學習並評估500K幀的最新智能體,在環境中每1M個步驟評估智能體的平均得分。如van Hasselt et al. (2016)所述,episode以108K幀(或30分鍾的模擬播放)被截斷。

  每個游戲的智能體得分均經過歸一化處理,因此0%對應隨機智能體,而100%則相當於人類專家的平均得分。可以在所有Atari水平上匯聚歸一化分數,以比較不同智能體的性能。跟蹤所有游戲中人類歸一化性能的中位數很常見。我們還考慮了智能體性能高於人類性能幾分的游戲數量,以理清中位數改進的來源。平均人類歸一化性能可能沒有那么豐富的信息,因為它受到一些游戲(例如,Atlantis)的支配,在這些游戲中,智能體取得的得分比人類高幾個數量級。
  除了根據環境步驟跟蹤中位數性能外,在訓練結束時,我們還使用兩種不同的測試方案重新評估最優智能體快照。在無操作啟動機制中,我們在每個episode的開頭插入無操作動作的一個隨機數(最多30個)(就像我們在訓練中一樣)。在人類啟動機制中,episode是利用從人類專家軌跡的初始部分隨機采樣的點進行初始化的(Nair et al. 2015);兩種機制之間的差異表明了智能體過擬合其自身軌跡的程度。
  由於篇幅所限,我們專注於跨游戲的聚合結果。但是,在附錄中,我們提供了在無操作和人類啟動測試機制中所有游戲和所有智能體的完整學習曲線,以及原始分數和歸一化分數的詳細比較表。

 

Hyper-parameter tuning. Rainbow的所有組件都有許多超參數。超參數的組合空間太大,無法進行詳盡的搜索,因此我們進行了有限的調整。對於每個組件,我們從介紹該組件的論文中使用的值開始,然后通過手動坐標下降來調整超參數中最敏感的值。

  DQN及其變體在前200K幀期間不執行學習更新,以確保足夠不相關的更新。我們發現,通過優先播放,可以在僅80K幀之后更快地開始學習。
  DQN從1的探索ε開始,對應於隨機均勻地動作;它將前4M幀的探索量退火,最終值為0.1(在以后的變體中降低到0.01)。無論何時使用帶噪網絡,我們都會完全貪婪地動作(ε = 0),用於超參數σ0的0.5值用於初始化帶噪流中的權重1。對於沒有帶噪網絡的智能體,我們使用ε-貪婪,但探索速度的降低速度比以前使用的快,在前250K幀中將ε退火到0.01。

  我們使用了Adam優化器(Kingma and Ba 2014),發現它對學習率的選擇不如RMSProp敏感。DQN使用的學習率α = 0.00025。在所有Rainbow的變體中,我們使用的學習率為α/4,選自{α/2, α/4, α/6},Adam的超參數ε值為1.5 x 10-4
  對於重播優先級,我們使用了建議的成比例變量,優先級指數ω為0.5,並且在訓練過程中將重要性采樣指數β從0.4線性增加到1。比較{0.4, 0.5, 0.7}的值,優先級指數ω被調整。使用分布DQN的KL損失作為優先級,我們已經觀察到性能對於ω的選擇是非常魯棒的。
  多步學習中的n值是Rainbow的敏感超參數。我們比較了n = 1, 3, 5的值。我們觀察到n = 3, 5最初都表現良好,但總體n = 3到最后表現最優。
  在所有57款游戲中,超參數(請參閱表1)均相同,即Rainbow智能體實際上是在所有游戲中均表現良好的單個智能體設置。

 

1噪聲是在GPU上產生的。Tensorflow噪聲生成在GPU上可能不可靠。如果在CPU上產生噪音,將σ0降低到0.1可能會有所幫助。

 

Analysis

  在本節中,我們分析了主要的實驗結果。首先,我們證明Rainbow與多家已發布的智能體相比具有優勢。然后,我們進行消融研究,比較智能體的幾種變體,每種變體對應於從Rainbow去除單個成分。

 

Comparison to published baselines. 在圖1中,我們將Rainbow的性能(以游戲中的人類歸一化得分的中位數衡量)與A3C,DQN,DDQN,優先DDQN,對偶DDQN,分布DQN和帶噪DQN的相應曲線進行了比較。我們感謝對偶和優先智能體的作者提供了這些學習曲線,並報告了我們自己針對DQN,A3C,DDQN,分布DQN和帶噪DQN的重新運行。在數據效率和最終性能方面,Rainbow的性能均明顯優於任何基准。請注意,我們匹配了7M幀后DQN的最終性能,超過了這些基准在4400萬幀中的最優最終性能,並達到了大幅提高的最終性能。

  在對智能體的最終評估中,訓練結束后,Rainbow在無人值守狀態下的中位數得分為223%。在人類啟動機制,我們測得的中位數得分為153%。在表2中,我們將這些分數與已發布的各個基准的中位數進行了比較。

  在圖2(最上一行)中,我們繪制了智能體達到某種特定水平的人類歸一化性能的游戲數量。從左至右,子圖顯示了不同智能體在多少個游戲中實現了20%,50%,100%,200%和500%的人類歸一化性能。這使我們能夠確定整體性能改進來自何處。請注意,Rainbow和其他智能體之間的性能差距在所有性能水平上都很明顯:Rainbow智能體正在改進基准智能體已經不錯的游戲得分,以及改進基准智能體仍遠沒有人類表現的游戲。

 

Learning speed. 與原始DQN設置一樣,我們在單個GPU上運行每個智能體。與DQN的最終性能匹配所需的7M幀對應不到10個小時的掛鍾時間。200M幀的完整運行時間大約相當於10天,而所有討論的變體之間的差異不到20%。文獻中包含許多替代訓練設置,它們可以通過利用並行性來提高性能作為掛鍾時間的函數,例如Nair et al. (2015),Salimans et al. (2017)和Mnih et al. (2016)。在如此截然不同的硬件/計算資源之間適當地關聯性能並非易事,因此我們只專注於算法變體,從而可以進行橫向比較。盡管我們認為它們很重要且相互補充,但我們將可伸縮性和並行性問題留給未來的工作。

 

Ablation studies. 由於Rainbow將多個不同的想法整合到一個智能體中,因此我們在此特定組合的背景下進行了額外的實驗,以了解各個組件的作用。

  為了更好地了解每種成分對Rainbow智能體的貢獻,我們進行了消融研究。在每次消融中,我們從完整的Rainbow組合中刪除了一個組件。圖3顯示了完整Rainbow與六個消融變體的歸一化得分中位數的比較。圖2(底部行)顯示了這些消融相對於人類歸一化性能的不同閾值如何表現的更詳細細分,圖4顯示了每個游戲從每個消融中獲得的收益或損失,在整個學習過程中進行平均。

  優先重播和多步學習是Rainbow的兩個最關鍵的組成部分,因為刪除這兩個組成部分都會導致中位數性能大幅下降。毫不奇怪,刪除其中任何一個都會損害早期性能。也許更令人驚訝的是,取消多步學習也損害了最終性能。放大各個游戲(圖4),我們看到這兩個組件在整個游戲中幾乎都起到了一致的作用(在57個游戲中有53個游戲中,完整的Rainbow的性能要優於任一消融)。

  分布Q學習在與智能體性能的相關性方面排名在前面的技術之后。值得注意的是,在早期學習中沒有明顯區別,如圖3所示,其中對於前4000萬幀,執行了分布消融以及完全智能體。但是,如果沒有分布,智能體的性能便開始落后。當圖2中的結果與人類性能相對分開時,我們看到分布消融似乎主要滯后在那些高於或接近人類水平的游戲。
  就中位數性能而言,如果將帶噪網絡包括在內,該智能體的性能會更好。當刪除這些並且將探索委托給傳統的ε-貪婪機制時,總體性能會變差(圖3中的紅線)。盡管刪除帶噪網絡會使若干游戲的性能大幅下降,但其他游戲的性能也有所提高(圖4)。

  總體而言,從完整的Rainbow中刪除對偶網絡時,我們沒有觀察到顯著差異。但是,中位數得分掩蓋了對偶的影響在游戲之間有所不同的事實,如圖4所示。圖2顯示,對偶可能會對性能水平高於人類的游戲(#游戲 > 200%)提供一些改進,而對低於人類性能的游戲(#游戲 > 20%)則有所降低。
  同樣在雙重Q學習的情況下,所觀察到的中位數性能差異(圖3)是有限的,根據游戲的不同,組件有時會造成傷害或幫助(圖4)。為了進一步研究雙重Q學習的作用,我們將受過訓練的智能體的預測與根據限幅獎勵計算出的實際折扣回報進行了比較。將Rainbow與消融了雙重Q學習的智能體進行比較,我們觀察到實際回報通常高於10,因此不在分布的支持范圍內,從-10到+10。這導致回報的低估,而不是高估。我們假設將價值裁剪到此約束范圍會抵消Q學習的高估偏差。但是請注意,如果擴展了分布的支持,則可能會增加雙重Q學習的重要性。
  在附錄中,我們為每個游戲展示了Rainbow的最終性能和學習曲線,以及它的消融和基准。

 

Discussion

  我們已經證明,對DQN的多項改進可以成功地集成到單個學習算法中,從而實現最先進的性能。而且,我們已經表明,在集成算法中,除其中一個組件之外的所有組件都提供了明顯的性能優勢。我們還沒有包含更多的算法組件,這些組件有望在集成智能體程序上進行進一步的實驗。在眾多可能的候選中,我們討論了以下幾個。
  我們在這里專注於Q學習系列中基於價值的方法。我們尚未考慮純粹基於策略的RL算法,例如信任域策略優化(Schulman et al. 2015),或執行者-評論者方法(Mnih et al. 2016;O'Donoghue et al. 2016)。

  許多算法利用一系列數據來提高學習效率。最優性收緊(He et al. 2016)使用多步回報來構建額外不等式界限,而不是使用它們代替Q學習中使用的一步目標。資格跡允許對n步回報進行軟組合(Sutton 1988)。但是,與Rainbow中使用的多步目標相比,順序方法都在每個梯度上利用更多的計算量。此外,引入優先序列重播會引發有關如何存儲,重播和確定序列優先級的問題。

  Episodic控制(Blundell et al. 2016)也關注數據效率,並且在某些領域被證明是非常有效的。它通過使用episodic記憶作為補充學習系統來改進早期學習,能夠立即重新制定成功的動作序列。
  除了帶噪網絡之外,許多其他探索方法也可能是有用的算法要素:在這些Bootstrapped DQN(Osband et al. 2016),內在動機(Stadie, Levine, and Abbeel 2015)和基於計數的探索中(Bellemare et al. 2016)。這些替代組件的集成是有待進一步研究的碩果。

  在本文中,我們專注於核心學習更新,而沒有探索替代的計算架構。從環境的並行復制進行異步學習,如A3C(Mnih et al. 2016),Gorila(Nair et al. 2015)或進化策略(Salimans et al. 2017),至少在掛鍾時間方面,可以有效地加快學習速度。但是請注意,它們的數據效率可能較低。
  分層RL(HRL)也已成功應用於多種復雜的Atari游戲。在成功應用HRL的過程中,我們重點介紹了h-DQN(Kulkarni et al. 2016a)和封建網絡(Vezhnevets et al. 2017)。
  通過利用輔助任務,例如像素控制或特征控制(Jaderberg et al. 2016),監督預測(Dosovitskiy and Koltun 2016)或后續特征(Kulkarni et al. 2016b),也可以使狀態表示更加高效。

  為了根據基准公平地評估Rainbow,我們遵循了獎勵裁剪,固定動作重復和幀堆疊的常見領域修改,但是這些可能會因其他學習算法的改進而被刪除。波普藝術歸一化(van Hasselt et al. 2016)允許刪除獎勵裁剪,同時保持相似的性能水平。細粒度的動作重復(Sharma, Lakshminarayanan, and Ravindran 2017)使我們能夠學習如何重復動作。循環狀態網絡(Hausknecht and Stone 2015)可以學習時序狀態表示,從而取代了固定的觀察幀棧。總的來說,我們認為將真實游戲暴露給智能體是未來研究的有希望的方向。

 

Appendix

  表3列出了DQN引入的環境框架,獎勵和折扣的預處理。表4列出了Rainbow從DQN繼承的其他超參數以及本文考慮的其他基准。而是在正文中列出Rainbow使用非標准設置的超參數。在隨后的頁中,我們列出了表格,顯示每個游戲的Rainbow得分以及無操作機制(表6)和人類啟動機制(表5)中的幾個基准。在圖5和6中,我們還為每個游戲繪制了Rainbow的學習曲線,幾個基准以及所有消融實驗。這些學習曲線在10個窗口內用移動平均進行平滑處理。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM