簡體   English   中英

觀察中的深度強化學習運動

[英]Deep Reinforcement Learning Motion in Observation

我正在嘗試為自動駕駛車輛實施 DRL(深度強化學習)代理。 我目前正在使用一個簡單的攝像頭教我的代理人不要撞到其他汽車。 有很多方法可以加快訓練速度,但目前,我專注於在我的觀察中添加運動感

互聯網上的每個人(包括谷歌關於 Atari 游戲的文章)都提到,為了在觀察中添加運動是捕獲 3-4 幀,而不是 1 幀並將它們作為一個觀察值饋送到 QNetwork。 但是,這在使用相機數據時不太實用,因為它需要大量的計算能力來訓練代理。 例如:

假設您使用分辨率為 256x256 的灰度相機,我們使用簡單的統一回放 memory 最多可容納 20000 個觀測值。 那么,memory中存儲的像素數為:

20000 (Samples) * 4 (Frames) * 256 (Width) * 256 (Height) = 5.2 GB of Physical RAM.

此外,假設您使用 64 個觀察的批量大小來為代理提供數據,該代理在第一層包含 32 個過濾器的 CNN,那么您需要:

64 (Batch Size) * (4 Frames) * 256 (Width) * 256 (Height) * 32 (Filters) = 0.5 GB of GPU.

這是一個瘋狂的數據量,需要代理為 1 個簡單的灰度相機處理,只是為了增加運動感。

我正在考慮另一種添加運動感的方法,但是,我在互聯網上找不到任何關於它的信息。 既然我們已經知道了車輛的速度,那么我們可以給代理喂食:

  • 1 包含相機數據的幀。
  • 1幀在圖像中心包含車輛速度的歸一化值(例如在圖像中心保留一個32x32 window,其中包含車輛的歸一化速度(0.0-1.0),rest像素的值為0。

這樣,我們將數據的大小減少了一半。 你認為這可能是一個好方法嗎?

我知道您害怕那些大量的 RAM。 在 dqn 論文中,他們通常也使用大量 RAM。 在關於 atari 游戲的自然論文中,他們甚至使用了大約 9 GB 的 RAM! https://www.nature.com/articles/nature14236您可以嘗試調整圖像大小,像您已經解釋過的那樣連續拍攝 4 幀,並將它們僅存儲為整數以絕對最小化這一點。

有時我想沒有辦法,但在你的情況下,你可以嘗試添加一個帶有一個節點的第二個輸入層,該節點由你的車輛的(標准化)速度提供。 您應該能夠使用 keras 的功能 API 來實現這一點。 在那里,您不僅限於純粹的順序層。

來晚了,從主要視覺圖形的角度來看,但人們可能能夠對這些圖像序列進行某種形式的預處理,以有效地組合它們,以捕捉運動的方式:

在此處輸入圖像描述

這反映了組合成單個圖像的 4 幀,該圖像創建了一種視覺軌跡,由此減少的白色像素強度值可以被解釋為方向運動的倒數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM