ahassoun's picture
Upload 3018 files
ee6e328
<!--Copyright 2020 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.
-->
# Transformer λͺ¨λΈκ΅°[[the-transformer-model-family]]
2017년에 μ†Œκ°œλœ [κΈ°λ³Έ Transformer](https://arxiv.org/abs/1706.03762) λͺ¨λΈμ€ μžμ—°μ–΄ 처리(NLP) μž‘μ—…μ„ λ„˜μ–΄ μƒˆλ‘­κ³  ν₯미둜운 λͺ¨λΈλ“€μ— μ˜κ°μ„ μ£Όμ—ˆμŠ΅λ‹ˆλ‹€. [λ‹¨λ°±μ§ˆ μ ‘νž˜ ꡬ쑰 예츑](https://huggingface.co/blog/deep-learning-with-proteins), [μΉ˜νƒ€μ˜ 달리기 ν›ˆλ ¨](https://huggingface.co/blog/train-decision-transformers), [μ‹œκ³„μ—΄ 예츑](https://huggingface.co/blog/time-series-transformers) 등을 μœ„ν•œ λ‹€μ–‘ν•œ λͺ¨λΈμ΄ μƒκ²¨λ‚¬μŠ΅λ‹ˆλ‹€. Transformer의 λ³€ν˜•μ΄ λ„ˆλ¬΄ λ§Žμ•„μ„œ, 큰 그림을 λ†“μΉ˜κΈ° μ‰½μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ—¬κΈ° μžˆλŠ” λͺ¨λ“  λͺ¨λΈμ˜ 곡톡점은 κΈ°λ³Έ Trasnformer μ•„ν‚€ν…μ²˜λ₯Ό 기반으둜 ν•œλ‹€λŠ” μ μž…λ‹ˆλ‹€. 일뢀 λͺ¨λΈμ€ 인코더 λ˜λŠ” λ””μ½”λ”λ§Œ μ‚¬μš©ν•˜κ³ , λ‹€λ₯Έ λͺ¨λΈλ“€μ€ 인코더와 디코더λ₯Ό λͺ¨λ‘ μ‚¬μš©ν•˜κΈ°λ„ ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ Transformer λͺ¨λΈκ΅° λ‚΄ μƒμœ„ λ ˆλ²¨μ—μ„œμ˜ 차이점을 λΆ„λ₯˜ν•˜κ³  κ²€ν† ν•˜λ©΄ μœ μš©ν•œ λΆ„λ₯˜ 체계λ₯Ό 얻을 수 있으며, 이전에 접해보지 λͺ»ν•œ Transformer λͺ¨λΈλ“€ λ˜ν•œ μ΄ν•΄ν•˜λŠ” 데 도움이 될 κ²ƒμž…λ‹ˆλ‹€.
κΈ°λ³Έ Transformer λͺ¨λΈμ— μ΅μˆ™ν•˜μ§€ μ•Šκ±°λ‚˜ 볡슡이 ν•„μš”ν•œ 경우, Hugging Face κ°•μ˜μ˜ [νŠΈλžœμŠ€ν¬λ¨ΈλŠ” μ–΄λ–»κ²Œ λ™μž‘ν•˜λ‚˜μš”?](https://huggingface.co/course/chapter1/4?fw=pt) 챕터λ₯Ό ν™•μΈν•˜μ„Έμš”.
<div align="center">
<iframe width="560" height="315" src="https://www.youtube.com/embed/H39Z_720T5s" title="YouTube video player"
frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope;
picture-in-picture" allowfullscreen></iframe>
</div>
## 컴퓨터 λΉ„μ „[[computer-vision]]
<iframe style="border: 1px solid rgba(0, 0, 0, 0.1);" width="1000" height="450" src="https://www.figma.com/embed?embed_host=share&url=https%3A%2F%2Fwww.figma.com%2Ffile%2FacQBpeFBVvrDUlzFlkejoz%2FModelscape-timeline%3Fnode-id%3D0%253A1%26t%3Dm0zJ7m2BQ9oe0WtO-1" allowfullscreen></iframe>
### ν•©μ„±κ³± λ„€νŠΈμ›Œν¬[[convolutional-network]]
[Vision Transformer](https://arxiv.org/abs/2010.11929)κ°€ ν™•μž₯μ„±κ³Ό νš¨μœ¨μ„±μ„ μž…μ¦ν•˜κΈ° μ „κΉŒμ§€ μ˜€λž«λ™μ•ˆ ν•©μ„±κ³± λ„€νŠΈμ›Œν¬(CNN)κ°€ 컴퓨터 λΉ„μ „ μž‘μ—…μ˜ 지배적인 νŒ¨λŸ¬λ‹€μž„μ΄μ—ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸΌμ—λ„ λΆˆκ΅¬ν•˜κ³ , 이동 λΆˆλ³€μ„±(translation invariance)κ³Ό 같은 CNN의 μš°μˆ˜ν•œ 뢀뢄이 λ„λ“œλΌμ§€κΈ° λ•Œλ¬Έμ— λͺ‡λͺ‡ (특히 νŠΉμ • κ³Όμ—…μ—μ„œμ˜) Transformer λͺ¨λΈμ€ μ•„ν‚€ν…μ²˜μ— 합성곱을 ν†΅ν•©ν•˜κΈ°λ„ ν–ˆμŠ΅λ‹ˆλ‹€. [ConvNeXt](model_doc/convnext)λŠ” 이런 κ΄€λ‘€λ₯Ό 뒀집어 CNN을 ν˜„λŒ€ν™”ν•˜κΈ° μœ„ν•΄ Transformer의 λ””μžμΈμ„ μ°¨μš©ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€λ©΄ ConvNeXtλŠ” κ²ΉμΉ˜μ§€ μ•ŠλŠ” μŠ¬λΌμ΄λ”© μ°½(sliding window)을 μ‚¬μš©ν•˜μ—¬ 이미지λ₯Ό νŒ¨μΉ˜ν™”ν•˜κ³ , 더 큰 μ»€λ„λ‘œ μ „μ—­ 수용 ν•„λ“œ(global receptive field)λ₯Ό ν™•μž₯μ‹œν‚΅λ‹ˆλ‹€. ConvNeXtλŠ” λ˜ν•œ λ©”λͺ¨λ¦¬ νš¨μœ¨μ„ 높이고 μ„±λŠ₯을 ν–₯μƒμ‹œν‚€κΈ° μœ„ν•΄ μ—¬λŸ¬ λ ˆμ΄μ–΄ 섀계λ₯Ό μ„ νƒν•˜κΈ° λ•Œλ¬Έμ— Transformer와 κ²¬μ€„λ§Œν•©λ‹ˆλ‹€!
### 인코더[[cv-encoder]]
[Vision Transformer(ViT)](model_doc/vit)λŠ” ν•©μ„±κ³± μ—†λŠ” 컴퓨터 λΉ„μ „ μž‘μ—…μ˜ 막을 μ—΄μ—ˆμŠ΅λ‹ˆλ‹€. ViTλŠ” ν‘œμ€€ Transformer 인코더λ₯Ό μ‚¬μš©ν•˜μ§€λ§Œ, κ°€μž₯ 큰 ν˜μ‹ μ€ 이미지λ₯Ό μ²˜λ¦¬ν•˜λŠ” λ°©μ‹μ΄μ—ˆμŠ΅λ‹ˆλ‹€. λ¬Έμž₯을 ν† ν°μœΌλ‘œ λΆ„ν• ν•˜λŠ” κ²ƒμ²˜λŸΌ 이미지λ₯Ό κ³ μ •λœ 크기의 패치둜 λΆ„ν• ν•˜κ³ , 이λ₯Ό μ‚¬μš©ν•˜μ—¬ μž„λ² λ”©μ„ μƒμ„±ν•©λ‹ˆλ‹€. ViTλŠ” Transformer의 효율적인 μ•„ν‚€ν…μ²˜λ₯Ό ν™œμš©ν•˜μ—¬ ν›ˆλ ¨μ— 더 적은 μžμ›μ„ μ‚¬μš©ν•˜λ©΄μ„œλ„ λ‹Ήμ‹œ CNN에 λΉ„κ²¬ν•˜λŠ” κ²°κ³Όλ₯Ό μž…μ¦ν–ˆμŠ΅λ‹ˆλ‹€. 그리고 ViTλ₯Ό 뒀이어 λΆ„ν• (segmentation)κ³Ό 같은 고밀도 λΉ„μ „ μž‘μ—…κ³Ό 탐지 μž‘μ—…λ„ λ‹€λ£° 수 μžˆλŠ” λ‹€λ₯Έ λΉ„μ „ λͺ¨λΈμ΄ λ“±μž₯ν–ˆμŠ΅λ‹ˆλ‹€.
μ΄λŸ¬ν•œ λͺ¨λΈ 쀑 ν•˜λ‚˜κ°€ [Swin](model_doc/swin) Transformerμž…λ‹ˆλ‹€. 이 λͺ¨λΈμ€ μž‘μ€ 크기의 νŒ¨μΉ˜μ—μ„œ 계측적 νŠΉμ§• 맡(CNN πŸ‘€κ³Ό κ°™μ§€λ§Œ ViTμ™€λŠ” 닀름)을 λ§Œλ“€κ³  더 κΉŠμ€ λ ˆμ΄μ–΄μ˜ 인접 νŒ¨μΉ˜μ™€ λ³‘ν•©ν•©λ‹ˆλ‹€. μ–΄ν…μ…˜(Attention)은 지역 μœˆλ„μš° λ‚΄μ—μ„œλ§Œ κ³„μ‚°λ˜λ©°, λͺ¨λΈμ΄ 더 잘 ν•™μŠ΅ν•  수 μžˆλ„λ‘ μ–΄ν…μ…˜ λ ˆμ΄μ–΄ 간에 μœˆλ„μš°λ₯Ό μ΄λ™ν•˜λ©° 연결을 μƒμ„±ν•©λ‹ˆλ‹€. Swin TransformerλŠ” 계측적 νŠΉμ§• 맡을 생성할 수 μžˆμœΌλ―€λ‘œ, λΆ„ν• (segmentation)κ³Ό 탐지와 같은 고밀도 예츑 μž‘μ—…μ— μ ν•©ν•©λ‹ˆλ‹€. [SegFormer](model_doc/segformer) μ—­μ‹œ Transformer 인코더λ₯Ό μ‚¬μš©ν•˜μ—¬ 계측적 νŠΉμ§• 맡을 κ΅¬μΆ•ν•˜μ§€λ§Œ, 상단에 κ°„λ‹¨ν•œ λ‹€μΈ΅ νΌμ…‰νŠΈλ‘ (MLP) 디코더λ₯Ό μΆ”κ°€ν•˜μ—¬ λͺ¨λ“  νŠΉμ§• 맡을 κ²°ν•©ν•˜κ³  μ˜ˆμΈ‘μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.
BeIT와 ViTMAE와 같은 λ‹€λ₯Έ λΉ„μ „ λͺ¨λΈμ€ BERT의 μ‚¬μ „ν›ˆλ ¨ λͺ©ν‘œ(objective)μ—μ„œ μ˜κ°μ„ μ–»μ—ˆμŠ΅λ‹ˆλ‹€. [BeIT](model_doc/beit)λŠ” *λ§ˆμŠ€ν¬λ“œ 이미지 λͺ¨λΈλ§(MIM)*으둜 μ‚¬μ „ν›ˆλ ¨λ˜λ©°, 이미지 νŒ¨μΉ˜λŠ” μž„μ˜λ‘œ λ§ˆμŠ€ν‚Ήλ˜κ³  이미지도 μ‹œκ°μ  ν† ν°μœΌλ‘œ ν† ν°ν™”λ©λ‹ˆλ‹€. BeITλŠ” λ§ˆμŠ€ν‚Ήλœ νŒ¨μΉ˜μ— ν•΄λ‹Ήν•˜λŠ” μ‹œκ°μ  토큰을 μ˜ˆμΈ‘ν•˜λ„λ‘ ν•™μŠ΅λ©λ‹ˆλ‹€. [ViTMAE](model_doc/vitmae)도 λΉ„μŠ·ν•œ μ‚¬μ „ν›ˆλ ¨ λͺ©ν‘œκ°€ μžˆμ§€λ§Œ, μ‹œκ°μ  토큰 λŒ€μ‹  픽셀을 μ˜ˆμΈ‘ν•΄μ•Ό ν•œλ‹€λŠ” 점이 λ‹€λ¦…λ‹ˆλ‹€. νŠΉμ΄ν•œ 점은 이미지 패치의 75%κ°€ λ§ˆμŠ€ν‚Ήλ˜μ–΄ μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€! λ””μ½”λ”λŠ” λ§ˆμŠ€ν‚Ήλœ 토큰과 μΈμ½”λ”©λœ νŒ¨μΉ˜μ—μ„œ 픽셀을 μž¬κ΅¬μ„±ν•©λ‹ˆλ‹€. μ‚¬μ „ν›ˆλ ¨μ΄ λλ‚˜λ©΄ λ””μ½”λ”λŠ” 폐기되고 μΈμ½”λ”λŠ” λ‹€μš΄μŠ€νŠΈλ¦Ό μž‘μ—…μ— μ‚¬μš©ν•  μ€€λΉ„κ°€ λ©λ‹ˆλ‹€.
### 디코더[[cv-decoder]]
λŒ€λΆ€λΆ„μ˜ λΉ„μ „ λͺ¨λΈμ€ 인코더에 μ˜μ‘΄ν•˜μ—¬ 이미지 ν‘œν˜„μ„ ν•™μŠ΅ν•˜κΈ° λ•Œλ¬Έμ— 디코더 μ „μš© λΉ„μ „ λͺ¨λΈμ€ λ“œλ­…λ‹ˆλ‹€. ν•˜μ§€λ§Œ 이미지 생성 λ“±μ˜ μ‚¬λ‘€μ˜ 경우, GPT-2와 같은 ν…μŠ€νŠΈ 생성 λͺ¨λΈμ—μ„œ λ³΄μ•˜λ“―μ΄ 디코더가 κ°€μž₯ μ ν•©ν•©λ‹ˆλ‹€. [ImageGPT](model_doc/imagegpt)λŠ” GPT-2와 λ™μΌν•œ μ•„ν‚€ν…μ²˜λ₯Ό μ‚¬μš©ν•˜μ§€λ§Œ, μ‹œν€€μŠ€μ˜ λ‹€μŒ 토큰을 μ˜ˆμΈ‘ν•˜λŠ” λŒ€μ‹  μ΄λ―Έμ§€μ˜ λ‹€μŒ 픽셀을 μ˜ˆμΈ‘ν•©λ‹ˆλ‹€. ImageGPTλŠ” 이미지 생성 뿐만 μ•„λ‹ˆλΌ 이미지 λΆ„λ₯˜λ₯Ό μœ„ν•΄ λ―Έμ„Έ μ‘°μ •ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
### 인코더-디코더[[cv-encoder-decoder]]
λΉ„μ „ λͺ¨λΈμ€ 일반적으둜 인코더(λ°±λ³ΈμœΌλ‘œλ„ μ•Œλ €μ§)λ₯Ό μ‚¬μš©ν•˜μ—¬ μ€‘μš”ν•œ 이미지 νŠΉμ§•μ„ μΆ”μΆœν•œ ν›„, 이λ₯Ό Transformer λ””μ½”λ”λ‘œ μ „λ‹¬ν•©λ‹ˆλ‹€. [DETR](model_doc/detr)에 μ‚¬μ „ν›ˆλ ¨λœ 백본이 μžˆμ§€λ§Œ, 객체 탐지λ₯Ό μœ„ν•΄ μ™„μ „ν•œ Transformer 인코더-디코더 μ•„ν‚€ν…μ²˜λ„ μ‚¬μš©ν•©λ‹ˆλ‹€. μΈμ½”λ”λŠ” 이미지 ν‘œν˜„μ„ ν•™μŠ΅ν•˜κ³  이λ₯Ό λ””μ½”λ”μ—μ„œ 객체 쿼리(각 객체 μΏΌλ¦¬λŠ” μ΄λ―Έμ§€μ˜ μ˜μ—­ λ˜λŠ” 객체에 쀑점을 두고 ν•™μŠ΅λœ μž„λ² λ”©)와 κ²°ν•©ν•©λ‹ˆλ‹€. DETR은 각 객체 쿼리에 λŒ€ν•œ λ°”μš΄λ”© λ°•μŠ€ μ’Œν‘œμ™€ 클래슀 λ ˆμ΄λΈ”μ„ μ˜ˆμΈ‘ν•©λ‹ˆλ‹€.
## μžμ—°μ–΄μ²˜λ¦¬[[natural-language-processing]]
<iframe style="border: 1px solid rgba(0, 0, 0, 0.1);" width="1000" height="450" src="https://www.figma.com/embed?embed_host=share&url=https%3A%2F%2Fwww.figma.com%2Ffile%2FUhbQAZDlpYW5XEpdFy6GoG%2Fnlp-model-timeline%3Fnode-id%3D0%253A1%26t%3D4mZMr4r1vDEYGJ50-1" allowfullscreen></iframe>
### 인코더[[nlp-encoder]]
[BERT](model_doc/bert)λŠ” 인코더 μ „μš© Transformer둜, λ‹€λ₯Έ 토큰을 보고 μ†Œμœ„ "λΆ€μ • ν–‰μœ„"λ₯Ό 저지λ₯΄λŠ” κ±Έ 막기 μœ„ν•΄ μž…λ ₯μ—μ„œ νŠΉμ • 토큰을 μž„μ˜λ‘œ λ§ˆμŠ€ν‚Ήν•©λ‹ˆλ‹€. μ‚¬μ „ν›ˆλ ¨μ˜ λͺ©ν‘œλŠ” μ»¨ν…μŠ€νŠΈλ₯Ό 기반으둜 λ§ˆμŠ€ν‚Ήλœ 토큰을 μ˜ˆμΈ‘ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 이λ₯Ό 톡해 BERTλŠ” μ™Όμͺ½κ³Ό 였λ₯Έμͺ½ μ»¨ν…μŠ€νŠΈλ₯Ό μΆ©λΆ„νžˆ ν™œμš©ν•˜μ—¬ μž…λ ₯에 λŒ€ν•΄ 더 깊고 ν’λΆ€ν•œ ν‘œν˜„μ„ ν•™μŠ΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ BERT의 μ‚¬μ „ν›ˆλ ¨ μ „λž΅μ—λŠ” μ—¬μ „νžˆ κ°œμ„ μ˜ 여지가 남아 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. [RoBERTa](model_doc/roberta)λŠ” 더 κΈ΄ μ‹œκ°„ λ™μ•ˆ 더 큰 λ°°μΉ˜μ— λŒ€ν•œ ν›ˆλ ¨μ„ ν¬ν•¨ν•˜κ³ , μ „μ²˜λ¦¬ 쀑에 ν•œ 번만 λ§ˆμŠ€ν‚Ήν•˜λŠ” 것이 μ•„λ‹ˆλΌ 각 μ—ν­μ—μ„œ 토큰을 μž„μ˜λ‘œ λ§ˆμŠ€ν‚Ήν•˜κ³ , λ‹€μŒ λ¬Έμž₯ 예츑 λͺ©ν‘œλ₯Ό μ œκ±°ν•˜λŠ” μƒˆλ‘œμš΄ μ‚¬μ „ν›ˆλ ¨ 방식을 λ„μž…ν•¨μœΌλ‘œμ¨ 이λ₯Ό κ°œμ„ ν–ˆμŠ΅λ‹ˆλ‹€.
μ„±λŠ₯ κ°œμ„ μ„ μœ„ν•œ μ „λž΅μœΌλ‘œ λͺ¨λΈ 크기λ₯Ό ν‚€μš°λŠ” 것이 μ§€λ°°μ μž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ 큰 λͺ¨λΈμ„ ν›ˆλ ¨ν•˜λ €λ©΄ 계산 λΉ„μš©μ΄ 많이 λ“­λ‹ˆλ‹€. 계산 λΉ„μš©μ„ μ€„μ΄λŠ” ν•œ 가지 방법은 [DistilBERT](model_doc/distilbert)와 같이 μž‘μ€ λͺ¨λΈμ„ μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. DistilBERTλŠ” μ••μΆ• 기법인 [지식 증λ₯˜(knowledge distillation)](https://arxiv.org/abs/1503.02531)λ₯Ό μ‚¬μš©ν•˜μ—¬, 거의 λͺ¨λ“  μ–Έμ–΄ 이해 λŠ₯λ ₯을 μœ μ§€ν•˜λ©΄μ„œ 더 μž‘μ€ λ²„μ „μ˜ BERTλ₯Ό λ§Œλ“­λ‹ˆλ‹€.
κ·ΈλŸ¬λ‚˜ λŒ€λΆ€λΆ„μ˜ Transformer λͺ¨λΈμ— 더 λ§Žμ€ λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” κ²½ν–₯이 μ΄μ–΄μ‘Œκ³ , 이에 따라 ν›ˆλ ¨ νš¨μœ¨μ„±μ„ κ°œμ„ ν•˜λŠ” 것에 쀑점을 λ‘” μƒˆλ‘œμš΄ λͺ¨λΈμ΄ λ“±μž₯ν–ˆμŠ΅λ‹ˆλ‹€. [ALBERT](model_doc/albert)λŠ” 두 가지 λ°©λ²•μœΌλ‘œ λ§€κ°œλ³€μˆ˜ 수λ₯Ό 쀄여 λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ„ μ€„μ˜€μŠ΅λ‹ˆλ‹€. λ°”λ‘œ 큰 μ–΄νœ˜λ₯Ό 두 개의 μž‘μ€ ν–‰λ ¬λ‘œ λΆ„λ¦¬ν•˜λŠ” 것과 λ ˆμ΄μ–΄κ°€ λ§€κ°œλ³€μˆ˜λ₯Ό κ³΅μœ ν•˜λ„λ‘ ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. [DeBERTa](model_doc/deberta)λŠ” 단어와 κ·Έ μœ„μΉ˜λ₯Ό 두 개의 λ²‘ν„°λ‘œ κ°œλ³„μ μœΌλ‘œ μΈμ½”λ”©ν•˜λŠ” λΆ„λ¦¬λœ(disentangled) μ–΄ν…μ…˜ λ©”μ»€λ‹ˆμ¦˜μ„ μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€. μ–΄ν…μ…˜μ€ 단어와 μœ„μΉ˜ μž„λ² λ”©μ„ ν¬ν•¨ν•˜λŠ” 단일 벑터 λŒ€μ‹  이 λ³„λ„μ˜ λ²‘ν„°μ—μ„œ κ³„μ‚°λ©λ‹ˆλ‹€. [Longformer](model_doc/longformer)λŠ” 특히 μ‹œν€€μŠ€ 길이가 κΈ΄ λ¬Έμ„œλ₯Ό μ²˜λ¦¬ν•  λ•Œ, μ–΄ν…μ…˜μ„ 더 효율적으둜 λ§Œλ“œλŠ” 것에 쀑점을 λ‘μ—ˆμŠ΅λ‹ˆλ‹€. 지역(local) μœˆλ„μš° μ–΄ν…μ…˜(각 토큰 μ£Όλ³€μ˜ κ³ μ •λœ μœˆλ„μš° ν¬κΈ°μ—μ„œλ§Œ κ³„μ‚°λ˜λŠ” μ–΄ν…μ…˜)κ³Ό μ „μ—­(global) μ–΄ν…μ…˜(λΆ„λ₯˜λ₯Ό μœ„ν•΄ `[CLS]`와 같은 νŠΉμ • μž‘μ—… ν† ν°μ—λ§Œ ν•΄λ‹Ή)의 쑰합을 μ‚¬μš©ν•˜μ—¬ 전체(full) μ–΄ν…μ…˜ ν–‰λ ¬ λŒ€μ‹  ν¬μ†Œ(sparse) μ–΄ν…μ…˜ 행렬을 μƒμ„±ν•©λ‹ˆλ‹€.
### 디코더[[nlp-decoder]]
[GPT-2](model_doc/gpt2)λŠ” μ‹œν€€μŠ€μ—μ„œ λ‹€μŒ 단어λ₯Ό μ˜ˆμΈ‘ν•˜λŠ” 디코더 μ „μš© Transformerμž…λ‹ˆλ‹€. 토큰을 였λ₯Έμͺ½μœΌλ‘œ λ§ˆμŠ€ν‚Ήν•˜μ—¬ λͺ¨λΈμ΄ 이전 토큰을 보고 "λΆ€μ • ν–‰μœ„"λ₯Ό ν•˜μ§€ λͺ»ν•˜λ„둝 ν•©λ‹ˆλ‹€. GPT-2λŠ” λ°©λŒ€ν•œ ν…μŠ€νŠΈμ— λŒ€ν•΄ μ‚¬μ „ν›ˆλ ¨ν•˜μ—¬ ν…μŠ€νŠΈκ°€ μΌλΆ€λ§Œ μ •ν™•ν•˜κ±°λ‚˜ 사싀인 κ²½μš°μ—λ„ μƒλ‹Ήνžˆ λŠ₯μˆ™ν•˜κ²Œ ν…μŠ€νŠΈλ₯Ό 생성할 수 있게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ GPT-2λŠ” BERTκ°€ μ‚¬μ „ν›ˆλ ¨μ—μ„œ κ°–λŠ” μ–‘λ°©ν–₯ μ»¨ν…μŠ€νŠΈκ°€ λΆ€μ‘±ν•˜κΈ° λ•Œλ¬Έμ— νŠΉμ • μž‘μ—…μ— μ ν•©ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. [XLNET](model_doc/xlnet)은 μ–‘λ°©ν–₯ ν›ˆλ ¨μ΄ κ°€λŠ₯ν•œ permutation language modeling objective(PLM)λ₯Ό μ‚¬μš©ν•˜μ—¬ BERT와 GPT-2의 μ‚¬μ „ν›ˆλ ¨ λͺ©ν‘œμ— λŒ€ν•œ μž₯점을 ν•¨κ»˜ 가지고 μžˆμŠ΅λ‹ˆλ‹€.
GPT-2 이후, μ–Έμ–΄ λͺ¨λΈμ€ λ”μš± κ±°λŒ€ν•΄μ‘Œκ³  ν˜„μž¬λŠ” *λŒ€κ·œλͺ¨ μ–Έμ–΄ λͺ¨λΈ(LLM)*둜 μ•Œλ €μ Έ μžˆμŠ΅λ‹ˆλ‹€. μΆ©λΆ„νžˆ 큰 데이터 μ„ΈνŠΈλ‘œ μ‚¬μ „ν›ˆλ ¨λœ LLM은 퓨샷(few-shot) λ˜λŠ” μ œλ‘œμƒ·(zero-shot) ν•™μŠ΅μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€. [GPT-J](model_doc/gptj)λŠ” 6B 크기의 λ§€κ°œλ³€μˆ˜κ°€ 있고 400B 크기의 ν† ν°μœΌλ‘œ ν›ˆλ ¨λœ LLMμž…λ‹ˆλ‹€. GPT-J에 이어 디코더 μ „μš© λͺ¨λΈκ΅°μΈ [OPT](model_doc/opt)κ°€ λ“±μž₯ν–ˆμœΌλ©°, 이 쀑 κ°€μž₯ 큰 λͺ¨λΈμ€ 175B 크기이고 180B 크기의 ν† ν°μœΌλ‘œ ν›ˆλ ¨λ˜μ—ˆμŠ΅λ‹ˆλ‹€. [BLOOM](model_doc/bloom)은 λΉ„μŠ·ν•œ μ‹œκΈ°μ— μΆœμ‹œλ˜μ—ˆμœΌλ©°, 이 쀑 κ°€μž₯ 큰 λͺ¨λΈμ€ 176B 크기의 λ§€κ°œλ³€μˆ˜κ°€ 있고 46개의 언어와 13개의 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘œ 된 366B 크기의 ν† ν°μœΌλ‘œ ν›ˆλ ¨λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
### 인코더-디코더[[nlp-encoder-decoder]]
[BART](model_doc/bart)λŠ” κΈ°λ³Έ Transformer μ•„ν‚€ν…μ²˜λ₯Ό μœ μ§€ν•˜μ§€λ§Œ, 일뢀 ν…μŠ€νŠΈ 슀팬(span)이 단일 `마슀크` ν† ν°μœΌλ‘œ λŒ€μ²΄λ˜λŠ” *text infilling* λ³€ν˜•μœΌλ‘œ μ‚¬μ „ν›ˆλ ¨ λͺ©ν‘œλ₯Ό μˆ˜μ •ν•©λ‹ˆλ‹€. λ””μ½”λ”λŠ” λ³€ν˜•λ˜μ§€ μ•Šμ€ 토큰(ν–₯ν›„ 토큰은 λ§ˆμŠ€ν‚Ήλ¨)을 μ˜ˆμΈ‘ν•˜κ³  μΈμ½”λ”μ˜ 은닉 μƒνƒœλ₯Ό μ‚¬μš©ν•˜μ—¬ 이 μž‘μ—…μ„ λ•μŠ΅λ‹ˆλ‹€. [Pegasus](model_doc/pegasus)λŠ” BART와 μœ μ‚¬ν•˜μ§€λ§Œ, PegasusλŠ” ν…μŠ€νŠΈ 슀팬 λŒ€μ‹  전체 λ¬Έμž₯을 λ§ˆμŠ€ν‚Ήν•©λ‹ˆλ‹€. PegasusλŠ” λ§ˆμŠ€ν¬λ“œ μ–Έμ–΄ λͺ¨λΈλ§ 외에도 gap sentence generation(GSG)둜 μ‚¬μ „ν›ˆλ ¨λ©λ‹ˆλ‹€. GSGλŠ” λ¬Έμ„œμ— μ€‘μš”ν•œ λ¬Έμž₯ 전체λ₯Ό λ§ˆμŠ€ν‚Ήν•˜μ—¬ `마슀크` ν† ν°μœΌλ‘œ λŒ€μ²΄ν•˜λŠ” 것을 λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€. λ””μ½”λ”λŠ” 남은 λ¬Έμž₯μ—μ„œ 좜λ ₯을 생성해야 ν•©λ‹ˆλ‹€. [T5](model_doc/t5)λŠ” νŠΉμ • 접두사λ₯Ό μ‚¬μš©ν•˜μ—¬ λͺ¨λ“  NLP μž‘μ—…μ„ ν…μŠ€νŠΈ 투 ν…μŠ€νŠΈ 문제둜 λ³€ν™˜ν•˜λŠ” 더 νŠΉμˆ˜ν•œ λͺ¨λΈμž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 접두사 `Summarize:`은 μš”μ•½ μž‘μ—…μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. T5λŠ” 지도(GLUE 및 SuperGLUE) ν›ˆλ ¨κ³Ό μžκΈ°μ§€λ„ ν›ˆλ ¨(ν† ν°μ˜ 15%λ₯Ό μž„μ˜λ‘œ μƒ˜ν”Œλ§ν•˜μ—¬ 제거)으둜 μ‚¬μ „ν›ˆλ ¨λ©λ‹ˆλ‹€.
## μ˜€λ””μ˜€[[audio]]
<iframe style="border: 1px solid rgba(0, 0, 0, 0.1);" width="1000" height="450" src="https://www.figma.com/embed?embed_host=share&url=https%3A%2F%2Fwww.figma.com%2Ffile%2Fvrchl8jDV9YwNVPWu2W0kK%2Fspeech-and-audio-model-timeline%3Fnode-id%3D0%253A1%26t%3DmM4H8pPMuK23rClL-1" allowfullscreen></iframe>
### 인코더[[audio-encoder]]
[Wav2Vec2](model_doc/wav2vec2)λŠ” Transformer 인코더λ₯Ό μ‚¬μš©ν•˜μ—¬ 원본 μ˜€λ””μ˜€ νŒŒν˜•(raw audio waveform)μ—μ„œ 직접 μŒμ„± ν‘œν˜„μ„ ν•™μŠ΅ν•©λ‹ˆλ‹€. ν—ˆμœ„ μŒμ„± ν‘œν˜„ μ„ΈνŠΈμ—μ„œ μ‹€μ œ μŒμ„± ν‘œν˜„μ„ νŒλ³„ν•˜λŠ” λŒ€μ‘° μž‘μ—…μœΌλ‘œ μ‚¬μ „ν›ˆλ ¨λ©λ‹ˆλ‹€. [HuBERT](model_doc/hubert)λŠ” Wav2Vec2와 μœ μ‚¬ν•˜μ§€λ§Œ ν›ˆλ ¨ 과정이 λ‹€λ¦…λ‹ˆλ‹€. νƒ€κ²Ÿ λ ˆμ΄λΈ”μ΄ μœ μ‚¬ν•œ μ˜€λ””μ˜€ μ„Έκ·Έλ¨ΌνŠΈκ°€ ν΄λŸ¬μŠ€ν„°μ— ν• λ‹Ήλ˜μ–΄ 은닉 λ‹¨μœ„(unit)κ°€ λ˜λŠ” ꡰ집화(clustering) λ‹¨κ³„μ—μ„œ μƒμ„±λ©λ‹ˆλ‹€. 은닉 λ‹¨μœ„λŠ” μ˜ˆμΈ‘μ„ μœ„ν•œ μž„λ² λ”©μ— λ§€ν•‘λ©λ‹ˆλ‹€.
### 인코더-디코더[[audio-encoder-decoder]]
[Speech2Text](model_doc/speech_to_text)λŠ” μžλ™ μŒμ„± 인식(ASR) 및 μŒμ„± λ²ˆμ—­μ„ μœ„ν•΄ κ³ μ•ˆλœ μŒμ„± λͺ¨λΈμž…λ‹ˆλ‹€. 이 λͺ¨λΈμ€ μ˜€λ””μ˜€ νŒŒν˜•μ—μ„œ μΆ”μΆœν•œ log mel-filter bank νŠΉμ§•μ„ μ±„νƒν•˜κ³  μžκΈ°νšŒκ·€ λ°©μ‹μœΌλ‘œ μ‚¬μ „ν›ˆλ ¨ν•˜μ—¬, 전사본 λ˜λŠ” λ²ˆμ—­μ„ λ§Œλ“­λ‹ˆλ‹€. [Whisper](model_doc/whisper)은 ASR λͺ¨λΈμ΄μ§€λ§Œ, λ‹€λ₯Έ λ§Žμ€ μŒμ„± λͺ¨λΈκ³Ό 달리 μ œλ‘œμƒ· μ„±λŠ₯을 μœ„ν•΄ λŒ€λŸ‰μ˜ ✨ λ ˆμ΄λΈ”μ΄ μ§€μ •λœ ✨ μ˜€λ””μ˜€ 전사 데이터에 λŒ€ν•΄ μ‚¬μ „ν›ˆλ ¨λ©λ‹ˆλ‹€. 데이터 μ„ΈνŠΈμ˜ 큰 λ¬ΆμŒμ—λŠ” μ˜μ–΄κ°€ μ•„λ‹Œ 언어도 ν¬ν•¨λ˜μ–΄ μžˆμ–΄μ„œ μžμ›μ΄ 적은 언어에도 Whisperλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ꡬ쑰적으둜, WhisperλŠ” Speech2Text와 μœ μ‚¬ν•©λ‹ˆλ‹€. μ˜€λ””μ˜€ μ‹ ν˜ΈλŠ” 인코더에 μ˜ν•΄ μΈμ½”λ”©λœ log-mel spectrogram으둜 λ³€ν™˜λ©λ‹ˆλ‹€. λ””μ½”λ”λŠ” μΈμ½”λ”μ˜ 은닉 μƒνƒœμ™€ 이전 ν† ν°μœΌλ‘œλΆ€ν„° μžκΈ°νšŒκ·€ λ°©μ‹μœΌλ‘œ 전사λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
## λ©€ν‹°λͺ¨λ‹¬[[multimodal]]
<iframe style="border: 1px solid rgba(0, 0, 0, 0.1);" width="1000" height="450" src="https://www.figma.com/embed?embed_host=share&url=https%3A%2F%2Fwww.figma.com%2Ffile%2FcX125FQHXJS2gxeICiY93p%2Fmultimodal%3Fnode-id%3D0%253A1%26t%3DhPQwdx3HFPWJWnVf-1" allowfullscreen></iframe>
### 인코더[[mm-encoder]]
[VisualBERT](model_doc/visual_bert)λŠ” BERT 이후에 μΆœμ‹œλœ λΉ„μ „ μ–Έμ–΄ μž‘μ—…μ„ μœ„ν•œ λ©€ν‹°λͺ¨λ‹¬ λͺ¨λΈμž…λ‹ˆλ‹€. 이 λͺ¨λΈμ€ BERT와 μ‚¬μ „ν›ˆλ ¨λœ 객체 탐지 μ‹œμŠ€ν…œμ„ κ²°ν•©ν•˜μ—¬ 이미지 νŠΉμ§•μ„ μ‹œκ° μž„λ² λ”©μœΌλ‘œ μΆ”μΆœν•˜κ³ , ν…μŠ€νŠΈ μž„λ² λ”©κ³Ό ν•¨κ»˜ BERT둜 μ „λ‹¬ν•©λ‹ˆλ‹€. VisualBERTλŠ” λ§ˆμŠ€ν‚Ήλ˜μ§€ μ•Šμ€ ν…μŠ€νŠΈμ™€ μ‹œκ° μž„λ² λ”©μ„ 기반으둜 λ§ˆμŠ€ν‚Ήλœ ν…μŠ€νŠΈλ₯Ό μ˜ˆμΈ‘ν•˜κ³ , ν…μŠ€νŠΈκ°€ 이미지와 μΌμΉ˜ν•˜λŠ”μ§€ μ˜ˆμΈ‘ν•΄μ•Ό ν•©λ‹ˆλ‹€. ViTκ°€ 이미지 μž„λ² λ”©μ„ κ΅¬ν•˜λŠ” 방식이 더 쉬웠기 λ•Œλ¬Έμ—, ViTκ°€ μΆœμ‹œλœ ν›„ [ViLT](model_doc/vilt)λŠ” μ•„ν‚€ν…μ²˜μ— ViTλ₯Ό μ±„νƒν–ˆμŠ΅λ‹ˆλ‹€. 이미지 μž„λ² λ”©μ€ ν…μŠ€νŠΈ μž„λ² λ”©κ³Ό ν•¨κ»˜ μ²˜λ¦¬λ©λ‹ˆλ‹€. μ—¬κΈ°μ—μ„œ, ViLTλŠ” 이미지 ν…μŠ€νŠΈ 맀칭, λ§ˆμŠ€ν¬λ“œ μ–Έμ–΄ λͺ¨λΈλ§, 전체 단어 λ§ˆμŠ€ν‚Ήμ„ 톡해 μ‚¬μ „ν›ˆλ ¨λ©λ‹ˆλ‹€.
[CLIP](model_doc/clip)은 λ‹€λ₯Έ μ ‘κ·Ό 방식을 μ‚¬μš©ν•˜μ—¬ (`이미지`, `ν…μŠ€νŠΈ`)의 쌍 μ˜ˆμΈ‘μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€. (`이미지`, `ν…μŠ€νŠΈ`) μŒμ—μ„œμ˜ 이미지와 ν…μŠ€νŠΈ μž„λ² λ”© κ°„μ˜ μœ μ‚¬λ„λ₯Ό μ΅œλŒ€ν™”ν•˜κΈ° μœ„ν•΄ 4μ–΅ 개의 (`이미지`, `ν…μŠ€νŠΈ`) 쌍 데이터 μ„ΈνŠΈμ— λŒ€ν•΄ 이미지 인코더(ViT)와 ν…μŠ€νŠΈ 인코더(Transformer)λ₯Ό ν•¨κ»˜ ν›ˆλ ¨ν•©λ‹ˆλ‹€. μ‚¬μ „ν›ˆλ ¨ ν›„, μžμ—°μ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ 이미지가 주어진 ν…μŠ€νŠΈλ₯Ό μ˜ˆμΈ‘ν•˜κ±°λ‚˜ κ·Έ λ°˜λŒ€λ‘œ μ˜ˆμΈ‘ν•˜λ„λ‘ CLIP에 μ§€μ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€. [OWL-ViT](model_doc/owlvit)λŠ” CLIP을 μ œλ‘œμƒ· 객체 탐지λ₯Ό μœ„ν•œ λ°±λ³Έ(backbone)으둜 μ‚¬μš©ν•˜μ—¬ CLIP 상에 κ΅¬μΆ•λ©λ‹ˆλ‹€. μ‚¬μ „ν›ˆλ ¨ ν›„, 객체 탐지 ν—€λ“œκ°€ μΆ”κ°€λ˜μ–΄ (`클래슀`, `λ°”μš΄λ”© λ°•μŠ€`) μŒμ— λŒ€ν•œ 집합(set) μ˜ˆμΈ‘μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.
### 인코더-디코더[[mm-encoder-decoder]]
κ΄‘ν•™ 문자 인식(OCR)은 이미지λ₯Ό μ΄ν•΄ν•˜κ³  ν…μŠ€νŠΈλ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•΄ λ‹€μ–‘ν•œ ꡬ성 μš”μ†Œλ₯Ό ν•„μš”λ‘œ ν•˜λŠ” 전톡적인 ν…μŠ€νŠΈ 인식 μž‘μ—…μž…λ‹ˆλ‹€. [TrOCR](model_doc/trocr)은 쒅단간(end-to-end) Transformerλ₯Ό μ‚¬μš©ν•˜μ—¬ 이 ν”„λ‘œμ„ΈμŠ€λ₯Ό κ°„μ†Œν™”ν•©λ‹ˆλ‹€. μΈμ½”λ”λŠ” 이미지 이해λ₯Ό μœ„ν•œ ViT λ°©μ‹μ˜ λͺ¨λΈμ΄λ©° 이미지λ₯Ό κ³ μ •λœ 크기의 패치둜 μ²˜λ¦¬ν•©λ‹ˆλ‹€. λ””μ½”λ”λŠ” μΈμ½”λ”μ˜ 은닉 μƒνƒœλ₯Ό λ°›μ•„μ„œ μžκΈ°νšŒκ·€ λ°©μ‹μœΌλ‘œ ν…μŠ€νŠΈλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€. [Donut](model_doc/donut)은 OCR 기반 μ ‘κ·Ό 방식에 μ˜μ‘΄ν•˜μ§€ μ•ŠλŠ” 더 일반적인 μ‹œκ° λ¬Έμ„œ 이해 λͺ¨λΈμž…λ‹ˆλ‹€. 이 λͺ¨λΈμ€ Swin Transformerλ₯Ό μΈμ½”λ”λ‘œ, λ‹€κ΅­μ–΄ BARTλ₯Ό λ””μ½”λ”λ‘œ μ‚¬μš©ν•©λ‹ˆλ‹€. Donut은 이미지와 ν…μŠ€νŠΈ 주석을 기반으둜 λ‹€μŒ 단어λ₯Ό μ˜ˆμΈ‘ν•˜μ—¬ ν…μŠ€νŠΈλ₯Ό 읽도둝 μ‚¬μ „ν›ˆλ ¨λ©λ‹ˆλ‹€. λ””μ½”λ”λŠ” ν”„λ‘¬ν”„νŠΈκ°€ 주어지면 토큰 μ‹œν€€μŠ€λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€. ν”„λ‘¬ν”„νŠΈλŠ” 각 λ‹€μš΄μŠ€νŠΈλ¦Ό μž‘μ—…μ— λŒ€ν•œ 특수 ν† ν°μœΌλ‘œ ν‘œν˜„λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ¬Έμ„œ νŒŒμ‹±(parsing)μ—λŠ” μΈμ½”λ”μ˜ 은닉 μƒνƒœμ™€ κ²°ν•©λ˜μ–΄ λ¬Έμ„œλ₯Ό μ •ν˜• 좜λ ₯ ν˜•μ‹(JSON)으둜 νŒŒμ‹±ν•˜λŠ” 특수 `νŒŒμ‹±` 토큰이 μžˆμŠ΅λ‹ˆλ‹€.
## κ°•ν™” ν•™μŠ΅[[reinforcement-learning]]
<iframe style="border: 1px solid rgba(0, 0, 0, 0.1);" width="1000" height="450" src="https://www.figma.com/embed?embed_host=share&url=https%3A%2F%2Fwww.figma.com%2Ffile%2FiB3Y6RvWYki7ZuKO6tNgZq%2Freinforcement-learning%3Fnode-id%3D0%253A1%26t%3DhPQwdx3HFPWJWnVf-1" allowfullscreen></iframe>
### 디코더[[rl-decoder]]
Decision 및 Trajectory TransformerλŠ” μƒνƒœ(state), 행동(action), 보상(reward)을 μ‹œν€€μŠ€ λͺ¨λΈλ§ 문제둜 ν‘œν˜„ν•©λ‹ˆλ‹€. [Decision Transformer](model_doc/decision_transformer)λŠ” κΈ°λŒ€ 보상(returns-to-go), κ³Όκ±° μƒνƒœ 및 행동을 기반으둜 미래의 μ›ν•˜λŠ” 수읡(return)으둜 μ΄μ–΄μ§€λŠ” 일련의 행동을 μƒμ„±ν•©λ‹ˆλ‹€. λ§ˆμ§€λ§‰ *K* μ‹œκ°„ μŠ€ν…(timestep)에 λŒ€ν•΄, μ„Έ 가지 λͺ¨λ‹¬λ¦¬ν‹°λŠ” 각각 토큰 μž„λ² λ”©μœΌλ‘œ λ³€ν™˜λ˜κ³  GPT와 같은 λͺ¨λΈμ— μ˜ν•΄ μ²˜λ¦¬λ˜μ–΄ 미래의 μ•‘μ…˜ 토큰을 μ˜ˆμΈ‘ν•©λ‹ˆλ‹€. [Trajectory Transformer](model_doc/trajectory_transformer)도 μƒνƒœ, 행동, 보상을 ν† ν°ν™”ν•˜μ—¬ GPT μ•„ν‚€ν…μ²˜λ‘œ μ²˜λ¦¬ν•©λ‹ˆλ‹€. 보상 쑰건에 쀑점을 λ‘” Decision Transformer와 달리 Trajectory TransformerλŠ” λΉ” μ„œμΉ˜(beam search)둜 미래 행동을 μƒμ„±ν•©λ‹ˆλ‹€.