일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 서버 os
- dlib 설치
- rnn
- 서버 os확인
- virtual env
- rnn구현
- transductive learning
- 로컬에서 서버
- fourier transform
- 기초머신러닝
- inductive transductive
- 푸리에변환이란
- 머신러닝 딥러닝
- 머신러닝
- Machine Learning
- inductive learning
- python2 python3
- ssh connection closed
- fourier 변환
- 크롤링 주의사항
- python패키지설치
- 푸리에
- 크롤링할때 중요한것
- server os
- transductive
- python버전 동시 사용
- Fourier
- 서버로 파일 복사
- inductive
- 푸리에 변환
- Today
- Total
우당탕탕 도비의 코딩로그
RNN(Recurrent Neural Networks)란?- 순환 신경망 설명 본문
Recurrent Neural Networks, RNN이라고 불리는 모델은 시퀀스 데이터(순차 데이터, 시계열 데이터)를 입력받아 처리할 수 있도록 설계된 신경망 아키텍쳐이다.
최근 가장 주목받고 있는 LLM인 ChatGPT는 Transformer 아키텍쳐를 베이스로 하고 있는데 RNN -> LSTM -> LRU -> Transformer 순으로 그 발전에 기여했다고 볼 수 있다.
RNN에서 가장 주목해야될 점은 이전 타임스텝의 정보를 기억하여 현재 출력에 반영한다는 점이다.
RNN이 처리할 수 있는 데이터들에는 순서가 중요한 문장내의 단어, 주식 가격의 변동을 나타내는 시퀀스 데이터들이 있다.
이러한 시퀀스 데이터를 처리하기 위해 RNN은 이전 시간(타입스탬프,t-1)의 은닉 상태(hidden state)를 현재 시간(타임스탬프,t)의 입력과 함께 처리하여 시간에 따른 정보를 유지하는 순환 구조를 사용한다.
위의 그림에서 볼 수 있듯이 RNN은 총 세개의 파라미터(W, V, U)를 학습시킨다. -> 이 파라미터들은 각 timestep에서 공유된다.
히든 스테이트 h1는 $h_1 = f(W_h h_{0} + W_x x_1 + b)$ 를 수행하여 이전 타입스탬의 히든 스테이트인 h0의 정보를 입력 데이터인 x1과 함께 업데이트하여 얻어지게된다. (f는 activation function인 tanh를 사용한다.)
h1 히든스테이트를 구한 다음 $y_t = Vh_1$ 를 계산하여 출력값 o1을 얻게 되고 o1에 activation function(softmax:다중 클래스 분류인 경우, logistic regression:이진 분류인 경우)를 적용하여 최종 출력값 $\hat{y}_1$를 얻게되는 구조이다. h2또한 이전 timestep의 hidden state인 h1을 입력받아 출력값을 출력하게 된다.
RNN의 주요 특징들을 정리해보면,
- 시퀀스 데이터 처리: 시계열 데이터, 자연어 처리(NLP), 음성 인식, 주가 예측 등에 사용됨.
- 순환 구조: 이전 시간의 은닉 상태(hidden state)를 다음 시간의 입력과 함께 처리하여 시간에 따른 정보를 유지함.
- 파라미터 공유: 각 시점(time step)에서 동일한 가중치를 사용하여 학습 파라미터 수를 줄일 수 있음.
RNN의 문제점으로는,
- 장기 의존성 문제(Long-Term Dependency) : RNN은 과거 정보를 유지하지만, 시간이 길어질수록 초반 정보가 사라지는 기울기 소실(Vanishing Gradient) 문제가 발생할 수 있음. 반대로 기울기가 너무 커지는 기울기 폭발(Exploding Gradient) 문제도 발생할 수 있음.
- 병렬 연산의 어려움: CNN이나 Transformer 모델과 달리, RNN은 이전 상태를 기반으로 현재 상태를 계산해야 하므로 병렬 처리가 어렵고 학습 속도가 느림.
등이 있다.
'AI > NLP' 카테고리의 다른 글
[RNN] Pytorch로 RNN구현하기 (나라별 Family name 구분하기) (0) | 2025.02.27 |
---|