Hexo

凡事预则立,不预则废


  • Home

  • Tags

  • Archives

  • Navigation

  • Search

ML——课程学习


整体说明

  • 在机器学习领域,课程学习(Curriculum Learning,CL) 训练策略,适用场景广泛,包括监督学习,强化学习等场景
  • 课程学习的核心思想是让模型从简单任务逐步过渡到复杂任务,如同人类在学习新知识时先掌握基础概念,再逐渐挑战更难的内容
  • 思路 :人类学习遵循“从易到难”的顺序,课程学习希望通过模拟这一过程,提升机器学习模型的学习效率和泛化能力
  • 定义 :通过设计一个“课程”,即按照任务难度排序的训练数据序列,让模型先在简单任务上学习,再逐步增加任务复杂度,最终掌握目标任务
  • 优点:
    • 从简单任务入手可帮助模型更快收敛,减少训练时间(如CV中先学识别简单物体边缘,再学完整物体)
    • 逐步积累的知识体系让模型更适应复杂场景,减少过拟合(如语音识别中先学干净语音,再学带噪声语音)
    • 复杂任务直接训练可能陷入局部最优,课程学习通过分阶段优化降低难度(如神经网络训练中的逐层预训练)
  • 它不仅适用于传统监督学习,还在强化学习、多任务学习等领域展现出潜力。随着算法对“任务难度”理解的深化,未来课程学习可能成为解决复杂AI任务的关键策略之一

课程学习中的核心概念

  • 任务难度定义 :衡量任务的“难易程度”,常通过数据的特征复杂度、样本数量和模型在任务上的预测准确率等来评估任务难度
  • 课程设计策略 :人工划分或自动划分
    • NLP 中先学短文本分类,再学长文本(人工划分)
    • 基于数据相似度聚类,先训练简单簇,再逐步引入复杂簇(自动划分)
    • 根据模型当前表现,动态选择下一个合适的任务(自动划分)
  • 训练过程 :模型在每阶段完成后,保留已学知识,并将新知识与旧知识结合,避免“灾难性遗忘”

典型示例

  • CV-图像分类:先学识别猫狗等简单动物,再学区分稀有物种
  • CV-目标检测:先学大尺寸物体检测,再学小尺寸物体检测
  • NLP-机器翻译:先学短句翻译,再学复杂长句翻译
  • NLP-问答系统:先回答事实性问题,再处理推理类问题
  • RL-游戏AI:如 AlphaGo 先学基础落子规则,再学复杂策略
  • RL-机器人控制:先学基础动作(如行走),再学复杂任务(如避障)
  • 推荐系统:先学基础用户偏好,再学个性化长尾推荐

一些相关名词辨析

  • 课程学习
    • 主动按难度排序任务,强调“从易到难”的顺序性,适用于复杂任务分步训练
  • 迁移学习
    • 从源任务迁移知识到目标任务,重点在知识迁移而非任务排序,主要强调跨领域知识复用
  • 元学习
    • 强调学习“如何学习”,关注快速适应新任务的能力,着重在少样本学习场景中使用
  • 增量学习
    • 逐步添加新数据,防止遗忘旧知识,重点在记忆保留,主要在动态数据场景

Python——IDEA中导入自定义的Python包


对于 IDEA 的管理

  • 在 IDEA 中运行文件时,当前项目根目录会默认被添加为 Python 的搜索路径
  • 根目录下的文件可以直接被访问
  • 根目录的子目录需要每一层都添加__init__.py文件,将其编译为包

IDEA 项目用命令行运行

  • 在运行的第一个文件中添加 IDEA 项目的根目录作为搜索路径

    • 这里的根目录最好是绝对路径
      1
      2
      import sys
      sys.path.append("/home/xxx/xxx/xxx")
  • 如果是想使用相对路径,从而方便移植也行,但需要获取当前文件的文件路径,然后从当前文件与根目录的关系解析出根目录

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import os
    thisFileDir = os.path.split(os.path.realpath(__file__))[0]
    # we have to modify the tail if we change the path of this python file
    tail = 6
    rootPath = thisFileDir[0:-tail]
    if rootPath[-1] != "/" and rootPath[-1] != "\\":
    message = "Error root path [%s]\n\tPlease check whether you changed the path of current file" % rootPath
    raise Exception(message)
    print "Current root path: %s" % rootPath

    import sys
    sys.path.append(rootPath)
  • 其他的和在 IDEA 中运行一样,需要添加的库加上__init__.py即可

1…168169170…352
San Ye

San Ye

Stay Hungry. Stay Foolish.

704 posts
53 tags
© 2026 San Ye
Powered by Hexo
|
Theme — NexT.Gemini v5.1.4