半监督学习(SEMI-Supervised Learning)

article/2025/3/15 21:11:34

半监督学习的工作原理

想象一下,收集了大量未标记的数据,您想在这些数据上训练模型。手动标记所有这些信息可能会花费你一大笔钱,除了需要几个月的时间来完成注释。这时候半监督机器学习方法就派上用场了。工作原理很简单。无需将标签添加到整个数据集,而是仅对一小部分数据进行手工标记并使用它来训练模型,然后将其应用于未标记数据的海洋。

自我训练

一般来说,半监督学习最简单的例子之一就是自我训练。

自我训练是您可以采用任何有监督的分类或回归方法并将其修改为以半监督方式工作的过程,利用标记和未标记的数据。标准工作流程如下。

半监督自训练方法

  • 选择少量标记数据,例如显示带有各自标签的猫和狗的图像,并使用此数据集在普通监督方法的帮助下训练基本模型。
  • 然后,使用称为伪标记的过程——当您采用部分训练的模型并使用它对数据库中尚未标记的其余部分进行预测时。此后生成的标签被称为标签,因为它们是基于具有局限性的原始标记数据生成的(例如,集合中的类可能存在不均匀的表示,从而导致偏差——狗多于猫)。
  • 从这一点开始,采用模型做出的最自信的预测(例如,我们希望某个图像显示猫而不是狗的置信度超过 80%)。如果任何伪标签超过此置信水平,则将它们添加到标记数据集中并创建一个新的组合输入来训练改进的模型。
  • 该过程可以经历多次迭代(10 通常是标准数量),每次都添加越来越多的伪标签。只要数据适合流程,模型的性能将在每次迭代中不断提高。

虽然有使用自我训练的成功例子,但应该强调的是,性能可能因一个数据集而异。在很多情况下,与采用监督路线相比,自我训练可能会降低性能。

联合培训

源自自我训练方法并且是其改进版本,协同训练是另一种半监督学习技术,当只有一小部分标记数据可用时使用。与典型过程不同,协同训练基于两个数据视图训练两个单独的分类器。

视图基本上是不同的功能集,它们提供有关每个实例的附加信息,这意味着它们在给定类的情况下是独立的。此外,每个视图都足够了——可以仅从每组特征中准确地预测样本数据的类别。

最初的联合训练研究论文声称该方法可以成功地用于例如网络内容分类任务。每个网页的描述可以分为两种视图:一种是出现在该页面上的单词,另一种是指向它的链接中的锚词。

半监督协同训练方法

因此,以下是简单来说协同训练的工作原理。

  • 首先,在少量标记数据的帮助下为每个视图训练一个单独的分类器(模型)。
  • 然后添加更大的未标记数据池以接收伪标签。
  • 分类器使用具有最高置信度的伪标签相互训练。如果第一个分类器自信地预测数据样本的真实标签,而另一个分类器做出预测错误,则具有由第一个分类器分配的自信伪标签的数据更新第二个分类器,反之亦然。
  • 最后一步涉及组合来自两个更新分类器的预测以获得一个分类结果。

与自我训练一样,协同训练要经过多次迭代,才能从大量未标记的数据中构建一个额外的训练标记数据集。

具有基于图形的标签传播的 SSL

运行 SSL 的一种流行方法是以图形的形式表示标记和未标记的数据,然后应用标签传播算法。它通过整个数据网络传播人造注释。

标签传播的典型例子

如果查看图表,将看到一个数据点网络,其中大部分没有标记,带有四个携带标签(两个红点和两个绿点代表不同的类别)。任务是在整个网络中传播这些彩色标签。一种方法是选择第 4 点,然后计算通过网络从 4 到每个彩色节点的所有不同路径。如果你这样做,你会发现有 5 条步道通向红点,只有 4 条步道通向绿色点。由此,我们可以假设第 4 点属于红色类别。然后您将对图表上的每个点重复此过程。

这种方法的实际应用可以在个性化和推荐系统中看到。通过标签传播,可以根据其他客户的信息预测客户兴趣。在这里,我们可以应用连续性假设的变体——例如,如果两个人在社交媒体上联系在一起,他们很可能会分享相似的兴趣。

来自:Semi-Supervised Learning, Explained | AltexSoft


http://chatgpt.dhexx.cn/article/YHPppmMl.shtml

相关文章

半监督学习概述

1、半监督学习 今天在阅读一篇论文时了解了这个之前一直不太清晰的概念。下面是查阅了相关资料后对半监督学习的理解。如有错误,望更正。 半监督学习是一种介于监督学习和无监督学习之间的学习凡是,我们都知道,在监督学习中,样本…

JS中使数组倒序排列

使用reverse方法 注意:reverse方法会使得原数组发生变化

JS实现数组和数组对象倒序(reverse方法)

const arr1 [{a:1},{b:2},{c:3},{d:4}]; const arr2 [1,2,3,4,5,6,7]; console.log(倒序前,arr1,arr2); arr1.reverse(); arr2.reverse(); console.log(倒序后,arr1,arr2);

js实现数组翻转(倒序输出)

//倒序排列var arr[2,30,1,9,5,7];var brrarr.reverse();for(var i0;i<brr.length;i){document.write(brr[i]);}console.log(brr);//控制台也能看到数组的输出

js实现数组元素的倒序

模拟循环录入采集名单存储到数组中并编码实现数组元素的倒序查看名单 :例如数组原名单: A B C D E ,倒序后展示为: E D C B A 运行后的结果如下图所示&#xff1a;

JS数组对象的正序、倒序和根据中文首字母排序

//数组对象方法排序:升序 sortByKey(array,key){return array.sort(function(a,b){var xa[key];var yb[key];return ((x<y)?-1:((x>y)?1:0));}); },//数组对象方法排序:降序 sortDownByKey(array,key){return array.sort(function(a,b){var xa[key];var yb[key];return…

js中数组反向、排序reverse、sort

全栈工程师开发手册 &#xff08;作者&#xff1a;栾鹏&#xff09; js系列教程1-数组操作全解 js中数组反向、排序 数组反向使用reverse函数&#xff0c;数组排序使用sort函数&#xff0c;排序函数可以传入比较函数&#xff0c;也可以修改数组圆形&#xff0c;自定义添加排序…

数组倒序排序

Array.reverse()&#xff0c;数组元素的排序排列 今天做项目的时候遇到了一个需求&#xff0c;把下单字段的时间倒序排列&#xff0c;也就是最新的时间显示在前面&#xff0c;像这样 因为这个字段是一个数组元素&#xff0c;所以就想到了让数组元素倒序排列&#xff0c;然后就…

js数组排序,数组按照某个字段正序倒序排序方法,sort()

话不多说直接看案例哈 比如后端返回了一个数组集合&#xff0c;需要吧默认选项放在第一条 let arr [{isDefault: 0},{isDefault: 0},{isDefault: 1},{isDefault: 0}]arr.sort((a,b)> a.isDefault-b.isDefault)console.log(arr,正序)输出结果&#xff1a;正序&#xff0c;从…

js-实现数组翻转(倒序)

源代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>翻转数组</title></head><body><script>var arr[1,2,3,4,5,6,7,8];var newArr [];console.log(arr);for(var iarr.length-1;…

js 数组倒序排列

1.使用reverse()函数&#xff1a; var array[我,喜,欢,你];array.reverse(); // 输出&#xff1a; ["你", "欢", "喜", "我"]2.循环遍历一一使其倒序&#xff1a; var array[我,喜,欢,你];var temp;for(let i0; i<array.length/2;…

重磅!超详细的 JS 数组方法整理出来了

作者&#xff1a;Yushia https://juejin.cn/post/6907109642917117965 数组是 js 中最常用到的数据集合&#xff0c;其内置的方法有很多&#xff0c;熟练掌握这些方法&#xff0c;可以有效的提高我们的工作效率&#xff0c;同时对我们的代码质量也是有很大影响。 一、创建数组 …

VS Code字体总是安装不上,vscode字体安装

VS Code字体安装&#xff0c;顽固版本 tmd&#xff0c;Vs Code老是把l看成i或者是1急死了首先要下载字体&#xff0c;下载好安装对应的字体&#xff0c;windows字体文件一般是ttf&#xff0c;安装好之后 这里有免费的供开发编程使用的字体 —》链接 下载好之后&#xff0c;解压…

VsCode字体颜色修改和背景图片修改 字体高亮

1.打开VS Code编辑器&#xff0c;在编辑器中设置。根据以下步骤&#xff0c;打开settin.json文件。 2.在json文件中若有代码覆盖即可没有代码直接添加下面代码。看注释可以自定义设置喜欢的颜色。 {//设置用户选中代码段的颜色"workbench.colorCustomizations": {/…

VScode字体超大怎么改回来?

VScode字体超大怎么改回来&#xff1f; 改背景图时不小心把字体设置的超大了&#xff0c;而且还是失去焦点自动保存了&#xff0c;难受… 网上一搜&#xff0c;真不好搜&#xff0c;答案有两种 借图一用&#xff08;本人比这个还严重&#xff0c;鼠标已经滚动不了了&#xff…

ubuntu系统下vscode字体显示异常(别扭)

修改办法 文件 》 首选项 》 设置 查找框中输入 Font 显示如下&#xff1a; 修改Font Family&#xff1a; 将&#xff1a;‘Droid Sans Mono’, ‘monospace’, Droid Sans Fallback’改为&#xff1a; monospace 如果windows和ubuntu是同一个账号&#xff0c;必须取消同步&…

vscode程序员推荐字体

今天推荐一款vscode字体:Anonymous-Pro 绝对的轻量 点击前往下载 GITHUB LIGHT Anonymous-Pro GITHUB LIGHT Anonymous-Pro GITHUB DARK Anonymous-Pro GITHUB DARK Anonymous-Pro 设置步骤: 1.打开vscode 2.依次到文件->首选项->设置 3.修改字体为 Anonymous P…

vscode字体/界面无意间变得超大,一招调回,完美解决

一、情况如下 在网上解决方法搜了半天&#xff0c;各种试都不顶事 &#xff0c;正准备卸载重载&#xff0c;又不甘心弄了几下&#xff0c;终于回来了&#xff0c;太好了&#xff01;&#xff01;&#xff01; 下面也将此方法分享给各位正在被这个问题困扰的家人们&#xff0c;希…

ubuntu vscode 换字体

1. 打开vscode 点击 首选项 - 设置 - 文本编辑器 - 字体 可以看到, Font Ligatures 配置字体连字或字体特性。可以是用于启用/禁用连字的布尔值&#xff0c;或用于设置 CSS "font-feature-settings" 属性值的字符串。 在 settings.json 中编辑 2. 点击编辑 json文…