David의 개발 이야기!
RNN 에 대해 알아보자 본문
RNN(Recurrent Neural Network) 는 입력과 출력을 시퀀스 단위로 처리하는 시퀀스(Sequence) 모델이다.
1. RNN 예시
1. POS tagging
RNN은 아래그림 같이, POS tagging(품사 분류)를 할 수 있다.
모델 구조를 좀 더 자세히 보면,
이렇게 구성되어있고, 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
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
'자연어처리' 카테고리의 다른 글
Seq2seq(시퀀스 투 시퀀스)에 대해 알아보자 (0) | 2023.08.24 |
---|---|
LSTM 에 대해 알아보자 (0) | 2023.08.19 |
N-gram 언어모델에 대해 알아보자 - N-gram Language Model (0) | 2023.08.09 |
자연어처리를 위한 1D CNN 이해하기 - 1D Convolutional Neural Networks (0) | 2023.08.09 |
TF-IDF 에 대해 알아보자 - Term Frequency-Inverse Document Frequency (0) | 2023.08.09 |