李宏毅机器学习笔记-半监督学习

在这里插入图片描述
半监督学习,一般应用于少量带标签的数据(数量R)和大量未带标签数据的场景(数量U),一般来说,U>>R。

半监督学习一般可以分为2种情况,一种是transductive learning,这种情况下,将unlabeled datafeature利用进来。另外一种是inductive learning,这种情况下,在训练的整个过程中,完全不看任何unlabeled data的信息。

为什么要做semi-supervised learning呢,因为我们现实中大多数情况下,搜集数据比较容易,但是数据标注比较困难。包括我们的人生中,我们自己也是一直在做semi-supervised learning.
在这里插入图片描述
为什么semi-supervised learning会有用呢,因为unlabeled data可以告诉我们一些信息。通常,我们在做semi-supervised learning时,会做出一些假设,这个假设很关键,会影响最后的结果。
在这里插入图片描述
这节课的主要讲述4个部分,第一个是讲generative model时如何做semi-supervised learning。然后在讲述2个常用的通用假设,分别是low density separation假设和smoothness假设,最后,semi-supervised learning还有一个比较好用的一招是better representation

1、Generative Model

在这里插入图片描述
假设说我们已知标签的数据,有两个类别C1和C2,假设他们是属于高斯分布。我们可以画出我们的决策边界,对于任何一个数据,可以求出这个数据x属于类别C1的概率,如上图所示。
在这里插入图片描述
但是,这个时候如果再给了一个unlabeled data,那么我们上面的决策边界就会受到影响。这在直觉上是这样。
在这里插入图片描述
实际操作是怎么做的呢?
首先,先初始化一组参数 θ \theta θ。初始化可以随机设定参数,虽然说初始化的值也很重要。
第一步, 根据初始设定的参数,可以估计每个unlabeled data属于class 1的概率。
第二步,算出第一步的概率之后,便可以update 我们的model。
后续不断重复第一步和第二步。
如果我们知道EM算法的话,那么第一步就是E的过程,第二步就是M的过程。
在这里插入图片描述
这件事情直觉上可以理解为何这样做,我们实际上还是分析下原因,如上图所示。

2、Low density Separation Assumption

在这里插入图片描述
我们认为这个世界是一个非黑即白的世界。意思就是,在两个类别的交界处,密度是比较低的,data量是很少的,基本上不太会出现data。Low density最具代表性的方法就是self training
在这里插入图片描述
self training的方法非常的直觉和通俗易懂,我们不做过多的讲述。
我们现在需要来考虑的一个问题时,self training的方法如果用来做回归regression,会怎么样呢?work吗?
我们可以花5s的时间思考一下。
答案其实是无效的。拿最简单的线性回归为例,不断self training出来的数据,再加入到model中进行训练,model不会发生变化,因此这招对于regression是无效的。
在这里插入图片描述
self training的过程和之前的generative model的过程还是非常相似的,但也有不同之处。主要的不同之处在于hard labelsoft label的区别。以神经网络为例,我们可以想下hard labelsoft label哪个有效?
实际上,如果以ANN为例,soft label是完全无效的。为什么呢?因为在现有的参数上这个unlabeled data都可以做到[0.7,0.3]的输出,如果此时标签还是[0.7,0.3],那么就完全不需要更新参数了,不需要更新model了。

Entropy-based Regularization

在这里插入图片描述
熵要越小越好。可以在损失函数时将unlabeled data的熵一起加入作为最小化项。

3、Smoothness Assumption

在这里插入图片描述
在这里插入图片描述
Smoothness Assumption的基本思想是,如果x相似,那么具有相同的标签。更具体的来说,如果数据的分布并不平均,那么假如两个x之间数据流非常密集,那么两个x具有相同的标签。如上图所示,虽然x2与x3的距离更近,但是x1和x2具有相同的标签。
这种假设往往更符合真实假设,因为同一种类别之间会有非常多的过渡形态。

如何实现Smoothness Assumption

1 cluster and then label

在这里插入图片描述
最简单的方法是聚类和打标。这个方法的前提假设是我们可以将同一个class的label都聚集在一起。但是,例如说在图像识别中,可能同一个class会长的很不像,不同的class会长的很像。因此,如果要使得这个方法有用,那么你的cluster的方法要很强。
在我们尝试的时候,可以用deep autoencoder来实现。
一般先用deep autoencoder进行call feature,然后再call clustering,这样一般就会work。

2 graph-based approach

在这里插入图片描述
我们使用graph来表达connected by a high density path这件事情。我们把所有的data points都建立成一个graph。这样的话,如果有2个点,在graph上是相连的,是走的到的,那么他们就是同一个class.
有时候,建立这个graph是一件很自然的事情,但有时候,我们要自己想办法去建立这个graph。
在这里插入图片描述
一个graph对结果的影响是非常重要的。但是这个事情做起来,很多的时候,凭的是自己的直觉。通常我们可以这样做:

首先需要定义如何去计算他们之间的相似度,例如说对于图像,直接从像素层面去建立相似度,可能效果会比较差。但是如果经过auto-encoder之后再建立相似度,结果可能会比较好。

算完相似度之后,我们便可以开始建立graph了。可以利用KNN的方法,相连固定k个值,也可以用e-neighborhood,只相连相似度超过一定阈值的点。也可以用RBF函数来计算相似度。使用RBF函数的优点在于,只要距离远一点点,那么相似度就下降非常快。
在这里插入图片描述
在这种机制下,类别会不断的传播。
在这里插入图片描述
之前算是定性地计算这种graph,接下来我们来定量地表示。
我们需要定义一个量,smoothness,例如说上图中存在2个例子,左右都有4个点,连线上的数字代表的是权重weight。现在我们来考虑下,左右两边哪边比较smooth一些。我们都会觉得左边更加smooth一些。我们可以用一个公式来定量的描述左右两边到底有多smooth。smooth程度用s表示,左边s=0.5,右边s=3。s值越小越好。
在这里插入图片描述
s的公式描述可以简化写成上图中的公式。其中W就是每个点之间的连接权重。例如说x1和x2之间的权重是2,因此w[1,2]和x[2,1]均为2.D则是一个对角矩阵,将w的每一行加起来刚好可以得到D上的对角元素。L也称为Graph Laplacian
在这里插入图片描述
在训练ANN模型时,我们可以将smoothness作为损失项加入进去,类似于正则项一样。当然,这个smooth可以放在网络结构的任何地方,不一定要求输出要smooth,也可以要求其他地方要smooth。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/110956.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GO 语言的方法??

GO 中的方法是什么? 前面我们有分享到 GO 语言的函数,他是一等公民,那么 GO 语言中的方法和函数有什么区别呢? GO 语言中的方法实际上和函数是类似的,只不过在函数的基础上多了一个参数,这个参数在 GO 语…

O2O优惠券预测

O2O优惠券预测 赛题理解赛题类型解题思路 数据探索理论知识数据可视化分布 特征工程赛题特征工程思路 模型训练与验证 赛题理解 赛题类型 本赛题要求提交的结果是预测15 天内用券的概率,这是一个连续值,但是因为用券只有用与不用两种情况,而…

Redis入门到实战(四、原理篇)RESP协议

目录 2、Redis内存回收-过期key处理3、Redis内存回收-内存淘汰策略 Redis是一个CS架构的软件,通信一般分两步(不包括pipeline和PubSub): 客户端(client)向服务端(server)发送一条命令…

数字秒表VHDL实验箱精度毫秒可回看,视频/代码

名称:数字秒表VHDL精度毫秒可回看 软件:Quartus 语言:VHDL 代码功能: 数字秒表的VHDL设计,可以显示秒和毫秒。可以启动、停止、复位。要求可以存储6组时间,可以回看存储的时间 本资源内含2个工程文件&am…

2023 年程序员必读的 27 本软件开发书籍

不断发展的软件开发领域需要不断学习和改进。现代开发实践要求软件工程师具备全面的知识,包括各个领域的理论见解和实践技术,从编程语言和数据库管理到质量保证、网页设计和 DevOps 实践。 这就是编程书籍可以提供帮助的地方。通过及时了解此类书籍并应…

模拟退火算法求解TSP问题(python)

模拟退火算法求解TSP的步骤参考书籍《Matlab智能算法30个案例分析》。 问题描述 TSP问题描述在该书籍的第4章 算法流程 部分实现代码片段 坐标轴转换成两点之间直线距离长度的代码 coordinates np.array([(16.47, 96.10),(16.47, 94.44),(20.09, 92.54),(22.39, 93.37),(2…

如何给Github上的开源项目提交PR?

前言 对于一个热爱开源的程序员而言,学会给GitHub上的开源项目提交PR这是迈出开源的第一步。今天我们就来说说如何向GitHub的开源项目提交PR,当然你提交的PR可以是一个项目的需求迭代、也可以是一个Bug修复、再或者是一些内容文本翻译等等,并…

单片机点亮led管(01)

如何开始学习单片机 1:实践第一 2:补充必要的理论知识,缺什么补什么 3:做工程积累经验(可以在网络上收集题目,也可以有自己的想法大胆的实验) 单片机是什么? 单片机&#xff08…

5分钟内在Linux上安装.NET Core应用程序

作为开源的忠实粉丝,我喜欢 .NET Core 的跨平台特性。它开启了无限的可能性,从业余爱好项目、实验和概念验证,到在具有高安全性和可扩展性的经济高效基础设施上运行的大规模高负载生产应用程序。我通常从任何云平台提供商那里获得最简单、最便…

<C++> 模拟实现string

目录 前言 一、模拟实现string 1. 成员变量 2. 构造函数 2.1 构造函数 2.2 重载默认构造 2.3 合并 3. 析构函数 4. 拷贝构造函数 5. c_str 6. size 7. operator[ ] 7.1 普通版 7.2 const版本 8. 迭代器—iterator 8.1 普通版iterator 8.2 const版本iterator 9. 尾插 10. …

【微服务 SpringCloud】实用篇 · 服务拆分和远程调用

微服务(2) 文章目录 微服务(2)1. 服务拆分原则2. 服务拆分示例1.2.1 导入demo工程1.2.2 导入Sql语句 3. 实现远程调用案例1.3.1 案例需求:1.3.2 注册RestTemplate1.3.3 实现远程调用1.3.4 查看效果 4. 提供者与消费者 …

美创科技入选“内蒙古自治区第一届网络安全应急技术支撑单位”

近日,内蒙古自治区党委网信办、国家网络应急技术处理协调中心内蒙古分中心评选“内蒙古自治区网络安全应急技术支撑单位”结果公布。 经自治区各地区、各部门和单位推荐各单位自主申报,资料审查和专家评审等环节,美创科技成功入选“内蒙古自治…

Linux将磁盘空闲空间转移到其他目录下(home目录转移到root目录下)

目录 1、查看分区 2、备份home分区文件 (重要) 3、卸载/home 4、删除/home所在的lv 5、扩展/root所在的lv(我这里还扩展了、dev/sr0) 6、扩展/root文件系统。 7、重新创建home lv 创建时计算好剩余的磁盘容量,建…

数据预处理—滑动窗口采样数据

一个简单的例子: # data: 这是要应用滑动窗口采样的输入数据,通常是一个序列,例如列表或NumPy数组。 # window_size: 这是滑动窗口的大小,表示每个窗口中包含的元素数量。 # step_size: 这是滑动窗口移动的步长,表示每…

一个可以解决企业跨网文件交换难题的软件所具备的特性必须有哪些

在当今数字化办公的浪潮中,企业跨网文件交换成为了不可忽视的重要需求。无论是内部网络还是外部网络,都存在着各种跨网文件交换的场景,然而这一过程也面临着一系列的挑战。本文将深入探讨企业跨网文件交换的难题以及一款可以解决企业跨网文件…

vue 树状结构数据渲染 (java 处理 list ->树状)

树状结构 Element ui https://element.eleme.cn/#/zh-CN/component/tree <el-tree :data"data" :props"defaultProps" node-click"handleNodeClick"></el-tree><script>export default {data() {return {data: [{label: 一级…

日常中msvcp71.dll丢失怎样修复?分享5个修复方法

在 Windows 系统中&#xff0c;msvcp71.dll 是一个非常重要的动态链接库文件&#xff0c;它承载了许多应用程序和游戏的运行。如果您的系统中丢失了这个文件&#xff0c;那么您可能会遇到无法打开程序、程序崩溃或出现错误提示等问题。本文将介绍 5 个快速修复 msvcp71.dll 丢失…

2000-2022年上市公司CEO 高管及董事会环保背景数据(5W+ )(原始数据+处理代码Stata do文档)

2000-2022年上市公司CEO 高管及董事会环保背景数据&#xff08;5W &#xff09;&#xff08;原始数据处理代码Stata do文档&#xff09; 1、时间&#xff1a;2000-2022年 2、指标&#xff1a;证券代码、股票代码、年份、股票简称、ST或PT为1&#xff0c;否则为0、金融业为1&a…

【操作系统】线程的实现方式:用户线程和内核线程

1 用户级线程 完全在用户空间中实现和管理的线程。 它们的创建、同步和调度由应用程序通过用户级别的线程库实现&#xff0c;所有的线程管理工作都由应用程序负责&#xff0c;无需操作系统内核干预。在用户看来有多个线程&#xff0c;但操作系统并不能意识到线程的存在。 缺点…

Android apkanalyzer简介

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、用法3.1 使用 Android Studio3.1.1…