Implementering av Q-tabell i Python
Et enkelt eksempel på Q-learning
Implementering av Q-tabell i Python er en gratis leksjon i Python Academy på CoddyKit. Dette er leksjon 3 av 5. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Python Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Python Academy inneholder totalt 5 leksjoner.
Implementere Q-Learning i Python
I denne leksjonen skal vi implementere en enkel Q-Learning-algoritme i Python. Agenten skal lære å navigere i en rutenettverden for å maksimere belønningene sine.

Definere miljøet
Vi definerer en enkel rutenettverden på 4×4 ruter, der agenten starter øverst til venstre og må nå nederst til høyre for å få en belønning.
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] = 10Initialisere Q-tabellen
Q-tabellen initialiseres med nuller for alle tilstands- og handlingspar.
# Initialize the Q-Table
q_table = np.zeros((num_states, num_actions))
print("Initial Q-Table:")
print(q_table)Implementere Q-Learning-algoritmen
Vi bruker følgende parametere:
- α (læringsrate): Styrer hvor mye ny informasjon overstyrer gammel informasjon.
- γ (diskonteringsfaktor): Vekter fremtidige belønninger i forhold til umiddelbare belønninger.
- ε (utforskningsrate): Balanserer utforskning og utnyttelse.
# 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 - 1Evaluere den lærte policyen
Etter treningen evaluerer vi policyen ved å følge de optimale handlingene som er lagret 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)Visualisere Q-tabellen
Vi kan visualisere Q-tabellen for å forstå de lærte verdiene for hvert tilstands- og handlingspar:
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()Fordeler ved Q-Learning
Q-Learning har flere fordeler:
- Enkel og lett å implementere.
- Kan håndtere stokastiske miljøer.
- Konvergerer mot den optimale policyen når utforskningen er tilstrekkelig.
Begrensninger ved Q-Learning
Q-Learning har noen begrensninger:
- Skalerer dårlig til miljøer med store tilstands- og handlingsrom.
- Læringen kan gå sakte i komplekse miljøer.
- Krever en veldefinert representasjon av tilstander og handlinger.
Oppsummering og neste steg
I denne leksjonen:
- implementerte vi en enkel Q-Learning-algoritme i Python.
- trente vi en agent til å navigere i en rutenettverden ved hjelp av en Q-tabell.
- evaluerte vi den lærte policyen og visualiserte Q-tabellen.
Deretter skal vi utforske Deep Q-Learning, som bruker nevrale nettverk til å håndtere miljøer med store tilstands- og handlingsrom.

Lær deg Python med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 76
- Leksjoner
- 320
Ofte stilte spørsmål
Er leksjonen «Implementering av Q-tabell i Python» gratis?
Ja – hele teksten i «Implementering av Q-tabell i Python» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Python Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Python Academy inneholder totalt 5 leksjoner.
Hva lærer jeg i «Implementering av Q-tabell i Python»?
Et enkelt eksempel på Q-learning Du øver på Python Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Python Academy?
Ingen tidligere erfaring er nødvendig. Python Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 5.
Hvor lang tid tar leksjonen «Implementering av Q-tabell i Python»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Python Academy-leksjonen?
Ja. Alle Python Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Grunnleggende konsepter i forsterkningslæring
- Q-tabell-konseptet
- Implementering av Q-tabell i Python
- Deep Q-learning
- Utforsk OpenAI Gym