Repository navigation
Release 0.95.2: a lesson teaches the fixed point the act is taken from - #279
Merged
Merged
Conversation
…tles from `Brain._teach` settled the lesson's free phase from rest (`warm=self._warm(drive, None)`) while the act settles warm from the stream (`self._warm(drive, self._activity())`). In a deep reciprocal brain one observation can hold two stable states: the lesson judged and corrected the rest one, which often gave the shown answer, while the act kept answering from the warm one, so lessons never corrected play. The free phase starts where the act's settle starts: rest after `reset` and for streams that have not acted, so lessons without a stream state teach as on 0.95.1, to the bit. Tests (tests/test_lesson_warm_start.py): a deep brain whose cue holds two fixed points under one drive, where ten lessons from rest leave the act wrong and ten from the stream correct it; the lesson's warm start is the stream's state, inside `step` the state the step's act settles from, on torch the state on the device, with a learned code its phase in it; after `reset` and before any act the lesson equals the lesson from rest to the bit (default, recall=False, two regions, qualified). Re-recorded: the recorded lives that teach after an act (CADENCE_FUSED=0 gate) read new checkpoint digests, efficacies moved by at most 0.0021, 2 of 271 acts differ. The index-read instrument takes `warm=True` for the recall memory's moment-for-moment comparisons; its recorded runs keep the lesson from rest. The lesson-target twins compare copies, since a lesson from the state an act left reads the block products that state keeps, which a copy leaves out. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Version 0.95.2 in pyproject.toml and cadence.__version__; install pins and released documentation links name 0.95.2; CHANGELOG states the change with its measurements and notes the nudged phases near agreement (`nudged_fixed`) and `Learner.synapse_rate` of zero. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release 0.95.2:
Brain.lessonstarts its free phase from the stream's activity the act settles from, where it started from rest.The defect
The act settles warm from the stream (
_warm(drive, _activity()));Brain._teachsettled the lesson's free phase from rest (_warm(drive, None)). In a deep reciprocal brain one observation can hold two stable states. The lesson judged and corrected the rest state, which often gave the shown answer, while the act kept answering from the warm one, so lessons never corrected play. A deep three-region brain continued for 4,000 moments on a game task read 0.016 with the lesson from rest and 0.422 with the warm free phase (diagnosis measurement).The fix
One line in
Brain._teach:warm=self._warm(drive, self._activity()), the warm start the act's own settle uses (learned code phase included). Rest afterresetand for streams that have not acted, so lessons without a stream state are bit-identical to 0.95.1. Surprise judging restricts the warm state to the taught rows (existing path); replay, rehearsal andstep(..., teacher=)teach from the state their act settles from; torch passes the state on the device.Behaviour change, measured before/after on the CPU
recall=False, one region, 3 seeds: teacher-matching sampled acts over moments 200-299Tests whose expected values changed: the 8 recorded lives above (tests/test_recall_memory.py stepped/taught, test_learned_code.py stepped/taught/region, test_observation_code.py image/stepped, test_reset_arousal.py stepped). The recall memory's moment-for-moment comparisons with the index-read instrument pass the instrument a new
warm=True(default False keeps its recorded runs). The lesson-target twin tests compare copies (a lesson from an act's state reads the block products the state keeps; a deep copy leaves them out, a last-bit difference). Every other test and benchmark assertion holds unchanged.Notes in the CHANGELOG (no code change)
nudged_fixed=True.teaching="deep"(the default with the recall memory) runs them their whole budget. Defaults unchanged.Learner.synapse_rateof zero holds efficacies, not biases, and the optimizer moments keep reading the held synapse's contrast.Checks (this Mac)
CADENCE_FUSED=0): 206 passed.🤖 Generated with Claude Code