应用场景

机器学习在小数据集情况下捉襟见肘

  • 数据集收集不到:新药物发现
  • 数据不足:小样本翻译(小语种平型语料少)、冷启动项目推荐(向新用户推送)
  • 大规模数据负担

小样本学习有三种使用场景:

  • 作为像人类一样学习的试验台:用少量例子生成新字符样本
  • 罕见案例学习:正确分配有毒或无毒分子药物的百分比
  • 减少数据收集工作和计算成本

定义

根据机器学习定义:从经验E中学习到的,性能P可以来衡量任务T的一个计算机程序。小样本学习(few-shot learning)中的E一部分是少量的监督信息,另一部分是先验知识

数据解决方法

数据增强:

  • 把每个(xi,yix_i,y_i)转换为多个样例
  • 训练分类器将目标标签的数据提取加入到原数据集中
  • 聚合和调整相似数据集中的数据

缺点:扩充策略泛化能力差,特别是跨域数据

模型解决方法

  • 多任务学习:在存在多个相关任务的情况下,Few-shot任务会受其他任务的约束,这种约束有两种方式,一种是参数共享(Parameter Sharing),另一种是参数绑定(Parameter Tying)。
  • 嵌入学习:将一个样本x嵌入到低维空间z中,在这个空间中,相似和不相似的数据对就能够很容易识别,嵌入函数主要由先验知识所学得。
  • 外部记忆学习:从训练集中提取知识存储在外部内存中,测试集由内存中内容的加权值表示
  • 生成模型:借助先验知识来估计参数的分布。相似的任务具有相似的先验概率,或者稀缺样本可能与来自其他任务的样本共享一些较小的可分解组件

算法解决方法

  • 细化现有参数:从相关任务学习表征大规模数据中的一般结构的参数θ0\theta_0,通过迭代微调适应本任务,微调方法如下:
    • 正则化,易过拟合(提早停止、选择性更新、使用模型回归网络)
    • 聚合参数,聚合多个其他模型的参数
    • 学习表征训练集特性的新参数δ\delta
  • 细化元学习模型:用meta-learning细化meta-learned参数θ0\theta_0(调整步长和搜索方向)
    • 结合具体任务信息,针对新任务取初始化参数的子集
    • 对不确定性进行建模
    • 改进细化方法
  • 学习优化器:不使用梯度下降,而是学习一个优化器,它可以直接输出θ的更新。这样就无需调整步长α或查找搜索方向

未来的工作

  • 使用多模态数据扩充样本集
  • 跨任务学习、meta-learning值得继续研究。现实中有大量的任务,但关联性未知,故不能直接迁移
  • 在流应用中新任务不断出现,如何避免旧任务被遗忘是个问题
  • 假设空间和搜索策略依赖人的设计,Automated machine learning (AutoML)通过构造任务感知的机器学习模型,在许多应用中取得了最新的进展
  • 对FSL算法的收敛性还没有完全了解

参考文献

综述:Generalizing from a Few Examples: A Survey on Few-Shot Learning

论文跟踪:https://github.com/tata1661/FSL-Mate/tree/master/FewShotPapers