딥러닝 왕초보 나를 위한 기초! 2.5장 Deep Learning Basic2 RNN
이번에는 2.5장으로 다시 설명을 이어가겠습니다!
2장에서는 논리게이트, 입력층, 은닉층, 출력층, 퍼셉트론, 활성화 함수에 대해 공부했습니다.
이걸 기반으로 2.5장 DNN을 설명하겠습니다!
RNN은 Recurrent Neural Network의 줄임말 입니다! 순환 신경망이라고 합니다!
RNN은 입력과 출력을 시퀀스(Sequence) 단위로 처리합니다!
시퀀스란 문장 같은 단어가 나열된 것을 뜻합니다. 즉! 데이터를 순서대로 하나씩 나열하여 나타낸 데이터 구조입니다!

첫 번째로 one-to-many입니다! 위에 그림을 보면 사진하나를 통해 이미지 캡셔닝을 사용하여 사진의 제목을 단어로 나열하여 시퀀스를 출력입니다!
다음은 many-to-many입니다! 이 경우에는 시퀀스 입력에 대해 시퀀스를 출력을 하는 경우가 많은데 예를 들어 대한민국,일본,중국 등의 특징을 분류하여 나라 라는 카테고리에 저장... 이런 식으로 입력 출력을 하게 됩니다!
이러한 many-to-many방식은 번역기,챗봇등에 많이 사용이 됩니다!
RNN학습에는 back propagation의 확장인 BPTT가 사용됩니다!
그림에 보이듯이 E는 Error를 뜻하게 됩니다!
수식과 같이 RNN에서는 이전 단계의 은닉층, 은닉 상태 모든 시점의 Error를 활용하여 학습을 할 수 있습니다!
여기 식에서 t값에 3을 넣어 보겠습니다!
t가 3인 시점으로 BPTT가 이루어져 위에 식이 됩니다.
가중치 W가 모든 시점에서 메모리 셀의 출력 값(s)을 구할 때 사용되었기 때문에 위의 수식에서 처럼 k=0부터 3까지 계산하여 합하는 것입니다.
하지만 DNN에도 이러한 단점이 있습니다... 위에 처럼 학습을 시키게 되는 경우 계속 전파가 일어나.. 커지고 길어지면 길어질수록 기울기가 0에 가까워져 기울기 소실이 발생하게 됩니다. ㅠ.ㅠ
좋은 점도 있지만 치명적인 단점도 있네요...
이상으로 2장과 2.5장을 모두 끝내겠습니다!!
제 글을 읽어주셔서 감사합니다!