成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Denoising Autoencoder

JerryC / 1720人閱讀

摘要:降噪自編碼器認(rèn)為,設(shè)計(jì)一個(gè)能夠恢復(fù)原始信號的自編碼器未必是最好的,而能夠?qū)Ρ晃廴酒茐牡脑紨?shù)據(jù)進(jìn)行編碼解碼,然后還能恢復(fù)真正的原始數(shù)據(jù),這樣的特征才是好的。該恢復(fù)信號盡可能的逼近未被污染的原數(shù)據(jù)。此時(shí),監(jiān)督訓(xùn)練的誤差函數(shù)就從原來的變成了。

作者:chen_h
微信號 & QQ:862251340
微信公眾號:coderpai
簡書地址:https://www.jianshu.com/p/f7b...


自編碼器 Autoencoder

稀疏自編碼器 Sparse Autoencoder

降噪自編碼器 Denoising Autoencoder

堆疊自編碼器 Stacked Autoencoder


降噪自編碼器(DAE)是另一種自編碼器的變種。強(qiáng)烈推薦 Pascal Vincent 的論文,該論文很詳細(xì)的描述了該模型。降噪自編碼器認(rèn)為,設(shè)計(jì)一個(gè)能夠恢復(fù)原始信號的自編碼器未必是最好的,而能夠?qū)?“被污染/破壞” 的原始數(shù)據(jù)進(jìn)行編碼、解碼,然后還能恢復(fù)真正的原始數(shù)據(jù),這樣的特征才是好的。

從數(shù)學(xué)上來講,假設(shè)原始數(shù)據(jù) x 被我們“故意破壞”了,比如加入高斯噪聲,或者把某些維度數(shù)據(jù)抹掉,變成 x",然后在對 x" 進(jìn)行編碼、解碼,得到回復(fù)信號 xx = g(f(x")) 。該恢復(fù)信號盡可能的逼近未被污染的原數(shù)據(jù) x 。此時(shí),監(jiān)督訓(xùn)練的誤差函數(shù)就從原來的 L(x, g(f(x))) 變成了 L(x, g(f(x")))。

從直觀上理解,降噪自編碼器希望學(xué)到的特征盡可能魯棒,能夠在一定程度上對抗原始數(shù)據(jù)的污染、缺失等情況。Vincent 論文里也對 DAE 提出了基于流行學(xué)習(xí)的解釋,并且在圖像數(shù)據(jù)上進(jìn)行測試,發(fā)現(xiàn) DAE 能夠?qū)W出類似 Gabor 邊緣提取的特征變換。

DAE 的系統(tǒng)結(jié)構(gòu)如下圖所示:

現(xiàn)在使用比較多的噪聲主要是 mask noise,即原始數(shù)據(jù)中部分?jǐn)?shù)據(jù)缺失,這是有著強(qiáng)烈的實(shí)際意義的,比如圖像部分像素被遮擋、文本因記錄原因漏掉一些單詞等等。

實(shí)現(xiàn)代碼如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import tensorflow as tf 
import numpy as np 
import input_data

N_INPUT = 784
N_HIDDEN = 100
N_OUTPUT = N_INPUT
corruption_level = 0.3
epoches = 1000

def main(_):

    w_init = np.sqrt(6. / (N_INPUT + N_HIDDEN))
    weights = {
        "hidden": tf.Variable(tf.random_uniform([N_INPUT, N_HIDDEN], minval = -w_init, maxval = w_init)),
        "out": tf.Variable(tf.random_uniform([N_HIDDEN, N_OUTPUT], minval = -w_init, maxval = w_init))
    }

    bias = {
        "hidden": tf.Variable(tf.random_uniform([N_HIDDEN], minval = -w_init, maxval = w_init)),
        "out": tf.Variable(tf.random_uniform([N_OUTPUT], minval = -w_init, maxval = w_init))
    }

    with tf.name_scope("input"):
        # input data
        x = tf.placeholder("float", [None, N_INPUT])
        mask = tf.placeholder("float", [None, N_INPUT])

    with tf.name_scope("input_layer"):
        # from input data to input layer
        input_layer = tf.mul(x, mask)

    with tf.name_scope("hidden_layer"):
        # from input layer to hidden layer
        hidden_layer = tf.sigmoid(tf.add(tf.matmul(input_layer, weights["hidden"]), bias["hidden"]))

    with tf.name_scope("output_layer"):
        # from hidden layer to output layer
        output_layer = tf.sigmoid(tf.add(tf.matmul(hidden_layer, weights["out"]), bias["out"]))

    with tf.name_scope("cost"):
        # cost function
        cost = tf.reduce_sum(tf.pow(tf.sub(output_layer, x), 2))

    optimizer = tf.train.AdamOptimizer().minimize(cost)

    # load MNIST data
    mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
    trX, trY, teX, teY = mnist.train.images, mnist.train.labels, mnist.test.images, mnist.test.labels

    with tf.Session() as sess:

        init = tf.initialize_all_variables()
        sess.run(init)

        for i in range(epoches):
            for start, end in zip(range(0, len(trX), 100), range(100, len(trX), 100)):
                input_ = trX[start:end]
                mask_np = np.random.binomial(1, 1 - corruption_level, input_.shape)
                sess.run(optimizer, feed_dict={x: input_, mask: mask_np})

            mask_np = np.random.binomial(1, 1 - corruption_level, teX.shape)
            print i, sess.run(cost, feed_dict={x: teX, mask: mask_np})

if __name__ == "__main__":
    tf.app.run()

Reference:

[《Extracting and Composing Robust Features with Denoising
Autoencoders》](http://machinelearning.org/ar...

《Stacked Denoising Autoencoders: Learning Useful Representations in a Deep Network with a Local Denoising Criterion》


作者:chen_h
微信號 & QQ:862251340
簡書地址:https://www.jianshu.com/p/f7b...

CoderPai 是一個(gè)專注于算法實(shí)戰(zhàn)的平臺,從基礎(chǔ)的算法到人工智能算法都有設(shè)計(jì)。如果你對算法實(shí)戰(zhàn)感興趣,請快快關(guān)注我們吧。加入AI實(shí)戰(zhàn)微信群,AI實(shí)戰(zhàn)QQ群,ACM算法微信群,ACM算法QQ群。長按或者掃描如下二維碼,關(guān)注 “CoderPai” 微信號(coderpai)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/41170.html

相關(guān)文章

  • Deep learning:四十二(Denoise Autoencoder簡單理解)

    摘要:本篇博文主要是根據(jù)的那篇文章簡單介紹下,然后通過個(gè)簡單的實(shí)驗(yàn)來說明實(shí)際編程中該怎樣應(yīng)用。當(dāng)然作者也從數(shù)學(xué)上給出了一定的解釋。自頂向下的生成模型觀點(diǎn)的解釋。信息論觀點(diǎn)的解釋。 前言:   當(dāng)采用無監(jiān)督的方法分層預(yù)訓(xùn)練深度網(wǎng)絡(luò)的權(quán)值時(shí),為了學(xué)習(xí)到較魯棒的特征,可以在網(wǎng)絡(luò)的可視層(即數(shù)據(jù)的輸入層)引入隨機(jī)噪聲,這種方法稱為Denoise Autoencoder(簡稱dAE),由Bengio在08年...

    gotham 評論0 收藏0
  • Autoencoder

    摘要:簡單來說是一個(gè)壓縮編碼器,也就是對的一坨東西通過變換,輸出和一樣的東西。例如是一個(gè)雞,也是一個(gè)雞,是一個(gè)鴨,也是一個(gè)鴨。學(xué)術(shù)一點(diǎn)說就是找到一個(gè)函數(shù)能夠使得,叫做。加入實(shí)戰(zhàn)微信群,實(shí)戰(zhàn)群,算法微信群,算法群。 作者:chen_h微信號 & QQ:862251340微信公眾號:coderpai簡書地址:https://www.jianshu.com/p/fd3... 自編碼器 Auto...

    GitChat 評論0 收藏0
  • 【面向代碼】學(xué)習(xí) Deep Learning(一)Neural Network

    摘要:最近一直在看,各類博客論文看得不少但是說實(shí)話,這樣做有些疏于實(shí)現(xiàn),一來呢自己的電腦也不是很好,二來呢我目前也沒能力自己去寫一個(gè)只是跟著的寫了些已有框架的代碼這部分的代碼見后來發(fā)現(xiàn)了一個(gè)的的,發(fā)現(xiàn)其代碼很簡單,感覺比較適合用來學(xué)習(xí)算法再一個(gè)就 最近一直在看Deep Learning,各類博客、論文看得不少但是說實(shí)話,這樣做有些疏于實(shí)現(xiàn),一來呢自己的電腦也不是很好,二來呢我目前也沒能力自己去寫一...

    ?xiaoxiao, 評論0 收藏0
  • Sparse Autoencoder

    摘要:稀疏編碼是對網(wǎng)絡(luò)的隱藏層的輸出有了約束,即隱藏層神經(jīng)元輸出的平均值應(yīng)盡量為。也就是說,大部分的隱藏層神經(jīng)元都處于非狀態(tài)。為了滿足這一條件,隱藏層神經(jīng)元的活躍度必須接近于。 作者:chen_h微信號 & QQ:862251340微信公眾號:coderpai簡書地址:https://www.jianshu.com/p/5f3... 自編碼器 Autoencoder 稀疏自編碼器 Spa...

    harryhappy 評論0 收藏0
  • Stacked Autoencoder

    摘要:等訓(xùn)練結(jié)束后,輸出層就可以去掉了,因?yàn)槲覀冎魂P(guān)心的是從到的變換。需要注意的是,整個(gè)網(wǎng)絡(luò)的訓(xùn)練不是一蹴而就的,而是逐層進(jìn)行的。加入實(shí)戰(zhàn)微信群,實(shí)戰(zhàn)群,算法微信群,算法群。 作者:chen_h微信號 & QQ:862251340微信公眾號:coderpai簡書地址:https://www.jianshu.com/p/51d... 自編碼器 Autoencoder 稀疏自編碼器 Spa...

    張率功 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<