@@@ 인공지능/수학·통계를 몰라도 이해할 수 있는 쉬운 딥러닝

3 - 1. 자연어 학습 인공지능(3)

HTG 2021. 8. 30. 01:43
728x90

3-1-3. LSTM AI는 얼마나 성능이 뛰어날까?

FNN을 활용한 NLP 처리를 해보았다.

그런데 NLP에 LSTM을 적용하면 성능이 엄청나게 좋아진다고 알려짐.

실제로 1에포크 만에 학습이 가능.

 

데이터 살펴보기

3-1-1과 같음.

 

●어떤 인공지능 사용?

층수 종류 크기 활성화 함수
1층 Embedding 8983, 128 -
2층 LSTM 32 -
3층 FNN 32 ReLu
- Dropout rate = 0.1 -
4층 FNN 1 sigmoid

임베딩 레이어 뒤에 LSTM이 추가.

LSTM의 크기는 32로 설정 별다른 함수를 지정하지 않음.

 

●딥러닝 코딩

- 인공신경망 컴파일

옵티마이저(optimizer) - Adam

메트릭(metrics) - accuracy

로스(loss) - BinaryCrossentropy

 

keras.layers.Bidirectional(keras.layers.LSTM(32))

으로 함수를 호출한 뒤 이 안에 신경망의 종류를 입력하면 됨.

여기서 RNN중 LSTM을 활용할 것으므로 괄호 안에 keras.layers.LSTM()을 입력. 크기는 32.

 

●인공지능 학습

- 인공신경망 학습

에포크가 1이므로 콜백을 쓰지 않음.

 

- 학습 결과 출력

그래프로 출력

 

●인공지능 학습 결과 확인

- 인공지능 성능 확인하기

저자의 경우 인공지능의 최종 성능은 98.16%.

1에포크만에 엄청나게 높은 정확도에 도달.

이 책에서 다루는 인공지능 중 가장 짧은 학습을 통해 실전에 활용 가능한 성능을 뽑아낼 수 있는 모델.

그리고 다른 예제와 달리 1에포크만 학습하기 때문에 그래프가 없음.

나의 경우에는 98.74%로 좋은 성능을 보임.

 

 

CNN과 LSTM의 만남

LSTM은 시계열 데이터를 학습하는 능력이 뛰어남. 그런데 영상 처리 분야에서도 시계열 데이터가 있음.

영화나 유튜브 영상 같은 동영상이 바로 시계열 영상 데이터에 해당.

영상 정보 처리에는 CNN을 활용하면 좋은데 일반적인 LSTM은 FNN과 유사한 구조로 작동.

이에 Convolutional LSTM이라는 구조를 제안. 

 

하이퍼 파라미터 조작

LSTM 사이즈 조작.

128로 조정

************ TRAINING START ************ 129/129 [==============================] - 63s 461ms/step - loss: 0.2021 - accuracy: 0.9368 - val_loss: 0.0676 - val_accuracy: 0.9864

 

LSTM 활성화 함수 조정.

activation='tanh' 사용

************ TRAINING START ************ 129/129 [==============================] - 24s 169ms/step - loss: 0.2162 - accuracy: 0.9312 - val_loss: 0.0520 - val_accuracy: 0.9874

 

둘다 사용

************ TRAINING START ************ 129/129 [==============================] - 63s 466ms/step - loss: 0.1544 - accuracy: 0.9501 - val_loss: 0.0523 - val_accuracy: 0.9855