본문 바로가기
인공지능/Deep Learning

[DL] RNN(Recurrent Neural Network : 순환 신경망)

by 유일리 2023. 11. 3.
RNN이란?

다층 신경망의 각 층의 출력이 자기 층의 입력으로 그대로 돌아오는 것처럼 자기 루프(self-loop)를 추가하는 것

위의 그림처럼, 어떤 샘플을 처리할 때 바로 이전에 사용했던 데이터를 재사용한다. A, B, C 3개의 샘플을 처리하는 순환 신경망이 있다고 가정할 때, O는 출력된 결과. 첫 번째 샘플 A를 처리하고 난 출력(OA)이 다시 뉴런으로 돌아간다. 이 출력에는 A에 대한 정보가 다분히 들어있다. 그 다음 B를 처리할 때 앞에서 A를 사용해 만든 출력 OA를 함께 사용한다. 따라서 OA와 B를 사용해서 만든 OB에는 A에 대한 정보가 어느 정도 포함되어 있을 것이다. 그다음 C를 처리할 때는 OB를 함께 사용한다. 이렇게 OC에는 B와 A에 대한 정보가 담겨 있고, A에 대한 정보보다는 B에 대한 정보가 많을 것이다. 그래서 순환 신경망에서는 '이전 샘플에 대한 기억을 가지고 있다'고 종종 말한다. 이렇게 샘플을 처리하는 한 단계를 타임스탭이라고 한다. 

 

순환 신경망에서는 특별히 층을 셀(cell)이라고 부른다. 한 셀에는 여러 개의 뉴런이 있지만 완전 연결 신경망과 달리 뉴런을 모두 표시하지 않고 하나의 셀로 층을 표현한다. (은닉 상태가 모두 뉴헌에 순환되기 때문에 완전 연결 신경망처럼 그림으로 표현하기 어려움.) 셀의 출력을 은닉 상태라고 부른다. 일반적으로 은닉층의 활성화 함수로는 하이퍼볼릭 탄젠트 함수가 많이 사용된다. 

 

합성곱 신경망과 같은 피드포워드 신경망에서 뉴런은 입력과 가중치를 곱한다. 순환 신경망도 동일하지만 뉴런은 이전 타임스텝의 은닉 상태에 곱해지는 가중치가 하나 더 있다. 셀은 입력과 이전 타임스텝의 은닉 상태를 사용하여 현재 타임스텝의 은닉 상태를 만든다. 

댓글