La intel·ligència artificial (IA) ha guanyat una gran popularitat en els últims anys.
Si sou un enginyer de programari, un científic informàtic o un entusiasta de la ciència de dades en general, probablement us intriguin les sorprenents aplicacions de processament d'imatges, reconeixement de patrons i detecció d'objectes que ofereix aquest camp.
El subcamp més important de la IA del qual probablement heu sentit parlar és l'aprenentatge profund. Aquest camp se centra en algorismes potents (instruccions de programes d'ordinador) modelats a partir de la funcionalitat del cervell humà coneguda com Xarxes neuronals.
En aquest article, repassarem el concepte de xarxes neuronals i com construir, compilar, ajustar i avaluar aquests models mitjançant Pitó.
Xarxes neuronals
Les xarxes neuronals, o NN, són una sèrie d'algorismes modelats a partir de l'activitat biològica del cervell humà. Les xarxes neuronals consisteixen en nodes, també anomenats neurones.
Una col·lecció de nodes verticals es coneix com a capes. El model consta d'una entrada, una sortida i un nombre de capes amagades. Cada capa està formada per nodes, també anomenats neurones, on es fan els càlculs.
En el diagrama següent, els cercles representen els nodes i la col·lecció vertical de nodes representen les capes. Hi ha tres capes en aquest model.
Els nodes d'una capa estan connectats a la següent capa mitjançant línies de transmissió tal com es veu a continuació.
El nostre conjunt de dades consta de dades etiquetades. Això vol dir que a cada entitat de dades se li ha assignat un valor de nom determinat.
Així, per a un conjunt de dades de classificació d'animals, tindrem imatges de gats i gossos com a dades, amb "gat" i "gos" com a etiquetes.
És important tenir en compte que les etiquetes s'han de convertir en valors numèrics perquè el nostre model tingui sentit, de manera que les etiquetes dels nostres animals es converteixen en "0" per al gat i "1" per a gos. Tant les dades com les etiquetes es passen pel model.
Aprenentatge
Les dades s'alimenten al model d'una entitat a la vegada. Aquestes dades es divideixen en trossos i es passen per cada node del model. Els nodes duen a terme operacions matemàtiques sobre aquests trossos.
No cal que conegueu les funcions matemàtiques ni els càlculs d'aquest tutorial, però és important tenir una idea general de com funcionen aquests models. Després d'una sèrie de càlculs en una capa, les dades es passen a la següent capa i així successivament.
Un cop completat, el nostre model prediu l'etiqueta de dades a la capa de sortida (per exemple, en un problema de classificació d'animals obtenim una predicció "0" per a un gat).
Aleshores, el model procedeix a comparar aquest valor previst amb el valor real de l'etiqueta.
Si els valors coincideixen, el nostre model prendrà la següent entrada, però si els valors són diferents, el model calcularà la diferència entre ambdós valors, anomenada pèrdua, i ajustarà els càlculs dels nodes per produir etiquetes coincidents la propera vegada.
Marcs d'aprenentatge profund
Per crear xarxes neuronals en codi, hem d'importar Marcs d'aprenentatge profund conegudes com a biblioteques utilitzant el nostre entorn de desenvolupament integrat (IDE).
Aquests marcs són una col·lecció de funcions preescrites que ens ajudaran en aquest tutorial. Utilitzarem el marc Keras per construir el nostre model.
Keras és una biblioteca de Python que utilitza un backend d'aprenentatge profund i intel·ligència artificial anomenat Corrent de tensió per crear NN en forma de models seqüencials senzills amb facilitat.
Keras també inclou els seus propis models preexistents que també es podrien utilitzar. Per a aquest tutorial, crearem el nostre propi model amb Keras.
Podeu obtenir més informació sobre aquest marc d'aprenentatge profund des de Lloc web de Keras.
Construir una xarxa neuronal (tutorial)
Passem a construir una xarxa neuronal amb Python.
Plantejament del problema
Les xarxes neuronals són un tipus de solució als problemes basats en IA. Per a aquest tutorial repassarem les dades de diabetis dels indis Pima, que estan disponibles aquí.
UCI Machine Learning ha recopilat aquest conjunt de dades i conté un historial mèdic de pacients indis. El nostre model ha de predir si el pacient té un inici de diabetis en 5 anys o no.
S'està carregant el conjunt de dades
El nostre conjunt de dades és un únic fitxer CSV anomenat "diabetes.csv" que es pot manipular fàcilment amb Microsoft Excel.
Abans de crear el nostre model, hem d'importar el nostre conjunt de dades. Amb el codi següent podeu fer-ho:
importar pandes com pd
dades = pd.read_csv('diabetes.csv')
x = data.drop ("Resultat")
y = dades[“Resultat”]
Aquí estem utilitzant el pandes biblioteca per poder manipular les dades del nostre fitxer CSV, read_csv() és una funció integrada de Pandas que ens permet emmagatzemar els valors del nostre fitxer en una variable anomenada "data".
La variable x conté el nostre conjunt de dades sense les dades del resultat (etiquetes). Ho aconseguim amb la funció data.drop() que elimina les etiquetes de x, mentre que y només conté les dades del resultat (etiqueta).
Model seqüencial de construcció
Pas 1: importació de biblioteques
En primer lloc, hem d'importar TensorFlow i Keras, juntament amb alguns paràmetres necessaris per al nostre model. El següent codi ens permet fer-ho:
importar tensorflow com a tf
des de tensorflow import keras
des de tensorflow.keras.models importació seqüencial
des de tensorflow.keras.layers importació Activació, Dens
des de tensorflow.keras.optimizers importar Adam
des de tensorflow.keras.metrics importació categorical_crossentropy
Per al nostre model estem important capes denses. Són capes totalment connectades; és a dir, cada node d'una capa està completament connectat amb un altre node de la capa següent.
També estem important un activació funció necessària per escalar les dades enviades als nodes. Optimitzadors també s'han importat per minimitzar les pèrdues.
Adam és un optimitzador de renom que fa que els càlculs de nodes d'actualització del nostre model siguin més eficients, juntament amb categòrica_entropia que és el tipus de funció de pèrdua (calcula la diferència entre els valors reals i predits de l'etiqueta) que farem servir.
Pas 2: Disseny del nostre model
El model que estic creant té una capa d'entrada (amb 16 unitats), una oculta (amb 32 unitats) i una de sortida (amb 2 unitats). Aquests números no es fixen i dependran completament del problema donat.
Establir el nombre correcte d'unitats i capes és un procés que es pot millorar amb les hores extres mitjançant la pràctica. L'activació correspon al tipus d'escalat que farem a les nostres dades abans de passar-les per un node.
Relu i Softmax són funcions d'activació conegudes per a aquesta tasca.
model = Seqüencial([
Dens (unitats = 16, forma_entrada = (1,), activació = 'relu'),
Dens (unitats = 32, activació = 'relu'),
Dens (unitats = 2, activació = 'softmax')
])
Aquí és com hauria de ser el resum del model:
Formació del model
El nostre model s'entrenarà en dos passos, el primer serà compilar el model (juntar el model) i el següent ajustar el model a un conjunt de dades determinat.
Això es pot fer mitjançant la funció model.compile() seguida de la funció model.fit().
model.compile(optimitzador = Adam (taxa_d'aprenentatge = 0.0001), pèrdua = 'binary_crossentropy', mètriques = ['exactitud'])
model.fit(x, y, epochs = 30, batch_size = 10)
Especificar la mètrica de "precisió" ens permet observar la precisió del nostre model durant l'entrenament.
Com que les nostres etiquetes tenen forma d'1 i 0, utilitzarem una funció de pèrdua binària per calcular la diferència entre les etiquetes reals i les previstes.
El conjunt de dades també s'està dividint en lots de 10 (batch_size) i es passarà pel model 30 vegades (èpoques). Per a un conjunt de dades determinat, x serien les dades i y serien les etiquetes corresponents a les dades.
Model de prova amb prediccions
Per avaluar el nostre model, fem prediccions sobre les dades de prova mitjançant la funció predict().
prediccions = model.predict(x)
I ja està!
Ara hauríeu de tenir una bona comprensió del Aprenentatge profund aplicació, xarxes neuronals, com funcionen en general i com construir, entrenar i provar un model en codi Python.
Espero que aquest tutorial us doni el punt d'inici per crear i desplegar els vostres propis models d'aprenentatge profund.
Feu-nos saber als comentaris si l'article va ser útil.
Deixa un comentari