11. [딥러닝] RNN (Recurrent Neural Network)

김범수·2022년 6월 2일
0

머신러닝, 딥러닝

목록 보기
10/10


RNN (Recurrent Neural Network)

RNN(Recurrent Neural Network) 또한 일반 신경망처럼 Training Data를 입력으로 Feed Forward를 수행하고 손실함수의 최소값을 찾기위해 Optimizer를 이용하여 가중치와 바이어스를 업데이트하는 구조로 되어있습니다.

하지만 은닉층에서 일반 신경망과는 두가지 차이점을 볼 수 있습니다.

첫번째 차이점으로는 일반 신경망에서는 ReLU 함수를 이용하지만 RNN에서는 tanh 함수를 활성화 함수로 사용하고 있으며, 두번째 차이점으로는 RNN의 가장 중요한 특징이라고 할 수 있는 순환구조가 은닉층 안에 있다는 점입니다.

이러한 순환 구조는 순서가 있는 데이터를 처리하는데 강점을 가집니다.

순서(Sequence)가 있는 데이터

I work at google     ->     나는 구글에서 근무한다.

순서가 있는 데이터란 문장이나 음성 같은 연속적인 데이터를 말하는데, 이러한 데이터는 위 예시처럼 문장에서 놓여진 위치(순서)에 따라 의미가 달라지는 것을 알 수 있습니다.

즉, 현재 데이터의 의미를 알기 위해서는 이전에 놓여있는 과거 데이터도 알고 있어야합니다.

=> RNN은 은닉충내의 순환 구조를 이용하여 과거의 데이터를 기억하여 새롭게 입력되는 데이터와 과거 데이터를 연결 시켜서 그 의미를 알아내는 기능을 가지고 있습니다.

  • RNN 동작원리 (I work at google)

첫번째 데이터 I 가 은닉층으로 들어올 때는 과거의 데이터가 없고 대명사일 확률이 높기 때문에 대명사라고 판단이 진행됩니다.

두번째 데이터인 work가 은닉층으로 들어올 때는 순환 구조에서 이전의 데이터 I를 기억하고 있기 때문에, 현재 데이터 work와 과거 데이터 I의 계산값을 만들어내고 은닉층에서는 I의 영향을 받은 work를 기억하게 됩니다. 출력값으로는 과거의 데이터인 I가 대명사이기 때문에 다음에 오는 work는 동사가 올 확률이 높다고 판단하게 됩니다.

세번째 데이터로 at이 은닉층으로 들어오게 되면 I의 영향을 받은 work가 과거의 데이터로 존재하여 계산값을 만들어내는데 영향을 주게되고 I work 후에 전치사가 올 확률이 높다고 판단하게 됩니다.

이처럼 RNN은 과거의 데이터를 기억하여 현재의 데이터를 판단하는데 영향을 주게 되는데 이 때, 순수한 과거의 데이터라기보단 즉 순수한 work가 아닌 I의 영향을 받은 work라는 점이 중요한 포인트라고 생각됩니다.

이러한 RNN의 구조를 시간 개념을 포함시켜 나타낸 그림입니다.

즉, 문장이나 음성 같은 순서가 있는 데이터라는 것은 시간의 경과에 따라서 데이터가 순차적으로 들어온다는 것과 같은 의미라는 것을 알 수 있습니다.

  • RNN 동작원리 정량적 분석

순환 구조를 가지는 은닉층의 출력값을 시간 개념을 포함시켜 일반적인 수식으로 나타낸 것입니다.

현재 입력데이터에 대한 은닉층에서의 출력값을 (현재 입력데이터와 현재 입력 데이터에 대한 가중치와의 행렬곱 + 과거 데이터와 순환 구조에 의한 가중치와의 행렬곱 + 바이어스)의 tanh에 출력값으로 나타낼 수 있습니다.

만약 현재 입력 데이터가 첫번째 데이터라면 과거 데이터, 즉 과거 입력에 대한 state는 0이 될 것 입니다.

RNN과 같은 순환 구조는 이미지 프로세싱 분야에서 많이 적용될 것 같다는 느낌을 받았습니다.

이미지 데이터 또한 이전, 이후 값과 비슷한 데이터를 가질 확률이 높고 이미지 프레임이 진행되면서도 주변 픽셀, 즉 입력 순으로 과거 미래 데이터와 시간적 상관 관계를 가지기 때문에 RNN을 이미지 프로세싱에 적용한다면 좋은 성능을 얻을 수 있을 것 같습니다.

출처 : 유튜브 NeoWizard 채널 머신러닝/딥러닝 강의

profile
iOS Developer

0개의 댓글