強制自動編碼器學習有用特徵的另一種方法是向其輸入中新增雜訊,訓練它來恢復原始的無雜訊輸入。這個想法自2023年代開始就存在(在yann lecun 2023年的碩士**中提到過)。在2023年的**中,pascal vincent等人表明自動編碼器也可以用於特徵提取。在2023年的**中,vincent等人提出了堆疊式去噪自動編碼器
雜訊可以是新增到輸入的純高斯雜訊,也可以是隨機關閉的輸入
實現很簡單,在編碼器的輸入中附加乙個dropout層(或者使用gaussiannoise層)。dropout層和gasussiannoise層僅在訓練期間處於啟用狀態
from tensorflow import keras
fashion_mnist = keras.datasets.fashion_mnist
(x_train_all, y_train_all), (x_test, y_test) = fashion_mnist.load_data()
x_valid, x_train = x_train_all[:5000] / 255., x_train_all[5000:] / 255.
y_valid, y_train = y_train_all[:5000], y_train_all[5000:]
dropout_encoder = keras.models.sequential([
keras.layers.flatten(input_shape=[28, 28]),
keras.layers.dropout(.5),
keras.layers.dense(100, activation='gelu'),
keras.layers.dense(30, activation='gelu')
])dropout_decoder = keras.models.sequential([
keras.layers.dense(100, activation='gelu', input_shape=[30]),
keras.layers.dense(28 * 28, activation='sigmoid'),
keras.layers.reshape([28, 28])
])dropout_ae = keras.models.sequential([dropout_encoder, dropout_decoder])
dropout_ae.compile(loss='binary_crossentropy', optimizer=keras.optimizers.adam())
history = dropout_ae.fit(x_train, x_train, validation_data=(x_valid, x_valid), batch_size=32, epochs=10)
去噪自動編碼器不僅可以用於資料視覺化或無監督學習,而且還可以非常簡單有效地用於影象中的雜訊去除epoch 1/10
1719/1719 [******************************] - 7s 3ms/step - loss: 0.3260 - val_loss: 0.2988
epoch 2/10
1719/1719 [******************************] - 5s 3ms/step - loss: 0.3027 - val_loss: 0.2921
epoch 3/10
1719/1719 [******************************] - 5s 3ms/step - loss: 0.2982 - val_loss: 0.2891
epoch 4/10
1719/1719 [******************************] - 5s 3ms/step - loss: 0.2957 - val_loss: 0.2867
epoch 5/10
1719/1719 [******************************] - 5s 3ms/step - loss: 0.2940 - val_loss: 0.2854
epoch 6/10
1719/1719 [******************************] - 5s 3ms/step - loss: 0.2928 - val_loss: 0.2842
epoch 7/10
1719/1719 [******************************] - 5s 3ms/step - loss: 0.2918 - val_loss: 0.2831
epoch 8/10
1719/1719 [******************************] - 5s 3ms/step - loss: 0.2911 - val_loss: 0.2825
epoch 9/10
1719/1719 [******************************] - 5s 3ms/step - loss: 0.2905 - val_loss: 0.2818
epoch 10/10
1719/1719 [******************************] - 5s 3ms/step - loss: 0.2899 - val_loss: 0.2815
自動編碼器
自動編碼器基本概念 自動編碼器 autoencoder 是神經網路的一種,一般來講自動編碼器包括兩部分 編碼器和解碼器,編碼器和解碼器相互串聯合作,實現資料的降維或特徵學習,現在也廣泛用於生成模型中.在深度學習中,autoencoder可用於在訓練階段開始前,確定權重矩陣的初始值.左側為encode...
自動編碼器(Autoencoder)
autoencoder是一種無監督的學習演算法,主要用於資料的降維或者特徵的抽取,在深度學習中,autoencoder可用於在訓練階段開始前,確定權重矩陣 w 的初始值。神經網路中的權重矩陣 w可看作是對輸入的資料進行特徵轉換,即先將資料編碼為另一種形式,然後在此基礎上進行一系列學習。然而,在對權重...
自動編碼器(Autoencoder)
autoencoder是一種無監督的學習演算法,主要用於資料的降維或者特徵的抽取,在深度學習中,autoencoder可用於在訓練階段開始前,確定權重矩陣w的初始值。或參考 自動編碼器 autoencoder 對於多層神經網路的引數初始化問題,我們可以依次對每一層進行autoencoder。如下圖所...