Transformers 文件

軌跡Transformer

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

軌跡Transformer

PyTorch

該模型僅處於維護模式,因此我們不會接受任何更改其程式碼的新 PR。

如果在執行此模型時遇到任何問題,請重新安裝支援此模型的最後一個版本:v4.30.0。您可以透過執行以下命令進行安裝:`pip install -U transformers==4.30.0`。

概述

軌跡Transformer模型由Michael Janner、Qiyang Li、Sergey Levine在離線強化學習作為一個大的序列建模問題中提出。

論文摘要如下:

強化學習(RL)通常關注估計平穩策略或單步模型,利用馬爾可夫屬性在時間上分解問題。然而,我們也可以將RL視為一個通用的序列建模問題,目標是生成一個導致高獎勵序列的動作序列。從這個角度來看,我們不禁思考,在其他領域(例如自然語言處理)中表現良好的高容量序列預測模型是否也能為RL問題提供有效的解決方案。為此,我們探索如何利用序列建模工具解決RL問題,使用Transformer架構對軌跡分佈進行建模,並將波束搜尋重新用作規劃演算法。將RL構建為序列建模問題簡化了一系列設計決策,使我們能夠省去離線RL演算法中常見的許多元件。我們展示了這種方法在長時程動力學預測、模仿學習、目標條件RL和離線RL方面的靈活性。此外,我們還表明,這種方法可以與現有無模型演算法相結合,在稀疏獎勵、長時程任務中產生最先進的規劃器。

該模型由CarlCochet貢獻。原始程式碼可在此處找到。

用法提示

此Transformer用於深度強化學習。要使用它,您需要從所有先前的時間步的動作、狀態和獎勵中建立序列。此模型將所有這些元素一起視為一個大序列(軌跡)。

TrajectoryTransformerConfig

class transformers.TrajectoryTransformerConfig

< >

( vocab_size = 100 action_weight = 5 reward_weight = 1 value_weight = 1 block_size = 249 action_dim = 6 observation_dim = 17 transition_dim = 25 n_layer = 4 n_head = 4 n_embd = 128 embd_pdrop = 0.1 attn_pdrop = 0.1 resid_pdrop = 0.1 learning_rate = 0.0006 max_position_embeddings = 512 initializer_range = 0.02 layer_norm_eps = 1e-12 kaiming_initializer_range = 1 use_cache = True pad_token_id = 1 bos_token_id = 50256 eos_token_id = 50256 **kwargs )

引數

  • vocab_size (int, optional, 預設為100) — TrajectoryTransformer模型的詞彙量大小。定義了呼叫TrajectoryTransformerModel時傳遞的trajectories可以表示的不同token的數量。
  • action_weight (int, optional, 預設為5) — 損失函式中動作的權重
  • reward_weight (int, optional, 預設為1) — 損失函式中獎勵的權重
  • value_weight (int, optional, 預設為1) — 損失函式中值的權重
  • block_size (int, optional, 預設為249) — 軌跡Transformer中塊的大小。
  • action_dim (int, optional, 預設為6) — 動作空間的維度。
  • observation_dim (int, optional, 預設為17) — 觀測空間的維度。
  • transition_dim (int, optional, 預設為25) — 轉換空間的維度。
  • n_layer (int, optional, 預設為4) — Transformer編碼器中的隱藏層數量。
  • n_head (int, optional, 預設為4) — Transformer編碼器中每個注意力層的注意力頭數量。
  • n_embd (int, optional, 預設為128) — 嵌入和隱藏狀態的維度。
  • resid_pdrop (float, optional, 預設為0.1) — 嵌入、編碼器和池化器中所有全連線層的Dropout機率。
  • embd_pdrop (int, optional, 預設為0.1) — 嵌入的Dropout比率。
  • attn_pdrop (float, optional, 預設為0.1) — 注意力層的Dropout比率。
  • hidden_act (strfunction, optional, 預設為"gelu") — 編碼器和池化器中的非線性啟用函式(函式或字串)。如果為字串,支援"gelu", "relu", "selu""gelu_new"
  • max_position_embeddings (int, optional, 預設為512) — 此模型可能使用的最大序列長度。通常為了以防萬一設定為較大的值(例如512、1024或2048)。
  • initializer_range (float, optional, 預設為0.02) — 用於初始化所有權重矩陣的截斷正態初始化器的標準差。
  • layer_norm_eps (float, optional, 預設為1e-12) — 層歸一化層使用的epsilon。
  • kaiming_initializer_range (float, optional, 預設為1) — 用於EinLinear層中kaiming初始化器整流器負斜率的縮放係數。
  • use_cache (bool, optional, 預設為True) — 模型是否應返回最後一個鍵/值注意力(並非所有模型都使用)。僅當config.is_decoder=True時相關。
  • 示例

這是一個配置類,用於儲存TrajectoryTransformerModel的配置。它用於根據指定的引數例項化TrajectoryTransformer模型,定義模型架構。使用預設值例項化配置將生成與TrajectoryTransformer CarlCochet/trajectory-transformer-halfcheetah-medium-v2架構類似的配置。

配置物件繼承自PretrainedConfig,可用於控制模型輸出。有關更多資訊,請參閱PretrainedConfig的文件。

>>> from transformers import TrajectoryTransformerConfig, TrajectoryTransformerModel

>>> # Initializing a TrajectoryTransformer CarlCochet/trajectory-transformer-halfcheetah-medium-v2 style configuration
>>> configuration = TrajectoryTransformerConfig()

>>> # Initializing a model (with random weights) from the CarlCochet/trajectory-transformer-halfcheetah-medium-v2 style configuration
>>> model = TrajectoryTransformerModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

TrajectoryTransformerModel

class transformers.TrajectoryTransformerModel

< >

( config )

引數

  • config (TrajectoryTransformerConfig) — 模型配置類,包含模型的所有引數。用配置檔案初始化並不會載入與模型相關的權重,只加載配置。請檢視from_pretrained()方法來載入模型權重。

裸露的TrajectoryTransformer模型,直接輸出原始隱藏狀態,沒有新增任何特定的頭部。這個模型是PyTorch torch.nn.Module的子類。將其作為常規的PyTorch模組使用,並參考PyTorch文件中所有與通用用法和行為相關的事項。

完整的GPT語言模型,上下文大小為`block_size`。

前向傳播

< >

( trajectories: typing.Optional[torch.LongTensor] = None past_key_values: typing.Optional[tuple[tuple[torch.Tensor]]] = None targets: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.models.deprecated.trajectory_transformer.modeling_trajectory_transformer.TrajectoryTransformerOutput or tuple(torch.FloatTensor)

引數

  • trajectories (torch.LongTensor,形狀為(batch_size, sequence_length)) — 一批軌跡,其中軌跡是狀態、動作和獎勵的序列。
  • past_key_values (tuple[tuple[torch.Tensor]],長度為config.n_layers可選) — 包含模型計算的預計算隱藏狀態(注意力塊中的鍵和值)(請參見下面的past_key_values輸出)。可用於加速順序解碼。已提供過去狀態的input_ids不應作為input_ids傳入,因為它們已被計算。
  • targets (torch.LongTensor,形狀為(batch_size, sequence_length)可選) — 用於計算損失的期望目標。
  • attention_mask (torch.FloatTensor,形狀為(batch_size, sequence_length)可選) — 遮罩,避免對填充token索引執行注意力操作。遮罩值選擇在[0, 1]之間:

    • 1表示未被遮罩的token,
    • 0表示被遮罩的token。

    什麼是注意力遮罩?

  • use_cache (bool, optional) — 如果設定為True,將返回past_key_values鍵值狀態,可用於加速解碼(請參見past_key_values)。
  • output_attentions (bool, optional) — 是否返回所有注意力層的注意力張量。更多詳細資訊請參見返回張量下的attentions
  • output_hidden_states (bool, optional) — 是否返回所有層的隱藏狀態。更多詳細資訊請參見返回張量下的hidden_states
  • return_dict (bool, optional) — 是否返回ModelOutput而不是普通元組。

返回

transformers.models.deprecated.trajectory_transformer.modeling_trajectory_transformer.TrajectoryTransformerOutputtuple(torch.FloatTensor)

一個transformers.models.deprecated.trajectory_transformer.modeling_trajectory_transformer.TrajectoryTransformerOutput或一個torch.FloatTensor的元組(如果傳入return_dict=Falseconfig.return_dict=False),包含根據配置(TrajectoryTransformerConfig)和輸入而定的各種元素。

  • loss (torch.FloatTensor,形狀為 (1,)可選,當提供 labels 時返回) — 語言建模損失。
  • logits (形狀為 (batch_size, sequence_length, config.vocab_size)torch.FloatTensor) — 語言建模頭部的預測分數(SoftMax 之前的每個詞彙標記的分數)。
  • past_key_values (tuple[tuple[torch.Tensor]], optional, 當傳入use_cache=Trueconfig.use_cache=True時返回) — 長度為config.n_layers的元組,包含形狀為(batch_size, num_heads, sequence_length, embed_size_per_head)的張量元組。包含預計算的隱藏狀態(注意力塊中的鍵和值),可用於加速順序解碼(請參見past_key_values輸入)。
  • hidden_states (tuple(torch.FloatTensor), 可選, 當傳入output_hidden_states=Trueconfig.output_hidden_states=True時返回) — torch.FloatTensor 的元組(一個用於嵌入輸出,一個用於每個層輸出),形狀為 (batch_size, sequence_length, hidden_size)。模型在每個層輸出後的隱藏狀態以及初始嵌入輸出。
  • attentions (tuple(torch.FloatTensor), 可選, 當傳入output_attentions=Trueconfig.output_attentions=True時返回) — torch.FloatTensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)。GPT2Attentions 在注意力softmax後的權重,用於計算自注意力頭中的加權平均值。

TrajectoryTransformerModel的前向方法,覆蓋了__call__特殊方法。

儘管前向傳遞的實現需要在此函式中定義,但在此之後應呼叫`Module`例項,而不是此函式本身,因為前者負責執行預處理和後處理步驟,而後者會默默忽略它們。

示例

>>> from transformers import TrajectoryTransformerModel
>>> import torch

>>> model = TrajectoryTransformerModel.from_pretrained(
...     "CarlCochet/trajectory-transformer-halfcheetah-medium-v2"
... )
>>> model.to(device)
>>> model.eval()

>>> observations_dim, action_dim, batch_size = 17, 6, 256
>>> seq_length = observations_dim + action_dim + 1

>>> trajectories = torch.LongTensor([np.random.permutation(self.seq_length) for _ in range(batch_size)]).to(
...     device
... )
>>> targets = torch.LongTensor([np.random.permutation(self.seq_length) for _ in range(batch_size)]).to(device)

>>> outputs = model(
...     trajectories,
...     targets=targets,
...     use_cache=True,
...     output_attentions=True,
...     output_hidden_states=True,
...     return_dict=True,
... )
< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.