RNN include LSTM

JERRY·2025년 5월 2일
0

Deep Learning

목록 보기
17/35
post-thumbnail

RNN include LSTM


RNN(Recurrent Neural Network)

순환 신경망

  • 활성화 신호가 입력에서 출력으로 한 방향으로 흐르는 피드포워드 신경망
  • 순환 신경망은 뒤쪽으로 연결하는 순환 연결이 있음
  • 순서가 있는 데이터를 입력으로 받고 변화하는 입력에 대한 출력을 얻음

메모리셀

sequence-to-sequence 형태

sequence-to-vector 형태

Encoder-Decoder 구조

  • Encoder는 정보를 입력받아 하나의 백터로 정보를 압축시킨다.
  • Decoder는 압축된 context를 이용해 결과를 예측한다.

RNN의 한 셀의 모양

time stamp data 생성

Simple RNN

RNN 코드 구상

  • input_shape : 4, 1(timesteps=4, input_dim=1)
  • units : simpleRNN layers에 존재하는 뉴런의 수
  • return_sequences : 출력으로 시퀀스 전체를 출력할지 여부

학습

결과

RNN

더 복잡하게 코드 구성

학습

결과

simple RNN의 단점

  • 입력 데이터가 길어지면 학습 능력이 떨어진다. → Long-Term Dependency 문제
  • 현재의 답을 얻기 위해 과거의 정보에 의존해야 하는 RNN이지만, 과거 시점이 현재와 너무 멀어지면 문제를 풀기 어렵다.

LSTM (Long Short Term Memory)

LSTM

LSTM의 핵심 아이디어 cell state

  • Cell state는 정보가 바뀌지 않고 그대로 흐르도록 하는 역할

cell state를 제어하는 gate

forget gate

  • Forget gate는 cell state에서 sigmoid layer를 거쳐 어떤 정보를 버릴 것인지 정합니다.

input gate

  • Input gate는 앞으로 들어오는 새로운 정보 중 어떤 것을 cell state에 저장할 것인지를 정합니다. 먼저 sigmoid layer를 거처 어떤 값을 업데이트할 것인지를 정한 후 tanh layer에서 새로운 후보 Vector를 만듭니다.

update cell state

  • 이전 gate에서 버릴 정보들과 업데이트할 정보들을 정했다면, Cell state update 과정에서 업데이트를 진행합니다.

output gate

  • Output gate는 어떤 정보를 output으로 내보낼지 정하게 됩니다. 먼저 sigmoid layer에 input data를 넣어 output 정보를 정한 후 Cell state를 tanh layer에 넣어 sigmoid layer의 output과 곱하여 output으로 내보냅니다.

LSTM 예제

LSTM을 처음 제안한 논문에서 LSTM의 성능을 확인하기 위해 제시한 문제

RNN을 이용한 훈련 및 결과

  • RNN code
  • 훈련
  • 결과

LSTM을 이용한 훈련 및 결과

  • LSTM code
  • 훈련
  • 결과

감성 분석

감성분석 Sentiment Analysis

  • 입력된 자연어 안의 주관적 의견, 감정 등을 찾아내는 문제
  • 이중 문장의 긍정/부정 등을 구분하는 경우가 많음

실습 data upload

label 설정

train_text 조회

text 추출

label data 설정

tokenization 과 cleaning

  • tokenization : 자연어를 처리 가능한 최소 단위로 나누는 것
  • cleaning : 불필요한 기호를 제거

cleaning 함수

훈련용 데이터 확보

훈련용 데이터 조회

데이터 크기 맞추기

  • 학습을 위한 네트워크에 입력을 넣을때 입력 데이터는 그 크기가 같아야 한다.
  • 긴 문장은 줄이고 짧은 문장은 공백으로 채움
  • 15만개의 문장 중 대부분이 40단어 이하

모델 구성

Embedding Layer

  • Embedding Layer : 자연어를 수치화된 정보로 바꾸기 위한 레이어
  • 자연어는 시간의 흐름에 따라 정보가 연속적으로 이어지는 시퀀스 데이터
  • 영어는 문자 단위, 한글은 문자를 넘어 자소 단위로 쪼개기도 한다. 혹은 띄어쓰기나 형태소로 나누기도 함
  • 여러 단어로 묶어서 사용하는 n-gram 방식도 있음

학습

결과

0개의 댓글