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 ha mirado 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 eficaz a través de tensores dispersos, que son tensores con muy pocos elementos distintos de cero. Por ejemplo, si queremos crear un modelo de recomendaciones de películas, podemos asignar un ID único a cada película posible y, luego, representar al usuario como un tensor disperso de las películas que ha mirado, tal 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 corresponde a un usuario y puede ser representado con un tensor disperso, ya que cada usuario solo mira una pequeña fracción de las películas posibles. La última fila corresponde al tensor disperso [1, 3, 999999], con los índices de vocabulario que se muestran más arriba en los íconos de películas.

De igual manera, es posible representar palabras, oraciones y documentos como vectores dispersos, donde cada palabra del vocabulario cumple un papel 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 representas una palabra como un vector de números?

La manera más simple es definir una capa de entrada gigante con un nodo para cada palabra del vocabulario, o al menos un nodo para cada palabra que aparece en los datos. Si aparecen 500,000 palabras únicas en tus datos, puedes representar una palabra con un vector de 500,000 de longitud y asignar cada palabra a una posición en el vector.

Si asignas "caballo" al índice 1247, para incluir "caballo" en 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 de un solo 1, porque solamente un índice tiene un valor distinto de cero.

Por lo general, tu vector contendrá un recuento de las palabras en un fragmento de texto más grande. Esto se conoce como representación de un "grupo de palabras". En un vector de un grupo de palabras, varios de los 500,000 nodos tendrán 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 ponderaciones para una red neuronal. Si tu vocabulario tiene M palabras y hay N nodos en la primera capa de la red por encima de la entrada, tienes MxN ponderaciones para entrenar para esa capa. A su vez, una red con una gran cantidad de ponderaciones causa otros problemas:

  • Cantidad de datos. Cuantas más ponderaciones hay en tu modelo, más datos se necesitan para entrenar de manera eficaz.

  • Cantidad de cómputo. Cuantas más ponderaciones, más cómputo se necesita para entrenar y usar el modelo. Esto puede causar que se supere la capacidad del hardware fácilmente.

Falta de relaciones significativas entre los vectores

Si incluyes los valores de píxeles de los canales RGB en un clasificador de imágenes, tiene sentido hablar sobre valores "cerrados". 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 tiene más proximidad con respecto a un vector con un 1 en el índice 50,430 para "antílope" que 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 para trasladar los vectores dispersos de grandes dimensiones a un espacio de dimensiones bajas preservando las relaciones semánticas. En las siguientes secciones de este módulo, exploraremos las incorporaciones a nivel intuitivo, conceptual y de programación.

Enviar comentarios sobre…

Curso intensivo de aprendizaje automático