Tips Programming Intelligent Agents with Reinforcement Learning + Gym

dangduy.hanh

New member
[TIẾNG VIỆT]:
** Lập trình các tác nhân thông minh với học tập củng cố + phòng tập thể dục **

Học củng cố (RL) là một loại máy học cho phép một tác nhân học cách cư xử trong môi trường bằng cách tương tác với nó và nhận phần thưởng.Điều này trái ngược với việc học được giám sát, trong đó tác nhân được cung cấp một tập hợp dữ liệu được dán nhãn và học cách ánh xạ đầu vào cho đầu ra.Trong RL, tác nhân phải khám phá môi trường và học cách đạt được các mục tiêu của mình bằng cách dùng thử và lỗi.

Phòng tập thể dục là một bộ công cụ để phát triển và đánh giá các thuật toán học tập củng cố.Nó cung cấp một loạt các môi trường có thể được sử dụng để đào tạo các tác nhân, bao gồm môi trường mô phỏng và các ứng dụng trong thế giới thực.

Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách lập trình một tác nhân thông minh với việc học củng cố bằng cách sử dụng phòng tập thể dục.Chúng tôi sẽ sử dụng môi trường cartpole, đây là một môi trường đơn giản trong đó một tác nhân phải học cách cân bằng một cột trên xe đẩy.

## 1. Thiết lập môi trường

Bước đầu tiên là cài đặt phòng tập thể dục.Bạn có thể làm điều này bằng cách làm theo các hướng dẫn trên [trang web phòng tập thể dục] (https://gym.openai.com/docs/).

Khi phòng tập thể dục được cài đặt, bạn có thể tạo môi trường cartpole bằng cách chạy lệnh sau:

`` `
Nhập phòng tập thể dục
Env = Gym.Make ("Cartpole-V0")
`` `

Môi trường `Cartpole-V0` là một môi trường mô phỏng trong đó một tác nhân phải học cách cân bằng một cực trên xe đẩy.Môi trường được biểu thị bằng một vectơ trạng thái, chứa vị trí và vận tốc của xe đẩy và góc của cực.Các tác nhân có thể thực hiện các hành động để di chuyển giỏ hàng bên trái hoặc phải.Mục tiêu của tác nhân là giữ cho cực cân bằng càng lâu càng tốt.

## 2. Xác định tác nhân

Bước tiếp theo là xác định tác nhân.Đại lý là một chương trình phần mềm học cách tương tác với môi trường.Trong trường hợp này, tác nhân sẽ là một mạng lưới thần kinh lấy vectơ trạng thái làm đầu vào và đưa ra một hành động.

Chúng ta có thể xác định tác nhân bằng mã sau:

`` `
nhập khẩu ngọn đuốc
Nhập ngọn đuốc.nn dưới dạng nn

Đại lý lớp (nn.module):

def __init __ (self, state_size, action_size):
Siêu (đại lý, tự) .__ init __ ()
self.fc1 = nn.linear (state_size, 128)
self.fc2 = nn.linear (128, action_size)

forw forward (tự, trạng thái):
x = self.fc1 (trạng thái)
x = ngọn đuốc.relu (x)
x = self.fc2 (x)
trả lại x

`` `

Tác nhân lấy vectơ trạng thái làm đầu vào và đầu ra một vectơ có kích thước `action_size`, đại diện cho xác suất thực hiện mỗi hành động.

## 3. Đào tạo đại lý

Bước tiếp theo là đào tạo đại lý.Chúng ta có thể làm điều này bằng cách sử dụng thuật toán sau:

1. Khởi tạo trọng lượng của tác nhân.
2. Lặp lại các bước sau cho đến khi tác nhân đạt đến ngưỡng hiệu suất mong muốn:
1. Đặt lại môi trường.
2. Nhận trạng thái ban đầu.
3. Trong khi tập chưa kết thúc:
* Thực hiện một hành động dựa trên chính sách của đại lý.
* Quan sát trạng thái tiếp theo và phần thưởng.
* Cập nhật trọng số của đại lý bằng phần thưởng.

Chúng tôi có thể triển khai thuật toán này bằng cách sử dụng mã sau:

`` `
Def Train (đại lý, env, num_episodes):
cho tập trong phạm vi (num_episodes):
# Đặt lại môi trường
state = env.reset ()

# Khởi tạo phần thưởng
Phần thưởng = 0

# Trong khi tập phim chưa kết thúc
Trong khi đúng:
# Thực hiện một hành động dựa trên chính sách của đại lý
hành động = đại lý (trạng thái)

# Quan sát trạng thái và phần thưởng tiếp theo
next_state, phần thưởng, xong, _ = env.step (hành động)

# Cập nhật trọng số của đại lý
Agent.Update (trạng thái, hành động, phần thưởng, next_state, xong)

# Nếu tập kết thúc
Nếu xong:
phá vỡ

# In tập phim

[ENGLISH]:
**Programming Intelligent Agents with Reinforcement Learning + Gym**

Reinforcement learning (RL) is a type of machine learning that allows an agent to learn how to behave in an environment by interacting with it and receiving rewards. This is in contrast to supervised learning, where the agent is given a set of labeled data and learns how to map inputs to outputs. In RL, the agent must explore the environment and learn how to achieve its goals by trial and error.

Gym is a toolkit for developing and evaluating reinforcement learning algorithms. It provides a variety of environments that can be used to train agents, including simulated environments and real-world applications.

In this article, we will show you how to program an intelligent agent with reinforcement learning using Gym. We will use the CartPole environment, which is a simple environment where an agent must learn to balance a pole on a cart.

## 1. Setting up the environment

The first step is to install Gym. You can do this by following the instructions on the [Gym website](https://gym.openai.com/docs/).

Once Gym is installed, you can create a CartPole environment by running the following command:

```
import gym
env = gym.make("CartPole-v0")
```

The `CartPole-v0` environment is a simulated environment where an agent must learn to balance a pole on a cart. The environment is represented by a state vector, which contains the position and velocity of the cart and the angle of the pole. The agent can take actions to move the cart left or right. The goal of the agent is to keep the pole balanced for as long as possible.

## 2. Defining the agent

The next step is to define the agent. The agent is a software program that learns how to interact with the environment. In this case, the agent will be a neural network that takes the state vector as input and outputs an action.

We can define the agent using the following code:

```
import torch
import torch.nn as nn

class Agent(nn.Module):

def __init__(self, state_size, action_size):
super(Agent, self).__init__()
self.fc1 = nn.Linear(state_size, 128)
self.fc2 = nn.Linear(128, action_size)

def forward(self, state):
x = self.fc1(state)
x = torch.relu(x)
x = self.fc2(x)
return x

```

The agent takes the state vector as input and outputs a vector of size `action_size`, which represents the probability of taking each action.

## 3. Training the agent

The next step is to train the agent. We can do this using the following algorithm:

1. Initialize the agent's weights.
2. Repeat the following steps until the agent reaches a desired performance threshold:
1. Reset the environment.
2. Get the initial state.
3. While the episode is not over:
* Take an action based on the agent's policy.
* Observe the next state and reward.
* Update the agent's weights using the reward.

We can implement this algorithm using the following code:

```
def train(agent, env, num_episodes):
for episode in range(num_episodes):
# Reset the environment
state = env.reset()

# Initialize the reward
reward = 0

# While the episode is not over
while True:
# Take an action based on the agent's policy
action = agent(state)

# Observe the next state and reward
next_state, reward, done, _ = env.step(action)

# Update the agent's weights
agent.update(state, action, reward, next_state, done)

# If the episode is over
if done:
break

# Print the episode
 
Join Telegram ToolsKiemTrieuDoGroup
Back
Top