STCH

class torchjd.scalarization.STCH(mu, weights=None, reference=None)[source]

Scalarizer that combines the input tensor of values using smooth Tchebycheff scalarization, as defined in Smooth Tchebycheff Scalarization for Multi-Objective Optimization.

It returns

\[\mu \log \sum_{i=1}^m \exp\left(\frac{\lambda_i (f_i - z_i^*)}{\mu}\right),\]

a smooth approximation of the (non-differentiable) weighted maximum \(\max_i \lambda_i (f_i - z_i^*)\) that becomes tighter as mu decreases.

Following the paper’s notation:

  • \(f_i\) is the \(i\)-th input value (the \(i\)-th objective),

  • \(m\) is the number of objectives (the number of elements of the input),

  • \(\lambda_i\) is its preference weight (the weights parameter),

  • \(z_i^*\) is the \(i\)-th component of the ideal point (the reference parameter),

  • \(\mu\) is the smoothing parameter (the mu parameter).

Parameters:
  • mu (float) – The smoothing parameter \(\mu\). Must be strictly positive. Smaller values make the scalarization closer to the maximum. The paper evaluates \(\mu \in \{0.01, 0.1, 0.5, 1\}\) and reports that a small \(\mu\) works reasonably well, while no single value is best across all problems.

  • weights (Tensor | None) – The preference vector \(\lambda\) applied to the values (in the paper, on the probability simplex). If None, a uniform preference summing to one is used. If provided, it must have the same shape as the values passed at call time.

  • reference (Tensor | None) – The ideal point \(z^*\) subtracted from the values. If None, no shift is applied. If provided, it must have the same shape as the values passed at call time.

__call__(values, /)[source]

Computes the scalar value from the input tensor of values and applies all registered hooks.

Parameters:

values (Tensor) – The tensor of values to scalarize. May be of any shape.

Return type:

Tensor