Les xarxes neuronals són un component fonamental de la intel·ligència artificial moderna, especialment en el camp del deep learning. Aquestes estructures estan inspirades en el funcionament del cervell humà i són capaces d'aprendre i generalitzar a partir de dades. En aquesta secció, explorarem els conceptes bàsics de les xarxes neuronals, la seva estructura i el seu funcionament.

  1. Què són les Xarxes Neuronals?

Les xarxes neuronals són models computacionals que imiten la manera en què les neurones del cervell humà processen la informació. Estan formades per capes de neurones artificials, també conegudes com a nodes, que estan connectades entre si.

Conceptes Clau:

  • Neurona Artificial: La unitat bàsica d'una xarxa neuronal. Cada neurona rep entrades, les processa i genera una sortida.
  • Capa: Les neurones estan organitzades en capes. Hi ha tres tipus principals de capes:
    • Capa d'Entrada: Rep les dades d'entrada.
    • Capa Oculta: Processa les dades. Pot haver-hi múltiples capes ocultes.
    • Capa de Sortida: Genera la sortida final del model.
  • Pesos: Els pesos determinen la importància de cada entrada a una neurona. Són ajustats durant l'entrenament.
  • Funció d'Activació: Determina si una neurona ha de ser activada o no. Algunes funcions d'activació comunes són ReLU, Sigmoid i Tanh.

  1. Estructura d'una Xarxa Neuronal

Una xarxa neuronal típica consta de diverses capes de neurones, cadascuna de les quals està connectada a la següent capa. A continuació, es mostra un exemple d'una xarxa neuronal amb una capa d'entrada, dues capes ocultes i una capa de sortida:

Entrada -> Capa Oculta 1 -> Capa Oculta 2 -> Sortida

Exemple de Codi:

A continuació, es mostra un exemple senzill de com crear una xarxa neuronal utilitzant la llibreria Keras en Python:

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

# Crear el model
model = Sequential()

# Afegir la capa d'entrada i la primera capa oculta
model.add(Dense(units=64, activation='relu', input_shape=(input_dim,)))

# Afegir la segona capa oculta
model.add(Dense(units=64, activation='relu'))

# Afegir la capa de sortida
model.add(Dense(units=output_dim, activation='softmax'))

# Compilar el model
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# Resum del model
model.summary()

Explicació del Codi:

  • Sequential: Crea un model seqüencial, que és una pila lineal de capes.
  • Dense: Afegeix una capa densament connectada (fully connected).
  • units: Nombre de neurones en la capa.
  • activation: Funció d'activació utilitzada per la capa.
  • input_shape: Forma de les dades d'entrada (necessària només per la primera capa).
  • compile: Configura el model per a l'entrenament.
  • summary: Mostra un resum de l'arquitectura del model.

  1. Funcionament d'una Xarxa Neuronal

El procés d'aprenentatge d'una xarxa neuronal implica els següents passos:

  1. Inicialització: Els pesos de les connexions entre neurones es inicialitzen amb valors aleatoris.
  2. Propagació Endavant (Forward Propagation): Les dades d'entrada es passen a través de la xarxa capa per capa fins a obtenir la sortida.
  3. Càlcul de la Pèrdua: Es calcula l'error o pèrdua comparant la sortida de la xarxa amb la sortida desitjada.
  4. Propagació Enrere (Backpropagation): L'error es propaga enrere a través de la xarxa per ajustar els pesos.
  5. Actualització dels Pesos: Els pesos es modifiquen utilitzant un algorisme d'optimització (com l'Adam o el Gradient Descent) per minimitzar l'error.

Aquest procés es repeteix moltes vegades (epochs) fins que la xarxa neuronal aprèn a realitzar la tasca desitjada amb una precisió acceptable.

  1. Aplicacions de les Xarxes Neuronals

Les xarxes neuronals tenen una àmplia gamma d'aplicacions en diversos camps, incloent:

  • Reconeixement d'Imatges: Classificació d'imatges, detecció d'objectes, segmentació d'imatges.
  • Processament de Llenguatge Natural (NLP): Traducció automàtica, anàlisi de sentiments, generació de text.
  • Jocs i Simulacions: Agents intel·ligents per a jocs, simulacions de sistemes complexos.
  • Salut: Diagnòstic de malalties, anàlisi d'imatges mèdiques, predicció de resultats clínics.

Exercici Pràctic

Exercici:

Crea una xarxa neuronal utilitzant Keras per classificar el conjunt de dades MNIST (dígits manuscrits).

Solució:

import tensorflow as tf
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
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 / 255.0
x_test = x_test / 255.0
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

# Crear el model
model = Sequential()
model.add(Flatten(input_shape=(28, 28)))
model.add(Dense(units=128, activation='relu'))
model.add(Dense(units=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_data=(x_test, y_test))

# Avaluar el model
loss, accuracy = model.evaluate(x_test, y_test)
print(f'Loss: {loss}, Accuracy: {accuracy}')

Explicació del Codi:

  • mnist.load_data(): Carrega el conjunt de dades MNIST.
  • Flatten: Converteix les imatges 2D en vectors 1D.
  • Dense: Afegeix capes densament connectades.
  • to_categorical: Converteix les etiquetes en vectors one-hot.
  • fit: Entrena el model.
  • evaluate: Avalua el model amb les dades de test.

Conclusió

En aquesta secció, hem introduït els conceptes bàsics de les xarxes neuronals, la seva estructura i el seu funcionament. També hem vist un exemple pràctic de com crear i entrenar una xarxa neuronal utilitzant la llibreria Keras. Les xarxes neuronals són una eina poderosa en el camp de la intel·ligència artificial i tenen una àmplia gamma d'aplicacions en diversos camps. En les properes seccions, explorarem més a fons les arquitectures de xarxes neuronals i les seves aplicacions en el deep learning.

© Copyright 2024. Tots els drets reservats