学习向量量化
学习向量量化 (LVQ) 不同于向量量化 (VQ) 和 Kohonen 自组织映射 (KSOM),它基本上是一个使用监督学习的竞争网络。我们可以将其定义为对模式进行分类的过程,其中每个输出单元代表一个类。由于它使用监督学习,网络将获得一组具有已知分类的训练模式以及输出类的初始分布。完成训练过程后,LVQ 将通过将输入向量分配给与输出单元相同的类来对其进行分类。
架构
下图显示了 LVQ 的架构,它与 KSOM 的架构非常相似。我们可以看到,有 "n" 个输入单元和 "m" 个输出单元。各层完全互连,并带有权重。
使用的参数
以下是 LVQ 训练过程以及流程图中使用的参数
x = 训练向量 (x1,...,xi,...,xn)
T = 训练向量 x
的类别
wj = 第 j 个输出单元的权重向量
Cj = 与第 j 个输出单元
训练算法
步骤 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 − 测试停止条件。可能如下 −
- 已达到最大 epoch 数。
- 学习率降低到可忽略不计的值。
流程图
变体
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\:-\: heta\:\:and\:\:\frac{d_{r}}{d_{c}}\:>\:1\:+\: heta$$
这里,$ heta$ 是训练样本的数量。
可以使用以下公式 − 进行更新
$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\:-\: heta)$$
$$Max\begin{bmatrix}\frac{d_{c1}}{d_{c2}},\frac{d_{c2}}{d_{c1}}\end{bmatrix}\:<\:(1\:+\: heta)$$
可以使用以下公式进行更新 −
$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\:-\: heta)(1\:+\: heta)$$
这里 $ heta\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$ 的倍数,对于每 0.1 < m < 0.5
,$\beta\:=\:m \alpha(t)$