Les xarxes neuronals són un component fonamental de l'aprenentatge automàtic i la intel·ligència artificial. Aquestes estructures matemàtiques estan inspirades en el funcionament del cervell humà i són capaces d'aprendre patrons complexos a partir de dades. En aquest tema, explorarem els conceptes bàsics de les xarxes neuronals, la seva estructura i com funcionen.
Objectius del tema
- Entendre què és una xarxa neuronal.
- Conèixer els components bàsics d'una xarxa neuronal.
- Aprendre com les xarxes neuronals aprenen a partir de dades.
- Familiaritzar-se amb els termes clau relacionats amb les xarxes neuronals.
Què és una xarxa neuronal?
Una xarxa neuronal és un model computacional que consisteix en capes de neurones artificials. Aquestes neurones estan connectades entre si i treballen conjuntament per processar informació i fer prediccions. Les xarxes neuronals són especialment útils per a tasques com la classificació d'imatges, el reconeixement de veu i la traducció automàtica.
Components bàsics d'una xarxa neuronal
-
Neurones (Nodes):
- Les neurones són les unitats bàsiques de les xarxes neuronals. Cada neurona rep una o més entrades, les processa i genera una sortida.
- Les neurones estan organitzades en capes: capa d'entrada, capes ocultes i capa de sortida.
-
Capes:
- Capa d'entrada: Rep les dades d'entrada.
- Capes ocultes: Processen les dades mitjançant una sèrie de transformacions. El nombre de capes ocultes i el nombre de neurones en cada capa poden variar.
- Capa de sortida: Genera la predicció final.
-
Pesos i Bias:
- Pesos: Cada connexió entre neurones té un pes associat que determina la importància de la connexió.
- Bias: Un valor addicional que s'afegeix a la sortida de la neurona per ajustar la funció d'activació.
-
Funció d'activació:
- Una funció matemàtica que determina si una neurona s'activa o no. Les funcions d'activació comunes inclouen ReLU, Sigmoid i Tanh.
Com aprenen les xarxes neuronals?
Les xarxes neuronals aprenen ajustant els pesos i els bias de les connexions entre neurones. Aquest procés es coneix com a entrenament i es realitza mitjançant un algorisme d'optimització com el gradient descent. Durant l'entrenament, la xarxa neuronal intenta minimitzar una funció de pèrdua que mesura la diferència entre les prediccions de la xarxa i les etiquetes reals.
Passos de l'entrenament:
-
Propagació endavant (Forward Propagation):
- Les dades d'entrada es passen a través de la xarxa, capa per capa, fins a arribar a la capa de sortida.
- Es calcula la sortida de cada neurona utilitzant els pesos, bias i la funció d'activació.
-
Càlcul de la pèrdua (Loss Calculation):
- Es calcula la funció de pèrdua comparant la sortida de la xarxa amb les etiquetes reals.
-
Propagació enrere (Backward Propagation):
- Es calcula el gradient de la funció de pèrdua respecte als pesos i bias.
- Els pesos i bias s'actualitzen utilitzant l'algorisme d'optimització per minimitzar la pèrdua.
-
Iteració:
- Aquest procés es repeteix per múltiples èpoques fins que la funció de pèrdua es minimitza.
Exemple pràctic: Creació d'una xarxa neuronal simple amb TensorFlow
A continuació, crearem una xarxa neuronal simple utilitzant TensorFlow per resoldre un problema de classificació bàsic.
import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense # Generem dades d'exemple import numpy as np X = np.array([[0,0], [0,1], [1,0], [1,1]]) y = np.array([[0], [1], [1], [0]]) # Creem el model model = Sequential() model.add(Dense(2, input_dim=2, activation='relu')) # Capa oculta amb 2 neurones model.add(Dense(1, activation='sigmoid')) # Capa de sortida amb 1 neurona # Compilem el model model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Entrenem el model model.fit(X, y, epochs=1000, verbose=0) # Avaluem el model loss, accuracy = model.evaluate(X, y) print(f'Pèrdua: {loss}, Precisió: {accuracy}') # Fem prediccions predictions = model.predict(X) print('Prediccions:') print(predictions)
Explicació del codi:
-
Importació de llibreries:
- Importem TensorFlow i les classes necessàries per crear el model.
-
Generació de dades d'exemple:
- Creem un conjunt de dades d'entrada
X
i les seves etiquetes corresponentsy
.
- Creem un conjunt de dades d'entrada
-
Creació del model:
- Utilitzem
Sequential
per crear un model seqüencial. - Afegim una capa oculta amb 2 neurones i una funció d'activació ReLU.
- Afegim una capa de sortida amb 1 neurona i una funció d'activació Sigmoid.
- Utilitzem
-
Compilació del model:
- Compilem el model especificant la funció de pèrdua, l'optimitzador i les mètriques.
-
Entrenament del model:
- Entrenem el model amb les dades d'exemple durant 1000 èpoques.
-
Avaluació del model:
- Avaluem el model amb les dades d'exemple i imprimim la pèrdua i la precisió.
-
Prediccions:
- Fem prediccions amb el model entrenat i imprimim els resultats.
Resum
En aquest tema, hem introduït les xarxes neuronals, els seus components bàsics i com funcionen. Hem après com les xarxes neuronals aprenen a partir de dades mitjançant el procés d'entrenament. Finalment, hem creat una xarxa neuronal simple utilitzant TensorFlow per resoldre un problema de classificació bàsic. En el proper tema, aprofundirem en la creació d'una xarxa neuronal simple amb més detall.
Curs de TensorFlow
Mòdul 1: Introducció a TensorFlow
- Què és TensorFlow?
- Configuració de TensorFlow
- Conceptes bàsics de TensorFlow
- Hola món amb TensorFlow
Mòdul 2: Conceptes bàsics de TensorFlow
Mòdul 3: Gestió de dades a TensorFlow
Mòdul 4: Construcció de xarxes neuronals
- Introducció a les xarxes neuronals
- Creació d'una xarxa neuronal simple
- Funcions d'activació
- Funcions de pèrdua i optimitzadors
Mòdul 5: Xarxes neuronals convolucionals (CNNs)
Mòdul 6: Xarxes neuronals recurrents (RNNs)
- Introducció a les RNNs
- Construcció d'una RNN
- Memòria a llarg termini (LSTM)
- Unitats recurrents amb porta (GRUs)
Mòdul 7: Tècniques avançades de TensorFlow
- Capes i models personalitzats
- TensorFlow Hub
- Aprenentatge per transferència
- Ajust de hiperparàmetres