Incorporaciones: Datos de entrada categóricos

Los datos categóricos hacen referencia a atributos de entrada que representan uno o más elementos discretos de un conjunto de opciones finito. Por ejemplo, puede ser el conjunto de películas que miró un usuario, el conjunto de palabras de un documento o la ocupación de una persona.

Los datos categóricos se representan de manera más eficiente a través de tensores dispersos, que son tensores con muy pocos elementos distintos de cero. Por ejemplo, si compilamos un modelo de recomendación de películas, podemos asignar un ID único a cada película posible y, luego, representar a cada usuario mediante un tensor disperso de las películas que miraron, como se muestra en la figura 3.

Una entrada de muestra para nuestro problema de recomendación de películas.

Figura 3: Datos para nuestro problema de recomendación de películas.

Cada fila de la matriz en la figura 3 es un ejemplo que captura el historial de visualización de una película de un usuario y se representa como un tensor disperso porque cada usuario solo mira una pequeña fracción de todas las películas posibles. La última fila corresponde al tensor disperso [1, 3, 999999], con los índices de vocabulario que se muestran sobre los íconos de películas.

Del mismo modo, se pueden representar palabras, oraciones y documentos como vectores dispersos en los que cada palabra del vocabulario cumple una función similar a las películas de nuestro ejemplo de recomendación.

Para usar esas representaciones dentro de un sistema de aprendizaje automático, necesitamos una forma de representar cada vector disperso como un vector de números, de manera que los elementos con similitudes semánticas (películas o palabras) tengan distancias similares en el espacio vectorial. Pero ¿cómo se representa una palabra como un vector de números?

La forma más sencilla es definir una capa de entrada gigante con un nodo para cada palabra de tu vocabulario, o al menos un nodo para cada palabra que aparece en tus datos. Si aparecen 500,000 palabras únicas en tus datos, podrías representar una palabra con un vector de 500,000 longitudes y asignar cada palabra a un espacio en el vector.

Si asignas "caballo" al índice 1247, para alimentar "caballo" a tu red, puedes copiar un 1 en el nodo de entrada número 1247 y un 0 en el resto. Este tipo de representación se denomina codificación one-hot porque solo un índice tiene un valor distinto de cero.

Por lo general, tu vector puede contener recuentos de palabras en un fragmento de texto más grande. Esto se conoce como una "bolsa de representación" de palabras. En un vector de un grupo de palabras, varios de los 500,000 nodos tendrían un valor distinto de cero.

Sin embargo, aunque determines los valores distintos de cero, un nodo por palabra proporciona vectores de entrada muy dispersos, es decir, vectores muy grandes con relativamente pocos valores distintos de cero. Las representaciones dispersas tienen algunos problemas que pueden dificultar el aprendizaje eficaz de un modelo.

Tamaño de la red

Los vectores de entrada de gran tamaño significan una enorme cantidad de pesos para una red neuronal. Si hay M palabras en tu vocabulario y N nodos en la primera capa de la red sobre la entrada, tienes MxN ponderaciones para entrenar para esa capa. Una gran cantidad de pesos causa otros problemas:

  • Cantidad de datos. Cuantos más pesos tenga el modelo, más datos necesitarás para entrenar de manera eficaz.

  • Cantidad de cómputo. Cuantos más pesos tenga, más procesamiento se necesitará para entrenar y usar el modelo. Es fácil superar las capacidades de tu hardware.

Falta de relaciones significativas entre los vectores

Si alimentas los valores de píxeles de los canales RGB en un clasificador de imágenes, tiene sentido hablar sobre valores “&close” El azul rojizo está cerca del azul puro, tanto a nivel semántico como en cuanto a la distancia geométrica entre los vectores. Pero un vector con un 1 en el índice 1247 para "caballo" no está más cerca de un vector con un 1 en el índice 50,430 para un "antelope" que para un vector con un 1 en el índice 238 para "televisión".

La solución: incorporaciones

La solución a estos problemas es usar incorporaciones, que traducen vectores dispersos de gran tamaño en un espacio de dimensiones bajas que preserva las relaciones semánticas. En las siguientes secciones de este módulo, exploraremos las incorporaciones de manera intuitiva, conceptual y programática.