精华内容
下载资源
问答
  • 2021人工智能领域新星创作者,带你从入门到精通,该博客每天更新,逐渐完善机器学习各个知识体系的文章,帮助大家更高效学习。 概述 对于之前的文章我们使用了最小二乘估计然后获得了损失函数: L(w)=∑i=1m(wTxi...

    如果需要完整代码可以关注下方公众号,后台回复“代码”即可获取,阿光期待着您的光临~

    文章目录


    2021人工智能领域新星创作者,带你从入门到精通,该博客每天更新,逐渐完善机器学习各个知识体系的文章,帮助大家更高效学习。


    概述

    对于之前的文章我们使用了最小二乘估计然后获得了损失函数:
    L ( w ) = ∑ i = 1 m ( w T x i − y i ) 2 L(w)=\sum_{i=1}^m(w^Tx_i-y_i)^2 L(w)=i=1m(wTxiyi)2
    然后求解极值点,然后获得
    w ∗ = ( X T X ) − 1 X T Y w^*=(X^TX)^{-1}X^TY w=(XTX)1XTY
    对于之前获得的结论都是基于最小二乘估计(LSE)得来的,本节从一种概率角度获得我们的最优解w

    高斯噪声

    如果我们的模型完全拟合了我们的数据,那么此时误差就为0,但是在现实中,我们的线性模型是很难完全拟合所有数据的,肯定是会存在一定的误差,这个误差我们采用噪声的方式进行表达,也就是我们此时满足:
    y = f ( w ) + ϵ = w T x + ϵ y=f(w)+\epsilon\\=w^Tx+\epsilon y=f(w)+ϵ=wTx+ϵ
    其中我们假设噪声服从高斯分布,即:
    ϵ ∼ N ( 0 , σ 2 ) \epsilon\sim N(0,\sigma^2) ϵN(0,σ2)
    由方差和期望公式可知,我们的y同样服从高斯分布,即:
    y ∼ N ( w T x , σ 2 ) y \sim N(w^Tx,\sigma^2) yN(wTx,σ2)
    也就是:
    P ( y ∣ w ; x i ) = 1 2 π σ e x p ( − ( y − w T x ) 2 2 σ 2 ) P(y|w;x_i)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y-w^Tx)^2}{2\sigma^2}) P(yw;xi)=2π σ1exp(2σ2(ywTx)2)
    此时我们采用概率进行构造损失函数,采用对数似然估计,使我们的Y服从该分布的概率最大:

    即:
    L ( w ) = l o g P ( Y ∣ w ; X ) = l o g ∏ i = 1 m P ( y i ∣ w ; x i ) = ∑ i = 1 m l o g P ( y i ∣ w ; x i ) = ∑ i = 1 m l o g 1 2 π σ e x p ( − ( y − w T x ) 2 2 σ 2 ) = ∑ i = 1 m [ l o g 1 2 π σ − 1 2 σ 2 ( y i − w T x i ) 2 ] L(w)=logP(Y|w;X)\\=log\prod_{i=1}^mP(y_i|w;x_i)\\=\sum_{i=1}^mlogP(y_i|w;x_i)\\=\sum_{i=1}^mlog\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y-w^Tx)^2}{2\sigma^2})\\=\sum_{i=1}^m[log\frac{1}{\sqrt{2\pi}\sigma}-\frac{1}{2\sigma^2}(y_i-w^Tx_i)^2] L(w)=logP(Yw;X)=logi=1mP(yiw;xi)=i=1mlogP(yiw;xi)=i=1mlog2π σ1exp(2σ2(ywTx)2)=i=1m[log2π σ12σ21(yiwTxi)2]
    上面的 P ( Y ∣ w ; X ) P(Y|w;X) P(Yw;X) 可以拆分成 ∏ i = 1 m P ( y i ∣ w ; x i ) \prod_{i=1}^mP(y_i|w;x_i) i=1mP(yiw;xi) 是因为假设我们的样本之间是独立同分布的,每个样本之间相互独立,互不影响。

    然后我们的目的是极大似然函数,所以有:
    w ∗ = a r g m a x w L ( w ) = a r g m a x w ∑ i = 1 m [ l o g 1 2 π σ − 1 2 σ 2 ( y i − w T x i ) 2 ] = a r g m i n w ∑ i = 1 m ( y i − w T x ) 2 w^*=argmax_wL(w)\\=argmax_w\sum_{i=1}^m[log\frac{1}{\sqrt{2\pi}\sigma}-\frac{1}{2\sigma^2}(y_i-w^Tx_i)^2]\\=argmin_w\sum_{i=1}^m(y_i-w^Tx)^2 w=argmaxwL(w)=argmaxwi=1m[log2π σ12σ21(yiwTxi)2]=argminwi=1m(yiwTx)2
    可以看到最终的化简结果和我们使用最小二乘估计得到的结果一致,所以我们可以得出结论:
    L S E < = > M L E ( ϵ ∼ N ( 0 , σ 2 ) ) LSE<=>MLE(\epsilon \sim N(0,\sigma^2)) LSE<=>MLE(ϵN(0,σ2))
    就是我们的最小二乘估计和概率极大似然估计是等价的,前提满足的条件就是噪声满足高斯分布。

    写在最后
     大家好,我是阿光,觉得文章还不错的话,记得“一键三连”哦!!!**

    img

    展开全文
  • 去除高斯噪声的图像处理技术,内容实在,大家多交流交流
  • 机器学习高斯过程

    2021-09-28 00:11:26
    机器学习领域里,高斯过程是一种假设训练数据来自无限空间、并且各特征都符合高斯分布的有监督建模方式。高斯过程是一种概率模型,无论是回归或者分类预测都以高斯分布标准差的方式给出预测置信区间估计。什么是...

    高斯过程(Gaussian Process)

    在机器学习领域里,高斯过程是一种假设训练数据来自无限空间、并且各特征都符合高斯分布的有监督建模方式。高斯过程是一种概率模型,无论是回归或者分类预测都以高斯分布标准差的方式给出预测置信区间估计。
    在了解高斯过程前,我们先来简单回顾下高斯分布和置信区间

    高斯分布

    高斯分布(Gaussian distribution又名正态分布(这个我们应该更熟悉)、正规分布,是一个非常常见的连续概率分布。正态分布在统计学上十分重要,经常用在自然和社会科学来代表一个不明的随机变量。
    若随机变量 X X X服从一个位置参数为 μ \mu μ 、尺度参数为 σ \sigma σ的正态分布,记为:

    X ∼ N ( μ , σ 2 ) {\displaystyle X\sim N(\mu ,\sigma ^{2})} XN(μ,σ2)
    则其概率密度函数为
    f ( x ) = 1 σ 2 π    e − ( x − μ ) 2 2 σ 2  ⁣ {\displaystyle f(x)={\frac {1}{\sigma {\sqrt {2\pi }}}}\;e^{-{\frac {\left(x-\mu \right)^{2}}{2\sigma ^{2}}}}\!} f(x)=σ2π 1e2σ2(xμ)2

    正态分布的数学期望值或期望值 μ \mu μ等于位置参数,决定了分布的位置;其方差 σ 2 \sigma^2 σ2的开平方或标准差 σ \sigma σ 等于尺度参数,决定了分布的幅度。
    正态分布的概率密度函数曲线呈钟形,因此人们又经常称之为钟形曲线(类似于寺庙里的大钟,因此得名)。我们通常所说的标准正态分布是位置参数 μ = 0 \mu =0 μ=0,尺度参数 σ 2 = 1 \sigma^2 = 1 σ2=1的正态分布(下图中红色曲线就是标准正态分布)。
    在这里插入图片描述

    置信区间

    置信区间是指由样本统计量所构造的总体参数的估计区间。在统计学中,一个概率样本的置信区间(Confidence interval)是对这个样本的某个总体参数的区间估计。置信区间展现的是这个参数的真实值有一定概率落在测量结果的周围的程度。置信区间给出的是被测量参数测量值的可信程度范围,即前面所要求的“一定概率”。置信区间的计算公式:置信区间的计算公式取决于所用到的统计量。置信区间是在预先确定好的显著性水平下计算出来的,显著性水平通常称为α(希腊字母alpha),如前所述,绝大多数情况会将α设为0.05。置信度为(1-α),或者100×(1-α)%。于是,如果α=0.05,那么置信度则是0.95或95%,后一种表示方式更为常用。置信水平表示区间估计的把握程度,置信区间的跨度是置信水平的正函数,即要求的把握程度越大,势必得到一个较宽的置信区间,这就相应降低了估计的准确程度。
    在这里插入图片描述

    随机过程

    了解完置信区间和高斯分布后,下面我们来了解下高斯过程,高斯过程它来源于数学中的随机过程(Stochastic Process)理论。随机过程是研究一组无限个随机变量内在规律的学科,下面我们举个例子来说明“无限个随机变量”与机器学习建模的关系。
    假设需要训练一个预测某城市在任意时间居民用电量的模型。简化期间,在该模型中可以用当前温度、年内天数(即一年中的第几天)、当天时间作为数据特征,将居民总用电量作为目标标签数值。用有监督学习的思维,首先需要收集历史用电数据,比如在 2018年的每天中午 12:00 收集并记录数据,这样得到了一组包含 N=365 条数据的训练数据。但显然居民用电在一天内的不同时间段是有变化的,如果仅仅中午的采样数据不能精确建模,那么可以改为每天采样两次。如果仍不能满足需求,可以增加到每小时采样、每分钟采样……可以发现,随着精度要求的增加采样的训练数据是可以无限增加的。图如果把每次采样的目标值用电量y都看成一个随机变量,那么单条采样就是一个随机分布事件的结果,N条数据就是多个随机分布采样的结果,而整个被学习空间就是由无数个随机变量构成的随机过程了。
    那为什么我们要把实实在在采样得到的 Y 值看成随机变量呢?这涉及两个方面:一是所有数据的产生本身就是随机的,试想自己每天开空调或灯光是否都有随性成分?另一方面,数据的采集是有噪声存在的,这部分在通信领域也叫白噪声,在统计学中叫系统误差。对于这样的场景,无论如何不可能给出一个精确值的预测,即使给出后碰巧符合也只能说明运气不错。更合理的预测方式应该是一个置信区间预测,比如 705±30 的概率达到 95%。

    高斯分布的特点

    如果把每个随机变量都用高斯分布进行建模,那么整个随机过程就是一个高斯过程。高斯过程能成为随机过程最广泛的应用之一就是因为高斯分布本身的诸多优良特性。下面我们总结下高斯分布的特点。

    特点原因
    可标准化一个高斯分布可由均值μ和标准差σ唯一确定,用符号~N(μ,o)表示。并且任意高斯分布可以转化为用μ=0和σ=1的标准正态分布表达
    方便统计高斯分布中约 69.27%的样本落在(μ-σ,μ+σ)之间,约 95%的样本落在(μ-2σ,μ+2σ)之间,约 99%的样本落在(μ-3σ,μ+3o)之间
    多元高斯分布(Multivariate Gaussian)n 元高斯分布描述 n 个随机变量的联合概率分布,由均值向量(μ, μ 2 \mu_2 μ2 μ n \mu_n μn)和协方差短阵工唯一确定。其中上是一个 nXn 的矩阵,每个矩阵元素描述 n 个随机变量两两之间的协方差。
    和与差设有任意两个独立的高斯分布 U 和 V,那么它们的和 U+V 一定是高斯分布,它们的差 U-V 也一定是高斯分布
    部分与整体多元高斯分布的条件分布仍然是多元高斯分布,也可理解为多元高斯分布的子集也是多元高斯分布

    核函数

    根据上面的知识已经知道可以将高斯过程看成无限维的多元高斯分布,那么机器学习的训练过程目标就是学习该无限维高斯分布的子集——也是一个多元高斯分布的参数:均值向量<μ, μ 2 \mu_2 μ2 μ n \mu_n μn>和协方差矩阵上。协方差矩阵工中的元素用于表征两两样本之间的协方差,这个“描述两两样本之间关系”的概念似曾相识。对,就是 SVM 中用于计算高维空间两两样本向量内积的核函数。此处核方法也应用在了协方差矩阵上,使得多元高斯分布也具有了表征高维空间样本之间关系的能力,也就是具备了表征非线性数据的能力。此时的协方差矩阵可以表示为:
    Σ = K x x = [ k ( x 1 , x 2 ) . . . k ( x 1 , x n ) : . . . : k ( x n , x 1 ) . . . k ( x n , x n ) ] \Sigma = Kxx = \begin{bmatrix}k(x_1, x_2) & ...&k(x_1, x_n) \\ : & ...&:\\k(x_n,x_1)&...&k(x_n,x_n)\\ \end{bmatrix} Σ=Kxx=k(x1,x2):k(xn,x1).........k(x1,xn):k(xn,xn)
    其中符号Kxx表示样本数据特征集 X 的核函数矩阵,用 k()表示所选取的核函数, x 1 , x 2 . . . x n x_1,x_2...x_n x1,x2...xn等是单个样本特征向量。和 SVM 一样,此处的核函数也需要开发者指定其形式。常用的仍然有径向基核、多项式核、线性核等。在训练过程中可以定义算法自动寻找核的最佳超参数。

    白噪声处理

    在建模中已经知道随机过程需要考虑采样数据存在噪声的情况。用高斯分布的观点来看,就是在计算训练数据协方差矩阵 Kxx 的对角元素上增加噪声分量。因此协方差矩阵变为如下形式:
    Σ = K x x = [ k ( x 1 , x 2 ) … k ( x 1 , x n ) ⋮ ⋱ ⋮ k ( x n , x 1 ) … k ( x n , x n ) ] + α ( 1 … 0 ⋮ ⋮ 0 … 1 ) \Sigma = Kxx = \begin{bmatrix}k(x_1, x_2) & \dots&k(x_1, x_n) \\ \vdots& \ddots&\vdots\\k(x_n,x_1)&\dots&k(x_n,x_n)\\ \end{bmatrix}+\alpha\begin{pmatrix} 1&\dots&0\\ \vdots&&\vdots\\ 0&\dots&1\\ \end{pmatrix} Σ=Kxx=k(x1,x2)k(xn,x1)k(x1,xn)k(xn,xn)+α1001
    其中α 是模型训练者需要定义的噪声估计参数,该值越大模型抗噪声能力越强,但容易产生拟合不足。

    实战

    下面实战用的是一个非线性函数y = x*sin(x)-x生成带噪声的训练样本,然后用高斯过程模型来模拟这个函数,并比较模型预测结果和真实目标值。

    import numpy as np
    from matplotlib import pyplot as plt
    from sklearn.gaussian_process import GaussianProcessRegressor
    from sklearn.gaussian_process.kernels import RBF
    from sklearn.gaussian_process.kernels import ConstantKernel as C, Product
    
    
    # 原函数
    def f(X):
        return X * np.sin(X) - X
    
    
    X = np.linspace(0, 10, 20)  # 20个训练样本数据特征值
    y = f(X) + np.random.normal(0, 0.5, X.shape[0])  # 样本目标值,并带有噪声
    x = np.linspace(0, 10, 200)   # 测试样本特征值
    # 定义两个核函数,并取它们的积
    kernel = Product(C(0.1), RBF(10, (1e-2, 1e2)))  # RBF:径向基核,把特征向量提升到无限维以解决非线性问题
    # 初始化模型:传入核函数对象,优化次数,噪声超参数 
    gp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=3, alpha=0.3)
    gp.fit(X.reshape(-1, 1), y)
    y_pred, sigma = gp.predict(x.reshape(-1, 1), return_std=True)
    fig = plt.figure()
    plt.plot(x, f(x), 'r:', label=u'$f(x) = x\,\sin(x)-x$')
    plt.plot(X, y, 'r.', markersize=10, label=u'Observations')
    plt.plot(x, y_pred, 'b-', label=u'Prediction')
    plt.fill(np.concatenate([x, x[::-1]]), np.concatenate([y_pred - 2*sigma, (y_pred + 2*sigma)[::-1]]),
             alpha=.3, fc='b', label='95%confidece')  # 填充置信区间
    plt.legend(loc='lower left')
    plt.show()
    

    请添加图片描述
    上图中的实心原点是训练数据,并且在整个区间均匀分布了 200 个测试样本:虚线是函数的真实值,实线是测试样本预测值,带条是预测值的±2o范围。可以发现整体上测试样本的真实值虚线与预测值实线基本重合,只在左上角区域有较大偏差,但都在 95%的置信区间内。
    高斯过程与大多数机器学习模型不同的是,由于高斯过程在预测过程中仍然需要用到原始训练数据,因此导致该方法通常在高维特征和超多训练样本的场景下显得运算效率低。但也正是因此,它才能提供它们所不具备的基于概率分布的预测。
    高斯过程特有初始化参数总结:

    参数解释
    kernel核函数对象,即sklearn.gaussian_process.kernels中类的实例
    alpha为了考虑样本噪声在协方差矩阵对角量的增加,可以是一个数值(应用在所以对角元素上),也可以是一个向量(分别应用在每个对角元素上)
    optimizer可以是一个函数,用于在训练过程中优化核函数的超参数
    n_restarts_optimizeroptimizer被调用的次数,默认为1
    展开全文
  • 本文主要介绍给图像添加椒盐噪声和高斯噪声,以及其代码实现和除噪的方法 若要获取更多数字图像处理,python,深度学习,机器学习,计算机视觉等高清PDF以及 更多有意思的 分享,可搜一搜 微信公共号 “分享猿” ...

    本文主要介绍给图像添加椒盐噪声高斯噪声,以及其代码实现除噪的方法

    若要获取更多数字图像处理,python,深度学习,机器学习,计算机视觉等高清PDF以及 更多有意思的 分享,可搜一搜 微信公共号 “分享猿” 免费获取资源。也可扫描下面的二维码关注,期待你的到来~
    在这里插入图片描述
    一、椒盐噪声

    椒盐噪声也称为脉冲噪声,是一种随机出现的白点(盐)或者黑点(椒),。盐和胡椒噪声的成因可能是影像讯号受到突如其来的强烈干扰而产生、类比数位转换器或位元传输错误等。例如失效的感应器导致像素值为最小值,产生胡椒噪声,饱和的感应器导致像素值为最大值,产生盐粒噪声。

    如下图一幅电路图像以及加了椒盐噪声后的图像
               原图                  加椒盐噪声后的图像
    在这里插入图片描述

    二、高斯噪声

    高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。常见的高斯噪声包括起伏噪声、宇宙噪声、热噪声和散粒噪声等等。除常用抑制噪声的方法外,对高斯噪声的抑制方法常常采用数理统计方法。

    下列是一幅加了高斯噪声的图像
    在这里插入图片描述
    三、代码实现

    下列是实现椒盐噪声和高斯噪声的python代码
    需要已经安装numpy和opencv-python库

    import numpy as np
    import cv2
    
    #定义添加椒盐噪声的函数
    def SaltAndPepperNoise(img,percetage):
        SP_NoiseImg=img
        SP_NoiseNum=int(percetage*img.shape[0]*img.shape[1])
        for i in range(SP_NoiseNum):
            randX=np.random.random_integers(0,img.shape[0]-1)
            randY=np.random.random_integers(0,img.shape[1]-1)
            if np.random.random_integers(0,1)==0:
                SP_NoiseImg[randX,randY]=0   #0为胡椒噪声
            else:
                SP_NoiseImg[randX,randY]=255    #1为盐粒噪声
        return SP_NoiseImg
    
    #定义添加高斯噪声的函数
    def addGaussianNoise(image,percetage):
        G_Noiseimg = image
        G_NoiseNum=int(percetage*image.shape[0]*image.shape[1])
        for i in range(G_NoiseNum):
            temp_x = np.random.randint(0,G_Noiseimg.shape[0])
            temp_y = np.random.randint(0,G_Noiseimg.shape[1])
            G_Noiseimg[temp_x][temp_y] = 255
        return G_Noiseimg
    
    
    def main():
        img = cv2.imread(r"F:\image\Circuit.tif",1)
        cv2.namedWindow("Original image")
        cv2.imshow("Original image", img)
        grayImg = cv2.imread(r"F:\image\Circuit.tif",0)
        cv2.imshow("grayimage", grayImg)
    
        gauss_noiseImage = addGaussianNoise(grayImg, 0.1)  # 添加10%的高斯噪声
        cv2.imshow("Add_GaussianNoise Image", gauss_noiseImage)
        cv2.imwrite(r"C:\Users\xxx\Desktop\GaussianNoise Image1.jpg", gauss_noiseImage)
    
        SaltAndPepper_noiseImage = SaltAndPepperNoise(grayImg, 0.1)  # 添加10%的椒盐噪声
        cv2.imshow("Add_SaltAndPepperNoise Image", SaltAndPepper_noiseImage)
        cv2.imwrite(r"C:\Users\xxx\Desktop\SaltAndPepper_noiseImage1.jpg", gauss_noiseImage)
    
        cv2.waitKey(0)
        cv2.destroyAllWindows()
    
    main()
    
    

    四、去噪处理

    下面是给出对前文中 加过 椒盐噪声和高斯噪声的图像 分别进行图像去噪 处理
    这里主要介绍下中值滤波均值滤波,并附带四种滤波的比较

    中值滤波和均值滤波都可以起到平滑图像,具有去噪声的功能。
    中值滤波采用非线性的方法,它在平滑脉冲噪声方面非常有效,同时它可以保护图像尖锐的边缘,选择适当的点来替代污染点的值,所以处理效果好,对椒盐噪声表现较好,对高斯噪声表现较差。
    均值滤波采用线性的方法,平均整个窗口范围内的像素值,均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。均值滤波对高斯噪声表现较好,对椒盐噪声表现较差。

    下列图像中左侧右侧分别是对上述加过椒盐噪声图像和加过高斯噪声图像使用特定滤波进行去噪处理 
     
    中值滤波

    mbImg = cv2.medianBlur(noise_im,3)
    

    在这里插入图片描述  在这里插入图片描述
    均值滤波

    meanImg = cv2.blur(noise_im,(3,3))
    

    在这里插入图片描述  在这里插入图片描述
    高斯滤波

    Img_GaussianBlur=cv2.GaussianBlur(noise_im,(3,3),0)
    

    在这里插入图片描述  在这里插入图片描述
    双边滤波

    img_bilateralFilter=cv2.bilateralFilter(noise_im,40,75,75)
    

    在这里插入图片描述   在这里插入图片描述

    搜索公众号“分享猿”,并回复关键词“代码”,获取本文全部代码

    留言或者公众号关注我,我们一起分享数字图像处理心得,一起交流学习吧~

    展开全文
  • 神经网络训练数据集加上高斯噪声后会出现小于0大于1的数据要重新归一化吗??还是有另外的处理方法?? <p>(这个训练集不是图像,是归一化后的训练数据集;网上好多都...
  • 本文介绍了如何通过添加高斯噪声来降低过拟合风险。


    训练神经网络时,如果数据集比较小,很容易导致过拟合。也就是说,小样本量所对应的高维的输入空间比较稀疏,神经网络很难从中学习映射关系。一种方法是通过添加噪声使得输入空间变得平滑,从而有利于神经网络学习。


    1. 小数据集存在的问题

    在训练大型神经网络时,小型数据集会带来问题。

    第一个问题是网络可以有效地记忆训练数据集。该模型可以学习特定的输入示例及其关联的输出,而不是学习从输入到输出的一般映射。这将导致模型在训练数据集上表现良好,而在新数据上表现不佳,即泛化能力很差。

    第二个问题是小的数据集提供较少的机会来描述输入空间的结构及其与输出的关系。更多的训练数据为模型可以学习的问题提供了更丰富的描述。较少的数据意味着震荡和离散的输入空间而不是平滑的输入空间,这可能会导致模型学习特征映射比较困难。

    有时候,有些数据的收集比较困难。此外,即使采集了更多的数据,可能仍然无法解决这些问题。一种解决方法是训练期间添加噪声。


    2. 训练期间添加噪声

    小数据集在训练时,会导致比较大的误差。通过在训练期间添加噪声,可以提高模型从输入空间学习映射规则的能力,提高模型的泛化能力和容错率。

    在神经网络模型训练期间添加噪声具有正则化效果,进而提高了模型的鲁棒性。与权重正则化方法一样,已经证明添加噪声对损失函数的影响和惩罚项的作用类似。

    实际上,添加噪声会扩大训练数据集的大小。每次将训练样本输入模型时,都会将随机噪声添加到输入变量,从而使输入模型的数据每次都不同。将噪声添加到输入样本是数据增强的一种简单形式。

    添加噪声意味着网络无法记住训练样本,因为它们一直在变化,从而导致网络权重更小且网络更健壮,泛化误差更低。

    噪声意味着从已知样本附近的域中抽取新样本,从而平滑了输入空间的结构。这种平滑可能意味着映射功能更易于网络学习,从而导致更好,更快的学习。


    3. 如何添加噪声

    高斯噪声或白噪声(Gaussian noise, or white noise) 的平均值为零,标准差(std)为1,可以根据需要使用伪随机数生成器生成。在信号处理中,使用高斯噪声这一术语来指代电路中不相关的随机噪声;传统上,将高斯噪声添加到神经网络的输入中称为抖动(jitter) 或随机抖动。

    添加的噪声量(例如,扩展或标准偏差)是可配置的超参数。噪声太小没有影响,而噪声太大使映射功能难以学习。通常是通过在将输入数据喂给网络之前在输入数据上添加一个随机向量来完成的,因此,在训练中同样的数据在不同训练批次中,也会添加不同的随机向量。

    随机噪声的标准差可以根据每个输入变量的大小进行调整。如果输入变量的标度已首先进行标准化,则配置起来会更容易。

    噪声仅在训练期间添加。在模型评估期间或使用模型对新数据进行预测时,不会添加任何噪声。

    噪声的添加也是自动特征学习的重要部分,例如在自动编码器的情况下,所谓的降噪自动编码(Denoising Autoencoders)器明确要求模型在存在输入噪声的情况下学习鲁棒特征。

    尽管在数据中添加噪声是最常见且最广泛的方法,但是在训练过程中可以将随机噪声添加到网络的其它部分。比如:

    • 给激活添加噪声,即每层的输出。
    • 给权重添加噪声,即迭代输入。
    • 给梯度(即更新权重的方向)添加噪声。
    • 给输出(即标签或目标变量)添加噪声。

    在激活中中增加噪声,从而可以在网络的任何数据使用噪声。这对于非常深的网络可能是有益的。将噪声添加到层输出中,很可能是通过使用噪声激活函数来实现的。

    在权重中添加噪声,可以使该方法以一致的方式在整个网络中使用,而不是在输入和层激活中添加噪声。这在递归神经网络中特别有用。

    向梯度添加噪声,可以使模型更多地集中在提高优化过程本身的鲁棒性上,而不是输入空间的结构上。噪声的数量可能在训练开始时就开始很高,并且随着时间的流逝而降低,这很像学习速率的下降。对于非常深的网络和各种不同的网络类型,该方法已被证明是一种有效的方法。

    将噪声添加到激活,权重或梯度都提供了一种更通用的添加噪声的方法,该噪声对于提供给模型的输入变量的类型是不变的。

    如果认为或预期问题域带有错误标记的示例,则在类别标签上添加噪声可以提高模型对此类错误的鲁棒性。但这很容易偏离学习过程。

    在回归或时间序列预测中,将噪声添加到连续目标变量中,非常类似于将噪声添加到输入变量中,并且可能是更好的方法。


    4. 添加噪声的提示

    添加噪声的方法,主要用于多层感知器,但可以与卷积和递归神经网络一起使用。

    重要的是,噪声的添加对模型具有一致的影响。这就要求对输入数据进行重新缩放,以使所有变量都具有相同的缩放比例,以便在以固定方差将噪声添加到输入时,具有相同的效果。这也适用于在权重和渐变上添加噪声,因为它们也受输入比例的影响。这可以通过输入变量的标准化或标准化来实现。如果在数据缩放后添加了随机噪声,则可能需要对每个批处理再次重新缩放变量。


    5. tensorflow.keras API

    将噪声添加到具有少量训练数据集的神经网络模型中可以产生正则化效果并减少过拟合。

    Keras通过单独的 GaussianNoise 层添加高斯噪声。该层可用于向现有模型添加噪声。

    tf.keras.layers.GaussianNoise(
        stddev, **kwargs
    )
    

    参数说明:

    • stddev:float类型,噪声分布的标准差。

    调用参数说明:

    • inputs:输入张量(任何等级)。
    • training:bool类型,True指示该层在训练模式下添加噪声;False表示不执行任何操作。
    • input_shape:在将此层用作模型的第一层时,需要指定该关键字参数(整数元组,不包括样本轴)。

    示例:

    from tensorflow.keras.layers import GaussianNoise
    layer = GaussianNoise(0.1)
    

    实例:

    1. 在激活之前添加高斯噪声:

    ...
    model.add(Dense(32))
    model.add(GaussianNoise(0.1))
    model.add(Activation('relu'))
    model.add(Dense(32))
    ...
    

    2. 在激活之后添加高斯噪声:

    ...
    model.add(Dense(32, activation='reu'))
    model.add(GaussianNoise(0.1))
    model.add(Dense(32))
    ...
    

    可以将标准差作为超参数,通过网格搜索找出最佳的值。


    参考
    https://machinelearningmastery.com/train-neural-networks-with-noise-to-reduce-overfitting/
    https://machinelearningmastery.com/how-to-improve-deep-learning-model-robustness-by-adding-noise/
    https://www.tensorflow.org/api_docs/python/tf/keras/layers/GaussianNoise

    展开全文
  • 噪声和错误 我们之前的研究都是假设在样本数据完美,没有噪声存在的前提下进行推导的。然后得出机器能够学到东西的结论,但是,现实中噪声的存在是不可避免的。...那么存在噪声机器学习还能有效果吗
  • 针对超分辨率图像处理对图像加入不同类型的高斯噪声matlab代码
  • 在前面的numpy的学习中忽略了这几个重要的知识点,导致今天做作业异常的艰难。...一维的,二维的等等),还可以产生正态分布的数(既可以用它来产生 扰动或者是高斯噪声 )。(1) numpy.random. rand ( d0 , ...
  • python 高斯噪声-python高斯噪声

    千次阅读 2020-10-30 23:03:49
    噪声时间序列的例子在本节中,我们将使用python创建一个高斯噪声序列并做一些检查。 它有助于在实践中创建和评估白噪声时间序列。 它将提供参考框架和示例图并且使用和比较自己的时间序列项目的统计测试,以检查...
  • 向数据中添加高斯噪声

    万次阅读 多人点赞 2016-10-15 13:56:48
    什么是高斯噪声高斯噪声既是符合高斯正态分布的误差。一些情况下我们需要向标准数据中加入合适的高斯噪声会让数据变得有一定误差而具有实验价值。高斯噪声还有一些其他用途但是我不太了解,这里我是为了实现多项式...
  • 本文我们将对高斯过程回归模型给出基本介绍,研究...以回归(对于连续输出)和分类(对于离散输出)形式的机器学习是统计学和机器学习非常重要的组成部分,无论是对于大量数据的分析,或是对于一个更加复杂问题中的...
  • 图像噪声2——高斯噪声。给图像添加高斯噪声
  • 高斯噪声matlab代码机器与深度学习纲要 以下是我的个人纲要,其中包括许多主题,链接,统计领域的摘要,机器学习,深度学习,计算机科学,数据科学,深度视觉,NLP,云计算,产品管理等。 我认为该纲要是熟练水平...
  • 数据增强——高斯噪声(RGB)

    千次阅读 2019-03-16 20:49:03
    参考《机器学习实践指南》第十章 import cv2 import numpy as np fn = '1.jpg' myimg = cv2.imread(fn) img = myimg param=30 grayscale = 256 w=img.shape[1] h=img.shape[0] newimg = np.zeros((h...
  • 图像画面中的噪声,大致可以分为两类:高斯噪声和椒盐噪声。在这里,我们先看下图像中两种噪声各自的特征。椒盐噪声:噪声幅值基本相同,但出现位置随机。高斯噪声:图像中每一点都存在噪声,但幅值是随机分布的。用...
  • 机器学习中的高斯过程

    千次阅读 多人点赞 2018-12-16 17:08:58
    写这篇文章的目的就是为了总结一下最近在学习高斯过程的一些内容,但是由于我是初学者可能有些地方理解不到位,请大家多多谅解~文末附上了一些数学方面的推导。 1. 高斯过程定义 高斯过程是在连续域上定义的一种...
  • 高斯过程和机器学习1——高斯回归

    千次阅读 2019-01-09 21:55:15
    监督学习一般有两种处理,一种是根据经验特点严格限制为莫一种模型和函数,比如用线性回归模型处理;另外一种就是更宽泛:给每一种函数模型一个先验概率,概率越大意味着越容易被我们采纳,意味它具有某种更好的性质...
  • Sigma对高斯噪声的影响 应用高斯噪声  图像处理需注意的地方 好的。 我们说噪音的大小是由sigma决定的。 实际上,我们可以只看噪声函数本身,所以不要添加原始图像,只需看看噪声函数。 Sigma对高斯噪声的影响...
  • 机器学习水果识别——python+opencv实现物体特征提取

    万次阅读 多人点赞 2018-12-02 21:30:56
    文章目录一、用python+opencv实现物体特征值提取1、读取图像、转为灰度图像并降噪2、获取水果轮廓将最大轮廓画入最开始的img...要用机器学习来实现水果识别,无论是训练还是识别阶段都需要提取图片中水果的特征值。...
  • 添加高斯噪声 rng = np.random.RandomState(42) noisy = rng.normal(digits.data, 2) plot_digits(noisy) plt.savefig(r"C:\Users\86377\Desktop\2.png") plt.show() 添加噪声后的图片如下: 我们可以看到添加了噪声...
  • 高斯过程和机器学习2——高斯分类

    千次阅读 2019-01-11 22:51:41
    高斯过程分类 对于分类问题,高斯过程就不那么简单。前面我们是可以得出似然函数,先验分布均为高斯得出后验也是高斯分布。这种在解析计算上有良好的驯良性。对于分类问题输出值y不是连续的而是离散的,自然p(y|D)...
  • 将⼀维高斯分布推⼴到多变量中就得到了高斯网络,将多变量推⼴到无限维,就得到了高斯过程。高斯过程是定义在连续域(时间/空间)上的无限多个高斯随机变量所组成的随机过程。具体的形式化的定义如下: 对于时间轴...
  • 为了增加具有射频硬件特性的射频机器学习数据集,发送和接收射频波形信号样本的MATLAB脚本。 需要使用Mathworks“来自通信的USRP支持”工具箱来控制某些Ettus USRP SDR。 如何使用这些脚本 要创建适当结构的RF波形...
  • 机器学习中的高斯过程简介

    千次阅读 2018-11-05 09:56:07
    前面的博客有说到高斯混合模型,本质是用n(簇的个数)个高斯函数的线性组合拟合数据,然后用训练数据集学习各个高斯函数的参数以及线性组合系数,最后反过来更具学习到的模型P(y∣X)P(y|X)P(y∣X)对原数据集进行聚类...
  • python 高斯噪声-python白噪声

    千次阅读 2020-10-30 23:04:54
    广告关闭2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品。... 在本教程中,你将学习python中的白噪声时间序列。 完成本教程后,你将知道:白噪声时间序列的定义以及为什么它很重要。 如...
  • 图像添加高斯噪声

    千次阅读 2021-12-14 11:08:26
    def gasuss_noise(image, mean, var): noise = np.random.normal(mean, var, [image.shape[0], image.shape[1], 1]) out = image + np.tile(noise,3) return np.clip(out, 0, 255).as...var越大,噪声越明显。 ...
  • 目录什么是图像噪声噪声来源常见噪声高斯噪声泊松噪声乘性噪声椒盐噪声信噪比 什么是图像噪声     噪声在图像上常表现为一引起较强视觉效果的孤立像素点或像素块。一般,噪声信号与要研究的对象不相关,它以无用...
  • 我必须使用SVD(奇异值分解),我以前在我的机器学习课程中就学习了SVD(奇异值分解),并利用特征值来缩小图像的大小,而不会牺牲图像对人眼的识别能力。 tldr:SVD =没有可识别的质量损失,但尺寸明显减小
  • 提出了合并训练数据的简单方程,并研究了如何使用边际似然来学习超参数。我们解释了高斯过程的实际优势,并以结论和回顾GP工作的当前趋势。 现在看来算是入门基于高斯模型的贝叶斯优化的科普文吧。 2.高斯过程 定义...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,598
精华内容 5,839
关键字:

高斯噪声机器学习