Loading...
2021. 11. 9. 22:05

밑바닥부터 시작하는 딥러닝 - seq2seq(3)

엿보기(Peeky) seq2seq의 두 번째 개선은 엿보기(Peeky)이다. Encoder 동작은 입력 문장(문제 문장)을 고정 길이 벡터 h로 변환한다. 이때 h 안에는 Decoder에게 필요한 정보가 모두 담겨 있다. 그러나 현재의 seq2seq는 아래 그림과 같이 최초 시각의 LSTM 계층만이 벡터 h를 이용하고 있다. 이 중요한 정보인 h를 더 활용할 수는 없을까? 여기서 두 번째 개선안으로 중요한 정보가 담긴 Encoder의 출력 h를 Decoder의 다른 계층에게도 전해주는 것이다. 위의 그림과 같이 모든 시각의 Affine 계층과 LSTM 계층에 Encoder의 출력 h를 전해준다. 개선 전 그림과 비교해보면 기존에는 하나의 LSTM만이 소유하던 중요 정보 h를 여러 계층이 공유함을 알 수 ..

2021. 11. 5. 21:47

밑바닥부터 시작하는 딥러닝 - seq2seq(2)

seq2seq 클래스 이어서 seq2seq 클래스를 구현할 것이다. 이 클래스가 하는 일은 Encoder 클래스와 Decoder 클래스를 연결하고, Time Softmax with Loss 계층을 이용해 손실을 계산하는 것이다. class seq2seq(BaseModel): def __init__(self, vocab_size, wordvec_size, hidden_size): V, D, H = vocab_size, wordvec_size, hidden_size self.encoder = Encoder(V, D, H) self.decoder = Decoder(V, D, H) self.softmax = TimeSoftmaxWithLoss() self.params = self.encoder.params + ..

2021. 11. 4. 20:58

밑바닥부터 시작하는 딥러닝 - seq2seq(1)

이번 글에서는 시계열 데이터를 다른 시계열 데이터로 변환하는 모델을 생각해볼 것이다. 이를 위한 기법으로, 2개의 RNN을 이용하는 seq2seq라는 기법을 살펴볼 것이다. seq2seq의 원리 seq2seq를 Encoder-Decoder 모델이라고도 한다. Encoder는 입력 데이터를 인코딩하고, Decoder는 인코딩된 데이터를 디코딩(복호화)한다. 더보기 인코딩(부호화)이란 정보를 어떤 규칙에 따라 변환하는 것이다. 문자 코드를 예로 들면, 'A'라는 문자를 '1000001'이라는 이진수로 변환하는 식이다. 한편, 디코딩(복호화)이란 인코딩된 정보를 원래의 정보로 되돌리는 것이다. 문자코드를 예로 들면, '1000001'이라는 비트 패턴을 'A'라는 문자로 변화하는 일이 바로 디코딩이다. 그럼 s..