Siguiendo con la respuesta del Usuario de Quora, Primero, es importante distinguir entre diferentes tipos de IA: sistemas expertos, clasificación de k-medias, redes neuronales, etc. Por ejemplo, podría implementar un bucle de sistema experto mínimo en un Arduino. (Se parecería mucho a una lectura de bucle de comando de serie con una declaración de caso codificada) En segundo lugar, debe distinguir entre desarrollo y despliegue. En el ejemplo de sistemas expertos, la declaración del caso se crearía en un sistema de desarrollo y se descargaría al Arduino. Las redes neuronales son similares en que (con toda probabilidad) tendrá que hacer un entrenamiento externo a la parte para determinar los pesos y luego descargar los pesos al dispositivo para la evaluación del modelo.
Analicemos los requisitos de velocidad para una red neuronal: Básicamente, una red neuronal se implementa como una serie de sumas múltiples. Mire la velocidad de instrucciones para esta operación básica en un Arduino y le dirá cuántas puede hacer en un segundo. (Viernes de código más rápido: Comprenda la división y la velocidad de las operaciones) Parece que es bastante rápido, microsegundos rápido.
Analicemos los requisitos de espacio para una red neuronal: cada multiplicación bidireccional tiene un argumento constante que debe almacenar en el firmware y un resultado intermedio que obtiene de ram (la salida de “unidad”). Cuánto espacio tienes? El uno y su tipo tienen 32–256k de memoria flash y 2–8K de ram (Arduino – Memoria). Due tiene 512K flash y 96K estático. (Arduino – ArduinoBoardDue). Si usa 4 bytes dobles como “unidades”, entonces tiene espacio para 2–8K / 4 = 512 a 2048 unidades en Uno + y 96K / 4 = 24K en una fecha de vencimiento.
- ¿Es posible conseguir un trabajo en Machine Learning sin experiencia laboral?
- ¿Cómo se usa la informática en su trabajo / campo?
- Diseño de vectores de características para algoritmos de aprendizaje automático. ¿Debo poner características de diferentes dominios en el mismo vector?
- ¿Qué hacen los ingenieros de aprendizaje automático diariamente?
- ¿Las PGM son esenciales para el aprendizaje profundo?
Veamos un ejemplo multicapa: una red neuronal multicapa capacitada para MNIST (base de datos de dígitos escritos a mano MNIST, Yann LeCun, Corinna Cortes y Chris Burges) está aquí (Neural Net para el reconocimiento de dígitos escritos a mano en JavaScript) (Haga un “show fuente”). Desde la página “La red tiene 784 unidades de entrada (imagen en escala de grises de 28 x 28, normalizada a valores que van desde [-1; 1]). Estos están completamente conectados a 200 unidades ocultas, cada una con un parámetro de polarización, lo que da (784 + 1) * 200 = 157,000 pesos; Las activaciones se alimentan a través de una no linealidad logística. La capa oculta está completamente conectada a la capa de salida con 10 unidades, dando (200 + 1) * 10 = 2010 pesos. La salida final se calcula con una no linealidad softmax de 10 vías, asignando probabilidades de clase (0 – 9) a la imagen de entrada “.
Por lo tanto, el almacenamiento de la unidad no debería ser un problema (784 + 200 + 10) * 4. Pero necesita un 4 * (157,000 + 2010) = 640K para los pesos. No tendrías suficiente espacio para almacenar esto en Uno o Due.
Las opciones obvias para una arquitectura de múltiples capas:
- expandir la memoria (El debido tiene una interfaz lenta para esto),
- ejecute un problema menor que la base de datos de dígitos manuscritos MNIST, Yann LeCun, Corinna Cortes y Chris Burges.
- perder precisión
- cambiar el método, por ejemplo, usar redes neuronales convolucionales. Esta implementación (demostración de ConvNetJS MNIST) utiliza 6000 pesos. Aunque no encajaría en un Uno, probablemente encajaría bien en un vencimiento.
- cambio de plataforma
- analizar los pesos y “renormalizarlos” para reducir su tamaño
Con respecto a los dos últimos, vea el trabajo de Raspberry Pi de Microsoft: Microsoft hizo que su IA funcionara en un Raspberry Pi de $ 10 y Microsoft / ELL