李宏毅机器学习课程笔记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

相关文章

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

C++读写word文档(.docx)DuckX库的使用详解

《C++读写word文档(.docx)DuckX库的使用详解》DuckX是C++库,用于创建/编辑.docx文件,支持读取文档、添加段落/片段、编辑表格,解决中文乱码需更改编码方案,进阶功能含文本替换... 目录一、基本用法1. 读取文档3. 添加段落4. 添加片段3. 编辑表格二、进阶用法1. 文本替换2

Python进行word模板内容替换的实现示例

《Python进行word模板内容替换的实现示例》本文介绍了使用Python自动化处理Word模板文档的常用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录技术背景与需求场景核心工具库介绍1.获取你的word模板内容2.正常文本内容的替换3.表格内容的

Python实现自动化删除Word文档超链接的实用技巧

《Python实现自动化删除Word文档超链接的实用技巧》在日常工作中,我们经常需要处理各种Word文档,本文将深入探讨如何利用Python,特别是借助一个功能强大的库,高效移除Word文档中的超链接... 目录为什么需要移除Word文档超链接准备工作:环境搭建与库安装核心实现:使用python移除超链接的

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

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进行差异比对三、高级对比方