miércoles, 25 de febrero de 2009

Representacion del conocimiento

Dado que el conocimiento es importante y primordial para el comportamiento inteligente, su representación constituye una de las máximas prioridades de la investigación en IA. El conocimiento puede ser representado como imágenes mentales en nuestros pensamientos, como palabras habladas o escritas en algún lenguaje, en forma gráfica o en imágenes, como cadenas de caracteres o colecciones de señales eléctricas o magnéticas dentro de un computador. En nuestro estudio de IA, consideraremos las representaciones escritas y sus correspondientes estructuras de datos utilizadas para su almacenamiento en un computador. La forma de representación que se escoja dependerá del tipo de problema a ser resuelto y de los métodos de inferencia disponibles.
Una representación es un conjunto de convenciones sobre la forma de describir un tipo de cosas. Una descripción aprovecha las convenciones de una representación para describir alguna cosa en particular. Si bien representar el conocimiento de una manera hace la solución más simple, elegir una representación inadecuada puede hacer que la solución sea difícil. Puede ser un esquema o dispositivo utilizado para capturar los elementos esenciales del dominio de un problema. Una representación manipulable es aquella que facilita la computación. En representaciones manipulables, la información es accesible a otras entidades que usan la representación como parte de una computación.
Debido a la variedad de formas que el conocimiento puede asumir, los problemas involucrados en el desarrollo de una representación del conocimiento son complejos, interrelacionados y dependientes del objetivo. En términos generales, se debe tratar que el conocimiento esté representado de tal forma que:



  • Capture generalizaciones.
    Pueda ser comprendido por todas las personas que vayan a proporcionarlo y procesarlo.
    Pueda ser fácilmente modificado.
    Pueda ser utilizado en diversas situaciones aún cuando no sea totalmente exacto o completo.
    Pueda ser utilizado para reducir el rango de posibilidades que usualmente debería considerarse para buscar soluciones.

Dentro de las técnicas de representación del conocimiento tenemos: Reglas, Marcos, Redes Semánticas, entre otras. Asimismo, no se conoce una representación que pueda servir para cualquier propósito.
Las características de una buena representación son:
· Los objetos y las relaciones importantes deben aparecer explícitamente y de forma conjunta
· Las restricciones inherentes al problema se muestran pero no los detalles irrelevantes.
· La representación debe ser transparente: se entiende lo que se dice.
· Completa y concisa: Están representados con eficacia todos los objetos y relaciones.
· Rápidos y computables: Se puede almacenar y recuperar la información con rapidez, y se pueden crear mediante un procedimiento ya existente.
Partes de una representación:
· Parte léxica: Determina qué símbolos están permitidos en el vocabulario de la representación.
· Una parte estructural que describe las restricciones sobre la forma en que los símbolos pueden ordenarse.
· Una parte operativa que especifica los procedimientos de acceso que permiten crear descripciones, modificarlas y responder a preguntas utilizándolas.
· Una parte semántica que establece una forma de asociar el significado con las descripciones.

Programación Estructurada

La programación estructurada es una forma de escribir programas de ordenador (programación de computadora) de forma clara. Para ello utiliza únicamente tres estructuras: secuencia, selección e iteración

Ventajas
Los programas son más fáciles de entender
La estructura del programa es clara, puesto que las instrucciones están más ligadas o relacionadas entre sí
Reducción del esfuerzo en las pruebas.
Reducción de los costes de mantenimiento de los programas.
Programas más sencillos y más rápidos (ya que es más fácil su optimización)
Los bloques de código son auto explicativos, lo que facilita la documentación.
Un programa escrito de acuerdo a estos principios no solamente tendrá una mejor estructura sino también una excelente presentación.


Desventajas
Se obtiene un único bloque de programa

Programación lógica


La programación lógica consiste en la aplicación del corpus de conocimiento sobre lógica para el diseño de lenguajes de programación; no debe confundirse con la disciplina de la lógica computacional. La programación lógica comprende dos paradigmas de programación: la programación declarativa y la programación funcional. La programación declarativa gira en torno al concepto de predicado, o relación entre elementos. La programación funcional se basa en el concepto de función (que no es más que una evolución de los predicados), de corte más matemático. La lógica matemática es la manera más sencilla, para el intelecto humano, de expresar formalmente problemas complejos y de resolverlos mediante la aplicación de reglas, hipótesis y teoremas. De ahí que el concepto de "programación lógica" resulte atractivo en diversos campos donde la programación tradicional es un fracaso. La programación lógica encuentra su hábitat natural en aplicaciones de inteligencia artificial o disciplinas relacionadas: Sistemas expertos, donde un sistema de información imita las recomendaciones de un experto sobre algún dominio de conocimiento. Demostración automática de teoremas, donde un programa genera nuevos teoremas sobre una teoría existente. Reconocimiento de lenguaje natural, donde un programa es capaz de comprender (con limitaciones) la información contenida en una expresión lingüística humana. Etc. La programación lógica también se utiliza en aplicaciones más "mundanas" pero de manera muy limitada, ya que la programación tradicional es más adecuada a tareas de propósito general. El lenguaje de programación por excelencia de la programación lógica es: “Prolog”.


viernes, 20 de febrero de 2009

martes, 17 de febrero de 2009

Sistemas Expertos

Para poder definir lo que es un sistema experto, primero tenemos que conocer ¿qué es una persona experta? Se considera a alguien un experto en un problema cuando este individuo tiene conocimiento especializado sobre dicho problema. En el área de los (SE) a este tipo de conocimiento se le llama conocimiento sobre el dominio. La palabra dominio se usa para enfatizar que el conocimiento pertenece a un problema específico.


Sus inicios datan a mediados de los años sesenta. Durante esta década los investigadores Alan Newell y Herbert Simon desarrollaron un programa llamado GPS (General Problem Solver; solucionador general de problemas). Podía trabajar con criptoaritmética, con las torres de Hanoi y con otros problemas similares. Lo que no podía hacer el GPS era resolver problemas del mundo real, tales como un diagnóstico médico.



Definiciones de los (SE)

Es un software que imita el comportamiento de un experto humano en la solución de un problema. Pueden almacenar conocimientos de expertos para un campo determinado y solucionar un problema mediante deducción lógica de conclusiones. Criado Briz José Mario (2002).

Son SE aquellos programas que se realizan haciendo explicito el conocimiento en ellos, que tienen información específica de un dominio concreto y que realizan una tarea relativa a este dominio. Wikipedia (2004).

Programas que manipulan conocimiento codificado para resolver problemas en un dominio especializado en un dominio que generalmente requiere de experiencia humana.

Programas que contienen tanto conocimiento declarativo (hechos a cerca de objetos, eventos y/o situaciones) como conocimiento de control (información acerca de los cursos de una acción), para emular el proceso de razonamiento de los expertos humanos en un dominio en particular y/o área de experiencia. Castro Marcel (2002).

Software que incorpora conocimiento de experto sobre un dominio de aplicación dado, de manera que es capaz de resolver problemas de relativa dificultad y apoyar la toma de decisiones inteligentes en base a un proceso de razonamiento simbólico. Viejo Hernando Diego (2003).

Aplicaciones

Sus principales aplicaciones se dan en las gestiones empresariales debido a que casi todas las empresas disponen de un ordenador que realiza las funciones básicas de tratamiento de la información: contabilidad general, decisiones financieras, gestión de la tesorería, planificación, etc.

Este trabajo implica manejar grandes volúmenes de información y realizar operaciones numéricas para después tomar decisiones. Esto crea un terreno ideal para la implantación de los SE.

Áreas de aplicación

Los SE se aplican a una gran diversidad de campos y/o áreas. A continuación se listan algunas de las principales:



Ventajas


· Trabajan con grandes cantidades de información
· Procesamiento de datos a una gran velocidad
· Análisis de información
· Aporta decisiones más solidas
· Pueden ser utilizados por personas no especializadas

Limitaciones

· Necesita de reprogramación para actualización
· Elevado costo en dinero y tiempo,
· Programas son poco flexibles a cambios y de difícil acceso
a información no estructurada.

Los sistemas expertos tienen una estructura en base a conocimientos, hechos (memoria de trabajo), motor de inferencia, subsistema de aplicación e interfaz de usuario.


lunes, 16 de febrero de 2009

domingo, 15 de febrero de 2009

CICLO DE VIDA DEL SOFTWARE

¿Qué es el ciclo de desarrollo de un sistema?, el ciclo de vida de desarrollo de sistema tiene dos posturas según los autores: J. Bentley, L. & Barlow, V. (2001). En el libro publicado de análisis y diseño de sistemas de información México: McGraw Hill. plantean que “Es un proceso por el cual los analistas de sistemas, los ingenieros de software, los programadores y los usuarios finales elaboran sistemas de información y aplicaciones informáticas”, esto es, significa que un grupo de personas trabajan conjuntamente para crear ideas un sistema de información, según las características determinadas por el usuario y así determinar si cumple con sus expectativas.
J. Bentley, L. & Barlow, V. hablan directamente que los usuarios deben de participar al máximo para detectar todos los requerimientos para desarrollar un buen sistema y buscar un método para solucionar el problema y q se debe de hacer modularmente.


Ahora la segunda postura, un sistema de información: Según Schach (2006) "Es la disciplina cuyo fin es la producción de software libre de fallas, entregado a tiempo, dentro del presupuesto y que satisfaga las necesidades del cliente." Explica que para que un sistema de información pueda ser implantado deben seguirse una serie de pasos aplicando la ingeniería de software.
Schach enfoca el uso del sistema según la iteración, incrementación, retroalimentación, según las ventajas y desventajas que tengo y que a lo largo de la vida del sistema se vayan haciendo modificaciones que el sistema necesite para después instalar una versión mejorada de la que ya estaba corriendo.


Después de analizar las dos posturas que manejan los autores, es más factible la ideología de Schach, ya que es muy cierto que un sistema después de un tiempo tenga la necesidad de cubrir nuevos requerimientos, ya que conforme va pasando el tiempo puede que la empresa crezca en cuanto a necesidades, y obviamente en lugar de estar haciendo un sistema cada vez que se expanda, es mejor agregarle ciertos componentes para mejorar la eficiencia del sistema.
Aunque también los otros dos autores, puede que tengan razón, ya que siempre se tiene que llevar un orden en el proceso de desarrollo, y sería una forma mejor y rápida de iniciar el proyecto.

Pero me gusta más la idea de Schach, por que en la actualidad, los usuarios siempre están dispuestos a obtener el software mas actualizado, el que tenga mejores componentes y mayor calidad en la obtención de resultados.
Ya para concluir, es necesario analizar bien las dos posturas, y tomar la mejor decisión dependiendo del entorno en que se esté trabajando, pues todo gira alrededor de los usuarios para que les sea más fácil a los analistas y programadores determinar los requerimientos que necesitan en la organización para poder cumplir con las expectativas del usuario.
Y desarrollar el sistema de acuerdo con el modelo del ciclo de vida que más les agrade o se adapte a sus necesidades, q va desde el modelo clásico del ciclo de vida, el del árbol de evolución, modelo de elaboración rápida, modelo en espiral, etc.




REFERENCIAS

Whitten, J., Bentley, L. & Barlow, V. (2001). Análisis y diseño de sistemas de información. México: McGraw Hill.

Schach, S. (2006). Ingeniería de software clásica y orientada a objetos. México: McGraw Hill.

sábado, 7 de febrero de 2009

jueves, 5 de febrero de 2009

Bienvenida

Hola !! como estan?, espero que muy bien ahora en este nuevo curso que empezó, mmm algo me dice que este semestre va a estar pesadito, pues me toco profesores que se ven bastante sabiondos XD, lo cual me da gusto por que supongo que nos enseñarán y nos van a dar lo mejor de ellos. Lo malo es que si va a estar pesado, ya no podré conectarme mucho tiempo :'(, bueno ya que, jaja, el msn no es nada bueno.
Este semestre empecé bien, hasta el momento voy haciendo todas mis tareas (... espero seguir asi), por que quiero ahora "si" aprender aunque sea un poquito, jejeje. Y pues bueno, este es un blog mas en nuestra carrera, estoy haciendo lo mejor para que se vea bonito y les agrade mucho, me fascina poner cosillas por aqui...por alla..., pero esta vez... me gusta como se ve sin tanto relajo, espero les agrade y pues es un blog mas que está a su disposicion.
Suerte en todo lo que se propongan, mucho éxito y sobre todo hechenle muchas ganas a la escuela, sé que mientras hay que machetearle para que después obtengamos muy buenos resultados y recuerden que...
¡Todo es posible cuando se lucha por nuestros sueños!

miércoles, 4 de febrero de 2009

Linea del tiempo

Otro articulo sobre la Inteligencia Artificial, ahora es una linea del tiempo que nos ilustra como ha evolucionado la IA a traves de los años y los avances en la tecnologia.



martes, 3 de febrero de 2009

¿Qué es la Inteligencia Artificial (IA)?


Aquí les traigo una pequeña introducción de lo que es la inteligencia artificial.

La inteligencia artificial es una rama de la informática que se enfoca a diversos procesos ejecutables en forma física dependiendo de las instrucciones que se le indiquen, un ejemplo serian los robots que hacen una tarea específica, estos objetos son programados para realizar diversas tareas en base a los diferentes tipos de conocimiento que se emplee o mejor dicho tipo de racionalidad, ya que solo son procesos de entrada y salida.
Hay varios objetivos que busca la IA, pero los más comunes son los siguientes:

  • Busca hacer computadoras (como los robots), para poder hacer una manifestación muy parecida a los conocimientos humanos, como son la percepción, razonamiento y el aprendizaje o algunas funciones del cerebro.
  • Diseñar sistemas en los cuales se pueda mostrar algunas características que están asociadas y reservadas solo con la inteligencia humana.
  • Crear herramientas que exhiben el comportamiento inteligente y de alguna forma llegar a imitarlo.
  • Hacer computadoras inteligentes que puedan entender los principios de la inteligencia, para que sean más útiles.

La principal aplicación de la IA es la robótica, crea robots con capacidades de tomar decisiones, interpretar y hasta hablar, estos reciben datos de entrada para hacer una de terminada acción.
También está la Detección de virus: IBM utiliza la tecnología de red neuronal para ayudar a crear software más avanzado en la erradicación de los virus de computación, un problema importante para las empresas estadounidenses.

Esta la cartografía para interpretar las fotografías.
Hay software para la enseñanza, especificación, diseño, verificación, mantenimiento.Algunos pueden ser Sistemas de armamento como la guerra electrónica, identificación de objetivos, control adaptativo, proceso de imágenes, proceso de señales.
En conclusión, se puede decir que la IA tiene muchas aplicaciones y trata de apartarse un poco de la informática, ya que manipula muchos funcionamientos como son: los algoritmos para controlar diversas cosas y alterna a la vez con algunos campos como la robótica, sistemas expertos, entre otros. Trata de manejar la creación de computadoras inteligentes con la capacidad de responder inteligentemente ante ciertas situaciones a las que se enfrentan los seres humanos.