Transformers documentation
CodeGen
このモデルは2022年3月25日にHF papersで公開され、2022年6月24日にHugging Face Transformersに貢献されました。
CodeGen
概要
CodeGenモデルは、Erik Nijkamp、Bo Pang、Hiroaki Hayashi、Lifu Tu、Huan Wang、Yingbo Zhou、Silvio Savarese、Caiming Xiong によって、A Conversational Paradigm for Program Synthesis で提案されました。
CodeGenは、The Pile、BigQuery、BigPythonの順で学習された、プログラム合成のための自己回帰型言語モデルです。
論文の抄録は以下の通りです。
プログラム合成は、与えられた問題仕様に対する解決策としてコンピュータプログラムを生成することを目的としています。私たちは、大規模言語モデルを用いた対話型プログラム合成のアプローチを提案します。このアプローチは、従来の手法が直面していた、膨大なプログラム空間での探索やユーザー意図の仕様化という課題に対処します。私たちの新しいアプローチでは、仕様とプログラムの作成プロセスを、ユーザーとシステム間のマルチターン対話として定式化します。プログラム合成はシーケンス予測問題として扱われ、仕様は自然言語で表現され、望ましいプログラムは条件付きサンプリングによって生成されます。私たちは、自然言語データとプログラミング言語データで訓練された大規模言語モデルのファミリーであるCodeGenを訓練しました。データ内の弱い教師信号と、データサイズおよびモデルサイズの拡大により、単純な自己回帰言語モデリングから対話能力が創発します。対話型プログラム合成におけるモデルの挙動を研究するため、ユーザーとモデル間のマルチターン対話によるマルチステップ合成を各問題の解決に必要とする、マルチターンプログラミングベンチマーク(MTPB)を開発しました。私たちの調査結果は、対話能力の創発と、提案した対話型プログラム合成パラダイムの有効性を示しています。さらに、私たちのモデルCodeGen(TPU-v4で訓練された最大16Bパラメータ)は、HumanEvalベンチマークにおいてOpenAIのCodexを上回る性能を示しました。チェックポイントを含む訓練ライブラリJaxFormerは、オープンソース貢献として公開されています:this https URL。
このモデルはHiroaki Hayashi氏によって提供されました。 元のコードはこちらで確認できます。
チェックポイントの命名
- CodeGenモデルのチェックポイントは、異なるサイズを持つさまざまな事前学習データで利用できます。
- 形式は以下の通りです:
Salesforce/codegen-{size}-{data}, ここでsize:350M,2B,6B,16Bdata:nl: Pileで事前学習済みmulti:nlで初期化し、その後、複数のプログラミング言語のデータでさらに事前学習を実行mono:multiで初期化し、その後Pythonデータでさらに事前学習
- 例えば、
Salesforce/codegen-350M-monoは、Pile、複数のプログラミング言語、および Python を順次で事前学習した 3 億 5,000 万パラメータのチェックポイントを提供しています。
使用例
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "Salesforce/codegen-350M-mono"
model = AutoModelForCausalLM.from_pretrained(checkpoint, device_map="auto")
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
text = "def hello_world():"
completion = model.generate(**tokenizer(text, return_tensors="pt").to(model.device))
print(tokenizer.decode(completion[0]))
def hello_world():
print("Hello World")
hello_world()リソース
CodeGenConfig
クラス transformers.CodeGenConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 50400n_positions: int = 2048n_ctx: int = 2048n_embd: int = 4096n_layer: int = 28n_head: int = 16rotary_dim: int = 64n_inner: int | None = Noneactivation_function: str = 'gelu_new'resid_pdrop: float | int = 0.0embd_pdrop: float | int = 0.0attn_pdrop: float | int = 0.0layer_norm_epsilon: float = 1e-05initializer_range: float = 0.02use_cache: bool = Truebos_token_id: int | None = 50256eos_token_id: int | list[int] | None = 50256tie_word_embeddings: bool = False )
パラメータ
- vocab_size (
int、任意、デフォルトは50400) — モデルの語彙サイズです。input_idsで表現できるトークンの種類数を定義します。 - n_positions (
int、任意、デフォルトは2048) — このモデルが使用される可能性のある最大シーケンス長です。 - n_ctx (
int、任意、デフォルト値は 2048) — この属性はCodeGenModel.__init__で使用されますが、実際の効果はありません。 embeddings、encoder、pooler 内のすべての全結合層における dropout 確率。 - n_embd (
int、任意、デフォルトは4096) — 埋め込みおよび隠れ状態の次元数。 - n_layer (
int、任意、デフォルトは28) — Transformer デコーダーの隠れ層の数。 - n_head (
int、任意、デフォルトは16) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。 - rotary_dim (
int、任意、デフォルトは 64) — Rotary Position Embedding を適用する埋め込みの次元数です。 - n_inner (
int, 任意) — 内部フィードフォワード層の次元数。Noneの場合、n_embdの4倍に設定されます。 - activation_function (
str、任意、デフォルトはgelu_new) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、"relu"、"silu"など。 - resid_pdrop (
Union[float, int]、省略可、デフォルト値は0.0) — embeddings、encoder、pooler 内のすべての全結合層における dropout 確率です。 - embd_pdrop (
Union[float, int]、任意、デフォルトは0.0) — 埋め込みのドロップアウト率です。 - attn_pdrop (
Union[float, int]、省略可、デフォルトは0.0) — アテンション確率のドロップアウト率です。 - layer_norm_epsilon (
float、任意、デフォルトは1e-05) — レイヤーノーマル層で使用する epsilon です。 - initializer_range (
float、任意、デフォルトは0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。 - use_cache (
bool、任意、デフォルトはTrue) — モデルが最後のキー/バリューの注意を返すかどうか(すべてのモデルで利用されるわけではありません)。config.is_decoder=Trueの場合、またはモデルがデコーダー専用の生成モデルである場合にのみ関連します。 - bos_token_id (
int、任意、デフォルトは50256) — 語彙におけるストリーム開始に使用されるトークン ID。 - eos_token_id (
Union[int, list[int]]、任意、デフォルトは50256) — 語彙内でストリーム終了に使用されるトークン ID。 - tie_word_embeddings (
bool、任意、デフォルトはFalse) — モデルのtied_weights_keysマッピングに従って重み埋め込みを共有するかどうかを指定します。
これはCodeGenModelの設定を保存するための設定クラスです。指定された引数に基づいてCodegenモデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、Salesforce/codegen-2B-mono と同様の設定が得られます。
設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。
例:
>>> from transformers import CodeGenConfig, CodeGenModel
>>> # Initializing a CodeGen 6B configuration
>>> configuration = CodeGenConfig()
>>> # Initializing a model (with random weights) from the configuration
>>> model = CodeGenModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configCodeGenTokenizer
class transformers.CodeGenTokenizer
< source >( vocab: str | dict[str, int] | None = Nonemerges: str | list[str] | None = Noneunk_token: str = '<|endoftext|>'bos_token: str = '<|endoftext|>'eos_token: str = '<|endoftext|>'pad_token = Noneadd_prefix_space: bool = Falsereturn_token_type_ids: bool = False**kwargs )
パラメータ
- vocab (
strまたはdict[str, int]、省略可) — カスタム語彙辞書です。指定しない場合、vocab_fileから語彙が読み込まれます。 - merges (
strまたはlist[str]、省略可) — カスタムマージリスト。指定しない場合、merges_fileからマージが読み込まれます。 - unk_token (
str、任意、デフォルトは"<|endoftext|>") — 不明トークンです。語彙に存在しないトークンは ID に変換できず、代わりにこのトークンが設定されます。 - bos_token (
str, 任意、デフォルトは"<|endoftext|>") — シーケンスの開始トークンです。 - eos_token (
str, 任意、デフォルトは"<|endoftext|>") — シーケンスの終了トークンです。 - pad_token (
str, 任意) — パディングに使用するトークンです。長さの異なるシーケンスをバッチ処理する場合などに使用します。 - add_prefix_space (
bool、任意、デフォルトはFalse) — 入力に先頭スペースを追加するかどうか。これにより、先頭の単語を他の単語と同様に扱うことができます。(CodeGen トークナイザーは、先行するスペースによって単語の開始を検出します)。 - return_token_type_ids (
bool、省略可、デフォルトはFalse) — トークンタイプIDを返すかどうか。
HuggingFaceのtokenizersライブラリをベースにしたCodeGenのトークナイザーを構築します。バイトレベルのByte-Pair-Encodingに基づいています。
このトークナイザーは、スペースをトークンの一部として扱うように学習されています(sentencepieceに少し似ています)。そのため、単語は
文の先頭(スペースなし)にある場合と、そうでない場合とで、エンコードの仕方が異なります。
>>> from transformers import CodeGenTokenizer
>>> tokenizer = CodeGenTokenizer.from_pretrained("Salesforce/codegen-350M-mono")
>>> tokenizer("Hello world")["input_ids"]
[15496, 995]
>>> tokenizer(" Hello world")["input_ids"]
[18435, 995]この動作を回避するには、このトークナイザーをインスタンス化する際にadd_prefix_space=Trueを渡すことができますが、モデルはこの方式で事前学習されていないため、パフォーマンスが低下する可能性があります。
is_split_into_words=Trueと併用する場合、このトークナイザーはadd_prefix_space=Trueを指定してインスタンス化する必要があります。
このトークナイザーは、主要なメソッドの大部分を含む TokenizersBackend を継承しています。これらのメソッドに関する詳細については、このスーパークラスを参照してください。
CodeGenModel
クラス transformers.CodeGenModel
< source >( config: CodeGenConfig )
パラメータ
- config (CodeGenConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
特定のヘッドを上に載せずに、生のhidden-statesを出力する素のCodegen Model。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutputWithPast or tuple(torch.Tensor)
パラメータ
- input_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- past_key_values (
~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返したpast_key_valuesであり、use_cache=Trueまたはconfig.use_cache=True.入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。
past_key_valuesが渡されない場合、デフォルトで DynamicCache が初期化されます。モデルは、入力として与えられたのと同じキャッシュ形式を出力します。
past_key_valuesを使用する場合、すべてのinput_ids(形状(batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理のinput_ids(形状(batch_size, unprocessed_length))のみを入力することになります。 - attention_mask (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- token_type_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、任意) — 入力テキストの第1部分と第2部分を区別するためのセグメントトークンインデックス。インデックスは[0, 1]:- 0 は sentence A トークンに対応します。
- 1 は sentence B トークンに対応します。
- position_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、任意) — 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックス。範囲[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensor、形状(batch_size, sequence_length, hidden_dim)、任意) —input_idsを渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み検索行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。 - use_cache (
bool、任意) —Trueに設定すると、past_key_valuesのキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_valuesを参照)。 - output_attentions (
bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルのattentionsを参照してください。 - output_hidden_states (
bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルのhidden_statesを参照してください。 - return_dict (
bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。
戻り値
BaseModelOutputWithPast または tuple(torch.Tensor)
torch.Tensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)または BaseModelOutputWithPast。設定(CodeGenConfig)と入力に応じて、さまざまな要素で構成されます。
CodeGenModelのforwardメソッドは、__call__特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
last_hidden_state (
torch.Tensor、形状(batch_size, sequence_length, hidden_size)) — モデルの最終層の出力における隠れ状態のシーケンス。past_key_valuesが使用されている場合、出力されるのは、形状(batch_size, 1, hidden_size)のシーケンスの最後の隠れ状態のみです。past_key_values (
Cache、任意、use_cache=Trueが渡された場合またはconfig.use_cache=Trueの場合に返されます) — Cache のインスタンスです。詳細については、kv cache ガイドを参照してください。自己アテンションブロック(および
config.is_encoder_decoder=Trueの場合、クロスカレンションブロック)の事前計算済みヒドゥンステート(キーとバリュー)を保持します。これらは逐次デコーディングを高速化するために使用できます(past_key_values入力参照)。hidden_states (
tuple(torch.Tensor)、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返されます) —torch.Tensorのタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は(batch_size, sequence_length, hidden_size)です。各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
attentions (
tuple(torch.Tensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます) —torch.Tensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
CodeGenForCausalLM
クラス transformers.CodeGenForCausalLM
< source >( config: CodeGenConfig )
パラメータ
- config (CodeGenConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
言語モデリングヘッドを上部に備えた CodeGen モデルの Transformer。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs ) → CausalLMOutputWithPast or tuple(torch.Tensor)
パラメータ
- input_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- past_key_values (
~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返したpast_key_valuesであり、use_cache=Trueまたはconfig.use_cache=True.入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。
past_key_valuesが渡されない場合、デフォルトで DynamicCache が初期化されます。モデルは、入力として与えられたのと同じキャッシュ形式を出力します。
past_key_valuesを使用する場合、すべてのinput_ids(形状(batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理のinput_ids(形状(batch_size, unprocessed_length))のみを入力することになります。 - attention_mask (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- token_type_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、任意) — 入力テキストの第1部分と第2部分を区別するためのセグメントトークンインデックス。インデックスは[0, 1]:- 0 は sentence A トークンに対応します。
- 1 は sentence B トークンに対応します。
- position_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、任意) — 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックス。範囲[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensor、形状(batch_size, sequence_length, hidden_dim)、任意) —input_idsを渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み検索行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。 - labels (
torch.LongTensor、形状(batch_size, sequence_length)、任意) — 言語モデリング用のラベルです。モデル内部ではラベルがシフトされるため、labels = input_idsと設定できます。インデックスは[-100, 0, ..., config.vocab_size]から選択されます。-100に設定されたすべてのラベルは無視(マスク)され、損失は[0, ..., config.vocab_size]内のラベルに対してのみ計算されます。 - use_cache (
bool、任意) —Trueに設定すると、past_key_valuesのキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_valuesを参照)。 - output_attentions (
bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルのattentionsを参照してください。 - output_hidden_states (
bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルのhidden_statesを参照してください。 - return_dict (
bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。 - logits_to_keep (
Union[int, torch.Tensor]、省略可、デフォルトは0) —intの場合、最後のlogits_to_keepトークンについて logits を計算します。0の場合、すべてのinput_idsについて logits を計算します(特殊ケース)。生成には最後のトークンの logits だけで十分であり、そのトークンのみについて計算することでメモリを節約できます。これは、長いシーケンスや大規模な語彙サイズの場合に特に顕著な効果があります。torch.Tensorの場合、シーケンス長次元で保持するインデックスに対応する 1 次元テンソルである必要があります。これは、パックされたテンソル形式(バッチとシーケンス長を単一の次元にまとめた形式)を使用する場合に有用です。
戻り値
CausalLMOutputWithPast または tuple(torch.Tensor)
torch.Tensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)または CausalLMOutputWithPast。設定(CodeGenConfig)と入力に応じて、さまざまな要素で構成されます。
CodeGenForCausalLM の forward メソッドは、__call__ という特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
loss (
torch.Tensor、形状(1,)、任意、labelsが指定された場合に返されます) — 言語モデリングの損失(次のトークンの予測用)。logits (
torch.Tensor、形状(batch_size, sequence_length, config.vocab_size)) — 言語モデリングヘッドの予測スコア(SoftMax 適用前の各語彙トークンのスコア)。past_key_values (
Cache、任意、use_cache=Trueが渡された場合またはconfig.use_cache=Trueの場合に返されます) — Cache のインスタンスです。詳細については、kv cache ガイドを参照してください。逐次デコーディングを高速化するために使用できる(
past_key_values入力参照)、事前計算済みの隠れ状態(自己注意ブロックのキーとバリュー)が含まれます。hidden_states (
tuple(torch.Tensor)、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返されます) —torch.Tensorのタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は(batch_size, sequence_length, hidden_size)です。各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
attentions (
tuple(torch.Tensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます) —torch.Tensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。