La incrustación se usa comúnmente para ayudar a las computadoras a comprender el lenguaje / texto humano en el campo del procesamiento del lenguaje natural (PNL). Los humanos se comunican con caracteres, palabras y oraciones, pero las computadoras procesan la información a través de números. Podrías ver de manera simplista la incrustación como la traducción de palabras a números, pero hay más que eso.
Digamos que está desarrollando una red neuronal básica. Tiene entradas (palabras) y necesita pasarlas a través de las conexiones y nodos y funciones de activación de la red como señales. Cuando pasa esta información a través de las conexiones, es solo multiplicación. Pero, ¿qué es “gato” multiplicado por un peso (por ejemplo, 0.6)? ¿Cuál es el mapeo de “cat” pasado a una función no lineal? “Gato” como palabra no se puede pasar a través de una red, ya que no tiene sentido realizar operaciones matemáticas en una palabra. Tendremos que convertir necesariamente el término que es donde entra la incrustación. Una definición más precisa sería:
La incrustación es una transformación de valores / escalares discretos a vectores densos de valor real.
- ¿Cuánto le ayudaría la Maestría en Inteligencia Artificial de la Universidad de Edimburgo a conseguir un trabajo en el sector privado como científico de datos?
- ¿Qué tan bien se necesita conocer la codificación para seguir una carrera en inteligencia artificial y trabajar en empresas como Google y Tesla?
- ¿Podría un dispositivo de IA hacer preguntas realmente interesantes y significativas sobre Quora para aumentar el interés de las personas en un tema?
- Si utilizáramos el aprendizaje automático para operar los semáforos y el tráfico de los EE. UU. En las principales ciudades, ¿cuánto mejoraría eso la vida diaria?
- ¿Qué es un robot?
Déjame desglosar eso:
Discreto significa valores distintos, como enteros (0, 1, 2, 3) o palabras (“flor”, “árbol”, “vaca”, “basura”). Estos contienen información muy limitada.
Valor real / continuo significa números reales (pueden tener cualquier número de decimales). Entre valores discretos como 0 y 1 hay un paso, pero hay un número infinito de pasos continuos entre digamos 1.119 y 1.2 que pueden almacenar más información sobre qué tan estrechamente relacionadas están dos cosas.
Un vector aquí es un conjunto de números que describen las características / información sobre la entrada / palabra (por ejemplo, la frecuencia de esa palabra en un texto, la proximidad de la palabra a otras palabras como ‘gato’ y ‘perro’ o ‘gato’ y ‘ peludo ‘, la forma de la palabra, etc.).
Denso significa que la mayoría de las entradas de vector están pobladas. Lo opuesto a denso es escaso, por lo que un vector disperso se vería similar a, por ejemplo, [0,0,0,0,0…., 0,10.51,0.0].
Una palabra como “gato” es discreta, ya que es distinta de cualquier otra palabra, por ejemplo, no hay infinitas palabras entre “gato” y “perro” que gradualmente van entre ellas. Puede usar un vocabulario como el diccionario Webster con 470,000 términos y asignar cada palabra a su índice alfabético para ese vocabulario. Luego, podría pasar valores numéricos discretos a través de la red neuronal, lo que tiene más sentido que las palabras (al menos funciona), pero no es tan útil para las funciones de aprendizaje para usar en predicción o clasificación.
Imagine que tenemos una red que queremos entrenar para que devuelva la misma palabra que enviamos. Por lo tanto, está intentando representar internamente la función y = x. Dado “gato” debería devolver “gato” y dado “perro” debería devolver “perro”. Cuando una señal llega al final de la red, esto es simplificación, dice oh, esto está mal. Bueno, ¿por cuánto está mal? Y le dice a la red que actualice para corregir este error en esta cantidad (a través de la retropropagación). La representación de índice (discreto) de cat puede ser 8000 y dog podría ser 13000. Entonces, digamos que la red envía una señal de 8000 a través y emite 11000, por lo que debe corregir la red por -3000 valores. Eventualmente terminará aproximándose, por lo que y ~ x, pero eso es terrible para valores discretos porque hay muchas palabras cerca de “gato” que no son “gato” – la red pensará que “auto”, siendo el valor 8341, es realmente cerca de “cat”, pero estos valores discretos no tienen nada que ver con las palabras y solo resultan ser su orden alfabético, por lo que termina siendo una red desordenada súper ruidosa, ya que está entrenada para reducir los valores de los errores (como -3000 )
Las incrustaciones de palabras son vectores densos de valor real, por lo que en lugar de representar cada palabra como un entero índice arbitrario, representan cada palabra como un vector de números reales como [101.144, 525.12, 0.632, 46.41, …]. Estos números intentan representar la palabra en varios espectros, por ejemplo, 0.632 puede relacionarse con la vejez / novedad, por lo que la palabra “cachorro” tendría valores muy similares a “perro” en la mayoría de los otros espectros, pero muy diferentes en los valores que representan vejez / novedad. Al usar la incrustación, tenemos muchas dimensiones diferentes de similitud o comparaciones almacenadas en vectores de valor real, así como una función espacial continua que corresponde a eso para que nuestra red neuronal pueda aprender mucho más que si estuviera usando valores discretos.
En realidad, no sería capaz de precisar que 0.632 representa qué tan viejo / nuevo es algo. Las incrustaciones de palabras son, para cada palabra, un vector de alta dimensión (como números 100, 200 o 300). Realmente no sabes a qué característica (como vejez / novedad) corresponde cada dimensión. Es solo aprendido por la red. Y hay muchas características / espectros continuos que la red puede aprender para los cuales ni siquiera tenemos palabras y esas características pueden terminar siendo mejores predicciones que cualquier etiqueta humana. Al igual que no podemos ver fácilmente un espectro entre las palabras “tazón”, “reina”, “zapatilla deportiva” y “manzana”, pero el aprendizaje automático puede.
El éxito del aprendizaje profundo, por qué incluso lo usamos, se debe a que tiene esta propiedad de poder crear funciones sin ningún aporte o conocimiento humano. Las características no necesitan ser interpretables por los humanos y, de hecho, perdemos una gran cantidad de información latente a través del etiquetado manual. Piense en la etiqueta “perro” vs. 300 espectros de características diferentes que describen perro y su relación con otras palabras. Esto explica por qué cuando intentamos realizar un aprendizaje profundo además de características etiquetadas por humanos, en lugar de datos incrustados sin procesar, podemos tener un rendimiento mucho peor. ¿Cómo podría esperar capturar todo esto en una simple etiqueta ‘perro’?
Foto de Marko Ćipović
Un desafío en la inclusión de palabras es que, al optimizar para modelar las propiedades estadísticas de los datos de entrenamiento, podemos inadvertidamente detectar prejuicios y estereotipos implícitos en los datos. Por ejemplo, en la inserción de word2vec popular entrenada en las noticias de Google, vemos que ha aprendido a asociar al hombre negro más estrechamente con el asaltado y al hombre blanco con derecho. Lea más sobre cómo reducir este problema en este documento: Cuantificación y reducción de los estereotipos en las incorporaciones de palabras (Tolga Bolukbasi, Kai-Wei Chang, James Zou, Venkatesh Saligrama, Adam Kalai, 2016)