Lesson 1 · b003, the kernel
The walk that learned to stand
Ask either walker for 0.10 m/s and it stands still: Pollen's walker moves at 0.002 m/s, and duckbatch's 26,254-parameter student at 0.007. Asked to turn on the spot at 1.0 rad/s, the student manages 0.211. Our first fine-tune, b003, set out to close this dead band.
The walking task pays for tracking its command with a kernel, exp(−e2/σ2) of the gap e, and at Pollen's width, σ = 0.316 m/s, standing still when asked for 0.10 collects about 90% of the pay. So b003 narrowed σ to 0.1, narrowed turning's width too, and fine-tuned for 1,500 iterations.
The duck stood more: 0.060 m/s when asked for 0.30, against the student's 0.108, and 0.017 rad/s of turning, yet its logged tracking reward rose over the run. At σ = 0.1, managing 0.10 of a 0.30 command earns exp(−4) ≈ 0.018 of the pay, and standing exp(−9) ≈ 0.0001, so a first step paid nothing while other terms still paid for standing.
pay = w · exp(−e2/σ2): the narrower σ, the less a step toward the command pays.
The figure
- Ask. Three ducks are asked for 0.30 m/s. One stands, one manages 0.10, one walks the command.
- Wide kernel. At σ = 0.316 the pay climbs all the way: 0.41 for standing, 0.67 for 0.10, all of it at 0.30.
- Narrow kernel. At σ = 0.1 the slope is gone: 0.0001 for standing, 0.018 for 0.10.
- What PPO did. The student's speeds and b003's, command by command: slower everywhere, and hardly turning.
- What the log said. The kernel lies down and b003's own record of its tracking pay stands up: rising over the run, while the final duck was slower at every command.
Big idea: a reward teaches through its slope. Take away the pay for partial progress, and the cheapest thing left to learn is standing still.