본문 바로가기

Deep Learning71

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.
17.1 효율적인 데이터 표현 AutoEncoder introduction * 위 두 개의 sequence를 완벽하게 외워야 된다고 생각해보자. 얼핏 보기엔 첫 번째 sequence가 더 짧기 때문에 더 외우기 쉬울 것으로 보인다. 하지만 자세히 들여다보면, 두 번째 sequence는 50부터 2씩 14까지 줄어드는 pattern을 가지고 있기 때문에 오히려 두 번째 sequence가 더 외우기 쉬울 것이다. * 이와 같이 긴 sequence의 경우 pattern을 찾아 기억하는 것이 더 쉽다. 우리가 사용할 autoencoder 또한 마찬가지이다. * AutoEncoder는 기본적으로 Encoder(recognition network), Decoder(generative network)부분으로 구분된다. Encoder는 입력된 정보.. 2021. 12. 23.
RNN을 이용한 디코더-인코더 - Seq2Seq 시퀀스 투 시퀀스(sequence to sequence) * seq2seq model은 입력된 시퀀스로부터 다른 도메인의 시퀀스를 출력하는 데 주로 쓰인다. 예를 들어 한글을 입력하면(domain : 한글) 영어를 출력하는(domiani : 영어) 모델이나, 사용자가 입력을 집어넣으면(domain : 질문) 적절한 대답을 하는(domain : 대답) 챗봇 등이 될 수 있다. 이번 포스팅에서는 seq2seq model에 대해 살펴보되 번역기의 예를 들어 살펴보겠다(보통 가장 많이 사용하는 분야가 번역이기도 하다). 대략적인 구성 * seq2seq model의 인코더 및 디코더는 각각의 RNN모델로 구성되어 있다. 그렇다고 vanilla RNN을 그냥 사용하는 것은 아니고 성능 문제로 인해서 보통 LSTM이.. 2021. 12. 23.
글자 단위 RNN(Char RNN) * 이전까지 포스팅했던 RNN, LSTM 모델들은 모두 단어 vector를 입력으로 받는 모델이었다. 이번 포스팅에서는 단어를 입력으로 받는 것이 아닌 글자 기반 RNN, 글자(Character)를 입력으로 받는 RNN모델에 대해서 살펴보겠다. 1. 글자 단위 RNN 모델(Char RNNLM) 데이터셋 로드 import numpy as np import urllib.request from tensorflow.keras.utils import to_categorical urllib.request.urlretrieve('http://www.gutenberg.org/files/11/11-0.txt', filename='11-0.txt') f = open('11-0.txt', 'rb') #read binary .. 2021. 12. 18.