A mesterséges intelligencia (AI) jelentős népszerűségre tett szert az elmúlt években.
Ha Ön szoftvermérnök, informatikus vagy általában az adattudományok rajongója, akkor valószínűleg felkeltik az érdeklődését a képfeldolgozás, a mintafelismerés és az objektumészlelés ezen a területen nyújtott csodálatos alkalmazásai.
Az AI legfontosabb részterülete, amelyről valószínűleg hallott, a mély tanulás. Ez a mező olyan hatékony algoritmusokra (számítógépes programutasításokra) összpontosít, amelyeket az emberi agy működésének mintájára, az úgynevezett Neurális hálózatok.
Ebben a cikkben áttekintjük a neurális hálózatok fogalmát, valamint azt, hogy hogyan lehet ezeket a modelleket felépíteni, összeállítani, illeszteni és értékelni. Piton.
Neurális hálózatok
A neurális hálózatok vagy NN-ek olyan algoritmusok sorozata, amelyeket az emberi agy biológiai aktivitása alapján modelleztek. A neurális hálózatok csomópontokból állnak, amelyeket neuronoknak is neveznek.
A függőleges csomópontok gyűjteményét rétegeknek nevezzük. A modell egy bemenetből, egy kimenetből és számos rejtett rétegből áll. Minden réteg csomópontokból, más néven neuronokból áll, ahol a számítások zajlanak.
A következő ábrán a körök a csomópontokat, a függőleges csomópontok pedig a rétegeket jelölik. Ebben a modellben három réteg található.
Az egyik réteg csomópontjai átviteli vonalakon keresztül kapcsolódnak a következő réteghez, amint az alább látható.
Adatkészletünk címkézett adatokból áll. Ez azt jelenti, hogy minden adatentitáshoz egy bizonyos névérték van hozzárendelve.
Tehát egy állatosztályozási adatkészlethez macskák és kutyák képei lesznek az adatok, a „macska” és a „kutya” címkékkel.
Fontos megjegyezni, hogy a címkéket számértékekre kell konvertálni ahhoz, hogy modellünk értelmet nyerjen, így az állatcímkéink „0” a macska és „1” a kutya esetében. Az adatok és a címkék is átkerülnek a modellen.
Tanulás
Az adatok egyenként kerülnek a modellbe. Ezeket az adatokat darabokra bontják, és a modell minden csomópontján áthaladják. A csomópontok matematikai műveleteket hajtanak végre ezeken a darabokon.
Ehhez az oktatóanyaghoz nem szükséges ismernie a matematikai függvényeket vagy számításokat, de fontos, hogy általános elképzelése legyen ezeknek a modelleknek a működéséről. Az egyik rétegben végzett számítások sorozata után az adatok a következő rétegre kerülnek, és így tovább.
Miután elkészült, modellünk megjósolja az adatcímkét a kimeneti rétegen (például egy állatosztályozási probléma esetén 0-s előrejelzést kapunk egy macskára).
A modell ezután összehasonlítja ezt a becsült értéket a tényleges címkeértékkel.
Ha az értékek egyeznek, a modellünk a következő bemenetet veszi, de ha az értékek eltérnek, a modell kiszámítja a két érték közötti különbséget, amelyet veszteségnek neveznek, és módosítja a csomópontszámításokat, hogy legközelebb megfelelő címkéket állítson elő.
Mély tanulási keretrendszerek
A neurális hálózatok kódban történő felépítéséhez importálnunk kell Mélytanulási keretrendszerek az integrált fejlesztési környezetünket (IDE) használó könyvtárak.
Ezek a keretrendszerek előre megírt függvények gyűjteményei, amelyek segítségünkre lesznek ebben az oktatóanyagban. Modellünk felépítéséhez a Keras keretrendszert fogjuk használni.
A Keras egy Python-könyvtár, amely egy mély tanulási és mesterséges intelligencia háttérprogramot használ tenzor áramlás NN-ek létrehozása egyszerű szekvenciális modellek formájában.
A Keras saját, már létező modellekkel is rendelkezik, amelyek szintén használhatók. Ehhez az oktatóanyaghoz saját modellt készítünk a Keras segítségével.
Erről a Deep Learning keretrendszerről többet megtudhat a Keras honlapja.
Neurális hálózat felépítése (oktatóanyag)
Folytassuk a neurális hálózat felépítését Python használatával.
Problémanyilatkozat
A neurális hálózatok egyfajta megoldást jelentenek az AI-alapú problémákra. Ebben az oktatóanyagban áttekintjük a Pima indiánok cukorbetegségének elérhető adatait itt.
ICU A Machine Learning összeállította ezt az adatkészletet és indiai betegek orvosi feljegyzését tartalmazza. Modellünknek meg kell jósolnia, hogy a betegnél 5 éven belül kialakul-e cukorbetegség vagy sem.
Adatkészlet betöltése
Adatkészletünk egy „diabetes.csv” nevű CSV-fájl, amely könnyen kezelhető a Microsoft Excel segítségével.
Modellünk létrehozása előtt importálnunk kell adatkészletünket. A következő kód segítségével ezt megteheti:
import pandák, mint pd
data = pd.read_csv('diabetes.csv')
x = data.drop("Eredmény")
y = adat["Eredmény"]
Itt használjuk a pandák A CSV-fájl adatainak kezeléséhez a read_csv() a Pandas beépített függvénye, amely lehetővé teszi számunkra, hogy a fájlunkban lévő értékeket egy „data” nevű változóban tároljuk.
Az x változó tartalmazza az adatkészletünket az eredményadatok (címkék) nélkül. Ezt a data.drop() függvénnyel érjük el, amely eltávolítja az x címkéit, míg y csak az eredmény (címke) adatokat tartalmazza.
Szekvenciális modell építése
1. lépés: Könyvtárak importálása
Először is importálnunk kell a TensorFlow-t és a Keras-t, valamint a modellünkhöz szükséges bizonyos paramétereket. Ezt a következő kód teszi lehetővé:
import tensorflow as tf
tensorflow import kerasból
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Aktiválás, Sűrű
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.metrics import categorical_crossentropy
Modellünkhöz sűrű rétegeket importálunk. Ezek teljesen összefüggő rétegek; azaz egy réteg minden csomópontja teljes mértékben kapcsolódik a következő réteg másik csomópontjához.
Mi is importálunk egy aktiválás a csomópontokhoz küldött adatok skálázásához szükséges funkció. optimalizálók importálták is a veszteség minimalizálása érdekében.
Az Adam egy ismert optimalizáló, amely hatékonyabbá teszi modellfrissítési csomópontszámításainkat, valamint kategorikus_kereszttrópia, amely az a veszteségfüggvény típusa (kiszámítja a tényleges és az előre jelzett címkeértékek közötti különbséget), amelyet használni fogunk.
2. lépés: Modellünk megtervezése
Az általam készített modellnek egy bemeneti (16 egységgel), egy rejtett (32 egységgel) és egy kimeneti (2 egységgel) rétege van. Ezek a számok nem rögzítettek, és teljes mértékben az adott problémától függenek.
A megfelelő számú egység és réteg beállítása olyan folyamat, amely gyakorlással javítható a túlórázáson. Az aktiválás megfelel annak a skálázásnak, amelyet az adatainkon végzünk, mielőtt áthaladnánk egy csomóponton.
A Relu és a Softmax neves aktiválási funkciók erre a feladatra.
modell = Sequential([
Sűrű (egységek = 16, input_shape = (1,), aktiválás = 'relu'),
Sűrű (egységek = 32, aktiválás = 'relu'),
Sűrű (egységek = 2, aktiválás = 'softmax')
])
Így kell kinéznie a modell összefoglalójának:
A modell képzése
A modellünk képzése két lépésben történik, az első a modell összeállítása (a modell összeállítása), a következő pedig a modell illesztése egy adott adatkészletre.
Ez megtehető a model.compile() függvény, majd a model.fit() függvény használatával.
model.compile(optimizer = Ádám(tanulási_arány = 0.0001), veszteség = 'bináris_kereszttrópia', metrics = ['pontosság'])
model.fit(x, y, epochs = 30, batch_size = 10)
A „pontosság” mérőszám megadása lehetővé teszi, hogy megfigyeljük modellünk pontosságát a képzés során.
Mivel címkéink 1-es és 0-s formában vannak, bináris veszteségfüggvényt fogunk használni a tényleges és az előre jelzett címkék közötti különbség kiszámításához.
Az adatkészletet szintén 10-es kötegekre osztják fel (batch_size), és 30-szor (korszakonként) halad át a modellen. Egy adott adathalmaznál x lenne az adat, y pedig az adatoknak megfelelő címkék.
Modell tesztelése előrejelzések segítségével
Modellünk értékeléséhez előrejelzéseket készítünk a tesztadatokra a predikció() függvény segítségével.
előrejelzések = model.predict(x)
És ez az!
Most már jól meg kell értenie a Deep Learning alkalmazás, a Neurális hálózatok, hogyan működnek általában, és hogyan lehet Python-kódban modellt felépíteni, betanítani és tesztelni.
Remélem, hogy ez az oktatóanyag kiindulópontot ad a saját mélytanulási modellek létrehozásához és üzembe helyezéséhez.
Ossza meg velünk a megjegyzésekben, ha a cikk hasznos volt.
Hagy egy Válaszol