¿Qué son las redes neuronales?
Las redes neuronales, también conocidas como redes neuronales artificiales (RNA) o redes neuronales simuladas (SNN), son un subconjunto del aprendizaje automático y están en el corazón de los algoritmos de aprendizaje profundo. Su nombre y estructura están inspirados en el cerebro humano, imitando la forma en que las neuronas biológicas se señalan entre sí.
Las redes neuronales artificiales (RNA) están compuestas por un nodo de capas, que contiene una capa de entrada, una o más capas ocultas y una capa de salida. Cada nodo, o neurona artificial, se conecta a otro y tiene un peso y un umbral asociados. Si la salida de cualquier nodo individual está por encima del valor umbral especificado, ese nodo se activa, enviando datos a la siguiente capa de la red. En caso contrario, no se pasa ningún dato a la siguiente capa de la red.
Las redes neuronales se basan en datos de entrenamiento para aprender y mejorar su precisión con el tiempo. Sin embargo, una vez que estos algoritmos de aprendizaje se afinan en cuanto a precisión, son poderosas herramientas en la ciencia de la computación y la inteligencia artificial, permitiéndonos clasificar y agrupar datos a gran velocidad. Las tareas de reconocimiento del habla o de la imagen pueden llevar minutos frente a horas si se comparan con la identificación manual por parte de expertos humanos. Una de las redes neuronales más conocidas es el algoritmo de búsqueda de Google.
¿Cómo funcionan las redes neuronales?
Piense en cada nodo individual como su propio modelo de regresión lineal, compuesto por datos de entrada, pesos, un sesgo (o umbral) y una salida. La fórmula sería algo así:
Una vez determinada una capa de entrada, se asignan los pesos. Estos pesos ayudan a determinar la importancia de cualquier variable, siendo las más grandes las que contribuyen más significativamente a la salida en comparación con otras entradas. Todas las entradas se multiplican por sus respectivos pesos y se suman. Después, la salida pasa por una función de activación, que determina la salida. Si esa salida supera un umbral determinado, se «dispara» (o activa) el nodo, pasando los datos a la siguiente capa de la red. El resultado es que la salida de un nodo se convierte en la entrada del siguiente. Este proceso de paso de datos de una capa a la siguiente define a esta red neuronal como una red feedforward.
Desglosemos cómo podría ser un solo nodo utilizando valores binarios. Podemos aplicar este concepto a un ejemplo más tangible, como el de si deberías ir a hacer surf (Sí: 1, No: 0). La decisión de ir o no ir es nuestro resultado previsto, o y-hat. Supongamos que hay tres factores que influyen en tu decisión:
- ¿Son buenas las olas? (Sí: 1, No: 0)
- ¿Está la cola vacía? (Sí: 1, No: 0)
- ¿Ha habido recientemente un ataque de tiburón? (Sí: 0, No: 1)
Entonces, supongamos lo siguiente, dándonos las siguientes entradas:
- X1 = 1, ya que las olas están bombeando
- X2 = 0, ya que las multitudes están fuera
- X3 = 1, ya que no ha habido un ataque de tiburón reciente
- W1 = 5, ya que las grandes marejadas no vienen a menudo
- W2 = 2, ya que estás acostumbrado a las multitudes
- W3 = 4, ya que tienes miedo a los tiburones
- i representa el índice de la muestra,
- y-hat es el resultado predicho,
- y es el valor real, y
- m es el número de muestras.
Ahora, necesitamos asignar algunos pesos para determinar la importancia. Las ponderaciones más grandes significan que determinadas variables son de mayor importancia para la decisión o el resultado.
Por último, también asumiremos un valor de umbral de 3, que se traduciría en un valor de sesgo de -3. Con todas las distintas entradas, podemos empezar a enchufar valores en la fórmula para obtener la salida deseada.
Y-sombrero = (1*5) + (0*2) + (1*4) – 3 = 6
Si utilizamos la función de activación del principio de esta sección, podemos determinar que la salida de este nodo sería 1, ya que 6 es mayor que 0. En este caso, se iría a surfear; pero si ajustamos los pesos o el umbral, podemos conseguir diferentes resultados del modelo. Cuando observamos una decisión, como en el ejemplo anterior, podemos ver cómo una red neuronal podría tomar decisiones cada vez más complejas en función de la salida de las decisiones o capas anteriores.
En el ejemplo anterior, utilizamos perceptrones para ilustrar algunas de las matemáticas en juego aquí, pero las redes neuronales aprovechan las neuronas sigmoides, que se distinguen por tener valores entre 0 y 1. Dado que las redes neuronales se comportan de manera similar a los árboles de decisión, con datos en cascada de un nodo a otro, tener valores x entre 0 y 1 reducirá el impacto de cualquier cambio de una sola variable en la salida de cualquier nodo dado, y posteriormente, la salida de la red neuronal.
Cuando empecemos a pensar en casos de uso más prácticos para las redes neuronales, como el reconocimiento de imágenes o la clasificación, aprovecharemos el aprendizaje supervisado, o conjuntos de datos etiquetados, para entrenar el algoritmo. Al entrenar el modelo, querremos evaluar su precisión utilizando una función de coste (o pérdida). Esto también se conoce comúnmente como el error cuadrático medio (MSE). En la ecuación siguiente,
En definitiva, el objetivo es minimizar nuestra función de coste para asegurar la corrección del ajuste para cualquier observación dada. A medida que el modelo ajusta sus pesos y sesgos, utiliza la función de coste y el aprendizaje por refuerzo para alcanzar el punto de convergencia, o el mínimo local. El proceso por el que el algoritmo ajusta sus pesos es a través del descenso de gradiente, lo que permite al modelo determinar la dirección que debe tomar para reducir los errores (o minimizar la función de coste). Con cada ejemplo de entrenamiento, los parámetros del modelo se ajustan para converger gradualmente al mínimo.
Vea este artículo de IBM Developer para una explicación más profunda de los conceptos cuantitativos involucrados en las redes neuronales.
La mayoría de las redes neuronales profundas son feedforward, lo que significa que fluyen en una sola dirección, de la entrada a la salida. Sin embargo, también se puede entrenar el modelo a través de la retropropagación; es decir, moverse en la dirección opuesta de la salida a la entrada. La retropropagación nos permite calcular y atribuir el error asociado a cada neurona, lo que nos permite ajustar y encajar adecuadamente los parámetros del modelo o modelos.
Tipos de redes neuronales
Las redes neuronales se pueden clasificar en diferentes tipos, que se utilizan para diferentes propósitos. Si bien esta no es una lista exhaustiva de tipos, la siguiente sería representativa de los tipos más comunes de redes neuronales que te encontrarás para sus casos de uso habituales:
El perceptrón es la red neuronal más antigua, creada por Frank Rosenblatt en 1958. Tiene una sola neurona y es la forma más simple de una red neuronal:
Las redes neuronales de entrada, o perceptrones multicapa (MLP), son en las que nos hemos centrado principalmente en este artículo. Están compuestas por una capa de entrada, una o varias capas ocultas y una capa de salida. Aunque estas redes neuronales también se denominan comúnmente MLP, es importante señalar que en realidad están compuestas por neuronas sigmoides, no por perceptrones, ya que la mayoría de los problemas del mundo real son no lineales. Los datos suelen introducirse en estos modelos para entrenarlos, y son la base de la visión por ordenador, el procesamiento del lenguaje natural y otras redes neuronales.
Las redes neuronales evolutivas (CNN) son similares a las redes feedforward, pero suelen utilizarse para el reconocimiento de imágenes, el reconocimiento de patrones y/o la visión por ordenador. Estas redes aprovechan los principios del álgebra lineal, especialmente la multiplicación de matrices, para identificar patrones dentro de una imagen.
Las redes neuronales recurrentes (RNN) se identifican por sus bucles de retroalimentación. Estos algoritmos de aprendizaje se aprovechan principalmente cuando se utilizan datos de series temporales para hacer predicciones sobre resultados futuros, como las predicciones del mercado de valores o la previsión de ventas.
Redes neuronales frente a aprendizaje profundo
El aprendizaje profundo y las redes neuronales tienden a utilizarse indistintamente en la conversación, lo que puede resultar confuso. Como resultado, vale la pena señalar que el «profundo» en el aprendizaje profundo sólo se refiere a la profundidad de las capas en una red neuronal. Una red neuronal que consta de más de tres capas -que incluiría las entradas y la salida- puede considerarse un algoritmo de aprendizaje profundo. Una red neuronal que solo tiene dos o tres capas es solo una red neuronal básica.
Para saber más sobre las diferencias entre las redes neuronales y otras formas de inteligencia artificial, como el aprendizaje automático, lee la entrada del blog «IA vs. Aprendizaje automático vs. Aprendizaje profundo vs. Redes neuronales: ¿Cuál es la diferencia?»
Historia de las redes neuronales
La historia de las redes neuronales es más larga de lo que la mayoría de la gente piensa. Aunque la idea de «una máquina que piensa» se remonta a los antiguos griegos, nos centraremos en los acontecimientos clave que llevaron a la evolución del pensamiento en torno a las redes neuronales, cuya popularidad ha ido en aumento a lo largo de los años:
1943: Warren S. McCulloch y Walter Pitts publicaron «A logical calculus of the ideas immanent in nervous activity (PDF, 1K KB)» (el enlace reside fuera de IBM) Esta investigación buscaba entender cómo el cerebro humano podía producir patrones complejos a través de células cerebrales conectadas, o neuronas. Una de las principales ideas que surgieron de este trabajo fue la comparación de las neuronas con un umbral binario a la lógica booleana (es decir, afirmaciones 0/1 o verdadero/falso).
1958: A Frank Rosenblatt se le atribuye el desarrollo del perceptrón, documentado en su investigación «The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain» (PDF, 1.6K KB) (el enlace reside fuera de IBM). Lleva el trabajo de McCulloch y Pitt un paso más allá al introducir pesos en la ecuación. Aprovechando un IBM 704, Rosenblatt consiguió que un ordenador aprendiera a distinguir las cartas marcadas a la izquierda de las marcadas a la derecha.
1974: Aunque numerosos investigadores contribuyeron a la idea de la retropropagación, Paul Werbos fue la primera persona en EE.UU. en anotar su aplicación dentro de las redes neuronales dentro de su tesis doctoral (PDF, 7,8 MB) (el enlace reside fuera de IBM).
1989: Yann LeCun publicó un artículo (PDF, 5,5K KB) (el enlace reside fuera de IBM) en el que se ilustra cómo el uso de restricciones en la retropropagación y su integración en la arquitectura de la red neuronal puede utilizarse para entrenar algoritmos. Esta investigación aprovechó con éxito una red neuronal para reconocer los dígitos de los códigos postales escritos a mano proporcionados por el Servicio Postal de Estados Unidos.
Redes neuronales e IBM Cloud
Desde hace décadas, IBM ha sido pionera en el desarrollo de tecnologías de IA y redes neuronales, destacando por el desarrollo y evolución de IBM Watson. Watson es ahora una solución de confianza para las empresas que buscan aplicar técnicas avanzadas de procesamiento del lenguaje natural y de aprendizaje profundo a sus sistemas, utilizando un enfoque probado por niveles para la adopción e implementación de la IA.
Watson utiliza el marco Apache Unstructured Information Management Architecture (UIMA) y el software DeepQA de IBM para poner a disposición de las aplicaciones potentes capacidades de aprendizaje profundo. Utilizando herramientas como IBM Watson Studio y Watson Machine Learning, su empresa puede llevar sin problemas sus proyectos de IA de código abierto a la producción mientras despliega y ejecuta sus modelos en cualquier nube.
Para más información sobre cómo empezar con la tecnología de aprendizaje profundo, explore IBM Watson Studio.
Regístrese para obtener un IBMid y cree su cuenta de IBM Cloud.