2 回答

TA貢獻1780條經驗 獲得超4個贊
你有沒有想過使用狄利克雷分布?您的網絡可以輸出濃度參數alpha > 0
,然后您可以使用它們生成總和為 1 的樣本。兩者都PyTorch
支持TF
此發行版,您可以從它們中采樣和獲取logProb
。在這種情況下,除了獲取您的樣本之外,由于它是一個概率分布,您還可以了解它的方差,這可以作為代理置信度的衡量標準。對于 3 維的動作,具有alpha={1,1,1}
基本上意味著您的代理沒有任何偏好,而具有alpha={100,1,1}
意味著它非常確定大部分權重應該轉到第一個維度。
根據評論編輯:
當您使用 Dirichlet 分布時,Vanilla REINFORCE 將很難優化策略。問題是,在普通策略梯度中,您可以通過梯度裁剪和自適應學習率等來控制您在網絡參數空間中更改策略的速度。但是,最重要的是控制概率空間中的變化率. 一些網絡參數可能會比其他參數更改更多的概率。因此,即使您控制學習率以限制網絡參數的增量,您也可能會大大改變 Dirichlet 分布的方差,如果您認為這對您的網絡來說是有意義的。為了最大化您的操作的對數概率,您的網絡可能更多地關注于減少方差,而不是改變您的分配模式,這會在探索和學習有意義的政策時傷害您。緩解此問題的一種方法是通過限制新策略分布與舊策略分布的 KL 散度來限制策略概率分布的變化率。TRPO 或 PPO 是解決此問題和解決約束優化問題的兩種方法。
在實踐中確保這一點也可能很好alpha > 1
。您可以通過在將神經網絡輸出輸入到 Drichlet 分發之前在神經網絡輸出上使用 softplus 輕松實現這一點ln(1+exp(x)) + 1
。還要監視到達您的圖層的漸變并確保它存在。
您可能還希望將分布的熵添加到您的目標函數中,以確保進行足夠的探索并防止分布具有非常低的方差(非常高的 alpha)。

TA貢獻1863條經驗 獲得超2個贊
在我的腦海中,您可能想嘗試 2D-Gaussian 或 multivariate Gaussian。https://en.wikipedia.org/wiki/Gaussian_function
例如,您可以預測 2D-Gaussian 的 4 個參數 (x_0, x_1, sigma_0, sigma_1),您可以在 2D-Gaussian 平面上生成一對數字,例如 (2, 1.5),然后您可以使用 softmax產生想要的動作softmax([2, 1.5])=[0.62245933 0.37754067]
。
然后你可以計算這對數字在二維高斯平面上的概率,然后你可以用它來計算負對數概率、優勢等,以制作損失函數并更新梯度。
添加回答
舉報