Microsoft Cognitive Toolkit o CNTK es una librería (biblioteca) para el aprendizaje profundo (deep learning) basado en redes neuronales profundas (DNN). Fue desarrollada por Microsoft Research en el lenguaje C++ a partir de 2012 y luego desde el año 2015 es de código abierto a partir de su publicación en CODEPLEX. Un año más tarde en 2016 se traslada a GitHub, al anunciar la versión CNTK 1.0, siendo actualmente multiplataforma y para múltiples sistemas operativos (Windows, Linux, Mac).
Al momento de escribir esta publicación la versión actual es la 2.4.
En el siguiente Link pueden encontrar el código fuente.
El concepto de red computacional
La librería está basada en el concepto de red computacional (CN o computational network), que es un marco unificado para describir diferentes tipos de máquinas de aprendizaje, como redes neuronales profundas (DNN) , redes neuronales convolucionales (CNN), redes neuronales recurrentes (RNN), redes de memorias de largo/corto plazo (LSTM), regresión logística, etc.
Se basa en definir la red como una serie de pasos computacionales que representan un algoritmo como puede verse en el siguiente pseudocódigo:

CN-Algoritmo
Un CN (“computational network”) es básicamente un grafo dirigido en el que cada nodo hoja representa un valor de entrada o un parámetro y cada nodo no hoja representa una operación matricial sobre sus hijos. Permite realizar el cálculo hacia adelante como también el cálculo de gradiente y su propagación hacia atrás que es necesaria durante el aprendizaje. Implementa los tipos de nodo de computación más populares para realizar el entrenamiento de los modelos así como diversos algoritmos de aprendizaje.
Para el ejemplo anterior podemos ver como sería la red computacional.

CN-Grafo
Computational Network Toolkit (CNTK) o Cognitive Toolkit (CNTK)
Debido al nombre dado al grafo, originalmente el kit de herramientas de la red computacional se llamó Computational Network Toolkit (CNTK) y correspondía a la implementación de las CN tanto en GPU como en CPU. Luego más tarde se le cambió el nombre a Cognitive Toolkit.
Como fue desarrollado en C++, el Microsoft CNTK admite C ++ como soporte nativo, así como Python y scripts de BrainScript.
En junio de 2017 se lanza el CNTK 2.0 con muchas mejoras. En septiembre, se lanza CNTK 2.2 que agrega el soporte de la plataforma .NET lo que permite a los desarrolladores de .NET incluir la biblioteca en aplicaciones basadas en .NET.
Rendimiento del Microsoft Cognitive Toolkit
En pruebas realizadas en 2017 se pudo verificar que es la biblioteca de redes neuronales más rápida en ese momento y puede ser de gran ayuda para quienes están haciendo Data Science y 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.
Se debe tener en cuenta en el armado de la red computacional la topología del modelo ya que la comunicación puede llegar a ser más problemática que el cálculo.
Pueden acceder a la documentación y referencias en la pagina del CNTK en Microsoft.
0 Comentarios