Cómo implementar Inteligencia Artificial en un Proyecto Arduino

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.

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

No puedes

Excepto tal vez una IA muy débil.

La cuestión es que la IA necesita mucha potencia computacional, y la mayoría de los dispositivos Arduino ni siquiera tenían una unidad de punto flotante.

Mi mejor apuesta es implementar la IA en una computadora mucho más poderosa. Use Arduino para recopilar y alimentar datos a esa computadora y dejar que haga el trabajo duro.

No han podido implementar inteligencia artificial completa en supercomputadoras, sin embargo, debes hacerlo en una interfaz de módulo esclavo. Olvídese de lo que ha visto en las películas, la mejor informática es capaz en este momento de sistemas expertos, un nivel muy bajo de inteligencia artificial que rápidamente falla en las pruebas de Turing.

Lo mejor que se puede esperar es el aprendizaje automático básico, como descubrir cómo atravesar un laberinto, e incluso entonces requeriría potencia informática externa, como una frambuesa pi.

Podría implementar una red neuronal básica en un Arduino independiente.

Echa un vistazo, por ejemplo

¿Es posible ejecutar una red neuronal en un microcontrolador?

Hacer que el microcontrolador sea artificialmente inteligente – Redes neuronales

Red neuronal Arduino

Un Arduino no es adecuado, por ejemplo, para el procesamiento de imagen / video / audio. Necesitarías algo como un Pi para eso. Pero para la detección del puerto de entrada digital / analógica y el control básico del puerto de salida es posible.

Un Arduino no es adecuado para resolver poderosos problemas computacionales. En su lugar, puede implementar la IA en una computadora más poderosa que luego puede comunicarse con su Arduino con Serial, WiFi, blue-tooth, etc.

More Interesting

¿Los humanos son actualizadores bayesianos?

¿Cómo se puede minimizar el riesgo regularizado utilizando métodos bayesianos?

¿Son los métodos de aprendizaje automático una especie de interpolación, mientras que los métodos de series temporales actúan como métodos de extrapolación?

¿Cómo se siente la comunidad de aprendizaje automático sobre Kaggle?

¿Cómo puedo evitar el sobreajuste?

¿Qué es una explicación intuitiva del parámetro gamma en SVM?

Como principiante, ¿dónde y cómo aprendo a implementar algoritmos difíciles de aprendizaje profundo y otras técnicas similares en los lenguajes OOP?

¿Cuáles son los temas sobre big data para hacer una tesis de maestría que excluye el aprendizaje automático?

¿Cuáles son las formas en que el científico de datos indio que actualmente trabaja en una empresa de aprendizaje automático con sede en India inmigra a los Estados Unidos?

Cómo usar el procesamiento del lenguaje natural (PNL) para resumir un documento en una serie de ideas principales

¿Cuál es la mejor manera de crear un conjunto de capacitación para el aprendizaje automático?

¿Por qué no utilizamos la regresión logística para grandes conjuntos de datos de características?

¿Cómo debo representar las características para la clasificación de texto?

¿Cuál es el mejor lenguaje de programación para implementar algoritmos de aprendizaje automático?

¿Cuál es la mejor manera de hacer reconocimiento / clasificación de múltiples objetos en tiempo real usando OpenCV y GPU (CUDA)?