취향저격 - RNN(1)

hsoh0423·2021년 3월 22일
1

취향저격 프로젝트

목록 보기
5/10
post-thumbnail

이번 포스터에서는 프로젝트에서 사용했던 순환 신경망RNN(Recurrent Neural Network)에 대해 간단하게 설명하고자 한다.

프로젝트 내 RNN

프로젝트 초기에는 데이터들의 줄거리에 장르로 태그를 달아서 학습을 시킨 후 사용자가 입력한 문장이 어느 장르에 속하는지를 찾아야 하겠다는 생각을 했었다.

첫 번째 프로젝트 아이디어

  1. (줄거리 문장 - 장르) 쌍으로 데이터를 학습
  2. 사용자가 입력한 문장이 어떤 장르인지 파악
  3. 해당 장르안에서 사용자가 입력한 문장과 가장 유사한 영화들을 추천

이런 방식으로 프로젝트를 진행하려 했다. 이때 1번의 데이터를 학습시킬 때 RNN을 사용하였다. 자연어 프로젝트가 처음이면서 나에겐 인공지능 프로젝트가 처음이었기 때문에 기초 지식이 많이 부족하다는 것을 이 단계에서 느끼기도 했다.

RNN

구조

RNN(Recurrent Neural Network)은 시퀀스 모델이다. 입력과 출력을 시퀀스 단위로 처리하는 모델이다. 과거의 정보를 현재에 반영하는 형태이다. 딥러닝에 있어서는 가장 기본적인 시퀀스 모델이기도 하다.
(이러한 이유 때문에 가장 먼저 사용해본 신경망이기도 하다.)
기본 신경망의 구조는 X\mathbf{X}를 받으면 Y\mathbf{Y}를 출력해주는 형태였다면, RNN의 경우에는 Xt\mathbf{X}_t를 입력받고, 직전의 은닉상태인 ht1\mathbf{h}_{t-1}를 참조하여 현재 상태인 ht\mathbf{h}_t를 결정하는 작업을 time-step에 걸쳐 수행하는 것이다.

이미지 출처

이렇게 이전 은닉상태의 ht1\mathbf{h}_{t-1}는 현재 RNN의 Xt\mathbf{X}_t와 함께 입력으로 들어가게 되고 ht\mathbf{h}_t를 결과로 출력한다. 그럼 각 ht\mathbf{h}_t는 정답인 Yt\mathbf{Y}_t와 비교하여 손실 L\mathbf{L}을 계산하게 된다.

문제점

RNN은 time-step이 길어질수록 앞의 데이터를 기억하지 못하는 단점이 있다. 즉 학습 데이터의 길이가 길어질 수록 초기의 정보를 현재까지 전달하기 힘들다. 오차를 줄이기 위한 역전파 중 gradient 값이 소실 되기 때문이고, 이를 Vanishing Gradient(기울기 소실)라고 한다. 이는 RNN이 활성화 함수tanh를 사용하기 때문이다.

마치며

이번 포스트에서는 RNN에 대해 아주 간단하게 포스팅 해보았다. 이번 포스팅에서는 다루지 않았지만, 오차 역전파, 기울기 소실, 활성화 함수 등 자세한 내용은 나중에 취향저격 프로젝트의 포스팅을 마치고 시간이 남는다면 포스팅 해보고 싶은 내용이다.

profile
커피를 좋아하는 평범한 대학생

0개의 댓글