Oppikaa tekoälyä Pythonilla · Oppitunti

Syvä Q-oppiminen

Neuroverkkojen käyttäminen vahvistusoppimisessa.

Oppitunti 4/510 vaihetta

Syvä Q-oppiminen on ilmainen Oppikaa tekoälyä Pythonilla-oppitunti CoddyKitissä. Tämä on oppitunti 4/5. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Oppikaa tekoälyä Pythonilla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 5 oppituntia.

Mitä syvä Q-oppiminen on

Syvä Q-oppiminen

Syvä Q-oppiminen on Q-oppimisen laajennus, jossa neuroverkkoa käytetään Q-taulukon approksimointiin. Näin vahvistusoppiminen voidaan skaalata ympäristöihin, joissa on paljon tai jatkuva tila-avaruus ja toimintoavaruus.

Syvä Q-oppiminen — kuvitus 1

Miksi syvää Q-oppimista käytetään

Syvä Q-oppiminen ratkaisee perinteisen Q-oppimisen rajoituksia:

  • Se käsittelee suuriulotteisia tila-avaruuksia, kuten kuvia.
  • Se poistaa tarpeen tallentaa suuria Q-taulukoita muistiin.
  • Se yleistää tilojen välillä neuroverkkojen avulla.

DQN-algoritmi

Syvässä Q-oppimisessa Q-arvojen approksimointiin käytetään neuroverkkoa, jota kutsutaan nimellä Q-Network. Tärkeimmät vaiheet ovat:

  1. Alustetaan Q-Network satunnaisilla painoilla.
  2. Ollaan vuorovaikutuksessa ympäristön kanssa ja kerätään kokemustuplia (state, action, reward, next_state).
  3. Päivitetään Q-Network Bellmanin yhtälön avulla:

Q(s, a) ≈ r + γ max(Q(s', a'))

Q-Networkin rakentaminen

Q-Network on yksinkertainen eteenpäin syöttävä neuroverkko, joka ottaa nykyisen tilan syötteenä ja tuottaa Q-arvot kaikille mahdollisille toiminnoille:

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

# Define the Q-Network
q_network = Sequential([
    Dense(24, activation='relu', input_shape=(state_space_size,)),
    Dense(24, activation='relu'),
    Dense(action_space_size, activation='linear')
])

q_network.compile(optimizer='adam', loss='mse')

Kokemusten toisto

Syvässä Q-oppimisessa oppimisen tehostamiseen käytetään tekniikkaa nimeltä kokemusten toisto:

  • Kokemukset (state, action, reward, next_state) tallennetaan muistipuskuriin.
  • Kokemuksista poimitaan satunnaisesti eriä Q-Networkin kouluttamista varten.
from collections import deque

# Initialize replay memory
memory = deque(maxlen=2000)

# Add experience to memory
memory.append((state, action, reward, next_state, done))

Q-Networkin kouluttaminen

Koulutamme Q-Networkia muistipuskurissa olevien kokemusten avulla:

import numpy as np

# Sample a batch of experiences
batch_size = 32
batch = random.sample(memory, batch_size)

# Train the Q-Network
for state, action, reward, next_state, done in batch:
    target = reward
    if not done:
        target += gamma * np.max(q_network.predict(next_state[np.newaxis, ...]))
    q_values = q_network.predict(state[np.newaxis, ...])
    q_values[0][action] = target
    q_network.fit(state[np.newaxis, ...], q_values, epochs=1, verbose=0)

Kohdeverkot

Koulutuksen vakauttamiseksi DQN käyttää kohdeverkkoa:

  • Ylläpidetään erillistä verkkoa kohde-Q-arvojen laskemista varten.
  • Q-Networkin painot kopioidaan kohdeverkkoon säännöllisin väliajoin.

Syvän Q-oppimisen edut

Syvällä Q-oppimisella on useita etuja:

  • Se käsittelee suuriulotteisia tila-avaruuksia, kuten kuvia.
  • Se yleistää tilojen välillä neuroverkkojen avulla.
  • Sen avulla voidaan ratkaista monimutkaisia tehtäviä, kuten Atari-pelejä ja robottien ohjausta.

Yhteenveto ja seuraavat vaiheet

Tässä oppitunnissa:

  • Tutustuimme syvän Q-oppimisen perusteisiin.
  • Rakensimme Q-Networkin Q-arvojen approksimointia varten.
  • Käsittelimme kokemusten toistoa ja kohdeverkkoja vakaan koulutuksen mahdollistamiseksi.

Seuraavaksi tutustumme OpenAI Gymiin ja sovellamme vahvistusoppimista simuloiduissa ympäristöissä.

Syvä Q-oppiminen — kuvitus 10
Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
53
Oppitunnit
225

Usein kysytyt kysymykset

Onko oppitunti ”Syvä Q-oppiminen” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Oppikaa tekoälyä Pythonilla-oppimispolun 3 oppituntia, myös oppitunnin “Syvä Q-oppiminen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 5 oppituntia.

Mitä opin oppitunnilla ”Syvä Q-oppiminen”?

Neuroverkkojen käyttäminen vahvistusoppimisessa. Harjoittelet Oppikaa tekoälyä Pythonilla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Oppikaa tekoälyä Pythonilla-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Oppikaa tekoälyä Pythonilla-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/5.

Kuinka kauan ”Syvä Q-oppiminen”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Oppikaa tekoälyä Pythonilla-oppitunnilla?

Kyllä. Jokainen Oppikaa tekoälyä Pythonilla-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Vahvistusoppimisen peruskäsitteet
  2. Q-taulukon käsite
  3. Q-taulukon toteuttaminen Pythonissa
  4. Syvä Q-oppiminen
  5. OpenAI Gymiin tutustuminen
← Takaisin: Oppikaa tekoälyä Pythonilla