본문 바로가기
딥러닝

순환신경망(RNN)이 언어 모델로 사용된 이유

by 데이널 2024. 3. 27.

처음에 확률적 언어모델기반으로 발전했습니다. CBOW 모델로 학습해서 손실함수(말뭉치 전체 손실함수 총합)를 최소화하는 가중치 매개변수를 업데이트 했습니다. 이런 방법은 맥락으로 타깃을 추측 가능하나, 맥락 안에 단어 순서는 무시된다는 한계있습니다. 
 

 

CBOW 모델의 문제점

CBOW 모델도 맥락의 크기를 키울 수는 있겠죠. 하지만 두가지 측면의 문제점이 존재합니다. 첫째, 단어의 순서를 반영하지 않는다는 것이고, 둘째는 단어가 늘어날수록 가중치가 증가하는 점입니다. 

이런 점을 보완하기 위해  대안으로 나온것이 순환 신경망(RNN)입니다. RNN은 맥락이 아무리 길어도 그 맥락의 정보를 기억하는 구조입니다. 그리고 순서가 있는 시계열 데이터에도 유연하게 대응 가능하죠. 그렇기 때문에 문장의 정보를 습득하여 학습 후 다음에 올 단어를 예측할 수 있습니다. 
 

Feed-forward vs Recurrent 신경망

1. Feed-forward Neural Network(순방향 신경망)

  • 입력층 – 은닉층 – 출력층을 거치는 형태의 (일반적인) 아키텍처
  • 기억을 담당하는 기능이 없음
  • 입력 길이가 고정되어 있고, 가중치 학습을 통해 추론하는 형태

2. Recurrent Neural Network(순환 신경망) : 순환하는 신경망

  • 데이터가 순환하면서 과거의 정보를 기억하는 동시에 최신 데이터로 갱신 하는 원리
    1. 상태 update
    2. 가중치 update
  • Input data는 이전 hidden state값 + 현재 입력 값
  • 순환하는 신경망을 만들기 위해서는 닫힌 경로가 필요
  • 닫힌 경로 혹은 순환하는 경로가 존재해야 데이터가 같은 장소를 반복해 왕래할 수 있음

 

 

RNN의 특징

RNN은 시계열이 긴 경우에 유용한 신경망입니다. 앞에서 이야기 한 것 처럼 피드포워드(Feed-forward)는 입력의 길이 고정되어 자연어 처리에 부적합 한데요. RNN은 과거의 시퀀스를 기억할 수 있고, 그 범위가 고정이 아닐 경우 사용할 수 있다는 이점이 있습니다. 
 

RNN의 특징
RNN의 특징

 

1. RNN 아키텍쳐

그림 왼쪽처럼 RNN 아키텍쳐는 입력과 출력 사이에 레이어가 하나입니다. 그 구조를 펼치면 오른쪽처럼 되는데 그렇다고 여러 레이어는 아닙니다. 저도 처음엔 레이어기 여러개인가 혼동했어요.

2. RNN 동작 방식

각 단어의 분산 표현(단어 벡터)이 $ 𝑋_{𝑡} $가 되며 이 분산 표현이 순서대로 하나씩 RNN계층에 입력됩니다. 그림에서는 다수의 RNN계층 모두가 실제로는 '같은 계층'인 것이 지금까지의 신경망과는 다른 측면입니다.  

$ ℎ_{𝑡} $는 다른 계층을 향해 위쪽으로 출력되는 동시에 다음 시각의 RNN계층(자기 자신)을 향에 오른쪽으로도 출력됩니다. RNN계층은 ‘상태를 가지는 계층‘, ‘메모리(기억력)가 있는 계층‘이라고 부릅니다. 
 

3. 셀(cell) 

RNN에서 셀은 hidden layer에서 활성화 함수를 통해 출력을 내보내는 역할을 하는 node를 말합니다. Cell에 대한 계념이 LSTM에서는 cell state라는 형태로 변화되어 나타납니다. 기억한다고 해서 ‘메모리 셀’, 또는 ‘RNN 셀’이라고 부르기도 합니다. 메모리 셀이 가지고 있는 값을 은닉상태(hidden state) 혹은 은닉상태 벡터(hidden state vector)라 합니다. 
 

 

RNN 다양한 형태 

1. 일대다(one-to-many) 

  • 하나의 이미지 입력에 대해서 사진의 제목을 출력하는 이미지 캡셔닝(Image Captioning) 작업에 사용

2. 다 대일(many-to-one) 

  • 입력 문서가 긍정적인지 부정적인지를 판별하는 감성 분류(sentiment classification), 또는 메일이 정상 메일인지 스팸 메일
  • 인지 판별하는 스팸 메일 분류(spam detection) 등에 사용

3. 다대다(many-to-many)   

  • 사용자가 문장을 입력하면 대답 문장을 출력하는 챗봇과 입력 문장으로부터 번역된 문장을 출력하는 번역기, 또는 '태깅 작업' 챕터에서 배우는 개체명 인식이나 품사 태깅과 같은 작업

 

RNN의 형태
RNN의 형태