Poco aprendizaje automático en el Attiny85

Tendemos a pensar que el punto de entrada más bajo para el aprendizaje automático (ML) está en una Raspberry Pi, lo que ciertamente no es así. [EloquentArduino] empujó los límites al extremo inferior de la escala y logró que se ejecutara un modelo de clasificación básico en el ATtiny85.

Utilizando su experiencia trabajando con modelos ML en un antiguo Arduino Nano, creó un generador que puede exportar código C desde scikit-learn. Intentó usar este generador para compilar un clasificador de color vectorial de soporte para el ATtiny85, pero encontró un problema con el compilador Arduino ATtiny85 que no soportaba una función variable utilizada por el generador. Afortunadamente, ya había experimentado con un enfoque alternativo que utiliza una función no variable, por lo que pudo desempolvarlo y ejecutarlo. El clasificador acepta entradas de un sensor RGB para identificar un conjunto de objetos por color. El modelo coincidía fácilmente con las capacidades del diminuto ATtiny85, usando solo el 41% de los rayos disponibles y el 4% de la memoria RAM disponible.

Es importante tener en cuenta lo que [EloquentArduino] no es hacer aquí: operar una red neuronal artificial. Son demasiado ineficientes en términos de memoria y tiempo de cómputo para igualar a ATtiny. Pero las redes neuronales no son el único juego en la ciudad, y si su tarea es clasificar algo en función de algunas entradas, como leer un gesto de los datos del acelerómetro o llamar un color desde un sensor de color, el enfoque aquí lo beneficiará. Nos preguntamos si esto no sería una buena solución al tedioso problema de identificar murciélagos a través de sus llamadas.

Realmente nos gusta lo accesible que se ha vuelto el aprendizaje automático y si sueles probar ML, eche un vistazo al resto del blog Eloquent Arduino, es una pequeña mina de oro.

Recibimos cada vez más hacks relacionados con el aprendizaje automático, como ML básico en Arduino Uno y tipos de Lego por ML en Raspberry Pi.

  • no desprecies a una serpiente dice:

    parece que “Machine Learning” es lo que hemos llamado “programación”.

    • Glen Searle (@GenesisMachines) dice:

      Es cierto que si hay más de siete afirmaciones IF seguidas, marketing lo llama Aprendizaje.

      El uso diario es escribir un programa cuando no se sabe cuáles serán los datos o la función.
      Estoy involucrado en más proyectos que tendrían muchos más desarrolladores últimamente. Han sido reemplazados por varios científicos de datos y alguien que sabe cómo solicitar ciclos de CPU de AWS.
      Por ejemplo: trabajé en la extracción de datos de formularios legales, era mucho más barato usar el aprendizaje automático que tener unos pocos programadores jóvenes escribiendo las expresiones regulares funcionalmente equivalentes.

      • Ken N dice:

        Sería interesante leer más sobre este proyecto de raspado de ML, ya que todavía me resulta difícil imaginar todas las formas en que ML puede ser útil. ¿Quizás algo para un artículo de HaD?

        • quarkismo dice:

          Estoy de acuerdo con Ken. Genial ver un artículo aquí sobre esto.

      • quarkismo dice:

        Esto es realmente interesante. ¿Podrías contarnos un poco más sobre cómo funcionó?

      • tekkieneet dice:

        > El uso diario es escribir un programa cuando no se sabe cuáles serán los datos o la función.
        https://dilbert.com/strip/1997-05-09

      • Lucas dice:

        Este no es un argumento para el aprendizaje automático, es un argumento en contra de las expresiones regulares.

    • imayoda dice:

      +1

    • Chris dice:

      parece que el "aprendizaje automático" es lo que llamamos "codificación", que es lo que llamamos "programación".

      Se arregló eso para ti. 😉

      • Ostraco dice:

        Y antes de eso golpeó dos piedras juntas. Ahora las rocas son más baratas y el tipo que las golpea es más caro.

      • ninguno dice:

        La codificación y la programación tienen usos sutilmente diferentes, sin importar cuál sea más nuevo (ambos existen desde hace mucho tiempo).

  • Arduino elocuente dice:

    Soy el autor de la publicación citada.

    Los primeros resultados del “aprendizaje automático” no siempre se pueden lograr con la “programación manual”, ya que es posible que no pueda comprender todos los aspectos de sus datos si tiene muchos datos. En segundo lugar, los modelos de ML pueden evolucionar de manera oportuna sin la intervención de ningún desarrollador.

    Creo que podría ser más agradable si dices "parece que el aprendizaje automático es lo que llamamos estadísticas".

    • Ken N dice:

      Gran proyecto (y gran sitio web entre otras cosas). Planeo pasar un tiempo serio con ellos.

      • Arduino elocuente dice:

        Gracias, muchas gracias por tus amables palabras.

    • Comedias dice:

      Quizás una buena comparación con el control de procesos PID. Los algoritmos PID ajustan los parámetros (lernu) para optimizar algún proceso. Los desarrolladores los usan constantemente.

      • Arduino elocuente dice:

        Nunca usé PID en la práctica, solo lo estudié en la universidad y leí algunos artículos. Creo que la diferencia es 1) pueden "aprender" un máximo de 3 parámetros (P, I, D) y 2) no aprenden una función de decisión, aprenden a seguir un punto de ajuste y no están estacionarios (el la misma entrada, en diferentes momentos, produce un resultado diferente). Pero puedo estar equivocado.

  • Joslyn Renfrey dice:

    El aprendizaje automático es en realidad solo una forma de programación con ejemplos de entrada y salida esperados.

    Malo.

    • Arduino elocuente dice:

      Estás hablando de aprendizaje controlado. Hay mucho más en ML (por ejemplo, no traición y aprendizaje reforzado).

  • Shlomo Hassid dice:

    Cosas geniales: esto me ayuda a programar rápidamente los pequeños detalles https://www.tindie.com/products/siktec/attiny-programming-development-arduino-shield/

Alejandro Vargas
Alejandro Vargas

Deja una respuesta

Tu dirección de correo electrónico no será publicada.