【问题标题】:Data augmentation techniques for general datasets?一般数据集的数据增强技术?
【发布时间】:2017-01-08 23:55:12
【问题描述】:

我正在研究一个机器学习问题,并想在 matlab 中构建基于神经网络的分类器。一个问题是数据以特征的形式给出,样本数量要少得多。我了解图像的数据增强技术,通过旋转、平移、仿射平移等。

我想知道是否有可用于一般数据集的数据增强技术?是否可以使用随机性来生成更多数据?我看了答案here,但没看懂。

如果可能,请提供工作细节的答案。

任何帮助将不胜感激。

【问题讨论】:

    标签: matlab deep-learning


    【解决方案1】:

    您需要查看autoencoders。实际上,您将数据传递到低级神经网络,它会应用类似 PCA 的分析,然后您可以使用它来生成更多数据。

    Matlab 有一个autoencoder 类以及一个function,它们将为您完成所有这些工作。来自 matlab 帮助文件

    生成训练数据。

    rng(0,'twister'); % For reproducibility
    n = 1000;
    r = linspace(-10,10,n)';
    x = 1 + r*5e-2 + sin(r)./r + 0.2*randn(n,1);
    

    使用训练数据训练自动编码器。

    hiddenSize = 25;
    autoenc = trainAutoencoder(x',hiddenSize,...
            'EncoderTransferFunction','satlin',...
            'DecoderTransferFunction','purelin',...
            'L2WeightRegularization',0.01,...
            'SparsityRegularization',4,...
            'SparsityProportion',0.10);
    

    生成测试数据。

    n = 1000;
    r = sort(-10 + 20*rand(n,1));
    xtest = 1 + r*5e-2 + sin(r)./r + 0.4*randn(n,1);
    

    使用经过训练的自动编码器 autoenc 预测测试数据。

    xReconstructed = predict(autoenc,xtest');
    

    绘制实际测试数据和预测。

    figure;
    plot(xtest,'r.');
    hold on
    plot(xReconstructed,'go');
    

    您可以看到代表使用自动编码器生成的附加数据的绿色圆圈。

    【讨论】:

    • 我读过这篇文章。一个查询,自动编码器是无监督的。但是,我可以在训练阶段访问标签。假设我有 5 节课。我是否需要训练 5 个独立的自动编码器来为五个不同的类生成示例,还是一个就足够了?请回复。
    • 如果我们只使用一个单层进行自动编码器,重建效果会有多好?请检查in.mathworks.com/help/nnet/ref/autoencoder.predict.html 重建的图像很差 - 这引出了一个问题,如果我们使用更多的层数,重建应该会更好。
    • 有 Python 中的示例吗?
    • @KathiravanNatarajan Python 中的大量示例......在 sklearn 中查找 ae(自动编码器)包
    猜你喜欢
    • 2016-07-08
    • 2017-08-29
    • 1970-01-01
    • 2012-09-21
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    • 2018-09-04
    相关资源
    最近更新 更多