src.baseline.metabbo.symbol

Module Contents

Classes

Critic

Memory

SYMBOL

Introduction

The paper “SYMBOL: Generating Flexible Black-Box Optimizers through Symbolic Equation Learning” introduces a novel framework, SYMBOL, designed to automate the discovery of advanced black-box optimizers using symbolic equation learning. Unlike traditional Meta-Black-Box Optimization (MetaBBO) methods that rely on predefined, hand-crafted optimizers, SYMBOL employs a Symbolic Equation Generator (SEG) to dynamically produce closed-form optimization rules tailored to specific tasks and optimization steps. The framework incorporates reinforcement learning-based strategies to efficiently meta-learn these symbolic rules.

LSTM

LSTM_Memory

Tokenizer

MyTokenizer

Functions

API

class src.baseline.metabbo.symbol.Critic(fea_dim, value_dim)[source]

Bases: torch.nn.Module

Initialization

forward(x)[source]
class src.baseline.metabbo.symbol.Memory[source]

Initialization

clear_memory()[source]
class src.baseline.metabbo.symbol.SYMBOL(config)[source]

Bases: src.rl.ppo.PPO_Agent

Introduction

The paper “SYMBOL: Generating Flexible Black-Box Optimizers through Symbolic Equation Learning” introduces a novel framework, SYMBOL, designed to automate the discovery of advanced black-box optimizers using symbolic equation learning. Unlike traditional Meta-Black-Box Optimization (MetaBBO) methods that rely on predefined, hand-crafted optimizers, SYMBOL employs a Symbolic Equation Generator (SEG) to dynamically produce closed-form optimization rules tailored to specific tasks and optimization steps. The framework incorporates reinforcement learning-based strategies to efficiently meta-learn these symbolic rules.

Original Paper

Symbol: Generating Flexible Black-Box Optimizers through Symbolic Equation Learning.” The Twelfth International Conference on Learning Representations. (2024)

Official Implementation

SYMBOL

Application Scenario

single-object optimization problems(SOOP)

Args:

`config`: Configuration object containing all necessary parameters for experiment.For details you can visit config.py.

Attributes:

config (object): Configuration object with various hyperparameters and settings.
tokenizer (MyTokenizer): Tokenizer instance used for processing sequences.
actor (LSTM): Actor network for generating actions.
critic (Critic): Critic network for evaluating states.
optimizer (torch.optim.Optimizer): Optimizer for training the actor and critic networks.
learning_time (int): Counter for the number of learning steps performed.
cur_checkpoint (int): Counter for the current checkpoint during training.

Methods:

__str__():
    Returns the string representation of the class.
train_episode(envs, seeds, para_mode='dummy', compute_resource={}, tb_logger=None, required_info={}):
    Trains the agent for one episode using the provided environments.
    Args:
        envs (list): List of environments for training.
        seeds (Optional[Union[int, List[int], np.ndarray]]): Seeds for environment initialization.
        para_mode (Literal['dummy', 'subproc', 'ray', 'ray-subproc']): Parallelization mode.
        compute_resource (dict): Resources for computation (e.g., CPUs, GPUs).
        tb_logger (object): TensorBoard logger for logging training metrics.
        required_info (dict): Additional information required from the environment.
    Returns:
        Tuple[bool, dict]: A tuple containing a boolean indicating if training has ended and a dictionary with training information.
rollout_episode(env, seed=None, required_info={}):
    Executes a single rollout episode in the given environment.
    Args:
        env (object): Environment for the rollout.
        seed (Optional[int]): Seed for environment initialization.
        required_info (dict): Additional information required from the environment.
    Returns:
        dict: A dictionary containing rollout results.

Returns:

None

Raises:

AssertionError: If a NaN value is found in the loss during training.

Initialization

Initializes the PPO agent with the given configuration, networks, and learning rates.Store the initial agent in the checkpoint directory.

Args:

  • config: Configuration object containing all necessary parameters for the experiment.

  • networks (dict): A dictionary of neural networks used by the agent.

  • learning_rates (float): Learning rate for the optimizer.

__str__()[source]
train_episode(envs, seeds: src.rl.ppo.Optional[src.rl.ppo.Union[int, List[int], numpy.ndarray]], para_mode: src.rl.ppo.Literal[dummy, subproc, ray, ray - subproc] = 'dummy', compute_resource={}, tb_logger=None, required_info={})[source]
rollout_episode(env, seed=None, required_info={})[source]
class src.baseline.metabbo.symbol.LSTM(max_layer, hidden_dim, num_layers, max_c, min_c, fea_dim, c_interval, tokenizer)[source]

Bases: torch.nn.Module

Initialization

forward(x, save_data=False, fix_action=None)[source]
get_random_seq(bs)[source]
class src.baseline.metabbo.symbol.LSTM_Memory[source]

Initialization

get_dict()[source]
src.baseline.metabbo.symbol.get_binary(action, code_len)[source]
src.baseline.metabbo.symbol.get_choice(output, mask, code_len, fix_choice=None)[source]
src.baseline.metabbo.symbol.get_c(output, min_c, interval, fix_c=None)[source]
class src.baseline.metabbo.symbol.Tokenizer[source]

Initialization

SPECIAL_SYMBOLS[source]

None

SPECIAL_FLOAT_SYMBOLS[source]

None

SPECIAL_OPERATORS[source]

None

SPECIAL_INTEGERS[source]

None

abstractmethod encode(expr)[source]
abstractmethod decode(expr)[source]
abstractmethod is_unary(token)[source]
abstractmethod is_binary(token)[source]
abstractmethod is_leaf(token)[source]
get_constant_ids()[source]
class src.baseline.metabbo.symbol.MyTokenizer[source]

Bases: src.baseline.metabbo.symbol.Tokenizer

Initialization

decode(expr)[source]
encode(expr)[source]
is_consts(id)[source]
is_binary(token)[source]
is_unary(token)[source]
is_leaf(token)[source]
is_var(token)[source]
src.baseline.metabbo.symbol.construct_action(seq, const_seq, tokenizer)[source]
src.baseline.metabbo.symbol.get_mask(pre_seq, tokenizer, position, max_layer)[source]
src.baseline.metabbo.symbol.which_layer(position)[source]
src.baseline.metabbo.symbol.left_or_right(position, root)[source]
src.baseline.metabbo.symbol.have_continous_const(seq, position, tokenizer)[source]
src.baseline.metabbo.symbol.continus_mul_c(seq, position, tokenizer)[source]
src.baseline.metabbo.symbol.get_along_continuous_mul(tokenizer, seq, begin, visited)[source]
src.baseline.metabbo.symbol.test_pre(target_vocab, pre_vocab, tokenizer)[source]
src.baseline.metabbo.symbol.get_along_continuous_plus_with_minus(tokenizer, seq, begin, visited)[source]
src.baseline.metabbo.symbol.get_along_continuous_plus(tokenizer, seq, begin, visited)[source]
src.baseline.metabbo.symbol.along_continuous_plus(tokenizer, seq, neg_ancestor)[source]
src.baseline.metabbo.symbol.find_prefix_of_token_ancestor(tokenizer, seq, position, token)[source]
src.baseline.metabbo.symbol.get_prefix(seq, sub_root)[source]
src.baseline.metabbo.symbol.get_prefix_with_consts(seq, consts, sub_root)[source]
src.baseline.metabbo.symbol.get_next_position(seq, choice, position, tokenizer)[source]
src.baseline.metabbo.symbol.get_str_prefix(seq, const_vals, tokenizer)[source]
src.baseline.metabbo.symbol.prefix_to_infix(expr, constants, tokenizer: src.baseline.metabbo.symbol.Tokenizer)[source]
src.baseline.metabbo.symbol.expr_to_func(sympy_expr, variables: List[str])[source]