Introducció
Les xarxes neuronals són un component fonamental del Deep Learning i estan inspirades en la manera en què el cervell humà processa la informació. Aquestes xarxes estan compostes per capes de neurones artificials que treballen conjuntament per resoldre problemes complexos. En aquesta secció, explorarem les diferents arquitectures de xarxes neuronals, les seves components i com es poden aplicar a diverses tasques.
Components d'una Xarxa Neuronal
-
Neurona Artificial:
- Pesos (Weights): Determinen la importància de cada entrada.
- Funció d'Activació: Decideix si una neurona s'activa o no.
- Bias: Un valor addicional que ajuda a ajustar la sortida del model juntament amb els pesos.
-
Capes:
- Capa d'Entrada: Rep les dades d'entrada.
- Capes Ocultes: Processen les dades mitjançant les neurones.
- Capa de Sortida: Proporciona el resultat final.
Tipus d'Arquitectures de Xarxes Neuronals
- Xarxes Neuronals Feedforward (FNN)
Les xarxes neuronals feedforward són les més senzilles i consisteixen en capes d'entrada, ocultes i de sortida. Les dades flueixen en una sola direcció, des de l'entrada fins a la sortida, sense cicles.
Exemple de Codi:
import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense # Crear el model model = Sequential() # Afegir capes model.add(Dense(units=64, activation='relu', input_shape=(input_dim,))) model.add(Dense(units=64, activation='relu')) model.add(Dense(units=output_dim, activation='softmax')) # Compilar el model model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
- Xarxes Neuronals Convolucionals (CNN)
Les CNN són especialment efectives en tasques de visió per computador. Utilitzen convolucions per extreure característiques de les imatges.
Components Clau:
- Capes Convolucionals: Aplicar filtres per extreure característiques.
- Capes de Pooling: Reduir la dimensionalitat de les característiques.
Exemple de Codi:
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense # Crear el model model = Sequential() # Afegir capes convolucionals i de pooling model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1))) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Conv2D(64, kernel_size=(3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) # Afegir capes denses model.add(Flatten()) model.add(Dense(128, activation='relu')) model.add(Dense(10, activation='softmax')) # Compilar el model model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
- Xarxes Neuronals Recurrents (RNN)
Les RNN són adequades per a dades seqüencials, com el text o les sèries temporals. Utilitzen connexions recurrents per mantenir informació de les etapes anteriors.
Components Clau:
- Unitats Recurrents: Manté l'estat de la seqüència.
Exemple de Codi:
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import SimpleRNN, Dense # Crear el model model = Sequential() # Afegir capes recurrents model.add(SimpleRNN(50, activation='relu', input_shape=(timesteps, input_dim))) model.add(Dense(output_dim, activation='softmax')) # Compilar el model model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
- Xarxes Neuronals de Memòria a Llarg i Curt Termini (LSTM)
Les LSTM són una variant de les RNN que poden recordar informació durant períodes més llargs, fent-les útils per a tasques com la traducció automàtica i la predicció de sèries temporals.
Components Clau:
- Cèl·lules LSTM: Mantenen l'estat de llarg termini.
Exemple de Codi:
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import LSTM, Dense # Crear el model model = Sequential() # Afegir capes LSTM model.add(LSTM(50, activation='relu', input_shape=(timesteps, input_dim))) model.add(Dense(output_dim, activation='softmax')) # Compilar el model model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Comparació d'Arquitectures
Arquitectura | Avantatges | Desavantatges |
---|---|---|
FNN | Senzilla, fàcil d'implementar | No adequada per a dades seqüencials o imatges |
CNN | Excel·lent per a visió per computador | Complexitat computacional elevada |
RNN | Adequada per a dades seqüencials | Problemes amb la memòria a llarg termini |
LSTM | Resol problemes de memòria a llarg termini | Més complexa i lenta d'entrenar |
Exercici Pràctic
Objectiu: Crear una xarxa neuronal convolucional per classificar imatges de dígits manuscrits (dataset MNIST).
Passos:
- Carregar el dataset MNIST.
- Preprocessar les dades.
- Crear i compilar el model CNN.
- Entrenar el model.
- Avaluar el model.
Codi:
import tensorflow as tf from tensorflow.keras.datasets import mnist from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense from tensorflow.keras.utils import to_categorical # Carregar el dataset MNIST (x_train, y_train), (x_test, y_test) = mnist.load_data() # Preprocessar les dades x_train = x_train.reshape(x_train.shape[0], 28, 28, 1).astype('float32') / 255 x_test = x_test.reshape(x_test.shape[0], 28, 28, 1).astype('float32') / 255 y_train = to_categorical(y_train, 10) y_test = to_categorical(y_test, 10) # Crear el model model = Sequential() model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1))) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Conv2D(64, kernel_size=(3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Flatten()) model.add(Dense(128, activation='relu')) model.add(Dense(10, activation='softmax')) # Compilar el model model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) # Entrenar el model model.fit(x_train, y_train, epochs=10, batch_size=200, validation_split=0.2) # Avaluar el model score = model.evaluate(x_test, y_test, verbose=0) print('Test loss:', score[0]) print('Test accuracy:', score[1])
Conclusió
En aquesta secció, hem explorat les diferents arquitectures de xarxes neuronals, incloent-hi les xarxes feedforward, convolucionals, recurrents i LSTM. Cada arquitectura té els seus avantatges i desavantatges, i la seva elecció depèn de la naturalesa del problema a resoldre. Hem proporcionat exemples pràctics de codi per ajudar a comprendre com implementar aquestes arquitectures utilitzant TensorFlow i Keras. En la següent secció, aprofundirem en les aplicacions del Deep Learning i com aquestes arquitectures poden ser utilitzades en el món real.
Fonaments d'Intel·ligència Artificial (IA)
Mòdul 1: Introducció a la Intel·ligència Artificial
Mòdul 2: Principis Bàsics de la IA
Mòdul 3: Algoritmes en IA
Mòdul 4: Aprenentatge Automàtic (Machine Learning)
- Conceptes Bàsics de Machine Learning
- Tipus d'Aprenentatge Automàtic
- Algoritmes de Machine Learning
- Avaluació i Validació de Models
Mòdul 5: Xarxes Neuronals i Deep Learning
- Introducció a les Xarxes Neuronals
- Arquitectura de Xarxes Neuronals
- Deep Learning i les seves Aplicacions