Aprendizaje Automático

El Aprendizaje Automático es una rama de la Inteligencia Artificial en la cual su principal objetivo es desarrollar técnicas que permitan a las computadoras aprender, es decir, se considera como un proceso de inducción del conocimiento. El aprendizaje automático se centra en el estudio de la Complejidad Computacional de los problemas. Muchos problemas son de clase NP-hard, por lo que las aplicaciones desarrolladas en aprendizaje automático están enfocadas al diseño de soluciones viables a esos problemas.

Dentro de las aplicaciones de aprendizaje automático están: motores de búsqueda, diagnósticos médicos, detección de fraude en el uso de tarjetas de crédito, análisis del mercado de valores, clasificación de secuencias de ADN, reconocimiento del habla y del lenguaje escrito, juegos y robótica.

Algunos expertos en el desarrollo de sistemas de aprendizaje automático han tratado de eliminar la intuición o el conocimiento de los procesos que se generan en la interacción hombre-máquina; otros, en cambio, tratan de establecer una colaboración entre estos dos elementos. La participación humana y sus intuición no puede ser remplazada por una máquina, el humano, es decir, el experto que desarrolla estos sistemas es quién hace el diseño y determina los procesos que debe realizar el sistema o la máquina. Por lo tanto no puede ser remplazado, a excepción de algunas tareas o procesos que son automatizados para mejorar el rendimiento de estos sistemas.

A través del aprendizaje automático se puede generar tres tipos de conocimiento, cada tipo dependerá del tema que se desee aprender:

1. Crecimiento
Es el que se adquiere de lo que nos rodea, el cual guarda la información en la memoria como si dejara huellas.

2. Reestructuración
Al interpretar los conocimientos el individuo razona y genera nuevo conocimiento al cual se le llama de reestructuración.

3. Ajuste
Es el que se obtiene al generalizar varios conceptos o generando los propios.

Existen algoritmos que son utilizados en el aprendizaje automático para la generación de conocimiento y el mejoramiento en el rendimiento de los sistemas computacionales. Son cinco los algoritmos utilizados, estos son:

1. Aprendizaje supervisado
Produce una función que establece una correspondencia entre las entradas y las salidas deseadas del sistema.

2. Aprendizaje no supervisado
Todo el proceso se lleva a cabo sobre un conjunto de ejemplos formado por entradas al sistema. No existe información de las categorías de esos ejemplos.

3. Aprendizaje por refuerzo
El algoritmo aprende observando el mundo que le rodea. Su información de entrada es la retroalimentación que obtiene del exterior en función de sus acciones.

4. Transducción
Similar al aprendizaje supervisado, pero no construye de forma explícita una función. Trata de predecir las categorías de los futuros ejemplos basándose en los ejemplos de entrada, sus respectivas categorías y ejemplos nuevos.

5. Aprendizaje multi-tarea
Métodos de aprendizaje que usan conocimiento previamente aprendido por el sistema con el fin de enfrentarse a problemas similares a los vistos.

El aprendizaje automático se ha convertido en un eje fundamental de la inteligencia artificial. En la construcción de sistemas inteligentes, es necesario que estos aprendan y vayan adquiriendo experiencia conforme realizan sus procesos sin la necesidad de una supervisión por parte de expertos.

Proceso de la Ingeniería de Requisitos

Es muy importante definir cuál es el proceso de ingeniería de requisitos ya que esto nos va a servir para la obtención correcta de los requerimientos. Se han definido diversos modelos a nivel de toda la Ingeniería de Software, así tenemos para el desarrollo de aplicaciones web, de escritorio, o sencillamente se ha definido un estándar, pero en general, la mayor parte de estos procesos tienen un símil y lo único que buscan es recopilar la mayor cantidad de requerimientos correctos para así conformar una buena estructura que servirá de base para el desarrollo de un proyecto.

Proceso de la Ingenier�a de Requisitos

 

En la figura, se muestra un esquema del proceso de la ingeniería de requisitos basado en la Ingeniería de Software de Gestión. El proceso se cumple en cinco fases: viabilidad, captura y análisis, especificación, validación y gestión de requisitos.

 

Estudio de viabilidad: Este permitirá rendir un informe tanto al equipo de desarrollo del proyecto como al usuario o cliente, donde se verificará si el proyecto vale la pena desarrollarlo. Es de vital importancia para la satisfacción de los objetivos del negocio.

 

Captura y Análisis: En esta fase el desarrollador o su equipo de desarrollo entran en contacto con el usuario final o con el cliente para determinar el alcance del proyecto o del sistema que se desea construir, además, se debe identificar cuáles son los servicios que prestará el sistema, su rendimiento, sus necesidades y restricciones, y cuáles son los objetivos esperados.

 

Especificación: Aquí se debe obtener un documento de especificación de requisitos, en cual se llega a definir de una forma completa, precisa y verificable cada uno de los requerimientos o necesidades que debe satisfacer el sistema a desarrollar, además de sus respectivas restricciones (software, hardware).

 

Validación: Consiste en mostrar o comprobar que cada uno de los requisitos obtenidos definen el sistema o proyecto que se va a construir y que desea el cliente. En esta etapa solamente entran aquellos requisitos que se mencionaron ya en la especificación.

 

Gestión: Se realiza la comprensión y control de los cambios de cada una de los requisitos, sean estos requisitos estables (corresponden al estado del sistema) o volátiles (representan eventos que hacen que el sistema realice una función dada).

¿Qué es Ingeniería de Requisitos (IR)?

Existen varios conceptos o significados acerca de la ingeniería de requisitos que nos proporcionan varios autores según su nivel de experiencia, sentido común o simplemente por su forma de ver los requerimientos respecto al desarrollo de un determinado proyecto. En la ingeniería­ de requisitos principalmente se identifican dos aspectos muy importantes, el primero que es el propósito del sistema que se va a desarrollar y el segundo, el contexto en el que será usado. En base a estas características, se definen algunos conceptos como:

 

(i)     La ingeniería de requisitos o los requisitos en sí, constituyen el enlace entre las necesidades reales de los clientes, usuarios y otros participantes vinculados al sistema. La ingeniería de requisitos consiste en un conjunto de actividades y transformaciones que pretenden comprender las necesidades de un sistema software y convertir la declaración de estas necesidades en una descripción completa, precisa y documentada de los requerimientos del sistema siguiendo un determinado estándar.[1]

 

(ii)        La ingeniería de requisitos es un área de investigación que procura atacar un punto fundamental en el proceso, que es la definición de lo que se quiere producir.[2]

 

(iii)   Es una condición o necesidad de un usuario para resolver un problema o alcanzar un objetivo. Una condición o capacidad que debe estar presente en un sistema o componentes de sistema para satisfacer un contrato, estándar, especificación u otro documento formal. Una representación documentada de una condición o capacidad de un sistema.[3]

 

La Ingeniería de Requerimientos en si cumple un papel primordial en el proceso de construcción y producción de un software, es decir que, estará basado en función de las necesidades planteadas por los clientes en un nivel muy general, donde se descubre, documenta, analiza y se define los servicios o componentes de lo que se desea producir, además de las restricciones que tendrá el producto o software. Su principal tarea consiste en la definición del proceso a seguir en la construcción de un software, y de facilitar la comprensión de lo que el cliente requiera. La obtención correcta de los requerimientos puede llegar a describir con claridad, sin ambigüedades, en forma consistente y compacta, el comportamiento de un sistema.

 

De tal manera que, basarse en la extracción de requisitos y sobre todo que sean correctos, lo único que se pretende en la construcción no solo de grandes sistemas software sino también simples, es la de minimizar los problemas relacionados al desarrollo de sistemas, claro está en proporción a la realidad de cada proyeto, con lo que se logra reducción de tiempo en la construcción, reducción de errores, y los más importante no solo para el cliente sino también para el desarrollador, evita gastar dinero más de lo planeado y determinado para el proyecto.


[1] José Manuel Márquez, Docente de la Universidad de Valladolid.

[2] Ing. Leidy Fernández Sánchez.

[3] IEEE.

Yahoo incursiona en la web semántica

«Yahoo comienza a indexar microformatos, en un paso hacia lo que ellos llaman «Yahoo! Search open platform». Es que es interesante que un actor relevante en el mercado de las búsquedas como es Yahoo, comience a apostar por soportar estándares de la web semántica (RDF , los microformatos hCard, hCalendar, hReview, hAtom, y XFN, y Open Search).¿Para qué pueden valer cosas como estas? Pues partiendo de que se agregue la información semántica desde las webs indexadas, hay un montón de posibilidades.

El problema está, como explica JJ, en que el uso de estos estándares siempre ha sido marginal, a lo que hay que añadir que cada x años los mitos de la web semántica vuelven. Quizás esta vez haya una ventana de oportunidad: cada vez más contenido se crea desde gestores que empiezan a incorporar estas tecnologías. Si a eso sumamos que también hay muchas «plataformas de contenidos» como Youtube y servicios que publican relaciones (contactos) en XFN… pues tenemos algunos síntomas de que la web semántica podría ser rescatada del sueño de los justos y, si bien dudo mucho de que traiga todo lo que sus profetas llevan décadas vaticinando, podría alumbrar algunas ideas interesantes. Precisamente, no hace mucho, Google publicó una API basada en XFN y FOAF y ahora tenemos el paso de Yahoo, aunque éste no deja de ser una huida hacia adelante en su deseo de no ser aniquilado por Google.» (Tomado de error500).

El desarrollo de la web semántica permitirá que no solo los seres humanos puedan enterder el contenido que se maneja en la web, sino también los computadores, de esto se servirá la web semántica a través de sus lenguajes RDF, RDFSchema, XMLXMLSchema, OIL, OWL, y otros aspectos como las ontologías, con la finalidad de dar mejores prestacionesal usuario y sobre todo de manejar mejor la información y generar conocimiento. Implicará muchos recursos tecnológicos y económicos cambiar toda la información de la web que actualmente se tiene a la web semántica, esperemos que muy pronto está nueva web transforme radicalmenta la forma de utilizar la información de Internet y de mejorar la seguridad de la información en la web.