martes, 3 de mayo de 2011

COMPUTACIÓN GRÁFICA


Introducción
En los últimos treinta años, las técnicas de modelaje en computación gráfica han evolucionado significativamente. Se han utilizado modelos basados en polígonos, superficies, líneas y puntos, sin embargo no han sido suficientes para representar las características tan complejas de los objetos y fenómenos naturales, ya que los modelos matemáticos utilizados a veces son poco manejables o controlables. Por eso se han desarrollado unas técnicas avanzadas de modelaje, con la finalidad de proveer mecanismos concisos, eficientes, flexibles y controlables para especificar y animar los objetos naturales. Desde hace varios años con el gran avance de la informática se han desarrollado en todo el mundo diversos paquetes y programas graficadores que están a la disposición de todos los usuarios.
Desarrollo

Podemos definir el contexto dentro del cual se desarrolla la actividad de la Computación Gráfica, abarcando aspectos históricos y tecnológicos, para así comprender la importancia de ésta y áreas de desarrollo.
En el aspecto histórico podemos destacar el inicio con la aparición de la computadora ENIAC utilizada principalmente en aplicaciones científicas (calculaba densidades de neutrón transversales para ver si explotaría la bomba de hidrógeno) los resultados  eran impresos. Solo a partir del siguiente avance tecnológico los dispositivos de visualización  recién se pudieron observar los resultados en la computadora a través del CRT (Tubo de Rayos Catódicos) y la primera computadora que lo utilizo fue Whirlwind, construida en el MIT (Instituto Tecnológico de Massachussets) en 1950.
Pero es a partir de la década del 70 donde podemos destacar avances más significativos en este campo por ejemplo Edwin Catmull creo La primera animación por y fue de sí mismo. El creó una animación de su mano abriéndose y cerrándose. Se volvió uno de sus objetivos crear una película entera usando gráficos por computadora, siguieron las gráficas en TV el algoritmo de superficie oculta. En el 71 aparece Atari y empieza la era de los videos juegos. Posterior a esto ya podemos ver que en el cine obtuvo su mejor escenario ya que películas con Forres Gump, Toy Story, X-Men entre otras son creadas mediante estas nuevas técnicas de graficas por computadora. En esta última década lo más destacable es la aparición de los aceleradores gráficos  usados  por Nvidia 3DFX etc.

En la parte tecnológica podemos explicar que Un sistema gráfico tradicional consta de cuatro componentes: procesador, unidad de procesamiento gráfico, dispositivos de entrada y dispositivos de salida. El procesador desempeña un papel central en cualquier sistema gráfico y cada uno de los demás componentes debe comunicarse en algún momento con otro, o con el procesador mediante un canal de datos. Generalmente el dispositivo principal de salida de un sistema gráfico es un monitor de video. El tipo más común es un CRT y actualmente se incrementa el uso de los LCD.

Dispositivos de entrada
Teclado: un dispositivo para introducir texto y caracteres presionando botones (referidos como teclas), similar a una máquina de escribir. La configuración más común de teclas en la QWERTY.
Ratón: un dispositivo apuntador que detecta el movimiento bidimensional relativo a su superficie de contacto.
Trackball: un dispositivo apuntador que consiste en una esfera expuesta colocada en un armazón que detecta la rotación sobre dos ejes.
Joystick: un dispositivo general de control que consta de dos o tres ejes que transmiten el ángulo de su movimiento en dos o tres dimensiones a la computadora.
Gamepad: un control de juegos general que posee botones y un control de dirección que se manipulan con los dedos.
Scanner: dispositivo que analiza imágenes, texto impreso o escritura a mano y los convierte en imágenes digitales.
Cámara Web: una cámara de video de baja resolución usada para proveer una entrada visual que puede ser fácilmente transferida por Internet.
Lápiz óptico: un dispositivo con fotocelda que, cuando se activa oprimiendo la punta contra la pantalla, devuelve a la computadora la posición del pixel iluminado en ese campo visual.
Guante de datos: un dispositivo con sensores que detectan los movimientos de la mano y de los dedos para poner en posición.

Dispositivos de salida
Impresora: un dispositivo periférico que produce una copia impresa de un documento.
Monitor: dispositivo que despliega una señal de video, similar a una televisión, para proporcionar información y una interfaz con la cual interactuar.
Altavoces: dispositivo que convierte señales de audios analógicos en vibraciones de aire equivalentes para hacer el sonido audible.
  
El software gráfico
Una representación gráfica consisten en un conjunto de pixeles que se obtiene a partir de una idea de más alto nivel; como puede ser la descripción de la gráfica en términos de líneas, arcos, colores etc. o incluso en términos de objetos tridimensionales, puntos de vista e iluminación.
Las siguientes APIs para gráficos por computadora son particularmente populares:
• OpenGL
• Direct3D (subconjunto de DirectX para producir gráficos interactivos en 3D)

Conclución
  • La Computación Gráfica evoluciona a la par del desarrollo del Hardware y Software
  • Cada vez es mayor el uso de estas técnicas en el Septimo Arte (Cine)



 

lunes, 8 de noviembre de 2010

Sistemas Expertos

Sistemas Expertos
 
Introducción
Los sistemas expertos son programas que reproducen el proceso intelectual (conocimiento) de un experto humano en un campo particular, pudiendo mejorar su productividad, ahorrar tiempo y dinero, conservar sus valiosos conocimientos y difundirlos más fácilmente.
Antes de la aparición del computador, el hombre ya se preguntaba si se le arrebataría el privilegio de razonar y pensar. En la actualidad existe un campo dentro de la inteligencia artificial al que se le atribuye esa facultad: el de los sistemas expertos. Estos sistemas permiten la creación de máquinas que razonan como el hombre, restringiéndose a un espacio de conocimientos limitado. En teoría pueden razonar siguiendo los pasos que seguiría un experto humano (médico, analista, empresario, etc.) para resolver un problema concreto. Este tipo de modelos de conocimiento por ordenador ofrece un extenso campo de posibilidades en resolución de problemas y en aprendizaje. Su uso se extenderá ampliamente en el futuro, debido a su importante impacto sobre los negocios y la industria.

Definición
Los sistemas expertos se pueden considerar como el primer producto verdaderamente operacional de la inteligencia artificial.
Son programas de ordenador diseñados para actuar como un especialista humano en un dominio particular o área de conocimiento.

Características de los Sistemas Expertos
La característica fundamental de un sistema experto es que separa los conocimientos almacenados (base de conocimiento) del programa que los controla (motor de inferencia). Los datos propios de un determinado problema se almacenan en una base de datos aparte (base de hechos).
Una característica adicional deseable, y a veces fundamental, es que el sistema sea capaz de justificar su propia línea de razonamiento de forma inteligible por el usuario.

Arquitectura de un Sistema Experto
No existe una estructura de sistema experto común. Sin embargo, la mayoría de los sistemas expertos tienen unos componentes básicos:
·         Base de conocimientos,
·         Motor de inferencia,
·         Base de datos e
·         Interfaz con el usuario.
Muchos tienen, además, un módulo de explicación y un módulo de adquisición del conocimiento.

Estrategias del Motor de inferencia
El Motor de Inferencias (MI) es un programa de control cuya función es seleccionar las reglas posibles a satisfacer el problema, para ello se vale de ciertas estrategias de control sistemáticas o de estrategias heurísticas.

·         Estrategias de control sistemático:
·         Encadenamiento hacia adelante o hacia atrás.
·         Búsqueda en profundidad o a lo ancho.
·         Régimen de control irrevocable o por tentativa.
Estas estrategias son de forma sistemática las cuales deben llevar a la solución del problema

Representación del conocimiento

Las reglas “si-entonces”, también llamadas reglas de producción, constituyen el formalismo más popular para representar conocimiento. En los sistemas expertos tienen las siguientes características deseables:

ü  Modularidad: cada regla define una parte de conocimiento pequeña y relativamente independiente.

ü  Incremental: se pueden añadir nuevas reglas a la base de conocimiento, que son relativamente independientes de las otras reglas.

ü  Modificable: se pueden cambiar reglas por otras nuevas.

ü  Transparente: es capaz de explicar las decisiones tomadas y las soluciones planteadas.

Para desarrollar un sistema experto que resuelva un problema real en un dominio concreto, el primer paso es consultar con humanos expertos en el dominio y después aprender de ese dominio uno mismo. Este paso supone un gran esfuerzo.

Historia de la representación del conocimiento
En ciencias de la computación, particularmente la inteligencia artificial, una serie de representaciones se han ideado para estructurar la información.
KR es el más comúnmente utilizado para referirse a las representaciones destinadas a la transformación por los modernos ordenadores y, en particular, para las representaciones que consiste en objetos explícitos y de afirmación o afirmaciones acerca de ellos. Representing knowledge in such explicit form enables computers to draw conclusions from knowledge already stored ('Clyde is grey'). En representación de conocimiento en forma explícita como permite a los equipos para sacar conclusiones de los conocimientos ya almacenados.
KR Muchos métodos fueron juzgados en la década de 1970 y principios de 1980, como la heurística de preguntas y respuestas, redes neuronales , teoremas , y los sistemas expertos , con éxito variable. Medical diagnosis (eg, Mycin ) was a major application area, as were games such as chess . Diagnóstico médico (por ejemplo, Mycin ) fue una de las principales aplicaciones, al igual que juegos como el ajedrez.
En la década de 1980 lenguajes formales equipo y los sistemas de representación del conocimiento se levantó. Major projects attempted to encode wide bodies of general knowledge; for example the " Cyc " project (still ongoing) went through a large encyclopedia, encoding not the information itself, but the information a reader would need in order to understand the encyclopedia: naive physics; notions of time, causality, motivation; commonplace objects and classes of objects. Los principales proyectos intentado codificar cuerpos gama de conocimientos generales, por ejemplo el " Cic "proyecto (aún en curso) pasó por una gran enciclopedia, no codifica la información en sí misma, pero la información que un lector necesita para comprender la enciclopedia: la física ingenua , nociones de tiempo, la causalidad, la motivación, los objetos comunes y las clases de objetos.
A través de este trabajo, la dificultad de KR llegó a ser mejor apreciada. In computational linguistics , meanwhile, much larger databases of language information were being built, and these, along with great increases in computer speed and capacity, made deeper KR more feasible. En la lingüística computacional , por su parte, mucho más grandes bases de datos de información sobre el idioma se está construyendo, y éstos, junto con grandes incrementos en la velocidad de la computadora y la capacidad, hecho más profundo KR más factible.
Varios lenguajes de programación han sido desarrollados que se orientan a KR. Prolog desarrollado en 1972,  pero popularizado mucho más tarde, representa las proposiciones y la lógica de base, y se pueden extraer conclusiones de los establecimientos conocidos. KL-ONE (1980) es más específicamente a los el conocimiento mismo de representación. In 1995, the Dublin Core standard of metadata was conceived. En 1995, el Dublin Core estándar de metadatos fue concebido. 
Técnicas de adquisición del conocimiento
Las técnicas sobre las que describiré se especializan en las áreas de adquisición del conocimiento, representación de ese conocimiento y maneras de solucionar problemas distribuidos.
Ejemplos de programación._ En donde el conocimiento es adquirido a partir de ejemplos, su función principal es crear programas a partir de ejemplos

Adquisición y refinamiento del conocimiento._ El principio básico de esta técnica es que el conocimiento inicial es ingresado por los programadores, y luego el programa descubre las falencias de las reglas y las remienda. Para que este proceso sea posible el programa experimenta y analiza sucesivamente la base de datos y su funcionamiento y de allí descubre sus debilidades.

Este acercamiento hace que las capacidades de la máquina más la experiencia humana sean aplicables a la generación y mejoramiento interactivo de los SE.

INFERNO: Una aproximación cautelosa a una inferencia incierta.

Inferno es un programa que informa al usuario acerca de las inconsistencias que podrían existir en las información que se le presenta, y hace sugerencias de como cambiar la información para hacerla consistente.
Para lograr esto se necesitan incluir en el programa un razonamiento subjetivo de Bayes, medidas del creer y no creer, y la teoría de la evidencia de Dempster-Shafer.

Resolviendo problemas distribuidos._ Es un proceso en el que varios agentes interactúan para lograr una meta común. Un ejemplo clásico de problemas distribuidos es el control aéreo en un aeropuerto. Usa el knowledge-base-simulation para probar varias estrategias y conductas para llegar lo más eficientemente a la meta.

VERIFICACIÓN DE BASES DE CONOCIMIENTO
El concepto de verificación de bases de conocimientos se corresponde con el de control de calidad del software tradicional. Se diferencian principalmente por las anomalías que se pueden presentar.
Las principales anomalías son las siguientes: inconsistencia, redundancia, circularidad, presencia de objetos innecesarios y ambigüedades.

Modelado del conocimiento

La Ingeniería del Conocimiento comprende tres temas fundamentales:

·         Adquisición del conocimiento.
·         Representación del conocimiento.
·         Integración del conocimiento en un sistema computacional

Metodología para la construcción de sistemas expertos
Para construir un sistema experto existen metodologías de diseño específicas [GRE88, HAY83, IGN91].
A continuación se presenta un procedimiento general de diseño:
Donde
Adquisición del Conocimiento: entrevista al experto para obtener las heurísticas que utiliza para resolver problemas.
Representación del Conocimiento: se analiza, organiza, depura y plasma simbólicamente el conocimiento obtenido del experto
Programación Simbólica se escriben los programas que sean necesarios para simular en la computadora el proceso de resolución que llevaría el experto humano
A continuación se listan algunas consideraciones que deben tomarse en cuenta antes de comenzar a elaborar un sistema basado en conocimiento:
  1. ¿Qué tareas llevará a cabo el Sistema Experto?
  2. ¿Quién es el experto? ¿Por qué es el experto? ¿Qué tan motivado se encuentra para participar? ¿Cuál es su disponibilidad? ¿Existen otros expertos?
  3. ¿Qué relación existe entre las actuales responsabilidades del experto y las tareas que se integrarán en el sistema computacional?
  4. ¿Cuál es el grado de complejidad esperado para cada una de las tareas que se planea lleve a cabo el Sistema Experto?
  5. Identifique el tipo de conocimiento que utiliza el experto. Marque el grado de afinidad según los rangos descritos:
Conclusiones
·         Los sistemas expertos son útiles y prácticos  y  además, son realizables.
·         Un Sistema Inteligente es totalmente flexible y puede ser modificado, o actualizado según las necesidades del usuario, en línea o fuera de línea. Estas modificaciones pueden hacerse más rápidamente que con lenguajes tradicionales
·         Reduce costos y tiempo en la toma de decisiones mejorando la Productividad y Competitividad
·         Se cuenta con “Conocimiento Experto” para decidir.

Recomendaciones
·         Si se dispone a desarrollar un sistema experto, es necesario y recomendable que busque asesoramiento de los mejores expertos humanos que estén a su alcance para lograr un mejor producto.
·         Separar el generador de inferencias de la base de conocimientos.
·         Recuerde que aunque el computador no alcanza el grado de perfección del ser humano y no es consciente del proceso que está llevando a cabo, lo que importa es que funcionan y facilitan una gran cantidad de tareas al hombre.

Resumen
Son programas de ordenador diseñados para actuar como un especialista humano en un dominio particular o área de conocimiento. La característica fundamental de un sistema experto es que separa los conocimientos almacenados (base de conocimiento) del programa que los controla (motor de inferencia). Los datos propios de un determinado problema se almacenan en una base de datos aparte (base de hechos).
No existe una estructura de sistema experto común. Sin embargo, la mayoría de los sistemas expertos tienen unos componentes básicos: Base de conocimientos, Motor de inferencia, Base de datos e Interfaz con el usuario. El Motor de Inferencias (MI) es un programa de control cuya función es seleccionar las reglas posibles a satisfacer el problema, para ello se vale de ciertas estrategias de control sistemáticas o de estrategias heurísticas.
Las reglas “si-entonces”, también llamadas reglas de producción, constituyen el formalismo más popular para representar conocimiento. En los sistemas expertos tienen las siguientes características deseables: Modularidad, incremental, modificable, transparente.
El concepto de verificación de bases de conocimientos se corresponde con el de control de calidad del software tradicional. Para construir un sistema experto existen metodologías de diseño específicas [GRE88, HAY83, IGN91].

Glosario de términos de Inteligencia Artificial

Inteligencia: Una propiedad de la mente en la que se relacionan habilidades tales como las capacidades del pensamiento abstracto, el entendimiento, la comunicación, el raciocinio, el aprendizaje, la planificación y la solución de problemas.
Semántica: El estudio del significado de las palabras.
Ontología: Una forma de representar el conocimiento a través de jerarquías elementales.
CBR (Cased‑Based Reasoning): Sistema de programación en el cual los conocimientos están almacenados en forma de experiencia o casos.
 Algoritmo genético: Técnica basada en la selección natural. La generación de cadenas de bit son creadas y evaluadas usando operaciones similares a la genética, para encontrar la solución más próxima a la optima.
 
Sistemas basados en reglas: Aplicación basada en la representación de los conocimientos que ofrece la habilidad de analizar este conocimiento usando reglas de la forma IF‑THEM.
 
Redes neuronales (neural network): Sistema que emula el sistema nervioso humano, así como el procesamiento de la importación del cerebro. Las redes nerviosas son usadas entre otras cosas en el procesamiento de señales y como sensores, y en el reconocimiento de patrones.
 
Sistemas basados en procedimientos: Son técnicas de programación orientadas a objetos que permiten el enlace de las características de los objetos en forma de código. Cuando un mensaje es recibido por el código, sus características son ejecutadas.
 
Regla: Una técnica de representación para la solución de problemas humanos y razonamiento heurístico usando la forma IF‑ THEM.
 
Realidad virtual: Proceso que usa computadoras para simular la realidad del mundo en 3‑D: oír, ver y tocar
Glosario de términos de Sistemas Expertos

Experto: es una persona con un conocimiento amplio o aptitud en un área particular del conocimiento.
Sistema Experto: Es una tecnología diseñada para extraer los conocimientos de un experto y con ellos elaborar un programa para la computadora en forma de reglas del tipo IF‑THEM.
Inferencia: Una inferencia es una evaluación que realiza la mente entre expresiones bien formadas de un lenguaje
Conocimiento: Hechos, o datos de información adquiridos por una persona a través de la experiencia o la educación, la comprensión teórica o práctica de un tema u objeto de la realidad.
Bibliografía: