Tendencias21 - Diseñan un sistema de computación que juega con los datos al estilo Sudoku
Diseñan un sistema de computación que juega con los datos al estilo “Sudoku”
Los científicos suelen ver la computación como algo parecido a la elaboración de una receta, paso a paso. Sin embargo, un nuevo proyecto de investigación del MIT cambia el concepto de programación, comparándolo con la resolución de un puzzle de piezas interconectadas. La idea podría tener consecuencias importantes en inteligencia artificial, computación paralela y diseño de hardware. Por Elena Higueras.
Tradicionalmente los sistemas de inteligencia artificial se han enfrentado a los problemas en etapas. Es decir, un programa que trata de dar sentido a una página de texto escrito, por ejemplo, comienza por determinar dónde empiezan y terminan las frases y las palabras. A continuación, identifica los posibles lugares que podría ocupar cada palabra en la oración y, por último, elabora un diagrama de la estructura gramatical de las oraciones. Sólo entonces el proceso pasa a la siguiente etapa. El problema de este método es que los errores se arrastran de una etapa a otra. De este modo, si cada etapa tuviera un 95% de precisión, un proceso de cinco etapas reduciría las posibilidades de éxito al 77% y en uno de veinte se obtendrían unos resultados con sólo un 36% de fiabilidad.
Si bien es cierto que existen sistemas que pueden traer la información de regreso desde las etapas posteriores a las anteriores y corregir así algunos errores, en la práctica estos programas son muy complicados y su construcción desde cero lleva demasiado tiempo a los informáticos. Además, buena parte de ellos han sido diseñados para aplicaciones específicas y son incapaces de funcionar correctamente en otras.
Para resolver este problema, un estudiante postdoctoral del Laboratorio de Inteligencia Artificial y Ciencias de la Computación del MIT (Instituto de Tecnología de Massachusetts), Alexey Radul, ha desarrollado un nuevo tipo de sistema de computación capaz de soportar un flujo multidireccional de información de forma automática, según un comunicado de dicha institución. No se trata sólo de hacer pasar la información de manera lineal por las distintas etapas de un proceso, sino también de conseguir que se mueva lateralmente. Así, los resultados de una etapa podrían tenerse en cuenta en otras dos, lo que permite enfrentar el problema desde diferentes direcciones al mismo tiempo, contrastando sus soluciones antes de pasarlas a la siguiente fase.
De este modo, las etapas de un proceso podrían estar dispuestas en paralelo o en serie, como elementos en un circuito eléctrico. El trabajo de los programadores consistiría simplemente en especificar cómo cada módulo se conecta con los que le rodean. Entonces, el sistema trasladaría automáticamente la información a todos los módulos hasta dar con las soluciones que cumplen todas las restricciones impuestas por cada uno de ellos.
Si bien es cierto que existen sistemas que pueden traer la información de regreso desde las etapas posteriores a las anteriores y corregir así algunos errores, en la práctica estos programas son muy complicados y su construcción desde cero lleva demasiado tiempo a los informáticos. Además, buena parte de ellos han sido diseñados para aplicaciones específicas y son incapaces de funcionar correctamente en otras.
Para resolver este problema, un estudiante postdoctoral del Laboratorio de Inteligencia Artificial y Ciencias de la Computación del MIT (Instituto de Tecnología de Massachusetts), Alexey Radul, ha desarrollado un nuevo tipo de sistema de computación capaz de soportar un flujo multidireccional de información de forma automática, según un comunicado de dicha institución. No se trata sólo de hacer pasar la información de manera lineal por las distintas etapas de un proceso, sino también de conseguir que se mueva lateralmente. Así, los resultados de una etapa podrían tenerse en cuenta en otras dos, lo que permite enfrentar el problema desde diferentes direcciones al mismo tiempo, contrastando sus soluciones antes de pasarlas a la siguiente fase.
De este modo, las etapas de un proceso podrían estar dispuestas en paralelo o en serie, como elementos en un circuito eléctrico. El trabajo de los programadores consistiría simplemente en especificar cómo cada módulo se conecta con los que le rodean. Entonces, el sistema trasladaría automáticamente la información a todos los módulos hasta dar con las soluciones que cumplen todas las restricciones impuestas por cada uno de ellos.
Un nuevo concepto de computación
Esta nueva concepción de la programación requiere una reconcepción proporcional de la computación. Tradicionalmente, un sistema de computación está pensado como si tuviera dos partes principales: un circuito lógico y una memoria. El circuito lógico obtiene datos de la memoria, realiza una operación con los datos y devuelve los resultados.
Por el contrario, en el sistema de Radul, los circuitos múltiples y celdas de memoria se organizan en una red grande. Cualquier circuito lógico dado puede intercambiar datos con varias celdas de memoria diferentes, y viceversa, cualquier celda de memoria dada puede intercambiar datos con varios circuitos lógicos diferentes. Sin embargo, el peligro de este diseño es que los circuitos lógicos que almacenan datos en la misma celda de memoria pueden llevar a conclusiones contradictorias. En lugar de trabajar juntos para resolver un problema, los circuitos lógicos podrían terminar superponiendo los datos de cada uno.
Para evitar resultados contrapuestos Radul pensó en que la solución más simple sería elaborar celdas de memoria que no almacenasen datos de forma gradual sino que acumulasen información acerca de esos datos. Un circuito lógico, por ejemplo, podría concluir que el valor de una variable está entre 5 y 15, entonces la celda de memoria registrará que el número cae dentro de ese rango. Otro circuito lógico, con acceso a la misma celda de memoria, podría concluir que el valor de la variable está entre 10 y 20. Ahora, la celda de memoria acotaría el rango de valores entre 10 y 15. Para entenderlo, el investigador compara el funcionamiento de su sistema con un Sudoku: el jugador identifica dos o tres valores candidatos para una plaza del rompecabezas y los anota en una esquina, aguardando el momento en que tenga la información suficiente para anotarlo con seguridad en su cuadrado correspondiente.
Por otra parte, en el prototipo de Radul existen celdas de memoria habilitadas para realizar un seguimiento de la procedencia de los datos, una capacidad, que el investigador considera útil para una amplia gama de aplicaciones. Para explicar esta particularidad de su proyecto, asigna a los circuitos lógicos nombres arbitrarios. Digamos que un grupo de tres circuitos lógicos - Alice, Bob y Carol – se pusieron de acuerdo en un valor entre 10 y 15 para alguna variable, pero un cuarto circuito - Dave - asigna a la variable un valor de 237. El sistema podría advertir a toda la red de que los resultados de los cálculos de Dave son sospechosos y se les debe dar poca credibilidad hasta que la nueva información concuerde con todos los elementos del sistema. Así mismo, también puede suceder lo contrario, que la nueva información que reivindica Dave lleve a Alice, Bob y Carol a revisar sus conclusiones iniciales.
De nuevo, funciona la analogía del Sudoku. En este juego a veces se cometen errores. Cuando se identifica uno de ellos es posible que ya se haya propagado a través de todo el rompecabezas. El sistema de Radul resuelve de forma automática todos los errores que se derivan del fallo original.
De momento la red de Radul de circuitos lógicos y células de memoria es una abstracción. Es decir, el investigador ha descrito en su tesis cómo fluye la información a través de un sistema informático, pero aún no ha traducido sus conocimientos teóricos en aplicaciones prácticas. Sin embargo, sus aportaciones podrían servir de base a los programadores para que desarrollen nuevos sistemas de inteligencia artificial, computación paralela o diseño de hardware.
Esta nueva concepción de la programación requiere una reconcepción proporcional de la computación. Tradicionalmente, un sistema de computación está pensado como si tuviera dos partes principales: un circuito lógico y una memoria. El circuito lógico obtiene datos de la memoria, realiza una operación con los datos y devuelve los resultados.
Por el contrario, en el sistema de Radul, los circuitos múltiples y celdas de memoria se organizan en una red grande. Cualquier circuito lógico dado puede intercambiar datos con varias celdas de memoria diferentes, y viceversa, cualquier celda de memoria dada puede intercambiar datos con varios circuitos lógicos diferentes. Sin embargo, el peligro de este diseño es que los circuitos lógicos que almacenan datos en la misma celda de memoria pueden llevar a conclusiones contradictorias. En lugar de trabajar juntos para resolver un problema, los circuitos lógicos podrían terminar superponiendo los datos de cada uno.
Para evitar resultados contrapuestos Radul pensó en que la solución más simple sería elaborar celdas de memoria que no almacenasen datos de forma gradual sino que acumulasen información acerca de esos datos. Un circuito lógico, por ejemplo, podría concluir que el valor de una variable está entre 5 y 15, entonces la celda de memoria registrará que el número cae dentro de ese rango. Otro circuito lógico, con acceso a la misma celda de memoria, podría concluir que el valor de la variable está entre 10 y 20. Ahora, la celda de memoria acotaría el rango de valores entre 10 y 15. Para entenderlo, el investigador compara el funcionamiento de su sistema con un Sudoku: el jugador identifica dos o tres valores candidatos para una plaza del rompecabezas y los anota en una esquina, aguardando el momento en que tenga la información suficiente para anotarlo con seguridad en su cuadrado correspondiente.
Por otra parte, en el prototipo de Radul existen celdas de memoria habilitadas para realizar un seguimiento de la procedencia de los datos, una capacidad, que el investigador considera útil para una amplia gama de aplicaciones. Para explicar esta particularidad de su proyecto, asigna a los circuitos lógicos nombres arbitrarios. Digamos que un grupo de tres circuitos lógicos - Alice, Bob y Carol – se pusieron de acuerdo en un valor entre 10 y 15 para alguna variable, pero un cuarto circuito - Dave - asigna a la variable un valor de 237. El sistema podría advertir a toda la red de que los resultados de los cálculos de Dave son sospechosos y se les debe dar poca credibilidad hasta que la nueva información concuerde con todos los elementos del sistema. Así mismo, también puede suceder lo contrario, que la nueva información que reivindica Dave lleve a Alice, Bob y Carol a revisar sus conclusiones iniciales.
De nuevo, funciona la analogía del Sudoku. En este juego a veces se cometen errores. Cuando se identifica uno de ellos es posible que ya se haya propagado a través de todo el rompecabezas. El sistema de Radul resuelve de forma automática todos los errores que se derivan del fallo original.
De momento la red de Radul de circuitos lógicos y células de memoria es una abstracción. Es decir, el investigador ha descrito en su tesis cómo fluye la información a través de un sistema informático, pero aún no ha traducido sus conocimientos teóricos en aplicaciones prácticas. Sin embargo, sus aportaciones podrían servir de base a los programadores para que desarrollen nuevos sistemas de inteligencia artificial, computación paralela o diseño de hardware.
(Tendencias21)
0 comentarios