Índice analítico[Ocultar][Mostrar]
Nos últimos anos, as redes neuronais creceron en popularidade xa que demostraron ser moi boas nunha ampla gama de tarefas.
Demostrouse que son unha excelente opción para o recoñecemento de imaxes e audio, o procesamento da linguaxe natural e incluso para xogar a xogos complicados como Go e xadrez.
Neste post, explicareivos todo o proceso de adestramento dunha rede neuronal. Mencionarei e explicarei todos os pasos para adestrar unha rede neuronal.
Aínda que vou repasar os pasos, gustaríame engadir un exemplo sinxelo para asegurarme de que tamén hai un exemplo práctico.
Entón, veña e imos aprender a procesar redes neuronais
Imos comezar sinxelo e preguntar cales son redes neuronales en primeiro lugar.
Que son exactamente as redes neuronais?
As redes neuronais son programas informáticos que simulan o funcionamento do cerebro humano. Poden aprender de grandes volumes de datos e detectar patróns que ás persoas poden resultar difíciles de detectar.
As redes neuronais creceron en popularidade nos últimos anos pola súa versatilidade en tarefas como o recoñecemento de imaxes e audio, o procesamento da linguaxe natural e o modelado preditivo.
En xeral, as redes neuronais son unha ferramenta sólida para unha ampla gama de aplicacións e teñen a oportunidade de transformar a forma en que abordamos unha ampla gama de traballos.
Por que debemos saber sobre eles?
Comprender as redes neuronais é fundamental porque levaron a descubrimentos en diversos campos, incluíndo a visión por ordenador, o recoñecemento da voz e o procesamento da linguaxe natural.
As redes neuronais, por exemplo, están no centro dos desenvolvementos recentes en coches autónomos, servizos de tradución automática e mesmo diagnósticos médicos.
Comprender como funcionan as redes neuronais e como deseñalas axúdanos a crear aplicacións novas e inventivas. E, quizais, pode levar a descubrimentos aínda maiores no futuro.
Unha nota sobre o titorial
Como dixen anteriormente, gustaríame explicar os pasos para adestrar unha rede neuronal poñendo un exemplo. Para iso, deberíamos falar do conxunto de datos MNIST. É unha opción popular para os principiantes que queren comezar coas redes neuronais.
MNIST é un acrónimo que significa Instituto Nacional Modificado de Estándares e Tecnoloxía. É un conxunto de datos de díxitos escritos a man que se usa habitualmente para adestrar e probar modelos de aprendizaxe automática, especialmente redes neuronais.
A colección contén 70,000 fotos en escala de grises de números escritos a man que van do 0 ao 9.
O conxunto de datos MNIST é unha referencia popular para clasificación de imaxes tarefas. Utilízase con frecuencia para ensinar e aprender, xa que é compacto e fácil de manexar, aínda que supón un desafío difícil de responder aos algoritmos de aprendizaxe automática.
O conxunto de datos MNIST é compatible con varios marcos e bibliotecas de aprendizaxe automática, incluíndo TensorFlow, Keras e PyTorch.
Agora que coñecemos o conxunto de datos MNIST, imos comezar cos nosos pasos para adestrar unha rede neuronal.
Pasos básicos para adestrar unha rede neuronal
Importar as bibliotecas necesarias
Cando se comeza a adestrar unha rede neuronal por primeira vez, é fundamental contar coas ferramentas necesarias para deseñar e adestrar o modelo. O paso inicial para crear unha rede neuronal é importar bibliotecas necesarias como TensorFlow, Keras e NumPy.
Estas bibliotecas serven como bloques de construción para o desenvolvemento da rede neuronal e proporcionan capacidades cruciais. A combinación destas bibliotecas permite a creación de deseños sofisticados de redes neuronais e un adestramento rápido.
Para comezar o noso exemplo; importaremos as bibliotecas necesarias, que inclúen TensorFlow, Keras e NumPy. TensorFlow é un marco de aprendizaxe automática de código aberto, Keras é unha API de rede neuronal de alto nivel e NumPy é unha biblioteca Python de computación numérica.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Carga o conxunto de datos
Agora debe cargarse o conxunto de datos. O conxunto de datos é o conxunto de datos sobre os que se adestrará a rede neuronal. Este pode ser calquera tipo de datos, incluíndo fotos, audio e texto.
É fundamental dividir o conxunto de datos en dúas partes: unha para adestrar a rede neuronal e outra para avaliar a corrección do modelo adestrado. Pódense usar varias bibliotecas, incluíndo TensorFlow, Keras e PyTorch, para importar o conxunto de datos.
Para o noso exemplo, tamén usamos Keras para cargar o conxunto de datos MNIST. Hai 60,000 fotos de adestramento e 10,000 imaxes de proba no conxunto de datos.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Preprocesar os datos
O preprocesamento de datos é unha etapa importante na formación dunha rede neuronal. Implica preparar e limpar os datos antes de que se introduzan na rede neuronal.
A escala de valores de píxeles, a normalización de datos e a conversión de etiquetas a unha codificación única son exemplos de procedementos de preprocesamento. Estes procesos axudan á rede neuronal a aprender de forma máis efectiva e precisa.
O preprocesamento dos datos tamén pode axudar a minimizar o sobreajuste e mellorar o rendemento da rede neuronal.
Debes preprocesar os datos antes de adestrar a rede neuronal. Isto inclúe cambiar as etiquetas a unha codificación única e escalar os valores de píxeles para que estean entre 0 e 1.
train_images = train_images / 255.0
test_images = test_images / 255.0
train_labels = keras.utils.to_categorical(train_labels, 10)
test_labels = keras.utils.to_categorical(test_labels, 10)
Definir o modelo
O proceso de definición do modelo de rede neuronal implica establecer a súa arquitectura, como o número de capas, o número de neuronas por capa, as funcións de activación e o tipo de rede (feedforward, recorrente ou convolucional).
O deseño da rede neuronal que utilizas está determinado polo tipo de problema que intentas resolver. Un deseño de rede neuronal ben definido pode axudar na aprendizaxe da rede neuronal facéndoa máis eficiente e precisa.
É hora de describir o modelo de rede neuronal neste momento. Use un modelo sinxelo con dúas capas ocultas, cada unha con 128 neuronas, e unha capa de saída softmax, que ten 10 neuronas, para este exemplo.
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
Compilar o modelo
A función de perda, o optimizador e as métricas deben especificarse durante a compilación do modelo de rede neuronal. A capacidade da rede neuronal para prever correctamente a saída é medida pola función de perda.
Para aumentar a precisión da rede neuronal durante o adestramento, o optimizador modifica os seus pesos. A eficacia da rede neuronal durante o adestramento mídese mediante métricas. O modelo debe ser creado antes de poder adestrar a rede neuronal.
No noso exemplo, agora debemos construír o modelo.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Adestra o modelo
Coñécese como adestramento da rede neuronal pasar o conxunto de datos preparado pola rede neuronal mentres se modifican os pesos da rede para minimizar a función de perda.
O conxunto de datos de validación utilízase para probar a rede neuronal durante o adestramento para rastrexar a súa eficacia e evitar o sobreajuste. O proceso de adestramento pode levar algún tempo, polo que é importante asegurarse de que a rede neuronal estea adestrada adecuadamente para evitar unha subadaptación.
Usando os datos de adestramento, agora podemos adestrar o modelo. Para iso, debemos definir o tamaño do lote (o número de mostras procesadas antes de actualizar o modelo) e o número de épocas (o número de repeticións no conxunto de datos completo).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Avaliación do modelo
Probar o rendemento da rede neuronal no conxunto de datos de proba é o proceso de avalialo. Nesta fase, utilízase a rede neuronal adestrada para procesar o conxunto de datos de proba e avalíase a precisión.
A eficacia con que unha rede neuronal pode prever o resultado correcto a partir de datos novos e non probados é unha medida da súa precisión. A análise do modelo pode axudar a determinar o ben que está a funcionar a rede neuronal e tamén suxerir formas de facelo aínda mellor.
Finalmente podemos avaliar o rendemento do modelo utilizando os datos da proba despois do adestramento.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Iso é todo! Adestramos unha rede neuronal para detectar díxitos no conxunto de datos MNIST.
Desde a preparación dos datos ata a avaliación da eficacia do modelo adestrado, o adestramento dunha rede neuronal implica varios procesos. Estas instrucións axudan aos novatos a construír e adestrar redes neuronais de forma eficiente.
Os principiantes que queiran utilizar as redes neuronais para abordar varios problemas poden facelo seguindo estas instrucións.
Visualización do exemplo
Intentemos visualizar o que fixemos con este exemplo para entender mellor.
O paquete Matplotlib úsase neste fragmento de código para trazar unha selección aleatoria de fotos do conxunto de datos de adestramento. En primeiro lugar, importamos o módulo "pyplot" de Matplotlib e o alias como "plt". Despois, cunha dimensión total de 10 por 10 polgadas, facemos unha figura con 5 filas e 5 columnas de subtramas.
Despois, usamos un bucle for para iterar sobre as subtramas, mostrando unha imaxe do conxunto de datos de adestramento en cada unha. Para mostrar a imaxe, utilízase a función "imshow", coa opción "cmap" definida en "gris" para mostrar as fotos en escala de grises. O título de cada subtrama tamén se establece na etiqueta da imaxe asociada na colección.
Finalmente, usamos a función "mostrar" para mostrar as imaxes representadas na figura. Esta función permítenos avaliar visualmente unha mostra de fotos do conxunto de datos, o que pode axudarnos a comprender os datos e a identificar as posibles dúbidas.
import matplotlib.pyplot as plt
# Plot a random sample of images
fig, axes = plt.subplots(nrows=5, ncols=5, figsize=(10,10))
for i, ax in enumerate(axes.flat):
ax.imshow(train_images[i], cmap='gray')
ax.set_title(f"Label: {train_labels[i].argmax()}")
ax.axis('off')
plt.show()
Modelos importantes de redes neuronais
- Redes Neuronais Feedforward (FFNN): Un tipo sinxelo de rede neuronal na que a información viaxa só dun xeito, dende a capa de entrada ata a capa de saída a través dunha ou máis capas ocultas.
- Redes neuronais convolucionais (CNN): Unha rede neuronal que se usa habitualmente na detección e procesamento de imaxes. As CNN están destinadas a recoñecer e extraer funcións das imaxes automaticamente.
- Redes neuronais recorrentes (RNN): Unha rede neuronal que se usa habitualmente na detección e procesamento de imaxes. As CNN están destinadas a recoñecer e extraer funcións das imaxes automaticamente.
- Redes de memoria a longo prazo (LSTM): Unha forma de RNN creada para superar o problema dos gradientes que desaparecen nos RNN estándar. As dependencias a longo prazo dos datos secuenciais pódense capturar mellor cos LSTM.
- Codificadores automáticos: Rede neuronal de aprendizaxe non supervisada na que se ensina á rede a reproducir os seus datos de entrada na súa capa de saída. A compresión de datos, a detección de anomalías e a eliminación de ruído de imaxe poden realizarse con codificadores automáticos.
- Redes adversarias xerativas (GAN): Unha rede neuronal xerativa é unha forma de rede neuronal que se ensina a producir novos datos que sexan comparables a un conxunto de datos de adestramento. As GAN están formadas por dúas redes: unha rede xeradora que crea datos novos e unha rede discriminadora que avalía a calidade dos datos creados.
Conclusión, cales deberían ser os teus próximos pasos?
Explora varios recursos e cursos en liña para obter máis información sobre como adestrar unha rede neuronal. Traballar en proxectos ou exemplos é un método para coñecer mellor as redes neuronais.
Comeza con exemplos sinxelos como problemas de clasificación binaria ou tarefas de clasificación de imaxes, e despois vai a tarefas máis difíciles como o procesamento da linguaxe natural ou aprendizaxe de reforzo.
Traballar en proxectos axúdache a obter experiencia real e mellorar as túas habilidades de adestramento en redes neuronais.
Tamén podes unirte a grupos e foros de aprendizaxe automática e redes neuronais en liña para interactuar con outros estudantes e profesionais, compartir o teu traballo e recibir comentarios e axuda.
LSRS MONRAD-KROHN
⁶ĵGustaríame ver o programa Python para a minimización de erros. Nodos de selección especiais para cambios de peso na seguinte capa