728x90
해당 게시물은 "혁펜하임의 AI DEEP DIVE"를 수강하고 작성되었습니다.
RNN은 연속적인 데이터를 처리하는데 효과적이다.
위 사진과 같이
- 우선 처음 입력 데이터를 가지고 노드의 값을 만든다.
- 두번째 입력 데이터로 노드를 만들 때 이전에 만들어진 노드의 값도 입력으로 넣는다.
- 세번째 입력 데이터로 노드를 만들 때 이전에 만들어진 노드의 값도 입력으로 넣는다.
- 반복...
즉 이렇게 만들어진 노드들은 해당 time step에 해당하는 입력 데이터와, 그 전 입력 데이터와, 그 입력 데이터로 만들어진 노드가 들어있다.
하지만 마지막 출력값에 대해 처음 입력값이 미치는 영향은 어떨까?
RNN은 activation으로 tanh를 사용하며 이를 미분했을때 최대값은 1이다. 그럼 backpropagation시 tanh의 미분값이 timestep이 커질수록 계속 곱해질텐데, 이는 0으로 수렴한다. (멀수록 잊혀진다.)
또한 forwardpropagation시 입력값은 activation을 계속해서 거치므로 이 또한 0으로 수렴한다. (갈수록 흐려진다.)
이를 RNN의 "장기 의존성 문제"라고 부른다.
하나의 입력에 대해 여러개의 출력을 내는 일대다 형식 (image captioning 등..)
여러 입력이 들어가서 하나의 출력을 내는 다대일 형식 (감정 분류 등..)
여러 입력이 들어와서 여러 개의 출력을 내는 다대다 형식 (번역 등..하지만 seq2seq를 많이 쓴다)
RNN은 위와 같이 분류할 수 있다.
728x90
'AI' 카테고리의 다른 글
[pytorch] 선형 회귀 (Linear Regression) 예제 코드 (0) | 2024.11.19 |
---|---|
seq2seq (시퀀스 to 시퀀스) (0) | 2024.09.12 |
VGGnet (0) | 2024.09.12 |
Padding, Stride, Pooling (0) | 2024.09.11 |
CNN (Convolution Neural Network) (1) | 2024.09.10 |