[KT] AIVLE SCHOOL 13일차
Sequential Data : (시간) 순서가 있는 데이터
RNN(Recurrent Neural Networks)
- RNN의 핵심은 '기억' : 이전까지의 정보를 순환(Loop) 하면서 계속 유지
- RNN은 일반적인 신경망과 달리 출력을 다시 입력으로 넣어주는 구조
- 한 문장이 들어오는 과정
- 예를 들어 "나는 밥을 많이 먹었다" 라는 문장을 RNN에 넣는다고 가정
- "나는" --> 첫 번째 RNN 셀로 입력
- RNN은 "나는"을 처리하고 출력(hidden state)을 생성
- 이 출력을 다음 단어 "밥을"과 함께 다음 RNN 셀로 전달
- 다시 "밥을"을 처리하고 새로운 출력(hidden state) 생성
- 이런 식으로 마지막 단어까지 반복
- 핵심 개념
- Hidden State (숨겨진 상태)
- 현재까지의 정보를 축적해서 다음 셀로 넘기는 역할
- Weight Sharing (가중치 공유)
- 모든 단어를 처리할 때 같은 가중치(W)를 사용해서 계산
- Hidden State (숨겨진 상태)
- 과거의 정보를 현재에 반영해 학습하도록 설계
- RNN 장점
- 순차 데이터(텍스트, 음성, 영상 등)에 강함
- 과저 정보를 기억하면서 처리 가능
- 한계점
- 긴 문장에서는 기억력이 약함 : 기억 소실(Vnishing Gradient) 문제 발생
- 단기 기억 문제 -> 멀리 있는 단어 정보를 잘 활용 못함
- 이 문제를 해결하기 위해 LSTM, GRU 같은 개선된 RNN 모델이 나옴
- RNN 모델링 절차
- 모델링을 위한 전처리
- 데이터 분할 1 : x, y
- 스케일링
- X 스케일링은 필수, Y 값이 크다면 최적화를 위해 스케일링 필요 --> 단, 모델 평가 시 원래 값으로 복원
- 3차원 데이터셋 만들기
- 2차원 데이터셋(X) --> timesteps 단위로 잘라서(한 칸씩 밀면서, sliding window) 3차원 구조 생성
- 데이터 분할 2 : train, val
- 모델링을 위한 전처리
- 모델 구조와 데이터 흐름
- 단일 RNN Layer(num layers = 1), 단일 노드(hidden size = 1)
- 단일 RNN Layer(num layers = 1), 복수의 노드(hidden size = 2)
- 멀티 RNN Layer(num layers = 2), 복수의 노드(hidden size = 2)
- 단일 RNN Layer(num layers = 1), 단일 노드(hidden size = 1)
- 마지막 Hidden State
- RNN Layer의 출력 값의 가장 마지막 hidden state만 dense layer로 전달
- RNN Layer의 출력 값의 가장 마지막 hidden state만 dense layer로 전달
- RNN의 활성화함수 : tanh(hyperbolic tangent)
- 하이퍼볼릭 탄젠트 함수
- 그래디언트 소실 문제(vanishing gradient problem)
- 역전파 시에 gradient가 작아져 학습이 어려워지는 현상
- RNN에서는 긴 시쿼스를 처리할 때 발생
- tanh 함수 --> gradient 소실 문제 완화
- 시그모이드에 비해 gradient를 좀 더 크게 유지
- 시그모이드에 비해 gradient를 좀 더 크게 유지
- 하이퍼볼릭 탄젠트 함수
LSTM(Long Short-Term Memory)
- RNN의 장기 의존성(long-term dependencies) 문제
- 긴 기간 동안의 정보를 유지하고 활용하는 데 어려움 발생
- LSTM은 RNN보다 더 긴 문맥을 학습 가능
- LSTM 구조 : time step 간에 두 종류의 상태 값 업데이트 관리
- Cell State 업데이트 : 긴 시퀀스 동안 정보를 보존하기 위한 상태 값이 추가됨
- 불필요한 과거는 잊어라 (Forget Gate)
- 현재 정보 중 중요한 것은 기억하라 (Input Gate)
- Input Gate와 Forget Gate을 결합해서 장기 기억 메모리에 태워라 (cell state 업데이트)
- Hidden State 업데이트
- [업데이트된 Cell State]와 [input, 이전 셀의 hidden state]으로
- 새 hidden state 값 생성해서 넘기기
- Cell State 업데이트 : 긴 시퀀스 동안 정보를 보존하기 위한 상태 값이 추가됨
Bidirectional RNN
- 양방향 RNN
- 순방향(forward) RNN : 기존 RNN처럼, 과거 -> 현재 방향으로 정보 전달
- 역방향(backward) RNN : 현재 -> 과거 방향으로도 정보를 학습
- 장점
- 양방향 정보 활용 : 과거와 미래 정보를 동시에 고려해 성능 향상
- 텍스트, 음성, 시계열 데이터에서 효과적 (e.g. 번역, 음석 인식, 주가 예측 등)
- 단점
- 계산량이 2배 증가 : 순방향 + 역방향 RNN이 필요
- 실시간 데이터에는 적용하기 어려움 : 미래 정보를 활용해야 하므로 실시간 예측에는 부적합
'Data Science > 자연어 처리' 카테고리의 다른 글
RNN LM (0) | 2025.04.11 |
---|---|
임베딩 벡터 (0) | 2025.04.11 |
토큰화와 형태소 분석 (2) | 2025.04.10 |
자연어 처리 (2) | 2025.04.10 |