Introducció al Deep Learning
El Deep Learning és una subàrea del Machine Learning que es basa en l'ús de xarxes neuronals artificials amb múltiples capes (d'aquí el terme "profund"). Aquestes xarxes són capaces d'aprendre representacions jeràrquiques de les dades, el que les fa especialment efectives en tasques complexes com el reconeixement d'imatges, la traducció automàtica i el processament del llenguatge natural.
Conceptes Clau
Xarxa Neuronal Artificial (ANN)
Una ANN és un model computacional inspirat en la xarxa de neurones del cervell humà. Consta de neurones artificials (nodes) organitzades en capes:
- Capa d'entrada: Rep les dades d'entrada.
- Capes ocultes: Processen les dades a través de múltiples transformacions.
- Capa de sortida: Proporciona el resultat final.
Neurona Artificial
Cada neurona artificial realitza una operació matemàtica simple:
- Pesos i Bias: Cada connexió entre neurones té un pes associat, i cada neurona té un valor de bias.
- Funció d'Activació: Transforma la suma ponderada de les entrades en una sortida no lineal.
Funcions d'Activació
Les funcions d'activació introdueixen no-linealitat en el model, permetent que la xarxa neuronal aprengui relacions complexes. Algunes de les funcions d'activació més comunes són:
- ReLU (Rectified Linear Unit):
f(x) = max(0, x)
- Sigmoid:
f(x) = 1 / (1 + e^(-x))
- Tanh:
f(x) = (e^x - e^(-x)) / (e^x + e^(-x))
Propagació cap endavant (Forward Propagation)
És el procés pel qual les dades d'entrada passen a través de la xarxa, capa per capa, fins a arribar a la capa de sortida.
Propagació cap enrere (Backpropagation)
És l'algorisme utilitzat per entrenar la xarxa neuronal. Consisteix en ajustar els pesos i els bias per minimitzar l'error de predicció:
- Càlcul de l'Error: Es calcula l'error entre la sortida prevista i la sortida real.
- Gradient Descent: S'utilitza per actualitzar els pesos i els bias en la direcció que minimitza l'error.
Arquitectures de Xarxes Neuronals Profundes
Xarxes Neuronals Convolucionals (CNN)
Són especialment efectives en el processament d'imatges. Utilitzen convolucions per extreure característiques espacials de les imatges.
- Capas Convolucionals: Apliquen filtres per detectar característiques com vores, textures, etc.
- Capas de Pooling: Redueixen la dimensionalitat de les característiques extretes.
Xarxes Neuronals Recurrents (RNN)
Són adequades per a dades seqüencials com el text i les sèries temporals. Tenen connexions recurrents que permeten mantenir informació de passos anteriors.
- LSTM (Long Short-Term Memory): Una variant de les RNN que pot aprendre dependències a llarg termini.
- GRU (Gated Recurrent Unit): Una altra variant que simplifica l'estructura de les LSTM.
Exemple Pràctic: Classificació d'Imatges amb CNN
Importació de Llibreries
Construcció del Model
model = models.Sequential() model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1))) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation='relu')) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation='relu')) model.add(layers.Flatten()) model.add(layers.Dense(64, activation='relu')) model.add(layers.Dense(10, activation='softmax'))
Compilació del Model
Entrenament del Model
# Suposant que les dades d'entrenament i validació estan disponibles model.fit(train_images, train_labels, epochs=5, validation_data=(test_images, test_labels))
Avaluació del Model
test_loss, test_acc = model.evaluate(test_images, test_labels) print(f"Precisió en el conjunt de prova: {test_acc}")
Exercici Pràctic
Objectiu
Construir una xarxa neuronal profunda per classificar imatges del conjunt de dades MNIST.
Passos
- Carregar les dades MNIST.
- Preprocessar les dades: Normalitzar les imatges i convertir les etiquetes a one-hot encoding.
- Construir el model: Utilitzar capes convolucionals i denses.
- Entrenar el model.
- Avaluar el model.
Solució
import tensorflow as tf from tensorflow.keras import layers, models from tensorflow.keras.datasets import mnist # Carregar les dades (train_images, train_labels), (test_images, test_labels) = mnist.load_data() # Preprocessar les dades train_images = train_images.reshape((60000, 28, 28, 1)).astype('float32') / 255 test_images = test_images.reshape((10000, 28, 28, 1)).astype('float32') / 255 # Construir el model model = models.Sequential() model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1))) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation='relu')) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation='relu')) model.add(layers.Flatten()) model.add(layers.Dense(64, activation='relu')) model.add(layers.Dense(10, activation='softmax')) # Compilar el model model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) # Entrenar el model model.fit(train_images, train_labels, epochs=5, validation_data=(test_images, test_labels)) # Avaluar el model test_loss, test_acc = model.evaluate(test_images, test_labels) print(f"Precisió en el conjunt de prova: {test_acc}")
Errors Comuns i Consells
- Overfitting: Si el model té una precisió molt alta en l'entrenament però baixa en la validació, pot estar sobreajustant-se. Prova amb tècniques com la regularització, el dropout o l'augment de dades.
- Elecció de la Funció d'Activació: Assegura't d'utilitzar funcions d'activació adequades per a cada capa. Per exemple, ReLU és una bona opció per a capes ocultes, mentre que Softmax és adequada per a la capa de sortida en classificació multiclasse.
- Normalització de les Dades: Sempre normalitza les dades d'entrada per millorar la convergència del model.
Resum
En aquesta secció, hem explorat els conceptes fonamentals del Deep Learning, incloent les xarxes neuronals artificials, les funcions d'activació i els algorismes de propagació cap endavant i cap enrere. També hem vist diferents arquitectures de xarxes neuronals profundes com les CNN i les RNN, i hem implementat un exemple pràctic de classificació d'imatges utilitzant una CNN. Finalment, hem proporcionat un exercici pràctic per reforçar els conceptes apresos.
Curs de Machine Learning
Mòdul 1: Introducció al Machine Learning
- Què és el Machine Learning?
- Història i evolució del Machine Learning
- Tipus de Machine Learning
- Aplicacions del Machine Learning
Mòdul 2: Fonaments d'Estadística i Probabilitat
- Conceptes bàsics d'estadística
- Distribucions de probabilitat
- Inferència estadística
- Teorema de Bayes
Mòdul 3: Preprocessament de Dades
Mòdul 4: Algoritmes de Machine Learning Supervisat
- Regressió lineal
- Regressió logística
- Arbres de decisió
- Màquines de suport vectorial (SVM)
- K-Veïns més propers (K-NN)
- Xarxes neuronals
Mòdul 5: Algoritmes de Machine Learning No Supervisat
- Clustering: K-means
- Clustering jeràrquic
- Anàlisi de components principals (PCA)
- Anàlisi d'agrupament DBSCAN
Mòdul 6: Avaluació i Validació de Models
Mòdul 7: Tècniques Avançades i Optimització
- Ensemble Learning
- Gradient Boosting
- Xarxes neuronals profundes (Deep Learning)
- Optimització d'hiperparàmetres
Mòdul 8: Implementació i Desplegament de Models
- Frameworks i biblioteques populars
- Implementació de models en producció
- Manteniment i monitoratge de models
- Consideracions ètiques i de privacitat
Mòdul 9: Projectes Pràctics
- Projecte 1: Predicció de preus d'habitatges
- Projecte 2: Classificació d'imatges
- Projecte 3: Anàlisi de sentiments a xarxes socials
- Projecte 4: Detecció de fraus