Giới thiệu Học tăng cường cho người mới bắt đầu với Python

Find AI Tools
No difficulty
No complicated process
Find ai tools

Giới thiệu Học tăng cường cho người mới bắt đầu với Python

Mục lục

  1. Giới thiệu về Học tăng cường
  2. Các hình thức Học máy
  3. Học tăng cường và cách dữ liệu được biểu diễn
    1. Ví dụ về Học tăng cường trong thực tế
    2. Ví dụ về Học tăng cường trong trò chơi Atari
  4. Quy trình Markov Decision (MDP)
  5. Công thức tính toán Reward
  6. Chính sách và hàm Q
  7. Thuật toán Epsilon Greedy Q-learning
    1. Ý nghĩa của epsilon và cách nó tác động đến hành động
    2. Công thức cập nhật giá trị Q
  8. Triển khai bài toán Carpole Problem với Học tăng cường
    1. Khởi tạo các biến và môi trường
    2. Chu kỳ quan trọng trong thuật toán
    3. Cập nhật bảng Q và các thông số khác
  9. Kết quả và kết luận

Giới thiệu về Học tăng cường

Học tăng cường là một lĩnh vực trong Học máy nghiên cứu cách một hệ thống hoạt động thông qua việc tương tác với môi trường xung quanh nó. Trong Học tăng cường, một hệ thống tự học được gọi là "agent" tương tác với một "môi trường" thông qua việc thực hiện các "hành động". Agent cần tìm hiểu cách thức tương tác với môi trường để tối đa hóa "reward" mà nó nhận được từ môi trường.

Các hình thức Học máy

Trong Học máy, có ba hình thức chính:

  1. Học giám sát: Học giám sát là quá trình học cách ánh xạ từ dữ liệu đầu vào "x" sang giá trị mục tiêu "y". Ví dụ, trong học giám sát, một mô hình học tập có thể học cách nhận dạng hình ảnh của chó dựa trên các hình ảnh đã được đánh nhãn trước đó.

  2. Học không giám sát: Học không giám sát liên quan đến việc xử lý dữ liệu "x" mà không có dữ liệu đầu ra "y" tương ứng. Nhiệm vụ của mô hình học tập là tìm hiểu các mẫu, quy tắc và cấu trúc có thể tồn tại trong dữ liệu, và chúng ta thường sử dụng học không giám sát để nhóm các dữ liệu tương tự.

  3. Học tăng cường: Học tăng cường liên quan đến việc tìm hiểu cách hành động để tối đa hóa reward trong môi trường. Một tổng quát hơn về học tăng cường là việc tìm hiểu cách đưa ra các quyết định dựa trên các tín hiệu phản hồi từ môi trường và cập nhật các hành vi để tối đa hóa "reward" nhận được.

Học tăng cường và cách dữ liệu được biểu diễn

Trong Học tăng cường, dữ liệu có một cấu trúc khác so với các hình thức Học máy khác. Đây là một số thuật ngữ quan trọng:

  • Agent: Đơn vị quyết định, thực hiện hành động và tương tác với môi trường.
  • Môi trường: Môi trường là thế giới trong đó Agent học và thực hiện hành động.
  • Trạng thái (State): Trạng thái của hệ thống tại một thời điểm nhất định.
  • Hành động (Action): Các hành động mà Agent có thể thực hiện trong môi trường.
  • Reward: Phản hồi từ môi trường sau khi Agent thực hiện một hành động.
  • Tín hiệu (Signal): Các tín hiệu từ môi trường được sử dụng để cung cấp thông tin về trạng thái hiện tại và các sự kiện xảy ra.

Ví dụ về Học tăng cường trong thực tế

Một ví dụ đơn giản về Học tăng cường trong thực tế là việc huấn luyện một chú chó. Trong ví dụ này, chú chó được xem là Agent và chủ nhân là môi trường. Tình huống được biểu thị như sau:

  • Trạng thái: Chó có thể có trạng thái là đang ngồi yên, đang chạy sau một cái xương, hoặc đã lấy được cái xương.
  • Hành động: Chó có thể làm ba hành động - không làm gì, chạy hoặc nắm lấy xương.
  • Reward: Chú chó nhận được khen ngợi và một miếng xương sau khi nắm lấy xương.

Ví dụ về Học tăng cường trong trò chơi Atari

Một ví dụ khác về Học tăng cường là việc huấn luyện các mô hình chơi các trò chơi Atari. Trong trò chơi Atari, trạng thái được biểu diễn bằng các giá trị pixel hiện tại của trò chơi trên màn hình. Hành động có thể là đi lên, đi xuống, đi trái hoặc đi phải (tùy thuộc vào Game). Reward là điểm số tăng dần trong khi chơi trò chơi.

Quy trình Markov Decision (MDP)

Tất cả các bài toán Học tăng cường là những quy trình quyết định Markov (MDP). Một quy trình quyết định Markov bao gồm các thành phần sau:

  • Trạng thái (State): Trạng thái hiện tại của hệ thống.
  • Hành động (Action): Các hành động có thể được thực hiện trong mỗi trạng thái.
  • Phần Tín hiệu chuyển trạng thái (Transition Signal): Tín hiệu này mô tả xác suất chuyển đổi từ một trạng thái hiện tại sang một trạng thái khác.
  • Phần Tín hiệu phản hồi (Reward Signal): Tín hiệu phản hồi này mô tả giá trị của việc thực hiện hành động trong mỗi trạng thái.

Việc tìm hiểu các MDP là rất quan trọng trong Học tăng cường vì nó cung cấp các khung giúp Agent tìm hiểu và tối ưu hóa việc thực hiện hành động.

Công thức tính toán Reward

Công thức tính toán Reward trong Học tăng cường là một phần quan trọng đã được giới thiệu trong Bài viết trước. Tổng Reward được tính bằng việc cộng thêm tất cả các Reward trung gian mà Agent nhận được từ việc thực hiện hành động trong môi trường.

Một điểm cần lưu ý là giá trị Reward có thể vô hạn và ở mức cao trong khi Agent cố gắng tối đa hóa Reward ngay lập tức, không quan tâm đến tương lai.

Chính sách và hàm Q

Chính sách (Policy) là quy định quy tắc quyết định cho Agent về cách thực hiện hành động dựa trên trạng thái hiện tại. Mục tiêu là tìm một chính sách tối ưu để tối đa hóa Reward.

Hàm Q (Q-function) xác định giá trị của việc thực hiện hành động "a" trong trạng thái "s" dưới một chính sách cụ thể. Giá trị Q cao đồng nghĩa với việc hành động sẽ mang lại Reward cao. Mục tiêu là tìm hiểu hàm Q tối ưu.

Thuật toán Epsilon Greedy Q-learning

Thuật toán Epsilon Greedy Q-learning là một trong những thuật toán quan trọng trong Học tăng cường. Nó sử dụng một tham số gọi là epsilon để cân nhắc giữa việc khám phá môi trường và khai thác kiến thức có sẵn.

Khi epsilon là 1, Agent hoàn toàn khám phá môi trường bằng cách chọn ngẫu nhiên các hành động. Khi epsilon là 0, Agent chỉ sử dụng kiến thức hiện có và chọn hành động mang lại giá trị Q cao nhất.

Thuật toán Epsilon Greedy Q-learning sử dụng công thức sau để cập nhật giá trị Q:

Q(s, a) = (1 - learning_rate) * Q(s, a) + learning_rate * (reward + gamma * max(Q(new_s, a')))

Ở đây:

  • Q(s, a) là giá trị Q hiện tại cho việc thực hiện hành động "a" trong trạng thái "s".
  • learning_rate (tỷ lệ học) quyết định độ lớn của bước thay đổi khi cập nhật giá trị Q.
  • reward là phần thưởng nhận được sau khi thực hiện hành động "a" trong trạng thái "s".
  • gamma (tham số chiết khấu) giảm giá trị phần thưởng cho tương lai.
  • new_s là trạng thái mới sau khi thực hiện hành động "a" trong trạng thái "s".
  • a' là hành động tốt nhất trong trạng thái new_s dựa trên Q.

Triển khai bài toán Carpole Problem với Học tăng cường

Bây giờ chúng ta sẽ triển khai bài toán Carpole Problem. Bài toán này yêu cầu đào tạo xe để cân bằng thanh gậy. Càng sớm chúng ta triển khai mô hình, chúng ta sẽ thấy thuật toán cải thiện từng bước theo thời gian.

Trước tiên, chúng ta cần import các thư viện cần thiết và khởi tạo môi trường.

import numpy as np
import gym
import time
import math

env = gym.make("CartPole-v1")
np.random.seed(0)

Tiếp theo, chúng ta sẽ định nghĩa một số biến và phương thức để triển khai thuật toán học tăng cường.

# Các biến khởi tạo
learning_rate = 0.1
discount_factor = 0.95
epochs = 25000

# Hàm tính trạng thái rời rạc
def discrete_state(state):
    pos_bin = np.linspace(-1, 1, 10)
    vel_bin = np.linspace(-3.5, 3.5, 10)
    angle_bin = np.linspace(-0.25, 0.25, 10)
    ang_vel_bin = np.linspace(-3.5, 3.5, 10)

    pos, vel, angle, ang_vel = state

    pos_discrete = np.digitize(pos, pos_bin)
    vel_discrete = np.digitize(vel, vel_bin)
    angle_discrete = np.digitize(angle, angle_bin)
    ang_vel_discrete = np.digitize(ang_vel, ang_vel_bin)

    return (pos_discrete, vel_discrete, angle_discrete, ang_vel_discrete)

Cuối cùng, chúng ta sẽ triển khai thuật toán q-learning.

# Khởi tạo bảng Q
q_table = np.random.uniform(low=-1, high=1, size=(10, 10, 10, 10, env.action_space.n))

# Khởi tạo biến epsilon
epsilon = 0.9995

# Chu trình huấn luyện
for epoch in range(epochs + 1):
    # Thiết lập biến thời gian
    t_initial = time.time()

    # Lấy state ban đầu
    state = env.reset()

    # Khởi tạo các biến khác
    done = False
    epoch_reward = 0

    # Vòng lặp trò chơi
    while not done:
        # Thực hiện hành động dựa trên epsilon
        if np.random.random() > epsilon:
            action = np.argmax(q_table[discrete_state(state)])
        else:
            action = env.action_space.sample()

        # Cập nhật môi trường
        new_state, reward, done, _ = env.step(action)

        # Cập nhật bảng Q
        if not done:
            max_future_q = np.max(q_table[discrete_state(new_state)])
            current_q = q_table[discrete_state(state) + (action,)]
            new_q = (1 - learning_rate) * current_q + learning_rate * (reward + discount_factor * max_future_q)
            q_table[discrete_state(state) + (action,)] = new_q

        # Cập nhật state
        state = new_state

        # Cộng thêm reward
        epoch_reward += reward

    # In thông tin sau mỗi 1000 epoch
    if epoch % 1000 == 0:
        print(f"Epoch: {epoch}/{epochs}, Reward: {epoch_reward}, Epsilon: {epsilon}")

    # Cập nhật epsilon
    if epsilon > 0.05 and epoch_reward > previous_reward and epoch > 10000:
        epsilon = math.pow(epsilon_decay, epoch - 1000)

    # Cập nhật thông tin để tính trung bình
    total_time += time.time() - t_initial
    total_reward += epoch_reward

# Tính toán và in kết quả cuối cùng
average_time = total_time / epochs
average_reward = total_reward / epochs
print(f"Average Time per Episode: {average_time}")
print(f"Average Reward per Episode: {average_reward}")

# Đóng môi trường
env.close()

Cuối cùng, chúng ta sẽ chạy mã và xem kết quả.

Kết quả và kết luận

Khi chạy mã, chúng ta sẽ nhìn thấy đồ thị tiến bộ của mô hình khi huấn luyện trên các epoch khác nhau. Kết quả cuối cùng sẽ hiển thị thời gian trung bình mỗi episode và phần thưởng trung bình mỗi episode.

Qua bài viết này, chúng ta đã tìm hiểu về lý thuyết và cách triển khai thuật toán học tăng cường. Học tăng cường được coi là một lĩnh vực quan trọng trong Học máy và có rất nhiều ứng dụng trong thực tế.

Most people like

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.