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

在这里插入图片描述
半监督学习,一般应用于少量带标签的数据(数量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.rhkb.cn/news/163587.html

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

相关文章

【C++中cin、cin.get()、cin.getline()、getline() 的区别】

文章目录 引入cin基本用法输入多个变量换行符存放在缓冲区中 cin.get()基本用法重载函数换行符残留在缓冲区中 cin.getline()基本使用重载函数换行符不会残留在缓冲区中 string 流中的 getline()总结用法总结几个输入实例输入格式输入格式输入格式输入格式 输出格式 写在最后 引…

【Linux】userdel 命令使用

userdel命令用于删除用户帐号。 语法 userdel [选项] [用户帐号] 命令选项及作用 执行令 userdel--help 执行命令结果 参数 -f, --force 强制删除用户账号 -h, --help 显示此帮助信息并推出 -r, --remove 删除主目录和邮件池 -R, -…

【Qt控件之微调框、进度条】QSpinBox、QDoubleSpinBox、QDial、QProgressBar介绍及使用

概述 QSpinBox类提供了一个微调框小部件。 QSpinBox适用于处理整数和离散的值集(例如,月份名称);对于浮点数值,请使用QDoubleSpinBox。 QSpinBox允许用户通过点击上下按钮或按键盘上的上下箭头来增加/减少当前显示的值…

《算法通关村第二关——终于学会链表反转了》

《算法通关村第二关——终于学会链表反转了》 今天学习链表反转 为什么反转这么重要呢?因为反转链表涉及结点的增加、删除等多种操作,能非常有效考察思维能力和代码驾驭能力。另外很多题目也都要用它来做基础, 例如指定区间反转、链表K个一…

网工内推 | IT主管、高级网工,上市公司,必须持有HCIE认证

01 深圳市飞荣达科技股份有限公司 招聘岗位:高级网络工程师 职责描述: 1. 参与、负责集团公司IT基础技术架构的规划设计、实施及维护、性能优化,包括数据中心机房、网络架构、虚拟化平台、信息安全设备及灾备系统等; 2. 负责集团…

Kubernetes技术与架构-服务

从软件系统架构设计分层的角度看,Kubernetes的Service是基于Pod的上层,业务应用部署在Pod中,使用Service绑定Pod部署的应用,Service可以对外或者对上层提供服务,当Pod集群在系统调度的过程中发生弹性伸缩的时候&#x…

基于模型预测人工势场的船舶运动规划方法,考虑复杂遭遇场景下的COLREG(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

openGauss学习笔记-103 openGauss 数据库管理-管理数据库安全-客户端接入之SSL证书管理-证书生成

文章目录 openGauss学习笔记-103 openGauss 数据库管理-管理数据库安全-客户端接入之SSL证书管理-证书生成103.1 操作场景103.2 前提条件103.3 自认证证书生成过程 openGauss学习笔记-103 openGauss 数据库管理-管理数据库安全-客户端接入之SSL证书管理-证书生成 openGauss默认…

【AIGC核心技术剖析】用于 3D 生成的多视图扩散模型

MVDream是一种多视图扩散模型,能够从给定的文本提示生成一致的多视图图像。多视图扩散模型从二维和三维数据中学习,可以实现二维扩散模型的泛化和三维渲染的一致性。我们证明了这样的多视图先验可以作为可推广的 2D 先验,与 3D 表示无关。它可以通过分数蒸馏取样应用于 2D 生…

tcp专题

目录 一.TCP的连接建立 1.1面向连接 1.2TCP报文结构 1.3TCP三次握手 1.4TCP的状态变化 1.5为什么必须是三次握手,而不是两次或者四次 二.TCP的连接断开 2.1TCP的"四次挥手 2.2TCP的状态变化 2.3为什么要有TIME_WAIT状态 2.4为什么TIME_WAIT状态的时…

开发者职场“生存状态”大调研报告分析 - 第四版

听人劝、吃饱饭,奉劝各位小伙伴,不要订阅该文所属专栏。 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 跨域学习者,从事过全栈研发、产品经理等工作,现任研发部门 CTO 。荣誉:2022年度博客之星Top4、博客专家认证、全栈领域优质创作者、新星计划导师,“星荐官共赢计…

《文献阅读》- 遗传算法作为量子近似优化算法的经典优化器(未完成)

文章目录 标题摘要关键词结论研究背景1.介绍 研究内容、成果3. 量子近似优化算法:基本概念及应用 常用基础理论知识2.相关工作酉矩阵 潜在研究点文献链接 标题 Genetic algorithms as classical optimizer for the Quantum Approximate Optimization Algorithm 参…

linux进阶(脚本编程/软件安装/进程进阶/系统相关)

一般市第二种,以bash进程执行 shelle脚本编程 env环境变量 set查看所有变量 read设置变量值 echo用于控制台输出 类似java中的sout declear/typeset声明类型 范例 test用于测试表达式 if/else case while for 函数 脚本示例 软件安装及进阶 fork函数(复制一个进程(开启一个进…

XMLHttpRequest的readyState状态值

readyState状态值 功能:在Ajax请求与服务器响应中,是通过XMLHttpRequest对象完成。而readyState状态值则是记录XMLHttpRequest对象在这个过程进行变化的状态。 readyState状态值readyState分别有5个状态值 0:请求未初始化:在未点击…

Python爬虫基础之Selenium详解

目录 1. Selenium简介2. 为什么使用Selenium?3. Selenium的安装4. Selenium的使用5. Selenium的元素定位6. Selenium的交互7. Chrome handless参考文献 原文地址:https://program-park.top/2023/10/16/reptile_3/ 本文章中所有内容仅供学习交流使用&…

【LeetCode刷题(数据结构与算法)】:合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的 **思路:定义一个头尾指针置为NULL while循环依次比较两个链表的值的大小 遍历链表 比较完数值大小过后连接到tail的尾部 然后各自的链表的节点的next指针指向下一…

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

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

【AIGC核心技术剖析】Hotshot-XL 一种 AI 文本转 GIF 模型(论文 + 代码:经过训练可与Stable Diffusion XL一起使用)

Hotshot-XL 是一种 AI 文本转 GIF 模型,经过训练可与Stable Diffusion XL一起使用。 Hotshot-XL 可以使用任何经过微调的 SDXL 模型生成 GIF。这意味着两件事: 您将能够使用您可能想要使用的任何现有或新微调的 SDXL 模型制作 GIF。 如果您想制作个性化主题的 GIF,您可以…

【AIGC核心技术剖析】改进视频修复的传播和变压器(动态滤除环境中的物体)

基于流的传播和时空变压器是视频修复(VI)中的两种主流机制。尽管这些组件有效,但它们仍然受到一些影响其性能的限制。以前基于传播的方法在图像域或特征域中单独执行。与学习隔离的全局图像传播可能会由于光流不准确而导致空间错位。此外&…

2023_Spark_实验十八:安装FinalShell

下载安装包 链接:https://pan.baidu.com/s/14cOJDcezzuwUYowPsOA-sg?pwd6htc 提取码:6htc 下载文件名称:FinalShell.zip 二、安装 三、启动FinalShell 四、连接远程 linux 服务器 先确保linux系统已经开启,不然连接不上 左边…