测量二维二进制矩阵的熵/信息/模式


53

我想测量二维二进制矩阵的熵/信息密度/图案相似度。让我显示一些图片以供说明:

此显示应具有较高的熵:

一种)

在此处输入图片说明

这应该具有中等熵:

B)

在此处输入图片说明

最后,这些图片应该都具有接近零的熵:

C)

在此处输入图片说明

D)

在此处输入图片说明

E)

在此处输入图片说明

是否有一些捕获熵的索引,分别。这些显示的“样式”?

当然,每种算法(例如,压缩算法;或ttnphns提出旋转算法)都对显示器的其他功能敏感。我正在寻找一种尝试捕获以下属性的算法:

  • 旋转和轴向对称
  • 聚类量
  • 重复次数

也许更复杂,算法可能对心理的“ 格式塔原理 ”的属性敏感,尤其是:

  • 接近定律: 邻近定律
  • 对称定律:即使距离很远,对称图像也可以集体感知:对称

具有这些属性的显示应被赋予“低熵值”;具有相当随机/非结构化点的显示应该被分配一个“高熵值”。

我知道,很可能没有一种算法可以捕获所有这些功能。因此,也非常欢迎提出仅针对某些功能甚至仅针对单个功能的算法的建议。

特别是,我正在寻找具体的,现有的算法特定的,可实现的想法(我将根据这些标准来授予赏金)。


很酷的问题!我能问一下,什么原因需要采取单一措施?您脸上的三个属性(对称性,聚类和重复性)似乎足够独立,可以单独采取措施。
Andy W

到目前为止,我有些怀疑,您可以找到实现格式塔原理的通用算法。后者主要基于对先前原型的识别。您可能会想到这些,但您的计算机可能没有。
ttnphns 2011年

我同意你们俩 其实我不是在寻找一个单一的算法-尽管我以前的写法确实提出这一点。我更新了问题,以明确允许使用单个属性的算法。也许有人对如何组合多个算法的输出也有想法(例如,“始终取算法集合中最低的熵值”)
Felix

1
赏金结束了。感谢所有贡献者和出色的创意!赏金产生了很多有趣的方法。几个答案包含大量的脑力劳动,有时可惜无法将赏金分开。最后,我决定将赏金授予@whuber,因为在我看来,他的解决方案是关于其捕获功能的最全面的算法,而且易于实现。我也很欣赏它被应用于我的具体例子。最令人印象深刻的是它能够按照我的“直观排名”的确切顺序分配数字。谢谢,F
Felix S

Answers:


35

有一个简单的过程可以捕获所有直觉,包括心理和几何元素。它依赖于使用空间接近度,这是我们感知的基础,并提供了一种固有的方式来捕获仅由对称性不完美地度量的内容。

mnk=2233min(n,m)min(n,m)

为了了解其工作原理,让我们对问题中的数组进行计算,我将其从上到下分别称为至。这是应用于(当然是原始数组)的移动总和图。a1a5k=1,2,3,4k=1a1

图1

从左上顺时针方向旋转,等于,,,和。阵列是由,然后由,由和由分别。它们看起来都是“随机的”。让我们用其以2为底的熵来衡量这种随机性。对于,这些熵的顺序为。我们称其为的“配置文件” 。k124355442233a1(0.97,0.99,0.92,1.5)a1

相反,这里是的移动和:a4

图2

对于几乎没有变化,因此熵较低。轮廓为。它的值始终低于的值,这证实了直观的感觉,即存在强“模式” 。k=2,3,4(1.00,0,0.99,0)a1a4

我们需要一个参考框架来解释这些配置文件。二进制值的完全随机的阵列将具有只是大约一半的值等于,而另一半等于,对于熵。在 x邻域内的移动总和将趋于具有二项式分布,从而为它们提供可预测的熵(至少对于大型数组而言),可以近似为:011kk1+log2(k)

熵图

这些结果通过对数组进行仿真得到了证实。但是,由于相邻窗口之间的相关性(一旦窗口大小大约是数组尺寸的一半),并且由于数据量少,它们会分解成小的数组(例如此处的 x数组)。这是通过仿真生成的随机 x阵列的参考轮廓,以及一些实际轮廓的图:m=n=1005555

轮廓图

在该图中,参考轮廓为纯蓝色。阵列轮廓对应于:红色,:金,:绿色,:浅蓝色。(包含会使图片模糊不清,因为它接近的轮廓。)总体而言,轮廓与问题中的顺序相对应:随着表观顺序的增加,它们最多会降低值。例外是:直到最后,对于,其移动总和往往具有最低的熵。这揭示了一个令人惊讶的规律性:每由邻里a1a2a3a4a5a4ka1k=422a1恰好有或黑色方块,从没有更多或更少。它比人们可能想象的要少得多的“随机性”。(部分原因是由于对每个邻域的值求和伴随信息丢失,该过程将可能的邻域配置压缩为不同的可能总和。如果我们要专门考虑对于每个邻域内的聚类和方向,那么我们将使用移动级联而不是使用移动和,也就是说,每个 x邻域都有122k2k2+1kk2k2可能的不同配置;通过将它们全部区分开,我们可以获得更好的熵度量。我怀疑这样的措施与其他图片相比会提高的轮廓。)a1

通过对移动邻域内的值求和(或级联或以其他方式组合)来创建可控制范围的熵分布的技术已用于图像分析。它是对众所周知的思想的二维概括,首先将文本分析为一系列字母,然后分析为一系列有向图(两个字母序列),然后分析为有向图,等等。它还与分形有一些明显的关系。分析(以越来越小的比例探索图像的属性)。如果我们谨慎地使用块移动总和或块级联(因此窗口之间没有重叠),则可以推导出连续熵之间的简单数学关系;然而,

各种扩展都是可能的。例如,对于旋转不变的轮廓,请使用圆形邻域而不是正方形邻域。当然,一切都超出了二进制数组。使用足够大的阵列,甚至可以计算局部变化的熵轮廓以检测非平稳性。

如果需要一个数字,而不是整个轮廓,请选择感兴趣的空间随机性(或缺乏空间随机性)的比例。在这些示例中,该比例最适合于 x或 x移动的邻域,因为对于它们的模式,它们都依赖于跨越三到五个像元的分组(而 x邻域只是将所有变化平均化)。数组,因此没有用)。在后者的规模,对于熵通过是,,,,和334455a1a51.500.81000 ; 在此范围内(对于均匀随机数组),预期熵为。这证明了 “应该具有相当高的熵” 的感觉。为了区分,和,它们并列在这个尺度熵,寻找下一个更精细的分辨率(由邻域):他们的熵是,,,分别为(而随机栅格有望的值为)。通过这些措施,最初的问题将数组按正确的顺序放置。1.34a1a3a4a50331.390.990.921.77


抱歉,我不明白您是如何制作移动总和图的。请更详细地说明如何计算移动总和。
ttnphns 2011年

1
@ttnphns 是该主题上流行的插图式帮助页面。
ub

4
我使用Python中的NumPy和matplotlib在@whuber的出色回答中重现了结果,可在以下位置
Cosmo Harrigan

(+1)这是一个非常普遍的原理:对于任何多重集 ,都有概率分布的自然关联熵,该概率分布由其不同元素的多重度决定,即,其中是中不同元素的。示例是由各种尺寸的物体中各种形状的大小邻域形成的多集。(我刚刚将一维应用程序发布到了长度为子字符串上。)Mμ(e)ep(e):=μ(e)eSμ(e)  (eS)SMkk
2016年

@whuber很好的答案。尽管这很直观,但是有没有一篇文章或教科书可以引用该文章的原始出处(我假设如果这是您的原始著作,您已经在期刊上正式发表过该文章)?
subhacom

10

首先,我的建议纯属直觉:我在模式识别领域一无所知。其次,可以提出像我这样的数十种建议。

我首先想到的是,常规配置(即具有低熵)应该对此或它的转化体对称,同构。例如,旋转。

您可以旋转矩阵(翻转至90度,而不是180度,等等),直到配置与原始矩阵一致。它总是会在4个旋转(360度)时一致,但有时可能会更早(例如图片中的矩阵E)一致。

每次旋转时,请计算原始配置和旋转后的单元之间的值不相同的单元数。例如,如果将原始矩阵A与90度旋转进行比较,您会发现10个像元,其中一个矩阵中有斑点,而另一个矩阵中有空白。然后将原始矩阵与其180度旋转进行比较:将找到11个这样的单元。10个像元是原始矩阵A与270度旋转之间的差异。10 + 11 + 10 = 31是矩阵A的整体“熵” 。

对于矩阵B,“熵”为20,而对于矩阵E,其“熵” 仅为12。对于矩阵CD, “熵”为0,因为旋转在90度后停止:已经达到同构。

在此处输入图片说明


感谢您的建议!尽管我可以想到几个“易”显示,这些显示对于旋转变换并没有什么变化,但这是一种很好且容易的方法(并且可以扩展!)。我必须考虑我想要什么样的转变。我喜欢您在每次转换中计算点数的方法。
Felix S

感谢您的赞赏。但是这种方法只是一个初始存根,是一个总的想法,您说对了,它是可扩展的,这是正确的。
ttnphns 2011年

我喜欢你的方法。但是,要获得更一般的答案,可能需要采用更大的对称组-身份,3个旋转和4个反射(即,en.wikipedia.org/)。然后计算所有对之间(即)之间的差异(),并作为随机性的度量,其中是黑石头的数量。对于纯随机形状,应该获得,而对于非常对称的形状,。好消息是,的公式适用于板上不同数量的宝石,并且具有BW对称性。D4d87r=k187252n(25n))nr1r0r
Piotr Migdal

太复杂了,很抱歉。只需将原始图案与与身份不同的对称性进行比较即可。然后,在归一化因子中,有而不是。7778
Piotr Migdal

5

该信息通常定义为。有一些不错的理论可以解释是使用编码所需的位数。如果您想进一步了解这一点,请阅读算术编码h(x)=logp(x)log2p(x)xp

那如何解决您的问题呢?简单。找到一些代表您的数据的并使用,其中是一个新样本,用于度量意外或与之相关的信息。plogp(x)x

困难的是为找到一些模型并生成数据。也许您可以提出一种算法来生成您认为“可能”的矩阵。p

拟合一些想法。p

  1. 如果仅查看5x5矩阵,则只需位即可存储所有可能的矩阵,因此您可以枚举所有矩阵并为每个矩阵分配一定的概率。225
  2. 使用受限的Boltzmann机器来拟合您的数据(然后您必须使用自由能代替信息,但这没关系),
  3. 使用zip代替,而不管上面的整个概率故事。正式上还可以,因为您将zip用作Kolmogorov复杂度的近似值,而这是由信息理论家完成的,并导致了标准化的压缩距离logp(x)
  4. 也许使用图形模型来包含空间先验信念,并在本地使用伯努利变量。
  5. 要编码平移不变性,您可以使用基于能量的模型,并使用卷积网络

上面的一些想法很沉重,来自机器学习。如果您想要进一步的建议,请使用注释。


显然,从哲学的角度来看,如果您想到“抽象模式的简单性”,而您并没有试图预测它对人类思想的简单性,那么从理论上来说,Kolmogorov熵是最好的方法。它只是将熵表示为“可以产生该模式的最短程序的长度”。当然,您仍然需要指定计算机语言,但是您仍然可以依靠抽象的Turing机器来发挥作用。
哈维尔·罗德里格斯·拉古纳

编程语言并不是很重要。从语言A到语言B进行编译的程序的另一部分将占用不变的位(编译器),因此可以忽略。
bayerj 2011年

4

我的以下提议颇有见识而不是推论,因此我无法证明它,但至少可以提供一些理由。评估光点配置的“熵”的过程包括:

  1. 数字化斑点。
  2. 通过正交Procrustes分析,多次对配置及其本身进行排列的比较。
  3. 绘制比较结果(同一性系数)并评估曲线的锯齿度。

数字化斑点,即取得其坐标。例如,下面是带有编号点(编号顺序可以是任意的)及其坐标的配置D。 在此处输入图片说明

spot x   y
1   1   1
2   3   1
3   5   1
4   2   2
5   4   2
6   1   3
7   3   3
8   5   3
9   2   4
10  4   4
11  1   5
12  3   5
13  5   5

进行排列并执行Procrustes分析。随机置换斑点(数据行),并对原始(未置换)数据与置换后的数据进行Procrustes比较;记录同一性系数(两种配置的相似性度量,由分析输出)。重复排列-覆盖-多次保存系数(例如1000倍或更多)。

常规结构上进行上述操作后,从身份系数(IDc)得到什么呢?例如,考虑上面的配置D。如果我们将原始坐标集与其自身进行比较,我们当然将获得IDc = 1。但是,如果我们置换一些斑点,则原始集合和置换之间的IDc将低于1。让我们置换例如一对标记为1和4的斑点。IDc = .964。现在,改为置换点3和5。有趣的是,IDc将再次为.964。相同的值,为什么?点3和5与1和4对称,因此旋转90度将它们重叠。前倾比较对旋转或反射不敏感,因此,对1-4中的排列与对5-3中的排列“相同”。再举一个例子,如果只置换第4和第7点,IDc将再次为.964!看来对于Procrustes,对4-7中的排列是“相同” 在赋予相同程度的相似度(由IDc衡量)的意义上,与上述两者相同。显然,这都是因为配置D是常规的。对于常规配置,我们期望在我们的排列/比较实验中获得相当离散的IDc值;而对于不规则配置,我们期望值将趋于连续。

绘制记录的IDc值。例如,对值进行排序并绘制线图。我进行了实验-5000个排列-使用您的每个配置A,B(都非常不规则),D,E(都非常规则),这是线图:

在此处输入图片说明

请注意,行D和E(特别是D)有更多锯齿。这是因为值的离散性。A和B的值更连续。您可以选择某种可以估计离散度/连续性程度的统计信息,而无需进行绘图。A似乎不比B连续(对您而言,配置A的规则性较差,但我的线图似乎无法证明它),或者,如果没有显示,则可能显示了另一种IDc值模式。还有什么模式?这超出了我的回答范围。一个大问题是,A是否确实不如B规则:它可能是您的眼睛,但不一定是Procrustes分析或其他人的眼睛。

顺便说一下,整个排列/ Procrustes实验我很快完成了。我将自己的Procrustes分析宏用于SPSS(可在我的网页上找到),并添加一些代码行来进行排列。


3

互信息将每个维度视为一个随机变量,因此将每个矩阵视为一组数字对,在所有情况下都应有所帮助,但C除外,因为我不确定结果如何。

参见图8(从p24开始)中有关TMVA手册相应arxiv条目中回归性能分析的讨论

不同分布的不同指标


我在打开链接文档时遇到问题。
ttnphns 2011年

添加了替代链接。但是第一个对我有用(经过测试)。
2011年

3

无需查看模式的整体属性(如对称性),而是可以查看局部属性,例如,每块石头(=黑色圆圈)具有的邻居数。让我们先来表示宝石的总数量。s

如果随机扔石头,则邻居的分布为 其中是石头的密度。的位数取决于在内部(),在边缘()还是在角落上有一块石头。

Prand,p(k neighbors|n places)=(nk)pk(1p)nk,
p=s/25nn=8n=5(n=3)

清楚可见,C)D)E)中的邻居分布不是随机的。例如,对于D), 所有内部石头都具有恰好邻居(与随机分布相反),其产量为而不是测量值)。4(0%,2%,9%,20%,27%,24%,13%,4%,0%)(0%,0%,0%,0%,100%,0%,0%,0%,0%)

因此,要量化某个模式是否随机,您需要比较其邻居,并将其与一个随机的。例如,您可以比较它们的均值和方差。Pmeasured(k|n)Prand,p(k|n)

或者,可以测量它们在函数空间中的距离,例如: 其中是点的测量比率相邻空间和被预测为随机模式,即, ,和。

n={3,5,8}k=0n[Pmeasured(k|n)Pmeasured(n)Prand,p(k|n)Prand,p(n)]2,
Pmeasured(n)nPrand,p(n)Prand,p(3)=4/25Prand,p(5)=12/25Prand,p(8)=9/25

2

有一种非常简单的方法可以概念化信息内容,该信息内容使用概率和过渡概率来找到文本字符串的最小冗余表示形式,从而回溯到Shannon(公认的一维)思想。对于图像(在这种特殊情况下,是在方矩阵上定义的二进制图像),我们可以根据x和y导数(-1,0,+ 1)的知识唯一地重建。我们可以定义一个3x3的转移概率和一个全局概率密度函数,也就是3x3。然后从应用于3x3的经典对数求和公式获得Shannon信息。这是二阶Shannon信息量度,很好地捕获了3x3 pdf中的空间结构。

当该方法应用于具有2个(二进制)级别以上的灰度图像时,此方法更加直观, 有关更多详细信息,请参见https://arxiv.org/abs/1609.01117


1

阅读本文时,会想到两件事。首先是很多格式塔属性很难预测,而且许多博士学位级别的工作都在试图找出如何进行分组的模型。我的直觉是,您可能想到的最简单的规则将以反例结尾。

如果您现在可以暂时忽略格式塔分组的描述,那么我认为一个有用的抽象就是将您的输入视为图像的特殊情况。计算机视觉中有许多算法旨在基于比例不变和特征不变的一组特征为图像分配签名。我认为最著名的是SIFT功能:

http://en.wikipedia.org/wiki/Scale-invariant_feature_transform

基本上,您的输出将是一个新矢量,为这些功能赋予权重。您可以使用此向量,并对其应用启发式方法(也许找到标准),并希望它能描述您要查找的内容。另外,您可以训练一个分类器以将特征向量作为输入,并告诉它您对“熵”的印象是什么。这样做的好处是,它将使用适当的SIFT功能(对于您的问题,这肯定是过大了),并构造某种非常合适的映射。缺点是您必须自己做很多标记,根据所使用的分类器,您可能难以理解。

我希望这是有帮助的!许多传统的计算机视觉算法也可能适合您-在该门户中快速浏览维基百科可能会给您带来更多的见解。


0

您的示例让我想起了布尔代数和数字电路的真值表。在此领域中,卡诺地图(http://en.wikipedia.org/wiki/Karnaugh_map)可用作提供最小布尔函数来表示整个网格的工具。另外,使用布尔代数恒等式可以帮助将函数简化为最小形式。计算最小布尔函数中的项数可以用作您的熵测度。这使您具有垂直和水平对称性,同时压缩相邻的邻居,但缺少对角线对称性。

使用布尔代数,两个轴都从AE的左上角开始标记。以这种方式,示例C将映射到布尔函数(!A&!E)。对于其他示例,将需要分别标记轴(即AE,FJ)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.