더북(TheBook)

1 Bidirectional LSTM

 

이 책에서는 전방향과 후방향을 모두 사용하는 양방향 RNN에 장단기 메모리(LSTM) 셀을 가진 모델을 다룬다. RNN이 연쇄된 문장을 다루는 데 유능하지만, 연쇄가 매우 길어질 때는 기울기 소실 문제(Bengio, 1994)가 생긴다. 이로 인해 필요한 정보를 멀리까지 보낼 수 있는 방안으로 LSTM이 고안됐다.

단어의 연쇄로 이루어진 데이터가 임베딩 레이어를 거치게 되는데 다음 예시 코드를 보자. max_length는 한 문장의 최대 단어 길이로 패딩의 기준이 된다. Bidirectional LSTM의 첫 번째 층은 연쇄로 이루어져 있기 때문에 return_sequences=True로 설정한다.

model = Sequential([
    Embedding(vocab_size, embedding_dim, input_length=max_length),  
    Bidirectional(LSTM(64, return_sequences=True)), 
    BatchNormalization(),
    Bidirectional(LSTM(32)),
    Dense(16, activation='relu'),
    Dense(n_class, activation='softmax')
])
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.