# Sistema autoadaptativo

Los sistema autoadaptativos (SAA) son sistemas que pueden desarrollarse y aprender por sí mismos y en los que tanto sus parámetros como su estructura se adaptan al entorno en tiempo real. Estos sistemas están normalmente asociados con sistemas que reciben gran cantidad de datos y cuyo modo de operación es en tiempo real.
Normalmente, las técnicas adaptativas convencionales son adecuadas para representar sistemas que sufren pequeños cambios en su estructura. Sin embargo, para el manejo de sistemas complejos con múltiples modos de operación o cambios drásticos en sus características, estas técnicas convencionales suelen necesitar mucho tiempo para aprender los nuevos parámetros del modelo. El paradigma de los SAA está basado en el concepto de evolucionar (expandir o reducir) la estructura del sistema para que ésta pueda ser capaz de adaptarse a los cambios en el entorno.
De esta forma, los SAA son capaces de desarrollar su estructura, su funcionalidad y su representación interna del conocimiento. Esta evolución se realiza a partir de un aprendizaje continuo obtenido utilizando los nuevos datos recibidos e interaccionando con el entorno. El marco de estos sistemas está basado en la inteligencia computacional (sistemas borrosos basados en reglas o redes de neuronas artificiales) y la herramienta para su entrenamiento es el aprendizaje automático.

## Retos

Un importante reto actual en investigación en el campo de la IA consiste en el desarrollo de métodos teóricos, algoritmos e implementaciones de sistemas con un gran nivel de flexibilidad y autonomía, pudiendo incluso hablar de cierto grado de inteligencia. Pero para que esto se cumpla, estos sistemas deben ser capaces de evolucionar tanto su estructura como su conocimiento en el entorno en el que se encuentren, desarrollando así su inteligencia. Para enfrentarse a problemas de modelado, control, predicción, clasificación y procesado de datos en sistemas ubicados en entornos que están en continuo cambio, el sistema utilizado debe ser capaz de modificar y evolucionar tanto su estructura como los parámetros que lo forman (sin utilizar un pre-entrenamiento y una estructura fija). Así, el sistema debería ser capaz de evolucionar, es decir, autodesarrollarse, autoorganizarse, autoevaluarse y automejorarse.
Uno de los sistemas que trata de solucionar y obtener este tipo de inteligencia son los denominados (en inglés) Evolving Fuzzy Systems. Debido a su muy reciente aparición (las investigaciones pioneras en estos sistemas datan del año 2000), no se ha encontrado una traducción al español utilizada en el ámbito científico. De este modo, en esta artículo se ha optado por utilizar el término Sistemas Autodaptativos. Además, deben diferenciarse de los sistemas evolutivos que como veremos más adelante, son sistemas diferentes.

## Sistemas autoadaptativos frente a sistemas evolutivos

En la actualidad, los algoritmos evolutivos están bien definidos y relacionados con técnicas computacionales para buscar una solución a un problema. Para realizar esta búsqueda, estos sistemas utilizan de la naturaleza el concepto genético o evolución de una población basándose en mecanismos computacionales que imitan, mutan, realizan cruzamiento de cromosomas, se reproducen y seleccionan. Para aclarar más estos conceptos, se muestran las definiciones que encontramos en el diccionario de la lengua española sobre el término genético: \textit{Parte de la biología que trata de la herencia y de lo relacionado con ella} y sobre el término evolutivo: perteneciente o relativo a la evolución.
De esta forma, si comparamos estos sistemas bien establecidos actualmente en el campo de la investigación con los sistemas presentados en esta tesis, podemos comprobar que los sistemas evolutivos están relacionados con la evolución de los individuos que forman una población. Sin embargo, los SAA hacen referencia a la capacidad que tiene cada individuo de desarrollarse por sí mismo, algo que suele ser conocido en los humanos como desarrollo mental autónomo. Así, en los SAA se crea nuevo conocimiento a partir del aprendizaje de las experiencias y son comparables con el proceso de aprendizaje gradual que sufrimos las personas (especialmente cuando somos niños) a lo largo de nuestra vida. De esta forma, al igual que el proceso de aprendizaje de los humanos, estos sistemas pueden ser inicializados con determinado conocimiento o sin embargo, también pueden aprender sin una base inicial (desde cero).
Debemos también considerar que dado que los SAA son abiertos, ampliables y flexibles. Además, tampoco son comparables con sistemas en tiempo real o sistemas incrementales.

## Propiedades de los sistemas autoadaptativos

Para poder aprender y mejorar, los SAA deben ser capaces de procesar en tiempo real gran cantidad de información. Durante las últimas décadas, la información que muchos sistemas tienen que recopilar, almacenar y tratar está incrementando de forma exponencial. Ejemplos de estos sistemas son aquellos que tratan datos obtenidos en Internet, datos sobre biología molecular, datos sobre procesos industriales avanzados, etcétera. Además, la mayoría de estos sistemas obtienen datos en tiempo real pero no suelen ser capaces de procesar tanta información y generar una respuesta automática.
Los SAA pretenden generar respuestas con la información recibida en tiempo real. Si la información a tratar es estática y no ampliable, los SAA no son adecuados. Dada la gran cantidad de datos que pueden recibirse en tiempo real, estos sistemas reciben la información y después de procesarla, desechan todos aquellos datos que no son relevantes. Por lo tanto, en memoria, sólo se almacenará el conjunto de datos actual a tratar y un número de variables (este número es normalmente muy pequeño) a utilizar para los cálculos necesarios. Lo que hace a estos sistemas tan potentes es que no es necesario almacenar todos los datos que se leen, ya que determinadas variables almacenarán información que nos permiten tratar los nuevos datos recibidos como si dispusiéramos de toda la información recibida hasta entonces. Esta importante característica, sin embargo, hace que no sea posible deshacer cambios en el sistema ni obtener situaciones anteriores a la actual; pero nos permite procesar la información a gran velocidad. Además, esta característica hace que el sistema sea dependiente del orden en el que se leen los datos.
Otra importante característica de los SAA consiste en poder ser capaces de interpretar los datos de forma eficiente. Es decir, obtener un modelo que pueda ser interpretado. Para esta interpretación suele ser necesario conocer el entorno en el que se está aplicando, pero el modelo obtenido se pretende que nos dé información sobre porqué actúa de esa manera.
Como resumen, podemos concluir que los SAA pretenden solventar una serie de propiedades que normalmente tienen la mayoría de los sistemas y que son:
1. La estructura (su inteligencia computacional) de los sistemas actuales suele ser fija. Como ejemplo, podemos considerar las redes de neuronas (cuya estructura de capas no suele modificarse) o los sistemas basados en reglas (cuyo número de reglas suele ser fijo).
2. El entrenamiento de los sistemas suele hacerse de forma off-line, sin poder adaptarse al entorno en el que estos se están desarrollando.
3. No es posible conocer porqué el sistema se ha comportado de esa forma determinada.