List the pieces of a reinforcement learning system that can learn how to play Atari games.
A reinforcement learning system that can learn how to play Atari games typically consists of the following components:

1. Environment: The Atari game environment, which includes the game screen, the game controls, and the game rules.

2. Agent: The reinforcement learning agent that interacts with the game environment. The agent makes decisions based on the current state of the game and the reward it receives from the environment.

3. State representation: The state representation is a way to encode the current state of the game. It could be the raw pixels of the game screen or a more abstract representation of the game state.

4. Action selection: The action selection policy determines which action the agent takes given the current state of the game. This policy can be deterministic or stochastic.

5. Reward function: The reward function provides feedback to the agent on its performance. In the case of Atari games, the reward function is typically the score achieved by the agent in the game.

6. Value function: The value function estimates the expected future rewards that the agent can achieve by taking a certain action in a certain state.

7. Policy optimization: The policy optimization algorithm updates the agent's policy to maximize the expected cumulative reward. This is typically done using a variant of stochastic gradient descent.

8. Memory buffer: A replay buffer is used to store the agent's experiences. This is used to randomly sample batches of experiences during training to reduce the correlations between experiences.

9. Neural network: The neural network is used to approximate the value function and the policy. The neural network takes in the state representation as input and outputs the estimated value function and policy.

10. Training algorithm: The training algorithm combines all of the above components to train the agent to learn to play the game. The most popular training algorithm used for Atari games is Deep Q-Network (DQN).
How would I go about creating such a system? State which knowledge, hardware, and software is required, and the individual steps that one must take in order to receive a good result.