Vimos en anteriores entradas de este blog en qué consiste la Inteligencia Artificial, la visión artificial, el Machine Learning, y más en concreto, el Deep Learning. En este artículo vamos a ver una de las principales señales que indican que un proyecto requiere el uso de Machine Learning.
Lógica de negocio basada en excesivas reglas y/o condiciones
Uno de los principales síntomas de necesidad de Machine Learning en un proyecto está indicado cuando se desborda la cantidad de posibilidades a contemplar a la hora de realizar una tarea. Pongamos como ejemplo el problema de determinar la viabilidad en la concesión de un préstamo de una entidad bancaria: un comité de expertos puede determinar que la viabilidad de una concesión venga determinada por un número arbitrariamente grande de indicadores (ingresos anuales, localización geográfica, fecha, …).
En consecuencia, un equipo de desarrollo puede establecer reglas programáticamente para cada uno de los indicadores. Por ejemplo, en función de la experiencia del comité de expertos, podría definirse que el ingreso bruto anual supere una cifra, que la localización geográfica no sea alguna en concreto, o incluso que, ante una combinación de ambas, existan otras combinaciones de indicadores que entren en acción. Hay que observar que la complejidad para definir este sistema comienza a ser alta, en especial cuando para un indicador pueden existir varios valores y, por lo tanto, varios umbrales. Este es un problema común de cualquier sistema basado en reglas.
Ante este escenario, la experiencia nos dice que en prácticamente la totalidad de estos sistemas existen casos especiales que requieren ser contemplados mediante extensiones de las reglas tarde o temprano. Esto implica que deban existir en todo momento:
- Un estudio del impacto de los indicadores, requiriendo un comité de expertos que lo evalúen a lo largo del tiempo.
- Una traducción de las reglas dentro del sistema informático por parte de un equipo de desarrollo. Este punto incluye el mantenimiento de las reglas a lo largo del tiempo.
Estos puntos son extensibles a cualquier otro campo o problema que dependa de un sistema de reglas. Aunque en ocasiones el sistema de reglas pueda ser mantenido perfectamente de forma manual, este planteamiento suele presentar una serie de problemas que pueden tornarse importantes. Además, es común que se manifiesten un tiempo después de su puesta en marcha:
- Dificulta la depuración de reglas: Añadir nuevas reglas o combinaciones de ellas puede ser una tarea extremadamente difícil cuando la complejidad del sistema empieza a ser alta, elevando los esfuerzos del equipo TI que las implemente y/o las mantiene.
- Limitar la capacidad de generalización: Es común encontrarse en estos sistemas que presenten una rigidez en cuanto al cumplimiento de las reglas. Por ejemplo, una variación mínima en un dato es posible que invalide el sistema de reglas por completo cuando, en la mayoría de las ocasiones, esto no es el comportamiento deseado.
Si estos puntos te resultan familiares, probablemente estés interesado en saber que existe otro camino para definir estas reglas que solventa estos problemas y automatiza el proceso, un camino que pasa a través del uso de Machine Learning.
Machine Learning para inferir reglas en base a los datos
La idea de usar Machine Learning en lugar de un motor basado puramente en reglas definidas a mano consiste en delegar el proceso de inferir estas reglas a la máquina. Este proceso puede realizarse a través de la recolección de todos los ejemplos que puedan adquirirse del problema, y usar un modelo de Machine Learning para ajustarse a ellos.
En el caso que estamos usando como ejemplo, los datos recolectados serían las diferentes combinaciones de los valores de los indicadores seleccionados sumado a si la concesión del préstamo ha sido positiva o no por parte de un agente bancario. Este es un problema de aprendizaje supervisado y, por lo tanto, un modelo de Machine Learning puede ser entrenado con estos datos para que aprenda en qué casos la concesión es positiva y en cuáles es negativa.
Cuando el modelo aprende con éxito, es común encontrarse que además es capaz de generalizar, lo que significa que, ante nuevos casos no usados para entrenar el sistema, el modelo es capaz de dar una respuesta que, con una alta probabilidad, podría ser válida para determinar la concesión del préstamo. Además, esta probabilidad de acierto en nuevos casos puede afinarse incorporando un mayor número de ejemplos durante el entrenamiento del modelo.
En consecuencia, un modelo de Machine Learning entrenado habrá extraído automáticamente los patrones que definen la validez de una concesión de un préstamo a partir de los indicadores aportados y de los ejemplos enseñados; además, es posible (y común) que existan patrones tan complejos que se escapen a la visión que pueda tener un experto. Este es el caso del traductor de Google, el cual se basaba en reglas gramáticas y sintácticas de vocabularios definidas manualmente por expertos; sin embargo, en 2005 fue transformado a un sistema estadístico SMT (Statistical Machine Translation) [1] para que el sistema pudiera adaptarse automáticamente en base a ejemplos y, finalmente, en 2016 fue transformado a un sistema NMT (Neural Machine Translation)[2], que permite usar Redes Neuronales en el proceso, mejorando drásticamente la precisión en comparación a un motor de reglas que había estado siendo perfeccionado durante años.
Iván de Paz Centeno es Científico de datos, ingeniero de I+D en Xeridia
[1] Och, F. J. (2005). Statistical machine translation: Foundations and recent advances. Tutorial at MT Summit.
[2] Wu, Y., Schuster, M., Chen, Z., Le, Q. V., Norouzi, M., Macherey, W., … & Klingner, J. (2016). Google’s neural machine translation system: Bridging the gap between human and machine translation. arXiv preprint arXiv:1609.08144.