学习向量量化

2025年3月17日 | 阅读 3 分钟

学习向量量化(Learning Vector Quantization,简称LVQ)是一种人工神经网络,其灵感来源于生物学模型,用于表示神经网络。它基于一种用于监督学习和分类的原型算法。它使用类似于自组织映射(Self Organizing Map)的竞争学习算法开发其网络。它还能够处理多类别分类问题。LVQ由两层组成,一层是输入层,另一层称为输出层。下面是学习向量量化的结构,其中包含输入数据的类别数量以及每个样本的输入特征数量。

Learning Vector Quantization

学习向量量化是如何工作的?

假设我们有大小为(m,n)的输入数据,其中m是训练样本的数量,n是每个实例中的分量数量,以及一个大小为(1,m)的任意标签向量。然后,它的权重将被初始化为(n,C)的大小,其中C是从初始训练样本中提取的不同标签的数量。这些标签必须在所有训练样本中移除。在这种情况下,c指示了类别数量。然后,对于每个训练样本,遍历剩余的输入信息,将其更改为具有最接近距离(例如,欧几里得距离)的获胜向量(权重向量)。

权重更新规则由下式给出:

其中 alpha 表示在时间 t 上的学习率,J 是获胜向量。此外,i 是训练样本的特征,k 代表使用输入数据集的训练样本的数量 k。在 LVQ 网络上训练完成后,训练好的权重用于分类新样本。新实例将根据其获胜的 LVQ 类别进行标记。

算法

涉及的步骤包括:

  • 权重初始化
  • 从 1 到 N 个 Epoch
  • 选择一个良好的训练样本
  • 找到获胜向量
  • 确保更新获胜向量
  • 对每个训练样本重复步骤 3、4 和 5。
  • 分类测试样本

以下是实现。

代码

输出

Sample T belongs to class :  0
Trained weights :  [[0.3660931, 0.2816541, 1, 1], [0.33661, 0.1729, 0, 1]]