AHD-CMA / docs /algorithm.md
Akiyue's picture
Add files using upload-large-folder tool
b2077dd verified
|
Raw
History Blame Contribute Delete
5.05 kB

AHD-CMA — Algorithm reference

Mathematical exposition of the released AHD-CMA. See Research_Proposal_AHD-CMA_LoRA_ViT.md for the original scientific specification and docs/spec_deviations.md for every place the implementation diverges from that spec.


1. Problem setting

Given a fitness function f : [lb, ub]^d -> R (we minimise) and a budget of T generations with population N, find x* in argmin f(x).

For the LoRA-tuning use case the search space is the 11-dimensional mixed encoding from the proposal's §14 appendix; see src/ahdcma/search_space/encoder.py.

2. Initialization (chaotic Tent map)

The Tent map on [0, 1] is

T_mu(z) = z / mu                 if z < mu
          (1 - z) / (1 - mu)     otherwise

For mu = 0.499 the orbit is uniformly ergodic. We iterate per dimension to draw N quasi-uniform samples and rescale to the problem box. See src/ahdcma/search_space/tent_map.py.

We use mu = 0.499 (not 0.5) because exact 0.5 collapses to a fixed point for any binary-fraction z_0.

3. CMA-ES (via pycma)

CMA-ES is wrapped from the cma package. The wrapper calls ask -> evaluate -> tell exactly once per generation; bounds are provided to pycma's BoundaryHandler and we clip once more before fitness evaluation for robustness. See src/ahdcma/algorithms/cmaes_wrapper.py.

4. Dhole Optimization Algorithm (DOA)

Per Ghasemi et al. (Cluster Computing 2025), reproduced in Khlie et al. (ETASR 15(3), 2025):

  • Phase 1 — exploration / "attack toward prey":

    X_mean = mean(X_t)
    P      = X_best + r * (X_mean - X_worst),    r ~ U(0, 1)
    x_i^P1 = x_i + r * (P - I * x_i),    I ∈ {1, 2}, r ~ U(0, 1)
    

    Greedy elitist replacement: keep x_i^P1 only if f(x_i^P1) <= f(x_i).

  • Phase 2 — exploitation / "chase":

    x_i^P2 = x_i + (1 - 2 r) * (ub - lb) / t,   r ~ U(0, 1)
    

    Greedy elitist replacement.

The two phases run sequentially every iteration. DOA has only N and T as free parameters. See src/ahdcma/algorithms/doa.py.

5. Controller (probe-then-lock + stagnation bursts)

The proposal originally used an entropy + ruggedness rule. The Phase 5 acceptance test on CEC-2022 dim=10 showed that lag-1 random-walk autocorrelation does not separate smooth-from-rugged on the CEC-2022 search box, and the entropy threshold collapsed every run into EXPLORE mode. Replaced with:

  1. Probe phase: first stag_window generations always run pure CMA-ES (mode = exploit, k_top = N).
  2. Lock-in test at the end of probe:
    • if best fitness halved (or bigger absolute drop), or
    • if it is already below 1e-6, set cma_locked = True for the rest of the run.
  3. Stagnation burst (only if not locked): when the best-fitness improvement over the last stag_window generations is below 1e-4 of the running best (or stag_eps), burst into HYBRID mode for hybrid_burst generations. EXPLORE promotion is disabled by default (explore_burst = 0).
  4. Elitism: the global best individual is always preserved, so a hybrid burst that produces only worse samples cannot lose ground.

Mode definitions:

  • exploit — k_top = N, pure CMA-ES.
  • hybrid — k_top = round(0.3 N), CMA-ES on top, DOA on the rest.
  • explore — k_top = 0, pure DOA (rarely used).

Entropy and ruggedness signals are still computed and recorded in History so the paper's diagnostic figures work.

See src/ahdcma/algorithms/ahd_cma.py and the controller modules in src/ahdcma/controller/.

6. Convergence sketch

Per Solis & Wets (1981) generalised convergence:

  • Decreasing best: elitism guarantees f(x_t^*) >= f(x_{t+1}^*).
  • Positive sampling probability: the chaotic Tent init plus DOA's Phase-2 perturbation hit every measurable subset with non-zero probability.

Together these imply almost-sure convergence to the global optimum under mild regularity on f.

7. Hyperparameters (defaults)

See configs/algo/ahdcma.yaml for the canonical config. Key knobs:

key default role
population_size 20 N
max_generations 50 T
init.tent_iterations 100 Tent-map burn-in
cmaes.initial_sigma 0.4 initial CMA-ES step size
stagnation.window 8 probe length / stagnation window
stagnation.eps 1e-8 absolute improvement floor
stagnation.hybrid_burst 3 length of hybrid burst
stagnation.explore_burst 0 length of explore burst
controller.entropy_bins 10 diagnostic only
controller.ruggedness_walk_length 10 diagnostic only