当前位置: 首页 > article >正文

sheng的学习笔记-AI-基于分歧的方法

AI目录:sheng的学习笔记-AI目录-CSDN博客

半监督学习:sheng的学习笔记-AI-半监督学习-CSDN博客 

想法和集成学习很像,对应文章:sheng的学习笔记-AI-集成学习(adaboost,bagging,随机森林)-CSDN博客

什么是基于分歧的方法 

基于分歧的方法通过多个学习器之间的分歧(disagreement)/多样性(diversity)来利用未标记样本数据,协同训练就是其中的一种经典方法。

协同训练最初是针对于多视图(multi-view)数据而设计的,多视图数据指的是样本对象具有多个属性集,每个属性集则对应一个试图。例如:电影数据中就包含画面类属性和声音类属性,这样画面类属性的集合就对应着一个视图。

协同训练正是很好地利用了多视图数据的“相容互补性”,其基本的思想是:首先基于有标记样本数据在每个视图上都训练一个初始分类器,然后让每个分类器去挑选分类置信度最高的样本并赋予标记,并将带有伪标记的样本数据传给另一个分类器去学习,从而你依我侬/共同进步

流程图:

数据视图

相容性:例如两者都是{爱情片,动作片},而不能是Y1={爱情片,动作片}而Y2={文艺片,惊悚片}。在此假设下,显式地考虑多视图有很多好处。仍以电影为例,某个片段上有两人对视,仅凭图像画面信息难以分辨其类型,但此时若从声音信息听到“我爱你”​,则可判断出该片段很可能属于“爱情片”​;另一方面,若仅凭图像画面信息认为“可能是动作片”​,仅凭声音信息也认为“可能是动作片”​,则当两者一起考虑时就有很大的把握判别为“动作片”​。显然,在“相容性”基础上,不同视图信息的“互补性”会给学习器的构建带来很多便利。

协同训练算法

  1. 协同训练充分利用了多视图的相容互补性。

  2. 假设数据拥有两个充分且条件独立视图。

    此时,可以用一个简单的办法来利用未标记数据:

    注意:

    • 充分:指每个视图都包含足以产生最优学习器的信息。
    • 条件独立:指在给定类别标记条件下,两个视图独立。
    • 首先在每个视图上,基于有标记样本,分别训练出一个分类器。
    • 然后让每个分类器分别去挑选自己最有把握的未标记样本赋予伪标记,并将伪标记样本提供给另一个分类器作为新增的有标记样本用于训练更新。
    • 该“ 互相学习、共同进步”的过程不断迭代进行,直到两个分类器都不再发生变化,或者到达指定的迭代轮数为止。
    • 如果在每轮学习中都考察分类器在所有未标记样本上的分类置信度,则会有很大的计算开销。因此在算法中使用了未标记样本缓冲池。
    • 分类置信度的估计因基学习算法而异。

流程:

步骤:

代码

总结:

  1. 协同训练过程虽然简单,但是理论证明:若两个视图充分且条件独立,则可利用未标记样本通过协同训练将弱分类器的泛化性能提升到任意高。

    • 不过视图的条件独立性在现实任务中通常很难满足,因此性能提升幅度没有那么大。
    • 但研究表明,即便在更弱的条件下,协同训练仍可以有效提升弱分类器的性能。
  2. 协同训练算法本身是为多试图数据而设计的,但此后出现了一些能在单视图数据上使用的变体算法。

    • 它们或是使用不同的学习算法,或是使用不同的数据采样,甚至使用不同的参数设置来产生不同的学习器,也能有效利用未标记数据来提升性能。

    • 后续理论研究表明,此类算法事实上无需数据拥有多试图,仅需弱学习器之间具有显著的分歧(或者差异),即可通过相互提供伪标记样本的方式来提升泛化性能。

      而不同视图、不同算法、不同数据采样、不同参数设置等,都是产生差异的渠道,而不是必备条件。

  3. 基于分歧的方法只需要采用合适的基学习器,就能较少受到模型假设、损失函数非凸性和数据规模问题的影响,学习方法简单有效、理论基础相对坚实、使用范围较为广泛。

    • 为了使用此类方法,需要能生成具有显著分歧、性能尚可的多个学习器。
    • 但当有标记样本较少,尤其是数据不具有多试图时,要做到这一点并不容易,需要巧妙的设计。

参考:

12.半监督学习 - 四、基于分歧的方法 - 《AI算法工程师手册》 - 书栈网 · BookStack

14 半监督学习 - 14.3 基于分歧的方法 - 《周志华《机器学习》学习笔记》 - 书栈网 · BookStack 

书:机器学习


http://www.kler.cn/news/284340.html

相关文章:

  • 高性价比百元学生党蓝牙耳机怎么选?2024四款年度耳机推荐揭秘!
  • redis作为缓存,mysql的数据如何与redis同步
  • 力扣52-最大子序和(java详细题解)
  • AI产品经理系列:如何应对AI时代?
  • 设置 Nginx、MySQL 日志轮询
  • Java-树形图工具类TreeUtil
  • 网通产品硬件设计工程师:百兆超薄网络隔离变压器您知道的有多少呢?
  • 【PyCharm激活码】2024年最新pycharm专业版激活码+安装教程!
  • 【Android】使用 ADB 查看 Android 设备的 CPU 使用率
  • 项目技巧二
  • R语言股价跳跃点识别:隐马尔可夫hmm和 GARCH-Jump对sp500金融时间序列分析
  • “添加”业务功能开发
  • Qt 杨帆起航
  • 【分布式定时任务】XXL-JOB_2.4.1部署与实战
  • 解决Element-ui中Table表格里的show-overflow-tooltip不兼容safari浏览器问题
  • vue-admin-template pan版使用方法
  • 【秋招笔试】8.24阿里控股秋招(研发岗)-三语言题解
  • 使用极狐GitLab进行K3S集群的维护与控制
  • 进程间通信--IPC机制
  • 【技术解析】Spring Boot异步机制:实现高吞吐量的最佳实践
  • 【零知识证明】构建第一个zk
  • 95.WEB渗透测试-信息收集-Google语法(9)
  • RN开发问题
  • 线性表之数组
  • 数据结构-单链表-详解-2
  • 彩漩科技亮相第一届人工智能教育应用论坛,荣获AI教育科技产品TOP30奖项
  • 数字化转型升级探索(一)
  • 【奇某信-注册_登录安全分析报告】
  • 鸿蒙高级开发者认证题库(2)
  • RKNPU2从入门到实践 --- 【4】RKNN 模型构建【使用pycharm一步一步搭建RKNN模型】