Wang's blog

进阶 - 元学习

Published on

简介

普通的机器学习算法从训练数据中学习出规律,之后用来对新的数据进行预测。元学习,意为“学习如何学习”,也是一个机器学习算法,不过它学习的目标不是某一个具体任务,而是学习任务本身。Qlib提供了元控制器模块用于进行元学习,该模块可以从一系列预测任务中学习出规律,用于指导之后的预测任务。用户可以基于元控制器模块实现自己的元模型。

元任务

元任务实例是元学习框架的基本元素,它保存有元模型能够使用的数据。多个元任务实例可以使用相同的由元数据集控制的数据处理器。用户应当使用prepare_task_data函数获取能够直接输入元模型的数据。

元数据集

元数据集控制元信息的生成过程,它负责为训练元模型提供数据。用户应当使用prepare_tasks函数获取一个元任务实例列表。

元模型

通用元模型

元模型实例是控制工作流的部分。元模型的使用方式是:

  • 通过fit函数训练元模型
  • 通过inference函数给出有用的信息以指导工作流

元任务模型

此类元模型可以直接与任务定义交互,它们通过修改基础任务的定义对其进行指导。可以使用prepare_tasks函数获取修改后的基础任务定义。

元指导模型

此类元模型参与基础模型的训练过程,它们通过在基础模型训练时进行指导以提高其性能。

例子

Qlib提供了元模型的一个实现:DDG-DA,它可以适应市场的变化。DDG-DA包含以下4个步骤:

  • 计算元信息并封装进元任务实例,所有元任务构成一个元数据集实例
  • 使用元数据集中的训练数据训练DDG-DA
  • 推理DDG-DA以获取指导信息
  • 在基础模型上应用指导信息以提高其性能

例子可以在文件examples/benchmarks_dynamic/DDG-DA/workflow.py中找到。