Paso 5: Programación de un Perceptrón
Un perceptrón es un algoritmo para aprendizaje supervisado. Es decir, un algoritmo permite enseñar a una función matemática a reconocer patrones. Así por ejemplo un niño pequeño puede mover sus piernas pero aprende a caminar, es decir un coordinar sus movimientos, y lo prende con recompesas o caídas. En nuestro proyecto, el robot puede medir la luz y sabe mover sus motores, lo intentamos lograr es aprenda a coordinar los motores para lograr el objetivo de llegar a la luz.
Como se ve en la imágen, hay tres componentes principales de un perceptrón. Las entradas, la función de suma, y una función de activación.
Cada entrada x se multiplica por un peso w, y estas se suma tal que:
W0(t) = x1 * w1 + x2 * w2 +... + xn * wn.
Entonces suma, es la suma de cada entrada multiplicada por un peso w. La función de activación out(t), es una función toma como valor sum, y entonces,
- Da como resultado -1 si w0(t) es menor que 0
- Da como resultado + 1 si w0(t) es mayor o igual a 0
El algoritmo de aprendizaje consiste en calcular correctamente los pesos w para obtener el en out(t), se considera correcto.
En este proyecto en particular tenemos dos entradas provienen de dos sensores de luz. digamos entonces son x1 y x2. A esto hay agregarle una tercera x3 entrada dejamos siempre sea 1 (se conoce como sesgo) para evitar sumas 0. Los valores de entrada de los fotoresistores van de 0 a 1023. Entonces,
W0 (t) = x1 * w1 + x2 * w2 + x3 * w3
La función de activación out(t) hará el resultado sea -1 o + 1. Noten se utiliza t para indicar una iteración, pues estos computadoras-máquinas se realizan una vez por cada lazo del Edison. Ahora bien, digamos que + 1 indica una un servo motor moverse hacia adelante y -1 moverse hacia a atrás. Para corregir el movimiento calculamos el error de la siguiente manera,
error(t) = deseado(t) - out(t)
Por último, con este error corregimos los pesos w,
nuevo w = w + error * x * c
donde ces una constante entre 0 y 1, de aprendizaje, se ajusta para elaboró que tan rápido debe aprender (si es muy rápido a veces nunca se estabiliza).
Para cada motor utilizaremos un Perceptrón toma como entrada los dos sensores de luz. Los detalles del código están en el siguiente paso.
Para más detalles de es un perceptrón, pueden consultar wikipedia.