본문 바로가기

Deep Learning/Recurrent Neural Networks5

Seq2seq Model (Sequence to Sequence Model) 개요 이번 포스팅에서는 Sequence to Sequence (Seq2seq) Model에 대해서 알아보겠습니다. Seq2seq 모형은 LSTM(또는 GRU) 기반 모형으로 고정된 길이의 sequence를 입력받아, 입력 sequence에 알맞은 길이의 sequence를 출력해주는 모형으로 2014, Google et. al에 최초 제안되었습니다. 왜? Deep Neural Networks (DNNs)은 다양한 분야에서 좋은 성과를 거두어 왔습니다. 다만 DNNs은 고정된 차원의 feature와 고정된 차원의 출력에 특화된 방법입니다. 그래서 입력과 출력의 길이가 그때 그때 다른 데이터를 학습하고, 이를 응용하는 문제에는 적합하지 않습니다. 대표적으로 기계 번역 문제를 생각할 수 있습니다. 기계 번역은 .. 2020. 4. 20.
RNN Tensorflow + Keras 이번 포스팅은 Tensorflow의 keras를 이용하여 RNN의 다양한 구조를 구현해보는 것이 목표입니다. RNN에는 크게 세 가지 방법이 있는데 simple RNN, LSTM, GRU가 있습니다. 이번 실습은 simple RNN을 이용하여 many-to-one, many-to-many, stacked many-to-one, stacked many-to-many 네 가지를 살펴보겠습니다. simple RNN을 이용하여 설명하지만 단순히 아래 등장할 코드에서 simple RNN을 LSTM, GRU로 바꾸어 주면 내용은 같기때문에 응용하는데 큰 문제는 없을 것 입니다. import numpy as np import tensorflow as tf from tensorflow import keras Dimen.. 2019. 12. 7.
Gated Recurrent Units (GRU) Gated Recurrent Units (GRU) GRU는 게이트 메커니즘이 적용된 RNN 프레임워크의 일종으로 LSTM에 영감을 받았고, 더 간략한 구조를 가지고 있습니다. 아주 자랑스럽게도 한국인 조경현 박사님이 제안한 방법입니다. (Cho et al., 2014) GRU는 LSTM에 영감을 받은 만큼 굉장히 유사한 구조로 LSTM을 제대로 이해하고 있으면 쉽게 이해할 수 있습니다. LSTM은 이곳에 자세히 정리되어 있으니 가볍게 읽고 이어질 포스팅을 읽으면 더 유익할 것 같습니다. GRU의 작동원리 LSTM과 같은 그림을 이용해서 GRU를 이해해보겠습니다. 전체적인 흐름은 아래와 같습니다. 뭔가 되게 복잡해보이지만, LSTM을 이해하셨다면 생각보다 단순합니다. 하나씩 단계별로 살펴보도록 하겠습니다... 2019. 8. 15.
Long Short-Term Memory (LSTM) 이번 포스팅에서는 Long Short-Term Memory (LSTM)에 대하여 작성하고자 합니다. LSTM은 이전 포스팅에서 다룬 RNN의 발전된 형태입니다. RNN 구조의 큰 특징은 과거의 정보를 은닉층에 저장하는 것인데, Bengio et al., 1994에 Long-term dependency 문제로 과거의 정보를 충분히 활용할 수 없음을 알게되었습니다. 위 RNN의 단점을 보안한 모형 LSTM을 Hochreciter et al., 1997이 제안합니다. 먼저 Long-term dependency 문제가 어떤 것인지 살펴보고 LSTM의 구조와 작동원리에 대해서 살펴보도록 하겠습니다. The Problems of Long-term Dependencies 장기의존성 문제(the problems of .. 2019. 8. 15.
Recurrent Neural Networks (RNN) RNN이란? Recurrent Neural Networks(RNN)은 순차적 데이터를 분석하기 위한 딥러닝 구조로 Rumelhart et al., 1986에 근간을 두고있습니다. Deep Neural Network (DNN)은 은닉층 내 노드간에 연결이 안되어 있지만, RNN은 은닉층 내 노드를 연결하여, 이전 스텝의 정보를 은닉층 노드에 담을 수 있도록 구성했습니다. 위 그림에서 볼 수 있듯 $x^{(1)}$으로 부터 $h^{(1)}$을 얻고 다음 스텝에서 $h^{(1)}$과 $x^{(2)}$을 이용하여 과거 정보와 현재 정보 모두를 반영할 수 있습니다. 은닉층의 노드의 값을 $t+1$ 시점으로 넘겨주고, $t+1$ 시점의 입력을 받아서 계산하는 작업을 반복적으로 진행하여 "Recurrent" 이름이 .. 2019. 8. 13.