Artificial Neural Network 简明教程

Learning Vector Quantization

学习向量量化 (LVQ) 不同于矢量量化 (VQ) 和科霍宁自组织映射 (KSOM),它本质上是一种竞争性网络,使用监督学习。我们可以将其定义为一个对模式进行分类的过程,其中每个输出单元代表一个类别。由于它使用监督学习,因此将会给网络提供一组具有已知分类的训练模式,以及输出类别的一个初始分布。在完成训练过程后,LVQ 将通过将输入向量分配到与输出单元相同的类别,对该向量进行分类。

Architecture

下图展示了 LVQ 的架构,该架构与 KSOM 的架构相当相似。正如我们所见,有 “n” 个输入单元和 “m” 个输出单元。这些层完全互联,并在其上设置权重。

layers

Parameters Used

以下是 LVQ 训练过程中以及流程图中使用的参数:

  1. x = 训练向量 (x1,…​,xi,…​,xn)

  2. T = 训练向量 x 的类别

  3. wj = jth 输出单元的权重向量

  4. Cj = 与 jth 输出单元关联的类别

Training Algorithm

Step 1 - 初始化参考向量,如下操作:

  1. Step 1(a) - 从给定的训练向量集中,取前“ m ”(集群数)个训练向量,并将它们用作权重向量。其余向量可用于训练。

  2. Step 1(b) - 随机分配初始权重和分类。

  3. Step 1(c) - 应用 K 均值聚类方法。

Step 2 - 初始化参考向量α

Step 3 - 如果未达到该算法的停止条件,则继续步骤 4-9。

Step 4 - 对每个训练输入向量 x 按照步骤 5-6 操作。

Step 5 - 计算 j = 1 to mi = 1 to n 的欧氏距离平方

D(j)\:=\:\displaystyle\sum\limits_{i=1} n\displaystyle\sum\limits_{j=1} m (x_{i}\:-\:w_{ij})^2

Step 6 - 获得 D(j) 最小的获胜单元 J

Step 7 - 通过以下关系计算获胜单元的新权重:

如果 T = Cj 则 $w_{j}(new)\:=\:w_{j}(old)\:+\:\alpha[x\:-\:w_{j}(old)]$

如果 T ≠ Cj 则 $w_{j}(new)\:=\:w_{j}(old)\:-\:\alpha[x\:-\:w_{j}(old)]$

Step 8 - 降低学习率 α。

Step 9 - 对停止条件进行测试。可能如下所示:

  1. 达到最大迭代次数。

  2. 学习速率降低到一个可以忽略不计的值。

Flowchart

flowchart

Variants

科霍宁开发了另外三种变体,即 LVQ2、LVQ2.1 和 LVQ3。在这三种变体中,由于获胜单元和亚军单元都会学习,因此复杂性比 LVQ 更高。

LVQ2

如上所述,LVQ 其他变体的概念,LVQ2 的条件由窗口形成。此窗口将基于以下参数:

  1. x - 当前输入向量

  2. yc - 最接近 x 的参考向量

  3. yr - 另一个参考向量,它最接近 x

  4. dc - xyc 的距离

  5. dr - xyr 的距离如果

输入向量 x 落入窗口中,则

\frac{d_{c}}{d_{r}}\:>\:1\:-\:\theta\:\:and\:\:\frac{d_{r}}{d_{c}}\:>\:1\:+\:\theta

此处,$\theta$ 是训练样本的数量。

使用以下公式可以进行更新:

$y_{c}(t\:+\:1)\:=\:y_{c}(t)\:+\:\alpha(t)[x(t)\:-\:y_{c}(t)]$ (belongs to different class)

$y_{r}(t\:+\:1)\:=\:y_{r}(t)\:+\:\alpha(t)[x(t)\:-\:y_{r}(t)]$ (belongs to same class)

这里 $\alpha$ 是学习率。

LVQ2.1

在 LVQ2.1 中,我们将取两个最接近的向量 yc1yc2 ,窗口的条件如下:

Min\begin{bmatrix}\frac{d_{c1}}{d_{c2}},\frac{d_{c2}}{d_{c1}}\end{bmatrix}\:>\:(1\:-\:\theta)

Max\begin{bmatrix}\frac{d_{c1}}{d_{c2}},\frac{d_{c2}}{d_{c1}}\end{bmatrix}\:<\:(1\:+\:\theta)

使用以下公式可以进行更新:

$y_{c1}(t\:+\:1)\:=\:y_{c1}(t)\:+\:\alpha(t)[x(t)\:-\:y_{c1}(t)]$ (belongs to different class)

$y_{c2}(t\:+\:1)\:=\:y_{c2}(t)\:+\:\alpha(t)[x(t)\:-\:y_{c2}(t)]$ (belongs to same class)

这里,$\alpha$ 是学习速率。

LVQ3

在 LVQ3 中,我们将采用两个最接近的向量,即 yc1yc2 ,窗口的条件如下 −

Min\begin{bmatrix}\frac{d_{c1}}{d_{c2}},\frac{d_{c2}}{d_{c1}}\end{bmatrix}\:>\:(1\:-\:\theta)(1\:+\:\theta)

这里 $\theta\approx 0.2$

使用以下公式可以进行更新:

$y_{c1}(t\:+\:1)\:=\:y_{c1}(t)\:+\:\beta(t)[x(t)\:-\:y_{c1}(t)]$ (belongs to different class)

$y_{c2}(t\:+\:1)\:=\:y_{c2}(t)\:+\:\beta(t)[x(t)\:-\:y_{c2}(t)]$ (belongs to same class)

这里 $\beta$ 是学习速率 $\alpha$ 的倍数,对于每个 0.1 < m < 0.5