Replicated

자연어 처리 : RNN, LSTM 본문

학부/딥러닝

자연어 처리 : RNN, LSTM

라구넹 2025. 12. 7. 18:09

RNN (Recurrent Neural Network)

- 일반적인 신경망에서는 데이터를 입력하면 연산이 입력층에서 은닉층을 거쳐 출력층까지 차근차근 진행되고 이 과정에서 입력 데이터는 모든 노드를 딱 한 번식 지나가게 됨

- FFNets는 입력 데이터의 시간 순서를 무시하고 현재 주어진 데이터만 가지고 판단

- 입력 데이터의 시간 순서도 반영하여 학습하는 모델이 RNN

 

RNN 기본

many-to-one 구조 : 텍스트 분류

many-to-many 구조 : 개체명 인식, 품사 태깅

one-to-many 구조 : 텍스트 생성, 챗봇

LSTM : RNN의 단점 보완

 

Seq2Seq

- 입력된 시퀀스로부터 다른 도메인의 시퀀스를 출력

- 인코더-디코더 구조

- 챗봇, 기계 번역, 내용 요약, Speech to Text

 

Attention mechanism

- 입력 문장이 길면 번역 품질이 떨어지는 현상에 대한 대안

 

Transformer

- 2017년 구글 발표, 기존의 Seq2Seq 구조인 인코더-디코더를 따르면서도 어텐션만으로 구현한 모델 (RNN 안씀)

- 오늘날 대부분의 LLM은 Tranformer 기반

 

RNN은 이전 은닉층의 결과가 다음같에 다시 같은 은닉층의 결과로 들어가도록 연결

- 입력과 출력을 시퀀스 단위로 처리하는 시퀀스 모델

- 입력: 번역하고자 하는 문장 (단어의 시퀀스)

- 출력: 번역된 문장 (단어의 시퀀스)

 

RNN에서 은닉층에서 활성화 함수를 통해 결과를 내보내는 역할을 하는 노드가 셀

- 메모리 셀 또는 RNN 셀 이라고도 표현

- 현재 시점 t에서 메모리 셀이 갖고 있는 값은 과거의 메모리 셀들의 값에 영향을 받음

- 메모리 셀이 보관하고 있는 값을 은닉 상태(hidden state)라고 함

 

RNN은 입력과 출력의 길이를 다르게 설계 가능

- 일대다 : 텍스트 제네레이션, 이미지 캡션

- 다대일 : 텍스트 분류, 감정 분류

- 다대다 : 텍스트 번역 챗봇

 

RNN의 활용 분야

- 시퀀스 데이터를 다루는데 적합

- 배열 또는 시계열 데이터의 형태를 갖는 데이터에서 패턴 인식에 좋음

- 기본적인 구조의 RNN을 바닐라 RNN (Keras 는 SimpleRNN 제공)

 

keras.layers.SimpleRNN

model = keras.Sequential([
	keras.layers.SimpleRNN(units=10, return_sequences=False, input_shape=[4,1]),
	keras.layers.Dense(1)
])

- units : RNN 레이어의 출력 벡터(은닉상태 벡터)의 차원(크기)을 결정

- return_sequences : False는 마지막 타임 스텝의 은닉 상태만, True는 전체 시퀀스의 은닉 상태를 모두 반환

 

input_shape의 정의 형태

- timesteps(시퀀스 길이) : 하나의 샘플이 가지는 시간 단계의 수

- input_dim : 각 시간 단곈에서의 입력 데이터 벡터의 차원(특징 수)

 

RNN의 단점

- 시간 격차가 크면 기울기 소실되어 정보 전달이 잘 안됨

 

 

LSTM(Long Short term Memory Network)

- RNN의 기울기 소실 문제를 해결하기 위해 제안

- LSTM은 RNN의 특별한 한 종류로, 긴 의존 기간을 필요로 하는 학습을 수행할 능력을 갖음

- 반복 모듈의 구조가 다름. 4개의 레이어가 특별한 방식으로 서로 정보를 주고 받도록 설계

- 이전의 정보 중 필요한 것을 취사선택하고 현재 입력과 결합하여 출력 정보를 생성

- 과거 기억을 보존하되 필요가 없어진 기억을 지워버리는 기능을 추가

 

Forget Gate

- 이전 단계에서 얻은 정보를 버릴지 말지를 결정

- 불필요한 정보의 축적을 방지하고 중요한 정보에 집중할 수 있도록 도움

 

Input Gate

- 새로운 정보가 주어졌을 때 이 정보를 셀 상태에 어떻게 업데이트 할 지를 결정

 

Output Gate

- 현재 셀 상태를 바탕으로 어떤 정보를 출력할지를 결정

 

Cell State

- 일종의 컨베이어 벨트, 과거 정보를 미래로 전달하는 역할

 

LSTM의 장단점

- 길이가 긴 입력에 대해서도 효과적으로 처리할 수 있도록 함

- 게이트의 도입으로 계산 복잡도가 증가 -> 모델 학습 시간의 증가

- RNN과 마찬가지로 입력값을 순차적으로 처리하기 때문에 대량의 데이터를 빠르게 처리하는데 한계(병렬처리 불가)
- 길이가 매우 긴 입력에 대해서는 여전히 한계가 있음

'학부 > 딥러닝' 카테고리의 다른 글

Hugging face  (0) 2025.12.07
자연어 처리 : Seq2Seq, Attention, Transformer  (0) 2025.12.07
자연어 처리 : Word representation  (0) 2025.12.07
전이 학습 (Transfer Learning)  (0) 2025.12.07
Keras CNN - Argumentation  (0) 2025.10.25