Menú
gratis
Registro
Hogar  /  Familia y relaciones/ Sistemas inteligentes de información en la gestión del conocimiento. Historia del desarrollo de la inteligencia artificial.

Sistemas de información inteligentes en la gestión del conocimiento. Historia del desarrollo de la inteligencia artificial.

Sistemas de información inteligentes en la gestión del conocimiento.

Introducción

El objetivo principal de los sistemas de información en economía es la presentación oportuna de la información necesaria a los tomadores de decisiones para que puedan tomar decisiones adecuadas y efectivas al gestionar procesos, recursos, transacciones financieras, personal o la organización en su conjunto. Sin embargo, en el proceso de desarrollo de las tecnologías de la información, la investigación operativa y las tecnologías de modelado, así como con el aumento de los consumidores de información y apoyo analítico para los propios tomadores de decisiones, surge la necesidad de sistemas que no solo presenten información, sino que también realicen algunas tareas preliminares. análisis del mismo, capaz de dar algunos consejos y recomendaciones, predecir el desarrollo de situaciones, seleccionar las alternativas de decisión más prometedoras, es decir apoyar las decisiones de los tomadores de decisiones, asumiendo una parte importante de las operaciones rutinarias, así como las funciones de análisis y evaluaciones preliminares.

Un sistema de información de apoyo a las decisiones (DSIS) conecta los recursos intelectuales de un gerente con las habilidades y capacidades de una computadora para mejorar la calidad de las decisiones. Estos sistemas están diseñados para gerentes que toman decisiones de gestión en tareas semiestructuradas y poco definidas.

Así, un mayor desarrollo de ISPR condujo a la creación de un DSS de información inteligente.

La tecnología de la información intelectual (IIT) es una tecnología de la información que ayuda a una persona a acelerar el análisis de la situación política, económica, social y técnica, así como la síntesis de las decisiones de gestión.

El uso de IIT en la práctica real implica tener en cuenta las características específicas del área problemática, que puede caracterizarse por el siguiente conjunto de características:

· calidad y eficiencia de la toma de decisiones;

· objetivos y límites institucionales poco claros;

· multiplicidad de sujetos involucrados en la solución del problema;

· comportamiento caótico, fluctuante y cuantificado del medio ambiente;

· multiplicidad de factores que se influyen entre sí;

· formalización débil, unicidad, situaciones no estereotipadas;

· latencia, secreto, oscuridad de la información;

· desviación en la implementación de planes, la importancia de las pequeñas acciones;

· lógica paradójica de las decisiones, etc.

Los IIT se forman al crear sistemas de información y tecnologías de la información para mejorar la eficiencia de la gestión del conocimiento y la toma de decisiones en condiciones asociadas con el surgimiento de situaciones problemáticas. En este caso, cualquier situación de vida o empresarial se describe en forma de algún modelo cognitivo (esquema cognitivo, arquetipo, marco, etc.), que posteriormente se utiliza como base para construir y realizar modelos, incluido el modelado por computadora.

I. Historia del desarrollo de los Sistemas de Información Inteligentes

La historia de los Sistemas de Información Inteligentes (IIS) comienza a mediados del siglo XX, lo que está asociado con el desarrollo de la Inteligencia Artificial como una nueva dirección científica, el surgimiento del término "Inteligencia Artificial".

Requisitos previos para el desarrollo inteligencia artificial en la URSS y Rusia apareció ya en el siglo XIX, cuando el asesor colegiado Semyon Nikolaevich Korsakov (1787-1853) se propuso mejorar las capacidades de la mente mediante el desarrollo de métodos y dispositivos científicos, haciéndose eco del concepto moderno de inteligencia artificial como Un amplificador de la inteligencia natural. En 1832, S. N. Korsakov publicó una descripción de cinco dispositivos mecánicos que inventó, las llamadas “máquinas inteligentes”, para la mecanización parcial de la actividad mental en tareas de búsqueda, comparación y clasificación. En el diseño de sus máquinas, Korsakov, por primera vez en la historia de la informática, utilizó tarjetas perforadas, que para él desempeñaban una especie de papel como base de conocimientos, y las propias máquinas eran esencialmente las predecesoras de los sistemas expertos. Las "máquinas inteligentes" permitieron encontrar soluciones a determinadas condiciones, por ejemplo, determinar los medicamentos más adecuados en función de los síntomas de una enfermedad observada en un paciente. En la URSS, el trabajo en el campo de la inteligencia artificial comenzó en la década de 1960. En la Universidad de Moscú y en la Academia de Ciencias se llevaron a cabo una serie de estudios pioneros dirigidos por V. Pushkin y D. A. Pospelov. En 1964 se publicó el trabajo del lógico de Leningrado S. Maslov "El método inverso para establecer la deducibilidad en el cálculo de predicados clásico", en el que por primera vez se propuso un método para buscar automáticamente pruebas de teoremas en el cálculo de predicados. En 1966, V.F. Turchin desarrolló el lenguaje de funciones recursivas Refal. Hasta la década de 1970 En la URSS, toda la investigación sobre IA se llevó a cabo en el marco de la cibernética. Según D. A. Pospelov, las ciencias "informática" y "cibernética" en ese momento estaban mezcladas debido a una serie de disputas académicas. Sólo a finales de la década de 1970 en la URSS comenzaron a hablar de la dirección científica "inteligencia artificial" como una rama de la informática. Al mismo tiempo, nació la propia informática, subordinando a su antecesora la “cibernética”. A finales de la década de 1970 se creó un diccionario explicativo sobre inteligencia artificial, un libro de referencia en tres volúmenes sobre inteligencia artificial y un diccionario enciclopédico sobre informática, en el que se incluyen las secciones “Cibernética” e “Inteligencia artificial”, entre otras. secciones, en informática.

La historia del IIT comienza a mediados de la década de 1970 y está asociada con la colaboración aplicación práctica sistemas de información inteligentes, sistemas de inteligencia artificial, sistemas de apoyo a la decisión y sistemas de información. La historia del IIT también está relacionada con el desarrollo de tres direcciones científicas: filosofía informática, psicología informática e informática avanzada y se complementa con avances en la creación de:

1. centros de situación

2. sistemas de información y análisis

3. herramientas para cálculos evolutivos y algoritmos genéticos

4. sistemas para soportar la comunicación persona-computadora en lenguaje natural

5. modelado cognitivo

6. sistemas de categorización temática automática de documentos

7. sistemas de planificación estratégica

8. herramientas para el análisis técnico y fundamental de los mercados financieros

9. sistemas de gestión de calidad

10. sistemas de gestión de propiedad intelectual, etc.

La inteligencia artificial como ciencia fue fundada por tres generaciones de investigadores.

En la Tabla 1.1. presenta acontecimientos clave en la historia de la IA y la ingeniería del conocimiento, desde el primer trabajo de W. McCulloch y W. Peets en 1943 hasta tendencias modernas en los esfuerzos combinados de sistemas expertos, lógica difusa y computación neuronal en sistemas modernos basados ​​en el conocimiento capaces de calcular usando palabras.

Tabla 1.1.

Una breve lista de los principales acontecimientos de la historia de la IA y la ingeniería del conocimiento

Período Eventos
Nacimiento de la IA (1943-1956) - W. McCulloch y W. Peets: Cálculo lógico de ideas inherentes a la actividad nerviosa, 1943. - A. Turing: Máquina informática e inteligencia, 1950. - K. Shannon: Programación informática para el juego de ajedrez, 1950.
Aumento de la IA (1956-finales de la década de 1960) - D. McCarthy: LISP es un lenguaje de programación para inteligencia artificial.
- M. Kullian: Redes semánticas para la representación del conocimiento, 1966. - A. Newell y G. Simon: Universal Problem Solver (GPS), 1961.
- M. Minsky: Estructuras de representación del conocimiento (marcos), 1975. - J. Hopfield: Redes neuronales y físicas con capacidades de computación colectiva emergente, 1982. - T. Kohonen: Mapas topológicamente regulares autoorganizados, 1982. - D. Rumelhart y D. McClelland: Procesamiento paralelo distribuido, 1986.
Computación evolutiva (principios de la década de 1970 en adelante) - I. Rechenberg: Estrategias evolutivas - optimización de sistemas técnicos según los principios de la información biológica, 1973. - J. Holland: Adaptación en sistemas naturales y artificiales, 1975. - J. Koza: Programación genética: programación informática mediante métodos naturales selección, 1992. - D .Vogel: Computación evolutiva: una dirección de nueva filosofía en inteligencia artificial, 1995.
Conjuntos difusos y lógica difusa (mediados de la década de 1960 en adelante) - L. Zade: Conjuntos difusos, 1965. - L. Zade: Algoritmos difusos, 1969. -E. Mamdani: Aplicación de la lógica difusa al razonamiento aproximado mediante síntesis lingüística, 1977. - M. Sugeno: Inferencia difusa (algoritmo Takagi-Sugeno), 1985
Computación con palabras (finales de la década de 1980 en adelante) - A. Neygotsa: Sistemas expertos y sistemas difusos, 1985. - B. Kosko: Redes neuronales y sistemas difusos, 1992. - B. Kosko: Pensamiento difuso, 1993. - R. Yager y L. Zadeh: conjuntos difusos, redes neuronales y computación blanda, 1994. - B. Kosko: Fuzzy Engineering, 1996. - L. Zadeh: Computing with Words, 1996.

Así, históricamente, los desarrollos en el campo de la IA se han llevado a cabo en dos direcciones principales:

La primera dirección está asociada con los intentos de desarrollar máquinas inteligentes modelando su prototipo biológico: el cerebro humano. Ahora esta área está reviviendo gracias al desarrollo de hardware y software modernos (microchips basados ​​​​en lógica difusa, sistemas multiprocesadores distribuidos, sistemas multiagente, informática suave, algoritmos genéticos y redes neuronales, etc.).

La segunda dirección está asociada al desarrollo de métodos, técnicas, dispositivos y programas especializados para computadoras que brinden soluciones a problemas matemáticos y lógicos complejos que permitan automatizar las acciones intelectuales humanas individuales (sistemas basados ​​​​en el conocimiento, sistemas expertos, sistemas inteligentes aplicados). ).

Estas dos direcciones, por así decirlo, definen el programa mínimo y el programa máximo, entre los cuales se encuentra el área de investigación y desarrollo actual de sistemas de IA. El trabajo sobre el desarrollo de software y hardware de IA se asigna a un área separada.


Información relacionada.


El conocimiento se puede almacenar fuera del cerebro. Sus argumentos son:
  1. la cognición como proceso se presta a la formalización;
  2. la inteligencia se puede medir (cociente de inteligencia IQ - cociente de inteligencia 1 El término fue introducido en el uso científico por V. Stern (1911) según el método de cálculo de A. Binet (1903)., capacidad de memoria, reactividad mental, etc.);
  3. Las medidas de información (bits, bytes, etc.) son aplicables al conocimiento. Los pesimistas creen que la inteligencia artificial no es capaz de almacenar conocimientos, ya que es sólo una imitación del pensamiento. Los pesimistas creen que la inteligencia humana es única, que la creatividad no se puede formalizar, que el mundo es completo e indivisible en información discreta, que las imágenes del pensamiento humano son mucho más ricas que el pensamiento lógico de las máquinas, etc.

El tiempo dirá quién tiene razón en esta disputa. Sólo notemos que la memoria de la máquina almacena lo que está escrito en ella, y esto no puede ser solo el conocimiento de cómo forma más alta información, sino también simplemente datos que pueden contener conocimientos, desinformación y ruido de información(Ver "Historia del desarrollo de la informática. Desarrollo de ideas sobre la información. En el camino hacia la sociedad de la información"). Para extraer conocimiento de los datos, una máquina, al igual que una persona, debe fijarse un objetivo (“¿qué quiero saber?”) y seleccionar en función de ese objetivo. información valiosa(al fin y al cabo, aquí se guardan objetos de valor, y no cualquier cosa). ¿Será capaz de inteligencia artificial formular objetivos aceptables y seleccionar artificialmente información valiosa para estos objetivos es otro problema en la teoría y la práctica de la inteligencia artificial. Si bien este trabajo lo realizan personas: en sistemas expertos, en robots de programación, en sistemas automatizados de control de procesos, etc. Las máquinas libres (ver arriba) tendrán que hacer este trabajo por sí mismas.

Al mismo tiempo, este problema puede agravarse debido a que en las redes desde las que las máquinas "descargan" conocimientos puede haber mucha "basura" y virus destructivos.

4.4. Historia del desarrollo de ideas de inteligencia artificial y sus implementaciones.

Según la ley psicológica de conservación (“la suma de placer y dolor es cero”), inmediatamente aparecieron pesimistas (F. Bacon, J. Locke, etc.), que se rieron de los optimistas: “¡Oh, vamos!” Pero cualquier idea científica, una vez que surge, sigue viva, a pesar de los obstáculos.

La idea de inteligencia artificial comenzó a adquirir características reales recién en la segunda mitad del siglo XX, especialmente con la invención de las computadoras y los “robots inteligentes”. Para implementar la idea, también fueron necesarios desarrollos aplicados en lógica matemática, programación, psicología cognitiva, lingüística matemática, neurofisiología y otras disciplinas que se desarrollan en la dirección cibernética de la relación entre organismos y máquinas en las funciones de control y comunicación. El nombre mismo" inteligencia artificial" surgió a finales de los años 60 del siglo XX, y en 1969 tuvo lugar la Primera Conferencia Mundial sobre Inteligencia Artificial (Washington, EE.UU.).

Al principio inteligencia artificial desarrollado en el llamado analítico (funcional) dirección en la que se le indicó a la máquina que realizara determinadas tareas intelectuales naturaleza creativa(juegos, traducción de un idioma a otro, pintura, etc.).

Posteriormente surgió sintético (modelo) la dirección en la que se han hecho intentos de modelar actividad creativa cerebro en el sentido general, “sin perder tiempo” en tareas específicas. Por supuesto, esta dirección resultó ser más difícil de implementar que la dirección funcional. El objeto de estudio de la dirección del modelo fue metaprocedimientos pensamiento humano. Los metaprocedimientos de la creatividad no son los procedimientos (funciones) de la actividad intelectual en sí mismos, sino formas de crear tales procedimientos, formas de aprender un nuevo tipo de actividad intelectual. En estos métodos, probablemente, se esconde lo que se puede llamar inteligencia. La presencia de metaprocedimientos de pensamiento distingue la verdadera inteligencia de la aparente, por lo que la implementación de metaprocedimientos de creatividad por medios mecánicos se ha convertido casi en la tarea principal de la dirección del modelo. No qué, pero Cómo No qué, pero tu inventas No qué, pero resolviendo un problema creativo

¿Estás aprendiendo (autodidacta) cosas nuevas? - estas son las cuestiones inherentes a la implementación de modelos de pensamiento creativo humano. En el marco de la dirección de modelos se han desarrollado principalmente dos modelos de inteligencia. Cronológicamente el primero fue laberíntico un modelo que implementa una búsqueda dirigida en un laberinto de caminos alternativos para resolver un problema con una evaluación del éxito después de cada paso o desde el punto de vista de la resolución del problema en su conjunto. En otras palabras, el modelo del laberinto se reduce a la fuerza bruta.(por analogía con la enumeración de opciones para salir del laberinto). El éxito (o el fracaso) en la elección de una u otra opción se puede evaluar en cada paso (es decir, inmediatamente después de la elección), sin prever el resultado final de la solución del problema o, por el contrario, la elección de la opción en cada paso puede ser realizado en base al resultado final. Por ejemplo, tomemos el ajedrez. Puedes evaluar el resultado de cada movimiento por la ganancia o pérdida inmediata después de este movimiento (ganar o perder piezas, obtener una ventaja posicional, etc.), sin pensar en el final del juego.

Este enfoque implica que el éxito en cada movimiento conducirá al éxito de todo el juego, a la victoria. Pero esto no es del todo necesario. Después de todo, puedes atraer al rey del oponente a una trampa de apareamiento sacrificando piezas en una serie de movimientos, perdiendo la aparente ventaja posicional. Con este enfoque, los éxitos parciales en cada movimiento no significan nada en comparación con el último movimiento ganador: el anuncio del jaque mate. El primer enfoque para el modelado de laberintos se desarrolló en programación heurística , el segundo enfoque está en programación dinámica . Aparentemente enfoque dinámico . Aparentemente más eficaz que la heurística cuando se habla de ajedrez. En cualquier caso, los ajedrecistas fuertes, sin siquiera darse cuenta, utilizaban precisamente inteligencia artificial contra programas de ajedrez que trabajaban en modo heurístico, y con su inteligencia natural derrotaron al laberíntico

. Pero así fue en los años 60 y 70. Siglo XX Desde entonces, los programas de ajedrez han mejorado tanto (incluso mediante la introducción de un enfoque dinámico) que ahora compiten con éxito con campeones del mundo.

Los modelos de laberinto se han utilizado ampliamente no sólo para crear programas de ajedrez, sino también para programar otros juegos, así como para demostrar teoremas matemáticos y en otras aplicaciones. Siguiendo los modelos laberínticos de la inteligencia artificial, modelos asociativos . Asociación (del latín asociación - conexión) es una conexión de ideas psicológicas (debido a experiencias previas), por lo que una idea, al aparecer en la conciencia, provoca otra idea (basada en el principio de similitud, contigüidad u oposición). Por ejemplo, Académico I.P. Pavlov, realizando sus conocidos experimentos con perros, notó que si, al mismo tiempo que come, un perro ve una lámpara encendida, tan pronto como se enciende la lámpara, el perro comienza a secretar jugo gástrico, aunque No se le ofreció comida. Este reflejo condicionado se basa en la asociación basada en el principio de contigüidad. La asociación por similitud se describe en la historia de A.P. El "nombre del caballo" de Chéjov. La asociación, por el contrario, se puede describir mediante un diagrama lógico: si “no A”, entonces “A”.

Por ejemplo, si veía un gato blanco durante el día, inmediatamente lo asociaba con un gato negro que cruzaba la calle por la mañana. En los modelos asociativos se supone que la solución a un problema nuevo y desconocido se basa de alguna manera en problemas resueltos ya conocidos similares al nuevo, por lo que el método de solución nueva tarea basado en el principio asociativo de similitud (similitud). Para implementarlo se utiliza la búsqueda asociativa en la memoria, el razonamiento lógico asociativo, el uso de técnicas dominadas por la máquina para la resolución de problemas en una nueva situación, etc. En las computadoras modernas y en los robots inteligentes existe memoria asociativa . Los modelos asociativos se utilizan en problemas. clasificación, reconocimiento de patrones, aprendizaje

, que ya se han convertido en tareas habituales de los sistemas y tecnologías de la información. Sin embargo, la teoría de los modelos asociativos hasta los años 90. Siglo XX estaba ausente y ahora recién se está creando.

Enumeremos brevemente los principales creadores de la inteligencia artificial. N. salchicha (matemático), U.R. ashby

(biólogo): los fundadores de la cibernética, quienes afirmaron por primera vez que las máquinas pueden ser más inteligentes que las personas, quienes dieron el impulso inicial al desarrollo de la teoría de la inteligencia artificial. W. McCulloch, W. Peets

(fisiólogos) - en 1943 propuso un modelo formal de neurona; fundadores de la neurocibernética y el concepto original de red neuronal. A.Turing

(matemático) - en 1937 inventó la "máquina de Turing" algorítmica universal; propuso una "prueba de Turing" intelectual para determinar si una máquina es inteligente en un diálogo comparativo consigo misma y una "persona razonable". J. von Neumann

(matemático): uno de los fundadores de la teoría de juegos y la teoría de los autómatas autorreproductores, la arquitectura de las primeras generaciones de computadoras. M. Somalviko (cibernética), A. Azimov

(bioquímico, escritor) - fundadores de la robótica inteligente. G. Simon, W. Reitman

(psicólogos): autores y desarrolladores de los primeros modelos intelectuales laberínticos construidos sobre los principios de la programación heurística. N. salchicha R. Bellman(lógico) - autores de un enfoque dinámico de modelos intelectuales laberínticos (programación dinámica, método de prueba inversa).

F. Rosenblatt(fisiólogo), MM. Bongard(físico) - pioneros del problema del reconocimiento de patrones; desarrolladores de dispositivos y modelos de reconocimiento y clasificación.

L. Zade, A.N. Kolmogorov, A.N. Tijonov, M.A. girshick(matemáticos): autores de métodos matemáticos para resolver problemas mal formalizados y Toma de decisiones en condiciones de incertidumbre.

N. Chomsky(matemático, filólogo) - fundador de la lingüística matemática.

L.R. luria(psicólogo): el fundador de la neuropsicología, que estudia los mecanismos profundos de la actividad cognitiva del cerebro y otras funciones intelectuales del cerebro.

K.E. shannon(ingeniero de comunicaciones), RH. zaripov(matemático) - autores de la teoría y modelos de síntesis automática de música.

La lista anterior está lejos de ser completa. En el campo de la inteligencia artificial han trabajado y trabajan no sólo especialistas individuales, sino también equipos, laboratorios e institutos. Los principales problemas que resuelven:

  1. representación del conocimiento;
  2. modelado de razonamiento;
  3. interfaz inteligente "hombre-máquina", "máquina-máquina";
  4. planificación de actividades convenientes;
  5. formación y autoaprendizaje de sistemas inteligentes;
  6. creatividad de las máquinas;
  7. robots inteligentes.

Prefacio

Recientemente, el tema de la inteligencia artificial se ha vuelto muy popular. Pero ¿qué es realmente la IA? ¿Qué resultados ha logrado ya y en qué dirección se desarrollará en el futuro? Hay mucha controversia en torno a este tema. En primer lugar, es una buena idea aclarar qué entendemos por inteligencia.

La inteligencia incluye lógica, autoconciencia, capacidad de aprendizaje, cognición emocional, creatividad y capacidad de toma de decisiones. varios tipos tareas. Es característico tanto de personas como de animales. Estudiamos el mundo que nos rodea desde una edad temprana; a lo largo de nuestra vida, a través de prueba y error, aprendemos las habilidades necesarias y adquirimos experiencia. Esta es la inteligencia natural.

Cuando hablamos de inteligencia artificial, nos referimos a un sistema “inteligente” creado por humanos que aprende mediante algoritmos. Su trabajo se basa en los mismos métodos: investigación, formación, análisis, etc.

Eventos clave en la historia de la IA

La historia de la IA (o al menos las discusiones sobre la IA) comenzó hace casi cien años.

R Rossum Universal Robots (R.U.R)

En 1920, el escritor checo Karel Capek escribió la obra de ciencia ficción “Rossumovi Univerz?ln?” roboti" (los robots universales de Rossum). Fue en este trabajo donde se utilizó por primera vez la palabra "robot", que significaba clones humanoides vivos. En la historia, en un futuro lejano, las fábricas han aprendido a producir personas artificiales. Al principio, estos "replicantes" trabajaron en beneficio de la gente, pero luego se rebelaron, lo que llevó a la extinción de la humanidad. Desde entonces, el tema de la IA se ha vuelto extremadamente popular en la literatura y el cine, lo que a su vez ha tenido una gran influencia en la investigación del mundo real.

Y Alan Turing

El matemático inglés, uno de los pioneros en el campo de la tecnología informática, Alan Turing, hizo una contribución significativa al desarrollo de la criptografía durante la Segunda Guerra Mundial. Gracias a sus investigaciones fue posible descifrar el código de la máquina Enigma, que era muy utilizada por la Alemania nazi para cifrar y transmitir mensajes. Unos años después del final de la Segunda Guerra Mundial, descubrimientos importantes en campos como la neurociencia, la informática y la cibernética, lo que llevó al científico a la idea de crear un cerebro electrónico.

Pronto el científico propuso una prueba cuyo objetivo es determinar la posibilidad de que una máquina artificial piense cerca de los humanos. La esencia de esta prueba es la siguiente: una persona (C) interactúa con una computadora (A) y una persona (B). Durante una conversación, debe determinar con quién se está comunicando. La computadora debe engañar a una persona para que tome la decisión equivocada. Todos los participantes de la prueba no pueden verse entre sí.

D Conferencia de Dartmouth y el primer “invierno” de la IA

En 1956 se celebró la primera conferencia sobre IA, en la que participaron científicos de las principales universidades tecnológicas de Estados Unidos y especialistas de IBM. El evento tuvo gran valor en la formación de una nueva ciencia y marcó el comienzo de importantes investigaciones en esta área. Entonces todos los participantes se mostraron extremadamente optimistas.

Comenzó la década de 1960, pero el progreso en la creación de inteligencia artificial no avanzó y el entusiasmo comenzó a decaer. La comunidad subestimó la complejidad de la tarea y, como resultado, las previsiones optimistas de los expertos no se cumplieron. La falta de perspectivas en este ámbito ha obligado a los gobiernos del Reino Unido y de Estados Unidos a recortar la financiación de la investigación. Este período de tiempo se considera el primer “invierno” de la IA.

E Sistemas expertos (ES)

Después de un largo período de estancamiento, la IA ha encontrado su aplicación en los llamados sistemas expertos.

Un ES es un programa que puede responder preguntas o resolver un problema en un área específica. Por tanto, sustituyen a los verdaderos especialistas. El ES consta de dos subrutinas. La primera se llama base de conocimientos y contiene la información necesaria en esta área. El otro programa se llama motor de inferencia. Aplica información de la base de conocimientos de acuerdo con la tarea en cuestión.

Los ES han encontrado su aplicación en industrias como la previsión económica, los exámenes médicos, el diagnóstico de fallos en dispositivos técnicos, etc. Uno de los ES actualmente conocidos es el proyecto WolframAlpha, creado para resolver problemas en matemáticas, física, biología, química y muchos otros. otras ciencias.

A finales de los 80 y principios de los 90, con la llegada de las primeras PC de escritorio de Apple e IBM, el interés del público y de los inversores en la IA comenzó a declinar. Un nuevo “invierno” ha comenzado...

azul profundo

Después muchos años Con altibajos, se produjo un acontecimiento significativo para la IA: el 11 de mayo de 1997, la supercomputadora de ajedrez Deep Blue, desarrollada por IBM, venció al campeón mundial de ajedrez Garry Kasparov en una partida de seis partidas con una puntuación de 3? por 2?.

En Deep Blue, el proceso de búsqueda en un árbol de movimientos de ajedrez se dividió en tres etapas. Primero, el procesador principal exploró los primeros niveles del árbol del juego de ajedrez, luego distribuyó las posiciones finales entre los procesadores auxiliares para una mayor exploración. Los procesadores auxiliares profundizaron la búsqueda unos cuantos movimientos más y luego distribuyeron sus posiciones finales a los procesadores de ajedrez, quienes, a su vez, buscaron en los últimos niveles del árbol. La función de evaluación de Deep Blue se implementó a nivel de hardware: procesadores de ajedrez. El diseño de la función de evaluación de hardware incluía alrededor de 8000 funciones de posición personalizables. Los valores de las características individuales se combinaron en una puntuación general, que luego Deep Blue utilizó para evaluar la calidad de las posiciones de ajedrez que se estaban viendo.

En 1997, Deep Blue ocupaba el puesto 259 en potencia (11,38 GFLOPS). A modo de comparación, la supercomputadora más rápida actual tiene 93.015 GFLOPS.

siglo XXI

En las últimas dos décadas, el interés por la IA ha aumentado significativamente. El mercado de tecnologías de IA (hardware y software) ha alcanzado los 8 mil millones de dólares y, según los expertos de IDC, crecerá hasta los 47 mil millones de dólares en 2020.

Esto se ve facilitado por la llegada de ordenadores más rápidos, rápido desarrollo Aprendizaje automático y tecnologías de big data.

El uso de redes neuronales artificiales ha simplificado la realización de tareas como el procesamiento de vídeo, el análisis de texto, el reconocimiento de voz y cada año se mejoran los métodos existentes para resolver problemas.

Proyectos DeepMind

En 2013, DeepMind presentó su proyecto en el que entrenaba a la IA para jugar juegos para la consola Atari además de humanos, e incluso mejores. Para ello se utilizó el método de aprendizaje por refuerzo profundo, que permitió a la red neuronal estudiar el juego de forma independiente. Al comienzo del entrenamiento, el sistema no sabía nada sobre las reglas del juego, utilizando solo una imagen en píxeles del juego e información sobre los puntos recibidos como entrada.

Además, DeepMind está desarrollando IA para entrenar a más juegos dificiles, como Starcraft 2. Esta estrategia en tiempo real es también una de las disciplinas cibernéticas más populares del mundo. A diferencia de los videojuegos clásicos, hay muchas más acciones posibles disponibles, poca información sobre el oponente y la necesidad de analizar decenas de tácticas posibles. Por el momento, la IA sólo puede hacer frente a minitareas sencillas, como la creación de unidades.

Es imposible no mencionar otro proyecto de DeepMind llamado AlphaGo. En octubre de 2015, el sistema derrotó al campeón europeo de Go Fan Hui por 5:0. Un año después en Corea del Sur Tuvo lugar un nuevo partido, donde el oponente de AlphaGo fue uno de los mejores jugadores del mundo, Lee Sedol. Se jugaron un total de cinco partidas, de las cuales AlphaGo ganó sólo cuatro. A pesar del alto nivel de habilidad demostrado, el programa aún cometió un error durante el cuarto juego. En 2017 se estrenó una película sobre AlphaGo, que recomendamos ver. DeepMind anunció recientemente la creación de una nueva generación de AlphaGo Zero. Ahora el programa aprende jugando contra sí mismo. Después de tres días de entrenamiento, AlphaGo Zero venció a su versión anterior con una puntuación de 100:0.

Conclusión

Hasta ahora, los sistemas de IA son altamente especializados, es decir, afrontan tareas mejor que los humanos sólo en áreas específicas (por ejemplo, jugar al Go o analizar datos). Todavía estamos lejos de crear una inteligencia artificial general (completa) que pueda reemplazar completamente la mente humana y sea capaz de realizar cualquier tarea intelectual.

Traducido el artículo de Lev Alhazred.

Apoye el proyecto ai-news con rublos. ¡Las máquinas creen en ti! >>

QUE ES LA INTELIGENCIA ARTIFICIAL. 3

1. HISTORIA DEL DESARROLLO DE LA INTELIGENCIA ARTIFICIAL.. 4

1.1. Historia del desarrollo de la inteligencia artificial en el extranjero. 4

1.1.1. Hitos clave desarrollo de IA y formación de ES.. 9

1.2. Historia del desarrollo de la inteligencia artificial en Rusia. 9

1.3. Principales direcciones de investigación en IA.. 10

1.4. Direcciones prometedoras de la inteligencia artificial. 20

1.5. Diferentes enfoques para la construcción de sistemas intelectuales modernos. 21

2. ESTRUCTURA DE UN SISTEMA INTELIGENTE... 25

3. DATOS Y CONOCIMIENTO... 27

3.1. Formas de representación del conocimiento: formas imperativas, declarativas y combinadas de representación del conocimiento. 31

3.2. Modelos de representación del conocimiento. 32

3.2.1. Modelos lógicos formales. 32

3.2.2. Modelo de producto. 36

3.2.3. Redes semánticas. 45

3.2.4.Cuadros... 53

4. Representación y procesamiento de conocimiento difuso. 74

4.1. Enfoque de probabilidad condicional (teorema de Bayes) 76

4.2. Enfoque del ratio de confianza. 81

4.3. Lógica difusa Zadeh. 86

5. Métodos para encontrar soluciones en espacios complejos. 89

5.1. Métodos de búsqueda en un solo espacio. 90

5.2. Formas de formalizar tareas. Representación de problemas en el espacio de estados. 93

5.3. Algoritmos para encontrar una solución (en el espacio de estados) 96

5.4. Búsqueda heurística (ordenada). 101

Lista bibliográfica. 104

¿QUÉ ES LA INTELIGENCIA ARTIFICIAL?

La ciencia llamada “inteligencia artificial” es parte del complejo Ciencias de la Computación, y las tecnologías creadas sobre su base pertenecen a tecnologías de la información.

Inteligencia artificial es una de las áreas de la informática, cuyo objetivo es el desarrollo de hardware software, permitiendo a un usuario no programador plantear y resolver sus propios problemas, tradicionalmente considerados intelectuales, comunicándose con una computadora en un subconjunto limitado de lenguaje natural.

La tarea de esta ciencia es proporcionar razonamiento y acción inteligentes con la ayuda de sistemas informáticos y otros dispositivos artificiales.

En este camino surgen las siguientes dificultades principales:

a) en la mayoría de los casos, antes de obtener el resultado, se desconoce el algoritmo para resolver el problema. Por ejemplo, no se sabe exactamente cómo entender un texto, buscar la demostración de un teorema, construir un plan de acción o reconocer una imagen.

b) los dispositivos artificiales (por ejemplo, computadoras) no tienen nivel suficiente competencia inicial. Un especialista logra resultados utilizando su competencia (en particular, conocimiento y experiencia).

Esto significa que la inteligencia artificial es ciencia experimental. El carácter experimental de la inteligencia artificial radica en que al crear determinadas representaciones y modelos informáticos, el investigador compara su comportamiento entre sí y con ejemplos de resolución de los mismos problemas por parte de un especialista, los modifica en base a esta comparación, intentando lograr una mejor coincidencia de los resultados.

Para que la modificación de programas mejore los resultados de forma “monótona”, es necesario tener ideas y modelos iniciales razonables. Provienen de estudios psicológicos de la conciencia, en particular de la psicología cognitiva.

Característica importante métodos de inteligencia artificial: se ocupa únicamente de aquellos mecanismos de competencia que son verbal carácter (permitir representación simbólica). No todos los mecanismos que utiliza una persona para solucionar problemas son así.

HISTORIA DEL DESARROLLO DE LA INTELIGENCIA ARTIFICIAL

Historia del desarrollo de la inteligencia artificial en el extranjero.

La idea de crear una imagen artificial de la mente humana para resolver problemas complejos de simulación de la capacidad de pensar ha estado en el aire desde la antigüedad. Primero lo expresó R. Lulli th (c.1235-c.1315), que allá por el siglo XIV. Intentó crear una máquina para resolver diversos problemas basada en una clasificación universal de conceptos.

En el siglo XVIII G. Leibniz(1646 - 1716) y R.Descartes(1596-1650) desarrollaron independientemente esta idea, proponiendo lenguajes universales Clasificaciones de todas las ciencias. Estas ideas formaron la base de los desarrollos teóricos en el campo de la inteligencia artificial.

El desarrollo de la inteligencia artificial como dirección científica sólo fue posible después de la creación de las computadoras. Esto sucedió en los años 40. Siglo XX Al mismo tiempo I. Viner(1894-1964) creó sus obras fundamentales sobre la nueva ciencia de la cibernética.

Término inteligencia artificial (inteligencia artificial) fue propuesto en 1956 en un seminario del mismo nombre en la Universidad de Stanford (EE.UU.). El seminario se dedicó al desarrollo de problemas lógicos, más que computacionales. Poco después de que la inteligencia artificial fuera reconocida como una rama independiente de la ciencia, se produjo una división en dos áreas principales: neurocibernética Y cibernética de caja negra " (o biónico Y pragmático instrucciones). Y sólo ahora se ha hecho evidente la tendencia a volver a combinar estas partes en un todo único.

la idea principal neurocibernética se puede formular de la siguiente manera. Lo único capaz de pensar es el cerebro humano. Por tanto, cualquier dispositivo “pensante” debe reproducir de alguna manera su estructura.

Así, la neurociberética se centra en el modelado hardware de estructuras similares a la estructura del cerebro. Los fisiólogos han establecido desde hace mucho tiempo que la base del cerebro humano es una gran cantidad de células nerviosas interconectadas e interactuantes: las neuronas. Por tanto, los esfuerzos de la neurocibernética se centraron en crear elementos similares a las neuronas y combinarlos en sistemas funcionales. Estos sistemas suelen denominarse redes neuronales , o n redes neuronales.

Las primeras redes neuronales se crearon a finales de los años 50. científicos americanos G. Rosenblatt Y P.McKiguk. Fueron intentos de crear sistemas que simularan el ojo humano y su interacción con el cerebro. El dispositivo que crearon se llamó perceptrón . Era capaz de distinguir las letras del alfabeto, pero era sensible a su ortografía, por ejemplo, las letras A, un y A para este dispositivo había tres diferentes signos. Poco a poco en los años 70-80. El número de trabajos en esta área de la inteligencia artificial empezó a disminuir. Los primeros resultados fueron demasiado decepcionantes. Los autores explicaron los fallos por la poca memoria y la baja velocidad de los ordenadores existentes en aquella época.

Sin embargo, a mediados de los 80. En Japón, se creó una neurocomputadora como parte del proyecto de desarrollo de computadoras basadas en el conocimiento de V generación. En ese momento, las limitaciones de memoria y velocidad prácticamente habían desaparecido. Apareció transputadores - Computadoras paralelas con una gran cantidad de procesadores. De transputers fue un paso a neurocomputadoras , Modelar la estructura del cerebro humano. El principal campo de aplicación de las neurocomputadoras es el reconocimiento de patrones.

Actualmente, se utilizan tres enfoques para crear redes neuronales:

hardware - creación de computadoras especiales, tarjetas de expansión, conjuntos de chips que implementan todos los algoritmos necesarios,

software - creación de programas y herramientas diseñadas para ordenadores de alto rendimiento. Las redes se crean en la memoria de la computadora, todo el trabajo lo realizan sus propios procesadores;

híbrido - una combinación de los dos primeros. Algunos de los cálculos se realizan mediante tarjetas de expansión especiales (coprocesadores) y otros mediante software.

la base Cibernética de "caja negra" estableció un principio opuesto a la neurocibernética. No importa cómo esté diseñado el dispositivo "pensante". Lo principal es que reacciona a ciertas influencias de la misma manera que el cerebro humano.

Esta área de la inteligencia artificial se centró en la búsqueda de algoritmos para resolver problemas intelectuales en modelos informáticos existentes. En 1954-1963. Se llevaron a cabo búsquedas intensivas de modelos y algoritmos del pensamiento humano y el desarrollo de los primeros programas. Resultó que ninguna de las ciencias existentes (filosofía, psicología, lingüística) puede ofrecer tal algoritmo. Entonces la cibernética propuso crear sus propios modelos. Se han creado y probado varios enfoques.

A finales de los años 50. nació un modelo búsqueda de laberinto . Este enfoque representa el problema como un gráfico que refleja el espacio de estados, y en este gráfico se busca la ruta óptima desde los datos de entrada hasta los datos resultantes. se ha hecho gran trabajo en el desarrollo de este modelo, pero en la resolución de problemas prácticos la idea no se utilizó ampliamente,

En 1954, el investigador estadounidense A. Newel decidió escribir un programa para jugar al ajedrez. Compartió esta idea con los analistas de RAND Corporation, J. Show y H. Simon, quienes ofrecieron su ayuda a Newell. Como base teórica Para tal programa, se decidió utilizar el método propuesto en 1950 por Claude Shannon, el fundador de la teoría de la información. Alan Turing llevó a cabo una formalización precisa de este método. Lo modeló a mano.

En el trabajo participó un grupo de psicólogos holandeses dirigidos por A. de Groot, que estudiaron los estilos de juego de destacados ajedrecistas. Después de dos años de trabajo conjunto, este equipo creó el lenguaje de programación IPL1, aparentemente el primer lenguaje simbólico para procesar listas. Pronto se escribió el primer programa, que se puede atribuir a los logros en el campo de la inteligencia artificial. Este fue el programa "Logic-Theorist" (1956), diseñado para la demostración automática de teoremas en cálculo proposicional.

El programa actual para jugar al ajedrez, NSS, se completó en 1957. Su trabajo se basó en las llamadas heurísticas (reglas que permiten a uno tomar una decisión en ausencia de bases teóricas precisas) y descripciones de objetivos. El algoritmo de control intentó reducir las diferencias entre las evaluaciones de la situación actual y las evaluaciones de la meta o una de las submetas.

Principios de los 60 - era programación heurística. La heurística es una regla que no está teóricamente justificada, pero que permite reducir el número de búsquedas en el espacio de búsqueda. La programación heurística es el desarrollo de una estrategia de acción basada en heurísticas conocidas y predeterminadas.

En 1960, el mismo grupo, basándose en los principios utilizados en NSS, escribió un programa que sus creadores llamaron GPS(Solucionador de problemas general): un solucionador de problemas universal. El sistema GPS era genérico en el sentido de que "no había ninguna indicación específica de en qué área se encontraba la tarea". El usuario tenía que definir el "entorno problemático" en términos de objetos y los operadores que se aplican a ellos. Pero esta universalidad se aplicaba sólo a un área limitada de acertijos matemáticos con un conjunto relativamente pequeño de estados y reglas formales bien definidas. El sistema GPS operaba en un microcosmos tan formalizado, donde los problemas que surgen, desde el punto de vista de las personas, no son problemas en absoluto.

Desde un punto de vista técnico, se puede decir que el proceso conocido como búsqueda en profundidad, que consiste en dividir secuencialmente un problema en subproblemas hasta obtener un subproblema fácilmente solucionable, es ineficaz porque se encuentran un gran número de direcciones sin salida. sujeto a un análisis muy cuidadoso. Posteriormente, los investigadores desarrollaron estrategias de búsqueda en amplitud más eficientes.

Estos resultados han atraído la atención de los científicos informáticos. Han aparecido programas para demostrar automáticamente teoremas de planimetría y resolver problemas algebraicos (formulados en inglés).

A finales de los años 60 aparecieron los primeros programas de juegos, sistemas para el análisis de textos elementales y la resolución de algunos problemas matemáticos (geometría, cálculo integral). En los complejos problemas de búsqueda que surgieron, el número de opciones a probar se redujo drásticamente mediante el uso de todo tipo de heurísticas y "sentido común". Este enfoque llegó a ser llamado programación heurística. Un mayor desarrollo de la programación heurística siguió el camino de complicar los algoritmos y mejorar las heurísticas. Sin embargo, pronto quedó claro que había un cierto límite más allá del cual ninguna mejora en la heurística o complicaciones del algoritmo mejorarían la calidad del sistema y, lo más importante, ampliarían sus capacidades. Un programa que juega al ajedrez nunca jugará a las damas ni a los juegos de cartas.

En 1963-1970 Se empezaron a utilizar métodos de lógica matemática para resolver problemas. John McCarty de Stanford se interesó por la base matemática de estos resultados y por la computación simbólica en general. Como resultado, en 1963 desarrolló el lenguaje LISP (LISP, de List Processing), que se basaba en el uso de una representación de lista única para programas y datos, el uso de expresiones para definir funciones y sintaxis de corchetes.

En 1965, apareció en los Estados Unidos el trabajo de J.A. Robinson, dedicado a un método ligeramente diferente para buscar automáticamente pruebas de teoremas en el cálculo de predicados de primer orden. Este método fue llamado método de resolución y sirvió como punto de partida para la creación de un nuevo lenguaje de programación con un procedimiento de inferencia lógica incorporado: el lenguaje Prolog (PROLOG) en 1971.

Poco a poco, los investigadores empezaron a comprender que a todos los programas creados anteriormente les faltaba lo más importante: conocimientos en el campo correspondiente. A la hora de resolver problemas, los especialistas logran altos resultados gracias a su conocimiento y experiencia; Si los programas acceden al conocimiento y lo aplican, también lograrán un trabajo de alta calidad.

Esta comprensión, que surgió a principios de los años 70, significó esencialmente un salto cualitativo en el trabajo sobre inteligencia artificial, cuando la búsqueda de un algoritmo de pensamiento universal fue reemplazada por la idea de simular el conocimiento específico de especialistas expertos. Consideraciones fundamentales a este respecto fueron expresadas en 1977 en la V Conferencia Conjunta sobre Inteligencia Artificial por el científico estadounidense E. Feigenbaum.

Ya a mediados de los años 70, aparecieron los primeros sistemas inteligentes aplicados que utilizaban varias maneras representación del conocimiento para resolver problemas - sistemas expertos. Un sistema experto (ES) es un programa que incorpora los conocimientos teóricos y prácticos de especialistas altamente calificados en un área problemática específica y es capaz de brindar recomendaciones sobre problemas en esta área con un alto grado de confiabilidad al nivel de estos especialistas.

Uno de los primeros fue el sistema experto DENDRAL, desarrollado en la Universidad de Stanford por un grupo de científicos liderados por Edward Feigenbaum y diseñado para generar fórmulas de compuestos químicos basadas en análisis espectrales. Actualmente, DENDRAL se suministra a los clientes junto con un espectrómetro. El sistema MYCIN está destinado al diagnóstico y tratamiento de enfermedades sanguíneas infecciosas. Fue la fundadora de toda una serie de máquinas de diagnóstico médico que se utilizan en la práctica clínica habitual. El sistema MICIN introdujo varias características que se han convertido en el sello distintivo de los sistemas expertos. En primer lugar, su conocimiento representa cientos de reglas de producción del tipo “si-entonces”; en segundo lugar, las reglas son probabilísticas; tercero, se utilizan coeficientes de confianza; cuarto, el sistema puede explicar su proceso de razonamiento. El conocido sistema PROSPECTOR predice depósitos minerales. Hay información de que con su ayuda se descubrieron depósitos de molibdeno cuyo valor supera los 100 millones de dólares. El sistema de evaluación de la calidad del agua, implementado sobre la base de la tecnología rusa SIMER + MIR, identifica las razones por las que se exceden las concentraciones máximas permitidas de contaminantes en el río Moscú en la zona de Serebryanny Bor. El sistema CASNET está diseñado para diagnosticar y seleccionar estrategias de tratamiento para el glaucoma, etc.

Actualmente, el desarrollo e implementación de sistemas expertos se ha convertido en un campo de ingeniería independiente.

Desde mediados de los 80. La inteligencia artificial se está comercializando. Las inversiones de capital anuales aumentan, se crean sistemas expertos industriales. La inteligencia artificial ha desviado la atención hacia el área de los problemas del aprendizaje automático.

Doug Lenat creó el sistema de comunicación automática EURISCO, que mejora y amplía automáticamente su conjunto de reglas heurísticas. Además de ganar el juego de guerra tres años seguidos (a pesar de que las reglas del juego cambiaban cada vez para evitarlo), fue capaz de revolucionar el campo de los VLSI (Circuitos Integrados de Muy Gran Escala) inventando un nodo tridimensional como AND/OR.

A principios de los años 90, la investigación sobre inteligencia artificial formó una dirección independiente: la "ingeniería del conocimiento". Se está trabajando para crear sistemas inteligentes dinámicos, es decir. sistemas que tienen en cuenta los cambios que ocurren en el mundo circundante durante la ejecución de la aplicación.

1 Revisión de la literatura.


  1. Una breve historia del desarrollo de la inteligencia artificial.

La inteligencia artificial (IA) es un área de investigación que se encuentra en la intersección de las ciencias, donde los especialistas que trabajan en este campo intentan comprender qué comportamiento se considera inteligente (análisis) y crear modelos funcionales de este comportamiento (síntesis). El objetivo práctico es crear métodos y tecnología necesarios para programar la “inteligencia” y su transferencia a las computadoras (VM) y, a través de ellas, a todo tipo de sistemas y medios.

En la década de 1950, los investigadores de IA intentaron construir máquinas inteligentes imitando el cerebro. Estos intentos no tuvieron éxito debido a la total inadecuación tanto del hardware como del software.

En los años 60, se intentó encontrar métodos generales para resolver una amplia clase de problemas mediante el modelado. proceso complejo pensamiento. El desarrollo de programas universales resultó demasiado difícil e infructuoso. Cuanto más amplia sea la clase de problemas que un programa puede resolver, más pobres serán sus capacidades para resolver un problema específico.

A principios de la década de 1970, los especialistas en IA centraron su atención en el desarrollo de métodos y técnicas de programación adecuados para resolver problemas más especializados: métodos de representación (formas de formular un problema a resolver utilizando tecnología informática (CT)) y métodos de búsqueda (formas de controlar el progreso). de solución para que no requiera demasiada memoria y tiempo).

Y sólo a finales de los años 70 se adoptó un concepto fundamentalmente nuevo, que es el de crear programa intelectual debe estar equipado con una gran cantidad de conocimientos específicos de dominio de alta calidad. El desarrollo de esta dirección condujo a la creación de sistemas expertos (ES).

En los años 80, la IA experimentó un renacimiento. Se reconoció ampliamente su gran potencial tanto en investigación como en desarrollo productivo. Dentro nueva tecnología Aparecieron los primeros productos de software comerciales. En este momento, el campo del aprendizaje automático comenzó a desarrollarse. Hasta ahora, transferir el conocimiento de un experto a un programa de máquina era un proceso tedioso y que requería mucho tiempo. Creación de sistemas que mejoran y amplían automáticamente su stock de reglas heurísticas (no formales, basadas en consideraciones intuitivas). la etapa más importante V últimos años. A principios de la década varios paises Se pusieron en marcha los mayores proyectos de investigación nacionales e internacionales en la historia del procesamiento de datos, dirigidos a “VM inteligentes de quinta generación”.

La investigación en IA a menudo se clasifica según su alcance y no según diferentes teorías y escuelas de pensamiento. Cada una de estas áreas ha desarrollado sus propios métodos y formalismos de programación a lo largo de décadas; Cada uno de ellos tiene sus propias tradiciones, que pueden diferir notablemente de las tradiciones del campo de estudio vecino. Actualmente la IA se aplica en las siguientes áreas:


  1. procesamiento del lenguaje natural;

  2. sistemas expertos (ES);

  3. cálculos simbólicos y algebraicos;

  4. pruebas y programación lógica;

  5. programación de juegos;

  6. procesamiento de señales y reconocimiento de patrones;

  7. etc.

1.2 Lenguajes de programación de IA.

1.2.1 Clasificación de lenguajes y estilos de programación.
Todos los lenguajes de programación se pueden dividir en lenguajes procedimentales y declarativos. La gran mayoría de los lenguajes de programación utilizados actualmente (C, Pascal, BASIC, etc.) son lenguajes procedimentales. Las clases más importantes de lenguajes declarativos son los lenguajes funcionales (Lisp, Logo, APL, etc.) y lógicos (Prolog, Planner, Coniver, etc.) (Fig. 1).

En la práctica, los lenguajes de programación no son puramente procedimentales, funcionales o lógicos, sino que contienen características de diferentes tipos de lenguajes. A menudo es posible escribir un programa funcional o parte de un programa funcional en un lenguaje procedimental y viceversa. Quizás sería más exacto hablar de un estilo o método de programación en lugar de un tipo de lenguaje. Naturalmente, se admiten diferentes idiomas. diferentes estilos en diversos grados.

Un programa procesal consta de una secuencia de declaraciones y declaraciones que controlan la secuencia de su ejecución. Los operadores típicos son operadores de asignación y transferencia, operadores de entrada/salida y ofertas especiales para organizar ciclos. Se pueden utilizar para crear fragmentos de programas y subrutinas. La programación procesal implica tomar el valor de una variable, realizar una acción sobre ella y almacenar el nuevo valor utilizando un operador de asignación, hasta que se obtenga (y posiblemente se imprima) el valor final deseado.

LENGUAJES DE PROGRAMACIÓN

LENGUAS PROCESALES LENGUAS DECLARATIVAS

Pascal, C, Fortran, ...

LENGUAJES LÓGICOS LENGUAJES FUNCIONALES

Prólogo, Mandala... Lisp, Logo, ARL, ...

Fig.1 Clasificación de lenguajes de programación.
La programación lógica es uno de los enfoques de la informática en el que, como lenguaje, alto nivel Se utiliza lógica de predicados de primer orden en forma de frases de Horn. La lógica de predicados de primer orden es un lenguaje abstracto universal diseñado para representar conocimiento y resolver problemas. Puede verse como una teoría general de las relaciones. La programación lógica se basa en un subconjunto de la lógica de predicados de primer orden, pero tiene un alcance igualmente amplio. La programación lógica permite al programador describir una situación usando fórmulas de lógica de predicados y luego usar un solucionador automático de problemas (es decir, algún procedimiento) para sacar conclusiones de estas fórmulas. Cuando se utiliza un lenguaje de programación lógica, la atención se centra en describir la estructura de un problema de aplicación, en lugar de instruir a la computadora sobre lo que debe hacer. Otros conceptos informáticos de áreas como la teoría de bases de datos relacionales, la ingeniería de software y la representación del conocimiento también se pueden describir (y, por lo tanto, implementar) utilizando programas lógicos.

Un programa funcional consta de una colección de definiciones de funciones. Las funciones, a su vez, son llamadas a otras funciones y cláusulas que controlan la secuencia de llamadas. La computación comienza con una llamada a una función, que a su vez llama a las funciones incluidas en su definición, y así sucesivamente, de acuerdo con la jerarquía de definiciones y la estructura de las cláusulas condicionales. Las funciones a menudo se llaman a sí mismas directa o indirectamente.

Cada llamada devuelve algún valor a la función que la llamó, cuya evaluación continúa; este proceso se repite hasta que la función que inició el cálculo devuelve el resultado final al usuario.

La programación funcional “pura” no reconoce asignaciones ni transferencias de control. La bifurcación de cálculos se basa en el mecanismo de procesamiento de argumentos de una oración condicional. Los cálculos repetidos se realizan mediante recursividad, que es la principal herramienta de programación funcional.


  1. Características comparativas de los lenguajes de IA.

En la primera etapa del desarrollo de la IA (a finales de los 50 y principios de los 60), no existían lenguajes ni sistemas específicamente centrados en áreas de conocimiento. Los lenguajes de programación universales que habían aparecido en ese momento parecían herramienta adecuada para crear cualquier sistema (incluido el inteligente), ya que en estos lenguajes es posible distinguir componentes declarativos y procesales. Parecía que cualquier modelo y sistema de representación del conocimiento podía interpretarse sobre esta base. Pero la complejidad y la intensidad del trabajo de tales interpretaciones resultaron ser tan grandes que no se disponía de sistemas de aplicación para su implementación. Los estudios han demostrado que la productividad de un programador permanece constante independientemente del nivel del lenguaje instrumental en el que trabaja, y la relación entre la duración del programa original y el resultante es aproximadamente 1:10. Así, el uso de un lenguaje instrumental adecuado aumenta en un orden de magnitud la productividad del desarrollador del sistema, y ​​esto con una traducción en una sola etapa. Los lenguajes destinados a programar sistemas inteligentes contienen traductores jerárquicos (multinivel) y aumentan la productividad laboral 100 veces. Todo esto confirma la importancia de utilizar herramientas adecuadas.


  1. Lenguajes para procesar información simbólica.

El lenguaje Lisp se desarrolló en Stanford bajo el liderazgo de J. McCarthy a principios de los años 60. Según los planes originales, se suponía que incluiría, junto con todas las capacidades de Fortran, herramientas para trabajar con matrices, punteros y estructuras a partir de punteros, etc. Pero no había fondos suficientes para tal proyecto. Los principios finalmente formados que subyacen al lenguaje Lisp: el uso de una representación de lista única para programas y datos; usar expresiones para definir funciones; sintaxis entre corchetes del idioma.

Lisp es un lenguaje de bajo nivel; puede considerarse como un ensamblador orientado a trabajar con estructuras de listas. Por lo tanto, a lo largo de la existencia del lenguaje hubo muchos intentos de mejorarlo introduciendo primitivas básicas y estructuras de control adicionales. Pero todos estos cambios, por regla general, no se convirtieron en lenguas independientes. En sus nuevas ediciones, Lisp absorbió rápidamente todos los valiosos inventos de sus competidores.

Después de la creación del potente sistema Lisp McLisp Interlisp a principios de los años 70, los intentos de crear lenguajes de IA diferentes a Lisp, pero sobre la misma base, fracasaron. Un mayor desarrollo del lenguaje va, por un lado, por el camino de su estandarización (Standard-Lisp, Franz-Lisp, Common Lisp), y por el otro, hacia la creación de lenguajes conceptualmente nuevos para representar y manipular el conocimiento. en el entorno Lisp. Actualmente, Lisp está implementado en toda clase de computadoras, desde computadoras personales hasta sistemas informáticos de alto rendimiento.

ceceo - no el único idioma, utilizado para tareas de IA. Ya a mediados de los años 60 se iban desarrollando lenguajes que ofrecían diferentes marcos conceptuales. Los más importantes en el campo del procesamiento de información simbólica son SNOBOL y Refal.


SNOBOLA.

Este es un lenguaje de procesamiento de cadenas en el que apareció por primera vez el concepto de búsqueda de patrones y se implementó de manera bastante completa. El lenguaje SNOBOL fue una de las primeras implementaciones prácticas de un sistema de producción desarrollado. La versión más famosa e interesante de este lenguaje es Snoball-4. Aquí la técnica de especificar muestras y trabajar con ellas ha superado significativamente las necesidades de práctica. Esencialmente, siguió siendo un lenguaje de programación "propietario", aunque los conceptos de SNOBOL ciertamente influyeron en Lisp y otros lenguajes de programación de IA.


Refal.

El lenguaje Refal es un lenguaje algorítmico de funciones recursivas. Fue creado por Turchin como un metalenguaje destinado a describir varios lenguajes, incluidos los algorítmicos, y varios tipos procesamiento de dichos lenguajes. Esto también significó el uso de Refal como metalenguaje sobre sí mismo. Para el usuario, este es un lenguaje para procesar información simbólica. Por ello, además de describir la semántica de los lenguajes algorítmicos, ha encontrado otras aplicaciones. Esto incluye realizar cálculos analíticos engorrosos en física teórica y matemáticas aplicadas, interpretar y compilar lenguajes de programación, demostrar teoremas, modelar comportamientos dirigidos a objetivos y, más recientemente, tareas de inteligencia artificial. Lo que todas estas aplicaciones tienen en común son transformaciones complejas sobre objetos definidos en algunos lenguajes formalizados.

El lenguaje Refal se basa en el concepto de función recursiva definida sobre un conjunto de expresiones simbólicas arbitrarias. La estructura de datos básica de este lenguaje son listas, pero no unidas individualmente, como en Lisp, sino bidireccionales. El procesamiento de símbolos está más cerca del paradigma de producción. Al mismo tiempo, se utiliza activamente el concepto de búsqueda de patrones, característico de SNOBOL.

Un programa escrito en Refal define un determinado conjunto de funciones, cada una de las cuales tiene un argumento. Una llamada a función está encerrada entre corchetes de función.

En muchos casos, se hace necesario llamar programas escritos en otros lenguajes desde programas escritos en Refal. Esto es simple, ya que desde el punto de vista de Refal, las funciones primarias (Funciones que no están descritas en Refal, pero que sin embargo pueden ser llamadas desde programas escritos en este lenguaje) son simplemente algunas funciones externas a este programa, por lo tanto, Cuando Al llamar a una función, es posible que ni siquiera sepas que es una función principal.

La semántica del programa Refal se describe en términos de una máquina Refal abstracta. La máquina de arrecifes tiene un campo de memoria y un campo visual. El programa se coloca en el campo de memoria de la máquina Refal y los datos que se procesarán con su ayuda se colocan en el campo de visión, es decir, antes de comenzar a trabajar, se ingresa una descripción del conjunto de funciones en el campo de memoria. , y la expresión a procesar se ingresa en el campo de visión.

A menudo es conveniente dividir un programa Refal en partes que el compilador Refal pueda procesar independientemente unas de otras. La parte más pequeña de un programa Refal que el compilador puede procesar independientemente de las demás se llama módulo. El resultado de compilar el módulo fuente en Refal es un módulo objeto que, antes de ejecutar el programa Refal, debe combinarse con otros módulos obtenidos mediante la compilación de Refal u otros lenguajes; esta fusión se realiza mediante el editor de enlaces y los cargadores; Los detalles dependen del sistema operativo que esté utilizando.

Así, Refal ha absorbido las mejores características de los más idiomas interesantes Procesamiento de información simbólica de los años 60. Actualmente, el lenguaje Refal se utiliza para automatizar la construcción de traductores, sistemas de transformación analítica y también, al igual que Lisp, como entorno de herramientas para implementar lenguajes de representación del conocimiento.


Prólogo.

A principios de los años 70 apareció nuevo idioma compitiendo con Lisp en la implementación de sistemas orientados al conocimiento - Prolog. Este lenguaje no proporciona nuevas herramientas de programación superpoderosas en comparación con Lisp, pero admite un modelo diferente para organizar los cálculos. Su atractivo desde un punto de vista práctico es que, así como Lisp ocultó la estructura de la memoria de la computadora al programador, Prolog le permitió no preocuparse por el flujo de control en el programa.

Prolog es una lengua europea desarrollada en la Universidad de Marsella en 1971. Pero comenzó a ganar popularidad recién a principios de los años 80. Esto se debe a dos circunstancias: en primer lugar, la base lógica de este lenguaje estaba justificada y, en segundo lugar, en el proyecto japonés de sistemas informáticos de quinta generación se eligió como base para uno de los componentes centrales: el motor de inferencia.

El lenguaje Prolog se basa en un conjunto limitado de mecanismos, que incluyen coincidencia de patrones, representación en árbol de estructuras de datos y retroceso automático. Prolog es especialmente adecuado para resolver problemas que involucran objetos y relaciones entre ellos.

Prolog tiene poderosas herramientas que le permiten recuperar información de bases de datos, y los métodos de recuperación de datos utilizados en él son fundamentalmente diferentes de los tradicionales. El poder y la flexibilidad de las bases de datos Prolog y la facilidad de su extensión y modificación hacen que este lenguaje sea muy conveniente para aplicaciones comerciales.

Prolog se utiliza con éxito en áreas como: bases de datos relacionales (el lenguaje es especialmente útil al crear interfaces de usuario de bases de datos relacionales); resolución automática de problemas; comprensión del lenguaje natural; implementación de lenguajes de programación; representación del conocimiento; sistemas expertos y otras tareas de IA.

La base teórica de Prolog es el cálculo de predicados. Prolog tiene una serie de propiedades que los lenguajes de programación tradicionales no tienen. Estas propiedades incluyen un mecanismo de inferencia de búsqueda y retorno y un mecanismo de coincidencia de patrones incorporado. Prolog se caracteriza por la uniformidad de programas y datos. Son simplemente puntos de vista diferentes sobre los objetos de Prolog. El lenguaje no tiene punteros, operadores de asignación ni operadores de salto incondicionales. El método de programación natural es la recursividad.

Un programa de prólogo consta de dos partes: una base de datos (un conjunto de axiomas) y una secuencia de enunciados objetivo que describen colectivamente la negación del teorema que se está demostrando. La principal diferencia fundamental entre la interpretación de un programa en Prolog y el procedimiento para demostrar un teorema en el cálculo de predicados de primer orden es que los axiomas en la base de datos están ordenados y el orden en que aparecen es muy significativo, ya que el algoritmo en sí, implementado por el programa Prolog, se basa en esto. Otra limitación importante de Prolog es que se utilizan fórmulas de una clase limitada como axiomas lógicos: las llamadas cláusulas de Horn. Sin embargo, a la hora de resolver muchos problemas prácticos, esto es suficiente para una representación adecuada del conocimiento. En palabras de Horne, a una única conclusión le siguen cero o más condiciones.

Encontrar fórmulas “útiles” para la demostración es una tarea combinatoria y, a medida que aumenta el número de axiomas, el número de pasos de derivación crece catastróficamente rápido. Por tanto, en los sistemas reales se utilizan todo tipo de estrategias que limitan la búsqueda ciega. El lenguaje Prolog implementa una estrategia de resolución lineal, que sugiere utilizar en cada paso la negación de un teorema o su “descendiente” como una de las fórmulas comparadas, y uno de los axiomas como el otro. En este caso, la elección de uno u otro axioma para la comparación puede conducir inmediatamente o después de varios pasos a un "callejón sin salida". Esto le obliga a volver al punto en el que se hizo la elección para probar una nueva alternativa, etc. El orden de visualización de los axiomas alternativos no es arbitrario: lo establece el programador, organizando los axiomas en la base de datos de una manera cierto orden. Además, Prolog proporciona medios "integrados" bastante convenientes para prohibir el regreso a un punto en particular dependiendo del cumplimiento de ciertas condiciones. Por tanto, el proceso de prueba en Prolog es más sencillo y más centrado que en el método de resolución clásico.

El significado de un programa en lenguaje Prolog puede entenderse desde el punto de vista de un enfoque declarativo o desde el punto de vista de un enfoque procedimental.

El significado declarativo del programa determina si un objetivo determinado es verdadero (alcanzable) y, de ser así, con qué valores de las variables se logra. Destaca la existencia estática de las relaciones. El orden de los subobjetivos de una regla no afecta el significado declarativo de esta regla. El modelo declarativo está más cerca de la semántica de la lógica de predicados, lo que hace de Prolog un lenguaje eficaz para representar el conocimiento. Sin embargo, el modelo declarativo no puede representar adecuadamente aquellas frases en las que el orden de los subobjetivos es importante. Para explicar el significado de frases de este tipo es necesario utilizar un modelo procesal.

En una interpretación procesal de un programa Prolog, no sólo se determinan las conexiones lógicas entre el principio de la oración y los objetivos de su cuerpo, sino también el orden en el que se procesan estos objetivos. Pero el modelo de procedimiento no es adecuado para explicar el significado de frases que provocan efectos secundarios de control, como detener la ejecución de una consulta o eliminar una frase del programa.

Resolver problemas de IA de la vida real requiere máquinas que deben superar la velocidad de la luz, y esto sólo es posible en sistemas paralelos. Por lo tanto, las implementaciones en serie deben considerarse como estaciones de trabajo para crear software futuros sistemas paralelos de alto rendimiento capaces de realizar cientos de millones de inferencias por segundo. Actualmente, existen decenas de modelos para la ejecución paralela de programas lógicos en general y programas Prolog en particular. A menudo se trata de modelos que utilizan el enfoque tradicional para organizar la computación paralela: muchos procesos que interactúan y se ejecutan en paralelo. Recientemente, se ha prestado considerable atención a esquemas más modernos para organizar la computación paralela: modelos de transmisión. Los modelos de concurrencia consideran Prolog tradicional y sus fuentes inherentes de concurrencia.

La eficiencia de Prolog se ve muy afectada por los recursos limitados en tiempo y espacio. Esto se debe a la incapacidad de la arquitectura tradicional. computadoras implementar el método Prolog para ejecutar programas, proporcionando el logro de objetivos de una lista determinada. Que esto cause dificultades en las aplicaciones prácticas depende del problema. El factor tiempo es prácticamente irrelevante si un programa Prolog ejecutado varias veces al día tarda un segundo y el programa correspondiente en otro idioma tarda 0,1 segundos. Pero la diferencia de eficiencia se vuelve significativa cuando los dos programas requieren 50 y 5 minutos respectivamente.

Por otro lado, en muchas aplicaciones Prolog puede reducir significativamente el tiempo de desarrollo del programa. Los programas Prolog son más fáciles de escribir, comprender y depurar que los programas escritos en Prolog. lenguas tradicionales, es decir, el lenguaje Prolog es atractivo por su simplicidad. Los programas Prolog son fáciles de leer, lo que ayuda a mejorar la productividad y la capacidad de mantenimiento de la programación. Debido a que Prolog se basa en frases de Horn, el código fuente de los programas Prolog se ve mucho menos afectado por características específicas de la máquina que el código fuente de programas escritos en otros lenguajes. Además, las diferentes versiones del lenguaje Prolog tienden a ser consistentes, de modo que un programa escrito para una versión puede convertirse fácilmente en un programa para otra versión del lenguaje. Además, Prolog es fácil de aprender.

Al elegir el lenguaje Prolog como lenguaje de programación básico en el proyecto japonés de sistemas informáticos de quinta generación, una de sus deficiencias fue la falta de un entorno de programación desarrollado y la incapacidad de Prolog para crear grandes sistemas de software. Ahora la situación ha cambiado un poco, aunque es prematuro hablar de un entorno verdaderamente lógico y orientado a la programación.

Entre los lenguajes con cuyo advenimiento surgieron nuevas ideas sobre la implementación de sistemas inteligentes, es necesario destacar los lenguajes orientados a la programación de tareas de búsqueda.


  1. Lenguajes de programación para solucionadores inteligentes.

Un grupo de lenguajes que pueden denominarse lenguajes de solucionadores inteligentes se centra principalmente en un subcampo de la IA como la resolución de problemas, que se caracteriza, por un lado, por modelos de problemas bastante simples y bien formalizados, y por el otro, mediante métodos sofisticados para encontrar sus soluciones. Por lo tanto, el foco de estos lenguajes estaba en introducir poderosas estructuras de control en lugar de formas de representar el conocimiento. Se trata de lenguajes como Planer, Coniver, KyuA-4, KyuLisp.


Planificador.

Este lenguaje ha dado lugar a una poderosa creatividad lingüística en el campo de la IA. El lenguaje fue desarrollado en el Instituto de Tecnología de Massachusetts en 1967-1971. Al principio era un complemento de Lisp; de esta forma, el lenguaje se implementó en MacLisp con el nombre de Micro Planer. Posteriormente, la cepilladora se amplió considerablemente y se convirtió en lenguaje independiente. En la URSS se implementó bajo los nombres Pleiner-BESM y Pleiner-Elbrus. Este lenguaje introdujo muchas ideas nuevas en los lenguajes de programación: búsqueda automática con retroceso, búsqueda de datos por patrón, llamada de procedimientos por patrón, método deductivo, etc.

Como subconjunto, Planer contiene casi todo Lisp (con algunas modificaciones) y conserva en gran medida sus características específicas. La estructura de los datos (expresiones, átomos y listas), la sintaxis de los programas y las reglas para su cálculo en Planner son similares a las de Lisp. Para procesar datos en Planner, se utilizan principalmente las mismas herramientas que en Lisp: funciones recursivas y de bloque. Casi todas las funciones Lisp integradas, incluida la función EVAL, están incluidas en Planner. Las nuevas funciones se definen de la misma manera. Como en Lisp, los átomos pueden tener listas de propiedades asociadas.

Pero también existen diferencias entre Lisp y Planner. Notemos algunos de ellos. En Lisp, al acceder a una variable, solo se indica su nombre, por ejemplo X, mientras que el átomo en sí se indica como 'X'. Planner utiliza la notación inversa: los átomos se refieren a sí mismos y, cuando se refieren a variables, se coloca un prefijo antes de su nombre. En este caso, el prefijo indica cómo se debe utilizar la variable. La sintaxis para llamar a funciones también difiere de la de Lisp, que en Planner está escrita en forma de lista con corchetes en lugar de corchetes.

Para procesar datos, Planner utiliza no sólo funciones, sino también patrones y comparadores.

Los ejemplos describen las reglas para analizar y descomponer datos y por tanto su uso facilita la redacción de programas y acorta sus textos.

Los emparejadores se definen de la misma manera que las funciones, solo que su expresión definitoria comienza con una palabra clave y el cuerpo se especifica como un patrón. Su ejecución no consiste en calcular ningún valor, sino en comprobar si la expresión comparada con él tiene una determinada propiedad.

El subconjunto considerado de Planner se puede utilizar independientemente de sus otras partes: es un potente lenguaje de programación conveniente para implementar varios sistemas de procesamiento simbólico. Las partes restantes del Planer lo orientan al campo de la IA, proporcionando herramientas para describir problemas (situaciones iniciales, operaciones permitidas, objetivos), cuyas soluciones debe buscar el sistema de IA implementado en el Planer, y herramientas que simplificar la implementación de procedimientos para encontrar soluciones a estos problemas.

En Pleinner se puede programar describiendo lo que está disponible y lo que se necesita obtener, sin indicar explícitamente cómo hacerlo. La responsabilidad de encontrar una solución al problema descrito la asume el mecanismo deductivo integrado en el lenguaje (el mecanismo para lograr objetivos automáticamente), que se basa en llamar teoremas según un modelo. Sin embargo, simplemente llamar a los teoremas por patrón no es suficiente para tal mecanismo. Se necesita un mecanismo de fuerza bruta, y dicho mecanismo (el modo de retorno) se introduce en el lenguaje.

Ejecutar un programa en modo de retorno es conveniente para su autor porque el lenguaje asume la responsabilidad de recordar las bifurcaciones y las alternativas que quedan en ellas, de regresar a ellas y restaurar el estado anterior del programa; todo esto se hace automáticamente. Pero esta automatización no siempre es beneficiosa, ya que en general conduce a una búsqueda "ciega". Y puede resultar que al nombrar teoremas se llame en último lugar al más adecuado, aunque el autor del programa conoce de antemano sus ventajas. Teniendo esto en cuenta, Planer proporciona controles para el modo de retorno.


Convertidor.

El lenguaje Coniver fue desarrollado en 1972 e implementado como complemento del lenguaje McLisp. Los autores del lenguaje Coniver criticaron algunas de las ideas del lenguaje Planer. Se relaciona principalmente con el modo de retorno automático, que generalmente conduce a programas ineficaces y descontrolados, especialmente si son compilados por usuarios no cualificados. Los autores de Koniver abandonaron el modo de retorno automático, creyendo que no debería haber disciplinas de control fijas integradas en el lenguaje (excepto las más simples: bucles, recursiones) y que el propio autor del programa debe organizar las disciplinas de control que necesita, y para Para ello, el lenguaje debe abrirse a la estructura de gestión de usuarios y proporcionar herramientas para trabajar con él. Este concepto fue implementado en Coniver de la siguiente manera.

Cuando se llama a un procedimiento, se asigna un lugar en la memoria donde se almacena la información necesaria para su funcionamiento. Aquí, en particular, se ubican las variables de procedimiento local, los punteros de acceso (un enlace a un procedimiento cuyas variables son accesibles desde éste) y los punteros de retorno (un enlace a un procedimiento al que se debe devolver el control). Por lo general, esta información está oculta para el usuario, pero en el lenguaje Coniver dicha sección de la memoria (marco) está abierta: el usuario puede ver y cambiar el contenido del marco. En el lenguaje, los marcos representan un tipo especial de datos a los que se accede mediante punteros.

La desventaja del lenguaje es que, aunque el usuario recibe controles flexibles, al mismo tiempo se enfrenta a un trabajo difícil y minucioso que requiere altas calificaciones. El lenguaje Coniver no sirve para implementar sistemas complejos, sino como base a partir de la cual programadores cualificados preparan los mecanismos de control necesarios para otros usuarios.

Dada la complejidad de implementar disciplinas de control, los autores del lenguaje se vieron obligados a incluir una serie de mecanismos de control fijos, análogos de procedimientos de bifurcación y teoremas del lenguaje Planner. Pero a diferencia de Planer, donde la brecha entre la elección de una alternativa en una bifurcación y su análisis y, si es necesario, el desarrollo del fallo puede ser arbitrariamente grande, en el lenguaje de Coniver esta brecha se reduce al mínimo. De esta manera Coniver se deshace de consecuencias negativas Devoluciones globales por fallo, cuando es necesario cancelar el trabajo anterior de casi todo el programa.