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
- Carregar el conjunt de dades: Utilitzem el conjunt de dades Iris per a la classificació.
- Dividir el conjunt de dades: Separem les dades en conjunts d'entrenament i prova.
- Estandarditzar les dades: Normalitzem les dades perquè tinguin una distribució amb mitjana 0 i desviació estàndard 1.
- Crear i entrenar el model: Utilitzem
MLPClassifier
desklearn
amb dues capes ocultes de 10 neurones cadascuna. - 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
- Carrega el conjunt de dades MNIST.
- Preprocessa les dades per normalitzar-les.
- 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.
- Entrena la xarxa amb les dades d'entrenament.
- 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
- Carregar el conjunt de dades: Utilitzem el conjunt de dades MNIST.
- Preprocessar les dades: Redimensionem i normalitzem les imatges, i convertim les etiquetes a una codificació one-hot.
- 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.
- Compilar el model: Utilitzem l'optimitzador Adam i la pèrdua de categorització creuada.
- Entrenar el model: Entrenem el model amb les dades d'entrenament.
- 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
- 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