Introducció
Les funcions d'activació són components essencials en les xarxes neuronals, ja que introdueixen no-linealitat en el model, permetent que la xarxa aprengui relacions complexes entre les dades d'entrada i sortida. Sense funcions d'activació, una xarxa neuronal seria simplement una combinació lineal de les seves entrades, limitant la seva capacitat per resoldre problemes complexos.
Tipus de Funcions d'Activació
- Sigmoide
La funció sigmoide és una de les funcions d'activació més antigues i es defineix com:
\[ \sigma(x) = \frac{1}{1 + e^{-x}} \]
Característiques:
- Sortida en el rang (0, 1).
- Bona per a problemes de classificació binària.
- Problemes de gradient desaparegut en xarxes profundes.
Exemple en Python:
import numpy as np def sigmoid(x): return 1 / (1 + np.exp(-x)) # Exemple d'ús x = np.array([-1.0, 0.0, 1.0]) print(sigmoid(x))
- Tanh (Tangens hiperbòlic)
La funció tanh és una altra funció d'activació popular, definida com:
\[ \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} \]
Característiques:
- Sortida en el rang (-1, 1).
- Sovint preferida sobre la sigmoide perquè la seva sortida està centrada en zero.
- També pateix del problema de gradient desaparegut.
Exemple en Python:
- ReLU (Rectified Linear Unit)
La funció ReLU és actualment una de les funcions d'activació més utilitzades:
\[ \text{ReLU}(x) = \max(0, x) \]
Característiques:
- Introduïda per primera vegada en 2011.
- No pateix del problema de gradient desaparegut com la sigmoide i tanh.
- Pot patir del problema de "neurones mortes" si moltes sortides són zero.
Exemple en Python:
- Leaky ReLU
La funció Leaky ReLU és una variant de la ReLU que intenta solucionar el problema de les "neurones mortes":
\[ \text{Leaky ReLU}(x) = \begin{cases}
x & \text{si } x > 0
\alpha x & \text{si } x \leq 0
\end{cases} \]
On \(\alpha\) és un petit valor positiu (per exemple, 0.01).
Característiques:
- Permet un petit gradient quan l'entrada és negativa.
- Redueix el risc de neurones mortes.
Exemple en Python:
def leaky_relu(x, alpha=0.01): return np.where(x > 0, x, alpha * x) # Exemple d'ús x = np.array([-1.0, 0.0, 1.0]) print(leaky_relu(x))
- Softmax
La funció softmax es fa servir principalment en la capa de sortida per a problemes de classificació multiclasse:
\[ \text{softmax}(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}} \]
Característiques:
- Converteix un vector de valors en una distribució de probabilitats.
- La suma de les sortides és 1.
Exemple en Python:
def softmax(x): e_x = np.exp(x - np.max(x)) return e_x / e_x.sum(axis=0) # Exemple d'ús x = np.array([1.0, 2.0, 3.0]) print(softmax(x))
Exercicis Pràctics
Exercici 1: Implementació de Funcions d'Activació
Implementa les funcions d'activació següents en Python: Sigmoide, Tanh, ReLU, Leaky ReLU i Softmax. Prova-les amb un conjunt de dades d'exemple.
Exercici 2: Comparació de Funcions d'Activació
Crea un gràfic que compari les sortides de les funcions d'activació Sigmoide, Tanh, ReLU i Leaky ReLU per a valors d'entrada en el rang [-10, 10].
Solució:
import matplotlib.pyplot as plt x = np.linspace(-10, 10, 100) plt.plot(x, sigmoid(x), label='Sigmoid') plt.plot(x, tanh(x), label='Tanh') plt.plot(x, relu(x), label='ReLU') plt.plot(x, leaky_relu(x), label='Leaky ReLU') plt.legend() plt.xlabel('Input') plt.ylabel('Output') plt.title('Comparació de Funcions d\'Activació') plt.show()
Conclusió
Les funcions d'activació són crucials per a les xarxes neuronals, ja que introdueixen no-linealitat i permeten que el model aprengui patrons complexos. Cada funció té els seus avantatges i inconvenients, i la selecció de la funció d'activació adequada pot dependre del problema específic que s'està intentant resoldre.
Curs de Deep Learning
Mòdul 1: Introducció a Deep Learning
- Què és Deep Learning?
- Història i evolució del Deep Learning
- Aplicacions de Deep Learning
- Conceptes bàsics de xarxes neuronals
Mòdul 2: Fonaments de Xarxes Neuronals
- Perceptró i Perceptró Multicapa
- Funció d'activació
- Propagació cap endavant i cap enrere
- Optimització i funció de pèrdua
Mòdul 3: Xarxes Neuronals Convolucionals (CNN)
- Introducció a les CNN
- Capes convolutionals i de pooling
- Arquitectures populars de CNN
- Aplicacions de CNN en reconeixement d'imatges
Mòdul 4: Xarxes Neuronals Recurrentes (RNN)
- Introducció a les RNN
- LSTM i GRU
- Aplicacions de RNN en processament del llenguatge natural
- Seqüències i sèries temporals
Mòdul 5: Tècniques Avançades en Deep Learning
- Xarxes Generatives Adversarials (GAN)
- Autoencoders
- Transfer Learning
- Regularització i tècniques de millora
Mòdul 6: Eines i Frameworks
- Introducció a TensorFlow
- Introducció a PyTorch
- Comparació de frameworks
- Entorns de desenvolupament i recursos addicionals
Mòdul 7: Projectes Pràctics
- Classificació d'imatges amb CNN
- Generació de text amb RNN
- Detecció d'anomalies amb Autoencoders
- Creació d'una GAN per generació d'imatges