Introducció

En aquest tema, explorarem els fonaments del perceptró i el perceptró multicapa (MLP), que són els blocs bàsics de les xarxes neuronals. Entendre aquests conceptes és crucial per avançar en l'estudi de les xarxes neuronals més complexes.

Perceptró

Què és un Perceptró?

Un perceptró és la unitat bàsica d'una xarxa neuronal artificial. És un model matemàtic inspirat en les neurones biològiques. Un perceptró pren diverses entrades, les combina linealment i aplica una funció d'activació per produir una sortida.

Components del Perceptró

  1. Entrades (x1, x2, ..., xn): Els valors d'entrada que el perceptró processa.
  2. Peses (w1, w2, ..., wn): Els coeficients que multipliquen les entrades. Determinen la importància de cada entrada.
  3. Biaix (b): Un valor constant que s'afegeix a la combinació lineal de les entrades.
  4. Funció d'Activació (f): Una funció que transforma la combinació lineal de les entrades en la sortida.

Fórmula del Perceptró

La sortida d'un perceptró es calcula com:

\[ y = f\left(\sum_{i=1}^{n} w_i x_i + b\right) \]

Exemples de Funcions d'Activació

  • Funció escaló: Retorna 1 si l'entrada és positiva i 0 en cas contrari.
  • Funció sigmoide: Transforma l'entrada en un valor entre 0 i 1.
  • Funció ReLU (Rectified Linear Unit): Retorna l'entrada si és positiva, i 0 en cas contrari.

Exemple Pràctic

Considerem un perceptró amb dues entrades \(x_1\) i \(x_2\), amb peses \(w_1 = 0.5\) i \(w_2 = -0.6\), i un biaix \(b = 0.1\). Utilitzem una funció d'activació escaló.

def perceptron(x1, x2):
    w1, w2, b = 0.5, -0.6, 0.1
    linear_combination = w1 * x1 + w2 * x2 + b
    return 1 if linear_combination > 0 else 0

# Exemple d'ús
print(perceptron(1, 1))  # Sortida: 0
print(perceptron(2, -1)) # Sortida: 1

Perceptró Multicapa (MLP)

Què és un Perceptró Multicapa?

Un perceptró multicapa (MLP) és una xarxa neuronal composta per múltiples capes de perceptrons. Inclou una capa d'entrada, una o més capes ocultes i una capa de sortida.

Arquitectura del MLP

  1. Capa d'Entrada: Rep les dades d'entrada.
  2. Capes Ocultes: Processen les dades d'entrada a través de múltiples perceptrons. Cada capa oculta aplica una funció d'activació.
  3. Capa de Sortida: Genera la sortida final de la xarxa.

Propagació cap Endavant

En un MLP, les dades es propaguen des de la capa d'entrada fins a la capa de sortida passant per les capes ocultes. Cada capa aplica una combinació lineal de les entrades seguit d'una funció d'activació.

Exemple Pràctic

Considerem un MLP amb una capa d'entrada de dues neurones, una capa oculta de dues neurones i una capa de sortida d'una neurona. Utilitzem la funció d'activació sigmoide.

import numpy as np

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

def mlp(x1, x2):
    # Peses i biaixos de la capa oculta
    w11, w12, b1 = 0.5, -0.6, 0.1
    w21, w22, b2 = -0.3, 0.8, -0.2
    
    # Peses i biaix de la capa de sortida
    w_out1, w_out2, b_out = 0.7, -0.4, 0.2
    
    # Sortides de la capa oculta
    h1 = sigmoid(w11 * x1 + w12 * x2 + b1)
    h2 = sigmoid(w21 * x1 + w22 * x2 + b2)
    
    # Sortida de la capa de sortida
    output = sigmoid(w_out1 * h1 + w_out2 * h2 + b_out)
    
    return output

# Exemple d'ús
print(mlp(1, 1))  # Sortida: 0.645656
print(mlp(2, -1)) # Sortida: 0.668187

Exercicis Pràctics

Exercici 1: Implementar un Perceptró

Implementa un perceptró amb tres entrades \(x_1, x_2, x_3\), amb peses \(w_1 = 0.2\), \(w_2 = -0.4\), \(w_3 = 0.6\) i un biaix \(b = -0.1\). Utilitza una funció d'activació escaló.

def perceptron(x1, x2, x3):
    w1, w2, w3, b = 0.2, -0.4, 0.6, -0.1
    linear_combination = w1 * x1 + w2 * x2 + w3 * x3 + b
    return 1 if linear_combination > 0 else 0

# Exemple d'ús
print(perceptron(1, 0, 1))  # Esperat: 1
print(perceptron(0, 1, 0))  # Esperat: 0

Exercici 2: Implementar un MLP

Implementa un MLP amb una capa d'entrada de dues neurones, una capa oculta de tres neurones i una capa de sortida d'una neurona. Utilitza la funció d'activació sigmoide.

import numpy as np

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

def mlp(x1, x2):
    # Peses i biaixos de la capa oculta
    w11, w12, b1 = 0.5, -0.6, 0.1
    w21, w22, b2 = -0.3, 0.8, -0.2
    w31, w32, b3 = 0.2, 0.4, 0.3
    
    # Peses i biaix de la capa de sortida
    w_out1, w_out2, w_out3, b_out = 0.7, -0.4, 0.5, 0.2
    
    # Sortides de la capa oculta
    h1 = sigmoid(w11 * x1 + w12 * x2 + b1)
    h2 = sigmoid(w21 * x1 + w22 * x2 + b2)
    h3 = sigmoid(w31 * x1 + w32 * x2 + b3)
    
    # Sortida de la capa de sortida
    output = sigmoid(w_out1 * h1 + w_out2 * h2 + w_out3 * h3 + b_out)
    
    return output

# Exemple d'ús
print(mlp(1, 1))  # Esperat: 0.668187
print(mlp(2, -1)) # Esperat: 0.645656

Conclusió

En aquesta secció, hem après sobre el perceptró i el perceptró multicapa (MLP), que són els fonaments de les xarxes neuronals. Hem vist com es calculen les sortides d'aquestes unitats i hem implementat exemples pràctics per consolidar els conceptes. En el següent tema, explorarem les funcions d'activació en més detall.

© Copyright 2024. Tots els drets reservats