竞争学习是机器学习的一个子集,属于无监督学习算法范畴。在竞争学习中,一组人工神经元会相互“竞争”,以便对特定输入“触发”或变为活跃。“获胜”的神经元通常是与给定输入最匹配的那个,随后仅对它进行更新,其他神经元保持不变。这种学习方法的重要性在于它能够自动将相似的数据输入聚类,从而在没有任何先验知识或标签的情况下,发现数据中的模式与分组。
竞争学习详解
人工神经网络常使用竞争学习模型在没有标注数据的情况下对输入进行分类。该过程从一个输入向量(通常是一个数据集)开始。然后将该输入呈现给一个人工神经元网络,每个神经元都有自己的权重集,类似于滤波器。每个神经元会基于其权重与输入向量计算一个分数,通常通过点积运算(即用滤波器与输入信息相乘并求和的一种方式)。
计算完成后,分数最高的神经元(“赢家”)会被更新,通常是将其权重朝着输入向量的方向拉近。这个过程常被称为“胜者为王”(Winner-Takes-All)策略。随着时间推移,神经元会在其最能匹配的输入向量附近不断更新并逐渐专门化。这会形成相似数据的聚类,从而帮助我们在输入数据集中发现内在模式。
为了说明如何使用竞争学习,设想一家电商企业想为目标营销进行客户细分,但没有任何先验标签或分组。通过将客户数据(购买历史、浏览行为、人口统计等)输入竞争学习模型,可以自动找到不同的簇(如高消费用户、频繁购买者、偏好折扣者),并据此定制营销策略。
竞争学习流程:逐步示例
在这个简单示例中,假设我们有一个由取值 1 到 10 的一维输入向量组成的数据集,以及一个包含两个神经元的竞争学习网络。
步骤 1:初始化
我们首先将两个神经元的权重随机初始化。假设:
步骤 2:呈现输入向量
现在,将一个输入向量提供给网络。假设我们的输入向量为“5”。
步骤 3:计算距离
计算输入向量与两个神经元权重之间的距离。权重最接近输入向量的神经元即为“赢家”。可以使用任意距离度量,例如绝对差:
- 神经元 1 的距离:|5-2| = 3
- 神经元 2 的距离:|5-8| = 3
由于两个距离相等,可以随机选择赢家。假设神经元 1 获胜。
步骤 4:更新权重
调整获胜神经元的权重,使其更接近输入向量。若学习率(在优化算法中用于决定每次迭代步长的调参项)为 0.5,则权重更新为:
- 神经元 1 的权重:2 + 0.5*(5-2) = 3.5
- 神经元 2 的权重:8(不变)
步骤 5:迭代
对数据集中的其他所有输入向量重复上述过程,并在每次呈现之后更新权重。
步骤 6:收敛
经过若干次迭代(也称为轮次/epoch),神经元的权重将开始收敛到各自对应输入簇的中心。在本例中,对于取值 1 到 10 的一维数据,我们可以预期一个神经元收敛到较低区间(1 到 5)附近,另一个则收敛到较高区间(6 到 10)附近。
这个过程体现了竞争学习的工作方式。随着时间推移,每个神经元会专注于数据中的不同簇,使系统能够识别并表示数据集中的内在分组。
竞争学习与其他学习模型
与其他无监督学习模型(如层次聚类与带噪声应用的基于密度的聚类算法,DBSCAN)相比,竞争学习的独特优势与局限会更加清晰。
|
学习模型
|
簇结构
|
簇的数量
|
噪声处理
|
簇形状
|
数据点重新分配
|
|
竞争学习
|
扁平
|
预先设定(由神经元数量决定)
|
具有一定鲁棒性,但不区分噪声与非噪声数据
|
通常为凸形
|
数据点一旦分配即固定
|
|
层次聚类
|
层次型(树状)
|
分析后确定
|
取决于具体实现
|
通常为凸形
|
随着树结构形成,数据点可被重新分配
|
|
DBSCAN
|
扁平
|
基于数据密度自动确定
|
出色,可将噪声与非噪声数据分离
|
任意(包括非凸形)
|
数据点一旦分配即固定
|
如表所示,这三种模型各具特点,适合不同类型的问题。簇的结构、簇的数量、对噪声的处理方式、可形成的簇形状,以及是否允许重新分配数据点,都是选择学习模型时需要重点考虑的因素。
在它们之间进行选择,主要取决于您的数据集的具体需求与特征。
当事先已知簇的数量,且数据在各个簇之间分布较为均衡,希望对数据进行简单、扁平的划分时,竞争学习非常适用。
另一方面,当您希望发掘数据中的层级关系,或最优簇数未知时,层次聚类是不错的选择。它提供了在不同粒度层面审视数据的灵活性。
对于包含噪声或离群点,或预期簇形状较为任意的数据集,DBSCAN 是理想之选。它还能基于数据密度自动确定簇的数量,对探索性数据分析(簇数未预设)尤为有益。
请记住,没有哪一种模型适用于所有场景;理解数据的特性是选择合适模型的关键。
竞争学习的实用用例
我们已经看到,竞争学习常用于聚类与降维。不过,它也可用于特征学习、异常检测,乃至生成式 AI。
例如,生成对抗网络(GAN)是一种利用生成器(生成假数据)与判别器(判断数据真伪)之间的竞争学习来合成逼真假数据的建模方法。
其他一些常见的竞争学习算法包括:
- 胜者为王竞争学习。 在这种简单算法中,激活度最高的神经元“获胜”,其权重会被调整得更接近输入。其他神经元不更新。
- 自组织映射(SOM)。 将高维输入数据映射到低维的神经元网格上,并调整邻近神经元的权重,使其更接近每个输入。
- 神经气体(Neural Gas)。 与 SOM 类似,但无需固定拓扑,更灵活地形成簇。会调整靠近输入的神经元权重使其更相似。
- 学习向量量化(LVQ)。 基于 SOM 的思想,但使用显式类别标签来引导竞争学习,从而得到按类别聚类的原型。
无监督学习可以从竞争学习中大大受益。竞争学习方法功能强大,预计未来会得到更广泛的应用。尽管自组织映射等竞争学习方法已存在多年,但 GAN 的成功展示了对抗式与多智能体竞争学习的潜力。
未来,我们将看到新的竞争学习算法,融合无监督、半监督与强化学习的原理,以取得更好的效果。
如果您想亲自上手构建竞争学习模型,不妨查看Simple Competitive Learning with Python。该指南将带您了解竞争学习的简单算法,并解释模型所涉及的流程、数学推导与编码实现。
想要进一步了解 AI和机器学习?请参阅以下资源:
竞争学习是机器学习的一个子集,属于无监督学习算法范畴。在竞争学习中,一组人工神经元会相互“竞争”,以便对特定输入“触发”或变为活跃。“获胜”的神经元通常是与给定输入最匹配的那个,随后仅对它进行更新,其他神经元保持不变。这种学习方法的重要性在于它能够自动将相似的数据输入聚类,从而在没有任何先验知识或标签的情况下,发现数据中的模式与分组。
竞争学习详解
人工神经网络常使用竞争学习模型在没有标注数据的情况下对输入进行分类。该过程从一个输入向量(通常是一个数据集)开始。然后将该输入呈现给一个人工神经元网络,每个神经元都有自己的权重集,类似于滤波器。每个神经元会基于其权重与输入向量计算一个分数,通常通过点积运算(即用滤波器与输入信息相乘并求和的一种方式)。
计算完成后,分数最高的神经元(“赢家”)会被更新,通常是将其权重朝着输入向量的方向拉近。这个过程常被称为“胜者为王”(Winner-Takes-All)策略。随着时间推移,神经元会在其最能匹配的输入向量附近不断更新并逐渐专门化。这会形成相似数据的聚类,从而帮助我们在输入数据集中发现内在模式。
为了说明如何使用竞争学习,设想一家电商企业想为目标营销进行客户细分,但没有任何先验标签或分组。通过将客户数据(购买历史、浏览行为、人口统计等)输入竞争学习模型,可以自动找到不同的簇(如高消费用户、频繁购买者、偏好折扣者),并据此定制营销策略。
竞争学习流程:逐步示例
在这个简单示例中,假设我们有一个由取值 1 到 10 的一维输入向量组成的数据集,以及一个包含两个神经元的竞争学习网络。
步骤 1:初始化
我们首先将两个神经元的权重随机初始化。假设:
步骤 2:呈现输入向量
现在,将一个输入向量提供给网络。假设我们的输入向量为“5”。
步骤 3:计算距离
计算输入向量与两个神经元权重之间的距离。权重最接近输入向量的神经元即为“赢家”。可以使用任意距离度量,例如绝对差:
由于两个距离相等,可以随机选择赢家。假设神经元 1 获胜。
步骤 4:更新权重
调整获胜神经元的权重,使其更接近输入向量。若学习率(在优化算法中用于决定每次迭代步长的调参项)为 0.5,则权重更新为:
步骤 5:迭代
对数据集中的其他所有输入向量重复上述过程,并在每次呈现之后更新权重。
步骤 6:收敛
经过若干次迭代(也称为轮次/epoch),神经元的权重将开始收敛到各自对应输入簇的中心。在本例中,对于取值 1 到 10 的一维数据,我们可以预期一个神经元收敛到较低区间(1 到 5)附近,另一个则收敛到较高区间(6 到 10)附近。
这个过程体现了竞争学习的工作方式。随着时间推移,每个神经元会专注于数据中的不同簇,使系统能够识别并表示数据集中的内在分组。
竞争学习与其他学习模型
与其他无监督学习模型(如层次聚类与带噪声应用的基于密度的聚类算法,DBSCAN)相比,竞争学习的独特优势与局限会更加清晰。
学习模型
簇结构
簇的数量
噪声处理
簇形状
数据点重新分配
竞争学习
扁平
预先设定(由神经元数量决定)
具有一定鲁棒性,但不区分噪声与非噪声数据
通常为凸形
数据点一旦分配即固定
层次聚类
层次型(树状)
分析后确定
取决于具体实现
通常为凸形
随着树结构形成,数据点可被重新分配
DBSCAN
扁平
基于数据密度自动确定
出色,可将噪声与非噪声数据分离
任意(包括非凸形)
数据点一旦分配即固定
如表所示,这三种模型各具特点,适合不同类型的问题。簇的结构、簇的数量、对噪声的处理方式、可形成的簇形状,以及是否允许重新分配数据点,都是选择学习模型时需要重点考虑的因素。
在它们之间进行选择,主要取决于您的数据集的具体需求与特征。
当事先已知簇的数量,且数据在各个簇之间分布较为均衡,希望对数据进行简单、扁平的划分时,竞争学习非常适用。
另一方面,当您希望发掘数据中的层级关系,或最优簇数未知时,层次聚类是不错的选择。它提供了在不同粒度层面审视数据的灵活性。
对于包含噪声或离群点,或预期簇形状较为任意的数据集,DBSCAN 是理想之选。它还能基于数据密度自动确定簇的数量,对探索性数据分析(簇数未预设)尤为有益。
请记住,没有哪一种模型适用于所有场景;理解数据的特性是选择合适模型的关键。
竞争学习的实用用例
我们已经看到,竞争学习常用于聚类与降维。不过,它也可用于特征学习、异常检测,乃至生成式 AI。
例如,生成对抗网络(GAN)是一种利用生成器(生成假数据)与判别器(判断数据真伪)之间的竞争学习来合成逼真假数据的建模方法。
其他一些常见的竞争学习算法包括:
无监督学习可以从竞争学习中大大受益。竞争学习方法功能强大,预计未来会得到更广泛的应用。尽管自组织映射等竞争学习方法已存在多年,但 GAN 的成功展示了对抗式与多智能体竞争学习的潜力。
未来,我们将看到新的竞争学习算法,融合无监督、半监督与强化学习的原理,以取得更好的效果。
如果您想亲自上手构建竞争学习模型,不妨查看Simple Competitive Learning with Python。该指南将带您了解竞争学习的简单算法,并解释模型所涉及的流程、数学推导与编码实现。
想要进一步了解 AI和机器学习?请参阅以下资源: