///
Search
Duplicate
🏈

D2RL: Deep Dense Architectures in Reinforcement Learning

Created
2021/07/04 07:03
발표일자
2020/11/16
발표자
박정은
Tags
ReinforcementLearning
RL
DRL
✅main
포스팅 종류
논문리뷰
작성자 : 박정은 (baro980906@gmail.com)
발표일 : 20201116 at DeepLAB 논문반

Inductive biases in deep learning

기존 RL의 문제점

generality of the DRL framework이 문제를 야기한다.
게임/금융/로봇 등 하나의 테스크를 위한 하나의 식이 아닌 일반화된 식을 사용.
sample-efficiency
Baking in minimal inductive biases into the framework make more efficient
유도 편향을 줄여야 셈플의 효율성을 늘릴 수 있다.
generalization of the agents
DQN,PPO,A2C,DDPG...
→ 특정 행동이나 유도 편향을 제어하는 것이 어려워짐
일반 딥러닝에서 이를 해결 하기 위한 기법들
유도 편향을 줄이지 않으면서 샘플 효율성을 늘리기 위해 data augmentations 같은 기법을 사용
function approximator의 아키펙쳐 선택
우리는 architecture designs in DRL 을 건드려 보겠다.

PRELIMINARIES

1. Actor Critic Method

Policy Parameter update
φ ← φ + βφQθ(a, s)∇φ log πφ(a|s)
Critic Parameter update
TD correction ∆t = rt +γQθ(s0, a0)−Qθ(s, a)
θ ← θ + βθ∆t∇θQθ(s, a)
Off-Policy sample에서
behavior policy a ∼ ζ(a|s), and πφ(a|s) be the policy to be optimized
importance sampling기법으로 인하여

2. Data processing inequality

given a Markov chain X1 → X2 → X3, the mutual information (MI) between X1 and X2 is not less than the MI between X1 and X3
MI(X1; X2) ≥ MI(X1; X3)
Mutual Information: 두 개의 확률변수에서 하나의 확률변수가 다른 하나의 확률변수에 대해 제공하는 정보의 양을 의미
상호 정보량을 두 확률변수가 공유하는 엔트로피라고 해석
state/action 의 정보가 뉴럴 넷이 깊어질 수록 사라진다.

"Deep" Neural Networks

비젼이나 자연어 테스크에 비해서 강화학습의 뉴럴넷은 깊이가 얕은 편.
굉장히 깊은 뉴럴넷은 더 generalizable representations을 학습 할 수 있다.
더 복잡한 함수를 배울 뿐만 아니라 loss landscape를 완화 할 수 있다.
residual connections, normalization layers, gating mechanisms
→ 기법들을 사용하면 더 쉽게 유도편향 된 최적화를 할 수 있다.
기존 딥러닝 아키텍쳐들에서 착안 하였다.
→ DenseNet, Skip-VAE, U-Nets

Contributions

1.
We investigate the problem with increasing the number of layers used to parameterize policies and value functions.
2.
We propose a general solution based on dense-connections to overcome the problem.
3.
We extensively evaluate our proposed architecture on a diverse set of robotics tasks from proprioceptive features and images across multiple standard algorithms.

그냥 깊게 쌓으면 안되는가?

Ant-v2 environment of the OpenAI Gym suite에서 실험한 결과 layer가 두개 일때 가장 좋음.
layer 수가 커진다고 성능이 좋아지지 않는 다는 것을 확인
decreases the sample efficiency of the agent
make the agent less stable during training

그래서 이렇게 네트워크를 바꿈

import torch import torch.nn as nn import torch.nn.functional as F LOG_SIG_MAX = 2 LOG_SIG_MIN = -5 class Policy(nn.Module): def __init__(self, num_inputs, num_actions, hidden_dim, action_space= None): super(Policy, self).__init__() in_dim = hidden_dim+num_inputs self.linear1 = nn.Linear(num_inputs, hidden_dim) self.linear2 = nn.Linear(in_dim, hidden_dim) self.linear3 = nn.Linear(in_dim, hidden_dim) self.linear4 = nn.Linear(in_dim, hidden_dim) self.mean_linear = nn.Linear(hidden_dim, num_actions) self.log_std_linear = nn.Linear(hidden_dim, num_actions) def forward(self, state): x = F.relu(self.linear1(state)) x = torch.cat([x, state], dim=1) x = F.relu(self.linear2(x)) x = torch.cat([x, state], dim=1) x = F.relu(self.linear3(x)) x = torch.cat([x, state], dim=1) x = F.relu(self.linear4(x)) mean = self.mean_linear(x) log_std = self.log_std_linear(x) log_std = torch.clamp(log_std, min=LOG_SIG_MIN, max=LOG_SIG_MAX) return mean, log_std class QNetwork(nn.Module): def __init__(self, num_inputs, num_actions, hidden_dim, num_layers): super(QNetwork, self).__init__() in_dim = num_inputs+num_actions+hidden_dim self.l1_1 = nn.Linear(num_inputs+num_actions, hidden_dim) self.l1_2 = nn.Linear(in_dim, hidden_dim) self.l1_3 = nn.Linear(in_dim, hidden_dim) self.l1_4 = nn.Linear(in_dim, hidden_dim) self.out1 = nn.Linear(hidden_dim, 1) def forward(self, state, action): xu = torch.cat([state, action], dim=1) x1 = F.relu(self.l1_1(xu)) x1 = torch.cat([x1, xu], dim=1) x1 = F.relu(self.l1_2(x1)) x1 = torch.cat([x1, xu], dim=1) x1 = F.relu(self.l1_3(x1)) x1 = torch.cat([x1, xu], dim=1) x1 = F.relu(self.l1_4(x1)) x1 = self.out return x1
Python
(논문 Appendix에 SAC 파이토치 코드 제공)

실험 결과

How does D2RL compare with the baseline algorithms in terms of both asymptotic performance and sample efficiency on challenging robotic environments?
Are the benefits of D2RL consistent across a diverse set of algorithms and environments?
Is D2RL important for both the policy and value networks? How does D2RL perform with increasing depth?

The proposed D2RL variant achieves superior performance compared to the baselines on statebased OpenAI Gym MuJoCo environments

기존 알고리즘에 우리 네트워크를 사용하니까 성능이 더 좋아졌다.

D2RL is more sample efficient compared to baseline state-of-the-art algorithms on both image-based and state-based DM Control Suite benchmark environments

state based 뿐만 아니라 이미지 based task에서도 성능이 좋다

D2RL performs significantly better in challenging environments with various modalities of noise, system delays, physical perturbations and dummy-dimensions

리얼월드와 같은 노이즈, 지연에도 약간의 성능 향상을 보였다.

The sample efficiency and asymptotic performance of D2RL scale to complex robotic manipulation and locomotion environments.

복잡한 로봇 테스크에서도 성능 향상을 보였다.
Fetch-{Reach, Pick, Push, Slide}
더 빠르고 더 높은 곳에 수렴하는 것을 확인 할 수 있다.

D2RL만 가지고 한 실험들

Value/Policy 모두 깊게 쌓았을 때 수렴 속도는 더 느리지만 높은 보상을 받을 수 있다.
아까는 layer 수가 2개에서 가장 좋은 성능을 보였는데 이제는 4개에서 가장 좋은 성능을 보인다.
(8개는????)

Personal Opinion

Appendix가 정말 잘 나와있다. 하이퍼 파라미터 세팅과 코드가 전부 공개 되어 있다.
state나 action을 그대로 계속 커넥션을 해주는데, 노이즈가 큰 리얼월드에서 정말 도움이 될지?
쉽고 익숙한 접근법, 복잡하지 않은 수학