Agentes software emocionales para la recuperación automática de sesiones de video-streaming con dispositivos móviles
Abstract
Programa de doctorado: Tecnologías de la Información y sus Aplicaciones. La fecha de lectura es la fecha de publicación.
Full text
DEPARTAMENTO DE INFORMÁTICA Y SISTEMAS TESIS DOCTORAL AGENTES SOFTWARE EMOCIONALES PARA LA RECUPERACIÓN AUTOMÁTICA DE SESIONES DE VIDEO-STREAMING CON DISPOSITIVOS MÓVILES Francisco José Espino Espino Las Palmas de Gran Canaria, 2015
Departamento: Informática y Sistemas Programa de doctorado: Tecnologías de la Información y sus Aplicaciones Título de la Tesis Agentes Software Emocionales para la Recuperación Automática de Sesiones de Video-Streaming con Dispositivos Móviles Tesis Doctoral presentada por D. Francisco José Espino Espino Directores: Dr. D. Álvaro Suárez Sarmiento Dra. Dª. Elsa María Macías López Los directores, El doctorando, Las Palmas de Gran Canaria, a 30 de octubre de 2015
A mis padres.
Agradecimientos Esta tesis ha sido toda una aventura. Una de esas con final incierto y certeza de fracaso hasta el último momento. Una arriesgada acrobacia que con ambición e independencia ha acabado bien pese a la gran dificultad, a la enorme resistencia institucional y al elevado coste económico y personal que ha supuesto. Ciertamente “audentis Fortuna iuvat”. Muchas personas han aportado algo de una u otra manera en este trabajo y por ello estoy muy agradecido. Destacar a mis padres Manolo y Paqui, y a mi hermana Elisenda, por acompañarme siempre, animarme y apoyarme incondicionalmente. A mis directores de tesis Álvaro y Elsa por guiarme y ayudarme en esta complicada labor. Y como no, a una infinidad de colegas, amigos y amigas que tengo la suerte de conocer, por interesarse y compartir conmigo su vasto conocimiento en multitud de materias y disciplinas científicas, filosóficas, técnicas y artísticas, siendo una fuente valiosísima e inspiradora para el desarrollo y conclusión de esta tesis. Finalmente quiero mencionar también a todas esas personas más o menos anónimas que con su esfuerzo y dedicación han apostado y apuestan por liberar la cultura y hacerla más accesible a todo el mundo. Además de promover una sociedad mucho mejor, facilitan enormemente la labor de los creadores en general y, por ende, de investigaciones como ésta.
Resumen Los dispositivos móviles han evolucionado en pocos años hasta lograr prestar una gran cantidad de servicios. Aquellos que requieren comunicaciones con otros dispositivos se enfrentan a la problemática inherente del empleo de redes inalámbricas: comportamiento caótico y desconexiones frecuentes. Con el videostreaming esta circunstancia es una dificultad considerable. Ante la presencia de desconexiones en la red el video-streaming puede desde interrumpirse temporalmente hasta quedar invalidado permanentemente perdiendo la sesión establecida. En este trabajo se propone una solución basada en agentes software emocionales con la que minimizar los efectos negativos de esta situación. Estos agentes software emocionales son de inspiración biológica y poseen distintas habilidades cognitivas. Entre ellas la principal es la capacidad de predecir el futuro inmediato en un entorno caótico con una tasa de acierto elevada. En este caso el entorno es la red inalámbrica y en ella los agentes consiguen actuar antes de que se produzcan momentos críticos capaces de interrumpir el video-streaming maximizando de este modo la posibilidad de que transcurra con éxito. Para emular capacidades mentales artificialmente se hace uso de un modelo descriptivo de la combinación intuición-pensamiento que aunque hipotético resulta coherente con el conocimiento disponible actualmente en neurociencia cognitiva. Para justificar su eficacia se incluyen diferentes pruebas.
XII ÍNDICE DE FIGURAS Fig. 48. Parámetros de rendimiento del patrón 4 (exterior)................................. 198" Fig. 49. Evolución de la memoria con el patrón 4 (exterior)................................ 199" Fig. 50. Parámetros de rendimiento del patrón 5 (exterior)................................. 200" Fig. 51. Evolución de la memoria con el patrón 5 (exterior)................................ 201" Fig. 52. Parámetros de rendimiento del patrón 6 (exterior)................................. 202" Fig. 53. Evolución de la memoria con el patrón 6 (exterior)................................ 203" Fig. 54. Parámetros de rendimiento del patrón 1 (interior) ................................. 204" Fig. 55. Parámetros de rendimiento del patrón 2 (interior) ................................. 205" Fig. 56. Evolución de la memoria con el patrón 1 (interior) ................................ 206" Fig. 57. Evolución de la memoria con el patrón 2 (interior) ................................ 206" Fig. 58. Parámetros de rendimiento del patrón 3 (interior) ................................. 207" Fig. 59. Parámetros de rendimiento del patrón 4 (interior) ................................. 208" Fig. 60. Evolución de la memoria con el patrón 3 (interior) ................................ 209" Fig. 61. Evolución de la memoria con el patrón 4 (interior) ................................ 209" Fig. 62. Parámetros de rendimiento del patrón 5 (interior) ................................. 210" Fig. 63. Parámetros de rendimiento del patrón 6 (interior) ................................. 211" Fig. 64. Evolución de la memoria con el patrón 5 (interior) ................................ 212" Fig. 65. Evolución de la memoria con el patrón 6 (interior) ................................ 212"
1 Capítulo 1 Introducción RESUMEN: este capítulo trata del contexto en el que se sitúa el trabajo de investigación realizado, su motivación y los objetivos perseguidos. También incluye indicaciones sobre la estructura de la presente memoria. 1.1 Consideraciones iniciales Un dispositivo móvil se caracteriza esencialmente por ser un computador de uso personal que por su forma, tamaño y peso puede llevarse en una mano mientras se utiliza. Esto es una “máquina electrónica dotada de una memoria de gran capacidad y de métodos de tratamiento de la información, capaz de resolver problemas aritméticos y lógicos gracias a la utilización automática de programas registrados en ella” [1]. El grupo de los computadores de uso personal e individual puede dividirse en varias categorías según el grado de movilidad que presentan los mismos, determinado éste principalmente por el peso, el tamaño y la independencia energética de la máquina. Los más grandes son los computadores de sobremesa que están diseñados para mantener una ubicación fija mientras son utilizados. Al no tener restricciones energéticas ni de espacio físico pueden incorporar una variedad mayor de componentes, optando generalmente por los de más rendimiento. A continuación se encuentran los computadores portátiles, mucho más pequeños y
2 Introducción ligeros, que pueden transportarse con facilidad. Tienen una cierta autonomía al poder operar un período de tiempo sin estar conectados a la red eléctrica pero siempre en un entorno estático, sin movimiento de la máquina. Funcionalmente los computadores de sobremesa y portátiles son muy parecidos y pueden compartir programas informáticos entre ellos. Finalmente la última categoría de computadores personales, los más pequeños e independientes, la forman los dispositivos móviles. Están pensados para ser manejables, operar de forma completamente autónoma y resistir movimientos físicos durante su uso. Funcionalmente son muy diferentes de los de mayor tamaño al estar mucho más limitados en recursos como memoria, pantalla o capacidad de cálculo, y por ello requieren de programas informáticos especialmente diseñados para ellos [2]. Sin embargo, estos dispositivos suelen tener una gran capacidad de comunicación usando distintas tecnologías y un número elevado de sensores. El uso de los dispositivos móviles se ha generalizado en los últimos años. Estas máquinas proporcionan servicios muy específicos en los que el factor movilidad les adjudica un valor añadido considerable, poniéndolas en esos casos por delante de las de mayor tamaño, los computadores de propósito general (de sobremesa y portátiles). La especialización de los dispositivos móviles hace que tengan la capacidad de cálculo y memoria justas para su cometido, siendo generalmente escasas en general. Con ello consumen menos energía mejorando la autonomía que le proporciona las baterías de las que se alimentan y les hace independientes de la red eléctrica cuando son utilizados. Sus sistemas operativos también están especialmente diseñados para ahorrar consumiendo pocos recursos y optimizados para trabajar con eventos externos, situándose en cuanto a la gestión de los mismos a lo largo del tiempo entre los laxos sistemas operativos convencionales y los estrictos sistemas operativos de tiempo real. Otra
1.1 Consideraciones iniciales 3 característica básica de los dispositivos móviles es que pueden conectarse y comunicarse con otros dispositivos ya sea por cable o inalámbricamente ampliando así sus capacidades iniciales. Para clasificar un dispositivo móvil entre los diferentes tipos existentes en el mercado hay que considerar la fisonomía que posee, los servicios que puede prestar y el rendimiento que alcanza en cada uno de ellos, y considerar que las diferentes categorías que se pueden dar como, entre otras, teléfonos móviles, tabletas, videoconsolas portátiles, Asistentes Personales Digitales (PDA), geolocalizadores, reproductores multimedia, cámaras digitales de fotos o vídeo, no son categorías disjuntas: por ejemplo existen cámaras fotográficas que proporcionan servicios de geolocalización o tabletas de reducido tamaño que hacen fotografías y llamadas telefónicas. Una nueva categoría que ha surgido de la combinación principalmente de un teléfono móvil con una PDA es la de teléfono móvil inteligente, o smartphone, constituyendo uno de los grupos de dispositivos móviles más relevantes en nuestros días. Los teléfonos móviles inteligentes son un tipo de dispositivo móvil muy común y realmente numeroso, superando actualmente los mil millones de aparatos en todo el mundo [3] y con perspectivas de importante aumento de su población en el futuro. Este éxito se debe principalmente al carácter práctico de estos dispositivos. Su tamaño físico es más bien reducido, caben en la palma de una mano, y son extremadamente polivalentes, pueden realizar un gran número de tareas diferentes como grabar y reproducir contenidos multimedia (audio y vídeo), navegar por Internet [4], usar servicios de geolocalización basado en el Global Positioning System (GPS) [5], ejecutar aplicaciones móviles complejas, de asistencia personal o videojuegos, y servir de terminal de telefonía móvil como su propio nombre indica. Un caso particular es la reproducción de contenidos multimedia generados o
4 Introducción ubicados en un equipo externo o servidor y que son comunicados por la red. Existen varios métodos para ello siendo los más interesantes los que permiten simultanear la descarga con la reproducción del contenido multimedia. Esto se conoce como streaming [6] y su utilización y problemática en dispositivos móviles, sobre todo en teléfonos móviles inteligentes, son el fundamento de este trabajo, con especial énfasis en el streaming de vídeo el cual acapara actualmente la mayor parte del tráfico de datos de estos dispositivos y se prevé que sea el que más crezca en los próximos años [7]. Antes de la aparición del streaming se reproducía un vídeo ubicado en un servidor primero descargándolo completamente en el cliente y después iniciando su reproducción. En este caso las tareas necesarias de descarga y visualización se realizan secuencialmente. Esto tiene dos inconvenientes fundamentales acrecentados por su cantidad de información: elevado número de fotogramas y pixels por fotograma (peso o tamaño del vídeo) que suelen tener los vídeos aunque tengan una duración relativamente pequeña. El primero de estos inconvenientes es el tiempo de espera necesario para que se realice la descarga, normalmente largo, y el segundo el espacio necesario para guardar el contenido descargado, generalmente bastante grande. El streaming soluciona en gran medida estos dos problemas de manera satisfactoria. La técnica de streaming aprovecha que el vídeo se divide en paquetes del mismo tamaño que suelen agrupar a varios fotogramas o frames de vídeo. Los distintos paquetes se envían ordenadamente desde el primero hasta el último en secuencia desde el servidor de vídeo hasta el cliente reproductor o visualizador. Solapadamente en el tiempo, a la vez que el servidor de vídeo está enviando un paquete, por la Red pueden viajar otros y el cliente puede mostrar otros. Con ello se consigue ejecutar en paralelo la emisión por parte del servidor, la comunicación
1.1 Consideraciones iniciales 5 por la red y la recepción y reproducción en el cliente. En este caso el tiempo de espera para empezar a reproducir corresponde al retraso de recepción del primer paquete. El espacio de memoria necesario es también mínimo porque estos paquetes una vez reproducidos se eliminan de la memoria. La inmediatez y la escasa utilización de recursos del streaming lo hacen muy apropiado y conveniente para ser empleado en teléfonos móviles inteligentes, en los que la eficiencia se hace incluso más necesaria que en los computadores de propósito general, ya que los teléfonos móviles inteligentes disponen de menos recursos. Sin embargo, la técnica de streaming requiere de un canal de comunicación en condiciones suficientes de ancho de banda y estabilidad para el envío fluido y monótono de los paquetes. Los teléfonos móviles inteligentes modernos disponen de tecnologías de comunicación de banda ancha, como por ejemplo Wireless Fidelity (WiFi) [8] o High Speed Downlink Packet Access (HSDPA) [9] o Long Term Evolution (LTE) [10], que permiten el uso de streaming al lograr una velocidad de comunicación aceptable que permite ocultar en todo el proceso la latencia propia de la red. Sin embargo, estas tecnologías se basan en canales de comunicación inalámbricos que no pueden garantizar a lo largo del tiempo una estabilidad suficiente en su funcionalidad. El comportamiento caótico espacio-temporal de los canales inalámbricos [11] provoca variaciones de ancho de banda frecuentes y en el peor de los casos hasta desconexiones esporádicas de los dispositivos invalidando completamente el canal. Estas desconexiones tienen causas muy variadas y pueden producirse a diversos niveles de la arquitectura de red. Todo esto hace que el streaming en teléfonos móviles inteligentes pierda efectividad y a veces sea impracticable. Una desconexión de este tipo supone para el usuario la pérdida de la sesión de streaming y la obligación de iniciar otra sesión para reanudar la reproducción del contenido, lo cual supone un tiempo, un volumen de datos y un esfuerzo que pueden ser
6 Introducción inasumibles en muchas ocasiones. También pueden darse casos como por ejemplo en la transmisión de un vídeo en vivo (de generación y transmisión simultánea) en el que la porción emitida durante la desconexión se pierde irremediablemente y no puede ser recuperada posteriormente, lo cual va en perjuicio de la experiencia del usuario. Para el servidor y la red una desconexión también es un problema. Al servidor se le obliga a realizar movilizaciones y desmovilizaciones continuas de recursos que son costosas, e innecesarias si no se produjeran estas desconexiones. También hay que tener en cuenta que en el intervalo de tiempo que hay entre la desconexión y su detección se transmiten paquetes que no van a ser consumidos saturando la red de forma inútil. Pero las desconexiones, tan corrientes en las redes inalámbricas, son sólo parte del problema. Hay que considerar que para mantener una sesión de streaming debe garantizarse un mínimo de ancho de banda en la red utilizada, dependiente éste de las características del contenido transmitido. Cualquier disminución del ancho de banda en la que quede por debajo de ese límite puede desde añadir pequeños retrasos en el flujo de datos hasta bloquearlo temporal o permanentemente afectando directamente a la reproducción del contenido. El caso más radical de disminución de ancho de banda es el de una desconexión en la que éste queda anulado y el flujo de datos se bloquea permanentemente. Aunque no es posible aumentar el ancho de banda de una red sin modificarla o subsanar una desconexión que ha sido inevitable sí que se pueden tomar ciertas medidas para minimizar los daños producidos al perder el flujo de datos. En el caso del streaming con teléfonos móviles inteligentes estas acciones se vuelven imprescindibles, mucho más que en las redes por cable donde el ancho de banda no fluctúa tanto y tan rápido y las desconexiones son más bien inusuales y excepcionales, todo lo contrario que en las redes inalámbricas.
1.1 Consideraciones iniciales 7 Las acciones que se pueden llevar a cabo para mejorar la calidad del streaming en redes inalámbricas se ven limitadas por la elevada frecuencia de variación del ancho de banda efectivo del canal sin causas claramente motivadas. Estas acciones pueden ser reactivas y ejecutarse tras la ocurrencia de un evento problemático. El intervalo de tiempo entre el evento causante y la acción consecuente, determinado éste por el tiempo necesario para la detección del evento, hace que algunas veces esta solución sea ineficaz por la lentitud de respuesta asociada, lo que puede añadir retrasos o incluso pérdida de datos en la comunicación. La solución ideal en este caso tiene que permitir anticiparse a los eventos problemáticos que se pueden dar. Sin embargo, realizar predicciones del comportamiento de un canal inalámbrico con un elevado grado de acierto, condición necesaria para la citada solución, es muy complicado y en la mayor parte de las veces imposible con los medios actuales. Esto se debe a que el entorno de una red inalámbrica es el medio físico real por donde viajan las ondas electromagnéticas y éste es muy parcialmente observable, no es posible conocer en su totalidad el estado de todos sus componentes. Este es un ejemplo de sistema nolineal y caótico [12] en el que existen muchas variables relevantes, más de las observables, que son continuas, muy dinámicas y que cambian frecuentemente de forma irregular, sin un patrón claro y conocido de antemano. En esta situación conseguir predicciones concretas y acertadas con las que responder de forma proactiva a las dificultades que se pueden presentar en las comunicaciones inalámbricas no es técnicamente viable en nuestros días. Seguir avanzando en la resolución de este problema es el propósito fundamental de este trabajo y para ello se combinan las herramientas usuales que se aplican en los sistemas dinámicos nolineales, como el análisis de series temporales [13], con áreas como el aprendizaje automático [14], la neurociencia [15] o la psicología de la emoción [16].
8 Introducción 1.2 Motivación El streaming en dispositivos móviles adolece de graves problemas, principalmente por la naturaleza de sus sistemas de comunicación inalámbricos. En primer lugar el comportamiento de un canal inalámbrico (no guiado) es prácticamente impredecible en comparación con el comportamiento de un canal guiado. Se pueden producir aumentos y disminuciones del ancho de banda llegando a puntos de ausencia de señal teniendo como consecuencia la desconexión de los terminales, todo ello en periodos de tiempo cortos. Este panorama para una tarea en tiempo real y de alta carga computacional como el streaming requiere de sistemas que como mínimo mitiguen estos problemas. Los servidores actuales de video-streaming proporcionan medios muy primitivos (poco resolutivos) especialmente orientados a la solución de los problemas típicos que se originan de su utilización con terminales móviles. Las pérdidas de información y la necesidad de establecer una nueva sesión de streaming cada vez que se pierde la cobertura son los principales a tener en cuenta, y su tratamiento es de vital importancia para un aumento de la Calidad de Experiencia (QoE) que experimenta el usuario al reproducir contenidos multimedia en los dispositivos móviles. Al ser software cerrado, la mayoría de los servidores y clientes de videostreaming con posibilidad de ser usados en dispositivos móviles se hace necesario el uso de componentes intermediarios independientes para añadir nuevas funcionalidades. Éstos pueden tomar forma de monitores de red controlando ciertos parámetros del tráfico de datos e interactuando con el servidor y el cliente, o también pueden actuar como representantes (proxies) del servidor o del cliente ampliando sus capacidades.
1.2 Motivación 9 Otro aspecto relevante en el desarrollo de una solución a estos problemas reside en la propia naturaleza de los dispositivos móviles. Aunque hayan aumentado en gran medida en capacidad, sus recursos siguen siendo escasos. Por lo tanto se requieren aplicaciones livianas. Otro condicionante es la enorme heterogeneidad de la población de estos aparatos, por lo que para llegar a un número mayor de los mismos hay que basar las soluciones en tecnologías y herramientas de desarrollo con gran difusión entre ellos. En general para controlar la inestabilidad propia de las redes inalámbricas se han utilizado proxies con los que adaptar la velocidad de transmisión, teniendo en cuenta el estado del canal inalámbrico [17], de los recursos previamente almacenados [18], o del vídeo en vivo [19]. Estos proxies se han programado como agentes software de una plataforma propietaria [20] para resolver las desconexiones mientras se resuelven los procesos de itinerancia (roaming) usando un esquema de memorización intermedia (buffering) proactivo; sin embargo, no se ha aplicado en la práctica sobre arquitecturas de teléfonos móviles comerciales. La incorporación de una memoria intermedia o buffer en un canal inalámbrico utilizado para realizar streaming permite amortiguar las variaciones del retraso de transmisión de paquetes (jitter) y los efectos de la congestión de la red [21]. Todo ello a costa de introducir un retraso constante en todos los paquetes el cual debe ser tomado en consideración ya que aunque indeseado es proporcional a la capacidad de amortiguación del buffer. Con poco retraso, propio de un buffer de poca capacidad, se consigue también poca amortiguación y con mucha amortiguación, propia de un buffer grande, el retraso aumenta. Otro problema resulta de la dificultad de controlar un buffer de estas características, lo cual no es trivial y mucho menos en un canal inalámbrico [22] con dispositivos móviles que tienen requisitos especiales de eficiencia y bajo consumo de energía [23]. Un buffer
16 Introducción o Modelo fundamentado en reglas lógicas y proceso de eventos complejos implementado con la herramienta Drools [57]. o Modelo de inspiración biológica más general, flexible y realista emulando la combinación intuición-pensamiento. Diseño e implementación de software: o Software para distintos teléfonos móviles con los siguientes sistemas operativos: Symbian S60 3.1 [58] (Nokia N95 [59]), Android 2.3.6 Gingerbread [60] (Samsung Galaxy Ace GT-S5830 [61]), Android 4.1.2 Jelly Bean [62] (Samsung Galaxy Ace 2 GT-I8160P [63]), Android 4.4.4 KitKat [64] (Samsung Galaxy Ace 4 SM-G357FZ [65]) y Android 5.1.1 Lollipop [66] (Motorola Moto G (3rd Gen.) [67]). o Software para distintos servidores basados en Microsoft Windows [68], Ubuntu Linux [69], Mac OS X [70]. o Software para distintos tipos de proxies, nativo escrito en C [71] y C++ [72] y multiplataforma escrito en Java [73] y Python [74]. Parte del trabajo anterior se ha desarrollado como colaborando en el proyecto de investigación Video Streaming Proxy Agents (VPA), Ministerio de Industria, Turismo y Comercio, FIT-330210-2006-54, 2006 y 2007, como miembro contratado por la ULPGC y en colaboración con la empresa INERZA S.A. Parte del trabajo realizado se ha publicado en congresos, revistas y capítulos de libro internacionales:
1.5 Organización de la memoria 17 A. Suárez, F. Espino, E.M. Macías, “Uso de JADE-LEAP para recuperar automáticamente sesiones de vídeo-streaming en teléfonos móviles”, en las XVIII Jornadas TELECOM I+D, 2008 [75]. A. Suárez, F. Espino, E.M. Macías, “Automatic recovering of RTSP sessions in mobile telephones using JADE-LEAP”, en la revista IEEE Latin America Transactions, 2009 [76]. E. Macías, A. Suárez, F. Espino, “Multi-platform Video Streaming Implementation on Mobile Terminals”, en el libro A. Suárez, E. Macías (Eds.) Multimedia Services and Streaming for Mobile Devices: Challenges and Innovations, Information Science Reference, 2012 [77]. 1.5 Organización de la memoria La organización de este documento está orientada a facilitar la comprensión de todo el proceso seguido para la consecución de los objetivos planteados en 1.3. En primer lugar se introduce la técnica de video-streaming. Se analiza la problemática generada por su utilización con dispositivos móviles y se propone una solución bajo el paradigma de los agentes software.A continuación se relata cómo dotar a agentes software de cualidades emocionales útiles para interactuar en entornos caóticos deterministas parcialmente observables y sobre todo para conseguir predicciones efectivas bajo un horizonte de unos pocos segundos. Finalmente se enuncian los resultados obtenidos en diferentes situaciones con y sin interrupciones. Éstos son fruto de la previa validación de todo el sistema informático desarrollado incorporando los mecanismos propuestos. El análisis de
18 Introducción estos resultados se realiza a nivel funcional y de rendimiento para evaluar la eficacia y la eficiencia de la solución desarrollada. Esta memoria termina con las conclusiones a las que se ha llegado y con la propuesta de líneas futuras de trabajo a seguir en base a los resultados conseguidos y al conocimiento aportado.
19 Capítulo 2 Video-streaming y dispositivos móviles RESUMEN: este capítulo incluye los aspectos básicos del video-streaming y la problemática que surge al emplearlo en dispositivos móviles como tabletas o teléfonos móviles inteligentes. Se propone una solución para mitigar los efectos negativos de las interrupciones en la reproducción del video-streaming. 2.1 Introducción La comunicación y difusión de vídeo digital es una tarea problemática debido principalmente a: 1. El vídeo en general ocupa mucho espacio en memoria, lo que ha motivado el uso de diferentes técnicas de COmpresión-DEsCompresión (CODEC) que sólo mitigan la problemática. 2. Las técnicas de CODEC requieren una elevada capacidad de cálculo para lo que es necesario hardware muy potente. 3. La técnica de DEC en el reproductor se debe realizar en tiempo real firme (firm real time) lo que obliga a mejorar considerablemente el software y el hardware que lo implante.
20 Video-streaming y dispositivos móviles A pesar de ello, la reproducción de vídeo almacenado o emitido en directo desde un servidor remoto de Internet, incluso en enlaces con escaso ancho de banda, es una realidad hoy en día. Para ello se utilizan técnicas de comunicación complejas de implantar que aprovechan al máximo el ancho de banda y la capacidad de cálculo de servidores y reproductores; todo ello acoplado y sintonizado adecuadamente. A continuación se analiza la evolución de estas técnicas. Originalmente los contenidos multimedia ubicados en servidores conectados a Internet tenían que ser descargados completamente a un medio de almacenamiento local para su reproducción. A nivel de usuario esto es muy poco atractivo ya que el tiempo transcurrido desde la solicitud del audio o vídeo de interés hasta su reproducción puede llegar a ser inaceptable en algunos casos y en otros, cuanto menos, molesto. Otra traba importante para el usuario es la necesidad de espacio físico para almacenar el contenido multimedia requerido. En muchos casos el dispositivo reproductor no tiene la capacidad suficiente. Para solventar en parte esta situación aparece la descarga progresiva. Con ella sigue siendo necesario disponer de gran cantidad de espacio de almacenamiento en un medio local pero el contenito multimedia puede reproducirse durante su descarga tras un tiempo de espera inicial muy bajo. La reproducción puede comenzar desde que se dispone de información suficiente en el medio local donde se guarda la descarga. La comunicación se realiza generalmente a la máxima velocidad posible pudiéndose dar el caso de que la descarga finalice mucho antes que la reproducción. Esto permite soportar pequeñas interrupciones en la descarga, si no se llega a consumir todos los datos disponibles en el reproductor antes de que se reanude, dando cierta robustez al proceso.
2.1 Introducción 21 La descarga progresiva tiene algunos problemas prácticos. Además de necesitar gran cantidad de espacio en una memoria local para la propia descarga, tiende a saturar la red. Otro inconveniente es que el retraso que existe entre la petición de descarga y el comienzo de la reproducción se mantiene en el tiempo y es demasiado grande para lograr comunicaciones en directo. Con la aparición del streaming se superaron estos problemas: no se descarga el contenido multimedia, la comunicación se realiza a una velocidad adecuada para la reproducción y el retraso es mínimo. El streaming es una técnica de comunicación de datos que permite procesar un flujo secuencial de información de forma casi inmediata y continua, según se vaya recibiendo. Este flujo consiste en uno o varios medios multiplexados, provenientes de uno o varios servidores, que son recibidos en tiempo real por un cliente usando una red. La información se refiere al contenido multimedia que previamente ha sido comprimido en un formato compatible con esta tecnología tal que pueda ser subdividido en paquetes de información transmisibles de forma ordenada al destinatario. Estos paquetes son almacenados en un pequeño espacio de memoria, o buffer, al llegar al cliente. Una vez lleno se comienza la reproducción. Este proceso dura muy poco tiempo después de iniciado el flujo. Los paquetes sólo se guardan el tiempo necesario para ser reproducidos después del cual el lugar que ocupan en el buffer es usado por los nuevos paquetes que van llegando sucesivamente. Al final se vacía todo el buffer. De esta manera se consigue una reproducción fluida y que no se tenga que almacenar ningún archivo. El streaming ha incrementado de forma notable las posibilidades de comunicar gran cantidad de contenidos multimedia en Internet. Esta técnica permite publicar vídeo o audio que el usuario puede reproducir con un tiempo de espera mínimo y sin necesidad de descargar previamente todo el contenido. El usuario inicia una sesión de streaming y elige quedarse o abandonar sin mayor
22 Video-streaming y dispositivos móviles problema. Además, esta técnica aprovecha las redes de comunicación actuales sin necesidad de modificaciones y sin interferir con otras aplicaciones. El streaming presenta algunos inconvenientes. Uno de ellos es que requiere de un ancho de banda efectivo en la Red que en ningún caso puede ser inferior a la tasa de transferencia propia del contenido en cada momento. Si se diera el caso se pueden producir interrupciones en la reproducción. Otro inconveniente es la complejidad de los procesos dedicados al streaming: se requiere de mucha pericia y experiencia para lograr un producto eficiente y eficaz. Las aplicaciones del streaming son muy numerosas. Una de las más destacadas es la posibilidad de transmitir radio y televisión en directo por Internet, cosa impensable hasta la aparición de esta técnica. Las videoconferencias por Internet son otras actividades realizadas también en directo que sin streaming no serían posibles. Otras aplicaciones utilizan la capacidad de mezclar y sincronizar varios flujos de datos independientes como, por ejemplo, la subtitulación de vídeos. El streaming es realmente práctico en dispositivos con bajas capacidades como los teléfonos móviles. La comunicación de contenidos multimedia mediante streaming se puede realizar de dos maneras: en directo o bajo demanda. Las marcadas diferencias entre ellas justifica el hablar de dos tipos de streaming: en directo y bajo demanda [78]. En el streaming en directo se ejecutan simultáneamente la creación de un contenido multimedia y su comunicación, todo ello sincronizadamente y en tiempo real. Esta comunicación está dirigida a uno o más usuarios que reciben la misma información en cada momento, reproduciendo lo mismo y a la vez. Estos usuarios no tienen control sobre la comunicación, no pueden detenerla o reanudarla, sólo participar o ignorarla. Esta clase de streaming es muy exigente siendo el retraso
2.1 Introducción 23 máximo permitido en la comunicación muy bajo, sobre todo en aplicaciones interactivas. El streaming bajo demanda se emplea para la comunicación de contenidos multimedia previamente grabados. La comunicación en este caso es individual e independiente. El usuario mantiene el control sobre ella pudiendo detenerla, reanudarla e incluso comenzar a reproducir en cualquier punto del contenido, todo ello sin tiempos de espera considerables. El nivel de exigencia del streaming bajo demanda es ligeramente inferior al de en directo. Esto hace que ponerlo en marcha sea más sencillo y se pueda emplear equipos con un rendimiento más modesto siempre y cuando el número de usuarios sea bajo. El streaming en directo es aquel en el que se comunican contenidos multimedia, como audio o vídeo, generados en el acto, es decir, con un retraso mínimo entre la creación y la comunicación por la red pudiendo reproducirse casi al momento. Las fuentes de los contenidos son muy variadas: cámaras, webcams, micrófonos, medios de almacenamiento o instrumentos musicales compatibles con Musical Instrument Digital Interface (MIDI) [79] entre otras. Cuando este tipo de streaming se emplea para comunicar en vivo un contenido a más de un destinatario a la vez se le suele asociar el término difusión o broadcast. En este caso todos ellos reciben la misma información prácticamente a la vez, con pequeñas variaciones producidas por retrasos principalmente de la red. De esta forma se puede emplear el streaming en directo para la difusión de contenidos multimedia de forma similar a la radio o la televisión. Para poder efectuar streaming en directo no es suficiente con un servidor convencional de streaming. Un servidor para streaming en directo debe ser capaz de capturar y comprimir en tiempo real la información proveniente de la fuente del
24 Video-streaming y dispositivos móviles contenido a comunicar. A este tipo de servidor se le conoce con el nombre de difusor o broadcaster. El streaming en directo hace un uso intensivo de recursos, tanto computacionales como de comunicación. Como medida de eficiencia se suele utilizar un broadcaster complementado por servidores proxies ubicados en máquinas diferentes, repartiendo así la carga del proceso. Para optimizar el uso de la red se suele emplear técnicas de ahorro como la multidifusión o multicast, evitando al máximo la difusión individualizada o unicast. En cualquier caso la red nunca se sobreutiliza, no existe la posibilidad de re-comunicar partes perdidas del contenido, cosa que aunque aparentemente positiva degrada considerablemente la QoE. El streaming en directo tiene múltiples aplicaciones. Las videoconferencias o la transmisión de eventos son algunas de ellas. La radio y televisión por Internet también utilizan el streaming en directo. El streaming bajo demanda es aquel en el que se comunican contenidos multimedia ya grabados. La creación, compresión y registro de todo el contenido es anterior a su comunicación. Éste queda almacenado en un medio físico estando disponible en cualquier momento. La relación cliente-servidor en el streaming bajo demanda es siempre uno a uno. La comunicación es individual e independiente, aún cuando varios clientes demandan un mismo recurso. El cliente puede ejercer el control sobre el proceso. En cualquier momento puede detener, reanudar o terminar el streaming. Para poder efectuar streaming bajo demanda es suficiente con un servidor de streaming que tenga acceso directo a los recursos publicados, es decir, que éstos se ubiquen en un medio local de la máquina que ejecuta el servidor.
2.2 Formatos 25 La eficiencia del streaming bajo demanda está marcada principalmente por el uso de la red. El entablar relaciones cliente-servidor uno a uno produce un gasto de recursos que se puede volver inasumible en algunos casos con un pequeño aumento del número de clientes. No es posible mitigar este problema utilizando la difusión multicast como en el streaming en directo porque ésta sólo es válida para relaciones servidor-cliente uno a muchos. Otro factor relevante relacionado con el uso de la red por el streaming bajo demanda es su posible sobreutilización que se da cuando se pierden partes del contenido y se vuelven a comunicar. Las aplicaciones del streaming bajo demanda son numerosas y variadas. Todas ellas se basan en la posibilidad de acceso rápido a recursos multimedia que han sido almacenados en repositorios y que son accesibles por los usuarios para su disfrute mediante reproductores compatibles con este tipo de streaming. Ver películas o escuchar música bajo demanda por Internet, con fines lúdicos, educativos o empresariales son algunas de sus aplicaciones. 2.2 Formatos El streaming de un vídeo no comprimido puede llegar a consumir un ancho de banda enorme. Sin aplicar ninguna compresión de datos previa con una resolución de alta definición (720p HD) (1280x720 píxeles), color verdadero (24 bits) y una frecuencia de muestreo de 30 fotogramas por segundo (30 fps) el ancho de banda requerido parte de (1280 x 720) x 24 x 30 = 663552000 bps, es decir, casi 664 Mbps lo que tanto en Internet como en redes domésticas es completamente inviable. Diferentes técnicas de compresión de vídeo [80] han conseguido disminuir en gran medida el volumen de datos a transmitir reduciendo consecuentemente el ancho de banda necesario para ello haciendo viable el streaming en este caso. Para un vídeo
32 Video-streaming y dispositivos móviles 5. Reproductor: es el encargado de reproducir el contenido multimedia usando la pantalla, los altavoces u otro elemento requerido del dispositivo. En la Fig. 2 se ilustra un cliente de streaming con los componentes citados y las relaciones que mantienen. El usuario comunica ordenes al servidor y el servidor comunica la información del contenido multimedia circula al usuario. Fig. 2. Cliente de streaming
2.3 Componentes 33 2.3.2 Servidor Un servidor de streaming es el encargado de generar el streaming a partir de contenidos multimedia. Los diferentes componentes de un servidor de streaming son: 1. Controlador: al igual que en el cliente, este componente es el encargado de parametrizar los demás componentes y de mantener la sesión de streaming. Recibe órdenes del cliente e intenta cumplirlas siempre dentro de sus posibilidades. 2. Empaquetador: genera los paquetes de streaming. En su cabecera se incluyen metadatos necesarios para la reproducción del streaming, y en el cuerpo cierta cantidad de información del contenido multimedia, dada en un formato de compresión. Normalmente en video-streaming el cuerpo de un paquete se corresponde con un fotograma. 3. Buffer: almacena durante un corto período de tiempo los paquetes de streaming generados. Su propósito es amortiguar las posibles variaciones del ritmo de empaquetado del contenido multimedia. En la Fig. 3 se ilustra la versión más sencilla de servidor de streaming con los componentes citados y las relaciones que mantienen. Se puede observar cómo son comunicadas las órdenes del cliente al servidor y como la información del contenido multimedia almacenada en un medio local en un formato de compresión circula desde el servidor hasta el cliente.
34 Video-streaming y dispositivos móviles Fig. 3. Servidor de streaming Gran parte de las ventajas que presenta el streaming frente a otras alternativas de comunicación de vídeo o audio a través de redes son derivadas de ciertas capacidades de un servidor de streaming. Estas son: 1. Control de acceso de usuarios. El servidor puede requerir la autenticación de los clientes para restringir el acceso a sus contenidos. También puede limitar el número de usuarios evitando la sobrecarga del servidor. 2. Optimización del tráfico de datos. El servidor racionaliza el tráfico de datos usando la red al mínimo. A cada cliente no se le envía el contenido a la velocidad máxima posible como en la descarga progresiva, sino a una velocidad adecuada para la reproducción. Además si el cliente detiene la reproducción el tráfico también se paraliza, cosa que tampoco ocurre en la descarga progresiva.
2.3 Componentes 35 3. Capacidad para mitigar efectos adversos en la comunicación. Un servidor de streaming puede detectar contingencias en la Red y realizar acciones como variar la frecuencia de muestreo o la resolución del contenido adecuando así el tráfico de datos a las circunstancias existentes. 4. Capacidad de difundir eventos en directo. Actualmente esta tarea sólo puede llevarse a cabo en redes mediante un servidor de streaming. 2.3.3 Broadcaster Un broadcaster es un servidor de video-streaming capaz de comprimir el contenido multimedia comunicado en tiempo real, a partir de una o varias fuentes externas. Fig. 4. Broadcaster de streaming
36 Video-streaming y dispositivos móviles En la Fig. 4 se ilustra la estructura de un broadcaster incluyendo el CODEC de altas prestaciones necesario para sus funciones. Para facilitar la producción en tiempo real de contenidos multimedia, con el fin de difundirlos mediante streaming, un broadcaster proporciona varias facilidades entre las que se encuentran: 1. Codificación en varios formatos. Para mejorar la compatibilidad con un mayor número de reproductores de streaming un broadcaster puede realizar la codificación en varios formatos. La elección de los mismos depende del público al que se pretende llegar y del tipo de dispositivos que posean. 2. Configuración de la codificación. Para mejorar el rendimiento de la codificación, de la difusión e incluso la de reproducción en los diferentes clientes en un broadcaster se pueden controlar parámetros como la resolución de imagen o la frecuencia de muestreo de vídeo u otro tipo de información multimedia. 3. Múltiples entradas y salidas. Un broadcaster puede mezclar diferentes entradas para generar el contenido multimedia resultante. Estas entradas pueden provenir de fuentes como medios físico de almacenamiento, cámaras, micros, instrumentos musicales, etc. En muchos casos la salida puede ser múltiple también, y tener diferentes formatos y configuraciones lo cual es muy útil para llegar a más público. 4. Múltiples modos de ejecución. Dependiendo del broadcaster éste puede ejecutar la difusión de sus contenidos directamente a los clientes o puede apoyarse en un servidor proxy que lo represente y realice la gestión de
2.3 Componentes 37 usuarios y la comunicación con los clientes. Esta última modalidad se utiliza para repartir la carga de trabajo y así aumentar el rendimiento general. 2.3.4 Proxy Un proxy de streaming es un tipo de servidor destinado a completar las capacidades del servidor de streaming al que representa. Hace de intermediario entre los clientes y el servidor representado. Fig. 5. Proxy de streaming
38 Video-streaming y dispositivos móviles La fuente de datos multimedia de un proxy es otro servidor de streaming. Por ello se puede considerar que un proxy actúa a la vez como cliente ante el servidor representado y como servidor ante los clientes originales. Esto obliga a añadir componentes propios de un cliente en la estructura del servidor. Al controlador, empaquetador y buffer de salida se suman el buffer de entrada y el desempaquetador. Además puede incorporarse un componente específico para el proceso del streaming según el propósito concreto del proxy: añadir ciertas capacidades al servidor representado. En la Fig. 5 se ilustra la estructura de un proxy con este componente específico nombrado con un signo de interrogación. El uso de un servidor proxy para realizar streaming de contenidos multimedia puede reportar varios beneficios a tener en cuenta. Entre ellos se encuentran los siguientes: 1. Reducción del ancho de banda efectivo empleado. Esta reducción tiene efectos muy positivos porque mitiga gran parte de los posibles problemas que se pueden dar en la comunicación de datos y que degradan la calidad del streaming. Las técnicas que utiliza un proxy para conseguir esto dependen del tipo de streaming que realice. Con streaming bajo demanda el proxy puede transmitir desde su memoria caché los contenidos requeridos si dispone de ellos, y con streaming en directo puede realizar una única conexión proxy-servidor aunque muchos clientes estén conectados y reproduciendo la misma difusión. 2. Control de los contenidos. Un proxy puede filtrar los contenidos disponibles para todos o para un determinado usuario, permitiéndolos o denegándolos según se estime conveniente.
2.4 Protocolos 39 3. Seguridad. Al unificar el acceso de distintos clientes a distintos servidores de streaming un proxy puede ser una herramienta para aumentar la seguridad de la red donde se encuentre. Además este acceso puede estar restringido por un control de usuarios que requiera autenticación. 2.4 Protocolos Cuando los componentes de una aplicación necesitan comunicarse entre ellos por medio de una red de comunicación deben usar ciertos protocolos conocidos por todas las partes. Éstos permiten tanto a emisores como receptores interpretar la información compartida. Los protocolos de red son definiciones con todo detalle de la forma en la que se debe llevar a cabo estas comunicaciones. Los protocolos determinan las estructuras de datos con las que organizar la información a compartir en el momento de su emisión y con las que interpretar esas construcciones en el momento de su recepción. En algunos protocolos también se especifica una descripción procedimental de la comunicación entre equipos usando las estructuras de datos convenidas en su caso. Con esta descripción se logra mantener conversaciones ordenadas y bidireccionales entre dispositivos dando una semántica propia a cada mensaje transmitido dentro del contexto propio de la comunicación. Así los protocolos además de marcar el formato de la información compartida indican la manera en la que realizar tal acción en cada momento de la interacción. Para realizar streaming son necesarios como mínimo tres protocolos que permitan definir el perfil de la sesión, controlar el tráfico de datos multimedia y llevarlo a efecto. El perfil de la sesión especifica cómo interpretar correctamente los
40 Video-streaming y dispositivos móviles datos comunicados en una sesión de streaming. Con esta información se parametriza adecuadamente todo el proceso de recepción y reproducción del contenido multimedia. Para el control del tráfico es necesario poder solicitar en forma de órdenes la realización de acciones específicas y poder recibir respuestas a esas peticiones por la Red. Finalmente para la comunicación del contenido multimedia en forma de pequeños paquetes de información se requiere que se permita posicionarlos secuencialmente, numerados y temporalizados. 2.4.1 Perfil de sesión Para poder reproducir correctamente un contenido multimedia recibido mediante streaming es indispensable disponer con antelación de información sobre las características específicas de ese contenido y del propio flujo de datos. Esta información es lo que se conoce como perfil de sesión. El perfil de sesión se compone de un conjunto de metadatos con los que parametrizar el proceso tanto de recepción como de reproducción del contenido multimedia. Con ello se consigue interpretar correctamente la información recibida y así reproducirla de manera satisfactoria. La difusión de un perfil de sesión puede usarse como un anuncio o invitación a la misma que permita decidir a los posibles integrantes si sumarse o no. Con la información del perfil de sesión los reproductores pueden evaluar previamente si son compatibles con el tipo de contenido multimedia de la sesión de streaming y si tienen a su disposición los recursos necesarios para la ejecución de todo el proceso, continuando así o abortando la incorporación sin mayores consecuencias si fuera lo adecuado. El formato estándar en Internet dedicado a la comunicación del perfil de sesión en forma de lista de parámetros es el Session Description Protocol (SDP) [89].
2.4 Protocolos 41 Una descripción de perfil de sesión realizada en SDP contiene la suficiente información como para que los posibles participantes puedan unirse a la sesión, o por lo menos considerar previamente si pueden hacerlo. Una descripción de sesión SDP incluye básicamente el nombre de la sesión, su propietario o creador, los intervalos de tiempo en los que la sesión está activa, los medios multimedia que comprenden la sesión, y la información necesaria para recibir esos medios (direcciones, puertos, formatos, etc.). Como datos opcionales que pueden aparecer están el propósito de la sesión, la información de contacto de la persona responsable de la sesión, el ancho de banda necesario para el tráfico de datos, la zona horaria, u otros atributos adicionales de la sesión. Fig. 6. Parámetros SDP
48 Video-streaming y dispositivos móviles pueden usarse sobre UDP como el Real Data Transport (RDT) de RealNetworks, Inc. [97], Microsoft Media Server (MMS) Protocol de Microsoft Corporation [98] o Real Time Media Flow Protocol (RTMFP) de Adobe Systems Incorporated [99]. RTP incorpora a los paquetes del flujo de datos multimedia una cabecera genérica con la información mínima necesaria para llevar a cabo el streaming en tiempo real y para la reproducción del mismo. Esta información consta del tipo de contenido del paquete, el número de secuencia con el que ordenar los paquetes en destino y detectar posibles pérdidas si las hubiera y una marca de tiempo para sincronizar su tratamiento con la reproducción del contenido multimedia. En la Fig. 9 se puede observar detalladamente el formato de una cabecera RTP sin extensión. El significado de cada uno de los campos es el siguiente: V: versión del protocolo. P: relleno. Indica si existen bytes de relleno al final del paquete. X: extensión. Indica si la cabecera tiene una extensión. CC: número de identificadores CSRC. M: marcador. Indica si el paquete tiene una especial relevancia. PT: tipo de contenido. Sequence number: número de secuencia. Este número se incrementa de uno en uno por cada paquete.
2.4 Protocolos 49 Fig. 9. Formato de la cabecera RTP Timestamp: marca de tiempo. Instante de muestreo del primer byte del contenido del paquete. SSRC identifier: identificador de fuente de sincronización. Fuente principal del flujo de datos. CSRC identifiers: identificadores de fuentes contribuyentes. Fuentes que han aportado en la generación de los datos que contiene el paquete. La construcción del cuerpo de los paquetes RTP depende del formato del contenido multimedia original [100]. Existen especificaciones normalizadas para los formatos más usados en streaming. Para vídeo se pueden encontrar, entre otras, la de vídeo no comprimido [101], M-JPEG [102], H.261 [103], MPEG-1/MPEG-2 [104], H.263 [105], MPEG-4 [106], H.264 [107] o H.265 [108]. En la especificación de RTP se incluye un protocolo con el que los participantes de una sesión de streaming pueden distribuir información de control del tráfico de datos, el Real Time Control Protocol (RTCP). Este protocolo se usa principalmente para monitorizar la QoS ofrecida en cada momento. Los participantes comparten estadísticas que resumen cómo evoluciona el estado del
50 Video-streaming y dispositivos móviles streaming en su posición. Otra función de RTCP es la relación de diferentes flujos de datos provenientes de un solo emisor para ser sincronizados en su reproducción. Un ejemplo de ello se da cuando audio y vídeo se transmiten en flujos separados y se reproducen simultáneamente. 2.5 Situación comercial El análisis de la situación comercial de una tecnología indica cómo ésta es llevada a la práctica por la población en general. Para mejorarla, identificando los problemas existentes y proponiendo soluciones, tiene un especial interés conocer cómo se está usando y las tendencias que marcan en su evolución los actores más influyentes en la misma. El streaming es una tecnología relativamente nueva que se ha popularizado rápidamente convirtiéndose en un elemento básico de Internet. Su desarrollo ha estado correlacionado positivamente con el aumento constante del rendimiento de las redes. Ahora mismo ese rendimiento ha alcanzado un nivel lo suficientemente alto como para que la eficiencia en las aplicaciones de streaming de contenidos multimedia no sea el objetivo principal en el diseño de las mismas. Esto ha dado lugar a la incorporación de técnicas prácticamente vetadas hace un tiempo pero que ahora son de aplicación plausible y provechosa al solucionar ciertos problemas. Un ejemplo de ello es el uso del protocolo de transporte TCP en streaming. Utilizar TCP en streaming sobre redes guiadas supone el consumo constante de aproximadamente el doble de tasa de transferencia efectiva en comparación con UDP [109]. Sin embargo, se garantiza que no se pierde nada de
2.5 Situación comercial 51 información en la comunicación por lo que no hay que desarrollar nuevas soluciones para este problema. Otra ventaja de elegir TCP como protocolo de transporte es la posibilidad de combinarlo con un protocolo de transacciones tan difundido como HTTP el cual está especialmente adaptado a las redes basadas en contenidos. En streaming HTTP resuelve el problema de la necesidad de configuraciones personalizadas de la red y los cortafuegos [110] al utilizar siempre el mismo puerto de comunicaciones. Con RTP (sobre UDP), por ejemplo, por cada canal es necesario un puerto diferente, que el servidor tenga acceso directo al cliente mediante su dirección IP y que ningún cortafuegos bloquee cada uno de los puertos de comunicación empleados. Todo ello puede solucionarse empleando HTTP a costa de un consumo mayor de recursos de red. Cuando un cliente usando RTSP/RTP solicita el inicio del streaming sólo necesita comunicar la correspondiente petición y en el caso de que ésta fuera aceptada recibir y reproducir el streaming. Con HTTP el cliente no realiza peticiones tipo RTSP al servidor ni recibe automáticamente los paquetes. En streaming sobre HTTP el cliente va solicitando secuencialmente la descarga de las pequeñas partes ordenadas en las que previamente se ha dividido el contenido multimedia [111]. Esta forma de operar facilita la adaptación de la tasa de transferencia del flujo de datos a las condiciones de la red ya que el cliente en cada momento puede elegir entre diferentes versiones de una misma parte, con mayor o menor resolución y por tanto con mayor o menor tamaño, sin afectar al transcurso de la reproducción. Así el proceso de adaptación del flujo de datos mediante el control de la tasa de transferencia pasa del servidor al cliente. Esto disminuye la complejidad del servidor necesario pudiendo emplear en la mayoría de los casos uno HTTP genérico.
52 Video-streaming y dispositivos móviles Pero no todo son ventajas en el streaming sobre HTTP. En streaming bajo demanda el servidor necesita más espacio de almacenamiento para guardar las distintas versiones de un mismo contenido multimedia, el cual debe estar troceado previamente y organizado en un conjunto de archivos que puede llegar a contener un número ingente de elementos. En streaming en vivo, el punto debil del streaming sobre HTTP, la exigencia en la generación del contenido multimedia en tiempo real y en diferentes versiones con distintas resoluciones simultáneamente exige una capacidad de cálculo y de manejo de datos muy alta si se desea llegar a un nivel de desempeño aceptable. Las partes generadas no pueden ser enviadas directamente sino que han de almacenarse previamente en memoria para que el servidor HTTP las pueda comunicar a los clientes una vez sean solicitadas. Todo ello va añadiendo retrasos aunque éstos pueden disminuirse si la duración de las partes generadas es menor. Esta solución hace que el número de partes aumente considerablemente y en consecuencia también el tráfico de control asociado a las solicitudes, existiendo la posibilidad de sobrepasar la capacidad efectiva de la red. A nivel comercial el streaming sobre HTTP va en camino de ser la tecnología más usada con buenos resultados en redes guiadas. Existen distintos protocolos propietarios de streaming mediante HTTP destacando el HTTP Dynamic Streaming (HDS) de Adobe Systems Incorporated [112], el Smooth Streaming de Microsoft Corporation [113] y sobre todo el HTTP Live Streaming (HLS) de Apple Inc. [114] el cual está consiguiendo una amplia difusión. Esta tecnología también dispone de una versión estandarizada: el Dynamic Adaptative Streaming over HTTP (DASH) o MPEG-DASH [115]. En redes inalámbricas el streaming sobre HTTP no llega a satisfacer una experiencia de usuario suficientemente satisfactoria en la mayoría de los casos. Sin embargo, el uso de esta tecnología en dispositivos móviles va en aumento
2.6 Problemática 53 progresivamente. En el sistema operativo iOS [116], utilizado en los móviles y tabletas de Apple Inc., desde su versión 3.0 se ha apostado claramente por el streaming sobre HTTP adoptándolo en exclusiva de forma nativa. El sistema operativo Android de Google [117] incorpora protocolos de streaming sobre UDP, como RTP, y sobre TCP como el Real Time Messaging Protocol (RTMP) de Adobe Systems Incorporated [118]. A partir de su versión 3.0 comienza a implementar streaming sobre HTTP, protocolo usado anteriormente sólo para descarga progresiva con HTML5. Con todo ello no existe un modelo mayoritario y que pueda solucionar todos los problemas del streaming con dispositivos móviles. HTTP en streaming posee muchas ventajas aunque también hay que considerar su baja eficiencia que lo hace inadecuado para el streaming en vivo no interactivo e imposible para el interactivo. Las redes de baja capacidad quedan descartadas por la necesidad de altas tasas de transferencia efectivas. Por todo ello no se plantea HTTP como sustituto de los diferentes protocolos de streaming que operan sobre UDP. Éstos son una prestación constante en los servidores especializados más potentes como el Helix Universal Media Server de RealNetworks, Inc. [119], la compañía pionera en el streaming a nivel comercial, o el Wowza Media Server de Wowza Media Systems [120]. Sin embargo, el streaming sobre UDP en la actualidad sigue siendo una técnica a mejorar. 2.6 Problemática El principal problema del streaming con dispositivos móviles es la elevada frecuencia de interrupciones del servicio. La causa básica es el comportamiento del medio de comunicación empleado: las redes inalámbricas. Los protocolos de streaming actuales no contemplan las dificultades propias de estas redes. Para
54 Video-streaming y dispositivos móviles superarlas aprovechando al máximo posible la tecnología desarrollada hasta el momento es necesario introducir nuevos componentes destinados a aumentar la calidad del streaming con dispositivos móviles. El carácter inestable de los canales inalámbricos hace que no se pueda garantizar que el tráfico de datos se efectúe tal y como se ha programado, o lo que es lo mismo, una QoS elevada en todo momento. Sin embargo, el streaming es parcialmente tolerante a cambios de QoS antes de que el usuario aprecie alguna variación en la QoE. Una disminución de QoS no implica en todos los casos una pérdida de QoE. Tampoco un aumento de QoS consigue siempre recuperar una QoE baja. Esto es debido a que la QoE no sólo se ve afectada por los efectos de la QoS. Debido a la amplitud del concepto de QoE en streaming es conveniente tratarlo como una combinación de calidad de entrega o Quality of Delivery (QoD) y calidad de presentación o Quality of Presentation (QoP). € QoE =QoD ∪QoP La QoD refleja el impacto del comportamiento de la comunicación del contenido multimedia sobre la continuidad y sincronización de su reproducción. Este comportamiento puede caracterizarse con parámetros propios de QoS medidos en el momento de entrega final de los paquetes de datos al cliente [121]. La QoP se centra en el modo en el que se realiza la reproducción del contenido multimedia. Éste viene determinado por factores como resolución, fidelidad o frecuencia de muestreo conseguida [122]. Como en cualquier servicio una elevada QoE implica confiabilidad y confort. Un servicio es confiable si da como resultado lo previsto y no falla en ello,
2.6 Problemática 55 cumpliendo con lo que se espera de él. Un servicio es confortable si produce comodidad: sensación positiva y estable en el usuario. En streaming la confiabilidad está vinculada sobre todo con una QoD elevada. El confort depende de tanto de la QoD como de la QoP [123]. El ámbito de la QoD va desde la recepción de los paquetes por parte del cliente hasta la recomposición y disposición del contenido multimedia. El ámbito de la QoP va desde el proceso del contenido multimedia hasta su reproducción final. Esta distribución hace que los efectos de la QoD pueden influir en la QoP. Por ejemplo, un mecanismo como un CODEC de MPEG-4 capaz de recuperar paquetes perdidos mejora la QoD y consecuentemente atenúa la disminución de la QoP que puede originar la ausencia de partes del contenido multimedia en su reproducción. En la Fig. 10 se puede observar un esquema de los ámbitos de la QoS, QoE, QoD y QoP. A continuación se analiza el streaming en redes inalámbricas, su QoD y la definición, gestión y predicción de interrupciones. Fig. 10. Ámbito de calidades en streaming
56 Video-streaming y dispositivos móviles 2.6.1 Redes inalámbricas Una aplicación de streaming puede ejecutarse indistintamente en redes inalámbricas o en redes guiadas. Sin embargo, aunque se empleen los mismos protocolos en cada una de ellas el rendimiento final varía drásticamente. Los protocolos de transporte de Internet están diseñados específicamente para redes guiadas. TCP y UDP pueden emplearse en redes inalámbricas pero en ellas presentan características que dificultan e incluso invalidan el streaming en ciertos momentos de la comunicación. Para elegir uno de estos protocolos hay que considerar con detalle los problemas que originan en redes inalámbricas. Para mantener el carácter fiable propio de TCP es necesario un tráfico de control constante y la retransmisión de paquetes erróneos o perdidos. En una red óptima este tráfico adicional es mínimo pero éste aumenta considerablemente en situaciones de baja calidad del enlace. En redes inalámbricas son comunes las situaciones de baja calidad del enlace por lo que el empleo de TCP puede desde llegar a ser un despilfarro hasta saturar la red. UDP no genera tráfico adicional de control y de retransmisiones pero en situaciones de baja calidad del enlace se producen pérdidas de paquetes y errores llegando a ser inasumibles con facilidad. Para conseguir una comunicación en tiempo real con TCP es necesario mantener permanentemente congestión muy pequeña en la red y una alta calidad del enlace, condiciones que no suelen darse en una red inalámbrica. Además al garantizar TCP la entrega ordenada de paquetes si uno de ellos se retrasa los siguientes suman ese retraso y así sucesivamente. Con UDP sí se puede realizar una comunicación en tiempo real aunque a costa de posibles pérdidas de paquetes que van aumentando en número si la calidad del enlace disminuye, ya sea por congestión o por una insuficiente intensidad de la señal inalámbrica.
2.6 Problemática 57 Para aplicaciones no interactivas si se prevé una calidad elevada y constante del enlace inalámbrico puede contemplarse el uso de TCP, si no hay que considerar UDP. 2.6.2 QoD Una QoD elevada implica una reproducción del streaming fluida y sin interrupciones inesperadas y molestas. Cuantificar objetivamente la QoD en cada momento es complicado. Hay que evaluar el riesgo de interrupción de la reproducción analizando los fenómenos que pueden causarla. Éstos son numerosos y muchas veces difíciles de medir con exactitud y precisión: posición física del dispositivo, temperatura, viento, presión atmosférica, humedad, fuerza de gravedad y campos magnéticos entre otros. En la práctica considerar todas estas variables es técnicamente inviable por lo que hay que buscar otra alternativa: evaluar los efectos del estado o rendimiento de la QoS de la red sobre la QoE. Esto es posible teniendo en cuenta que a menor rendimiento de la red más riesgo de interrupción de la reproducción del streaming y viceversa. Tradicionalmente se ha considerado el nivel de potencia de la señal de los dispositivos de red como elemento caracterizador del estado de la red en un punto dado. Este dato no resulta muy representativo, es bastante voluble [124] y proporciona poca información. Ante niveles similares de potencia de señal se puede encontrar situaciones muy diferentes debidas principalmente al ruido del entorno. La medición del nivel de ruido y sobre todo su relación con el nivel de potencia de la señal de los dispositivos de red, conocida como Signal-to-Noise Ratio (SNR), son necesarias para obtener un cierto conocimiento del estado del enlace inalámbrico. Sin embargo, a nivel individual diponer del SNR sigue siendo insuficiente para
64 Video-streaming y dispositivos móviles Como se puede observar la constante de sincronización (csync) queda anulada en los cálculos del jitter lo cual evita el posible error sistemático que suele introducir. El jitter es una medida voluble y ruidosa por lo que es conveniente suavizarla. En la especificación de RTP [96] se recomienda utilizar un filtro de Respuesta Infinita al Impulso (IIR) de orden 1 con coeficiente € 1 16 para la entrada actual (Jp) y € −15 16 para la salida previa ( € Jfilt p−1 ). € Jfilt p=1 16 Jp+15 16 Jfilt p−1 En streaming un paquete se considera perdido si no llega a su receptor correctamente o si lo hace demasiado tarde para su reproducción. La existencia de pérdida de paquetes puede desde generar molestias hasta invalidar totalmente la comunicación. Solventar la pérdida de paquetes requiere de retransmisiones que no siempre son posibles por las restricciones temporales impuestas por el streaming. Para ello es necesario detectar los paquetes ausentes, solicitar su retransmisión al emisor, que éste acepte y la realice, y finalmente aceptar esos paquetes si no se vuelven a perder, todo ello antes de que llegue el momento de su reproducción. Los formatos utilizados para streaming suelen estar diseñados para tolerar pequeñas tasas de pérdida de paquetes. MPEG-4 soporta adecuadamente un 3% situándose el límite en el que la pérdida de paquetes empieza a ser considerada molesta por el usuario en un 5% [131]. Por encima de este límite la reproducción habitualmente queda comprometida y la QoD decae abruptamente. La principal causa de pérdida de paquetes por retraso excesivo es la congestión de la red y por no recepción la baja SNR o bajo RSSI.
2.6 Problemática 65 En la Fig. 13 se pueden observar los dos casos de pérdida de paquetes en una gráfica similar a la de la Fig. 11. El paquete 1 se recibe posteriormente al momento de su reproducción por lo que ésta se interrumpe. El paquete 4 no es recibido y termina produciendo los mismos efectos. En este ejemplo no se consideran retransmisiones ni un CODEC capaz de recuperar paquetes perdidos. Ante paquetes con retraso excesivo se puede aumentar el retraso de reproducción incrementando el tamaño del buffer. En la Fig. 14 se observa como así no se pierde información aunque se interrumpa la reproducción. Este retraso queda acumulado inevitablemente a menos que el buffer sea dinámico y adaptativo [132] pudiendo reducirlo en un momento dado descartando algunos paquetes pendientes por reproducir. Fig. 13. Pérdida de paquetes Fig. 14. Aumento del retraso de reproducción
66 Video-streaming y dispositivos móviles La tasa de pérdida de paquetes (L) se corresponde con la proporción de paquetes perdidos (Pperdidos) respecto al total de paquetes enviados (Penviados). € L=Pperdidos Penviados =Pperdidos Pperdidos +Precibidos En la práctica no se suele disponer de la cantidad de paquetes enviados y perdidos. Su cálculo se suele realizar a partir del conjunto (S) constituido por los números de secuencia de los paquetes recibidos. € S=p:p∈N−0 { } { } Penviados =Max(S) Precibidos =S Pperdidos =Penviados −Precibidos =Max(S)−S Con este método la expresión de la tasa de pérdida de paquetes puede reescribirse. € L=Max S ( ) −S Max S ( ) 2.6.3 Interrupciones Definimos interrupción del servicio de streaming como la discontinuidad fortuita de la reproducción del contenido multimedia comunicado con esta técnica. Las interrupciones se manifiestan como congelación o degradación excesiva de la reproducción y son originadas por pérdidas de paquetes prolongadas producto principalmente de desconexiones de la red.
2.6 Problemática 67 Definimos desconexión de la red como la incapacidad propia y temporal de un dispositivo de comunicarse a través de ella por ser ésta inaccesible. Una desconexión puede clasificarse en primer lugar según la cobertura del dispositivo y a continuación según el uso de los protocolos de comunicación. Definimos tres categorías de desconexión: 1. Física: el dispositivo no tiene cobertura. 2. Lógica: existe cobertura pero se hace un uso inadecuado de los protocolos de comunicación. 3. Virtual: existe cobertura, los protocolos están bien empleados pero contingencias como errores, jitter elevado, retrasos o valores bajos de SNR o RSSI impiden la comunicación. Por definición estas categorías engloban a todas las desconexiones y son mutuamente excluyentes. En la práctica esto no impide que una misma desconexión cambie de categoría a lo largo del tiempo. Todas las desconexiones afectan a la QoS. Sin embargo, no tienen por qué afectar a la QoD y consecuentemente a la QoP. Generalmente una desconexión de la red provoca la interrupción del streaming siempre y cuando su duración sea elevada. Los efectos de desconexiones breves suelen ser mitigados por técnicas como la retransmisión de paquetes, CODEC capaz de recuperar los perdidos o el aumento dinámico del retraso de reproducción si es necesario. Tras una interrupción el cliente de streaming puede recuperarse automáticamente o cancelar la sesión. Si es capaz de reanudar la reproducción es posible que se haya perdido información. Si es así a la interrupción pasada la denominamos corte y en caso contrario pausa. Los cortes son especialmente
68 Video-streaming y dispositivos móviles agresivos con la continuidad (QoD) llegando a repercutir en la presentación (QoP) de la reproducción. Las pausas al manifestarse como congelaciones de la reproducción sólo afectan a la continuidad. Las pausas son asumibles salvo en aplicaciones interactivas o si se dan con mucha frecuencia. Los cortes casi siempre son intolerables y suponen un problema notable. La tolerancia a los cortes depende principalmente de su duración pudiendo clasificarse en cortos (micro-cortes) si no producen una pérdida acusada de QoD y largos si lo hacen. El límite entre estas categorías tiene relación con variables referentes al estado mental del usuario y sobre todo a la secuencia visualizada. Un corte no puede ser lo suficientemente largo como para perder la percepción de coherencia de la escena. Así en una escena lenta, de baja intensidad o con poca información se tolera mejor un corte que en una rápida, intensa o con mucha cantidad de información relevante. La medida de coherencia de la reproducción de una escena es muy subjetiva y su valor depende de la percepción de cada usuario. Al ser su cálculo objetivo demasiado complejo es necesaria otra alternativa con la que distinguir entre cortes tolerables y nocivos: considerar los límites del sistema visual humano. Un vídeo produce sensación de movimiento a partir de 15 fps [133]. Por debajo de esa frecuencia de muestreo el usuario pierde esa sensación. Esto supone que los cortes de duración inferior a 0.067 segundos no repercuten negativamente en la QoD aunque ocurran continuamente. La visión humana está preparada para tolerar cortes de más de 0.067 segundos si éstos son esporádicos. De forma natural se suceden continuamente por el parpadeo ocular. De media en reposo se producen 17 parpadeos por minuto [134], uno cada 3.5 segundos aproximadamente, durando cada parpadeo entre 0.1 y 0.4
2.6 Problemática 69 segundos [135], lo que puede suponer más del 10% del tiempo total. En otras situaciones como en una conversación el número de parpadeos es incluso mayor, 26 parpadeos por minuto, sin que por ello se vea afectada considerablemente la percepción visual. Esta diferencia de 9 parpadeos por minuto puede adoptarse como número máximo de cortes tolerables. Con este criterio, los micro-cortes de videostreaming pueden durar como máximo 0.4 segundos y abarcar hasta el 5% del tiempo total. Otro criterio para determinar la duración máxima de un micro-corte es el del tiempo de respuesta en interacciones persona-computador. Generalmente el usuario considera interrumpida esta interacción si en más de 1 segundo no percibe alguna señal que pruebe su existencia [136]. Esta cantidad tiene relación con el tiempo de reacción del usuario que se sitúa en unos 750 ms ante un evento esperado y 1250 ms ante un evento inesperado [137]. La sensación de interrupción aparece plenamente en el usuario si éste es capaz de reaccionar antes de que la interacción dé señales de actividad. La combinación de estos dos criterios da como resultado que la duración de cada micro-corte esporádico puede llegar hasta los 0.4 segundos sin pérdida de QoD. A partir de 0.4 segundos la QoD se degrada hasta llegar a 1 segundo, momento en el que se vuelve intolerable. El tiempo de espera entre micro-cortes esporádicos debe ser lo suficientemente amplio como para que éstos no supongan más del 5% del tiempo total. De este modo el tiempo de espera mínimo sin degradación de QoD es igual a 19 veces la duración del último micro-corte. Por debajo de ese tiempo la QoD decae rápidamente. Las pausas tienen como principal causa el vaciado del buffer. En ese momento el cliente de streaming se ve obligado a recargar el buffer (rebuffering) aumentando
70 Video-streaming y dispositivos móviles el retraso de reproducción antes de continuar. Este proceso normalmente es apreciable por el usuario disminuyendo la QoD si bien es tolerable si no se repite con frecuencia. La asiduidad de las pausas es especialmente negativa siendo muchas veces menos molesta una más larga que varias pequeñas muy seguidas. Las pausas pueden llegar a ser muy molestas pero siempre menos que los cortes de duración similar. En streaming bajo demanda los cortes son negativos pero en streaming en vivo fatales. En streaming bajo demanda puede recuperarse la información perdida volviendo a solicitar la reproducción del intervalo no recibido, pero en streaming en vivo la información perdida no es recuperable. 2.6.4 Gestión de interrupciones La forma más efectiva de evitar interrupciones de streaming en redes inalámbricas es modificar dinámicamente la configuración física y lógica de la red y la de sus nodos. Esto requiere de un control muy complejo debido a que al mejorar las condiciones de un nodo concreto en dificultades se puede empeorar las de otros entrando en un bucle que fácilmente puede volver inestable al sistema. Además cambiar la configuración de una red aunque ésta disponga de pocos nodos tiene un alto coste. Por todo ello llevar a la práctica a gran escala esta solución es inasumible. Otra posibilidad para gestionar interrupciones consiste en mitigar los efectos negativos éstas que producen, sobre todo los de las más graves: cortes y trenes continuos de pequeñas pausas. Esto se puede conseguir convirtiendo todas las interrupciones en pausas tolerables en las circunstancias presentes. Una solución de este tipo debe cumplir ciertos requisitos:
2.6 Problemática 71 1. Que el cliente de streaming no se vea forzado a terminar abruptamente su función por una desconexión física al quedar la red inalámbrica inaccesible. Una desconexión debe pasar inadvertida tanto para el cliente como para el servidor, salvo por la inevitable pausa generada por la solución. 2. Que el cliente no pierda información en situaciones de interrupción del streaming. La solución debe evitar la aparición de cortes provocando una pausa cuando sea preciso. También se debe evitar de la misma manera las sucesiones rápidas de pausas cortas que aunque no provocan pérdida de información sí producen pérdida de atención y malestar en el usuario. 3. Generar el mínimo tráfico de control adicional. Un aumento del tráfico en la red puede llegar a saturarla creando un problema mayor que el que se pretende solucionar. La solución debe ser lo menos invasiva posible haciento un uso eficiente de los recursos disponibles. 4. No modificar el comportamiento del streaming. No incrementar el jitter ni añadir retrasos. La solución tiene que ser completamente inocua y pasar desapercibida cuando el streaming transcurra sin incidencias, manifestándose sólo cuando ocurran interrupciones. Su utilización no puede disminuir acusadamente el rendimiento del streaming. 5. Independencia y modularidad. La solución debe ser totalmente independiente formando un nuevo componente de streaming. Además no puede exigir cambios en el software propio de clientes y servidores, siendo válidos los existentes sin necesidad de modificaciones. La principal dificultad para llevar a cabo esta solución es el cálculo del momento exacto en el que provocar la pausa tolerable. Esto exige determinar el límite entre
72 Video-streaming y dispositivos móviles una situación normal y una crítica en la que se hace necesario actuar. Este límite es el instante en el que aparece una interrupción grave. Una interrupción de streaming puede detectarse reactivamente o proactivamente. Si se hace reactivamente la interrupción es advertida posteriormente a su aparición. Es la manera más sencilla aunque conlleva riesgos: en el intervalo de tiempo transcurrido entre el instante en el que ocurre la interrupción y el instante en el que ésta se confirma se pierde información por lo que debe ser lo más exiguo posible. Si la detección se hace proactivamente la interrupción se localiza antes de que ocurra no perdiéndose información. Sin embargo, esto exige predecir interrupciones con acierto para no actuar precipitadamente o demasiado tarde. La detección reactiva de interrupciones puede mecanizarse estableciendo protocolos específicos pero la detección proactiva exige procesos más elaborados basados en la observación de un entorno, la red inalámbrica y el streaming, que es, como ya se ha discutido, parcialmente observable y con un comportamiento caótico determinista. 2.6.5 Predicción de interrupciones Para lograr predecir una interrupción hay que determinar el momento futuro en el cual se va a producir una desconexión de la red. Esto requiere la medida empírica de las variables observables relacionadas y el procesamiento continuo de esa información. Debido al inextinguible riesgo de fallo la predicción de interrupciones se corresponde con un problema de toma de decisiones en el que en cada momento hay que decidir si alertar de una posible interrupción futura o no, considerando las consecuencias que puede tener esta acción tanto si es acertada como si no.
2.6 Problemática 73 En cada decisión la información constituida por la medida de las variables observables puede ser tratada de dos maneras. La primera de ellas se basa en la interpretación directa: según el estado actual se elige una acción determinada, la que se considere que mejoraría las condiciones existentes. La segunda se apoya en la interpretación de una predicción explícita del estado de las variables observables una vez transcurrido un intervalo de tiempo determinado. Siendo estos métodos igualmente válidos a priori se puede constatar que por norma general si en el segundo las predicciones son precisas y certeras éste produce los mejores resultados. En un entorno cambiante la interpretación directa tiene que ir adaptándose continuamente, lo que hace que nunca llegue a su máximo rendimiento. En cambio el disponer de buenas predicciones del estado futuro del entorno ante cada posible acción adoptable facilita enormemente la elección de una de ellas consiguiendo esta vez resultados óptimos. Interpretar directamente el presente puede resultar más sencillo que realizar predicciones, las cuales, aunque se sitúen muy cerca del momento actual, son muy complicadas y mucho más en entornos caóticos como los canales de comunicación inalámbricos. Sin embargo, este enfoque tiende a ser muy rígido al asociar a cada situación posible una decisión sin considerar realmente como va a evolucionar. Aunque pueda ir adaptándose continuamente si no lo hace con la suficiente rapidez y eficacia no se consiguen buenos resultados y todo el esfuerzo queda invalidado. Tomar una decisión conociendo el futuro resulta más eficaz y no obliga a estar cambiando continuamente de criterio, aunque ello depende de la exactitud de la predicción que se utilice. Lograr buenas predicciones puede llevar a tomar las mejores decisiones posibles. La automatización de la decisión de si alertar o no de una posible interrupción futura del streaming exige de una estrategia de control. Dentro de la
80 Video-streaming y dispositivos móviles 4. RTCP. Al igual que ocurre con la sesión RTSP en este caso también se tiene que dividir la sesión de control del streaming RTCP para mantener desacoplado al cliente del servidor. Los procesos de informe y mensajería propios de este protocolo deben estar implementados en las dos partes del proxy para que mantengan correctamente las dos sesiones requeridas independientes entre sí. A parte de estos requisitos derivados del comportamiento asíncrono del proxy propuesto hay que implementar un protocolo de control interno. Las dos partes del proxy deben tener a su alcance la información sobre lo que sucede en la otra en todo momento. Esta información debe ser simplificada al máximo para no añadir tráfico adicional a la red que termine afectando a su comportamiento. Por lo tanto esta comunicación interna queda reducida al paso de eventos originados por acontecimientos esporádicos del propio proxy o del algoritmo de control del streaming dedicado a detectar interrupciones, desconexiones y gestionar el buffer. El carácter flexible de la arquitectura del proxy propuesto permite aplicar diversidad de métodos de detección de interrupciones y desconexiones de la red con los que controlar el streaming. Sin cambios importantes se pueden usar fórmulas reactivas o proactivas, e incluso simultanearlas. Esto es ideal al emplear un mecanismo reactivo como límite de seguridad ante posibles fallos de otro proactivo. Un enfoque reactivo en este problema proporciona fiabilidad a costa de posibles pérdidas de información. Un enfoque proactivo no es completamente fiable, puesto que las predicciones pueden fallar, pero al actuar antes de que se produzca la interrupción no se pierde información. El poder compaginarlos es una ventaja positiva.
2.7 Solución basada en Proxies 81 2.7.1 Protocolo reactivo Dotar de un mecanismo reactivo al proxy propuesto como solución es imperativo para aumentar la fiabilidad. Este mecanismo prima la eficacia sobre la eficiencia por lo que siempre detecta la interrupción aunque con retraso, perdiéndose una pequeña cantidad de paquetes. En el proxy propuesto el empleo de este enfoque no es excluyente, es decir, no impide el uso de otros como el proactivo simultaneándose y complementándose. Con la arquitectura empleada se ha probado un enfoque puramente reactivo con un protocolo inspirado en TCP y especializado únicamente en video-streaming [145]. Este protocolo está diseñado para no perder ningún paquete por lo que frecuentemente exige retransmisiones. Se basa en el empleo de una ventana de recepción constituida por un número determinado de paquetes. Una vez recibida una ventana si ésta es confirmada positivamente se continúa con la siguiente pero si lo es negativamente la ventana se reenvía de nuevo. En el caso de no recibir ninguna confirmación durante un corto intervalo de tiempo, más de un segundo, el proxy considera que se encuentra ante una interrupción y comienza a guardar el streaming en el buffer. Este protocolo es más apto que TCP por considerar las interrupciones y desconexiones pero continúa con defectos típicos como la no diferenciación entre congestión y disminución de la calidad del enlace, o las retransmisiones que bloquean el streaming y obligan al cliente a detenerse y volver a cargar su buffer de reproducción para continuar [146]. Con este método se exige gran cantidad de tráfico de control y se añaden los retrasos necesarios para realizar las confirmaciones. El mecanismo reactivo propuesto para el proxy de este trabajo es mucho más simple: está especializado sólo en la detección de desconexiones de la red. Para ello
82 Video-streaming y dispositivos móviles el proxy-cliente tiene la obligación de hacer ping al proxy-servidor si transcurre más de un cierto intervalo de tiempo sin que el primero envíe algún tipo de mensaje al segundo. Así el proxy-servidor puede cerciorarse de que el proxy-cliente está activo y conectado. Este intervalo es variable según las condiciones del enlace ahorrando así en tráfico de control. 2.7.2 Monitorización proactiva El protocolo reactivo utilizado en el proxy planteado es muy básico y sólo detecta desconexiones de la red. El peso del control del streaming y del enlace inalámbrico reside en un mecanismo de monitorización. El protocolo reactivo tiene como función servir de elemento de seguridad en condiciones críticas cuando la monitorización queda invalidada. Esta monitorización, a partir de las variables observables ya estudiadas (RSSI, retraso, jitter y tasa de pérdida de paquetes), tiene como objetivo final el tomar automáticamente y en todo momento la decisión de iniciar o no el almacenamiento del streaming en el buffer ubicado en el proxy-servidor. Esta decisión depende de si una interrupción es inminente o no. Se actúa con anterioridad intentando que el intervalo de tiempo entre el comienzo del almacenamiento del streaming y la propia interrupción sea mínimo. Como ya se ha discutido, la disyuntiva en el diseño de un mecanismo automático para esta toma de decisiones se sitúa entre el empleo de control inteligente o un nuevo tipo de control predictivo similar al MPC pero de inspiración biológica que evite la necesidad de disponer de un modelo matemático explícito de las redes inalámbricas. La alternativa más sencilla es el control inteligente con el que simplemente se interpreta el momento presente en base a un
2.7 Solución basada en Proxies 83 criterio y se obtiene como resultado la decisión buscada. Este criterio tiene que adaptarse continuamente y se corre el riesgo de que no lo consiga a la velocidad requerida, es decir, no converja y en consecuencia el sistema se vuelva inestable, perdiendo por completo la QoE. Para evitar esto se puede renunciar a un rendimiento óptimo y seguir políticas conservadoras con criterios más restrictivos que garanticen cierta estabilidad. Esto en un entorno caótico nunca es recomendable y en la práctica garantiza una baja aceptación por parte del usuario al sentirse restringido y limitado. Esta situación justifica dedicar un esfuerzo en la segunda alternativa de control planteada. Para llevar a cabo la monitorización proactiva del proxy se propone implementarla bajo el paradigma de los agentes software. Éste es especialmente apto para este tipo de problemas distribuidos al proporcionar capacidades avanzadas de autonomía y comunicación que facilitan tareas como la paralelización de procesos ejecutados en varios dispositivos remotos, la distribución de la carga computacional de esos procesos o el escalado de sistemas entre otras. Utilizando la misma arquitectura de proxy-cliente y proxy-servidor se ha desarrollado un prototipo para recuperar automáticamente la sesión de streaming con agentes software [76] pero sin mecanismo de monitorización y encapsulando todo el tráfico de control y de datos como mensajes entre agentes. En la Fig. 17 se ilustra un esquema de este sistema. Esta solución aprovecha los mecanismos de reconexión y los buzones de mensajes de los agentes, muy útiles para el problema, pero la forma de canalizar el tráfico empleada es poco eficiente debido a que los agentes se comunican utilizando TCP. Evidentemente según el planteamiento inicial el tráfico de datos tiene que ir por UDP. Para seguir utilizando agentes software pero con tráfico de datos UDP se puede modificar el sistema quedando como se muestra en la Fig. 18. En este caso
84 Video-streaming y dispositivos móviles los agentes software gestionan directamente el tráfico de control y supervisan una nueva versión de los componentes proxy-cliente y proxy-servidor dedicados exclusivamente al tráfico de datos. Para la monitorización proactiva el agente proxy-cliente adopta el rol de observador mientras el agente proxy-servidor asume la toma de decisiones en base a la información proporcionada por el agente proxycliente, acaparando la mayor parte de la carga computacional de la monitorización y liberando al dispositivo móvil de parte de ella. Fig. 17. Proxy con streaming entre agentes Fig. 18. Proxy con streaming externo a los agentes
2.7 Solución basada en Proxies 85 Para que la monitorización no disminuya el rendimiento de la red ésta no debe suponer un aumento del tráfico total. Con el proxy el tráfico RTCP se mantiene entre cliente y proxy-cliente y entre servidor y proxy-servidor pero no entre proxy-cliente y proxy-servidor quedando esa cuota no consumida disponible para la monitorización realizada por los agentes. Mientras esta cuota no se rebase no habrá un consumo mayor de recursos de red. Existe la posibilidad de que el proxy planteado aumente la cantidad de tráfico total en algunos momentos pero por lo general esto no ocurre. Con RTCP tanto la parte cliente como la servidor emiten informes que se van repitiendo por cada medio con un período no inferior a 5 segundos [147]. La monitorización efectuada por los agentes exige una frecuencia de muestreo mayor por el carácter inestable de las redes inalámbricas que pueden cambiar de estado rápidamente. En cuanto a tráfico este punto queda compensado en parte al sólo ser necesaria la comunicación de informes en un sentido, de agente proxy-cliente a agente proxy-servidor, y a que estos informes además de reducidos son globales y no propios de cada medio. El período de esta comunicación es variable y depende del algoritmo de control utilizado buscando siempre que sea lo mayor posible. En la Fig. 19 se ilustra un esquema de las comunicaciones mantenidas por el proxy con los protocolos empleados. Para la comunicación de datos entre el proxyservidor y el proxy-cliente se emplea un nuevo protocolo interno: Procolo de Datos del Proxy (PDP). Sus funciones son multiplexar los diferentes medios del streaming y facilitar la monitorización. Este protocolo añade en cada paquete un número de puerto destino, un número de secuencia global y una marca de tiempo absoluto. Los mensajes de control, monitorización y notificación de eventos son encapsulados y comunicados como mensajes entre agentes.
86 Video-streaming y dispositivos móviles Fig. 19. Detalle de comunicaciones del Proxy Para realizar esta monitorización proactiva y predecir interrupciones los agentes empleados en el proxy soportan el modelo de la combinación intuiciónpensamiento propuesto en este trabajo. Estos agentes de nuevo diseño son los agentes software emocionales.
87 Capítulo 3 Agentes software emocionales RESUMEN: este capítulo se centra en los avances realizados para dotar a agentes software de cualidades de inspiración biológica como la intuición, el pensamiento y las emociones. Éstas les permiten predecir el comportamiento de sistemas caóticos bajo un horizonte reducido pero suficiente para actuar con antelación ante interrupciones en la reproducción del video-streaming. 3.1 Introducción El campo abarcado por los agentes inteligentes es realmente heterogéneo, fruto de la combinación de un amplio grupo de disciplinas entre las que destaca su gran predecesora: la inteligencia artificial distribuida [148]. En ella un agente es una entidad diseñada para tomar decisiones continuamente a partir de la percepción de su entorno. A su vez un agente puede asociarse a otros formando una sociedad con la que enfrentarse a problemas mucho más complicados e imposibles de solucionar de forma individual. En este caso esta sociedad de agentes se denomina sistema multi-agente. Dentro de un sistema de este tipo cada agente puede tener capacidades diferentes, información distinta, objetivos comunes y muchas veces hasta intereses opuestos [149]. Esta variabilidad hace que los sistemas multi-agente sean muy flexibles y aptos para la resolución de problemas distribuidos complejos y también para la elaboración de modelos y simulaciones sociales.
88 Agentes software emocionales Los agentes software inteligentes, o simplemente agentes software, son una particularización del concepto general de agente inteligente. Un agente software es un programa informático con las características de un agente inteligente. La aparición de los agentes software data de la década de 1970 [150] donde fueron definidos como “objetos autónomos, interactivos y de ejecución concurrente, poseedores de estado interno y de capacidad de comunicación” [151]. En la década de 1990 su difusión aumenta considerablemente con los inicios de un nuevo paradigma de programación: la programación orientada a agentes [152]. En este paradigma se amplia el concepto de agente software proporcionandoles cualidades mentales como creencias, desiciones, capacidades y obligaciones. A partir de ahí la investigación en este campo aumenta, abarca más áreas de conocimiento y sigue en continuo avance en la actualidad. Los agentes software tienen multitud de aplicaciones [153], tanto académicas como comerciales, de las que se ha ido adquiriendo experiencia [154] con el tiempo. Aunque existen problemas, sobre todo de seguridad [155] y confiabilidad [156], esta es una tecnología en expansión y con futuro. 3.2 Definición Actualmente no existe una definición formal consensuada de agente software. Muchos autores tienen la suya propia [157] pero todavía no se ha llegado a proponer una completamente satisfactoria. Generalmente se considera agente software a una entidad contenida en un programa informático que dependiendo de su percepción y su conocimiento almacenado emprende aquellas acciones que estima más adecuadas para maximizar su rendimiento dentro de su entorno.
3.2 Definición 89 Fig. 20. Agente software en su entorno En la Fig. 20 se muestra de forma esquemática un agente software situado en su entorno. Éste es percibido por el agente y su cognición marca la acción a tomar para modificarlo dentro de sus posibilidades buscando siempre lo que considere como éxito. Esencialmente un agente software se basa en la ejecución continua del bucle percepción-cognición-acción. Los agentes software tienen una serie de características básicas comunmente aceptadas, las cuales los diferencian de otros elementos informáticos. Estas son la autonomía, sociabilidad, reactividad y proactividad [158]. Un agente software es autónomo al tener capacidad de operar sin dependencias para conseguir sus objetivos a partir de la información de que disponga, sin necesidad de entidades externas como personas u otras que lo controlen directamente. Un agente software es sociable. Aunque puede actuar autónomamente también puede comunicarse e interactuar con otros agentes o personas por medio de un lenguaje inteligible por todas las partes. Su entorno ideal es un sistema multi-agente en el que no se ejecuta de forma aislada sino en conjunto con otros agentes que colaboran entre sí para realizar un trabajo.
96 Agentes software emocionales En un sistema multiagente múltiples agentes software se ejecutan concurrentemente para resolver problemas complejos de manera distribuida comunicándose y dialogando unos con otros generalmente mediante el paso de mensajes. Gracias a esta comunicación pueden compartir información, coordinarse, colaborar, descomponer el trabajo y negociar para resolver conflictos. Con todo ello y teniendo en cuenta que cada agente posee una capacidad insuficiente y una información incompleta para solucionar el problema global éstos consiguen controlar el sistema de forma descentralizada decidiendo individual y autónomamente las tareas a realizar para conseguir sus objetivos. Un sistema multiagente queda definido por los agentes que lo forman, el entorno donde éstos se ubican, y sobre todo por las relaciones que mantienen entre ellos. Los sistemas multiagente son sistemas descentralizados donde cada agente tiene sólo parte de la información disponible. No existe una autoridad global que proporcione esta información a todos los agentes y normalmente un agente no puede interaccionar con todos sus congéneres, sólo con sus vecinos, por lo que tampoco tiene a su disposición toda esta información. Esta situación de observabilidad y control parcial obliga a disponer de un sistema de comunicación sofisticado que permita mantener conversaciones coherentes y productivas entre agentes. Estas conversaciones, que se dan siempre por iniciativa de los agentes implicados, marcan el carácter de la interacción entre ellos, la cual puede ser cooperativa o competitiva. Es importante destacar que entre agentes software no se realiza ninguna conexión restrictiva por lo que en ningún momento pierden su autonomía al sociabilizarse.
3.3 Sistemas multiagentes 97 3.3.1 Diseño La tecnología existente en la actualidad sobre agentes software es rica y variada [163] con gran cantidad de alternativas y metodologías de desarrollo. En cualquier caso el diseño de un sistema multiagente puede ser descendente (top-down) o ascendente (bottom-up). La elección de uno u otro depende principalmente de las restricciones del sistema. El diseño descendente de sistemas multiagente se aplica cuando el elemento restrictivo es el entorno. Sus características quedan determinadas de antemano y son inflexibles. En este caso los agentes tienen como misión estudiarlo y controlarlo en la medida de sus posibilidades. Para ello extraen información de diferentes partes del mismo, la procesan, y actúan en consecuencia, directamente sobre su parte de entorno circundante o comunicándose con otros agentes vecinos. En el diseño descendente se suele tener como objetivo que los agentes no alteren el entorno más allá de sus acciones, es decir, que pasen lo más desapercibido posible. Su aplicación se centra principalmente en la resolución de problemas de sistemas distribuidos complejos en los que los agentes software son utilizados principalmente para simplificar la computación necesaria y para superar las limitaciones propias de las interfaces usuario-máquina [164]. El diseño ascendente de sistemas multiagente se aplica cuando el elemento restrictivo es el conjunto de agentes. En este caso sus características y su comportamiento quedan determinadas por adelantado y son un requisito indispensable. Este enfoque está dirigido a la creación de un sistema en el que observar cómo los agentes software evolucionan al convivir unos con otros formando una sociedad. Por lo tanto la aplicación de este tipo de diseño está especialmente indicado para elaborar modelos y simulaciones sociales [165] donde
98 Agentes software emocionales los agentes representan a los individuos en cuestión, los cuales son definidos con todo detalle, y el sistema multiagente la propia sociedad que se pretende representar. Precisando más se puede decir que el ámbito de aplicación se corresponde con el modelado de sistemas adaptativos complejos, o Complex Adaptive Systems (CAS) [166]. Para sacar provecho de este modelado a base de agentes software debe existir una correspondencia directa de los mismos con los individuos reales en cuanto a sus comportamientos. Pueden adaptarse, cambiar, aprender, establecer relaciones dinámicamente entre ellos, formar organizaciones e interactuar a distancia. La evolución de la estructura de la población, de tamaño arbitrario, no es algo impuesto sino el elemento resultante del modelado [167]. Para el problema que trata este trabajo no se contempla un diseño ascendente del sistema multiagente. Aunque se ha aplicado con anterioridad para modelar redes guiadas [168] resulta mucho más complicado cuando éstas son redes inalámbricas por el característico comportamiento caótico de sus canales. Además no se busca un modelo de la red sino del enlace inalámbrico el cual no depende de los nodos-agentes sino del entorno. Por todo ello se descarta utilizar esta técnica. El enfoque adoptado para el diseño del sistema multiagente implicado en el control del proxy buscado es el diseño descendente. Es el que mejor se ajusta a los objetivos que se desean alcanzar, los cuales requieren de mecanismos distribuidos para simplificar el proceso de control necesario con el que mitigar el problema de las interrupciones. 3.3.2 Aplicaciones Tradicionalmente se han elaborado listas de actividades donde es posible aplicar agentes software. Esta acotación, que tiene como finalidad delimitar el ámbito de
3.3 Sistemas multiagentes 99 esta tecnología, puede llevar a error por el carácter cerrado que imprime. Las categorías implicadas en estas listas no son campos de aplicación sino ejemplos concretos de aplicación. Los agentes software pueden usarse en cualquier actividad donde sea preciso sustituir total o parcialmente un grupo de actores autónomos capaces de comunicarse y tomar decisiones, generalmente usuarios de un sistema informático o miembros de una simulación. Los motivos para ello pueden ir desde simplemente reducir costes, mecanizando tareas sencillas y repetitivas, hasta alcanzar un rendimiento imposible para los humanos en determinadas labores. Existe gran cantidad de ejemplos de uso de agentes software y continuamente van apareciendo nuevos y más variados. Por ejemplo en marketing y publicidad se han utilizado para llegar a un trato individualizado [169], lo cual requiere del manejo de gran cantidad de datos. Lo mismo ha ocurrido para la planificación y optimización de viajes [170] mediante procesos de minería de datos. La organización de librerías distribuidas digitales [171] es otro ejemplo donde es necesario procesar gran cantidad de información y los agentes software logran automatizar. Otras aplicaciones más avanzadas son la asistencia personal en domótica por medio de inteligencia ambiental [172] o la dirección de proyectos de desarrollo de software [173]. En la educación también han llegado los agentes software para gestionar planes individualizados de aprendizaje [174]. En sanidad complementan a los médicos en el diagnóstico precoz y pronóstico de tumores cerebrales [175]. Los agentes software son especialmente potentes en el control de procesos. En transportes los agentes software han simplificado las tareas de control aéreo [176] aumentando la seguridad. En estaciones eólicas monitorizan y maximizan el rendimiento, todo ello en un entorno muy inestable como es el aire [177]. La
100 Agentes software emocionales monitorización meteorológica también es otro ejemplo donde los agentes software se han incorporado para valorar la calidad del aire y vigilar continuamente los datos aportados por radares meteorológicos [178]. El caso de este trabajo donde los agentes monitorizan y controlan un enlace inalámbrico por donde se efectúa streaming entra también en este grupo de agentes software dedicados al control de procesos. Aunque los agentes software se suelen emplear como solución a problemas hay casos donde el efecto conseguido es el contrario, llegando a ser hasta peligrosos. Los polémicos agentes de bolsa ultra rápidos [179] están convirtiendo el mundo de las finanzas en un campo de guerra encarnizada sin ningún control y con una inestabilidad que afecta directamente a la economía real y a la vida de las personas. En redes se han utilizado también los agentes software. Para la administración de redes se han buscado agentes proactivos capaces de actuar antes de que los problemas ocurran y así poder evitarlos [180]. Otro caso son los agentes dedicados a la detección de intrusos con un comportamiento inspirado en el sistema inmunológico [181]. Los agentes móviles son especialmente útiles en redes heterogéneas donde por ejemplo éstos viajan por las mismas para mejorar su fiabilidad y QoS inspeccionando los diferentes tipos de tráfico que soportan [182]. Otra aplicación de este tipo de agentes es el encaminamiento en redes inalámbricas dinámicas [183]. En streaming con móviles se han utilizado agentes software para controlar la QoS monitorizando el canal para lograr distinguir la degradación de calidad producida por congestión de la red de la producida por errores del enlace inalámbrico [184]. Otro caso interesante es el de los agentes para la gestión
3.4 Toma de decisiones 101 individual de los servicios proporcionados por un proveedor eligiendo la mejor estrategia de despliegue en cada caso según unos requerimientos específicos [185]. En este último ejemplo se utiliza la herramienta elegida en este trabajo para implementar agentes software: la plataforma Java Agent DEvelopment Framework (JADE) [186]. 3.4 Toma de decisiones La actividad fundamental de un agente software es la toma de decisiones. Para que se comporte inteligentemente debe ser capaz de tomar decisiones racionales. Una decisión racional es aquella con la que se consigue el mayor beneficio con el mínimo gasto de recursos, dependiendo del conocimiento que se tenga del entorno y los medios de acción disponibles. Todos los seres vivos, desde los más simples a los más complejos, toman decisiones racionales continuamente. El beneficio buscado es la propia supervivencia y la de su legado genético. Su entorno cambia constantemente y esto supone una amenaza que debe contrarrestarse adecuando su comportamiento en cada momento. La vida en ningún caso transcurre de forma simple y estática sino muy al contrario, de forma extremadamente compleja y dinámica. Las estrategias que siguen los seres vivos para tomar las decisiones que les permiten sobrevivir son muy variadas. Para alimentarse una bacteria puede asimilar partículas de su medio ambiente, algunas nocivas y otras nutritivas. Gracias a su composición y a las leyes físicas y químicas esas partículas son aceptadas o rechazadas de forma sistemática.
102 Agentes software emocionales Los seres vivos con sistema nervioso pueden tomar decisiones más sofisticadas. Para ello tienen en cuenta su experiencia y las consecuencias que puede tener su comportamiento. Los animales más sencillos son eminentemente impulsivos en su forma de actuar: sólo consideran el momento presente. En cambio los animales más avanzados son capaces de considerar su futuro cercano y el conocimiento adquirido con anterioridad lo cual les permite enfrentarse a problemas más complicados con mejores resultados. Los seres humanos son un caso extremo dentro del reino animal debido a su capacidad de abstracción superior. Con ello no sólo se han conseguido mejores decisiones, y por tanto una mayor garantía de supervivencia, sino además que las sociedades humanas sean las más avanzadas y complejas. La filosofía, la ciencia o el arte son algunos ejemplos de conocimiento generado por la relación de los seres humanos con el tiempo y su tendencia a abarcarlo. Sin embargo, este conocimiento aumenta cada vez más rápido llegando a comprometer las capacidades de sus creadores. Esto se debe a que este crecimiento tiene asociadas nuevas necesidades cada vez más complicadas de solventar. Por ello se ha tenido que investigar cómo mejorar los procesos de toma de decisiones ante las nuevas situaciones originadas. Con este panorama nace la teoría de la decisión. La teoría de la decisión [187] es un área de estudio interdisciplinar que abarca tanto aspectos de la ciencia como de la psicología. Dependiendo de los objetivos que persigue se puede distinguir entre teoría de la decisión normativa y teoría de la decisión descriptiva. La teoría de la decisión normativa busca cómo tomar decisiones racionales y óptimas mediante métodos y técnicas que usan recursos matemáticos, técnicos y psicológicos. La teoría de la decisión descriptiva se dedica al estudio del comportamiento de los seres vivos, en especial los humanos, al tomar decisiones. Aunque son dos campos totalmente diferentes están íntimamente
3.4 Toma de decisiones 103 relacionados entre sí y se retroalimentan propiciando así su avance mutuo. Este avance ha sido de gran ayuda para la resolución de decisiones en el peor escenario posible, la incertidumbre, donde no se tiene la información suficiente para valorar las consecuencias de las alternativas que se pueden llevar a cabo [188]. Temas destacados que han contribuido a ello dentro de la evolución de la teoría de la decisión [189] son entre otros el desarrollo del análisis de decisiones, la teoría de la utilidad subjetiva esperada en decisiones individuales, o la teoría de juegos en entornos con múltiples actores. La inteligencia artificial, en su afán por construir sistemas artificiales capaces de comportarse de manera similar a los seres vivos y sobre todo a los humanos, ha hecho un uso extensivo de todo el conocimiento adquirido hasta el momento en lo referente a la teoría de la decisión. Sin embargo, la aplicación práctica de la teoría de la decisión no siempre es posible porque sus métodos están destinados a la búsqueda de la alternativa óptima y muchas veces esto no es posible, ya sea por escasez de recursos o falta de tiempo para la realización de todos los cálculos necesarios en el proceso. Por ello en inteligencia artificial es necesario buscar soluciones lo “suficientemente buenas” [190] más que las óptimas. En la práctica estas soluciones dependen de las limitaciones propias del contexto y de los márgenes predefinidos para que sean admitidas como validas. Para que los agentes software puedan tomar decisiones autónomamente además de los métodos propios de la teoría de la decisión se hace uso de múltiples herramientas como son la lógica clásica, la lógica modal o la probabilidad [191]. También existen herramientas más especializadas y de nivel más alto [192], algunas de ellas inspiradas en procesos biológicos [193], que aunque no siguen de forma estricta el proceso estándar de toma de decisiones pueden ser utilizadas para tal fin con resultados satisfactorios.
104 Agentes software emocionales A continuación se trata el proceso de decisión individual limitado a un único actor y algunas de las técnicas y herramientas que pueden utilizarse para su ejecución. 3.4.1 Proceso de decisión El proceso de decisión es el conjunto de operaciones ordenadas dirigidas a la toma de las decisiones necesarias para solucionar un problema. Aunque existen varias versiones aquí se hará mención sólo de la más general dedicada a las decisiones individuales en las que interviene sólo un decisor [194]. Para su estudio es necesario la definición de sus elementos característicos: Alternativa: cada una de las posibles acciones que se pueden realizar, las cuales son excluyentes entre sí. Consecuencia: previsión del resultado de la adopción de una alternativa en un estado de la naturaleza concreto. Estado de la naturaleza: escenario posible o evento que influye en el proceso de decisión pero que no es controlable por el decisor. Decisor: actor encargado de realizar la elección de la alternativa más acertada según el criterio adoptado. Criterio: norma para valorar las alternativas y elegir la mejor de ellas. Un proceso de decisión está condicionado por el conocimiento que se tenga del estado de la naturaleza, el cual puede ser total o parcial. El grado de este conocimiento determina el ambiente o contexto del proceso de decisión. De forma general se distinguen tres tipos de ambientes:
3.4 Toma de decisiones 105 1. Ambiente de certidumbre: contexto en el que el decisor tiene un conocimiento total del estado de la naturaleza. De esta forma cada alternativa lleva a un resultado único y bien definido. 2. Ambiente de riesgo: contexto en el que el decisor se enfrenta a varios estados de la naturaleza posibles y conoce la probabilidad de cada uno. 3. Ambiente de incertidumbre: contexto en el que el decisor se enfrenta a varios estados de la naturaleza posibles y no conoce sus probabilidades. Para que exista un proceso de decisión es necesario que existan dos o más alternativas. La adopción de una de ellas imposibilita la realización de cualquiera de las restantes. La motivación de este proceso es una situación ambigua que debe ser resuelta para la consecución de un fin determinado. En todo proceso de decisión, ilustrado en la Fig. 26, se encuentran las siguientes fases: 1. Análisis del problema: estudio del problema que origina la necesidad de tomar una decisión. 2. Generación de alternativas: concepción de las posibles alternativas que pueden minimizar el problema. 3. Evaluación de alternativas: adjudicación de un grado de utilidad a cada alternativa en cada estado de la naturaleza basándose en la predicción de sus consecuencias. 4. Elección de una alternativa: selección y puesta en marcha de la alternativa más beneficiosa según un criterio de decisión predefinido.
112 Agentes software emocionales € ak= ϕ kvk ( ) La función de excitación más común es la suma ponderada. A ésta se añade un sesgo € bk como potencial de reposo y un sesgo € ck como potencial de acción inducido por un estímulo. En una red neuronal artificial con q neuronas se expresa de la siguiente manera: € σ kwkj { } ,aj { } ( ) =wkj aj j=1 q ∑+bk+ck Las funciones de activación más frecuentes son: Función escalón: € ϕ kvk ( ) =1, si vk>0 0, si vk≤0 ⎧ ⎨ ⎩ Función sigmoide: € ϕ kvk ( ) =1 1+e−vk , 0 ≤ ϕ kvk ( ) ≤1 Función tangente hiperbólica: € ϕ kvk ( ) =tanh vk ( ) , −1≤ ϕ kvk ( ) ≤1 La Fig. 29 muestra un esquema gráfico de una neurona artificial. Fig. 29. Neurona artificial
3.5 Predicción de estados 113 En una red neuronal artificial las neuronas se organizan en niveles. Se distinguen tres tipos: de entrada, de salida y ocultos. El nivel de entrada está formado por las neuronas que reciben los estímulos y el nivel de salida por las que proporcionan las respuestas de la red. Los niveles ocultos están compuestos por el resto de neuronas y se sitúan entre el nivel de entrada y el de salida. Según la orientación de las sinapsis entre niveles se distinguen redes de propagación hacia delante si todas las sinapsis van en sentido entrada-salida y redes recurrentes si por lo menos una de las sinapsis forma un ciclo en su nivel o entre niveles diferentes. El aprendizaje en redes neuronales artificiales es un proceso iterativo a modo de entrenamiento en el que se ajustan los pesos sinápticos € wkj de todas las neuronas para mejorar progresivamente las respuestas de la red (valores € ak de las neuronas del nivel de salida) según un criterio. Existen varios paradigmas de aprendizaje: 1. Aprendizaje supervisado. En este tipo de aprendizaje se minimiza una función de error de las respuestas, generalmente la distancia entre las que proporciona la red y otras objetivo que son conocidas y consideradas correctas. El aprendizaje supervisado se emplea sobre todo en reconocimiento de patrones preestablecidos y en aproximación de funciones. 2. Aprendizaje no supervisado. En este tipo de aprendizaje se minimiza una función de costo aplicada a la relación estímulos-respuestas. Se emplea principalmente en agrupaciones (clustering). 3. Aprendizaje por refuerzo. En este tipo de aprendizaje por cada respuesta se obtiene una valoración o recompensa. Se busca maximizar la recompensa acumulada por la secuencia de respuestas obtenidas en un
114 Agentes software emocionales intervalo de tiempo. Se emplea especialmente en problemas de control automatizado. La duración del aprendizaje en redes neuronales es variable y no puede garantizarse que finalice y llegue a un resultado satisfactorio en todos los casos. Normalmente se establece un número máximo de iteraciones para prevenir que este proceso se eternice. Para aproximar la función F una posibilidad es emplear una red neuronal artificial con aprendizaje supervisado. En este caso los estímulos de esta red se corresponden con la secuencia de estados € sn { } y su única respuesta con la estimación del estado siguiente € ˆ s n+1 . La respuesta objetivo para el aprendizaje es el estado siguiente € sn+1 . Existen varios modelos de redes neuronales artificiales que han sido utilizados satisfactoriamente en problemas de predicción del comportamiento de sistemas caóticos deterministas. En este caso son destacables los buenos resultados de las redes de propagación hacia delante como el perceptrón multinivel [200] por ser las más simples. Para este problema las redes recurrentes y especialmente la basada en el modelo no lineal autorregresivo con entradas exógenas (NARX) [201] suelen proporcionar mejores respuestas que el perceptrón multinivel pero a costa de un mayor consumo de recursos computacionales y de tiempo, el cual puede llegar a ser muy elevado. Consideramos que es conveniente valorar primero el perceptrón multinivel antes de continuar con modelos más complejos. Para optimizar la arquitectura del perceptrón multinivel buscando mejores respuestas (min(e)) y una cantidad reducida de neuronas (min(t) ∧ min(C)) se debe minimizar el tamaño del nivel de entrada, considerando sólo una ventana deslizante con los últimos € m estados [202], y minimizar la cantidad y tamaño de
3.5 Predicción de estados 115 los niveles ocultos [203]. La expresión de esta red, con q neuronas numeradas siendo las € m primeras las de entrada y la última la de salida y siendo € ak n y € ck n los valores € ak y € ck en la iteración € n , es la siguiente: € ck n= τ sn−m+k ( ) , si 1 ≤k≤m 0 , si m<k≤q ⎧ ⎨ ⎪ ⎩ ⎪ ak n= ϕ kwkj aj n−1 j=1 q ∑+bk+ck n ⎛ ⎝ ⎜ ⎜ ⎞ ⎠ ⎟ ⎟ ˆ s n+1= τ −1aq n ( ) La función invertible € τ permite operar directamente con estados en la red neuronal artificial. Esta función asocia a cada estado € s un potencial de acción € a y viceversa de la siguiente manera: € a= τ s ( ) s= τ −1a ( ) Los pesos sinápticos € wkj forman parte de la matriz de pesos sinápticos € W∈Mq×qR ( ) . Esta matriz cuadrada define la estructura de la red. La de un perceptrón multinivel tiene una forma característica de bloques en escalera descendente con hueco inferior. Siempre es una matriz triangular inferior en la que los elementos de la diagonal principal son nulos. Esto es debido a que en un perceptrón multinivel sólo existe sinapsis si la neurona presináptica se encuentra en el nivel inmediato anterior al de la postsináptica. Cada bloque-escalón de la escalera resultante se corresponde con las sinapsis existentes entre dos niveles contiguos. La matriz € W de un perceptrón multinivel con un solo nivel oculto es la siguiente:
116 Agentes software emocionales € W= 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 wm+1,1 wm+1,2 wm+1,m0 0 0 0 wm+2,1 wm+2,2 wm+2,m0 0 0 0 wq−1,1 wq−1,2 wq−1,m0 0 0 0 0 0 0wq,m+1wq,m+2wq,q−10 ⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ El número € ω de sinapsis de un perceptrón multinivel es igual al sumatorio del producto del número de neuronas de cada par de niveles contiguos. En este caso para un perceptrón multinivel con un solo nivel oculto, siendo € qE el número de neuronas del nivel de entrada, € qO el número de neuronas del nivel oculto y € qS el número de neuronas del nivel de salida, el número de sinapsis es el siguiente: € ω =qEqO+qOqS=qOqE+qS ( ) Según esta relación y suponiendo que siempre € qO∝qE se deduce que el número de sinapsis crece cuadráticamente con respecto a € qE . € ω ∝qE 2+qEqS En este caso € qE=m y € qS=1 por lo que: € ω ∝m2+m En la Fig. 30 se muestra un gráfico representativo del perceptrón multinivel con un solo nivel oculto descrito. Las neuronas se corresponden con los círculos y las sinapsis con las líneas.
3.5 Predicción de estados 117 Fig. 30. Red neuronal artificial El aprendizaje en esta red neuronal artificial está especialmente condicionado por tres factores [204]: 1. Algoritmo de aprendizaje supervisado. Según el tipo de algoritmo empleado la convergencia es más o menos rápida. Su eficiencia es vital en este caso por la necesidad de entrenar in situ la red, simultaneando ejecución y aprendizaje, al ser muy elevada la variabilidad del estado del enlace inalámbrico y su entorno. Pequeños cambios en la localización espacio-temporal del dispositivo móvil pueden invalidar todo lo aprendido hasta el momento obligando a readaptar la red continuamente. 2. Arquitectura de la red. Los dos problemas principales relacionados con el aprendizaje y la arquitectura de la red son la ambigüedad y el sobreentrenamiento. La ambigüedad se produce cuando son válidas diferentes respuestas para una misma combinación de estímulos. Esta situación sucede si € m es muy pequeño. El sobreentrenamiento es un fenómeno que se da cuando la red se ajusta demasiado a los datos utilizados en el aprendizaje perdiendo la capacidad de generalizar y de responder ante nuevos estímulos. Los motivos suelen ser demasiadas neuronas en niveles ocultos y pocos datos dedicados al aprendizaje. Esta
118 Agentes software emocionales situación se cumple si € m es muy elevado. A mayor € m mayor complejidad de la función aproximada y mayor cantidad de puntos necesarios para definir su curva. El sobreentrenamiento es especialmente problemático cuando ocurren sucesos esporádicos relevantes que se salen de la norma como son las interrupciones. 3. Calidad de la muestra de entrenamiento. La muestra para aproximar una función debe ser lo menos ruidosa posible y contener una cantidad de puntos suficiente para definir la curva de la función. Los puntos más relevantes son los máximos y mínimos locales y los puntos de inflexión. Los demás puntos son necesarios para definir con precisión las concavidades y convexidades de la curva. La concentración de puntos en determinadas zonas dejando otras vacías es un problema que reduce la calidad de la muestra y que para solventarlo es necesario esperar a la incorporación de nuevos puntos. Durante este tiempo la red no se adapta convenientemente quedando inoperativa, lo cual es inadmisible si éste es elevado. Todas estas dificultades invitan a considerar otros métodos adaptativos, con una arquitectura menos dependiente del valor de € m y un tiempo de espera reducido para obtener predicciones fiables. 3.5.2 Algoritmos genéticos Los algoritmos genéticos son un método de búsqueda y optimización matemática inspirado en la genética y la teoría de la evolución. Fueron formalizados y empezaron a popularizarse en la década de 1970, destacando en esta época por su influencia los trabajos publicados por John H. Holland [205].
3.5 Predicción de estados 119 En los algoritmos genéticos se hace evolucionar una población inicial de soluciones (individuos) las cuales van mejorando progresivamente tras sucesivas iteraciones (generaciones). Se considera cada solución como la manifestación (fenotipo) de un conjunto (genotipo) de propiedades modificables (genes), el cual representa a la solución en el algoritmo. En cada iteración cada solución es evaluada y las menos aptas son eliminadas. Las restantes se reproducen experimentando combinación de soluciones (recombinación genética) o alteraciones espontáneas (mutaciones). Así la nueva población tiende a ser mejor que su predecesora. Este elitismo hace que al aumentar el número de iteraciones también aumente la probabilidad de que aparezca finalmente una solución óptima. Fig. 31. Algoritmo genético
120 Agentes software emocionales Los algoritmos genéticos pueden adoptar diversas formas por lo que no hay un patrón estricto. Éstas dependen principalmente de cómo se realice la selección o la reproducción. En general un algoritmo genético, ilustrado en la Fig. 31, consta de las siguientes fases: 1. Inicialización. Creación de una población inicial de € n genotipos € xn { } de soluciones. Se puede realizar aleatoriamente garantizando una diversidad representativa de todo el conjunto de genotipos posibles para evitar una convergencia prematura del algoritmo genético en un óptimo local. € xn { } =x1,x2,..., xn 2. Evaluación. Aplicación de la función de aptitud € f a cada genotipo € xi la cual proporciona su medida de aptitud € ai . Al finalizar la evaluación se considera si terminar la ejecución del algoritmo. Para ello se siguen criterios como el haber superado un número máximo de iteraciones, cumplir ciertas expectativas o el no existir cambios en la población en iteraciones consecutivas lo cual es síntoma de haber alcanzado un óptimo. € ai=f xi ( ) , 1 ≤i≤n 3. Selección. Eliminación de los genotipos menos aptos. Éstos son los que no superan un cierto umbral de aptitud. Los supervivientes conforman la población destinada a reproducirse y tener descendencia. 4. Reproducción. Creación de una nueva población a partir de la anterior previamente seleccionada. La reproducción se realiza aplicando operadores genéticos como la recombinación y la mutación. Con la recombinación se obtiene un nuevo genotipo resultado de la unión de sus padres. Este
3.5 Predicción de estados 121 operador se corresponde con la reproducción sexual. La mutación produce modificaciones al azar de uno o varios genes de un genotipo. Este operador permite alcanzar zonas del espacio de búsqueda inicialmente inaccesibles si sólo se aplica la recombinación. Una vez finalizada esta fase se vuelve a la de “Evaluación”. Las partes más relevantes del diseño de un algoritmo genético son la determinación de la estructura de los genotipos y el establecimiento de la función de aptitud. De ellas depende la velocidad de convergencia. Si ésta es muy lenta el algoritmo deja de ser válido en aplicaciones con restricciones temporales. Si es muy rápida el algoritmo tiende a converger sólo hacia óptimos locales. Esto suele suceder cuando aparece con facilidad un superindividuo que termina formando una plaga acabando con la variabilidad genética y la posibilidad de alcanzar el óptimo global. Una posibilidad para aproximar la función F es el empleo de un algoritmo genético. En este caso los genotipos se corresponden con expresiones analíticas de funciones en las que se combinan componentes de la secuencia de estados € sn { } con operadores matemáticos. La aplicación de cada una de estas funciones proporciona la estimación del estado siguiente € ˆ s n+1 . La medida de aptitud de cada genotipo debe estar relacionada con el error cometido en cada estimación con respecto al valor real del estado siguiente € sn+1 . A menor error mayor aptitud y viceversa. Los algoritmos genéticos han demostrado su capacidad para resolver problemas de predicción de sistemas caóticos deterministas reales [206]. Aunque en muchos de estos problemas es posible emplear otros métodos los algoritmos genéticos tienen como ventaja frente a ellos el proporcionar explícitamente una expresión analítica aproximada de la evolución dinámica del sistema [207]. La ejecución de una expresión matemática simple normalmente utiliza poco tiempo y
128 Agentes software emocionales Existen varios modelos de sistemas de lógica difusa. El más conocido y usado es el Mamdani [211] seguido del Sugeno [212]. Las diferencias entre estos modelos se centran especialmente en la expresión de las reglas y en el defuzzificador. En el modelo Mamdani las reglas son puramente lingüísticas, tanto antecedente como consecuente. En este modelo, siendo € q el número total de reglas, € Ai k los conjuntos difusos en € Ui⊆R , € Bk el conjunto difuso en € V⊆R , € xi∈Ui las variables numéricas de entrada e € y∈V la variable numérica de salida, una regla € Rk con índice € k≤q tiene la forma: € Rk: SI x1 es A1 k ∧ x2 es A2 k ∧... ∧ xm es Am k ENTONCES y es Bk La aplicación de la regla € Rk comienza con el cálculo del valor € wk de su antecedente. En este caso al tratarse éste de una conjunción se emplea una operación t-norma. Si elegimos la del mínimo su expresión es la siguiente: € wk=min µ A1 kx1 ( ) , µ A2 kx2 ( ) , ... , µ Am kxm ( ) ( ) El resultado de la implicación entre antecedente y consecuente es un nuevo conjunto difuso € B∗ k y éste se calcula con una operación t-norma. Las más habituales para este fin son la del mínimo y la del producto. Si elegimos la del mínimo su expresión es la siguiente: € µ B∗ ky∗ ( ) =min wk , µ Bky∗ ( ) ( ) Varias reglas pueden producir nuevos conjuntos difusos para una misma variable de salida. Es necesario agregar estas reglas para obtener un conjunto € ʹ′ B único. Esta agregación es una unión de conjuntos y para ella se emplea una operación t-conorma. La más frecuente en este caso es la del máximo. Si la elegimos su expresión es la siguiente:
3.5 Predicción de estados 129 € µ ʹ′ B y∗ ( ) =max µ B∗ 1y∗ ( ) , µ B∗ 2y∗ ( ) , ... , µ B∗ qy∗ ( ) ( ) Finalmente se obtiene cada valor numérico de salida € y a partir de su correspondiente conjunto difuso agregado. Para ello el método más usado es el cálculo del centroide o centro de gravedad del área descrita por la función de pertenencia del conjunto difuso agregado. Aunque su cálculo puede ser complicado garantiza una solución única. Su expresión es la siguiente: € y=y∗ µ ʹ′ B y∗ ( ) dy∗ ∫ µ ʹ′ B y∗ ( ) ∫ dy∗ En el modelo Sugeno el antecedente de las reglas es lingüístico y el consecuente numérico. En este modelo, siendo € q el número total de reglas, los € Ai k los conjuntos difusos en € Ui⊆R , los € xi∈Ui las variables numéricas de entrada, € y∈R la variable numérica de salida y € fk:Rm→R una función matemática, una regla € Rk con índice € k≤q tiene la forma: € Rk: SI x1 es A1 k ∧ x2 es A2 k ∧... ∧ xm es Am k ENTONCES y=fkx1,x2,..., xm ( ) El antecedente es similar al de una regla del modelo Mamdani. El consecuente especifica directamente el valor numérico de salida en función de los valores numéricos de entrada. Esto hace que en este modelo la desfuzzificación quede muy simplificada mejorando la eficiencia del sistema de lógica difusa. Cada valor numérico de salida € y es la media ponderada de sus apariciones en las reglas. Ésta se expresa de la siguiente manera:
130 Agentes software emocionales € wk=min µ A1 kx1 ( ) , µ A2 kx2 ( ) , ... , µ Am kxm ( ) ( ) ʹ′ y k=fkx1,x2,..., xm ( ) y= wiʹ′ y i i=1 q ∑ wi i=1 q ∑ El modelo Mamdani está especialmente indicado cuando el número de variables es reducido y las reglas son proporcionadas por personas expertas. En cambio el modelo Sugeno está dirigido a problemas con una elevada cantidad de variables y en los que es necesario emplear técnicas de creación automática de reglas para la formación del sistema de lógica difusa. Una posibilidad para aproximar la función F es emplear un sistema de lógica difusa. En este caso los valores numéricos de entrada se corresponden con la secuencia de estados € sn { } y el único valor numérico de salida con la estimación del estado siguiente € ˆ s n+1 . Para calcular el error del sistema se tiene en cuenta el valor real del estado siguiente € sn+1 . La predicción de sistemas caóticos deterministas mediante sistemas de lógica difusa es compatible con el modelo Mamdani [213] aunque para este tipo de labores se recomienda el modelo Sugeno siempre y cuando el ruido en los datos no sea muy elevado [214]. Por ello consideramos conveniente centrarnos en el modelo Sugeno y en concreto en el de orden cero. En éste las funciones empleadas en el consecuente de las reglas son polinomios de grado cero. Con esta restricción se facilita la creación y gestión automática de las reglas difusas. Las cualidades de un sistema de lógica difusa están marcadas principalmente por las variables y términos lingüísticos con los que opere. Si son muy numerosas la
3.5 Predicción de estados 131 cantidad de reglas necesarias para contemplar todas las combinaciones posibles de variables y términos lingüísticos se dispara con la consecuente pérdida de eficiencia (min(t) ∧ min(C)). En cambio si son escasas se corre el riesgo de perder información y no proporcionar un resultado satisfactorio (min(e)). Por ello en esta situación es conveniente considerar sólo los últimos € m estados de la secuencia de estados € sn { } . La Fig. 32 muestra el esquema del sistema de lógica difusa con esta característica. En este sistema de lógica difusa cada regla asocia a cada patrón de estados una estimación del estado siguiente. De este modo una regla difusa € Rk en la que € γ k es el coeficiente del polinomio de grado cero de su consecuente se expresa de la siguiente manera: € Rk: SI sn−m+1 es A1 k ∧... ∧ sn es Am k ENTONCES ˆ s n+1= γ k El número total € υ de reglas difusas, contemplando cada una un patrón de estados distinto y siendo € l el número de términos lingüísticos, cumple la siguiente expresión: € υ =lm Fig. 32. Sistema de lógica difusa
132 Agentes software emocionales Estas reglas se crean automáticamente siguiendo un esquema inductivo (patrón-estimación-regla) cuando aparecen patrones no contemplados en la base de conocimiento hasta completar las € υ reglas. En cualquier caso en cada ejecución del sistema de lógica difusa se ajustan los coeficientes de los polinomios de los consecuentes de las reglas registradas [215] para poder proporcionar en todo momento una estimación del estado siguiente con el mínimo error posible. Los coeficientes € γ k de los polinomios de los consecuentes de las reglas difusas forman la matriz de coeficientes € Γ∈M 1× υ R ( ) . Ésta es una matriz densa de € υ elementos y su expresión es la siguiente: € Γ= γ 1 γ 2... γυ [ ] Este sistema de lógica difusa tiene ciertas ventajas destacables. La creación y ajuste de las reglas difusas es sencilla. En su base de conocimiento pueden coexistir reglas difusas con distinto valor de € m , más generales ( € m menor) y más concretas ( € m mayor). Por ello la sensibilidad a pequeños patrones de la secuencia de estados es mayor que la de otros métodos. Sin embargo, este sistema también presenta algunos inconvenientes que deben tenerse en cuenta. Para no perder precisión es adecuado que € l no sea muy pequeño. Además para disminuir la ambigüedad es útil que € m sea grande. Todo esto repercute en un número muy elevado de reglas. En este supuesto la eficiencia se ve muy comprometida tanto por los recursos empleados como por el tiempo necesario para verificar todas las reglas y aplicar las que se cumplan. Otro problema es el comportamiento del sistema de lógica difusa cuando aparecen nuevos patrones no contemplados en la base de conocimiento lo cual suele ser frecuente por la elevada variabilidad del estado del enlace inalámbrico y de su
3.5 Predicción de estados 133 entorno. En estos casos la estimación del estado siguiente proporcionada no es fiable y debe descartarse. Esto es complicado porque el sistema de lógica difusa no realiza esta tarea y tampoco advierte de esta situación. Esperar a que ocurran todos los patrones posibles y se creen sus correspondientes reglas antes de admitir las estimaciones del estado siguiente no es viable porque no hay garantía de que el tiempo necesario para ello sea finito. Otra estrategia para mitigar este problema es combinar reglas generales con reglas concretas para comprender más patrones posibles. Sin embargo, la ambigüedad añadida por las reglas generales puede llegar a ser contraproducente. 3.5.4 Discusión Los métodos estudiados (redes neuronales artificiales, algoritmos genéticos y sistemas de lógica difusa) se encuentran en una situación similar ante el problema que se pretende solucionar: la predicción del estado del enlace inalámbrico para la detección prematura de interrupciones de video-streaming. En la práctica estos métodos no pueden aproximar la versión original de la función € F que asocia a la secuencia completa de n estados una estimación del estado siguiente. Para superar este obstáculo es necesaria una versión simplificada de € F que sí puedan aproximar y que en este caso asocia a la ventana deslizante formada por los últimos € m estados una estimación del estado siguiente. La expresión de esta nueva versión es la siguiente: € ˆ s n+1=F sn−m+1,sn−m+2,...,sn ( ) La elección del valor de € m no es trivial. Si éste es demasiado bajo se pueden dar situaciones ambiguas en las que para una misma ventana de estados sean
134 Agentes software emocionales válidas estimaciones del estado siguiente muy dispares. En cambio si éste es demasiado elevado la complejidad de la función, y por ende la del método, aumenta. La disminución de € m suele mejorar la eficiencia (min(t) ∧ min(C)) a costa de la eficacia (min(e)) y viceversa. Esta relación no es estable y el valor óptimo de € m varía, no siendo siempre el máximo posible que cumpla los requisitos de eficiencia como se puede presuponer. En base a esto para un método cuasióptimo proponemos: 1. Filtrar estados. Muchas veces la aparición de determinados estados hace irrelevantes a algunos de sus vecinos. Estos últimos terminan aportando poca información y son descartables. Con esta práctica se consigue reducir parcialmente la complejidad que produce un valor de € m elevado. Para realizarla es necesario incluir un filtro adaptativo muy complejo con criterios desconocidos a priori que indiquen qué estados al descartarse no alteran la predicción; no es posible garantizar la estabilidad de este filtro. Combinarlo con los métodos estudiados es poco viable y puede desestabilizar enormemente el proceso global de predicción. 2. Resumir la secuencia de estados. Generalmente es posible analizar un segmento de la secuencia de estados y determinar sus características básicas. Éstas forman un resumen € rn del segmento. La correspondencia entre segmento y resumen es determinada por una función € R . Incorporar un resumen de este tipo en la función € F permite contemplar indirectamente una cantidad de estados adicional a modo de contexto sin necesidad de aumentar el valor de m para ello. Sin embargo, el establecimiento de la función € R no es trivial debido a que el resumen debe servir para minimizar el error cometido por € F . Con los métodos estudiados una función € R efectiva debe ser ajustada pudiendo llegar a
3.5 Predicción de estados 135 superar en complejidad a la función € F lo cual no es deseable. La combinación de estas funciones se expresa de la siguiente manera: € rn=R sn−q+1,sn−q+2,...,sn−m ( ) , q>m ˆ s n+1=F rn,sn−m+1,sn−m+2,...,sn ( ) En el momento de ejecutar los métodos estudiados es la necesidad de una muestra de entrenamiento adecuada el mayor obstáculo para que operen con eficacia. El tiempo necesario para obtener esta muestra, como ya se ha comentado, puede ser elevado. La posibilidad de realizar un pre-entrenamiento en cualquiera de estos métodos no es viable porque las condiciones encontradas en el momento de ejecución suelen ser muy dispares. Por ello siempre es necesario esperar hasta lograr una adaptación suficiente. Este problema no tiene una solución sencilla pero para un método cuasi-óptimo proponemos ciertas propiedades que pueden mitigarlo: 1. Sesgos básicos iniciales. Ante la ausencia de experiencia en un tipo de situación es conveniente disponer previamente de algunas indicaciones básicas y generales sobre cómo ésta va a evolucionar. Estas indicaciones a modo de sesgos en la estimación del estado siguiente más que orientadas a una mayor exactitud deben estarlo a la minimización de los efectos negativos que produce una estimación incorrecta. Contemplar estos sesgos con los métodos estudiados supone combinarlos con otros métodos para realizar estimaciones del estado siguiente sesgadas y detectar las situaciones en las que considerarlas al no disponer de la suficiente experiencia. Esta ampliación no es sencilla y aumenta la complejidad del proceso general lo que puede llegar a comprometer su eficiencia. 2. Conocimiento acumulativo. Los métodos estudiados deben adaptarse continuamente. Esto hace que en su entrenamiento ininterrumpido los
136 Agentes software emocionales estados recientes tengan preferencia sobre los antiguos pudiendo llegar a perderse información. Por ello el conocimiento en los citados métodos tiende acusadamente a la autodestrucción ante situaciones nuevas. Evitando esta tendencia y haciendo que el conocimiento sea acumulativo y no destructivo se evita además de la pérdida de información la necesidad de readaptarse ante situaciones ya pasadas. Proporcionar esta capacidad a los métodos estudiados implica replicarlos para cada situación diferenciada lo cual además de complicado, al tener que delimitar cada situación, es muy ineficiente por la enorme cantidad de situaciones posibles. Una vez identificadas las carencias de los métodos analizados y propuestas las características que debe incorporar un método cuasi-óptimo derivado de ellos se puede optar por su creación o por reducir el planteamiento del problema en la medida de lo posible. Un ejemplo reciente de reducción del planteamiento del problema es el de [216] que considera sólo el RSSI como medida para caracterizar el enlace inalámbrico. Sus autores suponen que el RSSI tiene un comportamiento de reversión a la media con saltos discontínuos. Mediante una versión modificada del proceso de tiempo continuo de Ornstein-Uhlenbeck, análogo al proceso de tiempo discreto AR(1), y un análisis probabilístico de los saltos discontínuos predicen en tiempo real la degradación o fallo del enlace inalámbrico. Estos autores analizan el caso de un computador personal portátil en movimiento dentro de una oficina con un punto de acceso y en exterior con dos puntos de acceso separados 50 metros. Con una frecuencia de muestreo de 10 Hz tienen en cuenta sólo una ventana temporal de 3 segundos y predicen a intervalos de 0.5 segundos.
3.6 Sistema emocional 137 Consideramos que la predicción de interrupciones de video-streaming, con dispositivos móviles que se mueven libremente tanto en interiores como en exteriores y en presencia de uno o más puntos de acceso así como de otros dispositivos móviles, tiene una complejidad mayor que la analizada por estos autores y no se puede realizar sólo con secuencias de valores de RSSI. El resto de variables observables también debe ser tenido en cuenta. Además consideramos que aunque es posible predecir estas variables individualmente, sin contemplar relaciones entre ellas, es más conveniente en casos como éste un análisis multivariable [217]. 3.6 Sistema emocional Tradicionalmente ha existido cierto antagonismo irreductible entre la razón y la emoción. Este dualismo imperante en el pensamiento occidental ha devaluado lo considerado como emocional frente a lo racional [218]. Un caso extremo se observa en Descartes quien afirma que “la razón es la única cosa que nos hace hombres y nos distingue de los animales” [219]. Sin embargo, dos siglos después Nietzsche considera que “Descartes, padre del racionalismo, reconoció autoridad únicamente a la razón: pero ésta no es más que un instrumento, y Descartes era superficial” [220], es decir, Descartes no hizo un análisis lo suficientemente profundo: no tuvo en cuenta con detalle las fuentes condicionantes básicas del comportamiento humano. Todo esto hace recordar a otro autor contemporáneo a Descartes, Pascal, quien sostuvo intuitivamente que “el corazón tiene razones, que la razón no conoce” [221], y que por lo tanto los instintos y las emociones también deben tenerse en cuenta para llegar al máximo potencial intelectual del ser humano.
240 BIBLIOGRAFÍA [318] Microsoft .NET. Online: [http://www.microsoft.com/net]. [319] M. Nikraz, G. Caire, P.A. Bahri, “A Methodology for the Analysis and Design of Multi-Agent Systems using JADE”, International Journal of Computer Systems Science & Engineering, Vol. 21, No. 2, pp. 99-116, 2006. [320] Unified Modeling Language (UML). Online: [http://www.uml.org/]. [321] The FIPA Agent UML (AUML). Online: [http://www.auml.org/]. [322] RTP Java Library. Online: [http://sourceforge.net/projects/jlibrtp/]. [323] jSDP. Online: [http://sourceforge.net/projects/jsdp/]. [324] JFreeChart. Online: [http://www.jfree.org/jfreechart/]. [325] Wireshark. Online: [http://www.wireshark.org/]. [326] Eclipse. Online: [http://www.eclipse.org/]. [327] Protégé. Online: [http://protege.stanford.edu/]. [328] OntologyBeanGenerator. Online: [http://protegewiki.stanford.edu/wiki/OntologyBeanGenerator]. [329] R: The R Project for Statistical Computing. Online: [http://www.r-project.org/]. [330] RStudio. Online: [http://www.rstudio.com/]. [331] “FIPA ACL Message Structure Specification”, Foundation for Intelligent Physical Agents, 2002. [332] T. Finin, J. Weber, G. Wiederhold, M. Genesereth, R. Fritzson, D. McKay, J. McGuire, R. Pelavin, S. Shapiro, C. Beck, “Specification of the KQML AgentCommunication Language – plus example agent policies and architectures”, The DARPA Knowledge Sharing Initiative External Inerfaces Working Group, 1993. [333] K. Spalek, M. Fastenrath, S. Ackermann, B. Auschra, D. Coynel, J. Frey, L. Gschwind, F. Hartmann, N. van der Maarel, A. Papassotiropoulos, D. de Quervain, A. Milnik, “Sex-Dependent Dissociation between Emotional Appraisal and Memory: A Large-Scale Behavioral and fMRI Study”, The Journal of Neuroscience, Vol. 35, No. 3, pp. 920-935, 2015. [334] T.W. Schmitz, E. De Rosa, A.K. Anderson, “Opposing Influences of Affective State Valence on Visual Cortical Encoding”, The Journal of Neuroscience, Vol. 29, No. 22, pp. 7199-7207, 2009. [335] B. Peters, J. Kaiser, B. Rahm, C. Bledowski, “Activity in Human Visual and Parietal Cortex Reveals Object-Based Attention in Working Memory”, The Journal of Neuroscience, Vol. 35, No. 8, pp. 3360-3369, 2015. [336] S. Shokur, J.E. O’Doherty, J.A. Winans, H. Bleuler, M.A. Lebedev, M.A.L. Nicolelis, “Expanding the primate body schema in sensorimotor cortex by virtual touches of an avatar”, PNAS, Vol. 110, No. 37, pp. 15121-15126, 2013.
BIBLIOGRAFÍA 241 [337] M. Wimber, A. Alink, I. Charest, N. Kriegeskorte, M.C. Anderson, “Retrieval induces adaptive forgetting of competing memories via cortical pattern suppression”, Nature Neuroscience, Vol. 18, No. 4, pp. 582–589, 2015. [338] A.Y. Sklar, N. Levy, A. Goldstein, R. Mandel, A. Maril, R.R. Hassin, “Reading and doing arithmetic nonconsciously”, PNAS, Vol. 109, No. 48, pp. 19614-19619, 2012. [339] G. de Lavilléon, M.M. Lacroix, L. Rondi-Reig, K. Benchenane, “Explicit memory creation during sleep demonstrates a causal role of place cells in navigation”, Nature Neuroscience Vol. 18, No. 4, pp. 493-495, 2015. [340] Wowza Streaming Engine: RTSP Streaming. Direct RTSP URL: [rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov]. [341] Amazon Elastic Compute Cloud (EC2) – Alojamiento escalable en la nube. Online: [http://aws.amazon.com/es/ec2/]. [342] OpenCL - The open standard for parallel programming of heterogeneous systems. Online: [http://www.khronos.org/opencl/]. [343] V. Mnih, K. Kavukcuoglu, D. Silver, A.A. Rusu, J. Veness, M.G. Bellemare, A. Graves, M. Riedmiller, A.K. Fidjeland, G. Ostrovski, S. Petersen, C. Beattie, A. Sadik, I. Antonoglou, H. King, D. Kumaran, D. Wierstra, S. Legg, D. Hassabis, “Human-level control through deep reinforcement learning”, Nature, Vol. 518, No. 7540, pp. 529–533, 2015. [344] “Watson - A System Designed for Answers. The future of workload optimized systems design”, IBM White Paper, 2011. [345] E. Morsella, C.A. Godwin, T.K. Jantz, S.C. Krieger, A. Gazzaley, “Homing in on Consciousness in the Nervous System: An Action-Based Synthesis”, Behavioral and Brain Sciences, pp. 1-106, 2015.