无监督学习-线性方法|深度学习(李宏毅)(十七)

简介: 无监督学习-线性方法|深度学习(李宏毅)(十七)

一、概述


无监督学习可以认为主要包括两种,一种是化繁为简(比如聚类和降维)和无中生有(比如生成)。化繁为简这种方式只有模型的输入,而无中生有这种方式只有模型的输出:


W7[MU3JK3YV5V58EJC[HOVT.png

                                               无监督学习


在本文中主要介绍一些聚类和降维的方法。


二、聚类


  1. K-means


K-means是一种无监督的聚类方法,通常我们有一些数据,需要分成多个类。这里有一个问题就是事先需要确定要聚成多少个类,类的个数不能太多也不能太少,极端地将数据聚成样本个数个类或者一个类都相当于没有进行聚类:


Z7@ZJ7JONR]1KMO7I0RH@MP.png

                                            Clustering

06WR}0P$8$JPDX(K(8W4J[D.png


  1. Hierarchical Agglomerative Clustering(HAC)


HAC这种聚类方法首先根据样本相似度构建一棵二叉树,然后选择一个阈值来进行聚类。


如下图,首先在计算所有的样本pair的相似度,然后将相似度最高的两个样本合并起来(合并的方法可以是计算平均值),然后重复上述过程直至最终构建出整棵二叉树:


JK{`ID}(GJLU_DZON8B)5AE.png

                                             建树


构建出二叉树以后选择一个阈值,类似于在树上切一刀,下图展示了不同的阈值所对应的聚类结果:


1R4F6NG1T9@HOZ@]Y7W9(O3.png

                                          聚类


三、降维


  1. 概述


在聚类的方法中每个样本必须被划分为一个类,而有时一个样本既可以属于这一类,也可能属于另一类,这种情况下我们需要样本的一个分布的表示,使用降维的方法可以做到这一点。


我们可以从另一个角度来考虑降维这种方法可能是有用的。如下图左边的3维的数据实际上可以使用2维的数据来表示(将左图螺旋状数据展平):


)57MYYN`OIJBP4TN2(HTP11.png

                                            example

举另外一个例子,在MNIST数据集中每个数字用}%2Q2J6%F{G[[PFB)}TT6J5.png的矩阵来表示,但是大多数}%2Q2J6%F{G[[PFB)}TT6J5.png的图片都不是数字,也就是说使用}%2Q2J6%F{G[[PFB)}TT6J5.png的矩阵是冗余的,随机初始化一张图片很难生成一个数字:


G(`0(@FQG5@L@TP[R_WC{AJ.png

                                          MNIST  


在下图中的不同的3,事实上不需要使用$BF{DH{TN@]2)JOS`WW9ERD.png的矩阵的来表示,只需要记录其旋转的角度即可:


9CL@5GX)5)`B@]O@WF_AKHP.png

                                       不同的3


上述例子说明将高维的样本降维到低维空间是有实际意义的。


如下图,降维的主要流程也就是找一个function来讲高维样本KQ1~T%MB4095){@WMS4{UMH.png降维到低维样本KQ1~T%MB4095){@WMS4{UMH.png

A[ZZH{2~%@TK_1FTAWA66{L.png

                                                     降维


  1. Feature Selection


降维的最简单的方法是Feature Selection。这种方法就是简单地删除某些维度,比如下图中可以把15ZPR~I]$CALONIEVTO](OR.png这个维度拿掉:

TSV{HCD1L8Z6)5M4JU_[F2U.png


           Feature Selection


有时数据的任何一维都很重要,这时候Feature Selection的方法就不能用了,比如下面这种情况:


 RRLBBOA{DKTZZT_1(D[(J36.png

                Feature Selection


  1. Principal Component Analysis


  • 介绍

1A6]ZU[8J{T4VI339A`9B7B.png

                                                   投影


以下图为例,如果要选择一个方向进行投影,我们需要选择投影后方差最大的方向(红色箭头的方向)进行投影,这样可以保留更多的数据的特征,也就是说我们希望`5U`Y_G6AI_N6AL1M8TRDR3.png的方差越大越好:


)U12S~GI{D2MAE508GFX@R3.png

                                                  数据


NIPHCT)CE`C(L1S~MZU$G}6.png

Z$VR0723T~S79(5VJ01IVHI.png

下面对G[WLW8%1))M3{8$O0X}(49R.png进行求解:

7M}{7`Q6MW9]ZEV0A6MOND0.png

@%MINFC79Q0_HEX7ZC[F3$N.png

使用拉格朗日乘子法来求解上述约束优化问题,定义拉格朗日函数:


~`O$`W0J86N7%YKR@9{9Z[9.png

EL60TA}U[[{BT23[%X()RQN.png


  • 去相关性


RYEJ1AGBT63DB8QPZ6N{7~B.png

从最小重构代价和SVD角度看PCA


XXP]%G$)9HYLZCQLBNUBHDQ.png

                                              数字的构成

MHBZS(FY6E~VRS[8FTI@JPJ.png

43E%]D`8S6H7]V}1JWT7V9C.png

将所有的样本集合起来就可以写成矩阵相乘的形式:


Z}YF}}_L2AH38WD4HTCHFRT.png

                                     矩阵形式


KXM1(TO$T[981MO_OS(VY1K.png

                                        奇异值分解的形式


T3%~`71LMEMZJFL0CNC%S{R.png

另一篇有关PCA推导的文章:主成分分析|机器学习推导系列(五)


  • PCA与AutoEncoder


X90XJOU$8K72`(UO_Z)_P[B.png

                                       AutoEncoder

这个神经网络训练的方式就是使得网络的输入FJ205U}6O[$3_E9KA_20%XB.png越接近越好,使用梯度下降来求解。需要注意的是,PCA的方法是可以通过奇异值分解或者拉格朗日乘子法求得解析解的,所得解是一些彼此正交的向量,而神经网络使用梯度下降的方法求得的解一般不会正好是解析解,因此重构损失一般会比解析解对应的重构损失大一些。


  • PCA的局限性


首先PCA是无监督的,举例来说在下图中对数据进行PCA降维的话将会把数据投影到箭头所指的方向上:


XAQMG1434%7S@P7$_QEGRTX.png

                                                 PCA


而加入这些数据是两个类别,那么两个类别的数据就会混合到一起。对于多类别的数据,可以使用另一种降维方法,叫做线性判别分析(Linear Discriminant Analysis,LDA),参考链接:线性分类|机器学习推导系列(四)。这种方法会按照下图箭头方向进行投影:


H`NV)}8HD9$ETELVXK33SQO.png

                                   LDA


另外一点是PCA是线性的,并非任何数据分布都能使用线性方法来处理,比如下图数据:


Y3TT7WX(HYG{SK4]DDQ3VRL.png

                         数据


这种类型的数据最好能够将其展开,如果使用PCA则会得到以下结果:


GA}IRKEJ0MGCB4I_Q2OSB@O.png

                            PCA


四、应用


  1. 使用PCA分析宝可梦数据


假设一只宝可梦的数据样本包含六个维度,现在要将所有的数据进行PCA的降维,降到多少个维度可以通过比较数据的方差矩阵的特征值来得到,首先计算每个特征值的占比:


BTA}PJKD}}4($KL[3JPPG(D.png


得到结果如下表:

%%2(KU6$_2}C9V46)V146FL.png

                                                      占比


选择占比较大的前几个即可。降维后得到的主成分如下图:


0([Y`TX23@UHB3Y_U_)JFVY.png

                                                      主成分


  1. 对图片进行PCA


下面展示了分别对数字和人脸图片进行PCA的结果,都是提取了30个主成分:


UH%9EW3L}W4E[[PR988ONCU.png

                                                   数字


9RHYJ`5KQ@91(O9RW((2VWN.png

                                                        人脸


这里的数字的主成分看起来不像是笔画,人脸的主成分看起来也是完整的人脸,这是因为将这些主成分进行线性组合时的权重可能是正的也可能是负的。如果想让得到的主成分是笔画或者五官这样的图片,可以使用非负矩阵分解(Non-negative Matrix Factorization,NMF)这种方法,这种方法会限制权重和主成分都是非负的,最终得到的效果如下:


MQMFLEWY(_68_UK7F_BQJ%W.png

                                                         数字


6~41UQ1GA(WCQEG3ZEF8CU5.png

                                                 人脸


  1. 矩阵分解


下图展示了A、B、C、D、E五个阿宅购买公仔的情况:


M3$55P(N0H]V@~4[RN%8N9A.png 

                                                数据


下面使用矩阵分解(Matrix Factorization)来解释上面的数据。假设每个阿宅有一个隐向量来表示他对某种属性公仔的喜好(用@FH02A7V6U8WJF96G4D12A7.png来表示),每个公仔也有一个隐向量来表示该公仔的属性(用_KHAYYQKTJWI@4~SY$_WP4D.png来表示),这里假设这些隐向量维度是2,喜好隐向量与属性隐向量的点积代表了这个阿宅会购买这个公仔的数量:


YQZ9JPR0OMGTGI8C6@`[%RE.png

                                                隐向量

假设数据矩阵为{)D(JRV@TILB@8NVL5N1K$1.png{)D(JRV@TILB@8NVL5N1K$1.png是由隐变量的点积组成的:

S{IZ[`856BM5$H$FD{]K(U4.png

                                                     数据


可以使用SVD的方式来求解:


68F8Y4%BE_F6YQ(BGKPU5YF.png

                                                 SVD

如果~86Q(QI2BB6O2QHH[$L$J8D.png中某些位置的数据不知道,如下图:

M]`Q{_%~MGH63V765`YM~QD.png

                                                     缺失数据


可以使用梯度下降的方法来求解隐变量,损失函数如下:


A3%5XGN$%22SB2SY]H@D%~K.png


根据结果可以分析隐变量代表的含义,比如通过下图结果可以认为隐变量第一维是天然呆属性,第二维是傲娇属性:


JVF%[BC048EJ9TDK6)L7)NU.png

                                                      结果


可以使用解得的结果来填充数据:


MOIQ2VKNU9LUL}BW0[G}Z)R.png

                                                        填充数据


这个模型还可以更精致一点,比如我们可以考虑阿宅或者公仔的一些其他属性,现在做以下变动:


B]2RP8DHKL8BK8_V26LYH3O.png

也可以为上式添加正则项。


上述技术通常会被用在推荐系统中。


  1. 使用矩阵分析来做话题分析


将上述矩阵分析的技术用在话题分析上的话,就叫做潜在语义分析(Latent Semantic Analysis,LSA)。举例来说,下表表示了某些词在语料库的每个文档中的出现情况,表中的数据可以是词的tf(term frequency),也可以是词的tf-idf:


%T0ZD1EV[7L4E[Z%$2FP9IX.png

                                                    数据


将上述数据矩阵做分解,得到的隐变量的每一维度就代表一个话题,该维度的数值就表明该文章倾向于该话题的程度。

相关文章
|
5月前
|
机器学习/深度学习 数据可视化 网络架构
增强深度学习模型的可解释性和泛化能力的方法研究
【8月更文第15天】在深度学习领域,模型的准确率和预测能力是衡量模型好坏的重要指标。然而,随着模型复杂度的增加,它们往往变得越来越难以理解,这限制了模型在某些关键领域的应用,例如医疗诊断、金融风险评估等。本文将探讨如何通过几种方法来增强深度学习模型的可解释性,同时保持或提高模型的泛化能力。
608 2
|
3月前
|
机器学习/深度学习 调度 计算机视觉
深度学习中的学习率调度:循环学习率、SGDR、1cycle 等方法介绍及实践策略研究
本文探讨了多种学习率调度策略在神经网络训练中的应用,强调了选择合适学习率的重要性。文章介绍了阶梯式衰减、余弦退火、循环学习率等策略,并分析了它们在不同实验设置下的表现。研究表明,循环学习率和SGDR等策略在提高模型性能和加快训练速度方面表现出色,而REX调度则在不同预算条件下表现稳定。这些策略为深度学习实践者提供了实用的指导。
74 2
深度学习中的学习率调度:循环学习率、SGDR、1cycle 等方法介绍及实践策略研究
|
3月前
|
机器学习/深度学习 监控 数据可视化
深度学习中实验、观察与思考的方法与技巧
在深度学习中,实验、观察与思考是理解和改进模型性能的关键环节。
60 5
|
4月前
|
机器学习/深度学习 存储 人工智能
深度学习中的模型压缩技术在人工智能领域,深度学习技术的迅猛发展带来了巨大的计算资源需求。为了解决这一问题,模型压缩技术应运而生。本文将介绍什么是模型压缩、常见的模型压缩方法以及其在实际应用中的意义。
随着深度学习技术的广泛应用,计算资源的需求也大幅增加。为减少资源消耗,提升模型效率,模型压缩技术成为研究热点。本文探讨了模型压缩的定义、主流方法和其重要性。通过量化、剪枝、知识蒸馏和轻量级架构等策略,模型得以在保持性能的同时减小体积,从而适用于资源受限的环境。这些技术不仅降低了计算成本,还推动了深度学习在移动设备和边缘计算等领域的应用,使AI技术更加普及和实用。总之,模型压缩在平衡模型性能与资源消耗之间发挥着关键作用,是未来AI发展的重要方向。
|
4月前
|
机器学习/深度学习
数百万晶体数据训练、解决晶体学相位问题,深度学习方法PhAI登Science
【9月更文挑战第5天】近期,《科学》杂志报道了一项名为PhAI的深度学习技术,在晶体学相位问题上取得重要突破。相位问题旨在确定晶体中分子或原子的位置与方向,对理解其物理化学特性至关重要。PhAI通过数百万晶体数据训练,能高效准确地解决这一难题,有望大幅提升研究效率,加速新材料和药物的设计。但其准确性及对未知结构处理能力仍面临挑战。论文详情参见:https://www.science.org/doi/10.1126/science.adn2777。
55 1
|
4月前
|
机器学习/深度学习 PyTorch TensorFlow
Python实现深度学习学习率指数衰减的方法与参数介绍
学习率指数衰减提供了一种高效的动态调整学习率的手段,帮助模型在不同训练阶段以不同的学习速度优化,有利于提升模型性能和训练效率。通过合理设置衰减策略中的参数,可以有效地控制学习率的衰减过程,实现更加精确的模型训练调优。
78 0
|
4月前
|
机器学习/深度学习 算法
深度学习中的自编码器:探索无监督学习的秘密
在深度学习的浩瀚海洋中,自编码器犹如一座神秘的灯塔,指引着无监督学习的方向。本文将带你航行于自编码器的构造与原理之间,探索它们如何通过编码输入数据、重构输出来捕捉数据的内在特征。我们将一起见证自编码器在降维、去噪、生成模型等方面的应用奇迹,并思考其在深度学习未来中的角色与挑战。准备好了吗?让我们启航,揭开自编码器的神秘面纱。
73 0
|
28天前
|
机器学习/深度学习 传感器 数据采集
深度学习在故障检测中的应用:从理论到实践
深度学习在故障检测中的应用:从理论到实践
118 5
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的原理与应用:开启智能时代的大门
深度学习的原理与应用:开启智能时代的大门
91 16
|
20天前
|
机器学习/深度学习 网络架构 计算机视觉
深度学习在图像识别中的应用与挑战
【10月更文挑战第21天】 本文探讨了深度学习技术在图像识别领域的应用,并分析了当前面临的主要挑战。通过研究卷积神经网络(CNN)的结构和原理,本文展示了深度学习如何提高图像识别的准确性和效率。同时,本文也讨论了数据不平衡、过拟合、计算资源限制等问题,并提出了相应的解决策略。
78 19