| <!--Copyright 2023 The HuggingFace Team. All rights reserved. | |
| Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with | |
| the License. You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on | |
| an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the | |
| specific language governing permissions and limitations under the License. | |
| 鈿狅笍 Note that this file is in Markdown but contain specific syntax for our doc-builder (similar to MDX) that may not be | |
| rendered properly in your Markdown viewer. | |
| --> | |
| # 驴C贸mo los 馃 Transformers resuelven tareas? | |
| En [Lo que 馃 Transformers puede hacer](task_summary), aprendiste sobre el procesamiento de lenguaje natural (NLP), tareas de voz y audio, visi贸n por computadora y algunas aplicaciones importantes de ellas. Esta p谩gina se centrar谩 en c贸mo los modelos resuelven estas tareas y explicar谩 lo que est谩 sucediendo debajo de la superficie. Hay muchas maneras de resolver una tarea dada, y diferentes modelos pueden implementar ciertas t茅cnicas o incluso abordar la tarea desde un 谩ngulo nuevo, pero para los modelos Transformer, la idea general es la misma. Debido a su arquitectura flexible, la mayor铆a de los modelos son una variante de una estructura de codificador, descodificador o codificador-descodificador. Adem谩s de los modelos Transformer, nuestra biblioteca tambi茅n tiene varias redes neuronales convolucionales (CNNs) modernas, que todav铆a se utilizan hoy en d铆a para tareas de visi贸n por computadora. Tambi茅n explicaremos c贸mo funciona una CNN moderna. | |
| Para explicar c贸mo se resuelven las tareas, caminaremos a trav茅s de lo que sucede dentro del modelo para generar predicciones 煤tiles. | |
| - [Wav2Vec2](https://huggingface.co/docs/transformers/model_doc/wav2vec2) para clasificaci贸n de audio y reconocimiento autom谩tico de habla (ASR) | |
| - [Transformador de Visi贸n (ViT)](https://huggingface.co/docs/transformers/model_doc/vit) y [ConvNeXT](https://huggingface.co/docs/transformers/model_doc/convnext) para clasificaci贸n de im谩genes | |
| - [DETR](https://huggingface.co/docs/transformers/model_doc/detr) para detecci贸n de objetos | |
| - [Mask2Former](https://huggingface.co/docs/transformers/model_doc/mask2former) para segmentaci贸n de imagen | |
| - [GLPN](https://huggingface.co/docs/transformers/model_doc/glpn) para estimaci贸n de profundidad | |
| - [BERT](https://huggingface.co/docs/transformers/model_doc/bert) para tareas de NLP como clasificaci贸n de texto, clasificaci贸n de tokens y preguntas y respuestas que utilizan un codificador | |
| - [GPT2](https://huggingface.co/docs/transformers/model_doc/gpt2) para tareas de NLP como generaci贸n de texto que utilizan un descodificador | |
| - [BART](https://huggingface.co/docs/transformers/model_doc/bart) para tareas de NLP como resumen y traducci贸n que utilizan un codificador-descodificador | |
| <Tip> | |
| Antes de continuar, es bueno tener un conocimiento b谩sico de la arquitectura original del Transformer. Saber c贸mo funcionan los codificadores, decodificadores y la atenci贸n te ayudar谩 a entender c贸mo funcionan los diferentes modelos de Transformer. Si est谩s empezando o necesitas repasar, 隆echa un vistazo a nuestro [curso](https://huggingface.co/course/chapter1/4?fw=pt) para obtener m谩s informaci贸n! | |
| </Tip> | |
| ## Habla y audio | |
| [Wav2Vec2](https://huggingface.co/docs/transformers/model_doc/wav2vec2) es un modelo auto-supervisado preentrenado en datos de habla no etiquetados y ajustado en datos etiquetados para clasificaci贸n de audio y reconocimiento autom谩tico de voz. | |
| <div class="flex justify-center"> | |
| <img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/wav2vec2_architecture.png"/> | |
| </div> | |
| Este modelo tiene cuatro componentes principales: | |
| 1. Un *codificador de caracter铆sticas* toma la forma de onda de audio cruda, la normaliza a media cero y varianza unitaria, y la convierte en una secuencia de vectores de caracter铆sticas, cada uno de 20 ms de duraci贸n. | |
| 2. Las formas de onda son continuas por naturaleza, por lo que no se pueden dividir en unidades separadas como una secuencia de texto se puede dividir en palabras. Por eso, los vectores de caracter铆sticas se pasan a un *m贸dulo de cuantificaci贸n*, que tiene como objetivo aprender unidades de habla discretas. La unidad de habla se elige de una colecci贸n de palabras de c贸digo, conocidas como *codebook* (puedes pensar en esto como el vocabulario). Del codebook, se elige el vector o unidad de habla que mejor representa la entrada de audio continua y se env铆a a trav茅s del modelo. | |
| 3. Alrededor de la mitad de los vectores de caracter铆sticas se enmascaran aleatoriamente, y el vector de caracter铆sticas enmascarado se alimenta a una *red de contexto*, que es un codificador Transformer que tambi茅n agrega incrustaciones posicionales relativas. | |
| 4. El objetivo del preentrenamiento de la red de contexto es una *tarea contrastiva*. El modelo tiene que predecir la verdadera representaci贸n de habla cuantizada de la predicci贸n enmascarada a partir de un conjunto de falsas, lo que anima al modelo a encontrar el vector de contexto y la unidad de habla cuantizada m谩s similares (la etiqueta objetivo). | |
| 隆Ahora que wav2vec2 est谩 preentrenado, puedes ajustarlo con tus datos para clasificaci贸n de audio o reconocimiento autom谩tico de voz! | |
| ### Clasificaci贸n de audio | |
| Para usar el modelo preentrenado para la clasificaci贸n de audio, a帽ade una capa de clasificaci贸n de secuencia encima del modelo base de Wav2Vec2. La capa de clasificaci贸n es una capa lineal que acepta los estados ocultos del codificador. Los estados ocultos representan las caracter铆sticas aprendidas de cada fotograma de audio, que pueden tener longitudes variables. Para crear un vector de longitud fija, primero se agrupan los estados ocultos y luego se transforman en logits sobre las etiquetas de clase. La p茅rdida de entrop铆a cruzada se calcula entre los logits y el objetivo para encontrar la clase m谩s probable. | |
| 驴Listo para probar la clasificaci贸n de audio? 隆Consulta nuestra gu铆a completa de [clasificaci贸n de audio](https://huggingface.co/docs/transformers/tasks/audio_classification) para aprender c贸mo ajustar Wav2Vec2 y usarlo para inferencia! | |
| ### Reconocimiento autom谩tico de voz | |
| Para usar el modelo preentrenado para el reconocimiento autom谩tico de voz, a帽ade una capa de modelado del lenguaje encima del modelo base de Wav2Vec2 para [CTC (clasificaci贸n temporal conexista)](glossary#connectionist-temporal-classification-ctc). La capa de modelado del lenguaje es una capa lineal que acepta los estados ocultos del codificador y los transforma en logits. Cada logit representa una clase de token (el n煤mero de tokens proviene del vocabulario de la tarea). La p茅rdida de CTC se calcula entre los logits y los objetivos para encontrar la secuencia de tokens m谩s probable, que luego se decodifican en una transcripci贸n. | |
| 驴Listo para probar el reconocimiento autom谩tico de voz? 隆Consulta nuestra gu铆a completa de [reconocimiento autom谩tico de voz](tasks/asr) para aprender c贸mo ajustar Wav2Vec2 y usarlo para inferencia! | |
| ## Visi贸n por computadora | |
| Hay dos formas de abordar las tareas de visi贸n por computadora: | |
| 1. Dividir una imagen en una secuencia de parches y procesarlos en paralelo con un Transformer. | |
| 2. Utilizar una CNN moderna, como [ConvNeXT](https://huggingface.co/docs/transformers/model_doc/convnext), que se basa en capas convolucionales pero adopta dise帽os de redes modernas. | |
| <Tip> | |
| Un tercer enfoque combina Transformers con convoluciones (por ejemplo, [Convolutional Vision Transformer](https://huggingface.co/docs/transformers/model_doc/cvt) o [LeViT](https://huggingface.co/docs/transformers/model_doc/levit)). No discutiremos estos porque simplemente combinan los dos enfoques que examinamos aqu铆. | |
| </Tip> | |
| ViT y ConvNeXT se utilizan com煤nmente para la clasificaci贸n de im谩genes, pero para otras tareas de visi贸n como la detecci贸n de objetos, la segmentaci贸n y la estimaci贸n de profundidad, veremos DETR, Mask2Former y GLPN, respectivamente; estos modelos son m谩s adecuados para esas tareas. | |
| ### Clasificaci贸n de im谩genes | |
| ViT y ConvNeXT pueden usarse ambos para la clasificaci贸n de im谩genes; la diferencia principal es que ViT utiliza un mecanismo de atenci贸n mientras que ConvNeXT utiliza convoluciones. | |
| #### Transformer | |
| [ViT](https://huggingface.co/docs/transformers/model_doc/vit) reemplaza completamente las convoluciones con una arquitectura de Transformer pura. Si est谩s familiarizado con el Transformer original, entonces ya est谩s en el camino para entender ViT. | |
| <div class="flex justify-center"> | |
| <img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/vit_architecture.jpg"/> | |
| </div> | |
| El cambio principal que introdujo ViT fue en c贸mo se alimentan las im谩genes a un Transformer: | |
| 1. Una imagen se divide en parches cuadrados no superpuestos, cada uno de los cuales se convierte en un vector o *incrustaci贸n de parche*(patch embedding). Las incrustaciones de parche se generan a partir de una capa convolucional 2D que crea las dimensiones de entrada adecuadas (que para un Transformer base son 768 valores para cada incrustaci贸n de parche). Si tuvieras una imagen de 224x224 p铆xeles, podr铆as dividirla en 196 parches de imagen de 16x16. Al igual que el texto se tokeniza en palabras, una imagen se "tokeniza" en una secuencia de parches. | |
| 2. Se agrega una *incrustaci贸n aprendida* - un token especial `[CLS]` - al principio de las incrustaciones del parche, al igual que en BERT. El estado oculto final del token `[CLS]` se utiliza como la entrada para la cabecera de clasificaci贸n adjunta; otras salidas se ignoran. Este token ayuda al modelo a aprender c贸mo codificar una representaci贸n de la imagen. | |
| 3. Lo 煤ltimo que se agrega a las incrustaciones de parche e incrustaciones aprendidas son las *incrustaciones de posici贸n* porque el modelo no sabe c贸mo est谩n ordenados los parches de imagen. Las incrustaciones de posici贸n tambi茅n son aprendibles y tienen el mismo tama帽o que las incrustaciones de parche. Finalmente, todas las incrustaciones se pasan al codificador Transformer. | |
| 4. La salida, espec铆ficamente solo la salida con el token `[CLS]`, se pasa a una cabecera de perceptr贸n multicapa (MLP). El objetivo del preentrenamiento de ViT es simplemente la clasificaci贸n. Al igual que otras cabeceras de clasificaci贸n, la cabecera de MLP convierte la salida en logits sobre las etiquetas de clase y calcula la p茅rdida de entrop铆a cruzada para encontrar la clase m谩s probable. | |
| 驴Listo para probar la clasificaci贸n de im谩genes? 隆Consulta nuestra gu铆a completa de [clasificaci贸n de im谩genes](tasks/image_classification) para aprender c贸mo ajustar ViT y usarlo para inferencia! | |
| #### CNN | |
| <Tip> | |
| Esta secci贸n explica brevemente las convoluciones, pero ser铆a 煤til tener un entendimiento previo de c贸mo cambian la forma y el tama帽o de una imagen. Si no est谩s familiarizado con las convoluciones, 隆echa un vistazo al [cap铆tulo de Redes Neuronales Convolucionales](https://github.com/fastai/fastbook/blob/master/13_convolutions.ipynb) del libro fastai! | |
| </Tip> | |
| [ConvNeXT](https://huggingface.co/docs/transformers/model_doc/convnext) es una arquitectura de CNN que adopta dise帽os de redes nuevas y modernas para mejorar el rendimiento. Sin embargo, las convoluciones siguen siendo el n煤cleo del modelo. Desde una perspectiva de alto nivel, una [convoluci贸n](glossary#convolution) es una operaci贸n donde una matriz m谩s peque帽a (*kernel*) se multiplica por una peque帽a ventana de p铆xeles de la imagen. Esta calcula algunas caracter铆sticas de ella, como una textura particular o la curvatura de una l铆nea. Luego, se desliza hacia la siguiente ventana de p铆xeles; la distancia que recorre la convoluci贸n se conoce como el *stride*. | |
| <div class="flex justify-center"> | |
| <img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/convolution.gif"/> | |
| </div> | |
| <small>Una convoluci贸n b谩sica sin relleno ni paso, tomada de <a href="https://arxiv.org/abs/1603.07285">Una gu铆a para la aritm茅tica de convoluciones para el aprendizaje profundo.</a></small> | |
| Puedes alimentar esta salida a otra capa convolucional, y con cada capa sucesiva, la red aprende cosas m谩s complejas y abstractas como perros calientes o cohetes. Entre capas convolucionales, es com煤n a帽adir una capa de agrupaci贸n para reducir la dimensionalidad y hacer que el modelo sea m谩s robusto a las variaciones de la posici贸n de una caracter铆stica. | |
| <div class="flex justify-center"> | |
| <img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/convnext_architecture.png"/> | |
| </div> | |
| ConvNeXT moderniza una CNN de cinco maneras: | |
| 1. Cambia el n煤mero de bloques en cada etapa y "fragmenta" una imagen con un paso y tama帽o de kernel m谩s grandes. La ventana deslizante no superpuesta hace que esta estrategia de fragmentaci贸n sea similar a c贸mo ViT divide una imagen en parches. | |
| 2. Una capa de *cuello de botella* reduce el n煤mero de canales y luego lo restaura porque es m谩s r谩pido hacer una convoluci贸n de 1x1, y se puede aumentar la profundidad. Un cuello de botella invertido hace lo contrario al expandir el n煤mero de canales y luego reducirlos, lo cual es m谩s eficiente en memoria. | |
| 3. Reemplaza la t铆pica capa convolucional de 3x3 en la capa de cuello de botella con una convoluci贸n *depthwise*, que aplica una convoluci贸n a cada canal de entrada por separado y luego los apila de nuevo al final. Esto ensancha el ancho de la red para mejorar el rendimiento. | |
| 4. ViT tiene un campo receptivo global, lo que significa que puede ver m谩s de una imagen a la vez gracias a su mecanismo de atenci贸n. ConvNeXT intenta replicar este efecto aumentando el tama帽o del kernel a 7x7. | |
| 5. ConvNeXT tambi茅n hace varios cambios en el dise帽o de capas que imitan a los modelos Transformer. Hay menos capas de activaci贸n y normalizaci贸n, la funci贸n de activaci贸n se cambia a GELU en lugar de ReLU, y utiliza LayerNorm en lugar de BatchNorm. | |
| La salida de los bloques convolucionales se pasa a una cabecera de clasificaci贸n que convierte las salidas en logits y calcula la p茅rdida de entrop铆a cruzada para encontrar la etiqueta m谩s probable. | |
| ### Object detection | |
| [DETR](https://huggingface.co/docs/transformers/model_doc/detr), *DEtection TRansformer*, es un modelo de detecci贸n de objetos de un extremo a otro que combina una CNN con un codificador-decodificador Transformer. | |
| <div class="flex justify-center"> | |
| <img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/detr_architecture.png"/> | |
| </div> | |
| 1. Una CNN preentrenada *backbone* toma una imagen, representada por sus valores de p铆xeles, y crea un mapa de caracter铆sticas de baja resoluci贸n de la misma. A continuaci贸n, se aplica una convoluci贸n 1x1 al mapa de caracter铆sticas para reducir la dimensionalidad y se crea un nuevo mapa de caracter铆sticas con una representaci贸n de imagen de alto nivel. Dado que el Transformer es un modelo secuencial, el mapa de caracter铆sticas se aplana en una secuencia de vectores de caracter铆sticas que se combinan con incrustaciones posicionales. | |
| 2. Los vectores de caracter铆sticas se pasan al codificador, que aprende las representaciones de imagen usando sus capas de atenci贸n. A continuaci贸n, los estados ocultos del codificador se combinan con *consultas de objeto* en el decodificador. Las consultas de objeto son incrustaciones aprendidas que se enfocan en las diferentes regiones de una imagen, y se actualizan a medida que avanzan a trav茅s de cada capa de atenci贸n. Los estados ocultos del decodificador se pasan a una red feedforward que predice las coordenadas del cuadro delimitador y la etiqueta de clase para cada consulta de objeto, o `no objeto` si no hay ninguno. | |
| DETR descodifica cada consulta de objeto en paralelo para producir *N* predicciones finales, donde *N* es el n煤mero de consultas. A diferencia de un modelo autoregresivo t铆pico que predice un elemento a la vez, la detecci贸n de objetos es una tarea de predicci贸n de conjuntos (`cuadro delimitador`, `etiqueta de clase`) que hace *N* predicciones en un solo paso. | |
| 3. DETR utiliza una **p茅rdida de coincidencia bipartita** durante el entrenamiento para comparar un n煤mero fijo de predicciones con un conjunto fijo de etiquetas de verdad b谩sica. Si hay menos etiquetas de verdad b谩sica en el conjunto de *N* etiquetas, entonces se rellenan con una clase `no objeto`. Esta funci贸n de p茅rdida fomenta que DETR encuentre una asignaci贸n uno a uno entre las predicciones y las etiquetas de verdad b谩sica. Si los cuadros delimitadores o las etiquetas de clase no son correctos, se incurre en una p茅rdida. Del mismo modo, si DETR predice un objeto que no existe, se penaliza. Esto fomenta que DETR encuentre otros objetos en una imagen en lugar de centrarse en un objeto realmente prominente. | |
| Se a帽ade una cabecera de detecci贸n de objetos encima de DETR para encontrar la etiqueta de clase y las coordenadas del cuadro delimitador. Hay dos componentes en la cabecera de detecci贸n de objetos: una capa lineal para transformar los estados ocultos del decodificador en logits sobre las etiquetas de clase, y una MLP para predecir el cuadro delimitador. | |
| 驴Listo para probar la detecci贸n de objetos? 隆Consulta nuestra gu铆a completa de [detecci贸n de objetos](https://huggingface.co/docs/transformers/tasks/object_detection) para aprender c贸mo ajustar DETR y usarlo para inferencia! | |
| ### Segmentaci贸n de im谩genes | |
| [Mask2Former](https://huggingface.co/docs/transformers/model_doc/mask2former) es una arquitectura universal para resolver todos los tipos de tareas de segmentaci贸n de im谩genes. Los modelos de segmentaci贸n tradicionales suelen estar adaptados a una tarea particular de segmentaci贸n de im谩genes, como la segmentaci贸n de instancias, sem谩ntica o pan贸ptica. Mask2Former enmarca cada una de esas tareas como un problema de *clasificaci贸n de m谩scaras*. La clasificaci贸n de m谩scaras agrupa p铆xeles en *N* segmentos, y predice *N* m谩scaras y su etiqueta de clase correspondiente para una imagen dada. Explicaremos c贸mo funciona Mask2Former en esta secci贸n, y luego podr谩s probar el ajuste fino de SegFormer al final. | |
| <div class="flex justify-center"> | |
| <img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/mask2former_architecture.png"/> | |
| </div> | |
| Hay tres componentes principales en Mask2Former: | |
| 1. Un [backbone Swin](https://huggingface.co/docs/transformers/model_doc/swin) acepta una imagen y crea un mapa de caracter铆sticas de imagen de baja resoluci贸n a partir de 3 convoluciones consecutivas de 3x3. | |
| 2. El mapa de caracter铆sticas se pasa a un *decodificador de p铆xeles* que aumenta gradualmente las caracter铆sticas de baja resoluci贸n en incrustaciones de alta resoluci贸n por p铆xel. De hecho, el decodificador de p铆xeles genera caracter铆sticas multiescala (contiene caracter铆sticas de baja y alta resoluci贸n) con resoluciones de 1/32, 1/16 y 1/8 de la imagen original. | |
| 3. Cada uno de estos mapas de caracter铆sticas de diferentes escalas se alimenta sucesivamente a una capa decodificadora Transformer a la vez para capturar objetos peque帽os de las caracter铆sticas de alta resoluci贸n. La clave de Mask2Former es el mecanismo de *atenci贸n enmascarada* en el decodificador. A diferencia de la atenci贸n cruzada que puede atender a toda la imagen, la atenci贸n enmascarada solo se centra en cierta 谩rea de la imagen. Esto es m谩s r谩pido y conduce a un mejor rendimiento porque las caracter铆sticas locales de una imagen son suficientes para que el modelo aprenda. | |
| 4. Al igual que [DETR](tasks_explained#object-detection), Mask2Former tambi茅n utiliza consultas de objetos aprendidas y las combina con las caracter铆sticas de la imagen del decodificador de p铆xeles para hacer una predicci贸n de conjunto (`etiqueta de clase`, `predicci贸n de m谩scara`). Los estados ocultos del decodificador se pasan a una capa lineal y se transforman en logits sobre las etiquetas de clase. Se calcula la p茅rdida de entrop铆a cruzada entre los logits y la etiqueta de clase para encontrar la m谩s probable. | |
| Las predicciones de m谩scara se generan combinando las incrustaciones de p铆xeles con los estados ocultos finales del decodificador. La p茅rdida de entrop铆a cruzada sigmoidea y de la p茅rdida DICE se calcula entre los logits y la m谩scara de verdad b谩sica para encontrar la m谩scara m谩s probable. | |
| 驴Listo para probar la detecci贸n de objetos? 隆Consulta nuestra gu铆a completa de [segmentaci贸n de im谩genes](https://huggingface.co/docs/transformers/tasks/semantic_segmentation) para aprender c贸mo ajustar SegFormer y usarlo para inferencia! | |
| ### Estimaci贸n de profundidad | |
| [GLPN](https://huggingface.co/docs/transformers/model_doc/glpn), *Global-Local Path Network*, es un Transformer para la estimaci贸n de profundidad que combina un codificador [SegFormer](https://huggingface.co/docs/transformers/model_doc/segformer) con un decodificador ligero. | |
| <div class="flex justify-center"> | |
| <img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/glpn_architecture.jpg"/> | |
| </div> | |
| 1. Al igual que ViT, una imagen se divide en una secuencia de parches, excepto que estos parches de imagen son m谩s peque帽os. Esto es mejor para tareas de predicci贸n densa como la segmentaci贸n o la estimaci贸n de profundidad. Los parches de imagen se transforman en incrustaciones de parches (ver la secci贸n de [clasificaci贸n de im谩genes](#clasificaci贸n-de-im谩genes) para m谩s detalles sobre c贸mo se crean las incrustaciones de parches), que se alimentan al codificador. | |
| 2. El codificador acepta las incrustaciones de parches y las pasa a trav茅s de varios bloques codificadores. Cada bloque consiste en capas de atenci贸n y Mix-FFN. El prop贸sito de este 煤ltimo es proporcionar informaci贸n posicional. Al final de cada bloque codificador hay una capa de *fusi贸n de parches* para crear representaciones jer谩rquicas. Las caracter铆sticas de cada grupo de parches vecinos se concatenan, y se aplica una capa lineal a las caracter铆sticas concatenadas para reducir el n煤mero de parches a una resoluci贸n de 1/4. Esto se convierte en la entrada al siguiente bloque codificador, donde se repite todo este proceso hasta que tengas caracter铆sticas de imagen con resoluciones de 1/8, 1/16 y 1/32. | |
| 3. Un decodificador ligero toma el 煤ltimo mapa de caracter铆sticas (escala 1/32) del codificador y lo aumenta a una escala de 1/16. A partir de aqu铆, la caracter铆stica se pasa a un m贸dulo de *Fusi贸n Selectiva de Caracter铆sticas (SFF)*, que selecciona y combina caracter铆sticas locales y globales de un mapa de atenci贸n para cada caracter铆stica y luego la aumenta a 1/8. Este proceso se repite hasta que las caracter铆sticas decodificadas sean del mismo tama帽o que la imagen original. La salida se pasa a trav茅s de dos capas de convoluci贸n y luego se aplica una activaci贸n sigmoide para predecir la profundidad de cada p铆xel. | |
| ## Procesamiento del lenguaje natural | |
| El Transformer fue dise帽ado inicialmente para la traducci贸n autom谩tica, y desde entonces, pr谩cticamente se ha convertido en la arquitectura predeterminada para resolver todas las tareas de procesamiento del lenguaje natural (NLP, por sus siglas en ingl茅s). Algunas tareas se prestan a la estructura del codificador del Transformer, mientras que otras son m谩s adecuadas para el decodificador. Todav铆a hay otras tareas que hacen uso de la estructura codificador-decodificador del Transformer. | |
| ### Clasificaci贸n de texto | |
| [BERT](https://huggingface.co/docs/transformers/model_doc/bert) es un modelo que solo tiene codificador y es el primer modelo en implementar efectivamente la bidireccionalidad profunda para aprender representaciones m谩s ricas del texto al atender a las palabras en ambos lados. | |
| 1. BERT utiliza la tokenizaci贸n [WordPiece](https://huggingface.co/docs/transformers/tokenizer_summary#wordpiece) para generar una incrustaci贸n de tokens del texto. Para diferenciar entre una sola oraci贸n y un par de oraciones, se agrega un token especial `[SEP]` para diferenciarlos. Tambi茅n se agrega un token especial `[CLS]` al principio de cada secuencia de texto. La salida final con el token `[CLS]` se utiliza como la entrada a la cabeza de clasificaci贸n para tareas de clasificaci贸n. BERT tambi茅n agrega una incrustaci贸n de segmento para indicar si un token pertenece a la primera o segunda oraci贸n en un par de oraciones. | |
| 2. BERT se preentrena con dos objetivos: modelar el lenguaje enmascarado y predecir de pr贸xima oraci贸n. En el modelado de lenguaje enmascarado, un cierto porcentaje de los tokens de entrada se enmascaran aleatoriamente, y el modelo necesita predecir estos. Esto resuelve el problema de la bidireccionalidad, donde el modelo podr铆a hacer trampa y ver todas las palabras y "predecir" la siguiente palabra. Los estados ocultos finales de los tokens de m谩scara predichos se pasan a una red feedforward con una softmax sobre el vocabulario para predecir la palabra enmascarada. | |
| El segundo objetivo de preentrenamiento es la predicci贸n de pr贸xima oraci贸n. El modelo debe predecir si la oraci贸n B sigue a la oraci贸n A. La mitad del tiempo, la oraci贸n B es la siguiente oraci贸n, y la otra mitad del tiempo, la oraci贸n B es una oraci贸n aleatoria. La predicci贸n, ya sea que sea la pr贸xima oraci贸n o no, se pasa a una red feedforward con una softmax sobre las dos clases (`EsSiguiente` y `NoSiguiente`). | |
| 3. Las incrustaciones de entrada se pasan a trav茅s de m煤ltiples capas codificadoras para producir algunos estados ocultos finales. | |
| Para usar el modelo preentrenado para clasificaci贸n de texto, se a帽ade una cabecera de clasificaci贸n de secuencia encima del modelo base de BERT. La cabecera de clasificaci贸n de secuencia es una capa lineal que acepta los estados ocultos finales y realiza una transformaci贸n lineal para convertirlos en logits. Se calcula la p茅rdida de entrop铆a cruzada entre los logits y el objetivo para encontrar la etiqueta m谩s probable. | |
| 驴Listo para probar la clasificaci贸n de texto? 隆Consulta nuestra gu铆a completa de [clasificaci贸n de texto](https://huggingface.co/docs/transformers/tasks/sequence_classification) para aprender c贸mo ajustar DistilBERT y usarlo para inferencia! | |
| ### Clasificaci贸n de tokens | |
| Para usar BERT en tareas de clasificaci贸n de tokens como el reconocimiento de entidades nombradas (NER), a帽ade una cabecera de clasificaci贸n de tokens encima del modelo base de BERT. La cabecera de clasificaci贸n de tokens es una capa lineal que acepta los estados ocultos finales y realiza una transformaci贸n lineal para convertirlos en logits. Se calcula la p茅rdida de entrop铆a cruzada entre los logits y cada token para encontrar la etiqueta m谩s probable. | |
| 驴Listo para probar la clasificaci贸n de tokens? 隆Consulta nuestra gu铆a completa de [clasificaci贸n de tokens](https://huggingface.co/docs/transformers/tasks/token_classification) para aprender c贸mo ajustar DistilBERT y usarlo para inferencia! | |
| ### Respuesta a preguntas | |
| Para usar BERT en la respuesta a preguntas, a帽ade una cabecera de clasificaci贸n de span encima del modelo base de BERT. Esta capa lineal acepta los estados ocultos finales y realiza una transformaci贸n lineal para calcular los logits de inicio y fin del `span` correspondiente a la respuesta. Se calcula la p茅rdida de entrop铆a cruzada entre los logits y la posici贸n de la etiqueta para encontrar el span m谩s probable de texto correspondiente a la respuesta. | |
| 驴Listo para probar la respuesta a preguntas? 隆Consulta nuestra gu铆a completa de [respuesta a preguntas](tasks/question_answering) para aprender c贸mo ajustar DistilBERT y usarlo para inferencia! | |
| <Tip> | |
| 馃挕 隆Observa lo f谩cil que es usar BERT para diferentes tareas una vez que ha sido preentrenado! 隆Solo necesitas a帽adir una cabecera espec铆fica al modelo preentrenado para manipular los estados ocultos en tu salida deseada! | |
| </Tip> | |
| ### Generaci贸n de texto | |
| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2) es un modelo que solo tiene decodificador y se preentrena en una gran cantidad de texto. Puede generar texto convincente (隆aunque no siempre verdadero!) dado un est铆mulo y completar otras tareas de procesamiento del lenguaje natural como responder preguntas, a pesar de no haber sido entrenado expl铆citamente para ello. | |
| <div class="flex justify-center"> | |
| <img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/gpt2_architecture.png"/> | |
| </div> | |
| 1. GPT-2 utiliza [codificaci贸n de pares de bytes (BPE)](https://huggingface.co/docs/transformers/tokenizer_summary#bytepair-encoding-bpe) para tokenizar palabras y generar una incrustaci贸n de token. Se a帽aden incrustaciones posicionales a las incrustaciones de token para indicar la posici贸n de cada token en la secuencia. Las incrustaciones de entrada se pasan a trav茅s de varios bloques decodificadores para producir alg煤n estado oculto final. Dentro de cada bloque decodificador, GPT-2 utiliza una capa de *autoatenci贸n enmascarada*, lo que significa que GPT-2 no puede atender a los tokens futuros. Solo puede atender a los tokens a la izquierda. Esto es diferente al token [`mask`] de BERT porque, en la autoatenci贸n enmascarada, se utiliza una m谩scara de atenci贸n para establecer la puntuaci贸n en `0` para los tokens futuros. | |
| 2. La salida del decodificador se pasa a una cabecera de modelado de lenguaje, que realiza una transformaci贸n lineal para convertir los estados ocultos en logits. La etiqueta es el siguiente token en la secuencia, que se crea desplazando los logits a la derecha en uno. Se calcula la p茅rdida de entrop铆a cruzada entre los logits desplazados y las etiquetas para obtener el siguiente token m谩s probable. | |
| El objetivo del preentrenamiento de GPT-2 se basa completamente en el [modelado de lenguaje causal](glossary#causal-language-modeling), prediciendo la siguiente palabra en una secuencia. Esto hace que GPT-2 sea especialmente bueno en tareas que implican la generaci贸n de texto. | |
| 驴Listo para probar la generaci贸n de texto? 隆Consulta nuestra gu铆a completa de [modelado de lenguaje causal](tasks/language_modeling#modelado-de-lenguaje-causal) para aprender c贸mo ajustar DistilGPT-2 y usarlo para inferencia! | |
| <Tip> | |
| Para obtener m谩s informaci贸n sobre la generaci贸n de texto, 隆consulta la gu铆a de [estrategias de generaci贸n de texto](https://huggingface.co/docs/transformers/generation_strategies)! | |
| </Tip> | |
| ### Resumir | |
| Los modelos codificador-decodificador como [BART](https://huggingface.co/docs/transformers/model_doc/bart) y [T5](https://huggingface.co/docs/transformers/model_doc/t5) est谩n dise帽ados para el patr贸n de secuencia a secuencia de una tarea de resumen. Explicaremos c贸mo funciona BART en esta secci贸n, y luego podr谩s probar el ajuste fino de T5 al final. | |
| <div class="flex justify-center"> | |
| <img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bart_architecture.png"/> | |
| </div> | |
| 1. La arquitectura del codificador de BART es muy similar a la de BERT y acepta una incrustaci贸n de token y posicional del texto. BART se preentrena corrompiendo la entrada y luego reconstruy茅ndola con el decodificador. A diferencia de otros codificadores con estrategias espec铆ficas de corrupci贸n, BART puede aplicar cualquier tipo de corrupci贸n. Sin embargo, la estrategia de corrupci贸n de *relleno de texto* funciona mejor. En el relleno de texto, varios fragmentos de texto se reemplazan con un **煤nico** token [`mask`]. Esto es importante porque el modelo tiene que predecir los tokens enmascarados, y le ense帽a al modelo a predecir la cantidad de tokens faltantes. Las incrustaciones de entrada y los fragmentos enmascarados se pasan a trav茅s del codificador para producir algunos estados ocultos finales, pero a diferencia de BERT, BART no a帽ade una red feedforward final al final para predecir una palabra. | |
| 2. La salida del codificador se pasa al decodificador, que debe predecir los tokens enmascarados y cualquier token no corrompido de la salida del codificador. Esto proporciona un contexto adicional para ayudar al decodificador a restaurar el texto original. La salida del decodificador se pasa a una cabeza de modelado de lenguaje, que realiza una transformaci贸n lineal para convertir los estados ocultos en logits. Se calcula la p茅rdida de entrop铆a cruzada entre los logits y la etiqueta, que es simplemente el token desplazado hacia la derecha. | |
| 驴Listo para probar la sumarizaci贸n? 隆Consulta nuestra gu铆a completa de [Generaci贸n de res煤menes](tasks/summarization) para aprender c贸mo ajustar T5 y usarlo para inferencia! | |
| <Tip> | |
| Para obtener m谩s informaci贸n sobre la generaci贸n de texto, 隆consulta la gu铆a de [estrategias de generaci贸n de texto](https://huggingface.co/docs/transformers/generation_strategies)! | |
| </Tip> | |
| ### Traducci贸n | |
| La traducci贸n es otro ejemplo de una tarea de secuencia a secuencia, lo que significa que puedes usar un modelo codificador-decodificador como [BART](https://huggingface.co/docs/transformers/model_doc/bart) o [T5](https://huggingface.co/docs/transformers/model_doc/t5) para hacerlo. Explicaremos c贸mo funciona BART en esta secci贸n, y luego podr谩s probar el ajuste fino de T5 al final. | |
| BART se adapta a la traducci贸n a帽adiendo un codificador separado inicializado aleatoriamente para mapear un idioma fuente a una entrada que pueda ser decodificada en el idioma objetivo. Las incrustaciones de este nuevo codificador se pasan al codificador preentrenado en lugar de las incrustaciones de palabras originales. El codificador de origen se entrena actualizando el codificador de origen, las incrustaciones posicionales y las incrustaciones de entrada con la p茅rdida de entrop铆a cruzada de la salida del modelo. Los par谩metros del modelo est谩n congelados en este primer paso, y todos los par谩metros del modelo se entrenan juntos en el segundo paso. | |
| Desde entonces, BART ha sido seguido por una versi贸n multiling眉e, mBART, destinada a la traducci贸n y preentrenada en muchos idiomas diferentes. | |
| 驴Listo para probar la traducci贸n? 隆Consulta nuestra gu铆a completa de [traducci贸n](https://huggingface.co/docs/transformers/tasks/translation) para aprender c贸mo ajustar T5 y usarlo para inferencia! | |
| <Tip> | |
| Para obtener m谩s informaci贸n sobre la generaci贸n de texto, 隆consulta la gu铆a de [estrategias de generaci贸n de texto](https://huggingface.co/docs/transformers/generation_strategies)! | |
| </Tip> |