ReinforcementLearning.jl,as the name says, is a package for reinforcement learning research in Julia.
Our design principles are:
julia> ] add ReinforcementLearning
julia> using ReinforcementLearning
julia> run(
RandomPolicy(),
CartPoleEnv(),
StopAfterStep(1_000),
TotalRewardPerEpisode()
)
The above simple example demonstrates four core components in a generalreinforcement learning experiment:
Policy. TheRandomPolicy
is the simplest instance ofAbstractPolicy
.It generates a random action at each step.
Environment. TheCartPoleEnv
is a typicalAbstractEnv
to test reinforcement learning algorithms.
Stop Condition. TheStopAfterStep(1_000)
is to inform that our experiment should stop after1_000
steps.
Hook. TheTotalRewardPerEpisode
structure is one of the most commonAbstractHook
s.It is used to collect the total reward of each episode in an experiment.
Check out the tutorial page to learn how these fourcomponents are assembled together to solve many interesting problems. We alsowrite blog occasionally toexplain the implementation details of some algorithms. Among them, the mostrecommended one is An Introduction toReinforcementLearning.jl,which explains the design idea of this package. Besides, a collection ofexperiments are also provided to help you understand how to trainor evaluate policies, tune parameters, log intermediate data, load or saveparameters, plot results and record videos. For example:
ReinforcementLearning.jl
itself is just a wrapper around several othersubpackages. The relationship between them is depicted below:
+-----------------------------------------------------------------------------------+ | | | ReinforcementLearning.jl | | | | +------------------------------+ | | | ReinforcementLearningBase.jl | | | +----|-------------------------+ | | | | | | +--------------------------------------+ | | +---->+ ReinforcementLearningEnvironments.jl | | | | +--------------------------------------+ | | | | | | +------------------------------+ | | +---->+ ReinforcementLearningCore.jl | | | +----|-------------------------+ | | | | | | +-----------------------------+ | | +---->+ ReinforcementLearningZoo.jl | | | +----|------------------------+ | | | | | | +-------------------------------------+ | | +---->+ DistributedReinforcementLearning.jl | | | +-------------------------------------+ | | | +------|----------------------------------------------------------------------------+ | | +-------------------------------------+ +---->+ ReinforcementLearningExperiments.jl | | +-------------------------------------+ | | +----------------------------------------+ +---->+ ReinforcementLearningAnIntroduction.jl | +----------------------------------------+
ReinforcementLearning.jl
is a MIT licensed open source project with itsongoing development made possible by many contributors in their spare time.However, modern reinforcement learning research requires huge computingresource, which is unaffordable for individual contributors. So if you or yourorganization could provide the computing resource in some degree and would liketo cooperate in some way, please contact us!
If you use ReinforcementLearning.jl
in a scientific publication, we wouldappreciate references to the CITATION.bib.
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!