---
# System prepended metadata

title: Noisy Networks For Exploration
tags: [DQN]

---

---
title: Noisy Networks For Exploration
tags: DQN
---

[논문 원본](https://arxiv.org/pdf/1706.10295.pdf)

이 논문은 효율적인 exploration을 위해 네트워크 파라미터에 확률(stochasticity)을 넣는 방법을 제안한다.

## 문제 제기

Exploration은 오래 전부터 강화학습에서 많이 연구되어 왔지만 그에 따른 문제점들이 존재한다.

- **$\epsilon$-greedy, entropy regularization**
: 상태와는 상관없이 policy를 uniform하게 smoothing하기만 한다. large-scale behavioural patterns을 만들기 힘들다.
- **optimism in the face of uncertainty**
: 작은 state-action space, linear function으로 제한되어 있다.
- **intrinsic motivation term**
: environment reward와 weight 조절을 사람이 잘 해주어야 한다.
- **evolutionary algorithm, blackbox algorithm**
: 데이터 효율성이 좋지 않고, 긴 시간의 interaction이 필요하다.
- **variational inference, flat minima search**
: explicit distribution을 가지고 있어야 한다.
- **Thompson sampling**
: 파라미터의 distribution이 posterior distribution의 근사값에 수렴해야 한다.

그 외에도 network 영역을 복제한다거나 Gaussian Noise를 더하는 등 많은 방법들이 있지만, 복잡하거나, 학습이 불가능하다는 한계가 있다.

## 해결 방안

그래서 논문에서는 이러한 문제들의 대안으로 **NoisyNet**을 제안한다. 이 방법의 핵심 insight는 weight vector를 한 번 변화 시키는 것이 여러 step에 걸쳐 일관적(consistent)이고 복잡하면서도(complex), 상태에 따른 변화(state-dependent change)를 일으킬 수 있다는 것이다.

기존의 neural network에서 linear layer는 다음과 같이 계산했다.

$$ y = wx + b $$

NoisyNet의 linear layer는 파라미터를 $\theta \overset{def}{=} \mu + \Sigma \odot \epsilon$ 의 형태([Reparameterization trick](https://datascienceschool.net/view-notebook/c5248de280a64ae2a96c1d4e690fdf79/#The-reparameterization-trick))로 바꾸어 학습 파라미터를 $\zeta \overset{def}{=} (\mu,\Sigma)$로 변환한다.

$$ y \overset{def}{=} (\mu^w+\sigma^w \odot \epsilon^w)x + \mu^b + \sigma^b \odot \epsilon^b $$

- $\mu^w, \sigma^w \in \mathbb{R}^{q\times p}$
- $\mu^b, \sigma^b \in \mathbb{R}^{q}$

<div style="text-align:center">
<img src=https://i.imgur.com/m0T6Eet.png>
</div>

$\epsilon$는 고정된 범위의 zero-mean noise로, 어떤 shape와 값을 가지냐에 따라 두 가지로 나뉜다.

1. Independent Gaussian noise
: 모든 weight에 각각 가우시안 노이즈 파라미터를 가진다. A3C에 사용. ($\epsilon^w \in \mathbb{R}^{q\times p}, \epsilon^b \in \mathbb{R}^{q}$)
2. Factorised Gaussian noise
: 출력에 독립적인 노이즈를 가진다. DQN에 사용. 파라미터 수가 작아지기 때문에 계산 비용이 줄어드는 효과가 있다. ($\epsilon^w \in \mathbb{R}^{p}, \epsilon^b \in \mathbb{R}^{q}$) $\sigma$와 동일한 shape를 가져야 하기 때문에, 외적을 해준다. ($\epsilon^w \leftarrow \epsilon^w\times\epsilon^b$) 또한, 분포에 따라 나오는 기대값이 동일하게 하기 위해서 다음과 같이 한다. (하지만 bias의 $\epsilon$은 동일하지 않다.)

\begin{matrix} 
\epsilon^w_{i,j}&=&f(\epsilon_i)f(\epsilon_j) \\
\epsilon^b_j&=&f(\epsilon_j)
\end{matrix}

그렇게해서 구한 loss는

$$ \nabla \bar L(\zeta) = \nabla \mathbb{E}[L(\theta)]=\mathbb{E}[\nabla_{\mu, \Sigma} L(\mu + \Sigma \odot \epsilon)]$$


## 의문점

deterministic 최적의 정책으로 가기 위해서는 노이즈가 없는 것이 좋다. 그렇다면 노이즈가 0이 될 것인가를 실험해본다.

$$
\bar \Sigma = \frac{1}{N_{\text{weights}}}\sum_i|\sigma_i^w|
$$

<div style="text-align:center">
<img src=https://i.imgur.com/q9mP3GQ.png></div>

어떤 것은 증가하고 어떤 것은 감소하는 양상을 보인다. 문제마다 다르다고만 결론을 낸다.

## 결론

자동으로 noise를 조절한다고는 하지만 특별한 이론적 기반이나 탄탄한 실험이 별로 없어 아쉬움이 남는다.


### 오늘의 배움
- Introduction은 중요하다. 문제를 어떻게 제기하고 기존 방법(역사)들, 그에 대한 해결, 성능, 결과가 잘 압축되어 있다.
- 실수는 중요하다. 완벽하게 한 것은 기억에 남지 않는다. tight하게 공부하고 실수하고 기억하자.
- 과몰입 금지. 지금 방법이 과연 효율적인지 고민하고 수정하자.
- 젊음을 가지고서 오만하지 말자. 자기 관리를 철저히 하자.
- 내가 일하고 있다는 것을 티내자. 부산스럽게. 결과물이 나오지 않으면 내가 잘했는지 아무도 모른다.
- 커뮤니케이션. 논문에 관해 메일을 보내는 것을 망설이지 말자.


## 정리하면서 드는 질문 사항
- local dithering perturbation을 정확히 어떻게 해석하면 좋을까?
- DQN은 Factorized Gaussian noise를 사용하고 A3C는 Independent Gaussian Noise를 사용하는 이유는?
- Independent Gaussian Noise와 Factorized Gaussian Noise를 비교하라 하셨는데, gaussian 분포에 따라 x가 나온다면...기댓값을 $\mathbb{E}[x]$로 보고 계산하면 되는건가..