공부 기록장

자연어 처리 이해하기 : NLP, RNN, LSTM, GRU의 원리와 활용 본문

카카오테크 부트캠프/강의

자연어 처리 이해하기 : NLP, RNN, LSTM, GRU의 원리와 활용

빛나무 2024. 7. 23. 15:27

NLP

NLP(Natural Language Processing)란?

컴퓨터가 인간의 언어, 자연어를 이해하고 생성할 수 있도록 하는 기술

텍스트 혹은 음성 데이터를 처리하여 유의미한 정보를 추출하거나 인간과의 상호작용에 사용

 

자연어 처리의 주요 분야

  • 기계 번역 : 두 개 이상의 언어 사이의 번역을 수행하는 기술
  • 감성 분석 : 텍스트 데이터에서 감성(긍정, 부정, 중립)을 추출하는 기술 (ex. 영화 리뷰의 긍정/부정 분석)
  • 챗봇 : 사용자의 질문에 자동으로 응답하는 대화형 AI 시스템
  • 음성 인식 : 음성 데이터를 텍스트로 변환하는 기술 (ex. 음성 명령 인식을 통한 작업 수행)
  • 정보 검색 : 대규모 데이터베이스에서 사용자가 원하는 정보를 검색 (ex. 검색 엔진)

 

코퍼스(Corpus)

자연어 처리 연구와 모델 학습을 위해 수집된 대규모 텍스트 데이터셋

→ 실제 언어의 사용을 반영하여 다양한 언어적 현상을 분석 가능하게 해줌

 

코퍼스의 형태

  • 일반 텍스트 코퍼스 : Wikipedia, 뉴스 기사, 소설 등 다양한 주제와 형식의 텍스트 데이터
  • 도메인 특화 코퍼스 : 특정 분야와 관련된 텍스트 데이터 (ex. 의학 논문, 법률 문서)
  • 주석이 포함된 코퍼스 : 텍스트와 함께 레이블(태그)이 포함된 데이터 (ex. 감성 레이블, 개체명 레이블)

 

텍스트 전처리

토큰화(Tokenization)

문장을 단어, 부분 단어 또는 문자 단위로 분리하는 과정 (ex. "Hello, world!" → ["Hello", ",", "world", "!"] )

 

정규화(Normalization)

텍스트 일관성 유지를 위한 변환 과정 (대소문자 변환, 구두점 제거 등)

 

불용어 제거 (Stop Words Removal)

분석에 불필요한 일반적인 단어 제거 (is, the, and 등)

⇒ 불용어 제거를 통해 모델 성능 향상

 

어간 추출(Stemming)

단어의 어간을 추출하여 변형된 형태 제거 (ex. running → run)

 

표제어 추출

단어의 표제어(기본 형태)를 추출하는 과정 (ex. better good)

 

 

단어 임베딩

단어를 고차원 벡터로 표현하여, 단어 간의 의미적 유사성을 벡터 공간에 반영하는 기법

단어 간의 관계를 효과적으로 학습 및 표현

 

왜 단어 임베딩이 중요한가?

  • 차원 축소 : 단어의 개수만큼 차원이 필요한 원-핫 인코딩 방법과 달리, 상대적으로 낮은 차원에서 단어 표현 가능
  • 의미적 유사성 : 단어 간의 의미적 유사성을 벡터 공간에 표현함
  • 학습 효율성 : 모델 학습의 효율성을 높이고, 다양한 NLP 작업의 성능을 향상함

주요 단어 임베딩 기법

Word2Vec, GloVe

 

단어 임베딩 활용

- 텍스트 분류 모델 핛습에 사용 (ex. 스팸 필터링, 뉴스 기사 분류, 언어 인식 등)

- 의미적 유사도 계산 (임베딩 벡터 간의 코사인 유사도 등 계산을 통해)

- 기계 번역 (소스 언어와 대상 언어 간의 의미적 매핑을 학습)

 

Word2Vec

가장 대표적인 단어 임베딩 기법으로, 단어를 고차원 벡터로 변환하여 단어 간의 의미적 유사성을 벡터 공간에 투영

대규모 코퍼스에서 효과적으로 학습 가능

CBOW(Continuous Bag of Words)와 Skip-gram 두 가지 형태를 가짐

 

1) CBOW(Continuous Bag of Words) 모델주어진 '문맥 단어'(주변 단어)를 사용해 `중심 단어`를 예측하는 방식(문맥 단어들이 중심 단어를 결정하는 데 중요한 정보를 제공한다는 가정에 기반)

 

2) Skip-gram 모델`중심 단어`로부터 `문맥 단어`들을 예측하는 방식

 

 

한계점

- 문맥에 따라 달라지는 단어의 의미를 파악 X

- 학습 데이터에 없는 단어(Out-Of-Vocabulary)에 대해 벡터 생성 X

 

 

RNN

순환신경망(Recurrent Neural Network, RNN)이란?

순차 데이터를 처리하는 데 특화된 인공 신경망의 한 종류

이전 단계의 출력을 다음 단계의 입력으로 사용하는 순환 구조 가짐

시계열 데이터, 자연어 처리(NLP), 음성 인식 등 순차적 특성이 중요한 문제에서 널리 사용

 

RNN의 구조

각 시점(Time Step)에서 입력(x)를 받아 처리하고, 다음 시점으로 상태를 전달

이 때, 각 시점에서의 상태는 이전 시점에서의 상태와 현재 입력에 의해 결정된다.

 

은닉 상태 계산을 수식을 통해 부연 설명하자면, 다음과 같다.

출력층은 은닉 상태로부터 최종 출력을 계산하고, 시간 단계별로 나뉘어 계산된다.

 

마지막으로 계산된 은닉 상태는

시퀀스 전체를 고려한 정보가 담겨 있기 때문에, 모델의 성능 향상을 위해 버려지지 않고 사용된다.

 

RNN의 학습

일반적인 신경망과 마찬가지로 역전파 알고리즘을 사용해 가중치 업데이트

 

RNN의 장점

시간에 따른 의존성 학습을 통해 시퀀스 데이터의 순차적 특성 반영 ↑

 

RNN의 한계

긴 시퀀스 학습 시, 기울기 소실 문제 혹은 기울기 폭발 발생 가능성 ↑

장기 의존성 학습에 어려움(기울기 소실 문제와 관련 있음)

 

 

LSTM

장단기 메모리 네트워크(Long Short-Term Memory, LSTM)란?

RNN의 한계를 극복하기 위해 고안된 모델로, 장기 의존성을 효과적으로 학습함

셀 상태(cell state)와 게이트 메커니즘을 통해 정보를 선택적으로 유지 혹은 삭제함

 

LSTM의 구조

  1. 입력 게이트(Input Gate) : 새로운 정보를 얼마나 반영하고 활용할지 결정
  2. 망각 게이트(Forget Gate) : 이전 셀 상태 정보를 얼마나 유지할지 결정 (어떤 걸 잊어버릴지 결정)
  3. 출력 게이트(Output Gate) : 현재 셀 상태 정보를 출력으로 얼마나 반영할지 결정

입력층, 은닉 상태, 출력층 구조는 동일한데,

Gradient flow를 제어할 수 있는 "밸브" 역할을 하는 게이트가 추가되었다고 생각

 

LSTM의 장점

- 기울기 소실 문제 해결

- 장기 의존성 학습

- 게이트 메커니즘을 통한 정보의 선택적 업데이트

 

LSTM의 단점

- RNN에 비해 복잡한 구조로 계산 비용이 높음

- 학습 시간 증가

 

 

GRU

게이트 순환 유닛 (Gated Recurrent Unit, GRU)란?

LSTM보다 단순한 구조로 비슷한 성능을 유지하면서 계산 효율성은 높인 모델

 

GRU 구조

LSTM과 달리 셀 상태를 사용하지 않고, 은닉 상태만 사용하여 정보 전달

- 업데이트 게이트(Update Gate) : 새로운 입력 정보를 얼마나 현재 은닉 상태에 반영할지 결정

- 리셋 게이트(Reset Gate) : 이전 은닉 상태 정보를 얼마나 반영할지 결정

 

GRU의 장점

  • LSTM보다 구조 단순하고 계산 효율성 ↑
  • 더 적은 파라미터로 LSTM과 유사한 성능 제공
  • 게이트 메커니즘을 통해 기울기 소실 문제 완화

 

GRU의 단점

  • 일부 복잡한 패턴을 학습하는 데는 LSTM보다 효과적이지 않을 수 있음