He seguido mirando el curso, estoy por como se usa la herramienta de como identificar clusters. Pero mirando la parte de analizar y entrenar de forma supervisada con datos numéricos usando la web app de "Microsoft Azure Learning Studio" del curso aparentemente representa un buen modo para "jugar". Los datos son cargados des el PC a la herramienta, se define como se combinan. La función de visualizar la salida de cada bloque ya de por si representa una funcionalidad interesante.
Los detalles, reciben la información de forma muy fácil de comprender en los vídeos del curso, por lo que no ni intento replicar esto aquí!
Pero su aplicabilidad a nuestra afición me parece muy factible. Empecemos recalcando que no de las cosas que representan un reto para usar la inteligencia artificial es el gran número de datos que se requieren! Aquí los ejemplos que me acabo de mirar son 15.000 sets de datos. por lo tanto la herramienta de IA requiere que podamos proporcionar el número mas grande factible de sets de datos. Una cosa que me puedo imaginar es el monitorear datos generados por algún circuito electrónico y entrenar y verificar la funcionalidad de la IA. El otro aspecto es la utilidad! Que beneficio me da el poder estipular el resultado? Reflexionaré esto para concebir de que forma IA me puede servir.
Recuerden. Mi objetivo para dedicarme a este tema por un lado es la curiosidad de aprender algo sobre el aprendizaje de máquinas y en especial sobreponerme a la intimidación para poder "jugar" con esta técnica. Aqui la web app de Azure me parece mus atractiva por programarse con copiar y pegar. Ademas da como selección cual algoritmo aplicar en cierto punto del "arbol=tree" del proceso de aprendizaje de máquinas.
Por otro lado deseo poder entender lo suficiente de esta tecnología para poder tener en consideración lo que esta técnica hace posible al reflexionar como hacer alguna decisión de diseño. La herramienta de Azure elimina problemas por errores de programación y el reto de poder "jugar" con diferentes algoritmos y "ver" su impacto. Claro, Azure es un entorno que se ejecuta en la "nube". Pero las mas avanzadas componentes electrónicas, controladores, en parte ya tienen y en parte aparecerán conteniendo la hardware para permitir un uso de IA entrenada en la nube y ejecutarla en un controlador embebido.
TensorFlow, como ejemplo de un entorno alternativo ya existe para la placa raspi que ya contiene las unidades GPU que permiten una ejecución acelerada de los algoritmos de IA! me imagino que una vez que usando Azure para decidir "jugando" como es una IA adecuada para un uso que identifico, luego crearía la misma IA usando por ejemplo TensorFlow. Me imagino que los algoritmos mas usuales replicaran lo que Azure nos ofrece.
@Scooter: Al momento no me he topado con limitaciones de la herramienta "Azure Machine Learning Studio" accedida de forma gratuita y sin identificarme que me impacten! Así que no hay que dejar de "jugar con esta herramienta accediéndola de forma gratuita y no identificándose.
Reflexionando lo que acabo de escribir al volver a leer mi contribución se me vino a la mente mi sistema de control de escotas.
Mientras que fue bastante sencillo el idearse el objetivo del sistema de control de escotas, la cosa se puso dificil al reflexionar la función bajo ciertas condiciones de operación!
Uso un sensor angular magnético que monitorea la posición angular del palo de la vela:
El magneto esta conectado al eje de rotación de la articulación del palo de la vela y cuando la vela gira, el eje gira de forma correspondiente. Este magneto conectado al eje del palo de la vela esta casi tocando la superficie de la cubierta del velero que en este lugar tiene un „hueco“ tapado por un delgado folio de plástico debajo del cual se encuentra la componente del sensor magnético angular.
Este sensor continuamente y con alta frecuencia reporta la posición angular del palo de la vela! Recuerden lo que escribí: la IA requiere de un alto número de datos para ser entrenado y así aprende a definir por inteligencia propia ejecutando un algoritmo que se debe hacer! Así aquí tengo algo que me origina un alto número de datos.
Los 2 gráficos arriba muestran con bastante complejidad que aspectos mi sistema de control de escotas requiere para poder controlar el largo de la escota basándose en la posición angular del palo de la vela. Me explico:
Mi sistema de control de escotas controla la longitud de la escota dependiendo de la posición del palo de la vela. Hasta allí sencillo, el sistema hace que el motor de paso pase a la posición correspondiente que me da el largo de la vela requerido evitándose así tener demasiada escota suelta!
Los problemas empiezan cuando se reflexiona el como el sistema debe controlar la longitud de la escota!
Sobresaliente y de máxima importancia es que la vela nunca se abra mas que lo que el operador del velero desea y definido por la posición del “stick” en la emisora RC. Esta posición del stick define hasta que ángulo la vela tiene permitida abrirse y como consecuencia cual es el largo máximo que la escota debe tener para cumplir. El sistema sabe cual es la posición del “stick” de la emisora digitalizando la señal PWM que sale del enchufe del canal correspondiente del receptor RC.
eflexionando lo que acabo de escribir al volver a leer mi contribución se me vino a la mente mi sistema de control de escotas.
Mientras que fue bastante sencillo el idearse el objetivo del sistema de control de escotas, la cosa se puso dificil al reflexionar la función bajo ciertas condiciones de operación!
Uso un sensor angular magnético que monitorea la posición angular del palo de la vela:
El magneto esta conectado al eje de rotación de la articulación del palo de la vela y cuando la vela gira, el eje gira de forma correspondiente. Este magneto conectado al eje del palo de la vela esta casi tocando la superficie de la cubierta del velero que en este lugar tiene un „hueco“ tapado por un delgado folio de plástico debajo del cual se encuentra la componente del sensor magnético angular.
Este sensor continuamente y con alta frecuencia reporta la posición angular del palo de la vela! Recuerden lo que escribí: la IA requiere de un alto número de datos para ser entrenado y así aprende a definir por inteligencia propia ejecutando un algoritmo que se debe hacer! Así aquí tengo algo que me origina un alto número de datos.
Los 2 gráficos arriba muestran con bastante complejidad que aspectos mi sistema de control de escotas requiere para poder controlar el largo de la escota basándose en la posición angular del palo de la vela. Me explico:
Mi sistema de control de escotas controla la longitud de la escota dependiendo de la posición del palo de la vela. Hasta allí sencillo, el sistema hace que el motor de paso pase a la posición correspondiente que me da el largo de la vela requerido evitándose así tener demasiada escota suelta!
Los problemas empiezan cuando se reflexiona el como el sistema debe controlar la longitud de la escota!
Sobresaliente y de máxima importancia es que la vela nunca se abra mas que lo que el operador del velero desea y definido por la posición del “stick” en la emisora RC. Esta posición del stick define hasta que ángulo la vela tiene permitida abrirse y como consecuencia cual es el largo máximo que la escota debe tener para cumplir. El sistema sabe cual es la posición del “stick” de la emisora digitalizando la señal PWM que sale del enchufe del canal correspondiente del receptor RC.
La señal PWM cambia el tiempo que la señal está en "0" o "1" durante los 20 ms o 50 veces por segundo que esta señal es repetida. la electrónica mide este largo y así resulta un valor digital que mi electrónica usa para saber en que posición está el stick de control de la emisora.
Si ahora por girar la dirección de navegación del velero o por cambio de dirección del viento la vela puede fluctuar su posición angular. Como pueden ver en el segundo gráfico mio el motor de paso puede tener mas de 1.000.000 de posiciones que definen el largo de la escota entre una posición perpendicular al casco y en la posición central identica al centro del casco. Es un ángulo entre el casco del velero y el palo de la vela de 90°.
El sensor magnético angular nos da 1014 valres diferentes dependiendo de la posición del palo de la vela y mi sistema de control de escotas puede asignar una posición del motor de paso que controla la longitud de la escota de mas de 1.000.000 posiciones posibles!
Esto lo hace el sistema de control de escotas usando una tabla grabada en su memoria de 1024 entradas, donde cada posición posible del sensor magnético angular, cada renglón es una diferente y asignar 1 de las mas de un millón de posibles posiciones del motor de paso!
El reto con el que me encontré fue de como realizar que la longitud de la escota nunca sobrepase el máximo definido por el operador por la posición del stick de control en la emisora. Asumí un máximo de 64 posiciones posibles del stick de control en la emisora en el segundo gráfico.
Pero como funciona este control de escotas cuando el palo de la vela este oscilando entre la posición central y aquella máxima permitida por el operador RC! El problema es cuando mi sistema de control de escotas considera que debe cambiar lo posición del motor de paso para no impactar la libertad de oscilación del palo de la vela. Para eso me ideé un sistema de umbrales alrededor de la posición actual del palo de la vela asegurando así que el sistema de control de escotas permita la libre oscilación del palo de la vela proporcionado la longitud de escota requerido.
Muy bien me puedo imaginar el uso del aprendizaje de máquinas supervisado!
En el segundo renglón de la tabla vemos que el operador RC no quiere que la vela pueda oscilar.
En el cuarto renglón vemos que el operador RC quiere que la vela se abra hasta 45° de su palo y como el palo de la vela ya tiene 45° no le daremos mas escota.
En el último renglón de la tabla vemos que el palo de la vela ha oscilado hacia el centro, aquí 22,5° por lo que permitimos que el palo de la vela gire como quiera!
Así, metiéndome aún mas en detalles, es posible generar una base de datos similar a lo que muestro en la tabla, pero donde monitoreo la posición del stick de control de la emisora RC grabando los valores digitalizados que resultan de digitalizar la PWM de la receptora RC. Lo mismo rige para el sensor angular y la posición correspondiente del motor de paso!
Lo que un sistema de aprendizaje de máquinas haría como resultado me evitaria computar todo eso de los umbrales. "Sabiendo" por entrenamiento la IA reaccionaría de acuerdo a cual "situación" es la actual.
El entrenamiento resultaría en saber si limitar o no, la cuarta columna de la tabla el movimiento del palo de la vela. Porqué? Porque esta decisión basa en que existe una relación entre la posición actual indicada por el sensor angular magnético y la posición definida como máxima a razón de la posición del stick de mando de la emisora RC!
La posición del motor de paso seguiría resultando de encontrar su posición en referencia a la posición angular! Basándome en la disponibilidad actual de componentes electrónicas la placa RaspBerry Pi Zero podría realizar esta función embebida usando el gran número de hardware GPU y usando un sistema de aprendizaje de máquinas basadas en el entorno TensorFlow que existe para las placas Raspi!