{ "

DQN Experiment with Atari Breakout

\n

This experiment trains a Deep Q Network (DQN) to play Atari Breakout game on OpenAI Gym. It runs the game environments on multiple processes to sample efficiently.

\n

_^_0_^_ _^_1_^_

\n": "

\u0d85\u0da7\u0dcf\u0dbb\u0dd2\u0db6\u0dca\u0dbb\u0dda\u0d9a\u0dca\u0d85\u0dc0\u0dd4\u0da7\u0dca \u0dc3\u0db8\u0d9f \u0da9\u0dd3QN \u0d85\u0dad\u0dca\u0dc4\u0daf\u0dcf \u0db6\u0dd0\u0dbd\u0dd3\u0db8

\n

\u0db8\u0dd9\u0db8\u0d85\u0dad\u0dca\u0dc4\u0daf\u0dcf \u0db6\u0dd0\u0dbd\u0dd3\u0db8 OpenAI \u0da2\u0dd2\u0db8\u0dca \u0dc4\u0dd2 \u0d85\u0da7\u0dcf\u0dbb\u0dd2 \u0db6\u0dca\u0dbb\u0dda\u0d9a\u0dca \u0d85\u0dc0\u0dd4\u0da7\u0dca \u0d9a\u0dca\u0dbb\u0dd3\u0da9\u0dcf\u0dc0 \u0dc3\u0db3\u0dc4\u0dcf \u0d9c\u0dd0\u0db9\u0dd4\u0dbb\u0dd4 Q \u0da2\u0dcf\u0dbd\u0dba\u0d9a\u0dca (DQN) \u0db4\u0dd4\u0dc4\u0dd4\u0dab\u0dd4 \u0d9a\u0dbb\u0dba\u0dd2. \u0d9a\u0dcf\u0dbb\u0dca\u0dba\u0d9a\u0dca\u0dc2\u0db8\u0dc0 \u0dc3\u0dcf\u0db8\u0dca\u0db4\u0dbd \u0dbd\u0db6\u0dcf \u0d9c\u0dd0\u0db1\u0dd3\u0db8 \u0dc3\u0db3\u0dc4\u0dcf \u0d91\u0dba \u0db6\u0dc4\u0dd4 \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dc0\u0dbd\u0dd3\u0db1\u0dca\u0dc4\u0dd2 \u0d9a\u0dca\u0dbb\u0dd3\u0da9\u0dcf \u0db4\u0dbb\u0dd2\u0dc3\u0dbb\u0dba\u0db1\u0dca \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dad\u0dca\u0db8\u0d9a \u0d9a\u0dbb\u0dba\u0dd2.

\n

_^_0_^_ _^_1_^_

\n", "

Run it

\n": "

\u0d91\u0dba\u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dad\u0dca\u0db8\u0d9a \u0d9a\u0dbb\u0db1\u0dca\u0db1

\n", "

Trainer

\n": "

\u0db4\u0dd4\u0dc4\u0dd4\u0dab\u0dd4\u0d9a\u0dbb\u0dd4

\n", "

Destroy

\n

Stop the workers

\n": "

\u0dc0\u0dd2\u0db1\u0dcf\u0dc1\u0d9a\u0dbb\u0db1\u0dca\u0db1

\n

\u0d9a\u0db8\u0dca\u0d9a\u0dbb\u0dd4\u0dc0\u0db1\u0dca\u0db1\u0dc0\u0dad\u0dca\u0dc0\u0db1\u0dca\u0db1

\n", "

Run training loop

\n": "

\u0db4\u0dd4\u0dc4\u0dd4\u0dab\u0dd4\u0dbd\u0dd6\u0db4\u0dba \u0db0\u0dcf\u0dc0\u0db1\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1

\n", "

Sample data

\n": "

\u0db1\u0dd2\u0dba\u0dd0\u0daf\u0dd2\u0daf\u0dad\u0dca\u0dad

\n", "

Train the model

\n": "

\u0d86\u0d9a\u0dd8\u0dad\u0dd2\u0dba\u0db4\u0dd4\u0dc4\u0dd4\u0dab\u0dd4 \u0d9a\u0dbb\u0db1\u0dca\u0db1

\n", "

_^_0_^_-greedy Sampling

\n

When sampling actions we use a _^_1_^_-greedy strategy, where we take a greedy action with probabiliy _^_2_^_ and take a random action with probability _^_3_^_. We refer to _^_4_^_ as _^_5_^_.

\n": "

_^_0_^_\u0d9a\u0dd1\u0daf\u0dbb \u0db1\u0dd2\u0dba\u0dd0\u0daf\u0dd3\u0db8

\n

\u0db1\u0dd2\u0dba\u0dd0\u0daf\u0dd3\u0db8\u0dca\u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0dda\u0daf\u0dd3 \u0d85\u0db4\u0dd2 _^_1_^_\u0d9a\u0dd1\u0daf\u0dbb \u0d8b\u0db4\u0dcf\u0dba \u0db8\u0dcf\u0dbb\u0dca\u0d9c\u0dba\u0d9a\u0dca \u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf \u0d9a\u0dbb\u0db8\u0dd4, \u0d91\u0dc4\u0dd2\u0daf\u0dd3 \u0d85\u0db4\u0dd2 \u0dc3\u0db8\u0dca\u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf\u0dc0 \u0dc3\u0db8\u0d9f \u0d9a\u0dd1\u0daf\u0dbb \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0db8\u0dcf\u0dbb\u0dca\u0d9c\u0dba\u0d9a\u0dca \u0d9c\u0db1\u0dca\u0db1\u0dcf _^_2_^_ \u0d85\u0dad\u0dbb \u0d85\u0dc4\u0db9\u0dd4 \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0db8\u0dcf\u0dbb\u0dca\u0d9c\u0dba\u0d9a\u0dca \u0d9c\u0db1\u0dd2\u0db8\u0dd4 _^_3_^_. \u0d85\u0db4\u0dd2 _^_4_^_ \u0dc4\u0db3\u0dd4\u0db1\u0dca\u0dc0\u0db1\u0dca\u0db1\u0dda _^_5_^_.

\n", "

_^_0_^_ for prioritized replay

\n": "

_^_0_^_ \u0db4\u0dca\u0dbb\u0db8\u0dd4\u0d9b\u0dad\u0dcf \u0db1\u0dd0\u0dc0\u0dad \u0db0\u0dcf\u0dc0\u0db1\u0dba \u0dc3\u0db3\u0dc4\u0dcf

\n", "

_^_0_^_ for replay buffer as a function of updates

\n": "

_^_0_^_ \u0dba\u0dcf\u0dc0\u0dad\u0dca\u0d9a\u0dcf\u0dbd\u0dd3\u0db1 \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0dda \u0d9a\u0dcf\u0dbb\u0dca\u0dba\u0dba\u0d9a\u0dca \u0dbd\u0dd9\u0dc3 \u0db6\u0dc6\u0dbb\u0dba \u0db1\u0dd0\u0dc0\u0dad \u0db0\u0dcf\u0dc0\u0db1\u0dba \u0d9a\u0dd2\u0dbb\u0dd3\u0db8 \u0dc3\u0db3\u0dc4\u0dcf

\n", "

_^_0_^_, exploration fraction

\n": "

_^_0_^_, \u0d9c\u0dc0\u0dda\u0dc2\u0dab \u0db7\u0dcf\u0d9c\u0dba

\n", "

Add a new line to the screen periodically

\n": "

\u0dc0\u0dbb\u0dd2\u0db1\u0dca\u0dc0\u0dbb \u0dad\u0dd2\u0dbb\u0dba\u0da7 \u0db1\u0dc0 \u0dbb\u0dda\u0d9b\u0dcf\u0dc0\u0d9a\u0dca \u0d91\u0d9a\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1

\n", "

Add transition to replay buffer

\n": "

\u0db6\u0dc6\u0dbb\u0dba\u0db1\u0dd0\u0dc0\u0dad \u0db0\u0dcf\u0dc0\u0db1\u0dba \u0d9a\u0dd2\u0dbb\u0dd3\u0db8 \u0dc3\u0db3\u0dc4\u0dcf \u0dc3\u0d82\u0d9a\u0dca\u0dbb\u0dcf\u0db1\u0dca\u0dad\u0dd2\u0dba \u0d91\u0d9a\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1

\n", "

Calculate gradients

\n": "

\u0d85\u0db1\u0dd4\u0d9a\u0dca\u0dbb\u0db8\u0dd2\u0d9a\u0d9c\u0dab\u0db1\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1

\n", "

Calculate priorities for replay buffer _^_0_^_

\n": "

\u0db1\u0dd0\u0dc0\u0dad\u0db0\u0dcf\u0dc0\u0db1\u0dba \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0dda \u0db6\u0dc6\u0dbb\u0dba \u0dc3\u0db3\u0dc4\u0dcf \u0db4\u0dca\u0dbb\u0db8\u0dd4\u0d9b\u0dad\u0dcf \u0d9c\u0dab\u0db1\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1 _^_0_^_

\n", "

Clip gradients

\n": "

\u0d9a\u0dca\u0dbd\u0dd2\u0db4\u0dca\u0d85\u0db1\u0dd4\u0d9a\u0dca\u0dbb\u0db8\u0dd2\u0d9a

\n", "

Collect information from each worker

\n": "

\u0d91\u0d9a\u0dca\u0d91\u0d9a\u0dca \u0dc3\u0dda\u0dc0\u0d9a\u0dba\u0dcf\u0d9c\u0dd9\u0db1\u0dca \u0dad\u0ddc\u0dbb\u0dad\u0dd4\u0dbb\u0dd4 \u0dbb\u0dd0\u0dc3\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1

\n", "

Compute Temporal Difference (TD) errors, _^_0_^_, and the loss, _^_1_^_.

\n": "

\u0dad\u0dcf\u0dc0\u0d9a\u0dcf\u0dbd\u0dd2\u0d9a\u0dc0\u0dd9\u0db1\u0dc3 \u0d9c\u0dab\u0db1\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1 (TD) \u0daf\u0ddd\u0dc2 _^_0_^_, \u0dc3\u0dc4 \u0d85\u0dbd\u0dcf\u0db7\u0dba, _^_1_^_.

\n", "

Configurations

\n": "

\u0dc0\u0dd2\u0db1\u0dca\u0dba\u0dcf\u0dc3\u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0dca

\n", "

Copy to target network initially

\n": "

\u0db8\u0dd4\u0dbd\u0dd2\u0db1\u0dca\u0d89\u0dbd\u0d9a\u0dca\u0d9a\u0d9c\u0dad \u0da2\u0dcf\u0dbd\u0dba\u0da7 \u0db4\u0dd2\u0da7\u0db4\u0dad\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1

\n", "

Create the experiment

\n": "

\u0d85\u0dad\u0dca\u0dc4\u0daf\u0dcf\u0db6\u0dd0\u0dbd\u0dd3\u0db8 \u0dc3\u0dcf\u0daf\u0db1\u0dca\u0db1

\n", "

Get _^_0_^_

\n": "

\u0dbd\u0db6\u0dcf\u0d9c\u0db1\u0dca\u0db1 _^_0_^_

\n", "

Get Q_values for the current observation

\n": "

\u0dc0\u0dad\u0dca\u0db8\u0db1\u0dca\u0db1\u0dd2\u0dbb\u0dd3\u0d9a\u0dca\u0dc2\u0dab \u0dc3\u0db3\u0dc4\u0dcf Q_\u0d85\u0d9c\u0dba\u0db1\u0dca \u0dbd\u0db6\u0dcf \u0d9c\u0db1\u0dca\u0db1

\n", "

Get results after executing the actions

\n": "

\u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dc0\u0db1\u0dca\u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dad\u0dca\u0db8\u0d9a \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0dd9\u0db1\u0dca \u0db4\u0dc3\u0dd4 \u0db4\u0dca\u0dbb\u0dad\u0dd2 results \u0dbd \u0dbd\u0db6\u0dcf \u0d9c\u0db1\u0dca\u0db1

\n", "

Get the Q-values of the next state for Double Q-learning. Gradients shouldn't propagate for these

\n": "

\u0daf\u0dca\u0dc0\u0dd2\u0dad\u0dca\u0dc0 Q- \u0d89\u0d9c\u0dd9\u0db1\u0dd3\u0db8 \u0dc3\u0db3\u0dc4\u0dcf \u0d8a\u0dc5\u0d9f \u0dad\u0dad\u0dca\u0dc0\u0dba\u0dda Q-\u0d85\u0d9c\u0dba\u0db1\u0dca\u0dbd\u0db6\u0dcf \u0d9c\u0db1\u0dca\u0db1. \u0db8\u0dda\u0dc0\u0dcf \u0dc3\u0db3\u0dc4\u0dcf \u0d85\u0db1\u0dd4\u0d9a\u0dca\u0dbb\u0db8\u0dd2\u0d9a \u0db4\u0dca\u0dbb\u0da0\u0dcf\u0dbb\u0dab\u0dba \u0db1\u0ddc\u0d9a\u0dc5 \u0dba\u0dd4\u0dad\u0dd4\u0dba

\n", "

Get the predicted Q-value

\n": "

\u0db4\u0dd4\u0dbb\u0ddd\u0d9a\u0dae\u0db1\u0dba\u0d9a\u0dbb\u0db1 \u0dbd\u0daf Q-\u0d85\u0d9c\u0dba \u0dbd\u0db6\u0dcf \u0d9c\u0db1\u0dca\u0db1

\n", "

Initialize the trainer

\n": "

\u0db4\u0dd4\u0dc4\u0dd4\u0dab\u0dd4\u0d9a\u0dbb\u0dd4\u0d86\u0dbb\u0db8\u0dca\u0db7 \u0d9a\u0dbb\u0db1\u0dca\u0db1

\n", "

Last 100 episode information

\n": "

\u0d85\u0dc0\u0dc3\u0db1\u0dca100 \u0d9a\u0dae\u0dcf\u0d82\u0d9c \u0dad\u0ddc\u0dbb\u0dad\u0dd4\u0dbb\u0dd4

\n", "

Learning rate.

\n": "

\u0d89\u0d9c\u0dd9\u0db1\u0dd4\u0db8\u0dca\u0d85\u0db1\u0dd4\u0db4\u0dcf\u0dad\u0dba.

\n", "

Mini batch size

\n": "

\u0d9a\u0dd4\u0da9\u0dcf\u0d9a\u0dab\u0dca\u0da9\u0dcf\u0dba\u0db8\u0dca \u0db4\u0dca\u0dbb\u0db8\u0dcf\u0dab\u0dba

\n", "

Model for sampling and training

\n": "

\u0db1\u0dd2\u0dba\u0dd0\u0daf\u0dd3\u0db8\u0dca\u0dc4\u0dcf \u0db4\u0dd4\u0dc4\u0dd4\u0dab\u0dd4 \u0d9a\u0dd2\u0dbb\u0dd3\u0db8 \u0dc3\u0db3\u0dc4\u0dcf \u0d86\u0d9a\u0dd8\u0dad\u0dd2\u0dba

\n", "

Number of epochs to train the model with sampled data.

\n": "

\u0db1\u0dd2\u0dba\u0dd0\u0daf\u0dd2\u0daf\u0dad\u0dca\u0dad \u0dc3\u0db8\u0d9f \u0d86\u0d9a\u0dd8\u0dad\u0dd2\u0dba \u0db4\u0dd4\u0dc4\u0dd4\u0dab\u0dd4 \u0d9a\u0dd2\u0dbb\u0dd3\u0db8 \u0dc3\u0db3\u0dc4\u0dcf \u0d91\u0db4\u0ddc\u0da0\u0dca \u0d9c\u0dab\u0db1.

\n", "

Number of steps to run on each process for a single update

\n": "

\u0dad\u0db1\u0dd2\u0dba\u0dcf\u0dc0\u0dad\u0dca\u0d9a\u0dcf\u0dbd\u0dd3\u0db1 \u0d9a\u0dd2\u0dbb\u0dd3\u0db8 \u0dc3\u0db3\u0dc4\u0dcf \u0d91\u0d9a\u0dca \u0d91\u0d9a\u0dca \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dc0\u0dbd\u0dd2\u0dba \u0db8\u0dad \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dad\u0dca\u0db8\u0d9a \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0da7 \u0db4\u0dd2\u0dba\u0dc0\u0dbb \u0d9c\u0dab\u0db1

\n", "

Number of updates

\n": "

\u0dba\u0dcf\u0dc0\u0dad\u0dca\u0d9a\u0dcf\u0dbd\u0dd3\u0db1\u0d9c\u0dab\u0db1

\n", "

Number of worker processes

\n": "

\u0dc3\u0dda\u0dc0\u0d9a\u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dc0\u0dbd\u0dd2 \u0d9c\u0dab\u0db1

\n", "

Periodically update target network

\n": "

\u0d89\u0dbd\u0d9a\u0dca\u0d9a\u0da2\u0dcf\u0dbd\u0dba \u0dc0\u0dbb\u0dd2\u0db1\u0dca \u0dc0\u0dbb \u0dba\u0dcf\u0dc0\u0dad\u0dca\u0d9a\u0dcf\u0dbd\u0dd3\u0db1 \u0d9a\u0dbb\u0db1\u0dca\u0db1

\n", "

Pick the action based on _^_0_^_

\n": "

\u0db8\u0dad\u0db4\u0daf\u0db1\u0db8\u0dca\u0dc0 \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dc0 \u0dad\u0ddd\u0dbb\u0db1\u0dca\u0db1 _^_0_^_

\n", "

Replay buffer with _^_0_^_. Capacity of the replay buffer must be a power of 2.

\n": "

\u0dc3\u0db8\u0d9f\u0db6\u0dc6\u0dbb\u0dba \u0db1\u0dd0\u0dc0\u0dad \u0db0\u0dcf\u0dc0\u0db1\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1 _^_0_^_. \u0db1\u0dd0\u0dc0\u0dad \u0db0\u0dcf\u0dc0\u0db1\u0dba \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0dda \u0db6\u0dc6\u0dbb\u0dba\u0dda \u0db0\u0dcf\u0dbb\u0dd2\u0dad\u0dcf\u0dc0 2 \u0db6\u0dbd\u0dba\u0d9a\u0dca \u0dc0\u0dd2\u0dba \u0dba\u0dd4\u0dad\u0dd4\u0dba.

\n", "

Run and monitor the experiment

\n": "

\u0d85\u0dad\u0dca\u0dc4\u0daf\u0dcf\u0db6\u0dd0\u0dbd\u0dd3\u0db8 \u0db0\u0dcf\u0dc0\u0db1\u0dba \u0d9a\u0dbb \u0d85\u0db0\u0dd3\u0d9a\u0dca\u0dc2\u0dab\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1

\n", "

Run sampled actions on each worker

\n": "

\u0d91\u0d9a\u0dca\u0d91\u0d9a\u0dca \u0dc3\u0dda\u0dc0\u0d9a\u0dba\u0dcf \u0db8\u0dad \u0db1\u0dd2\u0dba\u0dd0\u0daf\u0dd2 \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dad\u0dca\u0db8\u0d9a

\n", "

Sample _^_0_^_

\n": "

\u0db1\u0dd2\u0dba\u0dd0\u0daf\u0dd2\u0dba _^_0_^_

\n", "

Sample actions

\n": "

\u0db1\u0dd2\u0dba\u0dd0\u0daf\u0dd2\u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf

\n", "

Sample from priority replay buffer

\n": "

\u0db4\u0dca\u0dbb\u0db8\u0dd4\u0d9b\u0dad\u0dcf\u0db1\u0dd0\u0dc0\u0dad \u0db0\u0dcf\u0dc0\u0db1\u0dba \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0dda \u0db6\u0dc6\u0dbb\u0dba\u0dd9\u0db1\u0dca \u0db1\u0dd2\u0dba\u0dd0\u0daf\u0dd2\u0dba

\n", "

Sample the action with highest Q-value. This is the greedy action.

\n": "

\u0d89\u0dc4\u0dc5\u0db8Q- \u0d85\u0d9c\u0dba \u0dc3\u0db8\u0d9f \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dc0 \u0dc3\u0dcf\u0db8\u0dca\u0db4\u0dbd \u0d9a\u0dbb\u0db1\u0dca\u0db1. \u0db8\u0dd9\u0dba \u0d9a\u0dd1\u0daf\u0dbb \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dc0\u0d9a\u0dd2.

\n", "

Sample with current policy

\n": "

\u0dc0\u0dad\u0dca\u0db8\u0db1\u0dca\u0db4\u0dca\u0dbb\u0dad\u0dd2\u0db4\u0dad\u0dca\u0dad\u0dd2\u0dba \u0dc3\u0db8\u0d9f \u0db1\u0dd2\u0dba\u0dd0\u0daf\u0dd2\u0dba

\n", "

Sampling doesn't need gradients

\n": "

\u0db1\u0dd2\u0dba\u0dd0\u0daf\u0dd3\u0db8\u0dca\u0dc0\u0dbd\u0da7 \u0d85\u0db1\u0dd4\u0d9a\u0dca\u0dbb\u0db8\u0dd2\u0d9a \u0d85\u0dc0\u0dc1\u0dca\u0dba \u0db1\u0ddc\u0dc0\u0dda

\n", "

Save tracked indicators.

\n": "

\u0dbd\u0dd4\u0dc4\u0dd4\u0db6\u0dd0\u0db3\u0d87\u0dad\u0dd2 \u0daf\u0dbb\u0dca\u0dc1\u0d9a \u0dc3\u0dd4\u0dbb\u0d9a\u0dd2\u0db1\u0dca\u0db1.

\n", "

Scale observations from _^_0_^_ to _^_1_^_

\n": "

\u0dc3\u0dd2\u0da7 _^_0_^_ \u0db4\u0dbb\u0dd2\u0db8\u0dcf\u0dab \u0db1\u0dd2\u0dbb\u0dd3\u0d9a\u0dca\u0dc2\u0dab _^_1_^_

\n", "

Select device

\n": "

\u0d8b\u0db4\u0dcf\u0d82\u0d9c\u0dba\u0dad\u0ddd\u0dbb\u0db1\u0dca\u0db1

\n", "

Set learning rate

\n": "

\u0d89\u0d9c\u0dd9\u0db1\u0dd4\u0db8\u0dca\u0d85\u0db1\u0dd4\u0db4\u0dcf\u0dad\u0dba \u0dc3\u0d9a\u0dc3\u0db1\u0dca\u0db1

\n", "

Start training after the buffer is full

\n": "

\u0db6\u0dc6\u0dbb\u0dba\u0db4\u0dd2\u0dbb\u0dd3 \u0d9c\u0dd2\u0dba \u0db4\u0dc3\u0dd4 \u0db4\u0dd4\u0dc4\u0dd4\u0dab\u0dd4\u0dc0 \u0d86\u0dbb\u0db8\u0dca\u0db7 \u0d9a\u0dbb\u0db1\u0dca\u0db1

\n", "

Stop the workers

\n": "

\u0d9a\u0db8\u0dca\u0d9a\u0dbb\u0dd4\u0dc0\u0db1\u0dca\u0db1\u0dc0\u0dad\u0dca\u0dc0\u0db1\u0dca\u0db1

\n", "

Target model updating interval

\n": "

\u0d89\u0dbd\u0d9a\u0dca\u0d9a\u0d9c\u0dad\u0d86\u0d9a\u0dd8\u0dad\u0dd2 \u0dba\u0dcf\u0dc0\u0dad\u0dca\u0d9a\u0dcf\u0dbd\u0dd3\u0db1 \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0dda \u0db4\u0dbb\u0dad\u0dbb\u0dba

\n", "

This doesn't need gradients

\n": "

\u0db8\u0dda\u0dc3\u0db3\u0dc4\u0dcf \u0d85\u0db1\u0dd4\u0d9a\u0dca\u0dbb\u0db8\u0dd2\u0d9a \u0d85\u0dc0\u0dc1\u0dca\u0dba \u0db1\u0ddc\u0dc0\u0dda

\n", "

Train the model

\n": "

\u0d86\u0d9a\u0dd8\u0dad\u0dd2\u0dba\u0db4\u0dd4\u0dc4\u0dd4\u0dab\u0dd4 \u0d9a\u0dbb\u0db1\u0dca\u0db1

\n", "

Uniformly sample and action

\n": "

\u0d92\u0d9a\u0dcf\u0d9a\u0dcf\u0dbb\u0dc0\u0db1\u0dd2\u0dba\u0dd0\u0daf\u0dd2\u0dba \u0dc3\u0dc4 \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dc0

\n", "

Update parameters based on gradients

\n": "

\u0d85\u0db1\u0dd4\u0d9a\u0dca\u0dbb\u0db8\u0dd2\u0d9a\u0db8\u0dad \u0db4\u0daf\u0db1\u0db8\u0dca\u0dc0 \u0db4\u0dbb\u0dcf\u0db8\u0dd2\u0dad\u0dd3\u0db1\u0dca \u0dba\u0dcf\u0dc0\u0dad\u0dca\u0d9a\u0dcf\u0dbd\u0dd3\u0db1 \u0d9a\u0dbb\u0db1\u0dca\u0db1

\n", "

Update replay buffer priorities

\n": "

\u0db1\u0dd0\u0dc0\u0dad\u0db0\u0dcf\u0dc0\u0db1\u0dba \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0dda \u0dc3\u0dca\u0dc0\u0dcf\u0dbb\u0d9a\u0dca\u0dc2\u0d9a \u0db4\u0dca\u0dbb\u0db8\u0dd4\u0d9b\u0dad\u0dcf \u0dba\u0dcf\u0dc0\u0dad\u0dca\u0d9a\u0dcf\u0dbd\u0dd3\u0db1 \u0d9a\u0dbb\u0db1\u0dca\u0db1

\n", "

Whether to chose greedy action or the random action

\n": "

\u0d9a\u0dd1\u0daf\u0dbb\u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dc0 \u0dc4\u0ddd \u0d85\u0dc4\u0db9\u0dd4 \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dc0 \u0dad\u0ddd\u0dbb\u0dcf \u0d9c\u0dad \u0dba\u0dd4\u0dad\u0dd4\u0daf \u0dba\u0db1\u0dca\u0db1

\n", "

Zero out the previously calculated gradients

\n": "

\u0d9a\u0dbd\u0dd2\u0db1\u0dca\u0d9c\u0dab\u0db1\u0dba \u0d9a\u0dbb\u0db1 \u0dbd\u0daf \u0d85\u0db1\u0dd4\u0d9a\u0dca\u0dbb\u0db8\u0dd2\u0d9a \u0dc1\u0dd4\u0db1\u0dca\u0dba \u0d9a\u0dd2\u0dbb\u0dd3\u0db8

\n", "

create workers

\n": "

\u0d9a\u0db8\u0dca\u0d9a\u0dbb\u0dd4\u0dc0\u0db1\u0dca\u0db1\u0dd2\u0dbb\u0dca\u0db8\u0dcf\u0dab\u0dba

\n", "

exploration as a function of updates

\n": "

\u0dba\u0dcf\u0dc0\u0dad\u0dca\u0d9a\u0dcf\u0dbd\u0dd3\u0db1\u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0dda \u0d9a\u0dcf\u0dbb\u0dca\u0dba\u0dba\u0d9a\u0dca \u0dbd\u0dd9\u0dc3 \u0d9c\u0dc0\u0dda\u0dc2\u0dab\u0dba \u0d9a\u0dd2\u0dbb\u0dd3\u0db8

\n", "

get the initial observations

\n": "

\u0db8\u0dd6\u0dbd\u0dd2\u0d9a\u0db1\u0dd2\u0dbb\u0dd3\u0d9a\u0dca\u0dc2\u0dab \u0dbd\u0db6\u0dcf \u0d9c\u0db1\u0dca\u0db1

\n", "

initialize tensors for observations

\n": "

\u0db1\u0dd2\u0dbb\u0dd3\u0d9a\u0dca\u0dc2\u0dab\u0dc3\u0db3\u0dc4\u0dcf \u0d86\u0dad\u0dad\u0dd3\u0db1\u0dca \u0d86\u0dbb\u0db8\u0dca\u0db7 \u0d9a\u0dbb\u0db1\u0dca\u0db1

\n", "

learning rate

\n": "

\u0d89\u0d9c\u0dd9\u0db1\u0dd4\u0db8\u0dca\u0d85\u0db1\u0dd4\u0db4\u0dcf\u0dad\u0dba

\n", "

loss function

\n": "

\u0db4\u0dcf\u0da9\u0dd4\u0dc1\u0dca\u0dbb\u0dd2\u0dad\u0dba

\n", "

number of training iterations

\n": "

\u0db4\u0dd4\u0dc4\u0dd4\u0dab\u0dd4\u0db4\u0dd4\u0db1\u0dbb\u0dcf\u0dc0\u0dbb\u0dca\u0dad\u0db1 \u0d9c\u0dab\u0db1

\n", "

number of updates

\n": "

\u0dba\u0dcf\u0dc0\u0dad\u0dca\u0d9a\u0dcf\u0dbd\u0dd3\u0db1\u0d9c\u0dab\u0db1

\n", "

number of workers

\n": "

\u0d9a\u0db8\u0dca\u0d9a\u0dbb\u0dd4\u0dc0\u0db1\u0dca\u0dc3\u0d82\u0d9b\u0dca\u0dba\u0dcf\u0dc0

\n", "

optimizer

\n": "

\u0db4\u0dca\u200d\u0dbb\u0dc1\u0dc3\u0dca\u0dad\u0d9a\u0dbb\u0dab\u0dba

\n", "

reset the workers

\n": "

\u0d9a\u0db8\u0dca\u0d9a\u0dbb\u0dd4\u0dc0\u0db1\u0dca\u0dba\u0dc5\u0dd2 \u0db4\u0dd2\u0dc4\u0dd2\u0da7\u0dd4\u0dc0\u0db1\u0dca\u0db1

\n", "

size of mini batch for training

\n": "

\u0db4\u0dd4\u0dc4\u0dd4\u0dab\u0dd4\u0dc0\u0dc3\u0db3\u0dc4\u0dcf \u0d9a\u0dd4\u0da9\u0dcf \u0d9a\u0dab\u0dca\u0da9\u0dcf\u0dba\u0db8\u0dda \u0db4\u0dca\u0dbb\u0db8\u0dcf\u0dab\u0dba

\n", "

steps sampled on each update

\n": "

\u0d91\u0d9a\u0dca\u0d91\u0d9a\u0dca \u0dba\u0dcf\u0dc0\u0dad\u0dca\u0d9a\u0dcf\u0dbd\u0dd3\u0db1\u0dba\u0dda \u0db1\u0dd2\u0dba\u0dd0\u0daf\u0dd2 \u0db4\u0dd2\u0dba\u0dc0\u0dbb

\n", "

target model to get _^_0_^_

\n": "

\u0dbd\u0db6\u0dcf\u0d9c\u0dd0\u0db1\u0dd3\u0db8\u0da7 \u0d89\u0dbd\u0d9a\u0dca\u0d9a \u0d86\u0d9a\u0dd8\u0dad\u0dd2\u0dba _^_0_^_

\n", "

update current observation

\n": "

\u0dc0\u0dad\u0dca\u0db8\u0db1\u0dca\u0db1\u0dd2\u0dbb\u0dd3\u0d9a\u0dca\u0dc2\u0dab \u0dba\u0dcf\u0dc0\u0dad\u0dca\u0d9a\u0dcf\u0dbd\u0dd3\u0db1 \u0d9a\u0dbb\u0db1\u0dca\u0db1

\n", "

update episode information. collect episode info, which is available if an episode finished; this includes total reward and length of the episode - look at _^_0_^_ to see how it works.

\n": "

\u0d9a\u0dae\u0dcf\u0d82\u0d9c\u0dad\u0ddc\u0dbb\u0dad\u0dd4\u0dbb\u0dd4 \u0dba\u0dcf\u0dc0\u0dad\u0dca\u0d9a\u0dcf\u0dbd\u0dd3\u0db1 \u0d9a\u0dbb\u0db1\u0dca\u0db1. \u0d9a\u0dae\u0dcf\u0d82\u0d9c \u0dad\u0ddc\u0dbb\u0dad\u0dd4\u0dbb\u0dd4 \u0d91\u0d9a\u0dad\u0dd4 \u0d9a\u0dbb\u0db1\u0dca\u0db1, \u0d9a\u0dae\u0dcf\u0d82\u0d9c\u0dba\u0d9a\u0dca \u0d85\u0dc0\u0dc3\u0db1\u0dca \u0dc0\u0dd4\u0dc0\u0dc4\u0ddc\u0dad\u0dca \u0dbd\u0db6\u0dcf \u0d9c\u0dad \u0dc4\u0dd0\u0d9a\u0dd2\u0dba; \u0db8\u0dd9\u0dba\u0da7 \u0d9a\u0dae\u0dcf\u0d82\u0d9c\u0dba\u0dda \u0dc3\u0db8\u0dca\u0db4\u0dd6\u0dbb\u0dca\u0dab \u0dc0\u0dd2\u0db4\u0dcf\u0d9a\u0dba \u0dc3\u0dc4 \u0daf\u0dd2\u0d9c \u0d87\u0dad\u0dd4\u0dc5\u0dad\u0dca \u0dc0\u0dda - \u0d91\u0dba \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dad\u0dca\u0db8\u0d9a \u0dc0\u0db1 \u0d86\u0d9a\u0dcf\u0dbb\u0dba _^_0_^_ \u0db6\u0dd0\u0dbd\u0dd3\u0db8\u0da7 \u0db6\u0dbd\u0db1\u0dca\u0db1.

\n", "

update target network every 250 update

\n": "

\u0dc3\u0dd1\u0db8250 \u0dba\u0dcf\u0dc0\u0dad\u0dca\u0d9a\u0dcf\u0dbd\u0dd3\u0db1 \u0d89\u0dbd\u0d9a\u0dca\u0d9a \u0da2\u0dcf\u0dbd\u0dba \u0dba\u0dcf\u0dc0\u0dad\u0dca\u0d9a\u0dcf\u0dbd\u0dd3\u0db1

\n", "DQN Experiment with Atari Breakout": "\u0d85\u0da7\u0dcf\u0dbb\u0dd2 \u0db6\u0dca\u0dbb\u0dda\u0d9a\u0dca\u0d85\u0dc0\u0dd4\u0da7\u0dca \u0dc3\u0db8\u0d9f \u0da9\u0dd3QN \u0d85\u0dad\u0dca\u0dc4\u0daf\u0dcf \u0db6\u0dd0\u0dbd\u0dd3\u0db8", "Implementation of DQN experiment with Atari Breakout": "Atari Breakout \u0dc3\u0db8\u0d9f DQN \u0d85\u0dad\u0dca\u0dc4\u0daf\u0dcf \u0db6\u0dd0\u0dbd\u0dd3\u0db8 \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dad\u0dca\u0db8\u0d9a \u0d9a\u0dd2\u0dbb\u0dd3\u0db8" }