Skip to content

Inteligencia artificial programacion

Rate this post

Desde hace algún tiempo se habla mucho de la inteligencia artificial, un mundo que llora la muerte de Marvin Minsky, uno de sus padres junto con John McCarthy, quien acuñó el término en 1956. En ese momento sonaba a ciencia ficción (a pesar de que el funcionamiento de la inteligencia ya había despertado interés mucho antes y, de hecho, Aristóteles llegó a describir una serie de reglas con las que la mente procesa la información para sacar conclusiones racionales), y sin embargo hoy parece claro que parte de nuestro futuro reside precisamente en la capacidad de las máquinas para aprender y tomar decisiones lógicas basadas en el conocimiento y ese aprendizaje.

Y esto lleva a estudios como el que afirma que la inteligencia artificial reemplazará a los abogados, que Google la integrará en una nueva aplicación de mensajería, o que inversores como Elon Musk crearán un instituto para investigarla. Por no hablar de la forma en que Facebook trabaja para integrarlo en su interfaz, concretamente en la parte del sistema dedicada a elegir el contenido que se muestra en el feed de cada usuario, con el fin de que permanezca conectado durante más tiempo.

Si eres programador, o si estás estudiando para serlo en el futuro, probablemente te estés preguntando qué deberías hacer para poder dedicarte a un área que parece tener tanto futuro, y que probablemente exige muchos profesionales en los próximos años, ¿verdad? La buena noticia es que, en realidad, prácticamente cualquier lenguaje de programación puede ser utilizado para desarrollar software con funciones de inteligencia artificial. Sin embargo, hay tres de los más notables, estamos hablando de ellos:

Lisp

Definido en 1958 por Jonh McCarthy cuando trabajaba en el MIT (sí, precisamente con Marvin Minsky), no ha dejado de evolucionar desde entonces, hasta el punto actual, en el que no se trata tanto de un lenguaje de programación como de una familia de éstos, todos ellos basados en las mismas especificaciones pero con diferentes dialectos, funciones, etc.

Es un lenguaje de alto nivel (se considera el primer lenguaje simbólico polivalente) y, en general, sus usuarios coinciden en que es fácil aprender a programar en Lisp. Sin embargo, la complejidad en el desarrollo de los algoritmos de inteligencia artificial es otra cosa. Y más complicado, por supuesto.

Prolog

Creada en Francia a principios de los años 70, nació con la intención de ser utilizada en la programación de funciones para dispositivos electrónicos (robótica) que, en función de las circunstancias, debían ser capaces de tomar decisiones, en las que su propia experiencia (aprendizaje) también debía tener un cierto peso. Desde ese mismo momento hasta hoy, se ha convertido en el lenguaje de referencia en el mundo de la ingeniería (especialmente la informática) para el desarrollo e investigación en inteligencia artificial.

Haskell

Si usted no es un programador, probablemente nunca ha oído hablar de Haskell. Pero si usted es un programador, puede que sólo le suene remotamente, porque desde su creación a principios de la década de 1990, nunca ha sido demasiado popular. ¿Y por qué estamos hablando de ello? Porque, después de dos años de trabajo, los ingenieros de Facebook lanzaron su nuevo sistema de filtrado de mensajes antispam, desarrollado precisamente con Haskell. Sí, en efecto, el filtrado antispam, ese tipo de tarea que requiere una buena dosis de inteligencia depositada en la máquina que la ejecuta.

La inteligencia artificial, o IA por sus siglas en inglés, ha sido uno de los principales objetivos de la informática durante muchos años. La pregunta es, ¿qué hay detrás de todos estos intentos de abordar la creación de una inteligencia que parezca humana? ¿Cómo podemos conseguir que una computadora nos entienda, o que reconozca nuestra cara, o que razone?

Aunque definir exactamente lo que es la inteligencia es bastante complicado, en la práctica podemos decir lo que queremos de un sistema que es “inteligente”. Queremos que sea capaz de reconocer patrones (imágenes o sonidos) para que pueda recibir información del mundo exterior. Queremos que puedas aprender filtrando información útil y guardando tus nuevos descubrimientos. Y por último, queremos que él también razone y sea capaz de razonar y deducir, es decir, de crear conocimiento.

Creación de nuevos conocimientos: deducción y razonamiento

Aprender está muy bien, pero no podemos dejar de lado algo muy interesante: razonar y hacer deducciones para añadir más conocimiento al sistema. La primera opción es usar la lógica. Incluso hay varios lenguajes de programación dedicados a ello. El más conocido es Prolog, con un paradigma muy diferente de los lenguajes más comunes.

La idea es que en lugar de darle instrucciones sobre cómo hacer algo, simplemente le damos algunas reglas y hechos lógicos y el sistema deduce las soluciones. Por ejemplo, se puede resolver el problema de que el granjero, el lobo, la cabra y el repollo crucen el río sin decirle cómo. Simplemente escribes las reglas del acertijo formalmente: tienes que decirle al Prólogo lo que significa “cruzar el río” y qué estados no están permitidos (es decir, tienes que decirle al Prólogo que el lobo no puede estar con la cabra, ni la cabra con el repollo). Luego explique lo que quiere: una lista de movimientos que llevan a todos de un lado del río al otro. Finalmente, le preguntas si hay una serie de movimientos que resuelven ese acertijo y él responde mágicamente.

No es, por supuesto, magia. Prolog usa las reglas de la lógica para razonar (todo dicho y hecho, mucho más rápido que tú y yo) y ver cuál es la solución. De esta manera, evitará tener que decirle cómo resolver la cuestión. Puede parecer un ahorro trivial, pero no lo es cuando tienes muchos hechos, reglas y preguntas posibles: un sistema lógico puede enfrentarse a preguntas que su creador ni siquiera se habría imaginado.

Sin embargo, en este caso nos encontramos con una serie de problemas. La primera es fácil de ver: hay que tener los conocimientos básicos. No nos ayuda razonar si no tenemos nada sobre qué hacer. Tienes que crear esa base, y puede que no sea fácil. Por un lado, es complicado enumerar todas las reglas y relaciones de un campo en particular. Por otro lado, puede ser difícil escribirlo formalmente y arreglarlo para que una computadora lo entienda. Piénsalo: ¿podrías expresar sin duda todo lo que sabes?

Hay otro problema adicional, y es que el mundo real (especialmente el mundo que percibimos y del que hablamos los humanos) no se adapta bien a algo tan estricto como la lógica. No hace falta decir que los humanos son todo menos lógicos, y que no todo es verdadero o falso.

Para el primero hay poco que hacer, pero el segundo tiene una solución: la lógica difusa. Digamos que formamos parte de un equipo para desarrollar un asistente de voz estilo Siri, Cortana o Google Now, y nos dicen que tenemos que conseguir que el asistente responda al usuario cuando le pregunte si tiene que usar un abrigo para salir a la calle y/o llevar paraguas.

Parece fácil: si hace frío, ponte un abrigo, y si llueve, ponte un paraguas. Ahora, ¿qué temperatura es exactamente “hace frío”? ¿Y vamos a hacer que el pobre usuario traiga un paraguas si caen cuatro gotas, cuando sólo podía coger su abrigo? Pero, ¿cómo sabemos si están cayendo cuatro gotas o si está lloviendo a cántaros? ¿Hacemos que el usuario saque su móvil por la ventana para ver qué está pasando?

Imagenes de inteligencia artificial programacion

computacion cuantica

Computación Cognitiva

Videos de inteligencia artificial programacion