---
# System prepended metadata

title: 'Reinforcement Learning: day 4 DQN'

---

# Reinforcement Learning: day 4 DQN

## Review
### DQN Structure
![](https://i.imgur.com/qcYAb1d.png)
### とりあえず設定したReward
国と国の距離.
$s^{(t)}=国A$, $a^{(t)}=国B$, $s^{(t+1)}=国B$, となったら、国Aと国Bの距離をマイナス報酬として与える。※要は遠い国ほど価値が低い、としたい。
### 本当に設定したいReward
巡回したときに、その総合距離を損失として与え、損失が最小となるような学習をしたい。**==そういった学習を可能にする、報酬を設定したい==**。
### 結果
Tokyo出発→Tokyo着
![](https://i.imgur.com/ZEfqhTB.png)
※Google ORだと
![](https://i.imgur.com/iJpT0sS.png)
### 改善点
本当に学習したいことは、総合距離の最小化。
そのためには、国A→国B→国D→国N→・・・　のような訪れた国の履歴を含んだ状態の表現が必要。
通常のQ学習においてはテーブル構造となるQ-tableで定義しないといけないため、履歴も管理した状態を作ろうとすると状態数が指数的に増えるため現実的ではない。
しかし、DQNではそれが可能である。
**※今更になって分かった事だが、上記のReward の設定は悪くなかった(というかかなり良かった)**

## ※ここから今回やった事※
## State の追加
![](https://i.imgur.com/YE7UTSv.png)
たまたまかもしれないが、良くなったケースはある。学習の収束は遅くなった
![](https://i.imgur.com/C5xIBJt.png)

## Reward の変更
巡回が完了したときに、そのマイナス総合距離の報酬を与え、それ以外は0にしてみる
一番直接的な報酬の与え方と思うが、１０都市でも収束しなかった。
![](https://i.imgur.com/e7ZU7yz.png)

## DQN Structure の変更
時間発展を考慮しているといえば==RNN== である。なので、DQNの中にRNN(LSTM)を取り入れる。
![](https://i.imgur.com/e4hGW1i.png)
### LSTM
[LSTM参考](https://qiita.com/t_Signull/items/21b82be280b46f467d1b)
![](https://i.imgur.com/URERXts.png)

途中までは良かったが、最終的に変なところで収束する。
これはどんな経路でもある適当な報酬が与えられ、その報酬が最大かどうかも良く分からないためである。
![](https://i.imgur.com/lzJSdOz.png)

## Reward のさらなる変更
探索している中で得られた最短経路と総合距離を保存しておき、その最短距離に依存した報酬を与える
現在得られている最短総合距離 / そのepisodeでの総合距離 の比を計算する
比=1 → 10点
比>0.9 → 5点
比>0.8 → 2点
それ以外 → 0点

結果、収束するようになった。
![](https://i.imgur.com/1j2wFjk.png)

## 都市を20に増やしてみる
ダメ・・・。
![](https://i.imgur.com/f2tC32R.png)

## 次回
やはり国と国の位置関係は必須
CNNに画像つっこんで学習させる