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') ])