Las redes neuronales suelen usarse mucho para crear inteligencia artificial usando la arquitectura del cerebro. Con el advenimiento de las AI, los traders podrían empezar a verse desplazados por algoritmos que dan mejores resultados, y quizás por eso es que ya están planeando recortar nóminas bancarias en el área de inversiones. ¿Acaso el futuro del trader es la AI?
Mucho se habla de las AI (inteligencia artificial) y redes neuronales en trading, y parece un concepto terriblemente incomprensible, y si buscas en Wikipedia (Artificial neural network), realmente no vas a entender muy bien cómo usar una.
Como no me interesa enseñarte a programar, voy a crear una red neuronal muy simplificada. Los datos que voy a usar son los datos del país de Econolandia que existe en un universo aparte, porque lo que me interesa es explicar el concepto, y no tanto apegarme a situaciones reales.
Diseñando funciones
Lo primero es comprender la neurona. Una neurona es esencialmente una función. Podemos tener funciones lineales o no lineales. Por ejemplo:
f(x,y,z) = a * x + b * y + c * z + d
El parámetro d de la función en este caso funciona como el "error" de la función, y no va acompañado de ninguna variable. En esta red neuronal no voy a usar ningún tipo de error.
En Econolandia, para calcular el precio de un apartamento, usan la siguiente fórmula:
Precio Aprtamento = 2 * Area + 150 * Baños + 100 * Habitaciones + 50 * Edad del inmueble
Pero hay excepciones. Si el área es mayor de 400 el inmueble debe pagar el precio que se paga por una fábrica, y el precio de la fábrica es:
Precio Fábrica = (2 * Area + 150 * Baños) * 6
Si no es una fábrica, y la edad supera los 50 años, el apartamento se convierte en reliquia histórica y su precio se calcula como:
Precio Edificio historico = (50 * Edad del inmueble) * 100
Las relaciones que obtenemos son las siguientes:
Construyendo la hoja de Excel
Vamos a usar la celdas de la siguiente manera. las celdas amarillas contienen datos que ingresaremos manualmente, y las celdas naranja serán fórmulas. Tenemos 3 capas. La capa de entrada (input) contiene valores de las variables, que se usan en la capa intermedia (Hidden layer) y finalmente se calcula el precio.
Las formulas para las celdas de color naranja serán las siguientes:
F4 =+B4*C4+B5*C5
F5 =+B7*C7
F6 =+B4*C4+B5*C5+B6*C6+B7*C7
F8=+IF(B4>400,1,IF(B7>50,2,3))
I4=+IF(F8=1,F4*G4,IF(F8=2,F5*G5,F6*G6))
Como notarás, tomamos unos datos de entrada a la izquierda, para un inmueble con Area 150, 2 baños, 3 habitaciones y 5 años. Las celdas de la capa intermedia de cálculo (Hidden layer) de la columna F sirven de puente para calcular el precio en la columna I
La celda F8 indica cuál debe ser el precio, y usando ese valor es que la celda de precio escoge la manera de calcular el precio.
Comentarios generales
- Como ves, los datos de la capa de Input no pasan directamente a la capa de Output, sino que pasa por cálculos intermedios en la capa de Hidden layer.
- Como puedes ver también, el resultado (Precio) es sensible a cambios en los coeficientes en los distintos niveles.
- El aprendizaje de la máquina viene a partir de algoritmos para hacer que la red aprenda con datos reales a escoger los coeficientes correctos para la mejor estimación del precio.
- La parte complicada no es construir la red de neuronas (aunque si puede requerir de bastante pensamiento del diseñador) sino diseñar los algoritmos para que la neurona aprenda a ajustar coeficientes con datos reales.
- Para el país de Econolandia, esta red neuronal escoge y calcula "inteligentemente" el precio de inmuebles, usando criterios que sirvieron para construir la red neuronal.
¿Que especificaciones debe tener una red neuronal genérica?
Si vas a programar redes neuronales genéricas necesitas algunas cosas básicas. Al hablar de "función" en este apartado no me voy a referir a una función matemática, sino a una capacidad funcional del programa. Esta es la lista de especificaciones generales de una red genérica básica.
- Una función básica que reciba datos de entrada y salida para "entrenar" (calcular o iterar) los coeficientes hasta llegar al mejor valor.
- Debes especificar como entrada, la cantidad de hidden layers en tu red.
- Deberías dibujar una gráfica de input y output para observar patrones que te ayuden mejor a diseñar.
- Debe haber una función que acepte nuevos datos.
- Un algoritmo base (default) debe emplearse con un error bajo.
- La función debe aceptar series de datos en el tiempo si alterar mucho su arquitectura.
- Debe haber formas alternativas de calcular error o de extender las funciones.
- Debe poder hacer cálculos de redes de Hopfield y self organizing maps u otro tipo de red.
Comentarios finales
Yo se que si no eras programador te vas a perder en el apartado anterior, pero no te preocupes, que ya entendiendo cómo construir la red en Excel tienes lo necesario para que al aprender a programar puedas armar lo necesario para tu red neuronal.
Miras que al tener varias capas apiladas de funciones puedes obtener resultados muy complicados de calcular de otra manera, pero a partir de premisas y datos simples. Los resultados no siempre serán intuitivos, y allí radica lo bueno y lo malo. porque si el resultado es correct, excelente, pero si el resultado es malo es que hay que revisar las premisas o ajustar coeficientes.
Lo de entrenar neuronas es en realidad ajustar coeficientes, con los datos que tenías, y ajustarlos con los datos nuevos. Y allí todo es un juego estadístico, donde puede que no escojas la curva de mejor ajuste para los datos, o puede que sí.
Si tienes una función f(x,y) = a * x + b * y + z una buena manera de ajustar el coeficiente a es tomar el resultado de f(x,y) para un valor y dado. Y luego puedes calcular el coeficiente b al usar f(x,y) con un valor de x dado. Entonces tienes dos análisis:
- x contra f(x,y)
- y contra f(x,y)
Como puedes ver, si tienes f(x,y) en realidad tienes una función que puedes representar en 3 dimensiones x, y y f(X,y), y lo que estás haciendo es una vista en corte de la gráfica en cada plano cartesiano de la figura tridimensional, en cada análisis. La complicación de tratar de dibujar todo a la vez viene si la función tiene 4 o más dimensiones.
¿No entendiste? No importa. Al final lo que se necesita es que ajustes coeficientes para obtener mejores resultados. Ya se te ocurrirá cómo.
Y si por el contrario, lo ves muy claro, ¿has trabajado alguna vez ajustando coeficientes? ¿Cuál es tu forma favorita de ajustarlos? Aquí le puedes contar al resto de los rankianos.