无监督学习之rbm和autoencoder(代码片段)

Young_Gy Young_Gy     2022-12-13     393

关键词:

有标签的数据固然好,可是一方面打标签的代价太高,另一方面大部分数据是无标签的。这样就涉及到无监督、半监督、Self-taught学习的问题。本文将介绍两种适用于无标签数据的学习方法,可以找到数据中的隐含模式,包括RBMAutoEncoder

几种学习方式

以识别猫狗图像为例,区分以下几种学习方式。

  • 监督学习:有标签的猫狗数据。
  • 无监督学习:无标签的猫狗数据。
  • 半监督学习:部分有标签的猫狗数据。
  • Transfer Learning:有标签的猫狗数据、有标签的大象老虎的数据。
  • Self-taught Learning:有标签的猫狗数据、无标签的大象老虎美女的数据。

半监督学习

有时候,考虑无标签的数据分布,我们可能可以把分类器做得更好。

首先,可以先用有标签的数据训练得到分类器 C0 ,然后用 C0 去预测无标签的数据并打上标签。最后使用全部的数据训练得到分类器 C1

Transfer Learning

Transfer Learning,本质上是希望通过与目标对象不那么相关的数据(例如利用大象老虎的图片去分类猫狗的图片)发现潜在的共性特征,利用潜在的共性特征去分类识别。

在图像识别中,经常使用Transfer Learning的方法。其思路是:先利用CNN训练一大堆数据,CNN的隐含层相当于特征提取层。用于新的数据时,保持原来的网络结构的前面部分不变,相当于构建了隐含特征,通过调整后面部分的网络参数实现对新数据的识别。

在日常生活中,也有Transfer Learning的例子。有本叫《爆漫王》的漫画,讲的是一位少年努力成为漫画家的故事。其实漫画家和研究生蛮像的,责编-导师、画分镜-跑实验、投稿jump-投稿期刊。不过,人家的漫画家比咱研究生努力多了,生病住院的时候还在画分镜,研究生很少有住院拿键盘code的吧。

Self-talk Learning

Self-talk Learning与Transfer Learning很像,都有除了猫狗以外的大象老虎的数据。不同之处是:Transfer Learning的大象老虎数据是有标签的,Self-talk Learning的大象老虎数据是无标签的。

Self-talk Learning的例子如下:

  • 识别数字0-9,有a-z的无标签的字符数据
  • 新闻文本分类,有网络上爬的各种文本
  • 汉语识别,有网络上英语、西班牙语的语料数据

乍看之下,Self-talk Learning很难,从不相关的无标签数据中可以获得什么呢?仔细思考下,以图像为例,像素空间的向量分布是很稀疏的,实际空间的维度并不需要这么高。不论是0-9还是a-z都是由不同的笔触组成的,如果可以通过无监督的a-z学习到笔触的表现形式,那么对于0-9的数据,先转化成笔触再进行识别便有可能取得较高的识别精度。

RBM

RBM的类别

RBM属于图模型的一种,具体来说,有:

Boltzmann Machine

Boltzmann Machine,评判了一组集合可能情况的分数,设集合 S=s1,...sK si0,1 ,定义评估函数如下:

E(S)=iaisi+i<jwijsisj

将评估函数转化成概率的话,公式如下:

P(S)=eE(S)SeE(S)

从图模型的角度理解,Boltzmann Machine相当于factor graph。对于每个节点 si ,以及每个节点对 (si,sj) ,都有一个factor与之对应。

Restricted Boltzmann Machine

受限玻尔兹曼机,在原玻尔兹曼机的集合 S=s1,...sK 基础上,增加了新的隐含集合 H=h1,...hK 。其本质也是factor graph,factor存在于所有的node上,同时原来玻尔兹曼机中两两相连的node对 si,sj 取消了,换成了node对 si,hj 。其图模型的具体表示为:

RBM或者Restricted RBM主要由三部分组成:

  • Evaluation:如何评估当前的状态好坏,对应 E(x,h) P(x,h)
  • Inference:给定 x ,计算P(hj=1|x)
  • Training:如何训练得到模型的参数 w,b,c

Evaluation

对于RBM:

E(S)=iaisi+i<jwijsisj

对于Restricted RBM:

E(x,h)=ibihi+jcj查看详情

无监督学习之聚类1——kmeans

Kmeans算法分析31省市消费水平#coding=utf-8importnumpyasnpfromsklearn.clusterimportKMeansdefloadData(filepath):fr=open(filepath,‘r+‘)lines=fr.readlines()retData=[]retCityName=[]forlineinlines:items=line.strip().s 查看详情

《python机器学习及实践》----无监督学习之数据聚类

本片博客是根据《Python机器学习及实践》一书中的实例,所有代码均在本地编译通过。数据为从该书指定的百度网盘上下载的,或者是sklearn自带数据下载到本地使用的。代码片段:#coding:utf-8#分别导入numpy、matplotlib以... 查看详情

《python机器学习及实践》----无监督学习之特征降维

本片博客是根据《Python机器学习及实践》一书中的实例,所有代码均在本地编译通过。数据为从该书指定的百度网盘上下载的,或者是sklearn自带数据下载到本地使用的。代码片段:#coding:utf-8importnumpyasnpM=np.array([[1,... 查看详情

[机器学习][k-means]无监督学习之k均值聚类

..."总结"出一些规律和特征进行分类,这样的方法我们成为无监督学习(Unsupervisedlearning)。在无标签的数据集中进行分类的方法成为聚类。 查看详情

《python机器学习及实践》----无监督学习之特征降维

本片博客是根据《Python机器学习及实践》一书中的实例,所有代码均在本地编译通过。数据为从该书指定的百度网盘上下载的,或者是sklearn自带数据下载到本地使用的。代码片段:#coding:utf-8importnumpyasnpM=np.array([[1,... 查看详情

机器学习笔记-监督学习之决策树

0机器学习中分类和预测算法的评估:准确率速度健壮性可规模性可解释性1决策树(判定树)的概念  决策树是一个类似于流程图的树结构(可以是二叉树或多叉树):其中,每个内部结点表示在一个属性上的测试,每个分支... 查看详情

2.监督学习之分类

1.1监督学习机器学习的第一种范式是监督学习(Supervisedlearning),学习的目标是根据输入预测输出的函数。例如,输入是患者的检查数据,输出是疾病的诊断结果;输入是动物图片,输出是它们的名称&... 查看详情

3.监督学习之回归及归纳偏好

1.1.2回归同样,用一个简单的例子来说明回归。这次我变成一个天气爱好者,想知道每天不同时间的气温。预测函数的输入是时间,输出是该时间的气温。回归也需要训练数据,这里的数据是我记录的一天当中若... 查看详情

3.监督学习之回归及归纳偏好

1.1.2回归同样,用一个简单的例子来说明回归。这次我变成一个天气爱好者,想知道每天不同时间的气温。预测函数的输入是时间,输出是该时间的气温。回归也需要训练数据,这里的数据是我记录的一天当中若... 查看详情

5.1_非监督学习之sckit-learn(代码片段)

 非监督学习之k-meansK-means通常被称为劳埃德算法,这在数据聚类中是最经典的,也是相对容易理解的模型。算法执行的过程分为4个阶段。1.首先,随机设K个特征空间内的点作为初始的聚类中心。2.然后,对于根据每个数据的... 查看详情

自监督学习之掩码自动编码器(maskedautoencoders,mae)——音频识别方面

自监督学习之掩码自动编码器(MaskedAutoencoders,MAE)——音频识别方面1.参考文献《MaskedAutoencodersthatListen》2.背景Transformers和self-supervisedlearning(自监督学习)占据了计算机视觉(ComputerVision,CV)和自然语言处理(naturallanguageprocessing,NLP)的主... 查看详情

使用带有 RBM 和 MLP Sklearn 的管道

...维度(从513个特征到100个特征(节点)),我设法编写了代码,它似乎是正确的,但最后我得到了这个错误UndefinedMetricWarning:精 查看详情

机器学习之深度学习常用的模型和方法

DeepLearning的常用模型或者方法AutoEncoder自动编码器       DeepLearning最简单的一种方法是利用人工神经网络的特点,人工神经网络(ANN)本身就是具有层次结构的系统,如果给定一个神经网络,我们假设其... 查看详情

webgl学习之法线贴图(代码片段)

实际效果请看demo:纹理贴图为了增加额外细节,提升真实感,我们使用了漫反射贴图和高光贴图,它们都是向三角形进行附加纹理。但是从光的视角来看是表面法线向量使表面被视为平坦光滑的表面。以光照算法的视角考虑的... 查看详情

autoencoder算法与原理和实现

AutoEncoder是深度学习的另外一个重要内容,并且非常有意思,神经网络通过大量数据集,进行end-to-end的训练,不断提高其准确率,而AutoEncoder通过设计encode和decode过程使输入和输出越来越接近,是一种无监... 查看详情

unity学习之shader(代码片段)

Shader是用来实现图像渲染的,用来替代固定渲染管线的可编辑程序。其中VertexShader(顶点着色器)主要负责顶点的几何关系等的运算,PixelShader(像素着色器)主要负责片元颜色等的计算。顶点Shader负责改... 查看详情

备战数学建模49-深度学习之长短期记忆网络lstm(rnn)(攻坚战14)(代码片段)

我们今天学习一个长短期记忆网络,就是LSTM,它是循环神经网络的一种。在使用深度学习处理时序问题时,RNN是最常使用的模型之一。RNN之所以在时序数据上有着优异的表现是因为RNN在 t 时间片时会将 t−1 时间片... 查看详情