martes, 19 de octubre de 2010

TurKit permite a los programadores combinar código con la entrada de datos de todo un ejército de trabajadores humanos por Internet

El servicio Mechanical Turk de Amazon lleva proporcionando durante mucho tiempo una fuente de mano de obra barata, en aquellos momentos en que el trabajo es simple para los seres humanos, pero difícil para los ordenadores. Tareas tales como la descripción de una imagen, por ejemplo, se pueden completar a través de Internet por trabajadores humanos a distancia. Los programadores ya utilizan grupos de estos trabajadores, llamados "turkers", para realizar una gran cantidad de tareas al mismo tiempo.

Sin embargo Mechanical Turk no ofrece una forma fácil de que los programadores encargados del desarrollo de nuevas aplicaciones de software puedan combinar y coordinar los esfuerzos de los turkers. En la actualidad, un grupo de científicos informáticos del MIT ha desarrollado un conjunto de herramientas que hace precisamente eso. Bajo el nombre de TurKit, la herramienta permite a los ingenieros de software escribir algoritmos para coordinar a los trabajadores por Internet utilizando el lenguaje de programación JavaScript, y crear potentes aplicaciones que contengan inteligencia humana. El software también se puede depurar como código normal.

"Por lo general, en Javascript, no seríamos capaces de acceder a Mechanical Turk sin llevar a cabo mucho trabajo", explica Greg Little, candidato a doctorado en el Laboratorio de Ciencias Informáticas e Inteligencia Artificial del MIT, y creador de TurKit. "Este es un puente para escribir código capaz de interactuar con los trabajadores de Mechanical Turk, y con el que podremos explorar nuevos métodos de computación humana".

Con TurKit, la intervención humana se almacena en una base de datos. De esta forma, cada vez que el software bajo desarrollo sufra un incidente, los turkers no tienen que volver a empezar desde cero. En su lugar, una vez que el programa ha sido arreglado, pueden continuar por donde lo dejaron. "Si esperamos una hora para que los seres humanos terminen su tarea y a continuación el programa genera un error, lo que no queremos es tener que esperar una hora más sólo para ver si funciona la corrección de errores", señala Little.

TurKit también impide que la entrada humana de datos cambie impredeciblemente durante el proceso de depuración. "Si obtuviese un comportamiento diferente cada vez que ejecuto un programa, nunca podría depurar ese blanco en movimiento", afirma Michael Bernstein, estudiante de doctorado en el MIT, que utiliza TurKit para crear una aplicación de procesamiento de texto llamada Soylent.

Gracias a TurKit, los investigadores ya han logrado crear algoritmos de computación humana lo suficientemente estables como para incorporarlos en el funcionamiento del software. Soylent utiliza grupos de tres a siete turkers para hacer correcciones a la carta y acortar párrafos en Microsoft Word, con un algoritmo llamado Find-Fix-Verify. En la fase Find (búsqueda), los turkers simplemente ponen de relieve los errores sin corregirlos.

Soylent compara los resultados de varios trabajadores para así lograr consistencia, y a continuación envía la salida de datos filtrada a otro grupo de turkers que corrigen los errores. Por último, un tercer grupo chequea las correcciones para mantener la calidad; los resultados de calidad inferior se marcan y Soylent sólo muestra las correcciones examinadas. "Si simplemente asignamos turkers al párrafo, alrededor del 30 por ciento del trabajo que se obtiene es inservible", afirma Bernstein. "Queríamos tratar este hecho como ruido inherente dentro del sistema, garantizando al mismo tiempo la calidad al usuario final".

Otra aplicación de Mechanical Turk, llamada VizWiz, está siendo desarrollada para permitir a los usuarios ciegos identificar objetos, tales como señales de tráfico o los artículos de la despensa, con la ayuda de las cámaras de sus teléfonos inteligentes y turkers videntes. Lo ideal sería que VizWiz trabajase rápidamente, para que los usuarios obtengan resultados cuando más los necesitan. El científico informático Jeffrey Bigham y su equipo de la Universidad de Rochester utilizaron TurKit para crear un algoritmo, llamado quikTurkit, que reduce el tiempo de retraso mediante la creación de filas con grupos de turkers antes de que sean necesarios.

Cuando un usuario activa la cámara de VizWiz, quikTurkit señaliza a los turkers la inminencia de una nueva consulta—bien mediante la contratación de nuevos trabajadores a la carta o mediante el envío de la solicitud a un grupo de ocho turkers que ya se dediquen a responder preguntas con anterioridad. Este primer método devuelve los resultados al usuario en un par de minutos; el último método lo hace en una media de 30 segundos. "Si ejecutamos una costosa aplicación de reconocimiento óptico de caracteres en el teléfono, puede llevarnos ese mismo tiempo obtener una respuesta de todos modos", afirma Bigham "mientras que VizWiz es más inteligente y podría ser más barato".

Tanto Bigham como Bernstein afirman que ven la computación humana como un rico campo para aplicaciones futuras—con herramientas de código abierto tales como TurKit como el mejor medio para la creación de prototipos y su mejora. "Los algoritmos humanos son fundamentalmente diferentes comparados con aquellos a los que estamos acostumbrados, y TurKit nos permite estudiar formas de optimizarlos", asegura Bernstein. "Si empezamos a unir a multitudes humanas con éxito en estos sistemas, podemos producir un producto final más potente, y hacerlo a un bajo coste con alta fiabilidad".

No hay comentarios:

Publicar un comentario