<RNN; Recurrent neural network>
RNN = 순환신경망
- 현재 스텝의 출력이 다음 스텝의 입력이 됨
- 정보가 계속 도는 구조
- 매 시퀀스에서 RNN 모델은 현재의 입력뿐 만 아니라 이전 스텝의 요소들을 기억하고 활용함
- 고정길이보다 임의의 길이의 시퀀스를 다룰 때 효과적 <== NLP처럼 자연어 처리할 때 많이 쓰임
x와 y 사이 노드에서 sum 과 활성화 함수 표시.
활성화함수 수행 후 다시 x쪽으로 화살표 들어옴 ==> 순환구조
t-3시간 때 x에서 인풋 y쪽으로 아웃풋 그 y는 y(t-3)
이것은 다시 x(t-2)와 함께 다시 한번 인풋으로 들어감
아웃풋 신호가 다시 인풋으로 들어감
메모리 셀 = x와 y사이의 은닉 셀
1) seq to seq : 가장 기본적
2) seq to vector
입력은 x0~x3로 4개, but 출력은 1개
1번은 모든 데이터가 들어와서 현재시간에 모든 데이터를 출력으로 잡아줘야함
2번은 과거의 데이터를 이용해서 미래를 예측할 때,
과거의 데이터를 이용해서 현재 출력 값을 잡을 때. 이럴 때 쓰임
3) vector to seq
입력은 하나인데 출력은 여러개
과거의 한 데이터만 갖고도 미래의 여러 가지 사건이나 연달아 나오는 여러 가지 사건을 예측할 때 필요
4) delayed seq to seq <- 가장 주의해야함
여러 가지 인풋 x0, x1
당장 아웃풋을 내진 않음
시간이 지난 후 아웃풋 y0, y1, y2를 냄
y0, y1, y2를 다시 다른 구조에서 입력을 새로 받지 않고 과거에 받았던 입력(= 인코더)만을 사용해서 아웃풋을 냄(=디코더)
이런 구조를 인코더, 디코더 구조
이러한 RNN을 어떻게 학습시킬까? => 역전파 이용할 수밖에없음
근데 이름은 바꿈, BPTT로.
차이점은 역전파 알고리즘인 것은 동일한데,
RNN이라는 구조자체가 순환신경망으로 되어있어서 입력과 출력이 계속 순환되는 구조.
근데 이 구조를 시간 축으로 펼쳐보면 사실 그렇게 특별한 구조가 x
일반적인 신경망 구조와 매우 유사하기 때문에 그대로 사용할 수 있음.
만약 출력이 y2, y3, y4가 있을 때 이 각각 출력에 대해 에러 계산 가능.
에러를 계산 후 연결된 이전 단계의 네트워크의 Weight를 계속 계산해줌
이 방식을 동일하게 계속 사용. 이렇게 RNN을 학습시킬 수있음
※ 부산대 에듀윗 강의를 듣고 작성했습니다.
'자습 > 딥러닝' 카테고리의 다른 글
[딥러닝] 벡터화2 (0) | 2021.02.06 |
---|---|
[딥러닝] 비지도학습 (0) | 2021.02.06 |
[딥러닝] 활성화 함수 (0) | 2021.02.06 |
[딥러닝] 벡터화 (0) | 2021.02.06 |
[딥러닝] 딥러닝을 위한 자주 쓰이는 파이썬 문법 참고 (0) | 2021.02.06 |