일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Python
- 미국주식
- 에반게리온 해석
- 10828
- 자료구조
- unexpectedtypeexception
- 프로그래머스
- 백준
- Spring
- 짝지어 제거
- 스택
- 독후감
- 알고리즘
- 오블완
- 쥐 3부작
- 상실의 시대
- RNN
- star-crossed lovers
- 상실
- 목표
- unterm rad
- 노르웨이의 숲
- 무라카미 하루키
- 책
- 파이썬
- 박제가 되어 버린 천재
- elman network
- 개발자가 영어도 잘해야하나요?
- elman
- 소설
- Today
- Total
Dawn
RNN LM 논문을 읽으며 (RNN, n-gram, Elman Network) 본문
Recurrent Neural Network based Language Model 논문을 읽으며, 필요한 개념들에 대한 정리이다.
RNN 기본 동작
RNN은 입력과 출력을 시퀀스 단위로 처리하는 모델이다.
Xt는 입력층이고 Yt는 출력층이다.
이 모델은 은닉층에서 활성화 함수를 통해 결과값을 보내면서 동시에 다음 은닉층 계산의 입력으로 보내는 특징으로 반복하기 때문에 Recurrent라는 말이 붙게된 것이다.
n-gram
모든 단어를 고려하는 것이 아닌 일부 단어만 고려하는 접근 방식이다.
몇 개의 일부 단어를 보느냐가 n이 가지는 의미이다.
몇 개의 단어만 확인하다 보니 문장의 연결이 이상하고 끝맺음하지 못하는 문제가 발생한다.
Sparsity problem
훈련 데이터에 등장하지 않은 단어 시퀀스는 확률이 0으로 설정되기에 일반화가 불가능하다.
n이 커질수록 조합이 기하급수적으로 증가하고, 데이터 부족 문제가 발생할 수 있다.
그래서, 등장하지 않은 n-gram에 작은 확률을 할당하여 문제를 해결하는 Smoothing 방식이 있고, n의 차수를 낮추어 확률을 보정(3-gram -> 2-gram or 1-gram)하는 Backoff 방식이 존재한다.
이런한 방법을 사용해도 긴 문맥을 고려하지 못한다는 근본적인 한계가 있기 때문에 다른 모델이 등장하게 되었다.
Elman Network와 RNN
일반적인 Feedforward Neural Network는 출력층까지 차례대로 계산결과가 전달되는 형태에서 발전된 형태로 입력층, 숨겨진 층, 문맥충, 출력층이 존재한다.
문맥 정보 저장 방식에서 Elman Network는 이전 상태 s(t-1)을 context layer에 저장하고 일반적인 RNN에는 문맥층 없이 숨겨진 층에서 이전 상태를 유지시킨다는 차이가 있다.
짧은 문맥 정보를 잘 다룰 수 있지만 긴 문맥 정보를 기억하는 데 한계가 있기 때문에 이전 논문(Recurrent Neural Network based Language Model)에서는 백오프 모델과 결합하여 성능을 향상시킬 수 있다는 얘기가 나온다.
왜 RNN은 긴 문맥 학습이 어려운가
RNN은 이전 상태를 사용해 현재 상태를 계산하는데, 시간 t가 커질수록 이전 정보에 대한 영향력이 점점 약해지게 된다.
Backpropagation 과정에서 gradient가 매우 작아지거나, 매우 커지는 문제가 생기는데 이를 기울기 소실, 기울기 폭발이라고 한다.
RNN 학습 과정에서 오차가 시간축을 따라 Backpropagation 된다.
s(t)를 업데이트할 때 반복적으로 행렬 곱셈을 수행하는데, 활성화 함수로 인해 기울기가 점점 작아지게 되고 결과적으로 기울기 소실이 일어나게 된다.
그냥 내가 헷갈려서...
자주 나오는, 아주 기본적인 개념들인데 헷갈려 기록함.
가중치 업데이트 알고리즘
신경망이 학습하면서 손실을 줄이기 위해 가중치를 조절하는 방법
- SGD
- Momentum
- Adagrad
- RMSprop
- Adam
활성화 함수
신경망에서 입력 값을 변환해 출력으로 보내는 함수
비선형 함수인 활성화 함수들을 추가해 신경망이 복잡한 관계를 학습하도록 만듦.
- 시그모이드 함수 : 출력 범위 (0, 1), 확률 표시할 때 좋음
- 소프트맥스 함수 : 출력값을 확률처럼 해석할 수 있도록. 출력의 총합은 1이고 클래스에 속할 확률을 반환
- 렐루 함수 : 음수면 0, 양수면 그대로
참고 자료
https://www.isca-archive.org/interspeech_2010/mikolov10_interspeech.html
'AI' 카테고리의 다른 글
[논문] Recurrent neural network based language model (0) | 2025.03.31 |
---|