본문 바로가기

전체 글101

Sparse Representation, Dense Representation Word Embedding * word embedding은 단어를 벡터로 표현하는 방법이다. 대표적인 방법으로는 LSA, Word2Vec, FastText, Glove등이 있다. Sparse Representation(희소 표현) * sparse representation은 단어를 sparse vector로 표현하는 방식을 뜻한다. sparse vector는 vector의 대부분이 0으로 이뤄진 vector를 뜻하며, 우리가 자주 사용했던 one-hot encoding의 결과 vector가 바로 이 sparse vector라고 할 수 있다. * sparse vector는 대부분이 0으로 이뤄 있기 때문에 공간적인 낭비가 심하다. 예를 들어 corpus에 단어가 10,000개가 있다고 가정해보자. 단어 벡.. 2021. 12. 27.
17.6 Denoising AutoEncoder Denoising AutoEncoder * autoencoder를 훈련시킬 때 일부러 원본에 noise를 추가하는 방식을 사용하면 더욱 효율적인 결과를 얻을 수 있게 된다. 더 자세히 설명하자면, autoencoder의 encoder부분에서 원본 데이터를 입력 받은 후 noise(Gaussian noise같은 random한 noise)를 추가하거나, dropout을 사용해 원본 데이터의 일부를 의도적으로 훼손하는 방법을 사용해 특징 vector를 구성하고, 이 특징 vector로부터 decoder가 원본 데이터를 복원하는 훈련을 하는 방법을 사용하는 것이다. 1) Gaussian noise 사용 tf.random.set_seed(42) np.random.seed(42) denoising_encoder =.. 2021. 12. 26.
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.