6 minutos de lectura
25/06/2017
¿Qué son las redes neuronales de traducción automática?
El proceso de traducción de una lengua a otra no es un proceso sencillo. Los profesionales de la traducción e interpretación requieren años de estudio para manejar a la perfección una lengua y poder realizar traducciones simultáneas. Crear un sistema computacional que lleve a cabo este proceso de forma automática es un reto, ya que cada idioma depende no solo de su vocabulario, sino también de normas y reglas que hay que procesar. Pero son las redes neuronales de traducción automática las que parecen haber dado con la clave para poder traducir estructuras inteligentemente más allá de un grupo de palabras, imitando las estructuras sintácticas y gramaticales entre idiomas no relacionados entre sí.
Evolución de la traducción automática
La traducción automática es un campo computacional que investiga el uso de herramientas de software para traducir texto o lenguaje hablado. Al principio, las traducciones se basaban en la sustitución de las palabras atómicas de un idioma a otro, con poca idea del contexto. Son traducciones mecánicas, "palabra por palabra" que, en la mayoría de ocasiones, no se adecuaban al contexto. Este hecho derivaba en que los sistemas de traducción automática solo funcionasen como herramientas útiles a la hora de traducir vocabulario o entre idiomas de una misma familia y con estructuras similares, pero nunca como una forma de interpretación fidedigna para frases o textos medianamente complejos, en los que se combinan distintos tipos de palabras: sustantivos, adjetivos, adverbios, preposiciones, verbos, etc.
Con la evolución de los programas, han aparecido nuevas herramientas de software que permiten escoger una profesión o un sector concreto sobre el que se desee realizar una traducción. Es posible delimitar mejor los aspectos de sustitución de términos, ya que cada sector suele utilizar determinadas palabras de una forma concreta o aplicada a procesos específicos: palabras polisémicas, expresiones, nomenclaturas, etc. Sería como una traducción de un argot determinado.
Un salto cualitativo en el campo de la traducción
Actualmente, en un mundo cada vez más globalizado, la sociedad muestra un gran interés en el desarrollo de los sistemas de traducción automática. El valor de poder contar con herramientas o dispositivos que permitan traducciones fidedignas de frases y expresiones es vital para que los ciudadanos puedan viajar y comunicarse fluidamente. Para poder llevar esta tarea a cabo, los últimos avances se basan en la utilización de redes neuronales como la mejor forma para automatizar cualquier tipo de proceso que requiera un aprendizaje. Estas redes forman parte del campo de la inteligencia artificial y parecen ofrecer unos resultados mucho mejores que la técnica dominante hasta hace poco, la traducción automática estadística.
En el terreno lingüístico, las redes neuronales de traducción automática están ofreciendo resultados realmente asombrosos.
Computación y redes neuronales
¿En qué consiste este modelo? ¿Puede un ordenador o sistema informático reproducir el proceso de aprendizaje?
El concepto de red neuronal no es realmente complicado y consiste en imitar el funcionamiento de las redes neuronales de organismos vivos. Ahora bien, la creación de esta inteligencia artificial, los pesos y preponderancias de cada uno de los nodos y sus relaciones sí lo es. Hablamos de un conjunto de nexos que trabajan unidos, sin que ninguno tenga asignada una tarea concreta. Para sacar provecho de la forma en la que funcionan las redes neuronales, hay que tener en cuenta que el proceso radica en establecer una serie de parámetros que, combinados, son capaces de arrojar una conclusión o un resultado acertados. Los programas deben ser capaces de aprender profundamente (deep learning) y ajustar su funcionamiento a través del tiempo.
El problema principal no es analizar los parámetros que desean relacionarse, sino cómo establecer la combinación entre los distintos parámetros a la hora de originar una respuesta.
Biología y computación: el germen de las redes neuronales
Si se pidiera a una persona calcular la raíz cuadrada de 7 con varios decimales de precisión y sin la ayuda de ni siquiera un folio y bolígrafo, sería imposible para cualquiera. Una computadora puede realizar este tipo de cálculos matemáticos en un instante y sin equivocarse. Es una tarea extremadamente sencilla en el campo de la computación. Incluso una simple calculadora puede hacerlo.
Cambiando de perspectiva y situando una tarea humana como punto de partida, existen acciones que cualquier persona puede llevar a cabo. Lanzar una moneda al aire o reconocer la diferencia entre un árbol y una planta es un proceso extremadamente sencillo para cualquier humano (al margen de determinadas limitaciones físicas o cognitivas). Sin embargo, para una máquina, cualquiera de estos aspectos resulta realmente complejo. Debe aprender a reconocer patrones, características, diferencias y alcanzar una conclusión.
Una computadora, al contrario que un ser vivo (no solo los humanos), necesita realizar una inmensa cantidad de cálculos y tiempo para procesar parámetros sencillos desde el punto de vista biológico, como:
- Reconocimiento de patrones.
- Clasificación de formas y objetos.
- Control automático de aparatos o dispositivos.
Por poner un ejemplo, los mejores ingenieros dedicados al desarrollo de radares y sistemas de sonar sienten verdadera envidia de un simple murciélago. La capacidad de este mamífero para determinar la velocidad relativa de una presa, su tamaño y la posición de los obstáculos alrededor es todo un milagro desde el punto de vista computacional.
Este tipo de cuestiones es el origen de las redes neuronales y del deep learning (aprendizaje profundo). Este campo estudia la forma de relacionar conceptos y conseguir que las máquinas puedan llevar a cabo procesos de asociación con la misma rapidez que los seres vivos. Para ello, es necesario investigar qué ventajas posee el cerebro a la hora de asociar conceptos que a los ordenadores les resultan tan difíciles de identificar.
Resulta curioso que las redes neuronales son mucho más simples y lentas que una CPU. Además, no son del todo fiables, ya que en los procesos cognitivos, muchas veces, existen puntos de error. Este hecho se ve muy bien a lo largo de los acertijos visuales que se pueden encontrar a lo largo y ancho de Internet. Sin ir más lejos, este "error cognitivo" o esta cortapisa perceptiva se puede ejemplificar cuando se observa un truco de magia. Hasta el más sencillo se aprovecha de los defectos en la capacidad visual para hacer creer que un objeto puede aparecer y desaparecer.
Tipos de redes neuronales
1- Red neuronal recurrente
Consiste en las relaciones de entrada y salida de conceptos. Se basa en un algoritmo, que consta de una entrada X y una salida Y. Estas redes solo pueden aprender relaciones estáticas, en las que se busca establecer un orden de predicción (entrada-salida), lo que da como resultado un escalar, una "predicción de paso". La variable tiempo tiene que ser asumida por la red y, para ello, se aplican dos parámetros:
- Retraso.
- Recurrencia.
2- Red neuronal convolucional
Estas redes trabajan modelando de forma consecutiva pequeñas porciones de información de manera similar a como lo hace el proceso de percepción visual de los humanos.
La información recibida se combina en capas, de forma que, en la primera capa, se detectan los bordes y sus patrones; y, en las capas posteriores, se dividen las formas más simples y se aplican los patrones relacionados con la posición, iluminación, etc. El resultado final o la "predicción" obtenida es una suma ponderada de toda la información manejada y cómo se ha procesado.
Más de medio siglo de investigación
Las redes neuronales no son un campo nuevo, ya que sus inicios se remontan a los años 40 y 50, con la mala fortuna de que no obtuvieron buenos resultados, debido a la cantidad de recursos informáticos necesarios para entrenar y ejecutar una red con buenos resultados. Este era el escenario hace más de medio siglo. Sin embargo, hoy en día, existen sistemas de procesamiento de datos capaces de analizar millones de variables a la vez y sin resentirse.
En los últimos años, se han logrado grandes avances en este campo gracias a la mejora de los sistemas de computación para este tipo de procesos.
Traducción simultánea 2.0
Queda muchísimo camino que recorrer en el desarrollo de las redes neuronales, pero ya hay campos en los que se han conseguido avances significativos. Es el caso de la traducción automática estadística. Conocida en inglés como SMT (Statistical Machine Translation), consiste en plantear la traducción basándose en modelos estadísticos que establecen relaciones entre grupos de palabras. A la hora de que un programa estadístico interprete una frase, tendrá en cuenta las palabras individuales, grupos de ellas, y gracias al modelo de lenguaje aprendido, las distintas partes de la frase, intentando reconstruir las estructuras gramaticales en cada idioma. Pero la traducción automática estadística llegó a su límite cuando intentó traducir entre idiomas no relacionados como los idiomas europeos en general y el japonés o con idiomas morfológicamente ricos pues la casuística de las declinaciones bajaba las estadísticas y la seguridad del sistema o, simplemente, no se encontraba la palabra.
En el caso de la neuronal, las principales redes son
- Tensor Flow
- Open NMT
Open NMT es una fuente abierta que se basa en sistemas de traducción neuronal a través de herramientas matemáticas. Muchas empresas interesadas en las posibilidades que puede ofrecer están colaborando e invirtiendo en su desarrollo.
La fuente está pensada para un uso sencillo y fácilmente extensible a distintos tipos de aplicaciones y dispositivos, manteniendo una alta eficiencia y fiabilidad en las traducciones que ofrece. Las ventajas y características que proporciona son:
- Interfaz de gran versatilidad, que requiere únicamente de una fuente y archivos de destino.
- Optimización de velocidad y memoria para el deep learning de GPUs.
- Un modelo de traductor C++ modificable.
- Las últimas investigaciones en modelos de traducción.
- Extensiones para generar secuencias en tareas de resumen.
- Una comunidad muy activa de desarrolladores, instituciones y empresas.