自然语言处理中的非负矩阵分解技术

自然语言处理NLP)的领域中,非负矩阵分解(NMF)是一种用于降维和主题建模的统计方法。本文将详细介绍NMF的基本概念、数学原理以及如何在实际中应用这项技术。

非负矩阵分解(NMF)简介

非负矩阵分解是一种线性代数算法,它能够识别数据中潜在的或隐藏的结构。在主题建模中,NMF通过将输入的词-文档矩阵分解为两个非负矩阵,来揭示文档集合中的主题结构。

NMF的关键特点包括:

  • 它属于线性代数算法,用于识别数据中的潜在结构。
  • 它以非负矩阵的形式表示。
  • 它可以应用于主题建模,其中输入是经过TF-IDF标准化的词-文档矩阵。
  • NMF因其能够自动提取稀疏且易于解释的因素而变得流行。

以下是一个NMF技术的图解表示:

在这个例子中,有一个词-文档矩阵(A),将其分解为两个矩阵:

  • 第一个矩阵包含每个主题及其包含的词汇。
  • 第二个矩阵包含每个文档及其包含的主题。

NMF的一般情况

假设有一个形状为m x n的输入矩阵V。NMF将矩阵V分解为两个矩阵W和H,使得矩阵W和H的形状分别为m x k和k x n。

在这种方法中,不同矩阵的解释如下:

  • V矩阵:代表词-文档矩阵。
  • H矩阵:矩阵H的每一行是一个词嵌入。
  • W矩阵:矩阵W的每一列代表每个词在每个句子中的权重,即词与句子的语义关系。

主要假设是,鉴于V的所有条目都是正数,W和H的所有元素也都是正数。

NMF背后的数学

NMF是一种无监督的机器学习技术,其主要目标是量化元素之间的距离。为了测量距离,有几种方法,但本文将讨论机器学习从业者常用的两种流行方法:

  • 广义Kullback-Leibler散度
  • Frobenius范数

以下是使用Python和Numpy实现Frobenius范数的代码示例:

import numpy as np # 假设A是一个numpy数组 A = np.array([[1, 2], [3, 4]]) # 计算Frobenius范数 frobenius_norm = np.linalg.norm(A, 'fro') print(frobenius_norm)

NMF的目标函数

给定原始矩阵A,需要获得两个矩阵W和H,使得A = WH。NMF具有固有的聚类属性,W和H描述了矩阵A的以下信息:

  • A(文档-词矩阵):输入包含哪些词出现在哪些文档中。
  • W(基向量):从文档中发现的主题(聚类)。
  • H(系数矩阵):每个文档中主题的成员权重。

为了改进模型并实现高准确性,有一个优化过程。scikit-learn包中有两种类型的优化算法:

  • 坐标下降求解器
  • 乘法更新求解器

在这种技术中,可以通过优化目标函数(如EM算法)来计算矩阵W和H,并迭代更新矩阵W和H,直到收敛。

NMF的一些启发式初始化矩阵W和H的方法

可以随机初始化W和H矩阵,或者使用上节讨论的任何方法,但以下替代启发式方法也被用来返回更好的初始估计,目的是更快地收敛到一个好的解决方案。

  • 使用某种聚类方法,并将前r个聚类的聚类均值作为W的列,H作为聚类指示矩阵的缩放版本。
  • 使用SVD找到A的最佳秩-r近似,并用它来初始化W和H。
  • 选择A的r列,并直接使用它们作为W的初始值。

NMF的实际应用

图像处理使用NMF。让更详细地看看这个。

假设有一张包含p个像素的灰度人脸图像,并将数据压缩成一个单独的向量,使得第i个条目代表第i个像素的值。让X ∈ R^(p x n)的行代表p个像素,n列每列代表一张图像。

在这个应用中,通过使用NMF,将产生两个矩阵W和H。现在,可能会想到一个问题:

  • 这些矩阵与给定的用例有什么关系?

矩阵W:W的列可以被描述为图像或基图像。

矩阵H:这个矩阵告诉如何将基图像相加以重建给定面部的近似值。

  • 识别推文的情感
  • 检测推文中的仇恨言论
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485