学习向量量化
学习向量量化 (LVQ) 不同于向量量化 (VQ) 和 Kohonen 自组织映射 (KSOM),它本质上是一个使用监督学习的竞争网络。我们可以将其定义为对模式进行分类的过程,其中每个输出单元代表一个类别。由于它使用监督学习,因此网络将获得一组具有已知分类的训练模式以及输出类别的初始分布。完成训练过程后,LVQ 将通过将其分配到与输出单元相同的类别来对输入向量进行分类。
架构
下图显示了 LVQ 的架构,它与 KSOM 的架构非常相似。我们可以看到,有 “n” 个输入单元和 “m” 个输出单元。各层是完全互连的,并且在其上具有权重。
使用的参数
以下是 LVQ 训练过程以及流程图中使用的参数
x = 训练向量 (x1,...,xi,...,xn)
T = 训练向量 x 的类别
wj = 第 jth 个输出单元的权重向量
Cj = 与第 jth 个输出单元关联的类别
训练算法
步骤 1 - 初始化参考向量,可以按如下方式进行 -
步骤 1(a) - 从给定的训练向量集中,取前“m”(聚类数)个训练向量并将其用作权重向量。其余向量可用于训练。
步骤 1(b) - 随机分配初始权重和分类。
步骤 1(c) - 应用 K 均值聚类方法。
步骤 2 - 初始化参考向量 $\alpha$
步骤 3 - 如果未满足停止此算法的条件,则继续执行步骤 4-9。
步骤 4 - 对于每个训练输入向量 x,执行步骤 5-6。
步骤 5 - 计算 j = 1 到 m 和 i = 1 到 n 的欧几里得距离平方
$$D(j)\:=\:\displaystyle\sum\limits_{i=1}^n\displaystyle\sum\limits_{j=1}^m (x_{i}\:-\:w_{ij})^2$$
步骤 6 - 获取获胜单元 J,其中 D(j) 最小。
步骤 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)]$
步骤 8 - 降低学习率 $\alpha$。
步骤 9 - 测试停止条件。它可能是如下所示 -
- 达到最大迭代次数。
- 学习率降低到可忽略不计的值。
流程图
变体
Kohonen 开发了另外三种变体,即 LVQ2、LVQ2.1 和 LVQ3。由于获胜单元和亚军单元都将学习的概念,这三种变体的复杂性都高于 LVQ。
LVQ2
如上所述,LVQ 其他变体的概念,LVQ2 的条件是由窗口形成的。此窗口将基于以下参数 -
x - 当前输入向量
yc - 最接近 x 的参考向量
yr - 另一个参考向量,它是次接近 x 的
dc - 从 x 到 yc 的距离
dr - 从 x 到 yr 的距离
如果输入向量 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)]$ (属于不同的类别)
$y_{r}(t\:+\:1)\:=\:y_{r}(t)\:+\:\alpha(t)[x(t)\:-\:y_{r}(t)]$ (属于相同的类别)
这里 $\alpha$ 是学习率。
LVQ2.1
在 LVQ2.1 中,我们将采用两个最接近的向量,即 yc1 和 yc2,窗口的条件如下 -
$$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)]$ (属于不同的类别)
$y_{c2}(t\:+\:1)\:=\:y_{c2}(t)\:+\:\alpha(t)[x(t)\:-\:y_{c2}(t)]$ (属于相同的类别)
这里,$\alpha$ 是学习率。
LVQ3
在 LVQ3 中,我们将采用两个最接近的向量,即 yc1 和 yc2,窗口的条件如下 -
$$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)]$ (属于不同的类别)
$y_{c2}(t\:+\:1)\:=\:y_{c2}(t)\:+\:\beta(t)[x(t)\:-\:y_{c2}(t)]$ (属于相同的类别)
这里 $\beta$ 是学习率 $\alpha$ 的倍数,并且 $\beta\:=\:m \alpha(t)$ 对于每个 0.1 < m < 0.5