多示例神经网络:Neural Networks for Multi-Instance Learning (BP-MIP,周志华,2002)
时间:2023/4/17
目标
针对神经网络的多示例修改设计的问题,提出基于BP神经网络的多示例版本。
解决途径
通过设计一种新的损失函数以适应多示例学习数据的特点,实现了网络的权值更新。
具体方法
将单示例的BP神经网络的损失函数由原来的基于单个示例计算的方式转变成基于包的损失计算。
全局的损失函数定义为:
E = ∑ i = 1 N E i (1) E=\sum_{i=1}^NE_i\tag{1} E=i=1∑NEi(1)
其中N为包个数。而单个包的损失函数则定义为:
E i = 1 2 ( max 1 ≤ j ≤ M j o i j − y i ) 2 (2) E_i={1\over2}{(\max_{1\le j\le M_j}o_{ij}-y_i)}^2\tag{2} Ei=21(1≤j≤Mjmaxoij−yi)2(2)
其中 M j M_j Mj表示第i个包的示例数量,即将包的损失转换成包中实例最大输出值与包标签的平方损失。
这样即对应了多示例学习的本质:已知训练包的标签,而不是训练实例的标签。包中至少含有一个正示例则输出值为1,包为正;若包中所有的实例都被预测为负,则包为负。此时损失为0,不对网络权值进行更新。否则,则按照包中实例的最大输出值与包标签的平方损失对网络进行调整。文中指出,这种情况下更容易预测为正,最难预测为负。此时似乎对产生正输出的负担很低,但对产生负输出的负担很重。然而,正如Amar等人所指出的那样,一个包的值完全取决于它具有最大输出的实例,而不是包中有多少真正的正实例或负实例。因此,实际上产生正或负产出的负担并不是不平衡的。
因此,最终的全局损失被定义为:
E = ∑ i = 1 N E i = ∑ i = 1 N 1 2 ( max 1 ≤ j ≤ M j o i j − y i ) 2 (3) E=\sum_{i=1}^NE_i=\sum_{i=1}^N{1\over2}{(\max_{1\le j\le M_j}o_{ij}-y_i)}^2\tag{3} E=i=1∑NEi=i=1∑N21(1≤j≤Mjmaxoij−yi)2(3)
此时网络权值的更新从示例级转换成包级。同时公式 (3) 所导出的梯度方向和传统单示例的BP算法导出的梯度方向有很大不同,作者认为这也解释了Dietterich等人观察到BP不能很好地处理多实例问题。
而BP-MIP的训练过程则是以包为单位,将包中的示例作为网络的输入,在所有示例均训练完成后,再计算损失函数,对网络进行调整,直至全局误差最小结束训练。值得注意的一点是,文中作者提到,将1:正;0:负改为0.9:正;0.1:负可以加快网络的训练过程。而最终使用训练好的网络进行预测时,当且仅当包中至少有一个示例的输出值不小于0.5时,包被预测为正。
实验效果
如图所示,BP-MIP的效果在全部对比算法中排名稍后,可能的原因是该算法的修改还无法充分适应MIL的特性。
小结
这篇文章是早期多示例学习的研究成果,周老师将神经网络引入多示例学习,通过调整网络的损失函数以适应多示例学习。注意,在文章中,周老师提到,当将BP-MIP应用于现实问题时,通过实验选择适当的配置(即隐藏单元和训练周期的数量)来实现最佳性能是不太可行的。因此,一项重要的工作是为具体问题开发一些估计BP-MIP适当配置的机制。这其实与单示例的神经网络并不一致,因为神经网络的特点就是可以通过调整参数以适应对应的数据集。估计后续新的多示例神经网络的研究应当会解决这个问题。此外,这篇文章详细的介绍了MUSK数据集的起源,有兴趣的可以了解一下MUSK数据集的产生过程。