Introducció

Les xarxes neuronals són un tipus d'algorisme de machine learning inspirat en la manera en què funciona el cervell humà. Aquestes xarxes estan compostes per capes de neurones artificials que processen la informació i aprenen patrons complexos a partir de les dades.

Conceptes Clau

Neurona Artificial

  • Pesos (Weights): Cada connexió entre neurones té un pes associat que determina la importància de la connexió.
  • Biaix (Bias): Un valor addicional que s'afegeix a la suma ponderada de les entrades per ajustar la sortida.
  • Funció d'Activació (Activation Function): Una funció que transforma la sortida de la neurona en un valor no lineal. Exemples comuns són la funció sigmoide, ReLU (Rectified Linear Unit), i tanh.

Arquitectura de la Xarxa

  • Capa d'Entrada (Input Layer): La primera capa que rep les dades d'entrada.
  • Capes Ocultes (Hidden Layers): Capes intermèdies que processen les dades. El nombre de capes ocultes i el nombre de neurones per capa poden variar.
  • Capa de Sortida (Output Layer): L'última capa que produeix la sortida final de la xarxa.

Tipus de Xarxes Neuronals

  • Perceptró Multicapa (MLP): Una xarxa amb múltiples capes ocultes.
  • Xarxes Neuronals Convolucionals (CNN): Utilitzades principalment per al processament d'imatges.
  • Xarxes Neuronals Recurrents (RNN): Utilitzades per a dades seqüencials com el text i les sèries temporals.

Exemples Pràctics

Exemple 1: Implementació d'un Perceptró Multicapa (MLP) amb Python

import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import accuracy_score

# Carregar el conjunt de dades Iris
iris = load_iris()
X = iris.data
y = iris.target

# Dividir el conjunt de dades en entrenament i prova
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Estandarditzar les dades
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# Crear i entrenar el model MLP
mlp = MLPClassifier(hidden_layer_sizes=(10, 10), max_iter=1000, random_state=42)
mlp.fit(X_train, y_train)

# Predir i avaluar el model
y_pred = mlp.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')

Explicació del Codi

  1. Carregar el conjunt de dades: Utilitzem el conjunt de dades Iris per a la classificació.
  2. Dividir el conjunt de dades: Separem les dades en conjunts d'entrenament i prova.
  3. Estandarditzar les dades: Normalitzem les dades perquè tinguin una distribució amb mitjana 0 i desviació estàndard 1.
  4. Crear i entrenar el model: Utilitzem MLPClassifier de sklearn amb dues capes ocultes de 10 neurones cadascuna.
  5. Predir i avaluar el model: Prediem les etiquetes del conjunt de prova i calculem l'exactitud del model.

Exercici Pràctic

Exercici 1: Implementar una Xarxa Neuronal Convolucional (CNN) per a la Classificació d'Imatges

Descripció

Implementa una xarxa neuronal convolucional per a la classificació d'imatges utilitzant el conjunt de dades MNIST, que conté imatges de dígits escrits a mà.

Instruccions

  1. Carrega el conjunt de dades MNIST.
  2. Preprocessa les dades per normalitzar-les.
  3. Crea una xarxa CNN amb les següents capes:
    • Capa convolucional amb 32 filtres i una mida de filtre de 3x3.
    • Capa d'activació ReLU.
    • Capa de max-pooling amb una mida de 2x2.
    • Capa convolucional amb 64 filtres i una mida de filtre de 3x3.
    • Capa d'activació ReLU.
    • Capa de max-pooling amb una mida de 2x2.
    • Capa d'aplanament (flatten).
    • Capa densa amb 128 neurones i activació ReLU.
    • Capa de sortida amb 10 neurones i activació softmax.
  4. Entrena la xarxa amb les dades d'entrenament.
  5. Avalua el model amb les dades de prova.

Solució

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 conjunt de dades MNIST
(X_train, y_train), (X_test, y_test) = mnist.load_data()

# Preprocessar les dades
X_train = X_train.reshape(-1, 28, 28, 1).astype('float32') / 255
X_test = X_test.reshape(-1, 28, 28, 1).astype('float32') / 255
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

# Crear el model CNN
model = Sequential([
    Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
    MaxPooling2D((2, 2)),
    Conv2D(64, (3, 3), activation='relu'),
    MaxPooling2D((2, 2)),
    Flatten(),
    Dense(128, activation='relu'),
    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=32, validation_split=0.2)

# Avaluar el model
test_loss, test_acc = model.evaluate(X_test, y_test)
print(f'Test accuracy: {test_acc:.2f}')

Explicació del Codi

  1. Carregar el conjunt de dades: Utilitzem el conjunt de dades MNIST.
  2. Preprocessar les dades: Redimensionem i normalitzem les imatges, i convertim les etiquetes a una codificació one-hot.
  3. Crear el model CNN: Definim una xarxa convolucional amb capes convolucionals, capes d'activació ReLU, capes de max-pooling, una capa d'aplanament, i capes denses.
  4. Compilar el model: Utilitzem l'optimitzador Adam i la pèrdua de categorització creuada.
  5. Entrenar el model: Entrenem el model amb les dades d'entrenament.
  6. Avaluar el model: Avaluem el model amb les dades de prova i imprimim l'exactitud.

Conclusió

Les xarxes neuronals són una eina poderosa per a la resolució de problemes complexos en machine learning. Amb una comprensió bàsica de les seves components i arquitectures, es poden aplicar a una àmplia varietat de tasques, des de la classificació d'imatges fins a la predicció de sèries temporals. Els exercicis pràctics proporcionats ajuden a consolidar els conceptes apresos i a desenvolupar habilitats pràctiques en la implementació de xarxes neuronals.

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