본문 바로가기

Deep Learning/Hands On Machine Learning34

17.5 Recurrent AutoEncoder Recurrent AutoEncoder * 만약 시계열 데이터나, 텍스트 데이터를 처리해야 할 경우라면, Dense layer로 autoencoder를 구성하는 것 보다 lstm layer를 사용하는 것이 좋은 성능을 기대할 수 있을 것이다. recurrent_encoder = keras.models.Sequential([ keras.layers.LSTM(100, return_sequences=True, input_shape=[28, 28]), keras.layers.LSTM(30) ]) recurrent_decoder = keras.models.Sequential([ keras.layers.RepeatVector(28, input_shape=[30]), keras.layers.LSTM(100, retu.. 2021. 12. 26.
17.4 Convolutional AutoEncoder Convolutional AutoEncoder * 이미지를 다룰 경우 convolution layer를 사용해야 더 좋은 결과를 얻을 수 있다는 것을 알고 있을 것이다. 2D 이미지를 1차원 vector로 flatten해서 Dense layer에 집어넣어 연산하는 것 보다 이미지를 그대로 사용해(정확히는 그대로 사용하는 것 처럼 처리) 공간상의 정보를 보존하는 방법을 사용하는 것이 훨씬 결과가 좋다. * autoencoder도 마찬가지로 convolution layer를 사용하는 것이 이미지 처리에서 성능이 좋다. 이미지 처리를 위한 encoder decoder를 구성할 때 encoder부분에서는 일반적인 CNN 구조를 사용한다. convolution layer를 통과하고 maxpooling layer를.. 2021. 12. 26.
17.3 Stacked AutoEncoder Stacked AutoEncoder란 * 우리가 최초로 17.1 에서 살펴보았던 autoencoder의 구조의 경우 input layer, hidden layer, output layer로 이뤄진 가장 기본적인 autoencoder였다. 여기서 hidden layer의 개수를 늘린 것을 stacked autoencoder 혹은 deep autoencoder라고 부른다. * 이렇게 hidden layer를 늘리는 것은 autoencoder가 더 복잡한 처리를 가능하게 하겠지만, 한 편으로 일반적으로 network가 deep해질 때 생기는 overfitting등의 문제가 발생할 수 있기 때문에 과도하게 deep한 network를 구성하지 않도록 주의해야 한다. 케라스를 이용하여 stacked autoenco.. 2021. 12. 23.
17.2 Undercomplete linear AutoEncoder로 PCA 수행하기 * AutoEncoder가 linear activation function만 활용하고, cost function이 MSE라면, 결국 PCA를 수행하는 것과 같다. np.random.seed(4) def generate_3d_data(m, w1=0.1, w2=0.3, noise=0.1): angles = np.random.rand(m) * 3 * np.pi / 2 - 0.5 data = np.empty((m, 3)) data[:, 0] = np.cos(angles) + np.sin(angles)/2 + noise * np.random.randn(m) / 2 data[:, 1] = np.sin(angles) * 0.7 + noise * np.random.randn(m) / 2 data[:, 2] = data.. 2021. 12. 23.