Loading...
2021. 11. 4. 20:58

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

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

2021. 11. 2. 21:30

밑바닥부터 시작하는 딥러닝 - 게이트가 추가된 RNN(4)

LSTM 계층 다층화 RNNLM으로 정확한 모델을 만들고자 한다면 많은 경우 LSTM 계층을 깊게 쌓아 효과를 볼 수 있다. LSTM을 2층, 3층 식으로 여러 겹 쌓으면 언어 모델의 정확도가 향상될 수 있다. LSTM을 2층으로 쌓아 RNNLM을 만든다고 하면 위의 그림처럼 된다. 첫 번째 LSTM 계층의 은닉 상태가 두 번째 LSTM 계층에 입력된다. 이와 같은 요령으로 LSTM 계층을 몇 층이라도 쌓을 수 있으며, 그 결과 더 복잡한 패턴을 학습할 수 있게 된다. 피드포워드 신경망에서 계층을 쌓는 것이다. 몇 층이나 쌓는 거는 하이퍼파라미터에 관한 문제이다. 쌓는 층 수는 하이퍼파라미터이므로 처리할 문제의 복잡도나 준비된 학습 데이터의 양에 따라 적절하게 결정해야 한다. 드롭아웃에 의한 과적합 억제..

2021. 11. 1. 22:10

밑바닥부터 시작하는 딥러닝 - 게이트가 추가된 RNN(3)

Time LSTM 구현 다음으로 Time LSTM 구현을 해볼 것이다. Time LSTM은 T개분의 시계열 데이터를 한꺼번에 처리하는 계층이다. 전체 그림은 아래 그림과 같다. RNN에서는 학습할 때 Truncated BPTT를 수행했다. Truncated BPTT는 역전파의 연결은 적당한 길이로 끊었지만, 순전파의 흐름은 그대로 유지한다. 위의 그림처럼 은닉 상태와 기억 셀을 인스턴스 변수로 유지할 것이다. 이렇게 하여 다음번에 forward()가 불렸을 때, 이전 시각의 은닉 상태에서부터 시작할 수 있다. Time LSTM 계층 구현을 코드로 알아보자. class TimeLSTM: def __init__(self, Wx, Wh, b, stateful = False): self.params = [Wx,..

2021. 10. 30. 15:15

밑바닥부터 시작하는 딥러닝 - 게이트가 추가된 RNN(2)

기울기 소실과 LSTM LSTM의 인터페이스 위의 그림은 계산 그래프를 단순화하는 도법이다. 행렬 계산 등을 하나의 직사각형 노드로 정리해 그리는 방식이다. tanh 계산으로 직사각형 노드를 하나 그린다. 이 직사각형 노드 안에 행렬 곱과 편향의 합, 그리고 tanh 함수에 의한 변환이 모두 포함된 것이다. 위의 그림에서 보듯이, LSTM 계층의 인터페이스에는 c라는 경로가 있다는 차이가 있다. c는 '기억 셀'이라 하며, LSTM 전용의 기억 메커니즘이다. 기억 셀의 특징은 데이터를 자기 자신으로만 주고받는다는 것이다. 즉, LSTM 계층 내에서만 완결되고, 다른 계층으로는 출력하지 않는다. 반면, LSTM의 은닉 상태 h는 RNN 계층과 마찬가지로 다른 계층으로 출력된다. LSTM 계층 조립하기 LS..

2021. 10. 29. 21:09

밑바닥부터 시작하는 딥러닝 - 게이트가 추가된 RNN(1)

RNN은 순환 경로를 포함하며 과거의 정보를 기억할 수 있었다. 구조가 단순하여 구현도 쉽게 가능했다. 요즘에는 RNN 대신 LSTM이나 GRU라는 계층이 주로 쓰인다. LSTM이나 GRU에는 '게이트'라는 구조가 더해져 있는데, 이 게이트 덕분에 시계열 데이터의 장기 의존 관계를 학습할 수 있다. RNN의 문제점 1. 기울기 소실 또는 기울기 폭발 언어 모델은 주어진 단어들을 기초로 다음에 출현할 단어를 예측하는 일을 한다. "?"에 들어가는 단어는 "Tom"이다. RNNLM이 이 문제에 올바르게 답하려면, 현재 맥락에서 "Tom이 방에서 TV를 보고 있음"과 "그 방에 Mary가 들어옴"이란 정보를 기억해둬야 한다. 이런 전보를 RNN 계층의 은닉 상태에 인코딩해 보관해야 한다. 위의 그림과 같이 정..