论文复现:数据归一化和标准化

论文复现:数据归一化和标准化

1.背景介绍:

近期在复现论文JFSSL的结果,Github上有它的Matlab版实现代码,并提供了Wiki数据集和测试代码。该论文实验还包含了NUS-WIDE数据集,但代码中并未提供测试demo。NUS-WIDE数据集包含了大量图片和文本对及其标记信息构成。我并没有使用NUS-WIDE数据集提供的SIFT等手工特征,而是使用Resnet对其进行处理并输出深度特征,文本模态,我使用pca对其进行降维(pca函数来自sklearn)。

2. 遇到的问题

这样的输入进行训练,效果非常差,一看就是没有训练好。我一步步分析发现,由于JFSSL方法中会使用欧式距离计算两个样本特征(图片和图片)之间的相似度,而我的输入计算出欧式距离非常大,这导致了后面的计算出现了问题。

分析过程:我发现NUS-WIDE的特征输入和代码中提供的Wiki数据集demo差异非常大,导致了模型不能正常运行,分析输入特征。

WikiNUS-WIDE
文本0~1-1.2~2.4
图片0~0.70~16

这显然是存在问题的,NUS-WIDE的特征数值范围那么大,才造成了欧氏距离过大,方法不能运行。而文本特征和图片特征之间在量纲上是不同的,这也给训练造成了影响。

3. 解决方案:归一化/标准化

3.1 归一化(Normalization)

我先使用归一化,即将数据映射到0~1之间,这样就和Wiki特征的分布差不多了。
使用min-max归一化,即 x → x − m i n m a x − m i n x \to{\frac{x- min}{max - min}} xmaxminxmin
代码:image.shape: (sample_num, feature_num)

image = (image - np.min(image , axis=0, keepdims=True)) / (
	np.max(image , axis=0, keepdims=True) - np.min(image , axis=0, keepdims=True))

具有一定的效果,但是文本的评估还是不正常,只有图片特征的评估提升了。

3.2 标准化(Standardization)

和归一化类似,同样是映射到小区间,但只要求数据满足标准正态分布即可。
转换方式: x → x − m e a n s t d x \to{\frac{x- mean}{std}} xstdxmean
代码:image.shape: (sample_num, feature_num)

image = (image- np.mean(image, axis=0, keepdims=True)) / 
	np.std(image, axis=0, keepdims=True)

通过标准化,模型能够正常训练了!

总结

在尝试传统方法复现的时候,要看看数据分布是否和原文的相同。大多现在流行的深度网络方法特征都是相对固定的,比如ResNet的特征。而传统方法容易忘记考虑这一点。本文仅提供一种论文复现过程中影响复现的可能性。为什么归一化、标准化在NUS-WIDE数据集和我的setting下效果不同,我并未进行深入分析,等有空再补这个坑吧~

参考

  1. 归一化 (Normalization)、标准化 (Standardization)和中心化/零均值化 (Zero-centered)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值