Az intelligens ügynökök egyik legfontosabb képessége a tanulás képessége. A tanulás különböző módjait ismerjük. Ha logikusan levezetünk egy új szabályt egy már ismert szabályból (pl. A folyamat hatékonyságának növelése érdekében), akkor analitikus vagy deduktív tanulásról beszélünk. Egy általános függvény/szabály megtanulását specifikus input-output párokból induktív tanulásnak nevezzük. A gép által kapott visszajelzés jellegétől függően a tanulás az alábbiak szerint osztható fel:

Felügyelt tanulás

Az ügynök több bemeneti-kimeneti mintát figyel meg, és megtanulja, hogyan lehet megfelelő kimenetet létrehozni a bemenethez. Egy ilyen képzett algoritmus megbízhatósága nagymértékben függ a képzési adatkészlet méretétől és minőségétől.
Összehasonlíthatjuk ezt a folyamatot azzal, ahogy a szülők megtanítják a kisgyermekeket különböző dolgok felismerésére. Például. megmutatnak nekik egy képet az állatokról, ahol minden állat képére mutatnak és helyesen megjelölik ("kutya", "macska", "ló" stb.). Ily módon a gyermek megtanulja felismerni az egyes állatokat, még akkor is, ha más képen látja, vagy élőben látja őket.

Felügyelet nélküli tanulás

Az ügynök mindenféle visszajelzés nélkül megpróbálja megtalálni a bemeneti adatok mintáit (nem ismeri a "helyes válaszokat"). Elengedhetetlen az olyan inputok csoportosítása, amelyek valamilyen módon hasonlóak („klaszterezés”), valamint olyan társítási szabályok kidolgozása, amelyek leírják az egyes adatcsoportokat és a közöttük fennálló kapcsolatokat.
Ha mutatunk egy ilyen algoritmust pl. több különböző kép a kutyákról, így képes lesz mondani, hogy valamennyiben hasonlóak (két szem, négy láb, farok stb.), és egy csoportba helyezheti őket, bár nem fogja tudni őket felcímkézni kutyák.

Félig felügyelt tanulás

Csak néhány jól jelölt beviteli példa, és a gépnek mindent meg kell tennie a jelöletlen bemenetek kiterjedt gyűjteményével. Néha véletlenszerű zaj is van az adatokban, azaz pontatlanságok, amelyek felderítése tanári módszereket igényel tanár nélkül.

Megerősítő tanulás

Az ügynök meghatározta bizonyos magatartási szabályokat (pl. Játékszabályokat, amelyeket játszania kell). Kipróbálással és hibával tanul a döntéseinek eredményéért kapott jutalmakból vagy büntetésekből (nyereményért járó jutalom, veszteségért járó büntetés stb.). Az ő feladata eldönteni, hogy a jutalom/büntetés előtti cselekedetek közül melyik felel a legjobban az eredményért.

Döntési fa indukció

A gépi tanulás egyik legegyszerűbb és legsikeresebb formája a döntési fa indukciója. Ez egy olyan függvény, amely bemenetként egy értékek, attribútumok vektorát veszi fel, és egy kimeneti értéket ad vissza egy döntésnek. Ezt a döntést tesztek sorozatának végrehajtásával érjük el. A fa minden csomópontja megfelel az egyik bemeneti attribútum értékének tesztjének, míg a csomópont ágai ennek az attribútumnak a lehetséges értékeivel vannak jelölve. Az inputokat a fa gyökerétől a megfelelő ágakon át a levélcsomópontig dolgozzuk fel, meghatározva a függvény által visszaadandó értéket.

Regresszió

Az induktív tanulás másik formája a regresszió. Arról a funkcióról van szó, amely a legjobban leírja az inputok és outputok kapcsolatát, vagyis illeszkedik a függőségi grafikonjukra.
A legegyszerűbb példa a lineáris regresszió, amely az f (x) = w0x + w1 alak függvényét keresi. A bemenet és a kimenet függőségének grafikonján regressziós vonal alakja van. A w0 és w1 együtthatókat tömegeknek is nevezzük. A lineáris regresszióban az algoritmus olyan tömegértékeket keres, hogy a másodpercenkénti hibák összege a lehető legkisebb legyen. Hibán a kimenet tényleges értéke és az adott bemenetre a regressziós vonallal megjósolt érték közötti különbséget értjük. Egy bemenetre kiszámíthatjuk a hiba négyzetét (y - w0x - w1) 2, ahol x a bemenet értéke, y pedig a tényleges kimenet (nem az előre jelzett). Az összes bemenet hibájának négyzetének összegét használjuk az R2 jelölésére is.
Az inputok és outputok kapcsolatát leíró függvény lehet pl. lineáris exponenciális, polinom stb.

Példa a lineáris regresszióra:
f (x) = 0,872x + 10, R2 = 0,666

mesterséges

Példa az exponenciális regresszióra:
f (x) = 23 * e 0,0161x, R2 = 0,667

Példa a 2. fokú polinom regresszióra:
f (x) = 17,8 + 0,364 x + 0,0053 x 2, R2 = 0,684

Példa a 3. fokú polinom regresszióra:
f (x) = 19,8 + 0,084x + 0,0126 x 2 - 0,0000497x 3, R2 = 0,685

Példa a 4. fokú polinomiális regresszióra:
f (x) = 16,6 + 0,744x - 0,0167 x 2 + 0,000403x3 - 0,00000226x 4, R2 = 0,687

Osztályozás

Az illesztés felhasználható osztályozásra is, vagyis az inputok osztályokra (hasonló tulajdonságokkal rendelkező input csoportokra) felosztására. A grafikon osztályait elválasztó vonalat döntési határnak nevezzük.
A képzési algoritmus képességét egy képzési görbe fejezi ki, amely a képzett program előrejelzéseinek pontosságát mutatja a képzési készlet méretének függvényében. A számítási tanulás elmélete ugyanakkor azt mondja, hogy nem valószínű, hogy egy program által létrehozott hipotézis, amely összhangban áll egy kellően nagy halmazzal, túl helytelen lesz.

Ha a döntési határ egyenes, akkor lineáris elválasztónak nevezzük. A lineáris elválasztót használó osztályozót lineáris osztályozónak is nevezzük, az ilyen elválasztót lehetővé tevő adatokat pedig lineárisan elválaszthatónak. Ezt a típusú osztályozót egy egyszerű szabály segítségével lehet oktatni, amely frissíti a döntési határt meghatározó együtthatókat, hogy illeszkedjenek lineárisan elválasztható adatokhoz. Más megközelítések közé tartozik pl. logisztikai regresszió, amely logisztikai függvény által meghatározott elválasztót használ, és lineárisan elválaszthatatlan adatokhoz is működik.
A képzési algoritmus képességét egy képzési görbe fejezi ki, amely a képzett program előrejelzéseinek pontosságát mutatja a képzési készlet méretének függvényében. A számítási tanulás elmélete ugyanakkor azt mondja, hogy nem valószínű, hogy egy program által létrehozott hipotézis, amely összhangban áll egy kellően nagy halmazzal, túl helytelen lesz.

Lineárisan elválasztható

Ezt a típusú osztályozót egy egyszerű szabály segítségével lehet oktatni, amely frissíti a döntési határt meghatározó együtthatókat, hogy illeszkedjenek lineárisan elválasztható adatokhoz. Más megközelítések közé tartozik pl. logisztikai regresszió, amely logisztikai függvény által meghatározott elválasztót használ, és lineárisan elválaszthatatlan adatokhoz is működik:

Lineárisan elválaszthatatlan

Ezt a típusú osztályozót egy egyszerű szabály segítségével lehet oktatni, amely frissíti a döntési határt meghatározó együtthatókat, hogy illeszkedjenek lineárisan elválasztható adatokhoz. Más megközelítések közé tartozik pl. logisztikai regresszió, amely logisztikai függvény által meghatározott elválasztót használ, és lineárisan elválaszthatatlan adatokhoz is működik:

Mesterséges idegi hálózat

Jelenleg egy viszonylag új koncepció, a mesterséges ideghálózatok nagyon népszerűek. Ezek az állatok agyában a neuronális hálózatok egyszerűsített modelljei. A mesterséges idegsejtek alapvető feladata, hogy kiszámítsák a bemenetek súlyozott összegét, és valamilyen aktiválási (transzfer) függvény alapján egy bizonyos tartomány (gyakran 0 és 1 közötti) értékét adják vissza. Az idegsejt kimenetének beállításához az ún előítélet, állandó, amelyet egy neuron hozzáad a bemenetek súlyozott összegéhez, mielőtt aktiválási funkciót alkalmazna. Ennek az állandónak a fennállása miatt a neurális hálózati modell rugalmasabb, és jobban alkalmazkodik a bemeneti adatokhoz. Az alkalmazott bemeneti súlyok és az előítéletérték frissül a tanulási folyamat során, amely történhet tanárral vagy anélkül. 3 fő lépésből áll:

  1. A súlyok inicializálása - A súlyoknak az elején véletlenszerű értékek vannak, amelyek megegyeznek néhány kis számmal (pl. -1-től 1-ig). Hasonlóképpen, az egyes idegsejtek előítéletértéke az elején nagyon kis szám.
  2. Kimenet kiszámítása - A bemeneti értékek súlyozott összegét kiszámítják, és hozzáadják az előítéletek értékét. Az eredmény átkerül az aktiválási függvénybe, amely az értékét egy bizonyos tartományba (pl. 0-tól 1-ig) nyomja. Az aktiválási funkció kiválasztása a várható adatok jellegétől függ. Például. a lineáris osztályozásban használhatjuk az idegsejt úgynevezett modelljét. logikai küszöbérték. Alapvető művelete az inputok súlyozott összegének kiszámítása, majd az 1 visszatérése, ha ez az összeg meghaladja egy bizonyos küszöbértéket, különben 0.
  3. Hibaszámítás és súlybeállítás - Először kiszámoljuk a hibát, azaz. a modell által visszaadott kimenet és a várható kimenet közötti különbség. Ezután a hálózati súlyokat és az előfeszítési értékeket úgy állítjuk be, hogy a következő iterációból (ismétlésből) származó modell kimenete közelebb legyen a várható kimenethez, és csökkenjen a hiba. Hogy mennyire legyenek jelentősek az értékek változásai, azt előre meg lehet határozni egy állandó segítségével, amely meghatározza az egyes iterációk tanulási arányát (általában 0 és 1 közötti szám).

A 2. és 3. lépést addig ismételjük, amíg a hibát a lehető legkisebb értékre minimalizáljuk, vagy a hiba csökkentésére már nincs mód. Alternatív megoldásként a képzés akkor is befejezhető, ha elér egy bizonyos maximális számú iterációt.

Python implementáció:
Letöltés

# Használt modulok importálása
random, numpy importálása
def inicializálás_súly ():
# "Mag" beállítása véletlenszerű generátor számára
random.seed (1)

# Véletlen kezdeti súlyok létrehozása
# (véletlenszerű számok hozzárendelése a [-1,1) intervallumtól a 3x1 mátrixig)
súly = numpy.random.uniform (alacsony = -1, magas = 1, méret = (3, 1))
visszatérő súly

# Aktiválási függvény (ebben az esetben ez egy sigmoidális függvény)
def sigmoid (x):
return 1/(1 + numpy.exp (-x))
# Egy másik kiegészítő funkció (a sigmoid függvény levezetése)
def derivált_sigmoid (x):
vissza x * (1 - x)
# Funkció a kibocsátás kiszámításához súlyozott összeg, előítélet és aktiválási függvény segítségével
def find_output (bemenetek, súlyok, előítéletek):
return sigmoid (numpy.dot (bemenetek, súlyok) + előítélet)

# Neurális hálózati képzés
def képzés (bemenetek, várható_kimenet, súlyok, előítéletek, tanulási_ráta,_írási_szám):
az iteracia tartományban (pocet_iteracii):

# Keresse meg a képzési bemenetek kimenetét
számított_kimenet = keresési_kimenet (bemenetek, súlyok, előítéletek)

# Hiba kiszámítása
hiba = levezetés_sigmoid (számított_kimenet) * (várható_kimenet - számított_kimenet)

# A súly beállításának tényezői és az előítéletek értéke
factorH = numpy.dot (inputok.T, hiba) * learning_rate
faktorP = hiba * tanulási_ráta
# A súlyok és az előítéletek értékének beállítása
tömeg + = faktor H
előítélet + = faktorP

# Az eljárás időközi nyilatkozata
ha ((iteracia% 1000) == 0):
nyomtatás ("Iteráció", iteráció)
print ("Számított eredmény:", vypocitany_vystup.T)
nyomtatás ("Várható eredmény:", várható_kimenet.T)
nyomtatás ()

# Véletlenszerű kezdeti súlyok a hálózathoz
súly = inicializálás_súly ()

# Képzési készlet
bemenetek = numpy.array ([[[1, 1, 1],
[1, 0, 0],
[0, 0, 1]])

# Cél és tesztkészlet
Várható_kimenet = szampy.array ([[1, 0, 1]]). T
teszt = numpy.array ([1, 0, 1])

# Neurális hálózati képzés
megtanult_súly = edzés (bemenetek, várható_kimenet, súlyok, előítéletek = 0,001, tanulási_ráta = 0,98, írások száma = 100000)

# Tesztelje a hálózatot a teszthálózaton
pontosság = (keresési_kimenet (teszt, megtanult_súly, elfogultság = 0,01)) * 100
nyomtatás ("Modell pontosság:", pontosság [0], "%")

Források, hasznos linkek, irodalom

RUSSELL, S. J. - NORVIG, P.: Mesterséges intelligencia: modern megközelítés (3. kiadás). Upper Saddle River, USA: Prentice Hall, 2003. ISBN 0-13-790395-2