Encoder
- Explica el proceso de convertir texto en vectores y de agregar información de posición a los embeddings obtenidos de esa manera.
- El objetivo es generar embeddings que capturen la información semántica del texto de entrada.
1. Embeddings de texto
- Convierte "Hello World" en vectores para generar embeddings.
- Asigna valores arbitrarios a cada token para crear vectores.
2. Codificación posicional
- Suma codificación posicional a los embeddings para agregar información sobre la posición de las palabras.
- Usa vectores fijos para asignar a cada posición un patrón numérico único y consistente.
3. Combinación de codificación posicional y embeddings
- Suma la codificación posicional y los embeddings para crear una nueva matriz que se usará como entrada del encoder.
Self-attention
- Explica la atención, un mecanismo que permite al modelo enfocarse en partes específicas de la entrada.
- Con atención multi-cabeza, puede enfocarse simultáneamente en la información dentro de distintos espacios de representación.
4.1 Definición de matrices
- Define las matrices K, V y Q para cada cabeza de atención.
4.2 Cálculo de claves, consultas y valores
- Calcula las matrices de claves, consultas y valores multiplicando los embeddings de entrada por las matrices de pesos.
4.3 Cálculo de la atención
- Calcula el producto punto entre las consultas y cada vector clave, y divide el resultado por la raíz cuadrada de la dimensión del vector clave.
- Aplica la función softmax para obtener los pesos de atención.
- Multiplica cada vector de valor por los pesos de atención.
Feed-forward layer
- El encoder incluye una red neuronal feed-forward después de la capa de self-attention.
- Esta red usa dos transformaciones lineales y la función de activación ReLU.
5.1 Capa feed-forward básica
- La primera capa lineal expande la dimensión de la entrada y, después de aplicar la función de activación ReLU, la segunda capa lineal reduce la dimensión a la original.
5.2 Combinación de todo el proceso del encoder
- Implementa en código un bloque encoder que incluye atención multi-cabeza y la capa feed-forward.
5.3 Conexiones residuales y normalización de capa
- Las conexiones residuales consisten en sumar la entrada de una capa a su salida, y la normalización de capa es una técnica para normalizar la entrada de la capa.
Opinión de GN⁺
- Este artículo explica matemáticas complejas de forma simplificada para ayudar a entender el modelo transformer desde una perspectiva matemática.
- En particular, ayuda a comprender cómo funcionan el mecanismo de self-attention y la red neuronal feed-forward.
- Muestra cómo técnicas como las conexiones residuales y la normalización de capa contribuyen a la estabilidad y el rendimiento de la red neuronal, ofreciendo ideas sobre cómo resolver problemas de entrenamiento en redes neuronales profundas.
1 comentarios
Opiniones de Hacker News
El "misterio" del transformer es que, en cada capa, en lugar de una secuencia lineal de pesos estáticos y valores, usa 3 matrices distintas obtenidas mediante la multiplicación de pesos aprendidos a partir de la misma entrada, y luego multiplica esas matrices entre sí. Esto permite mucho más procesamiento en paralelo, pero la fórmula de atención es muy limitada porque es estática.
Si quieres un enfoque más seco, formal y conciso, vale la pena consultar "The Transformer Model in Equations" de John Thickstun. Todo cabe en una sola página usando notación matemática estándar.
Al leer el artículo surgen preguntas.
Me gustaría encontrar algún paper o artículo sobre por qué los transformers, aun funcionando simplemente como "predictores del siguiente token", pueden manejar palabras o subwords/tokens que no están en el dataset de entrenamiento.
Los tutoriales de transformers podrían ser los nuevos tutoriales de mónadas. Es un concepto difícil de entender, pero como gran parte de la informática, hay que batallarlo y practicar con ejemplos para comprenderlo.
Conozco algunas de las palabras.
Como alguien que ha escrito una ANN desde cero sin usar TensorFlow, esta explicación me sigue resultando confusa.
Me gusta el sitio web de Quarto. Veo a más usuarios de Python usándolo para publicar.
Me pregunto si en el paso 7 del decodificador debería ser
Z_encoder_decoder = layer_norm(Z_encoder_decoder + Z)en lugar deZ_encoder_decoder = layer_norm(Z_encoder_decoder + Z_self_attention), y si faltalayer_normen el paso 8 del decodificador.Me pregunto si un LLM usa una red neuronal, y qué es exactamente lo que constituye una "neurona". Es decir, si existe alguna estructura de código que sustente a la neurona, o si "simplemente" se trata de matemáticas complejas.