# 用語集

この用語集では、一般的な機械学習および🤗 Transformersの用語を定義しており、ドキュメントの理解を深めるのに役立ちます。

## A

### アテンションマスク

attention maskは、シーケンスをバッチ処理する際に使用される任意の引数です。

この引数は、モデルに対してどのトークンに注意を向けるべきか、どのトークンに注意を向けないべきかを指示します。

例えば、次の2つのシーケンスを考えます。

```python
>>> from transformers import BertTokenizer

>>> tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-cased")

>>> sequence_a = "This is a short sequence."
>>> sequence_b = "This is a rather long sequence. It is at least longer than the sequence A."

>>> encoded_sequence_a = tokenizer(sequence_a)["input_ids"]
>>> encoded_sequence_b = tokenizer(sequence_b)["input_ids"]
```

エンコードされたバージョンは長さが異なります:

```python
>>> len(encoded_sequence_a), len(encoded_sequence_b)
(8, 19)
```

そのため、このままでは同じテンソルにまとめることができません。最初のシーケンスを2番目のシーケンスの長さにパディングするか、2番目のシーケンスを最初のシーケンスの長さに切り詰める必要があります。

最初のケースでは、IDのリストがパディングインデックスによって拡張されます。トークナイザーにリストを渡し、次のようにパディングを依頼できます。

```python
>>> padded_sequences = tokenizer([sequence_a, sequence_b], padding=True)
```

最初の文の右側に0が追加され、2番目の文と同じ長さになっていることがわかります。

```python
>>> padded_sequences["input_ids"]
[[101, 1188, 1110, 170, 1603, 4954, 119, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [101, 1188, 1110, 170, 1897, 1263, 4954, 119, 1135, 1110, 1120, 1655, 2039, 1190, 1103, 4954, 138, 119, 102]]
```

その後、これをPyTorchのテンソルに変換できます。アテンションマスクは、パディングされたインデックスの位置を示すバイナリテンソルであり、モデルがそれらにアテンションしないようにします。[BertTokenizer](/docs/transformers/v5.23.0/ja/model_doc/lxmert#transformers.BertTokenizer)では、`1`はアテンションすべき値を示し、`0`はパディングされた値を示します。このアテンションマスクは、トークナイザーが返す辞書の"attention_mask"キーの下にあります。

```python
>>> padded_sequences["attention_mask"]
[[1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
```

### オートエンコーディングモデル

[エンコーダーモデル](#encoder-models)と[マスク言語モデリング](#masked-language-modeling-mlm)を参照してください。

### 自己回帰モデル

[因果言語モデリング](#causal-language-modeling)および[デコーダーモデル](#decoder-models)を参照してください。

## B

### backbone

バックボーンは、生の隠れ状態や特徴量を出力するネットワーク（埋め込みと各層）です。通常、[ヘッド](#head)が接続されており、このヘッドは特徴量を入力として受け取り、予測を行います。例えば、[ViTModel](/docs/transformers/v5.23.0/ja/model_doc/vit#transformers.ViTModel)は、上部に特定のヘッドを持たないバックボーンです。[DPT](./model_doc/dpt)などの他のモデルも、[ViTModel](/docs/transformers/v5.23.0/ja/model_doc/vit#transformers.ViTModel)をバックボーンとして利用できます。

## C

### 因果言語モデリング

モデルがテキストを順番に読み取り、次の単語を予測する事前学習タスクです。通常、文全体を読み取りますが、モデル内部でマスクを使用して、特定のタイムステップにおける将来のトークンを隠すことで行われます。

### チャンネル

カラー画像は、赤、緑、青（RGB）の3つのチャネルの値の組み合わせで構成され、グレースケール画像は1つのチャネルのみを持ちます。🤗 Transformersでは、画像のテンソルのチャネルは最初の次元または最後の次元に配置できます: [`n_channels`, `height`, `width`] または [`height`, `width`, `n_channels`]。

### 接続主義的時間分類（CTC）

入力と出力がどのように対応しているかを正確に知らなくてもモデルが学習できるようにするアルゴリズムです。CTCは、与えられた入力に対するすべての可能な出力の分布を計算し、その中から最も確率の高い出力を選択します。話者の発話速度の違いなど、さまざまな理由で音声は常に文字起こしと完全に一致しないため、CTCは音声認識タスクでよく使用されます。

### 畳み込み

ニューラルネットワークにおける層の一種で、入力行列をより小さな行列（カーネルまたはフィルタ）と要素ごとに掛け合わせ、その値を新しい行列に合計します。これは畳み込み操作と呼ばれ、入力行列全体に対して繰り返し適用されます。各操作は、入力行列の異なる区間に適用されます。畳み込みニューラルネットワーク（CNN）は、コンピュータビジョン分野で広く使用されています。

## D

### DataParallel (DP)

複数のGPUでトレーニングを行うための並列化手法です。同じセットアップが複数回複製され、各インスタンスが異なるデータのスライスを取得します。処理は並列で実行され、各トレーニングステップの終了時にすべてのセットアップが同期されます。

[DataParallel](./perf_train_gpu_many#dataparallel)の詳細については、こちらをご覧ください。

### デコーダー入力ID

この入力はエンコーダー・デコーダーモデルに特有のもので、デコーダーに供給される入力IDを含みます。これらの入力は、翻訳や要約などのシーケンス間タスクに使用されるべきであり、通常は各モデル固有の方法で構築されます。

ほとんどのエンコーダー・デコーダーモデル（BART、T5）は、`labels`から独自に`decoder_input_ids`を生成します。このようなモデルでは、学習を処理する推奨方法は`labels`を渡すことです。

シーケンスツーシーケンス学習において、これらの入力IDをどのように処理するかについては、各モデルのドキュメントをご確認ください。

### デコーダーモデル

デコーダーモデルは、自己回帰モデルとも呼ばれます。デコーダーモデルの事前学習タスク（因果言語モデリングと呼ばれます）では、モデルがテキストを順序通りに読み取り、次の単語を予測する必要があります。通常、これは、あるタイムステップで将来のトークンを隠すためのマスクを適用しながら、文全体を読み取ることで行われます。

### ディープラーニング（DL）

複数の層を持つニューラルネットワークを用いる機械学習アルゴリズム。

## E

### エンコーダーモデル

エンコーダーモデルは、オートエンコーディングモデルとも呼ばれ、入力（テキストや画像など）を受け取り、埋め込みと呼ばれる圧縮された数値表現に変換します。エンコーダーモデルは、[マスク言語モデリング](#masked-language-modeling-mlm)などの手法を用いて事前学習されることが多く、この手法では入力シーケンスの一部をマスクし、モデルにより意味のある表現を生成することを強制的に求めます。

## F

### 特徴量抽出

生データを、機械学習アルゴリズムにとってより情報量が多く有用な特徴の集合へと選択・変換するプロセスです。特徴抽出の例としては、生テキストをワードエンベディングへの変換や、画像・動画データからエッジや形状といった重要な特徴を抽出することが挙げられます。

### フィードフォワードチャンク分割

transformers の各残差アテンションブロックでは、自己アテンション層の後に通常、2 つのフィードフォワード層が続きます。フィードフォワード層の中間埋め込みサイズは、モデルの隠れサイズよりも大きくなることがよくあります（例: `google-bert/bert-base-uncased`）。

サイズが `[batch_size, sequence_length]` の入力に対して、中間のフィードフォワード埋め込み `[batch_size, sequence_length, config.intermediate_size]` を保存するために必要なメモリは、メモリ使用量の大きな割合を占める可能性があります。[Reformer: The Efficient Transformer](https://huggingface.co/papers/2001.04451) の著者たちは、計算が `sequence_length` 次元に対して独立しているため、2 つのフィードフォワード層の出力埋め込み `[batch_size, config.hidden_size]_0, ..., [batch_size, config.hidden_size]_n` を個別に計算してから、`n = sequence_length` として `[batch_size, sequence_length, config.hidden_size]` に連結するのと数学的に等価であることに気づきました。これにより計算時間は増加しますがメモリ使用量は削減され、数学的に **等価** な結果が得られます。

[apply_chunking_to_forward()](/docs/transformers/v5.23.0/ja/internal/modeling_utils#transformers.apply_chunking_to_forward) 関数を使用するモデルでは、`chunk_size` は並列に計算される出力埋め込みの数を定義し、メモリと時間計算量のトレードオフを決定します。`chunk_size` が 0 に設定されている場合、フィードフォワードのチャンク分割は行われません。

### ファインチューニング済みモデル

Finetuningは転移学習の一種であり、事前学習済みモデルを取得してその重みを凍結し、出力層を新たに追加した[model head](#head)に置き換えることを指します。model headは、ターゲットのデータセットで学習されます。

詳細については、[事前学習済みモデルのファインチューニング](./training)チュートリアルを参照し、🤗 Transformers を用いたモデルのファインチューニング方法について学習してください。

## H

### ヘッド

モデルヘッドとは、ニューラルネットワークの最終層を指し、生の隠れ状態を受け取り、異なる次元へ射影します。タスクごとに異なるモデルヘッドがあります。例えば:

* [GPT2ForSequenceClassification](/docs/transformers/v5.23.0/ja/model_doc/gpt2#transformers.GPT2ForSequenceClassification) は、ベースとなる [GPT2Model](/docs/transformers/v5.23.0/ja/model_doc/gpt2#transformers.GPT2Model) の上に配置されたシーケンス分類ヘッド（線形層）です。
* [ViTForImageClassification](/docs/transformers/v5.23.0/ja/model_doc/vit#transformers.ViTForImageClassification) は画像分類ヘッドです。[ViTModel](/docs/transformers/v5.23.0/ja/model_doc/vit#transformers.ViTModel) のベースモデルの上に、`CLS` トークンの最終隠れ状態に対して線形層を適用する構成になっています。
* [Wav2Vec2ForCTC](/docs/transformers/v5.23.0/ja/model_doc/wav2vec2#transformers.Wav2Vec2ForCTC) は、ベースとなる [Wav2Vec2Model](/docs/transformers/v5.23.0/ja/model_doc/wav2vec2#transformers.Wav2Vec2Model) の上に [CTC](#connectionist-temporal-classification-ctc) を備えた言語モデリングヘッドです。

## I

### 画像パッチ

Vision-based Transformers モデルは、画像をより小さなパッチに分割し、それらを線形埋め込みとして処理したうえで、シーケンスとしてモデルに渡します。モデルの `patch_size`（解像度）は、その設定ファイルで確認できます。

### 推論

推論（インフェレンス）とは、学習が完了した後にモデルを新しいデータで評価するプロセスです。🤗 Transformers を用いた推論の実行方法については、[推論用 Pipeline](./pipeline_tutorial) チュートリアルを参照してください。

### 入力 ID

入力IDは、モデルの入力として渡す必要がある必須パラメータとして、多くの場合唯一のものである。これらはトークンインデックスであり、モデルの入力として使用されるシーケンスを構成するトークンの数値表現である。

各トークナイザーの動作は異なりますが、その基盤となる仕組みは同じです。ここでは、[WordPiece](https://huggingface.co/papers/1609.08144) トークナイザーである BERT トークナイザーを使った例を示します。

```python
>>> from transformers import BertTokenizer

>>> tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-cased")

>>> sequence = "A Titan RTX has 24GB of VRAM"
```

tokenizerは、シーケンスをtokenizerの語彙に存在するトークンに分割する処理を担当します。

```python
>>> tokenized_sequence = tokenizer.tokenize(sequence)
```

トークンは単語またはサブワードです。例えば、ここでは "VRAM" がモデルの語彙に存在しなかったため、"V"、"RA"、"M" に分割されています。これらが独立した単語ではなく、同じ単語の一部であることを示すために、"RA" と "M" にはダブルハッシュのプレフィックスが付けられます：

```python
>>> print(tokenized_sequence)
['A', 'Titan', 'R', '##T', '##X', 'has', '24', '##GB', 'of', 'V', '##RA', '##M']
```

これらのトークンは、その後、モデルが理解できるIDに変換できます。これは、[🤗 Tokenizers](https://github.com/huggingface/tokenizers)のRust実装を活用して最高性能を発揮するトークナイザーに文を直接渡すことで実現できます。

```python
>>> inputs = tokenizer(sequence)
```

トークナイザーは、対応するモデルが正しく動作するために必要なすべての引数を含む辞書を返します。トークンインデックスはキー`input_ids`の下にあります:

```python
>>> encoded_sequence = inputs["input_ids"]
>>> print(encoded_sequence)
[101, 138, 18696, 155, 1942, 3190, 1144, 1572, 13745, 1104, 159, 9664, 2107, 102]
```

トークナイザーは、関連するモデルがそれらに依存している場合、モデルが時折使用する特別なIDである「特殊トークン」を自動的に追加することに注意してください。

前のidのシーケンスをデコードすると、

```python
>>> decoded_sequence = tokenizer.decode(encoded_sequence)
```

確認していきましょう

```python
>>> print(decoded_sequence)
[CLS] A Titan RTX has 24GB of VRAM [SEP]
```

これが[BertModel](/docs/transformers/v5.23.0/ja/model_doc/bert#transformers.BertModel)がインプットを期待する形式だからです。

## L

### ラベル

labels は、モデルが損失を自ら計算できるように渡す任意の引数です。この labels には、モデルの予測の期待値（すなわち正解ラベル）を指定します。モデルは、予測値と期待値（ラベル）の間の損失を計算するために、標準的な損失関数を使用します。

これらのラベルは、モデルのヘッドによって異なります。例えば:

- シーケンス分類モデル（[BertForSequenceClassification](/docs/transformers/v5.23.0/ja/model_doc/bert#transformers.BertForSequenceClassification)）では、モデルは次元 `(batch_size)` のテンソルを期待し、バッチの各値は、そのシーケンス全体に対する期待されるラベルに対応します。
- トークン分類モデル([BertForTokenClassification](/docs/transformers/v5.23.0/ja/model_doc/bert#transformers.BertForTokenClassification))の場合、モデルは `(batch_size, seq_length)` の次元を持つテンソルを期待し、各値は個々のトークンに対応する期待ラベルを表します。
- マスクド言語モデリング（[BertForMaskedLM](/docs/transformers/v5.23.0/ja/model_doc/bert#transformers.BertForMaskedLM)）では、モデルは `(batch_size, seq_length)` 次元のテンソルを期待します。各値は、個々のトークンに対応する期待ラベルを表します。ラベルは、マスクされたトークンのトークン ID であり、それ以外のトークンについては無視される値（通常は -100）です。
- シーケンスツーシーケンスタスクでは、([BartForConditionalGeneration](/docs/transformers/v5.23.0/ja/model_doc/bart#transformers.BartForConditionalGeneration)、[MBartForConditionalGeneration](/docs/transformers/v5.23.0/ja/model_doc/mbart#transformers.MBartForConditionalGeneration)) の場合、モデルは `(batch_size, tgt_seq_length)` の次元を持つテンソルを期待します。各値は、各入力シーケンスに関連付けられたターゲットシーケンスに対応します。トレーニング中、BART と T5 はどちらも、適切な `decoder_input_ids` とデコーダーアテンションマスクを内部で生成します。通常、これらを指定する必要はありません。これは、Encoder-Decoder フレームワークを活用するモデルには当てはまりません。
- 画像分類モデル([ViTForImageClassification](/docs/transformers/v5.23.0/ja/model_doc/vit#transformers.ViTForImageClassification))の場合、モデルは次元`(batch_size)`のテンソルを期待し、バッチの各値は個々の画像の期待されるラベルに対応します。
- セマンティックセグメンテーションモデル([SegformerForSemanticSegmentation](/docs/transformers/v5.23.0/ja/model_doc/segformer#transformers.SegformerForSemanticSegmentation))の場合、モデルは `(batch_size, height, width)` の次元を持つテンソルを期待します。このとき、バッチの各値は、個々のピクセルに対する期待されるラベルに対応します。
- オブジェクト検出モデル（[DetrForObjectDetection](/docs/transformers/v5.23.0/ja/model_doc/detr#transformers.DetrForObjectDetection)）の場合、モデルは `class_labels` と `boxes` キーを持つ辞書のリストを期待します。バッチの各値は、個々の画像に対応する期待されるラベルとバウンディングボックスの数を表します。
- 自動音声認識モデル([Wav2Vec2ForCTC](/docs/transformers/v5.23.0/ja/model_doc/wav2vec2#transformers.Wav2Vec2ForCTC))の場合、モデルは `(batch_size, target_length)` の次元を持つテンソルを期待します。各値は、個々のトークンに対応する期待されるラベルを表します。

モデルによってラベルが異なる場合がありますので、特定のラベルに関する詳細については、必ず各モデルのドキュメントをご確認ください。

ベースモデル（[BertModel](/docs/transformers/v5.23.0/ja/model_doc/bert#transformers.BertModel)）は、ベースとなる Transformer モデルであり、単に特徴量を出力するだけであるため、ラベルを受け取りません。

### 大規模言語モデル (LLM)

大量のデータで学習されたTransformer言語モデル（GPT-3、BLOOM、OPT）を指す一般的な用語です。これらのモデルは、学習可能なパラメータの数が非常に多い傾向があります（例：GPT-3では1750億）。

## M

### マスクド言語モデリング (MLM)

モデルがテキストの破損版（通常、一部のトークンをランダムにマスクしたもの）を見て、元のテキストを予測する事前学習タスク。

### マルチモーダル

テキストと別の種類の入力（画像など）を組み合わせるタスク。

## N

### 自然言語生成（NLG）

テキスト生成に関連するすべてのタスク(例:[Write With Transformers](https://transformer.huggingface.co/)、翻訳)。

### 自然言語処理（NLP）

「テキストを扱う」という一般的な表現です。

### 自然言語理解（NLU）

テキストの内容を理解することに関連するすべてのタスク（テキスト全体や個々の単語の分類など）。

## P

### pipeline

🤗 Transformers のパイプラインは、データを前処理・変換し、モデルから予測結果を返すために特定の順序で実行される一連のステップを指す抽象化です。パイプラインで見られるステージの例としては、データの前処理、特徴量抽出、正規化などが挙げられます。

詳細については、[推論用パイプライン](./pipeline_tutorial)を参照してください。

### PipelineParallel (PP)

モデルを垂直方向（レイヤー単位）で分割し、複数のGPUに分散する並列化手法です。これにより、1つのGPUにはモデルの1層または数層のみが配置されます。各GPUはパイプラインの異なる段階を並列に処理し、バッチの小さなチャンクに対して作業を行います。[PipelineParallel](./perf_train_gpu_many#pipeline-parallelism)の詳細については、こちらをご覧ください。

### ピクセル値

モデルに渡される画像の数値表現のテンソルです。ピクセル値の形状は [`batch_size`, `num_channels`, `height`, `width`] であり、画像プロセッサによって生成されます。

### プーリング

プーリングは、プーリング対象の次元に対して最大値または平均値を採ることで、行列をより小さな行列に縮小する操作です。プーリング層は、特徴表現をダウンサンプリングするために、畳み込み層の間に配置されることが一般的です。

### 位置ID

各トークンの位置が埋め込まれているRNNとは異なり、transformerは各トークンの位置を認識しません。そのため、モデルは`position_ids`を使用して、トークンリストにおける各トークンの位置を識別します。

これらは任意のパラメータです。`position_ids`がモデルに渡されない場合、IDは絶対位置埋め込みとして自動的に作成されます。

絶対位置埋め込みは、`[0, config.max_position_embeddings - 1]` の範囲から選択されます。一部のモデルでは、正弦波位置埋め込みや相対位置埋め込みなど、他のタイプの位置埋め込みが使用されます。

### 前処理

機械学習モデルが簡単に処理できる形式に生データを整えるタスクです。例えば、テキストは通常、トークン化によって前処理されます。他の入力タイプの前処理がどのように行われるかを確認するには、[Preprocess](https://huggingface.co/docs/transformers/preprocessing)チュートリアルをご覧ください。

### 事前学習済みモデル

あるデータ（例えばWikipedia全体）で事前学習が完了したモデルです。事前学習の手法には自己教師ありの目的関数が用いられ、テキストを読み次の単語を予測する（[因果言語モデリング](#causal-language-modeling)を参照）か、一部の単語をマスクしてそれを予測する（[マスク言語モデリング](#masked-language-modeling-mlm)を参照）かのいずれかです。

音声モデルやビジョンモデルには、それぞれ独自の事前学習の目的があります。例えば、Wav2Vec2は対照的タスクで事前学習された音声モデルであり、モデルに「偽の」音声表現の集合から「真の」音声表現を特定することを求めます。一方、BEiTはマスクドイメージモデリングタスクで事前学習されたビジョンモデルであり、画像パッチの一部をマスクし、モデルにマスクされたパッチを予測することを求めます（マスクド言語モデリングの目的と類似しています）。

## R

### 再帰型ニューラルネットワーク (RNN)

レイヤーに対するループを使用してテキストを処理するモデルの種類。

### 表現学習

生データの意味のある表現を学習することに焦点を当てる機械学習のサブフィールドです。表現学習の手法の例としては、word embeddings、autoencoders、Generative Adversarial Networks (GANs)などが挙げられます。

## S

### サンプリングレート

1秒間に取得されるサンプル数（音声信号）をヘルツ単位で表した測定値です。サンプリングレートは、音声などの連続信号を離散化することによって得られる値です。

### 自己注意

入力の各要素は、入力のどの他の要素に注意を向けるべきかを決定します。

### 自己教師あり学習

ラベルなしデータからモデルが独自の学習目標を生成する機械学習手法の一種です。[教師なし学習](#unsupervised-learning)や[教師あり学習](#supervised-learning)とは異なり、学習プロセスは監督されますが、ユーザーによって明示的に指定されるわけではありません。

自己教師あり学習の一例として[マスク言語モデリング](#masked-language-modeling-mlm)があり、モデルにトークンの一部を除去した文を入力し、欠落したトークンを予測するように学習させます。

### 半教師あり学習

[教師あり学習](#supervised-learning)や[教師なし学習](#unsupervised-learning)とは異なり、少量のラベル付きデータと大量のラベルなしデータを活用してモデルの精度を向上させる機械学習の訓練手法の広範なカテゴリです。

半教師あり学習のアプローチの例として「セルフトレーニング」があります。これは、ラベル付きデータでモデルを学習させた後、そのモデルを使ってラベルなしデータに対する予測を行う手法です。モデルが最も高い確信度で予測したラベルなしデータの部分は、ラベル付きデータセットに追加され、モデルの再学習に使用されます。

### シーケンスツーシーケンス (seq2seq)

入力から新しいシーケンスを生成するモデル。翻訳モデルや要約モデル（[Bart](./model_doc/bart) や [T5](./model_doc/t5) など）が該当します。

### シャード化されたDDP

ZeROの他の実装で使われている、基礎的な[ZeRO](#zero-redundancy-optimizer-zero)の概念の別名です。

### stride

[convolution](#convolution)や[pooling](#pooling)において、strideはカーネルが行列上で移動する距離を指します。strideが1の場合、カーネルは1ピクセルずつ移動し、strideが2の場合、カーネルは2ピクセルずつ移動します。

### 教師あり学習

ラベル付きデータを直接使用して、モデルの性能を修正・指示する形式のモデル学習です。学習中のモデルにデータを入力し、その予測結果と既知のラベルを比較します。モデルは予測の誤りの度合いに基づいて重みを更新し、このプロセスを繰り返すことでモデルの性能を最適化します。

## T

### テンソル並列化 (TP)

複数のGPUでトレーニングを行うための並列化手法であり、各テンソルを複数のチャンクに分割します。これにより、テンソル全体を単一のGPUに配置するのではなく、テンソルの各シャードが割り当てられたGPUに配置されます。シャードは異なるGPU上で個別かつ並列に処理され、処理ステップの終了時に結果が同期されます。これは分割が水平方向のレベルで行われるため、水平並列化と呼ばれることもあります。Tensor Parallelismの詳細については、[こちら](./perf_train_gpu_many#tensor-parallelism)をご覧ください。

### token

文の一部であり、通常は単語ですが、サブワード（一般的でない単語はしばしばサブワードに分割されます）や句読点であることもあります。

### トークンタイプID

一部のモデルは、文のペアに対する分類や質問応答を行うことを目的としています。

These require two different sequences to be joined in a single "input_ids" entry, which usually is performed with the help of special tokens, such as the classifier (`[CLS]`) and separator (`[SEP]`) tokens. For example, the BERT model builds its two sequence input as such:

```python
>>> # [CLS] SEQUENCE_A [SEP] SEQUENCE_B [SEP]
```

`tokenizer`に2つのシーケンスをリストではなく、2つの引数として渡すことで、トークナイザーを使ってこのような文を自動生成できます。

```python
>>> from transformers import BertTokenizer

>>> tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-cased")
>>> sequence_a = "HuggingFace is based in NYC"
>>> sequence_b = "Where is HuggingFace based?"

>>> encoded_dict = tokenizer(sequence_a, sequence_b)
>>> decoded = tokenizer.decode(encoded_dict["input_ids"])
```

以下を返します：

```python
>>> print(decoded)
[CLS] HuggingFace is based in NYC [SEP] Where is HuggingFace based? [SEP]
```

一部のモデルでは、シーケンスの終了位置と次のシーケンスの開始位置を把握するために、これだけで十分です。しかし、BERTなどの他のモデルでは、トークンタイプID（セグメントIDとも呼ばれる）も使用されます。これは、モデル内の2種類のシーケンスを識別するためのバイナリマスクとして表現されます。

トークナイザーはこのマスクを "token_type_ids" エントリとして返します:

```python
>>> encoded_dict["token_type_ids"]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]
```

最初のシーケンス、すなわち質問に使用される「コンテキスト」は、すべてのトークンが`0`で表され、2番目のシーケンス、すなわち「質問」に対応するものは、すべてのトークンが`1`で表されます。

[XLNetModel](/docs/transformers/v5.23.0/ja/model_doc/xlnet#transformers.XLNetModel)などの一部のモデルでは、`2`で表される追加のトークンを使用します。

### 転移学習

事前学習済みモデルを取得し、タスク固有のデータセットに合わせて適応させる技術です。モデルをゼロから学習するのではなく、既存のモデルから得られた知識を起点として活用できます。これにより、学習プロセスが高速化され、必要な学習データ量が削減されます。

### transformer

自己注意機構に基づく深層学習モデルのアーキテクチャ。

## U

### 教師なし学習

モデルに提供されるデータがラベル付けされていない形式のモデル学習です。教師なし学習の手法は、データ分布の統計情報を利用して、対象タスクに有用なパターンを見つけ出します。

## Z

### ゼロ・リダンダンシー・オプティマイザー (ZeRO)

[TensorParallel](#tensor-parallelism-tp) とやや類似した方式でテンソルをシャーディングする並列化技術です。ただし、フォワードまたはバックワードの計算時にテンソル全体が再構築されるため、モデルの修正は不要です。この手法は、GPU メモリの制約を補うために、さまざまなオフローディング技術にも対応しています。ZeRO について詳しくは [こちら](./perf_train_gpu_many#zero-data-parallelism) をご覧ください。

