Repository navigation
Fix centered RMSprop: clamp the variance, keep eps inside the root - #80
Merged
Merged
Conversation
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.
What this changes
Centered RMSprop clamps the variance estimate at zero before the square root, so cancellation in
E[g²] - E[g]²can no longer produce a NaN denominator.epsstays inside the root, as before. The two centered tests assert that every step is finite and at or underlr·|g|/√eps.Why
This is #73 with one correction. The clamp is the fix for #12. Moving
epsoutside the root, which #73 also did, makes the steplr/epsonce the variance estimate reaches zero, which it does exactly inf32for a constant gradient after about 155 steps: ten thousand times the previous step, the opposite of what that change was meant to do. Withepsinside, the step is capped atlr·|g|/√eps, and the tests now check that cap, which the outside placement fails. The contributor's commit is kept with their authorship. Landing from a branch in this repository because the fork's branch cannot be updated from here.Closes #12.
How it was verified
cargo testpassescargo clippy --all-targets -- -D warningsis cleancuda_parityon a GPU--releaseThe rmsprop unit tests pass locally; CI runs the rest.
Checklist
tensor/opsandautograd/opsstill mirror each other///docs