민프
[AI | ML] RNN이란? (Recurrent neural network based language model(2010) 논문 리뷰) 본문
[AI | ML] RNN이란? (Recurrent neural network based language model(2010) 논문 리뷰)
민프야 2025. 5. 30. 21:301. RNN이란?
RNN은 시계열 데이터를 다루기 위한 인공신경망 구조입니다.
과거의 입력 정보를 “기억”해서 다음 출력을 만들 수 있는 구조로,
자연어 처리, 음성 인식, 시계열 예측에 널리 사용됩니다.
2. 왜 나왔을까?
위 논문 내용을 보면 기존의 n-gram은 고정 길이의 문맥만을 보지만, 자연어는 훨씬 긴 의존성(long-term dependency)을 가지므로, 더 나은 모델이 필요합니다.
RNN은 아래 논문 내용처럼 기존 "Feedforward Neural Networks"는 문맥 길이가 고정되어 있어 한계가 분명한 단점이 존재하였습니다.
그래서 RNN은 아래 논문 내용과 같이 "Simple RNN (Elman Network)"을 사용하여서 이전 상태(context)를 순환시켜 무제한 문맥을 반영하여 이 문제를 해결하였습니다.
쉽게 말해서
기존 Feedforward Neural Network (FFNN)는
입력 간의 순서를 고려할 수 없습니다.
예를 들어서)
문장 “나는 밥을 먹었다” → FFNN은 단어 순서를 모릅니다.
하지만 사람은 순서를 이해하죠.
그래서 나온 것이 RNN입니다.
“시간 축을 따라 이전 출력을 현재 입력과 함께 다시 넣자”는 아이디어입니다.
3. 동작과정
RNN의 기본 구조는 아래와 같이 이루어져있습니다.
- 입력 단어
- 은닉 상테
- 출력 확률 분포
은닉 상태란 무엇일까요?
은닉 상태란 RNN 내부에서 이전 시점까지의 정보를 요약해 가지고 있는 벡터 입니다.
(1)부터 보자면
w(t)는 현재 단어의 입력 벡터이고,
s(t-1)는 이전 시점의 은닉 상태 벡터 입니다.
즉 -> “이전 상태와 현재 단어의 정보를 결합하여 새로운 입력으로 사용한다.” 입니다.
쉽게 설명 해보자면
예를 들어서)
문장:
“나는 밥을”
이 문장을 RNN에 하나씩 넣어본다고 해본다고 하면
시점 t | 입력 x(t) | 은닉 상태 h(t) (= 기억) |
1 | “나는” | h(1) = 기억 없음 + “나는” 정보 |
2 | “밥을” | h(2) = “나는” + “밥을” 정보 합쳐진 상태 |
이렇게 h(2)라는 벡터 안에는 “나는 밥을”이라는 과거 문맥이 요약돼 있는겁니다.
즉, 벡터 안에는 현재까지 입력된 시퀀스의 의미, 패턴, 문맥 정보가 압축되어 담겨 있게 되는 겁니다.
(2)를 보자면
결론적으로 현재 입력 벡터를 은닉층으로 전달하고, 비선형 변환(Sigmoid)을 적용하여서 은닉 상태를 갱신한다는 것 입니다.
(3, 4, 5)를 보자면
여기서는 은닉층의 출력을 가중합 하고, softmax 함수 g를 적용하여서 다음 단어 yk^(t)의 확률 분포를 계산합니다.
결론적으로 "은닉 상태를 이용해서 다음에 올 단어의 확률 분포를 예측합니다."
전체 동작을 쉽게 요약해보자면 아래와 같습니다.
- 현재 입력 단어 + 이전 상태 → 새로운 입력 x(t)
- 입력을 은닉층에 통과시켜 s(t) 계산
- 은닉 상태를 기반으로 출력층에서 다음 단어의 확률 예측
자 수학적 공식은 어려우니
직관적으로 보자면
순환(RNN)의 본질은 “기억”입니다.
이 수식들은 매 시점마다 아래와 같습니다.
- 과거의 문맥을 유지하고,
- 현재 입력을 반영하며,
- 다음 단어를 예측하는 구조입니다.
4. 실습 코드
실습 코드는 Jupyter Notebook으로 정리해보았습니다.
일단 아래와 같이 학습용 데이터를 만들고
Epoch는 10, batch_size는 16으로 해놓고 학습시켰고, 결과를 확인해보았습니다.
데이터가 부족해서 그런지..ㅋㅋ
잘 안됐지만 그래도 데이터만 증강시킨다면 가능해질 것 같습니다.
참고링크
https://www.fit.vutbr.cz/research/groups/speech/publi/2010/mikolov_interspeech2010_IS100722.pdf
https://kyull-it.tistory.com/212