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:

  1. Pesos i Bias: Cada connexió entre neurones té un pes associat, i cada neurona té un valor de bias.
  2. 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ó:

  1. Càlcul de l'Error: Es calcula l'error entre la sortida prevista i la sortida real.
  2. 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

import tensorflow as tf
from tensorflow.keras import layers, models

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

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

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

  1. Carregar les dades MNIST.
  2. Preprocessar les dades: Normalitzar les imatges i convertir les etiquetes a one-hot encoding.
  3. Construir el model: Utilitzar capes convolucionals i denses.
  4. Entrenar el model.
  5. 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

Mòdul 2: Fonaments d'Estadística i Probabilitat

Mòdul 3: Preprocessament de Dades

Mòdul 4: Algoritmes de Machine Learning Supervisat

Mòdul 5: Algoritmes de Machine Learning No Supervisat

Mòdul 6: Avaluació i Validació de Models

Mòdul 7: Tècniques Avançades i Optimització

Mòdul 8: Implementació i Desplegament de Models

Mòdul 9: Projectes Pràctics

Mòdul 10: Recursos Addicionals

© Copyright 2024. Tots els drets reservats