国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

Sparse Autoencoder

harryhappy / 835人閱讀

摘要:稀疏編碼是對(duì)網(wǎng)絡(luò)的隱藏層的輸出有了約束,即隱藏層神經(jīng)元輸出的平均值應(yīng)盡量為。也就是說(shuō),大部分的隱藏層神經(jīng)元都處于非狀態(tài)。為了滿(mǎn)足這一條件,隱藏層神經(jīng)元的活躍度必須接近于。

作者:chen_h
微信號(hào) & QQ:862251340
微信公眾號(hào):coderpai
簡(jiǎn)書(shū)地址:https://www.jianshu.com/p/5f3...


自編碼器 Autoencoder

稀疏自編碼器 Sparse Autoencoder

降噪自編碼器 Denoising Autoencoder

堆疊自編碼器 Stacked Autoencoder


稀疏自編碼器可以看做是自編碼器的一個(gè)變種,它的作用是給隱藏神經(jīng)元加入稀疏性限制,那么自編碼神經(jīng)網(wǎng)絡(luò)即使在隱藏神經(jīng)元數(shù)量較多的情況下任然可以返現(xiàn)輸入數(shù)據(jù)中一些有趣的結(jié)構(gòu)。

稀疏性可以被簡(jiǎn)單地解釋為:如果當(dāng)神經(jīng)元的輸出接近于1的時(shí)候我們認(rèn)為它被激活,而輸出接近于0的時(shí)候認(rèn)為它被抑制,那么使得神經(jīng)元大部分的時(shí)間都是被抑制的限制則被稱(chēng)作稀疏性限制。這里我們假設(shè)的神經(jīng)元的激活函數(shù)是 sigmoid 函數(shù)。如果你使用 tanh 作為激活函數(shù)的話(huà),當(dāng)神經(jīng)元輸出為-1的時(shí)候,我們認(rèn)為神經(jīng)元是被抑制的。

稀疏自編碼器網(wǎng)絡(luò)結(jié)果還是和自編碼器一樣,如下:

稀疏自編碼器與自編碼器的不同點(diǎn)在于損失函數(shù)的設(shè)計(jì)上面。稀疏編碼是對(duì)網(wǎng)絡(luò)的隱藏層的輸出有了約束,即隱藏層神經(jīng)元輸出的平均值應(yīng)盡量為0。也就是說(shuō),大部分的隱藏層神經(jīng)元都處于非 activite 狀態(tài)。因此,此時(shí)的 sparse autoencoder 損失函數(shù)表達(dá)式為:

最后的一項(xiàng)表示KL散度,其具體表達(dá)式如下:

隱藏層神經(jīng)元 j 的平均活躍度計(jì)算如下:

其中,p 是稀疏性參數(shù),通常是一個(gè)接近于0的很小的值(比如 p = 0.05)。換句話(huà)說(shuō),我們想要讓隱藏層神經(jīng)元 j 的平均活躍度接近 0.05 。為了滿(mǎn)足這一條件,隱藏層神經(jīng)元的活躍度必須接近于 0 。為了實(shí)現(xiàn)這一限制,所以我們才設(shè)計(jì)了上面的KL散度。

如果我們假設(shè)平均激活度 p = 0.2,那么我們就能得到下圖的關(guān)系:

從圖中,可以看出,當(dāng)值一旦偏離期望激活度 p 時(shí),這種誤差便會(huì)急劇增大,從而作為稱(chēng)發(fā)現(xiàn)個(gè)添加到目標(biāo)函數(shù),可以指導(dǎo)整個(gè)網(wǎng)絡(luò)學(xué)習(xí)出稀疏的特征表示。

實(shí)驗(yàn)代碼如下:

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

import tensorflow as tf 
import numpy as np 


N_INPUT = 4
N_HIDDEN = 100
N_OUTPUT = N_INPUT
BETA = tf.constant(3.0)
LAMBDA = tf.constant(.0001)
EPSILON = .00001
RHO = .1


def diff(input_data, output_data):
    ans = tf.reduce_sum(tf.pow(tf.sub(output_data, input_data), 2))
    return ans

def main(_):
    
    weights = {
        "hidden": tf.Variable(tf.random_normal([N_INPUT, N_HIDDEN]), name = "w_hidden"),
        "out": tf.Variable(tf.random_normal([N_HIDDEN, N_OUTPUT]), name = "w_out")
    }

    biases = {
        "hidden": tf.Variable(tf.random_normal([N_HIDDEN]), name = "b_hidden"),
        "out": tf.Variable(tf.random_normal([N_OUTPUT]), name = "b_out")
    }

    def KLD(p, q):
        invrho = tf.sub(tf.constant(1.), p)
        invrhohat = tf.sub(tf.constant(1.), q)
        addrho = tf.add(tf.mul(p, tf.log(tf.div(p, q))), tf.mul(invrho, tf.log(tf.div(invrho, invrhohat))))
        return tf.reduce_sum(addrho)

    with tf.name_scope("input"):
        # input placeholders
        x = tf.placeholder("float", [None, N_INPUT], name = "x_input")
        #hidden = tf.placeholder("float", [None, N_HIDDEN], name = "hidden_activation")

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

    with tf.name_scope("output_layer"):
        # from hidden layer to output layer
        out = tf.nn.softmax(tf.add(tf.matmul(hiddenlayer, weights["out"]), biases["out"]))

    with tf.name_scope("loss"):
        # loss items
        cost_J = tf.reduce_sum(tf.pow(tf.sub(out, x), 2))

    with tf.name_scope("cost_sparse"):
        # KL Divergence items
        rho_hat = tf.div(tf.reduce_sum(hiddenlayer), N_HIDDEN)
        cost_sparse = tf.mul(BETA, KLD(RHO, rho_hat))

    with tf.name_scope("cost_reg"):
        # Regular items
        cost_reg = tf.mul(LAMBDA, tf.add(tf.nn.l2_loss(weights["hidden"]), tf.nn.l2_loss(weights["out"])))

    with tf.name_scope("cost"):
        # cost function
        cost = tf.add(tf.add(cost_J, cost_reg), cost_sparse)

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

    with tf.Session() as sess:

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

        input_data = np.array([[0,0,0,1],[0,0,1,0],[0,1,0,0],[1,0,0,0]], float)

        for i in xrange(10000):
            sess.run(optimizer, feed_dict = {x: input_data})
            if i % 100 == 0:
                tmp = sess.run(out, feed_dict = {x: input_data})
                print i, sess.run(diff(tmp, input_data))

        tmp = sess.run(out, feed_dict = {x: input_data})
        print tmp


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

Reference:

Stanford Lecture

UFLDL

SAE code


作者:chen_h
微信號(hào) & QQ:862251340
簡(jiǎn)書(shū)地址:https://www.jianshu.com/p/5f3...

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


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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/41169.html

相關(guān)文章

  • Deep learning:九(Sparse Autoencoder練習(xí))

    摘要:實(shí)驗(yàn)基礎(chǔ)其實(shí)實(shí)現(xiàn)該功能的主要步驟還是需要計(jì)算出網(wǎng)絡(luò)的損失函數(shù)以及其偏導(dǎo)數(shù),具體的公式可以參考前面的博文八。生成均勻分布的偽隨機(jī)數(shù)。 前言:   現(xiàn)在來(lái)進(jìn)入sparse autoencoder的一個(gè)實(shí)例練習(xí),參考Ng的網(wǎng)頁(yè)教程:Exercise:Sparse Autoencoder。 這個(gè)例子所要實(shí)現(xiàn)的內(nèi)容大概如下:從給定的很多張自然圖片中截取出大小為8*8的小patches圖片共10000張...

    ?xiaoxiao, 評(píng)論0 收藏0
  • 人工智能術(shù)語(yǔ)表

    摘要:如果你對(duì)算法實(shí)戰(zhàn)感興趣,請(qǐng)快快關(guān)注我們吧。加入實(shí)戰(zhàn)微信群,實(shí)戰(zhàn)群,算法微信群,算法群。 作者:chen_h微信號(hào) & QQ:862251340微信公眾號(hào):coderpai簡(jiǎn)書(shū)地址:https://www.jianshu.com/p/b5c... 介紹一些人工智能技術(shù)的術(shù)語(yǔ),如果你還有術(shù)語(yǔ)補(bǔ)充,請(qǐng)?jiān)L問(wèn) Github English Terminology 中文術(shù)語(yǔ) neur...

    pingan8787 評(píng)論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微信號(hào) & QQ:862251340微信公眾號(hào):coderpai簡(jiǎn)書(shū)地址:https://www.jianshu.com/p/51d... 自編碼器 Autoencoder 稀疏自編碼器 Spa...

    張率功 評(píng)論0 收藏0
  • Autoencoder

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

    GitChat 評(píng)論0 收藏0
  • Denoising Autoencoder

    摘要:降噪自編碼器認(rèn)為,設(shè)計(jì)一個(gè)能夠恢復(fù)原始信號(hào)的自編碼器未必是最好的,而能夠?qū)Ρ晃廴酒茐牡脑紨?shù)據(jù)進(jìn)行編碼解碼,然后還能恢復(fù)真正的原始數(shù)據(jù),這樣的特征才是好的。該恢復(fù)信號(hào)盡可能的逼近未被污染的原數(shù)據(jù)。此時(shí),監(jiān)督訓(xùn)練的誤差函數(shù)就從原來(lái)的變成了。 作者:chen_h微信號(hào) & QQ:862251340微信公眾號(hào):coderpai簡(jiǎn)書(shū)地址:https://www.jianshu.com/p/f7...

    JerryC 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<