ZCA白化变换推导——Learning Multiple Layers of Features from Tiny Images

参考文献:Learning Multiple Layers of Features from Tiny Images:附录

设数据集 X 的维数为 d×n ,且已经中心化

则协方差矩阵为

1/(n-1)*X*X‘

我们想让这n个d维向量中任意两维都不相关,则假定去相关矩阵为W

Y = W*X

为了使W达到去相关的目的,Y*Y‘必须是对角阵,可以进一步约束Y满足

Y * Y’ = (n - 1) I

再对W矩阵加限制(主要是方便下面的推导)

W = W‘

Y * Y’ = (n-1) I

W*X*X‘*W‘ = (n-1) I

W ‘ * W * X * X‘ * W = (n-1) * W‘ = (n-1) * W

所以W^2 * X * X‘ = (n-1) I

W = sqrt(n-1) * (X * X‘)^(-1/2)

而X * X‘ 是对称半正定,所以可以分解为 P*D*P’,其中D是对角阵,P是正交阵,(X * X‘)^(a) = P * D^(a) * P

所以W = P * D^(-1/2) * P‘;

Matlab代码

testZCA.m

clear;clc
patches = [];
tx = imread('test.jpg');%load('pcaData.txt','-ascii');
tx = double(tx);
x = zeros(size(tx, 1) * size(tx, 2), size(tx, 3));
tx = tx(:);
for i = 1 : size(x,2)
    x(:, i) = tx(1 + size(x, 1) * (i - 1) : size(x,1) * i);
end
patches = x';
%for i = 1 : size(x,2);
%     im = imread(strcat('train\', num2str(i), '.png'));
%     im = reshape(im, [1, 32*32*3]);
%     im = double(im);
%     % centralize
%     im(1:32*32) = im(1:32*32) - mean(im(1:32*32));
%     im(32*32+1:2*32*32) = im(32*32+1:2*32*32) - mean(im(32*32+1:2*32*32));
%     im(2*32*32+1:3*32*32) = im(2*32*32+1:3*32*32) - mean(im(2*32*32+1:3*32*32));
%
%     patches = [patches, im'];
%end
y = ZCA_whitening(patches);
y = y * y';
y = ZCA_normalize(y);
covx = 1/1000 * patches * patches';
covx = ZCA_normalize(covx);
hold on
subplot(1,2,1)
imshow(uint8(covx))
subplot(1,2,2)
imshow(uint8(y));
function y = ZCA_normalize(x)
[row, col] = size(x);
tx = [];
for i = 1 : row
    tx = [tx, x(i,:)];
end
tx = tx - min(tx);
tx = tx / max(tx) * 255;
y = zeros(row, col);
for i = 1 : row
    y(i, :) = tx((i - 1) * col + 1 : i * col);
end
end
%% 假定每一个d维数据是0均值的,那么这n个d维数据的矩阵X(d*n)的协方差矩阵为
%% covX = 1/(n-1)*X*X'
%% 为了消除维数之间的相关性,做变换W,得到Y,即Y = W*X
%% 下面求‘去相关矩阵W'.由于W消除了相关性,所以Y*Y'是对角阵,故令W满足
%% Y*Y' = (n-1)*I
%% 由于满足条件的W很多,那么不妨设W=W'
%% 之后的推导比较自然,比较难想到的就是将X*X'做正交分解为P*D*P'

function y = ZCAwhitening(x)
[dim, n] = size(x);
[P, D] = schur(x * x');
w = sqrt(n-1) * P * D^(-1/2) * P';
y = w * x;
end

效果图——数据集是取自Kaggle上的Tiny Image Classification的比赛

ZCA白化变换推导——Learning Multiple Layers of Features from Tiny Images

时间: 2024-10-01 07:48:29

ZCA白化变换推导——Learning Multiple Layers of Features from Tiny Images的相关文章

白化(Whitening) PCA白化 ZCA白化

白化是一种重要的预处理过程,其目的就是降低输入数据的冗余性,使得经过白化处理的输入数据具有如下性质:(i)特征之间相关性较低:(ii)所有特征具有相同的方差. 白化处理分PCA白化和ZCA白化,PCA白化保证数据各维度的方差为1,而ZCA白化保证数据各维度的方差相同.PCA白化可以用于降维也可以去相关性,而ZCA白化主要用于去相关性,且尽量使白化后的数据接近原始输入数据. 1. PCA白化 根据白化的两个要求,我们首先是降低特征之间的相关性.在PCA中,我们选取前K大的特征值的特征向量作为投影方

Deep Learning方向的paper

转载 http://hi.baidu.com/chb_seaok/item/6307c0d0363170e73cc2cb65 个人阅读的Deep Learning方向的paper整理,分了几部分吧,但有些部分是有交叉或者内容重叠,也不必纠结于这属于DNN还是CNN之类,个人只是大致分了个类.目前只整理了部分,剩余部分还会持续更新. 一 RNN 1 Recurrent neural network based language model RNN用在语言模型上的开山之作 2 Statistical

个人阅读的Deep Learning方向的paper整理

http://hi.baidu.com/chb_seaok/item/6307c0d0363170e73cc2cb65 个人阅读的Deep Learning方向的paper整理,分了几部分吧,但有些部分是有交叉或者内容重叠,也不必纠结于这属于DNN还是CNN之类,个人只是大致分了个类.目前只整理了部分,剩余部分还会持续更新. 一 RNN 1 Recurrent neural network based language model RNN用在语言模型上的开山之作 2 Statistical La

Paper List ABOUT Deep Learning

Deep Learning 方向的部分 Paper ,自用.一 RNN 1 Recurrent neural network based language model RNN用在语言模型上的开山之作 2 Statistical Language Models Based on Neural Networks Mikolov的博士论文,主要将他在RNN用在语言模型上的工作进行串联 3 Extensions of Recurrent Neural Network Language Model 开山之

Convolutional Deep Belief Networks 卷积深信度网络 论文笔记

参考论文:1.Convolutional Deep Belief Networks for Scalable Unsupervised Learning of Hierarchical Representations                   2.Stacks of Convolutional Restricted Boltzmann Machinesfor Shift-Invariant Feature Learning 预备知识:http://blog.csdn.net/zouxy

中文版 ImageNet Classification with Deep Convolutional Neural Networks

ImageNet Classification with Deep Convolutional Neural Networks 摘要 我们训练了一个大型深度卷积神经网络来将ImageNet LSVRC-2010竞赛的120万高分辨率的图像分到1000不同的类别中.在测试数据上,我们得到了top-1 37.5%, top-5 17.0%的错误率,这个结果比目前的最好结果好很多.这个神经网络有6000万参数和650000个神经元,包含5个卷积层(某些卷积层后面带有池化层)和3个全连接层,最后是一个1

CNN卷积神经网络_深度残差网络 ResNet——解决神经网络过深反而引起误差增加的根本问题

from:https://blog.csdn.net/diamonjoy_zone/article/details/70904212 环境:Win8.1 TensorFlow1.0.1 软件:Anaconda3 (集成Python3及开发环境) TensorFlow安装:pip install tensorflow (CPU版) pip install tensorflow-gpu (GPU版) TFLearn安装:pip install tflearn 参考: Deep Residual Le

深度 | 计算机视觉和深度学习领域,被引用次数最多的三十篇论文(附下载)

选自 Computer Vision Blog 机器之心编译 参与:吴攀.微胖.李亚洲 本文经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载 2012年,我开始列举计算机视觉领域引用率最高的文章清单.不过,2012年以来,这个领域变了很多,当时深度学习技术开始成为潮流,而且在许多计算机视觉基准方面其表现超过了传统方法.无论这一趋势是否能够持久,我认为,应该将这些技术放入名单.正如我提到的那样,被引越频繁未必意味着文章贡献越大.不过,高引证率经常暗示着人们已经发现了某

ImageNet Classification with Deep Convolutional Neural Networks

ImageNet Classification with Deep Convolutional Neural Networks Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton 摘要 我们训练了一个大型的深度卷积神经网络,来将在ImageNet LSVRC-2010大赛中的120万张高清图像分为1000个不同的类别.对测试数据,我们得到了top-1误差率37.5%,以及top-5误差率17.0%,这个效果比之前最顶尖的都要好得多.该神经网络有