李宏毅机器学习课程笔记5:Unsupervised Learning - Linear Methods、Word Embedding、Neighbor Embedding

本文主要是介绍李宏毅机器学习课程笔记5:Unsupervised Learning - Linear Methods、Word Embedding、Neighbor Embedding,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

台湾大学李宏毅老师的机器学习课程是一份非常好的ML/DL入门资料,李宏毅老师将课程录像上传到了YouTube,地址:NTUEE ML 2016 。
这篇文章是学习本课程第13-15课所做的笔记和自己的理解。


**Lecture 13: Unsupervised Learning - Linear Methods **

Unsupervised Learning有两种,化繁为简(Clustering & Dimension: 复杂的input→简单的output, training时只有一堆input, 不知output),无中生有(Generation: input random number, 经过function, 得到image)。

Clustering

K-means

k需要自己定

Hierarchical Agglomerative Clustering (HAC)

HAC

聚类要把目标聚到某一类里边,而实际中可能目标70%属于一类,30%属于另一类,分布式的表示也可称为降维。

Dimension Reduction

Feature selection

如果data point的某一维都不变,就没有存在意义,可以去掉。
此方法适用场合有限。

Principle Component Analysis (PCA)

希望新的特征的variance尽量大,所以k个w选择的是cov(x)的前k个最大的eigenvalue对应的eigenvector。
这里写图片描述

数学推导:
PCA

新特征的各维度之间无相关性,作为input data,可用较简单的model处理,避免overfitting。

用SVD方法得到PCA的解:
SVD PCA

从NN角度理解PCA:

这里写图片描述

train这个NN的参数,让output与input越接近越好。
不能用gradient descent,以为不能保证 w i , w j w^i,w^j wi,wj 正交。
效果也不会比SVD方法更好。

PCA的缺点:
1、PCA是无监督的,不知道数据的标签,这样在降维映射之后可能会把两类数据混到一起。
考虑数据标签的方法LDA(Linear Discriminant Analysis)可以避免这一问题。
2、PCA是线性的。把一个三维空间中的S形分布的数据做PCA之后的效果,就是把S形拍扁,而非展开。

对宝可梦做PCA
每个宝可梦是六维向量,计算出6个特征值,计算6个特征值的ratio,舍去较小的(只取前四个特征值的特征向量作为新的特征,或者叫主成分PC)。特征值的意义是,PCA降维时,在相应维度的variance有多大。
每个PC都是一个六维向量,分析它们在哪个维度是大的正值/负值,可以分析出这个PC所代表的意义。

对人脸做PCA
对人脸,取前30个PC,每个PC拼成image,发现都是脸,而不是脸的一部分。
解释:
NMF

对数字和人脸做NMF
得到的都是“部分”:
这里写图片描述

Matrix Factorization

人买公仔,人和公仔背后都有共同的隐藏属性影响人买多少公仔,例如人的属性:萌傲娇/萌天然呆,公仔的属性:傲娇/天然呆。
我们要从购买记录(矩阵)中推断出latent factor,latent factor的数目需要事先定好。
这里写图片描述

对矩阵做SVD,SVD的中间矩阵可以并到左边矩阵或右边矩阵。

有missing data怎么办?用gradient descent做,先定义loss function L(只考虑有定义的数据)。
这里写图片描述
得到 r A , r B , r C , r D , r E , r 1 , r 2 , r 3 , r 4 r^A,r^B,r^C,r^D,r^E,r^1,r^2,r^3,r^4 rA,rB,rC,rD,rE,r1,r2,r3,r4 之后,并不知道每个维度代表什么属性,需要事后分析。
已知姐寺与小唯属于天然呆类型、春日与炮姐属于傲娇类型,所以第一个维度代表天然呆,第二个维度代表傲娇。

**Lecture 14: Unsupervised Learning - Word Embedding **

Word Embedding是降维的应用。

这里写图片描述
1-of-N Encoding不能体现单词之间的关系(如不能体现cat,dog之间的关系),改进为word class之后,不能体现类之间的关系(如不能体现class 1与class 2之间的关系),所以映射到高维空间。

生成词向量是无监督的,training data是大量文本,机器通过上下文得到词向量。
利用上下文有两类方法:Count-based与Prediction-based

Count-based

这里写图片描述

Prediction-based

用前一个词预测后一个词:
这里写图片描述
用第一个hidden layer的input代表该词的word-embedding
对“蔡English”“马英Nine”要让它们在进入hidden layer之前(word-embedding)相近。

用前两个词预测后一个词:
这里写图片描述
要共享参数,否则一个词会有两个词向量,共享参数还可以减少参数数量。
图中的梯度下降时参数更新公式可以保证对应参数一直相等。

Prediction-based的训练与其它结构
这里写图片描述

Word Embedding的特点

这里写图片描述

Multi-domain Embedding

这里写图片描述
image经过NN,得到一个vector(与word vector同维度)。
对training时没出现的类别也可以进行分类!

**Lecture 15: Unsupervised Learning - Neighbor Embedding **

Manifold Learning

现在要做非线性降维。
数据可能是高维空间中的manifold,即数据其实分布在低维空间,被扭曲到高维空间中(如地球表面)。
在manifold上只有距离很近的点,欧式几何才成立。(12距离比13距离近,所以12像、13不像。14、15距离太大,没法比,不make sense)。
所以manifold learning就是要把S形展开,这样的好处是可以用欧式距离。
manifold learning

Locally Linear Embedding (LLE)

从原来的分布中找一点 x i x^i xi,然后找它的neighbour x j x^j xj,计算它们之间的关系 w i j w_{ij} wij。把 x i , x j x^i,x^j xi,xj 降维成 z i , z j z^i,z^j zi,zj 之后要保证它们之间的 w i j w_{ij} wij 不变。李老师用白居易《长恨歌》作比,浪漫!
这里写图片描述

LLE没有明确的function做降维。
LLE的好处是,就算不知道 x i , x j x^i,x^j xi,xj 只知道 w i j w_{ij} wij ,也可以用LLE。
要好好调neighbour的个数,刚刚好才会得到好的结果。
点之间的距离关系保持不变需要点之间够近,所以k太大不行,会考虑一些太远的点。

Laplacian Eigenmaps

这里写图片描述

两个红点之间的距离不能用欧氏距离还衡量,要看两点之间有没有高密度区域的链接,可以建立一个图,用图中的距离来表示。
回顾半监督学习:红框里那项与labelled data无关,它利用unlabelled data考虑得到的label是否smooth,作用类似于正则项。
同样的道理可以用在无监督学习。但是最小化S会有问题,因为只要让 z i = z j z^i = z^j zi=zj 就好了,这显然不合理。之所以在半监督学习时没有这个问题,是因为半监督学习的损失函数还有一项从标注数据而来,如果让所有标签都相等则那一项会很大。
所以要加一个约束:设z是M维的,则 z 1 , z 2 , . . . , z N z^1,z^2,...,z^N z1,z2,...,zN 张成 R M R^M RM 空间。
这样解出z。z就是graph laplacion L L L 的eigenvector,对应比较小的eigenvalue。
先找出z再用k-means做聚类,叫Spectral clustering.

T-distributed Stochastic Neighbor Embedding (t-SNE)

前面方法只假设相近的点接近,未假设不相近的点要分开。
t-SNE先分别计算原空间、新空间中所有点对的相似度再归一化。归一化是必要的,为了防止两个空间中距离的scale不同。
然后最小化二者之间的KL距离,代入公式用GD即可。
t-SNE计算量大,可先用PCA降维,再用t-SNE降维。
t-SNE需要一堆data point,然后找到z。如果之后再给一个数据,t-SNE是没法做的,只能再跑一遍。
所以t-SNE主要用于可视化。
t-SNE的神妙之处在于原空间与新空间中相似度计算公式不同。
原空间的计算公式,使得两个点的相似度随距离增加快速下降。
而新空间的计算公式,是长尾的,为了维持相同的相似度,两个点之间要分得更开。对原来距离很近的点,影响很小。而原来离得远的点,会被拉开,强化gap。
比较LLE on MNIST 与 t-SNE on MNIST。后者先做了PCA。
这里写图片描述


李宏毅机器学习课程笔记

李宏毅机器学习课程笔记1:Regression、Error、Gradient Descent
李宏毅机器学习课程笔记2:Classification、Logistic Regression、Brief Introduction of Deep Learning
李宏毅机器学习课程笔记3:Backpropagation、“Hello world” of Deep Learning、Tips for Training DNN
李宏毅机器学习课程笔记4:CNN、Why Deep、Semi-supervised
李宏毅机器学习课程笔记5:Unsupervised Learning - Linear Methods、Word Embedding、Neighbor Embedding
李宏毅机器学习课程笔记6:Unsupervised Learning - Auto-encoder、PixelRNN、VAE、GAN
李宏毅机器学习课程笔记7:Transfer Learning、SVM、Structured Learning - Introduction
李宏毅机器学习课程笔记8:Structured Learning - Linear Model、Structured SVM、Sequence Labeling
李宏毅机器学习课程笔记9:Recurrent Neural Network
李宏毅机器学习课程笔记10:Ensemble、Deep Reinforcement Learning

这篇关于李宏毅机器学习课程笔记5:Unsupervised Learning - Linear Methods、Word Embedding、Neighbor Embedding的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/758776

相关文章

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图

Java高效实现Word转PDF的完整指南

《Java高效实现Word转PDF的完整指南》这篇文章主要为大家详细介绍了如何用Spire.DocforJava库实现Word到PDF文档的快速转换,并解析其转换选项的灵活配置技巧,希望对大家有所帮助... 目录方法一:三步实现核心功能方法二:高级选项配置性能优化建议方法补充ASPose 实现方案Libre

Python批量替换多个Word文档的多个关键字的方法

《Python批量替换多个Word文档的多个关键字的方法》有时,我们手头上有多个Excel或者Word文件,但是领导突然要求对某几个术语进行批量的修改,你是不是有要崩溃的感觉,所以本文给大家介绍了Py... 目录工具准备先梳理一下思路神奇代码来啦!代码详解激动人心的测试结语嘿,各位小伙伴们,大家好!有没有想

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Python实现Word转PDF全攻略(从入门到实战)

《Python实现Word转PDF全攻略(从入门到实战)》在数字化办公场景中,Word文档的跨平台兼容性始终是个难题,而PDF格式凭借所见即所得的特性,已成为文档分发和归档的标准格式,下面小编就来和大... 目录一、为什么需要python处理Word转PDF?二、主流转换方案对比三、五套实战方案详解方案1: