Usamos cookies. Más información  aquí Aceptar

Las redes neuronales en Inteligencia Artificial y Machine Learning

Redes neuronales en IA y ML: CNTK, Keras y Caffe2

¿Que son las redes neuronales en IA y Aprendizaje Automático?


Actualmente hay una revolución tecnológica que hace unas décadas parecía imposible. Junto a esta revolución han llegado muchísimos términos nuevos, pero uno de los más sonados e interesantes es la Inteligencia Artificial.


Si pensamos en Inteligencia Artificial de las primeras cosas que nos vienen a la cabeza es: ¿Como inteligencia, que las máquinas van a ser capaces de pensar? Realmente no podemos hacer que una máquina pueda pensar por sí misma (Por lo menos de momento). No obstante sí que podemos conseguir que las máquinas aprendan a realizar tareas por sí mismas como si pensasen.


Para que esto sea posible, es necesario entender como pensamos las personas e intentar imitarlo. Para eso es para lo que se han creado las redes neuronales. La idea es simple, son modelos que representan el funcionamiento del sistema nervioso. Las unidades básicas de estas redes son como las neuronas.


Una red neuronal es un modelo simplificado que emula el modo en que el cerebro humano procesa la información: Funciona simultaneando un número elevado de unidades de procesamiento interconectadas que parecen versiones abstractas de neuronas.


Estas unidades se organizan por capas. Se pueden distinguir 3 capas diferentes: La capa de entrada, las capas ocultas y la capa de salida. La idea es introducir toda la información la cual es gestionada por la primera capa. Esta información es tratada por alguna o muchas capas ocultas, dependiendo de la complejidad. Por último se envía un resultado a la capa final.


Al principio, todas las ponderaciones son aleatorias y las respuestas que resultan de la red son, posiblemente, disparatadas. La red aprende a través del entrenamiento. Continuamente se presentan a la red ejemplos para los que se conoce el resultado, y las respuestas que proporciona se comparan con los resultados conocidos. La información procedente de esta comparación se pasa hacia atrás a través de la red, cambiando las ponderaciones gradualmente. A medida que progresa el entrenamiento, la red se va haciendo cada vez más precisa en la replicación de resultados conocidos. Una vez entrenada, la red se puede aplicar a casos futuros en los que se desconoce el resultado.


Lo que se obtiene de esto, es conseguir que la red vaya aprendiendo a realizar una tarea de manera precisa. A esto es a lo que llamamos otorgar la capacidad de aprendizaje.


En caso de conseguir que una máquina aprenda a realizar una tarea por si sola y además vaya aprendiendo por si misma, nos permitirá avanzar en cualquier campo de manera mucho más eficiente.


Para poder llevar a cabo esto se requiere de ciertas plataformas que en su momento fueron muy importantes y revolucionaron completamente el sector de las redes neuronales. Estas plataformas son CNTK, Keras y Caffe2. Lamentablemente CNTK ya no tiene soporte en muchos sitios y Caffe2 se puede combinar con PyTorch, que es mucho mejor actualmente. No obstante, estas plataformas fueron muy importantes y es crucial entender como funcionaban.


CNTK



El kit de herramientas CNTK (Kit de Herramientas Cognitivo de Microsoft) es una librería basada en redes neuronales profundas, que está pensada para el Deep Learning. Fue desarrollada por Microsoft Research en 2012 y de código abierto des de 2015. Esta herramienta está programada en C++ y des del año 2016 está subida a GitHub y tiene soporte de Windows, Linux y Mac.


Su nombre original era Computational Network Toolkit y por eso las siglas de CNTK. Este kit de herramientas correspondía en la implementación de las CN en GPU y en CPY.


En 2017 se comprobó que era la biblioteca de redes neuronales más rápida (En ese momento) y que podía ser de gran ayuda para la gente que se encargaba del desarrollo del Machine Learning.


Microsoft Cognitive Toolkit permite escalar de manera eficiente en una variedad de entornos, desde una única CPU, a múltiples CPU o a múltiples GPU o inclusive hasta varias máquinas o Azure mediante Docker.


El verdadero problema de CNTK es que actualmente no recibe soporte en muchos sitios. Si que es cierto que en su momento fue muy importante y ha contribuido mucho. Es por eso por lo cual es importante remarcarlo y por lo que también es importante saber que hacer en caso de tener CNTK implementado.


Si ya tienes modelos CNTK funcionando, y mantenerlos solo significa entrenar con nuevos datos, se pueden continuar usando CNTK de la forma en que se ha utilizado hasta ahora. De hecho, los equipos dentro de Microsoft también están haciendo esto. Si hay errores graves que impiden la productividad, aún se solucionarán, según Microsoft. Para la inferencia, se puede continuar usando CNTK C / C ++ / Python / C # / API de Java, o se puede exportar modelos CNTK en formato ONNX y usar ONNX Runtime u ORT como un motor de inferencia más rápido y delgado.


En caso de que se necesite cambiar de modelo también hay opciones. Se puede migrar a modelos como PyTorch o TensorFlow que son de los más importantes actualmente. Se ha realizado un gran trabajo para poder ofrecer a los usuarios una manera sencilla de poder migrar el modelo a PyTorch sin ningún problema.


Keras


Keras es también una biblioteca de redes neuronales de código abierto, solo que programada en Python. Una de sus particularidades es que es capaz de ejecutarse sobre CNTK y sobre una de las plataformas más importantes como es TensorFlow.


La idea principal en la creación de Keras fue posibilitar la experimentación sencilla de Deep Learning, ya que sus puntos fuertes son ser modular y extensible.


Keras permite generar modelos de Deep Learning incluso en teléfonos, tanto en iOS como en Android. También permite utilizarse a través de la web.


En cuanto a su funcionamiento, Keras es una biblioteca que funciona a nivel de modelo: proporciona bloques modulares sobre los que se pueden desarrollar modelos complejos de aprendizaje profundo. A diferencia de los frameworks, este software de código abierto no se utiliza para operaciones sencillas de bajo nivel, sino que utiliza las bibliotecas de los frameworks de aprendizaje automático vinculadas, que en cierto modo actúan como un motor de backend para Keras. Las capas de la red neuronal que se quieren configurar se relacionan entre sí de acuerdo con el principio modular, sin que el usuario de Keras tenga que comprender o controlar directamente el propio backend del framework elegido.


Caffe2



Caffe2 es una de las principales plataformas que admiten diseños de redes neuronales. Des de hace ya unos años, Caffe2 es de código abierto. Es un marco modular liviano que viene listo para la producción con capacidades de escalamiento definitivas para capacitación e implementación.


Una de sus principales características es que es compatible con todas las principales generaciones de software existentes y de esa manera potencia una de las mayores implementaciones de aprendizaje profundo móvil con más de mil millones de dispositivos.


En la práctica, cualquier marco de aprendizaje profundo es una pila de múltiples bibliotecas y tecnologías que operan en diferentes capas de abstracción (desde la lectura y visualización de datos hasta los núcleos informáticos de alto rendimiento). Puesto que PyTorch y Caffe2 son las principales plataformas de IA utilizadas por Facebook, la idea principal es combinar ambas para un mejor desarrollo.


Caffe2 admite muchos tipos diferentes de arquitecturas de Deep Learning orientadas a la clasificación y segmentación de imágenes. Es compatible con CNN, RCNN, LSTM y diseños de redes neuronales totalmente conectadas. También admite bibliotecas de Kernel computacional de aceleración basadas en GPU y CPU, como NVIDIA cuDNN e Intel MKL.

Para sacar el rendimiento completo de Caffe2, se puede combinar de manera perfecta con PyTorch, consiguiendo así el mejor resultado que las plataformas de Facebook pueden aportar actualmente. Por otra parte cabe remarcar que PyTorch también funciona muy bien sin la necesidad de combinarlo con Caffe2.


Conclusión


Como hemos podido ver, es imprescindible que haya diferentes herramientas para la creación de las redes neuronales. Cada una de estas herramientas se especializa en un apartado diferente y realizan diversas tareas. También cabe remarcar que cada una de las plataformas nombradas tiene sus puntos fuertes. Además de estas plataformas hay muchas más y también son muy buenas.


Es muy importante que a la hora de destinar una tarea a una máquina decidamos bien que herramienta o plataforma vamos a utilizar. Actualmente hay muchas que son de código abierto y que se pueden utilizar sin ningún problema. También tenemos que pensar que todo depende del resultado que queramos conseguir. Por ejemplo no se puede utilizar una plataforma de Machine Learning en caso de que nuestra idea sea conseguir que una máquina identifique objetos de una imagen, puesto que será imposible. Para eso está destinada una categoría del Machine Learning llamada Deep Learning la cual si es capaz de llevar a cabo esa tarea.


Resumiendo, conseguir que una máquina piense es muy difícil, pero con la aplicación de los diferentes métodos y plataformas que existen, se puede conseguir un resultado muy positivo, ya que las máquinas pueden aprender y crecer. No es pensamiento como tal, pero sí que es cierto qué estás tecnologías revolucionarán el mundo tal y como lo conocemos.


Solicítanos ahora tu presupuesto para proyecto de Inteligencia Artificial y uno de nuestros consultores especializados te atenderá personalmente.


Blog sobre Inteligencia Artificial