| """DualHead — the standard readout plus the L-012 aleph read, born null. |
| |
| logits = W_h h + W_s s(h), W_s == 0 at init |
| |
| s(h) is the signed address of a learned low-D projection of h through a |
| K_h-anchor head codebook. New structure enters at zero and earns its way |
| in by gradient — via WEIGHT-zero init, never gate-zero: mini-beatrix-1 |
| measured (8.4B tokens) that a gamma-gated branch DEADLOCKS (W_s grad is |
| scaled by gamma=0, gamma grad through a random frozen readout is |
| zero-mean noise), while the bank's E_out weight-zero self-started into |
| +2 bpb of function. gamma remains as a frozen scalar for checkpoint |
| compatibility and as the ablation knob; the election gauge is ||W_s|| |
| and the head_aleph_off toggle. |
| """ |
| from __future__ import annotations |
|
|
| import torch |
| import torch.nn as nn |
|
|
| from .address import AlephAddress |
|
|
|
|
| class DualHead(nn.Module): |
| def __init__(self, d: int, vocab: int, K: int = 512, D: int = 32, |
| tau: float = 0.1, tied_weight: nn.Parameter | None = None): |
| super().__init__() |
| self.tied = tied_weight is not None |
| if self.tied: |
| |
| |
| |
| self._tied_ref = (tied_weight,) |
| self.bias = nn.Parameter(torch.zeros(vocab)) |
| else: |
| self.w_h = nn.Linear(d, vocab, bias=True) |
| self.proj = nn.Linear(d, D, bias=False) |
| nn.init.orthogonal_(self.proj.weight) |
| self.addr = AlephAddress(K, D, tau) |
| self.w_s = nn.Linear(K, vocab, bias=False) |
| nn.init.zeros_(self.w_s.weight) |
| self.gamma = nn.Parameter(torch.ones(1)) |
| self.gamma.requires_grad_(False) |
|
|
| def forward(self, h, disable_aleph: bool = False): |
| if self.tied: |
| base = h @ self._tied_ref[0].T + self.bias |
| else: |
| base = self.w_h(h) |
| if disable_aleph: |
| return base |
| return base + self.gamma * self.w_s(self.addr.signed(self.proj(h))) |
|
|