David의 개발 이야기!

RNN 에 대해 알아보자 본문

자연어처리

RNN 에 대해 알아보자

david.kim2028 2023. 8. 19. 17:21
반응형

RNN(Recurrent Neural Network) 는 입력과 출력을 시퀀스 단위로 처리하는 시퀀스(Sequence) 모델이다. 

 

1. RNN 예시

1. POS tagging

RNN은 아래그림 같이, POS tagging(품사 분류)를 할 수 있다.

 

 

모델 구조를 좀 더 자세히 보면, 

 

Softmax 결과

 

 

모델 구조

 

이렇게 구성되어있고, POS tagging 인경우, Supervised Learning 이므로, Softmax 를 통해 품사를 분류 할 수 있다. target값과 pred 값을 비교해, gradient descent 이용해 조정해 정확도를 높여간다.

 

각 변수는 다음과 같은 뜻을 지닌다.

 

 

 

모델에 있는 변수들이 Whh, Wxh, b가 결국 같은 변수고, 시간에 따라, 변하는 것이기에 Back Propagation 이 아니라 Back Propagation Through Time (BPTT) 라고 부른다.

 

 

위 그림의 E는 각 시점의 Error를 뜻하며, RNN 에서는 위 그림처럼, 이전의 모든 시점의 Error를 활용해 학습을 한다.

t=3일때의 BPTT가 이뤄지는 그림이다. 

 

 

 

2. Sentiment Analysis 

 

Sentiment Analysis 예시
Sentiment Analysis 모델 구조

 

 

 

2. RNN 모델 구조 (단순화)

RNN 은 내부의 구조에 순환구조가 포함되어 있어, 시간에 의존적이거나, 순차적인 데이터 학습에 활용된다. 내부에 있는 순환 구조에 의해, 현재 정보에 이전 정보가 쌓이면서 정보표현이 가능한 알고리즘으로, 정보가 끊임없이 갱신될 수 있다.

 

RNN 의 은닉층에서 활성화함수를 통해, 결과를 내보내는 역할을 하는 노드를 셀이라고 하며, 해당 셀은 이전의 값을 기억하려고 하는 메모리의 역할을 수행함으로, 메모리셀 이라고도 부른다. 

 

RNN 이름에서 알수 있듯이, 은닉층의 메모리셀에서 나온 값이, 다음 은닉층의 메모리셀에 입력된다. 

 

 

 

 

RNN 모델의 수학적 표현은 아래와 같다.

ht : t번째 time step 에서의 Hidden State

Wxh : 현재입력값에 곱해지는 가중치

xt : 입력값

whh : 이전 timestep 에서의 가중치

ht-1 : (t - 1)번째 time step 에서의 Hidden State

bh : 편향

tanh : 활성화함수 

 

3. RNN 활용

1. 일대다 : one to many 

하나의 입력에 대해 여러개의 출력을 가지는 일대다 모델의 경우,

하나의 이미지에 대해 사진의 제목을 출력하는 이미지 캡셔닝에 사용할 수 있다. 

 

2. 다대일 : many-to-one

시퀀스를 입력했을때, 감성분류나, 스팸메일 여부를 분류할때, 사용할 수 있다.

 

3. 다대다 : many-to-many

챗봇이나, 번역에 사용할 수 있다. 개체명 인식이나, 품사 태깅이 해당 활용에 포함된다.

 

 

+ RNN 층은, 사용자 설정에 따라 두가지 종류의 출력을 내보낼 수 있다. 

메모리셀의 최종시점의 은닉상태만을 리턴할 수 있고, 메모리셀의 각 시점의 은닉상태들을 모두 리턴할 수도 있다. 

 

return_sequences 매개변수를 on/off 하면 된다.

 

 

4. Vanilla RNN의 한계

시점이 길어질 수록, 앞의 정보가 뒤로 충분히 전달되지 못하는 현상이 발생하며, 가장 중요한 정보가 앞 쪽 시점에 있을 경우, 정보량의 손실이 일어난다. (RNN의 장기 의존성 문제)

 

5. Vanilla RNN 코드 실습

1. RNN을 통해 주기학습 예측

https://github.com/Kdavid2355/ai_code/blob/main/RNN_Predict_Sine_function.ipynb

 

2. RNN을 통한 스팸분류기 만들기

https://github.com/Kdavid2355/ai_code/blob/main/RNN_for_Text_Classification.ipynb

 

 

 

 

 

 

 

 

 

출처

https://www.youtube.com/watch?v=PahF2hZM6cs 

https://casa-de-feel.tistory.com/39

 

반응형
Comments