Python Academy · Lektion

Implementera en Q-tabell i Python

Ett enkelt exempel på Q-learning.

Lektion 3 av 510 steg

Implementera en Q-tabell i Python är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 3 av 5. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 5 lektioner.

Implementera Q-Learning i Python

I den här lektionen implementerar vi en enkel Q-Learning-algoritm i Python. Agenten lär sig att navigera i en rutnätsvärld för att maximera sina belöningar.

Implementera en Q-tabell i Python — illustration 1

Definiera miljön

Vi definierar en enkel rutnätsvärld på 4×4 där agenten börjar i det övre vänstra hörnet och måste nå det nedre högra hörnet för att få en belöning.

import numpy as np

# Define the environment
num_states = 16  # 4x4 grid
num_actions = 4  # Up, Down, Left, Right

# Define rewards (-1 for each step, +10 for the goal)
rewards = np.zeros(num_states)
rewards[-1] = 10

Initiera Q-tabellen

Q-tabellen initieras med nollor för alla tillstånd–åtgärdspar.

# Initialize the Q-Table
q_table = np.zeros((num_states, num_actions))

print("Initial Q-Table:")
print(q_table)

Implementera Q-Learning-algoritmen

Vi använder följande parametrar:

  • α (inlärningshastighet): Styr hur mycket ny information ersätter gammal information.
  • γ (diskonteringsfaktor): Viktar framtida belöningar i förhållande till omedelbara belöningar.
  • ε (utforskningsgrad): Balanserar utforskning och exploatering.
# Parameters
alpha = 0.1  # Learning rate
gamma = 0.9  # Discount factor
epsilon = 0.1  # Exploration rate

# Q-Learning loop
num_episodes = 1000
for episode in range(num_episodes):
    state = 0  # Start at the first state
    done = False
    while not done:
        # Exploration or exploitation
        if np.random.rand() < epsilon:
            action = np.random.randint(num_actions)  # Explore
        else:
            action = np.argmax(q_table[state])  # Exploit

        # Transition to the next state
        next_state = (state + action) % num_states  # Simplified transition logic
        reward = rewards[next_state]

        # Update Q-value
        q_table[state, action] = q_table[state, action] + alpha * (
            reward + gamma * np.max(q_table[next_state]) - q_table[state, action]
        )

        # Move to the next state
        state = next_state
        done = state == num_states - 1

Utvärdera den inlärda policyn

Efter träningen utvärderar vi policyn genom att följa de optimala åtgärder som lagrats i Q-tabellen:

# Evaluate the policy
state = 0
optimal_path = [state]
while state != num_states - 1:
    action = np.argmax(q_table[state])
    state = (state + action) % num_states  # Simplified transition logic
    optimal_path.append(state)

print("Optimal Path:", optimal_path)

Visualisera Q-tabellen

Vi kan visualisera Q-tabellen för att förstå de inlärda värdena för varje tillstånd–åtgärdspar:

import matplotlib.pyplot as plt
import seaborn as sns

# Visualize Q-Table
plt.figure(figsize=(10, 8))
sns.heatmap(q_table, annot=True, fmt=".2f", cmap="coolwarm")
plt.title("Q-Table Heatmap")
plt.xlabel("Actions")
plt.ylabel("States")
plt.show()

Fördelar med Q-Learning

Q-Learning har flera fördelar:

  • Enkelt och lätt att implementera.
  • Kan hantera stokastiska miljöer.
  • Konvergerar till den optimala policyn vid tillräcklig utforskning.

Begränsningar med Q-Learning

Q-Learning har vissa begränsningar:

  • Skalar inte bra till miljöer med stora tillstånds- och åtgärdsrymder.
  • Inlärningen kan gå långsamt i komplexa miljöer.
  • Kräver en väl definierad representation av tillstånd och åtgärder.

Sammanfattning och nästa steg

I den här lektionen:

  • Implementerade vi en enkel Q-Learning-algoritm i Python.
  • Tränade vi en agent att navigera i en rutnätsvärld med hjälp av en Q-tabell.
  • Utvärderade vi den inlärda policyn och visualiserade Q-tabellen.

Härnäst utforskar vi Deep Q-Learning, som använder neuronnät för att hantera miljöer med stora tillstånds- och åtgärdsrymder.

Implementera en Q-tabell i Python — illustration 10
Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
76
Lektioner
320

Vanliga frågor

Är lektionen ”Implementera en Q-tabell i Python” gratis?

Ja – hela texten till ”Implementera en Q-tabell i Python” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 5 lektioner.

Vad lär jag mig i ”Implementera en Q-tabell i Python”?

Ett enkelt exempel på Q-learning. Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Python Academy?

Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 5.

Hur lång tid tar lektionen ”Implementera en Q-tabell i Python”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Python Academy-lektionen?

Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Grundläggande begrepp inom förstärkningsinlärning
  2. Q-tabellens koncept
  3. Implementera en Q-tabell i Python
  4. Deep Q-learning
  5. Utforska OpenAI Gym
← Tillbaka till Python Academy