[AI] RNN과 LSTM — 순환신경망, 시계열 데이터, 단기 기억 문제, 게이트 구조, 워드 임베딩
by 우와한개발자
1. 자연어처리란 무엇인가
자연어는 인간이 상대방과 의사소통을 위해 사용하는 언어다. 한국어, 영어, 중국어처럼 사람들이 일상에서 쓰는 언어를 말한다. 자연어처리(NLP, Natural Language Processing)는 이 사람의 언어를 컴퓨터가 이해하고 처리할 수 있도록 하는 AI의 한 분야다.
- NLU(Natural Language Understanding) : 텍스트의 의미를 이해하는 방향이다
- NLG(Natural Language Generation) : 텍스트를 생성하는 방향이다
- 응용 분야 : 형태소 분석, 감정 분석, 기계 번역, 문서 요약, 챗봇까지 일상에서 접하는 많은 AI 서비스가 이 기술을 기반으로 한다
컴퓨터가 텍스트를 처리하려면 먼저 텍스트를 숫자로 변환해야 한다. 이 과정이 텍스트 전처리와 워드 임베딩이다.
2. 텍스트 전처리와 워드 임베딩
1) 텍스트 전처리
모델에 데이터를 입력하기 전에 정제 작업이 필요하다.
- 정제(Cleaning) : 특수문자 같은 불필요한 노이즈 텍스트를 제거하고 대소문자를 통일한다
- 불용어 제거 : 전치사, 관사처럼 문장의 특징을 표현하는 데 불필요한 단어를 제거한다
- 토큰화 : 코퍼스(Corpus, 문서의 집합)에서 연속적인 문자열 단위로 텍스트를 분리한다
2) 워드 임베딩
단어를 컴퓨터가 이해할 수 있도록 벡터(숫자들의 배열)로 변환하는 기법이다. 자연어를 수치화해야 기계 학습 모델이 처리할 수 있다.
- 목적 : 텍스트를 숫자 벡터로 바꿔 모델이 연산할 수 있는 형태로 만든다
- 대표 방법 : TF-IDF와 Word2Vec이 있다
(1) TF-IDF
TF는 문서에서 용어가 나타나는 총 횟수이고, IDF는 전체 문서에서 해당 용어가 얼마나 자주 등장하는지를 나타낸다.
- 계산 원리 : 단어가 특정 문서에서 등장한 횟수에 비례하고, 전체 문서에서 등장한 횟수에 반비례한다
- 해석 : 점수가 클수록 해당 용어가 그 문서에서 더 관련성이 높다는 의미다
(2) Word2Vec
구글에서 개발한 워드 임베딩 모델이다. 얕은 2계층 신경망으로 단어를 벡터 공간에 표현하며, 비슷한 맥락에서 쓰이는 단어는 벡터 공간에서 가까이 위치하게 된다.
- CBOW(Continuous Bag-of-Words) : 주변 단어를 입력으로 받아 중심 단어를 예측한다. 소규모 데이터에 적합하고 속도가 빠르다
- Skip-gram : 중심 단어를 입력으로 받아 주변 단어를 예측한다. 빈도가 낮은 단어에 더 정확하고 대규모 데이터에 적합하다
슬라이딩 윈도우는 전체 학습 문장에 대해 윈도우를 이동하며 중심 단어와 주변 단어 데이터셋을 추출하는 과정이다.
- 윈도우 크기 : 크기가 2인 경우, 중심 단어를 기준으로 앞뒤 2개 단어가 주변 단어가 된다
3. RNN — 순환신경망의 등장

1) RNN이란
RNN(Recurrent Neural Network, 순환신경망)은 시계열 데이터를 학습하는 딥러닝 기술이다. 1986년 데이비드 루멜하트가 개발했다.
- 핵심 구조 : 기준 시점(t)과 다음 시점(t+1)에 네트워크를 연결한다
- 적합한 이유 : 이전 시점의 출력이 다음 시점의 입력으로 전달되기 때문에 순서가 있는 데이터를 처리하는 데 적합하다
2) RNN의 유형
- One to Many : 입력이 하나이고 출력이 여러 개다. 이미지에 캡션을 달 때 사용한다
- Many to One : 여러 입력이 들어와 하나의 출력을 만든다. 영화평 감정 분류처럼 문장 전체를 하나의 라벨로 분류할 때 사용한다
- Many to Many : 여러 입력이 여러 출력을 만든다. 기계 번역처럼 시퀀스를 다른 시퀀스로 변환할 때 사용한다
4. RNN의 한계와 LSTM의 등장
1) RNN의 단기 기억 문제
RNN은 구조적으로 단기 기억(Short-Term Memory) 문제를 가지고 있다. 최근의 기억은 유지하지만 오래된 기억은 전달되지 않는다.
- 정보 희석 : 시퀀스가 길어질수록 초반 정보가 희석된다
- 경사 소실(Vanishing Gradient) : 입력 데이터의 길이가 길어지면 성능이 저하되는 현상이 구조적으로 나타난다
2) LSTM의 구조

LSTM(Long Short-Term Memory)은 이 문제를 해결하기 위해 만들어진 구조다. Cell State라는 별도의 기억 경로를 추가해 장기 의존성을 학습할 수 있게 했다. 4개의 게이트로 정보 흐름을 정밀하게 제어한다.
Forget Gate → Input Gate → Cell State Update → Output Gate
(1) Forget Gate
이전 기억 중 얼마나 잊을지 결정한다.
- 동작 방식 : sigmoid 함수를 통해 0에서 1 사이의 값을 출력한다
- 해석 : 0에 가까울수록 해당 정보를 잊고 1에 가까울수록 기억한다
(2) Input Gate
새로운 정보를 얼마나 기억할지 결정한다.
- sigmoid : 얼마나 업데이트할지를 결정한다
- tanh : 새로운 후보 값을 생성한다
(3) Cell State Update Gate
Forget Gate와 Input Gate의 결과를 결합해 Cell State를 업데이트한다.
- 결합 방식 : 과거 기억 중 유지할 부분과 새로운 정보를 합쳐 현재 시점의 기억을 만든다
(4) Output Gate
현재 시점의 출력을 결정한다.
- sigmoid : 어떤 부분을 출력할지 선택한다
- tanh : Cell State를 통과시킨 뒤 sigmoid 결과와 곱해 최종 은닉 상태를 생성한다
3) GRU — LSTM의 경량화 버전

GRU(Gated Recurrent Unit)는 LSTM의 게이트를 단순화해 속도를 높인 구조다. Cell State와 Hidden State를 하나로 합쳤고, 게이트 수도 줄여 계산 비용을 낮췄다.
- Reset Gate : 이전 은닉 상태를 얼마나 반영할지 결정한다. 과거 정보를 얼마나 무시할지 조절한다
- Update Gate : 이전 은닉 상태와 새로운 후보 상태를 얼마나 혼합할지 결정한다. LSTM의 Forget Gate와 Input Gate 역할을 동시에 한다
- 성능 특성 : 파라미터 수가 적어 학습이 빠르고 소규모 데이터에서 LSTM과 비슷한 성능을 낸다
'AI' 카테고리의 다른 글
블로그의 정보
우와한개발자 님의 블로그
우와한개발자