Artificial Neural Network 简明教程
Learning Vector Quantization
学习向量量化 (LVQ) 不同于矢量量化 (VQ) 和科霍宁自组织映射 (KSOM),它本质上是一种竞争性网络,使用监督学习。我们可以将其定义为一个对模式进行分类的过程,其中每个输出单元代表一个类别。由于它使用监督学习,因此将会给网络提供一组具有已知分类的训练模式,以及输出类别的一个初始分布。在完成训练过程后,LVQ 将通过将输入向量分配到与输出单元相同的类别,对该向量进行分类。
Parameters Used
以下是 LVQ 训练过程中以及流程图中使用的参数:
-
x = 训练向量 (x1,…,xi,…,xn)
-
T = 训练向量 x 的类别
-
wj = jth 输出单元的权重向量
-
Cj = 与 jth 输出单元关联的类别
Training Algorithm
Step 1 - 初始化参考向量,如下操作:
-
Step 1(a) - 从给定的训练向量集中,取前“ m ”(集群数)个训练向量,并将它们用作权重向量。其余向量可用于训练。
-
Step 1(b) - 随机分配初始权重和分类。
-
Step 1(c) - 应用 K 均值聚类方法。
Step 2 - 初始化参考向量α
Step 3 - 如果未达到该算法的停止条件,则继续步骤 4-9。
Step 4 - 对每个训练输入向量 x 按照步骤 5-6 操作。
Step 5 - 计算 j = 1 to m 和 i = 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 - 对停止条件进行测试。可能如下所示:
-
达到最大迭代次数。
-
学习速率降低到一个可以忽略不计的值。
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)]$ (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 中,我们将取两个最接近的向量 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)]$ (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 中,我们将采用两个最接近的向量,即 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)]$ (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