Deep-learning, junto a un gran número de algoritmos de aprendizaje
automático han tenido recientemente un gran éxito en una variedad de
dominios de aplicaciones, incluyendo visión por computadora, control,
reconocimiento de patrones,
procesamiento de lenguaje natural, y análisis de big data, entre otros. Ejemplos de ellos se pueden encontrar en [1].
Entrenar
un modelo de aprendizaje automático requiere grandes recursos de
hardware y computación. Es altamente caro debido a la cantidad de
parámetros que necesitan ser refinados iterativamente durante múltiples
períodos de tiempo.
Y la inferencia es computacionalmente costosa debido a la potencial alta dimensionalidad de los datos de entrada.
Actualmente
se ha convertido en un desafío importante el poder adaptar los altos
requisitos de recursos del aprendizaje automático (principalmente
deep-learning) en hardware y firmware con reducidos recursos
informáticos (edge-devices nodes en el contexto IoT)
Diseñar un
algoritmo de aprendizaje automático eficiente o seleccionar el algoritmo
correcto para una aplicación dada es un gran desafío debido al gran
número de decisiones de hiperparámetros y además se requiere una buena
comprensión
de los trade-off entre la velocidad del procesador, la
precisión, el uso de acceso a memoria, la energía (usualmente provista
por baterias) y otros recursos del nodo IoT.
Todo debe ser considerado por el diseñador o el desarrollador de la aplicación.
La
creciente necesidad de experimentar con nodos IoT, ha llevado a los
investigadores a recurrir a kits de desarrollo específicos cono
Tensorflow Lite, Caffe, The Embedded Learning Library (ELL) de Microsoft
o el kit de Nvidia Jetson Nano SDK, el de Intel Edison o el XaLogic
XAPIZ3500 HAT compatible con plataformas Rasperry. Todos estan diseñado
para experimentos en escenarios IoT.
Un desafio adicional es que
en el contexto de IoT puede haber varios flujos de datos que deben ser
fusionados y procesados juntos, y estos flujos de datos normalmente
tienen una correlación de espacio y tiempo que debe ser
aprovechado por el aprendizaje automático.
Se
propone iniciar una línea de trabajo en el contexto del aprendizaje
profundo y aprendizaje automático en IoT, para implementar los modelos
de aprendizaje en dispositivos computacionalmente débiles como son los
nodos IoT (edge-devices), que normalmente solo tienen kilobytes de
memoria y procesadores de bajo consumo alimentados por baterias.
Se
busca entonces diseñar algoritmos de aprendizaje automático para
dispositivos con recursos limitados, explorando técnicas como el uso de
un número reducido de parámetros, optimización de acceso a memoria,
descomposición de filtros de
convolución en operaciones mas simples,
utilización de parámetros y pesos pre-entrenados, utilización de
operaciones en punto fijo para evitar multiplicaciones costosas, o
proponiendo nuevos paradigmas de computación embebida para nodos IoT.
[1]
M. Mohammadi, A. Al-Fuqaha, S. Sorour, and M. Guizani, “Deep learning
for IoT big data and streaming analytics: A survey,”IEEE Communications
Surveys & Tutorials., vol. 20, no. 4, pp. 2923–2960, 4th Quart.,
2018.