2. 辅助目标函数
要使用输入 (bt, groups, embed_dim) 计算 DEC 模型的目标分布,关键部分是使用软分配 q ,其形状为 (bt, groups, max_cluster) 。这里, max_cluster 是您要定位的集群数量。当您沿该维度执行聚类时,需要跨 groups 维度计算目标分布。
The process is:其过程是:
-
对软分配进行平方 ( q ):这会放大高概率分配并抑制较低概率分配。
-
对 groups 维度求和:您对 groups 维度(张量中的索引 1)上的这些平方概率求和,因为您想要捕获每个组在所有集群中的分布批次中的项目。
-
归一化:然后对求和值进行归一化,以确保它们形成正确的概率分布。
目标分布计算如下所示:
python
def target_distribution(q):
# Square the probabilities and sum across the 'groups' dimension
weight = q ** 2 / q.sum(1, keepdim=True)
# Normalize across the 'max_cluster' dimension
return (weight / weight.sum(2, keepdim=True))
在这个函数中:
- q.sum(1, keepdim=True) 对 groups 维度上的概率平方求和,得到形状 (bt, 1, max_cluster) 的张量。
- weight / weight.sum(2, keepdim=True) 然后在 max_cluster 维度(张量中的索引 2)对这些概率进行归一化,确保每个簇的概率总和为 1。这会产生相同形状的张量如 q ( (bt, groups, max_cluster) )。
- 目标分布的计算符合数据结构和 DEC 算法的要求。