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는 앞으로 들어오는 새로운 정보 중 어떤 것을 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을 이용한 훈련 및 결과
LSTM을 이용한 훈련 및 결과
감성 분석
감성분석 Sentiment Analysis
- 입력된 자연어 안의 주관적 의견, 감정 등을 찾아내는 문제
- 이중 문장의 긍정/부정 등을 구분하는 경우가 많음
실습 data upload

label 설정
train_text 조회

text 추출

label data 설정

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

훈련용 데이터 확보

훈련용 데이터 조회

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


모델 구성

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

결과
