深度学习库非常适合促进复杂可微函数的实现。这些函数通常具有 f(x) → y 之类的形状,其中 x 是一组输入张量,y 是通过对这些输入执行多次计算而产生的输出张量。为了实现一个新的 f 函数并创建一个新的原型,需要通过组合运算符组装各种块(或模块)。尽管过程简单,但这种方法无法处理顺序决策方法的实现。经典平台非常适合以有效的方式管理信息的获取、处理和转换。
当谈到强化学习 (RL) 时,所有这些实现都变得至关重要。经典的深度学习框架不足以捕捉代理与其环境的交互。尽管如此,仍然可以编写不能很好地集成到这些平台中的额外代码。已经考虑对这些任务使用多个强化学习 (RL) 框架,但它们仍然有两个缺点:
- 为了对更复杂的系统建模,一直在创建新的抽象。然而这些新想法通常具有较高的采用成本和较低的灵活性,这使得可能不熟悉强化学习技术的外行人难以理解。
- RL 的用例与其解决的问题一样广泛多样。出于这个原因,在这些平台上没有一刀切的所有库,因为每个平台都旨在解决特定类型的问题,从基于模型的算法到批处理或多代理播放策略,等等事情——但不能做所有的事情。
作为上述两个问题的解决方案,Facebook 研究人员引入了“SaLinA”。SaLina 致力于实现顺序决策过程,包括与强化学习相关、自然和简单的从业者,对如何实现神经网络有基本的了解。SaLina 建议通过使用顺序处理信息的简单“代理”来解决任何顺序决策问题。目标受众不仅是 RL 研究人员或计算机视觉研究人员,而且是 NLP 专家,正在寻找一种自然的方式在模型中对对话进行建模,使它们比以前的方法更直观、更容易理解。
SaLinA 是 PyTorch 的扩展。它有一个易于理解和维护的核心代码,总共只有一百行。
SaLina 的主要优势:
- SaLina 易于理解和用于基于顺序决策的模型。这个接口没有隐藏的机制,所以它在 Pytorch 中会感觉很熟悉。使用 SaLina可以轻松创建复杂的决策序列,而不会迷失或困惑。
- SaLinA 允许通过将简单的代理与预定义的容器相结合来构建复杂的代理。
- SaLinA 是一个非常灵活的 AI 框架。它带有将 openAI Gym 环境捕获为代理的包装器、DataLoader 用于开发复杂模型和 Brax 环境,后者允许使用重放缓冲区快速实现多种不同类型的架构,因此工作区可以保存在磁盘上,而无需将它们全部保存在内存中立即使批量强化学习比其他方式更容易。
- SaLinA 提供了一个 NRemoteAgent 包装器,可以在多个进程中执行任何代理,加速特定代理的计算。除了使用此库在计算机的 CPU 或 GPU 上运行算法之外,它还可以通过仅在必要时进行少量修改来简化扩展。
论文:
https://arxiv.org/pdf/2110.07910.pdf
Github:
https://github.com/facebookresearch/salina