pyloa:用python在线学习算法
pyloa的Python项目详细描述
pyloa-使用python在线学习算法
pyloa
是一个研究库,用于分析经典在线算法与现代机器的性能
学习,特别是强化学习,方法。Pyloa船有两种常见的
在线问题,如environments
:
(k,n)-paging-problem
带有一个cache_size k
和n pages
,用于一个页面请求序列(k,n)-coloring-problem
与k colors
一起,对于具有n vertices
的图
pyloa允许agents
是
- 受过需要在线解决方案的
enviroments
(问题定义)培训, - 根据常用的启发式或任何最新算法进行评估,
- 利用(推断可能最坏情况的问题实例)来确定解决方案的competitve ratio。
依赖关系
pyloa
是为python 3.5+开发的,具有以下包依赖项:
matplotlib==3.0.3scipy==1.2.1tensorflow==1.13.1tqdm==4.31.1numpy==1.16.2
安装
我们建议在virtual environment中使用pyloa
:
mkdir myproject
cd myproject
python3 -m venv virtualenv/
source virtualenv/bin/activate
pip install --upgrade pip setuptools
之后,您可以从最新的PyPI stable版本安装pyloa
pip install pyloa
或来自github上最新的development release
pip install git+https://github.com/pyloa/PyLoa.git
一般用法
pyloa
可以用三种不同的方法来分析在线问题;每种方法都通过所谓的运行模式来描述
(train
,eval
,gen
)。任何runemode都可以通过其位置参数调用,并且需要一个python配置文件。
pyloa {train,gen,eval} --config path/to/hyperparams.py
hyperparams描述了当前实验的设置;它必须保存名为params
的字典,而且必须
包含键instance
、environment
和agent
的词典。
params["ìnstance"]
:必须定义^{} 的子类实现的配置, 为域生成问题实例。例如,对于(k,n)-paging-problem
,一个简单的生成器可以 随机生成长度为sequence_size
的请求序列,而每个请求都在[1,n]范围内。params["agent"]
:必须定义^{} 的子类实现的配置, 它观察环境的一种状态,并相应地采取行动,接受奖励,并观察 转换状态s'
。对于玩具问题实例,一个简单的q-学习表实现就足够了。params["environment"]
:必须定义^{} 的子类实现的配置, 它使用一个问题实例,让代理play直到它终止。构成问题的environment
定义。
使用^{(5,6)-paging-problem
的最小示例
^{
pyloa train --config hyperparams.py
hyperparams.py如下:
frompyloa.instanceimportRandomSequenceGeneratorfrompyloa.environmentimportDefaultPagingEnvironmentfrompyloa.agentimportQTableAgent# varssequence_size=1000max_page=6min_page=1episodes=250# hyperparamsparams={'checkpoint_step':episodes//10,'instance':{'type':RandomSequenceGenerator,'sequence_size':sequence_size,'sequence_number':episodes,'min_page':min_page,'max_page':max_page,},'environment':{'type':DefaultPagingEnvironment,'sequence_size':sequence_size,'cache_size':5,'num_pages':max_page-min_page+1,},'agent':{'type':QTableAgent,'discount_factor':0.55,'learning_rate':0.001,'epsilon':0.0,'epsilon_delta':13/(episodes*10),'epsilon_max':0.99,'save_file':"/home/me/models/",},}
此示例在examples/0_train_qtable_paging/hyperparams.py中定义,可以使用
pyloa train --config examples/0_train_qtable_paging/hyperparams.py
结果运行可以看到here。总共有五个玩具例子,可以在任何系统上运行, 在examples目录中定义。
运行模式
pyloa有三种不同的运行模式:train
、eval
和gen
。对配置文件有一些细微的修改
根据所选的运行模式,我们鼓励检查示例以供参考(在站点上注意:超参数是加载和验证的
在pyloa.utils.load)中。从语义上讲,三种不同的运行模式代表:
- 训练:一个
RLAgent
将被训练为episode
-由一个InstanceGenerator
在他的environment
上生成的许多实例。 每checkpoint_step
-许多情况下,将保存RLAgent
的检查点。 - 评估:嵌套在
root_dir
中的所有经过训练的RLagents
都将在episode
上进行评估-由InstanceGenerator
生成的许多实例。 此外,还可以定义和评估不可培训的代理。 - gen:当前仅适用于
(k,n)-paging-problem
。遗传算法根据经验确定PagingAgent
(近似)竞争比。
每个运行模式将在其实验的输出目录中为tensorboard创建tfevent文件。