RNN(3)
-
Pytorch로 시작하는 딥러닝 입문(07-04. 문자 단위 RNN: Char RNN)
모든 시점의 입력에 대해서 모든 시점에서 출력을 하는 다대다 RNN ♣ 문자 단위 RNN입출력의 단위를 단어 레벨이 아니라 문자 레벨로 하여 RNN을 구현한 것을 문자 단위 RNN이라고 한다. RNN 구조는 같지만 입, 출력의 단위가 문자로 바뀌었을 뿐이다. 필요한 도구 import 하기 훈련 데이터 전처리하기문자 시퀀스 apple을 입력받으면 pple!를 출력하는 RNN을 구현한다. RNN의 동작을 이해하는 것이 목적이다. 입력 데이터와 레이블 데이터에 대해서 문자 집합(vocabulary)를 만든다. 이 문자 집합은 중복을 제거한 문자들의 집합이다. 현재 문자 집합에는 총 5개의 문자가 있다. !, a, e, l, p이다. 이제 하이퍼파라미터를 정의하는데, 이때 입력은 원-핫 벡터를 사용할 것이므로..
2024.06.24 -
Pytorch로 시작하는 딥러닝 입문(07-02. 장단기 메모리(Long Short-Term Memory: LSTM))
♣ 바닐라 RNN(기본 RNN)의 한계바닐라 RNN은 비교적 짧은 시퀀스에 대해서만 효과를 보인다. time step이 길어질수록 앞의 정보가 뒤로 충분히 전달되지 못하는 현상이 발생한다. 위의 그림은 첫 번째 입력값인 x1이 뒤로 갈수록 색이 점점 옅어지는 것으로 정보량이 손실되어 가는 것을 의미한다. 가장 중요한 정보가 시점의 앞쪽에 위치한다면 바닐라 RNN에서는 엉뚱한 출력값을 내놓을 수 있다. 이를 장기 의존성 문제(the problem of Long-Term Dependencies)라고 한다. ♣ 바닐라 RNN 내부 탐색하기 위 그림은 바닐라 RNN의 내부 구조이다(편향 b는 생략). 바닐라 RNN은 xt와 ht-1 이라는 두 개의 입력이 각각의 가중치와 곱해져서 메모리 셀의 입력이 된..
2024.06.23 -
Pytorch로 시작하는 딥러닝 입문(07-01. 순환 신경망, 깊은 순환 신경망(Deep Recurrent Neural Network))
RNN도 다수의 은닉층을 가질 수 있다. 아래 그림은 순환 신경망에서 은닉층이 1개 더 추가되어 은닉층이 2개인 깊은 순환 신경망의 모습을 보여준다. 첫 번째 은닉층은 다음 은닉층에 모든 시점에 대해서 은닉 상태값을 보내주고 있다. 깊은 순환 신경망을 파이토치로 구현할 때는 nn.RNN( )의 인자인 num_layers에 값을 전달하여 층을 쌓는다. 아래는 층이 2개인 깊은 순환 신경망의 예시이다. 첫 번째 리턴값인 outputs의 크기는 층이 한 개였던 RNN 셀 때와 달라지지 않았다. 이는 마지막 층의 모든 시점의 은닉 상태들을 보여준다. 위의 형태를 보면 첫 번째 행은 첫 번째 input이 두 번째 layer까지를 통과하면서 얻은 은닉 상태이다. 이 시점에서는 아직 다른 input들은 layer..
2024.06.23