基于CNN-LSTM的深度Q網絡(Deep Q-Network,DQN)求解移動機器人路徑規劃,MATLAB代碼

一、深度Q網絡(Deep Q-Network,DQN)介紹

1、背景與動機

深度Q網絡(DQN)是深度強化學習領域的里程碑算法,由DeepMind于2013年提出。它首次在 Atari 2600 游戲上實現了超越人類的表現,解決了傳統Q學習在高維狀態空間中的應用難題。DQN在機器人路徑規劃領域展現出巨大潛力,能夠幫助機器人在復雜環境中找到最優路徑。

傳統Q學習在狀態空間維度較高時面臨以下挑戰:

  1. Q表無法存儲高維狀態的所有可能情況
  2. 特征提取需要手動設計,泛化能力差
  3. 更新過程容易導致Q值估計不穩定

DQN通過引入深度神經網絡作為Q函數的近似器,并采用經驗回放和目標網絡等技術,有效解決了上述問題。

2、核心思想

DQN的核心思想是使用深度神經網絡來近似Q函數,即:
Q ? ( s , a ) ≈ Q ( s , a ; θ ) Q^*(s, a) \approx Q(s, a; \theta) Q?(s,a)Q(s,a;θ)
其中, s s s 表示狀態, a a a 表示動作, θ \theta θ 表示神經網絡的參數。

目標是找到一組參數 θ ? \theta^* θ?,使得網絡輸出的Q值與實際的Q值盡可能接近。通過不斷與環境交互收集數據,使用梯度下降法優化網絡參數。

3、算法流程

DQN的算法流程可以概括為以下步驟:

  1. 初始化

    • 初始化Q網絡參數 θ \theta θ
    • 初始化目標網絡參數 θ ? \theta^- θ? 并與Q網絡參數同步
    • 初始化經驗回放緩沖區 D D D
  2. 與環境交互

    • 在當前狀態 s s s 下,根據 ? \epsilon ?-貪婪策略選擇動作 a a a
    • 執行動作 a a a,觀察獎勵 r r r 和下一個狀態 s ′ s' s
    • 將經驗 ( s , a , r , s ′ ) (s, a, r, s') (s,a,r,s) 存入經驗回放緩沖區 D D D
  3. 采樣與更新

    • 從經驗回放中隨機采樣一批數據 { ( s i , a i , r i , s i ′ ) } \{(s_i, a_i, r_i, s_i')\} {(si?,ai?,ri?,si?)}
    • 計算目標Q值:
      y i = { r i if? s i ′ is?terminal r i + γ max ? a ′ Q ( s i ′ , a ′ ; θ ? ) otherwise y_i = \begin{cases} r_i & \text{if } s_i' \text{ is terminal} \\ r_i + \gamma \max_{a'} Q(s_i', a'; \theta^-) & \text{otherwise} \end{cases} yi?={ri?ri?+γmaxa?Q(si?,a;θ?)?if?si??is?terminalotherwise?
      其中, γ \gamma γ 是折扣因子( 0 ≤ γ ≤ 1 0 \leq \gamma \leq 1 0γ1
    • 計算當前Q值: Q ( s i , a i ; θ ) Q(s_i, a_i; \theta) Q(si?,ai?;θ)
    • 計算損失函數:
      L ( θ ) = 1 N ∑ i = 1 N ( y i ? Q ( s i , a i ; θ ) ) 2 L(\theta) = \frac{1}{N} \sum_{i=1}^{N} (y_i - Q(s_i, a_i; \theta))^2 L(θ)=N1?i=1N?(yi??Q(si?,ai?;θ))2
    • 使用梯度下降法更新Q網絡參數 θ \theta θ
  4. 同步目標網絡

    • 每隔一定步數(如C步),將Q網絡參數 θ \theta θ 同步到目標網絡 θ ? \theta^- θ?
  5. 重復

    • 重復上述過程直到收斂

4、關鍵技術

1. 經驗回放(Experience Replay)

經驗回放通過存儲代理與環境交互的經驗,并隨機采樣小批量數據進行更新,解決了以下問題:

  • 數據相關性:傳統Q學習使用相關數據更新,容易導致估計偏差
  • 數據利用效率:每個經驗只使用一次,數據利用率低

經驗回放的數學表達為:
D = { e 1 , e 2 , … , e N } , e i = ( s i , a i , r i , s i ′ ) D = \{e_1, e_2, \dots, e_N\}, \quad e_i = (s_i, a_i, r_i, s_i') D={e1?,e2?,,eN?},ei?=(si?,ai?,ri?,si?)
每次更新時,從 D D D 中隨機采樣小批量數據 B ? D B \subseteq D B?D

2. 目標網絡(Target Network)

目標網絡通過維持一個固定的網絡來計算目標Q值,避免了Q值估計的不穩定。目標網絡的參數 θ ? \theta^- θ? 每隔一定步數與Q網絡參數 θ \theta θ 同步:
θ ? ← θ every?C?steps \theta^- \leftarrow \theta \quad \text{every C steps} θ?θevery?C?steps

3. ? \epsilon ?-貪婪策略

? \epsilon ?-貪婪策略在探索與利用之間取得平衡:
a = { random?action with?probability? ? arg ? max ? a Q ( s , a ; θ ) with?probability? 1 ? ? a = \begin{cases} \text{random action} & \text{with probability } \epsilon \\ \arg\max_a Q(s, a; \theta) & \text{with probability } 1-\epsilon \end{cases} a={random?actionargmaxa?Q(s,a;θ)?with?probability??with?probability?1???
其中, ? \epsilon ? 隨時間逐漸衰減,從初始值(如1.0)逐漸降低到較小值(如0.1)。

5、數學推導

1. Q學習更新公式

Q學習的目標是找到最優策略下的Q值:
Q ? ( s , a ) = E r [ r + γ max ? a ′ Q ? ( s ′ , a ′ ) ] Q^*(s, a) = \mathbb{E}_r[r + \gamma \max_{a'} Q^*(s', a')] Q?(s,a)=Er?[r+γamax?Q?(s,a)]
其中, E r \mathbb{E}_r Er? 表示對獎勵分布的期望。

2. 損失函數

DQN使用均方誤差(MSE)作為損失函數:
L ( θ ) = E s , a , r , s ′ [ ( y ? Q ( s , a ; θ ) ) 2 ] L(\theta) = \mathbb{E}_{s,a,r,s'} \left[ (y - Q(s, a; \theta))^2 \right] L(θ)=Es,a,r,s?[(y?Q(s,a;θ))2]
其中, y = r + γ max ? a ′ Q ( s ′ , a ′ ; θ ? ) y = r + \gamma \max_{a'} Q(s', a'; \theta^-) y=r+γmaxa?Q(s,a;θ?) 是目標Q值。

3. 梯度更新

使用梯度下降法更新參數 θ \theta θ
θ ← θ + α ? θ L ( θ ) \theta \leftarrow \theta + \alpha \nabla_\theta L(\theta) θθ+α?θ?L(θ)
其中, α \alpha α 是學習率, ? θ L ( θ ) \nabla_\theta L(\theta) ?θ?L(θ) 是損失函數對參數的梯度。

6、與傳統Q學習的對比

特性傳統Q學習DQN
狀態表示離散狀態或手工特征深度神經網絡自動提取特征
數據利用每個數據只使用一次經驗回放多次利用數據
穩定性Q值估計容易發散目標網絡提高穩定性
適用場景低維狀態空間高維狀態空間(如圖像)

7、局限性

  1. 樣本效率低:需要大量交互數據
  2. 超參數敏感:對 ? \epsilon ?、學習率、折扣因子等敏感
  3. 獎勵稀疏問題:在獎勵稀疏環境中表現不佳
  4. 計算資源需求高:需要強大的計算設備支持

二、構建CNN-LSTM深度神經網絡作為Q函數的近似器

輸入是10*10大小含有障礙物的地圖,輸出是機器人8個方向的動作Q值,用于指導機器人選擇最優動作。

在這里插入圖片描述

所搭建的深度神經網絡包含卷積層、激活層、全連接層、扁平化層和LSTM層。以下是每一層的詳細說明:

1. 輸入層 (input)
  • 輸入尺寸: (10 \times 10 \times 1)
  • 歸一化: 使用 “zero-centered” 歸一化方法
  • 描述: 接收 (10 \times 10) 的單通道圖像作為輸入。
2. 卷積層 (con1)
  • 卷積核尺寸: (3 \times 3)
  • 卷積核數量: 16
  • 步幅: ([1, 1])
  • 填充: ([0, 0, 0, 0])
  • 輸出尺寸: (8 \times 8 \times 16)
  • 描述: 使用 16 個 (3 \times 3) 的卷積核對輸入圖像進行卷積操作,提取特征。
3. ReLU 激活層 (relu1)
  • 輸入/輸出尺寸: (8 \times 8 \times 16)
  • 描述: 對卷積層的輸出應用 ReLU 激活函數,引入非線性。
4. 全連接層 (fc1)
  • 輸入尺寸: (8 \times 8 \times 16 = 1024)
  • 輸出尺寸: (64)
  • 權重矩陣: (64 \times 1024)
  • 偏置向量: (64 \times 1)
  • 描述: 將卷積層的輸出展平后,通過全連接層映射到 64 維特征空間。
5. ReLU 激活層 (relu3)
  • 輸入/輸出尺寸: (64)
  • 描述: 對全連接層的輸出應用 ReLU 激活函數。
6. 扁平化層 (flatten)
  • 輸入尺寸: (1 \times 1 \times 64)
  • 輸出尺寸: (64 \times 1)
  • 描述: 將三維張量展平為一維向量。
7. LSTM層 (Lstm)
  • 隱藏單元數量: 20
  • 輸入尺寸: (64 \times 1)
  • 輸出尺寸: (20 \times 1)
  • 權重矩陣:
    • 輸入權重: (80 \times \dots)
    • 循環權重: (80 \times \dots)
    • 偏置向量: (80 \times \dots)
  • 描述: 使用 LSTM處理序列數據,捕捉時間序列中的依賴關系。
8. ReLU 激活層 (relu)
  • 輸入/輸出尺寸: (20 \times 1)
  • 描述: 對 LSTM層的輸出應用 ReLU 激活函數。
9. 全連接層 (fc2)
  • 輸入尺寸: (20)
  • 輸出尺寸: (8)
  • 權重矩陣: (8 \times 20)
  • 偏置向量: (8 \times 1)
  • 描述: 將 LSTM層的輸出映射到 8 維輸出空間。
10. 輸出層 (output)
  • 輸出尺寸: (8 \times 1)
  • 損失函數: 均方誤差(mean-squared-error)
  • 響應: “Response”
  • 描述: 輸出層用于回歸任務,預測 8 維的連續值。

三、DQN求解機器人路徑規劃

3.1 環境設置

  • 狀態空間:機器人當前的位置或狀態,以及與目標位置的關系。
  • 動作空間:機器人可以采取的所有可能動作,如移動到相鄰位置。
  • 獎勵函數:定義機器人在執行動作后獲得的即時獎勵。例如,到達目標點給予高獎勵,碰撞給予負獎勵,距離目標點越近獎勵越高。

3.2 網絡設計

DQN網絡輸入是10×10大小的地圖狀態,輸出是機器人8個方向的動作Q值。網絡結構如下:

  • 輸入層:接收10×10的地圖作為輸入。
  • 隱藏層:可以包含卷積層、LSTM等,用于提取地圖特征。
  • 輸出層:輸出8個方向動作的Q值。

3.3 訓練過程

  1. 初始化:初始化經驗池,隨機初始化Q網絡的參數,并初始化目標網絡,其參數與Q網絡相同。
  2. 獲取初始狀態:機器人從環境中獲取初始狀態。
  3. 選擇動作:根據當前狀態和ε-貪心策略選擇動作。
  4. 執行動作并觀察:機器人執行動作并觀察新的狀態和獲得的獎勵。
  5. 存儲經驗:將經驗(狀態、動作、獎勵、新狀態)存儲在經驗池中。
  6. 樣本抽取與學習:從經驗池中隨機抽取樣本,并使用這些樣本來更新Q網絡。
  7. 目標網絡更新:定期將Q網絡的參數復制到目標網絡。

3.4 路徑規劃

在訓練完成后,使用訓練好的DQN網絡來規劃路徑。機器人根據當前狀態和Q值函數選擇最優動作,逐步接近目標位置。

四、部分MATLAB代碼及結果

%% 畫圖
analyzeNetwork(dqn_net)figure
plot(curve,'r-',LineWidth=2);
saveas(gca,'11.jpg')figure
imagesc(~map)
hold on
plot(state_mark(:,2),state_mark(:,1),'c-',LineWidth=2);
colormap('gray')
scatter(start_state_pos(2) ,start_state_pos(1),'MarkerEdgeColor',[0 0 1],'MarkerFaceColor',[0 0 1], 'LineWidth',1);%start point
scatter(target_state_pos(2),target_state_pos(1),'MarkerEdgeColor',[0 1 0],'MarkerFaceColor',[0 1 0], 'LineWidth',1);%goal point
text(start_state_pos(2),start_state_pos(1),'起點','Color','red','FontSize',10);%顯示start字符
text(target_state_pos(2),target_state_pos(1),'終點','Color','red','FontSize',10);%顯示goal字符
title('基于DQN的機器人路徑規劃')
saveas(gca,'12.jpg')

在這里插入圖片描述
在這里插入圖片描述

五、完整MATLAB代碼見下方名片

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/74454.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74454.shtml
英文地址,請注明出處:http://en.pswp.cn/web/74454.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

結構型設計模式。持續更新

結構型 - 外觀 提供了一個統一的接口,用來訪問子系統中的一群接口,從而讓子系統更容易使用。 public class SubSystem {public void turnOnTV() {System.out.println("turnOnTV()");}public void setCD(String cd) {System.out.println(&quo…

從零構建大語言模型全棧開發指南:第五部分:行業應用與前沿探索-5.1.2行業落地挑戰:算力成本與數據隱私解決方案

?? 點擊關注不迷路 ?? 點擊關注不迷路 ?? 點擊關注不迷路 文章大綱 從零構建大語言模型全棧開發指南-第五部分:行業應用與前沿探索5.1.2 行業落地挑戰:算力成本與數據隱私解決方案1. 算力成本挑戰與優化策略1.1 算力成本的核心問題1.2 算力優化技術方案2. 數據隱私挑戰…

量子計算與人工智能融合的未來趨勢

最近研學過程中發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊鏈接跳轉到網站人工智能及編程語言學習教程。讀者們可以通過里面的文章詳細了解一下人工智能及其編程等教程和學習方法。 在當今科技飛速發展…

六種光耦綜合對比——《器件手冊--光耦》

目錄 十二、光耦 簡述 基本結構 工作原理 主要特點 應用領域 優勢與局限性 選擇光耦時需要考慮的因素 詳盡闡述 1 柵極驅動光耦 基本結構 工作原理 主要特點 應用領域 選擇柵極驅動光耦時需要考慮的因素 典型產品示例 總結 2 邏輯輸出光耦 基本結構 工作原理 主要特點 應用…

【藍橋杯嵌入式——學習筆記一】2016年第七屆省賽真題重難點解析記錄,閉坑指南(文末附完整代碼)

在讀題過程中發現本次使用的是串口2,需要配置串口2。 但在查看產品手冊時發現PA14同時也是SWCLK。 所以在使用串口2時需要拔下跳線帽去連接CH340。 可能是用到串口2的緣故,在燒錄時發現報了一個錯誤。這時我們要想燒錄得按著復位鍵去點擊燒錄&#xff0c…

三、GPIO

一、GPIO簡介 GPIO(General Purpose Input Output)通用輸入輸出口GPIO引腳電平:0V(低電平)~3.3V(高電平),部分引腳可容忍5V 容忍5V,即部分引腳輸入5V的電壓,…

Java實戰報錯

哪錯了 Preview 在這段Java代碼中,map.put("Cc", 20); 這一行的鍵 "Cc" 被標記為錯誤。這可能是由于以下幾種原因: 鍵值類型不匹配:雖然在你的代碼中沒有顯示出來,但確保 HashMap 的鍵是 String 類型&#xf…

25大唐杯賽道一本科B組知識點大綱(下)

5G/6G網絡技術知識點(10%) 工程概論及通信工程項目實踐(20%) 5G垂直行業應用知識點(20%) ???為重點知識,盡量要過一遍哦 大唐杯賽道一國一備賽思路 大唐杯國一省賽回憶錄--有付出就會有收…

docker的文件系統Overlay2

OverlayFS(Overlay2)文件系統深度解析 Overlay2 是 Docker 默認使用的聯合文件系統(Union Filesystem),用于管理容器鏡像的分層存儲和容器運行時文件系統的合并。它基于 Linux 內核的 OverlayFS 技術,是早…

WebRTC技術簡介及應用場景

寫在前面 本文是參考稀土掘金的文章,整理得出,版權歸原作者所有! 參考鏈接:https://juejin.cn/book/7168418382318927880/section/7171376753263247396 WebRTC(Web Real-Time Communication) 是一項開源技術,允許瀏覽器和移動應用直接進行…

Windows 圖形顯示驅動開發-WDDM 2.1 功能(四)

驅動程序版本控制 圖形適配器或芯片集的驅動程序 DLL 和 SYS 文件必須具有正確格式的文件版本。 驅動程序信息文件 (.inf)、內核模式驅動程序 (.sys) 和用戶模式驅動程序 (.dll) 文件的版本信息必須一致。 此外,.inf 的 [SignatureAttributes] 部分中標識為 PETru…

什么是 StarRocks?核心優勢與適用場景解析

在數據量持續爆發的時代,企業對實時分析的需求日益迫切。例如,電商大促期間的交易監控、廣告投放效果的即時反饋等場景,均要求毫秒級的響應速度。然而,傳統工具如 Hadoop、Hive 等存在明顯短板:復雜查詢性能不足、資源…

Java基礎 4.3

1.對象機制練習 public class Object03 {public static void main(String[] args) {Person a new Person();a.age 10;a.name "小明";Person b;b a;System.out.println(b.name);//小明b.age 200;b null;System.out.println(a.age);//200System.out.println(b.a…

視頻設備軌跡回放平臺EasyCVR綜合智能化,搭建運動場體育賽事直播方案

一、背景 隨著5G技術的發展,體育賽事直播迎來了新的高峰。無論是NBA、西甲、英超、德甲、意甲、中超還是CBA等熱門賽事,都是值得記錄和回放的精彩瞬間。對于體育迷來說,選擇觀看的平臺眾多,但是作為運營者,搭建一套體…

搬磚--貪心+排序的背包

a在上面b在下面->a.v-M-b.m>b.v-M-a.m->剩余率大 所以我先遍歷a&#xff0c;讓a在上面 這就是要考慮貪心排序的01背包 因為它有放的限制條件 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typedef pair<ll,int>…

《2024年全球DDoS攻擊態勢分析》

從攻擊態勢來看&#xff0c;2024年DDoS攻擊頻次繼續呈增長趨勢&#xff0c;2024年同步增加1.3倍&#xff1b;超大規模攻擊激增&#xff0c;超800Gbps同比增長3.1倍&#xff0c;累計高達771次&#xff0c;且互聯網史上最大帶寬和最大包速率攻擊均被刷新&#xff1b;瞬時泛洪攻擊…

數據分析參考架構詳解

1.數倉方法論 2. 數倉建模參考架構 3.大數據參考架構 4.數據分析參考架構

領馭科技:以微軟Azure Speech技術為核心,驅動翻譯耳機新時代

在全球化的今天&#xff0c;語言不再是溝通的障礙。領馭科技&#xff0c;作為微軟的核心合作伙伴&#xff0c;正引領翻譯耳機行業進入一個全新的發展階段。以時空壺與貿人為例&#xff0c;這兩家公司的翻譯耳機產品憑借其內置的微軟Azure Speech人工智能語音技術&#xff0c;為…

seaweedfs分布式文件系統

seaweedfs https://github.com/seaweedfs/seaweedfs.git go mod tidy go -o bin ./… seaweed占不支持smb服務&#xff0c;只能用fuse的方式mount到本地文件系統 weed master 默認端口&#xff1a;9333&#xff0c;支持瀏覽器訪問 weed volume 默認端口&#xff1a;8080 weed …

說清楚單元測試

在團隊中推行單元測試的時候,總是會被成員問一些問題: 這種測試無法測試數據庫的SQL(或者是ORM)是否執行正確?這種測試好像沒什么作用?關聯的對象要怎么處理呢?…借由本篇,來全面看一看單元測試。 單元測試是軟件開發中一種重要的測試方法,其核心目的是驗證代碼的最小…