본문 바로가기

Lecture AI/6장.텍스트와 시퀀스를 위한 딥러닝

(5)
5. 온도예측 실습과 함께 알아보는 순환 신경망의 고급 사용법 : 드럽아웃, 스테킹 순환층, 양방향 RNN 4. 온도예측 실습과 함께 알아보는 순환 신경망의 고급 사용법 순환 신경망의 성능과 일반화 능력을 향상시키기 위한 세 가지 고급 기술을 살펴보겠습니다. 순환 드롭아웃(recurrent dropout): 순환 층에서 과대적합을 방지하기 위해 케라스에 내장되어 있는 드롭 nicola-ml.tistory.com 상기 포스팅과 연결된 문서입니다. 그렇다고 이 문제에 머신 러닝이 적합하지 않다는 뜻은 아닙니다. 앞선 모델은 시계열 데이터를 펼쳤기 때문에 입력 데이터에서 시간 개념을 잃어버렸습니다. 그 대신 인과 관계와 순서가 의미 있는 시퀀스 데이터를 그대로 사용해 보겠습니다. 이런 시퀀스 데이터에 아주 잘 들어맞는 순환 시퀀스 처리 모델을 시도해 보겠습니다. 이 모델은 앞선 모델과 데이터 포인터의 시간 순서를 ..
4. 온도예측 실습과 함께 알아보는 순환 신경망의 고급 사용법 순환 신경망의 성능과 일반화 능력을 향상시키기 위한 세 가지 고급 기술을 살펴보겠습니다. 순환 드롭아웃(recurrent dropout): 순환 층에서 과대적합을 방지하기 위해 케라스에 내장되어 있는 드롭아웃을 사용합니다. 스태킹 순환 층(stacking recurrent layer): 네트워크의 표현 능력(representational power)을 증가시킵니다. (그 대신 계산 비용이 많이 듭니다.) 양방향 순환 층(bidirectional recurrent layer): 순환 네트워크에 같은 정보를 다른 방향으로 주입하여 정학도를 높이고 기억을 좀 더 오래 유지시킵니다. 기온 예측 문제 본 예제에서는 막스 플랑크 생물지구화학 연구소의 지상 관측소에서 수집한 데이터를 대상으로 기온 예측에 대한 문제를..
3. 순환 신경망의 이해와 SimpleRNN과 LSTM의 차이 완전 연결 네트워크나 컨브넷처럼 지금까지 본 모든 신경망의 특징은 메모리가 없다는 것입니다. 네트워크에 주입되는 입력은 개별적으로 처리되며 입력 간에 유지되는 상태가 없습니다. 이런 네트워크로 시퀀스나 시계열 데이터 포인트를 처리하려면 네트워크에 전체 시퀀스를 주입해야 합니다. 즉 전체 시퀀스를 하나의 데이터 포인트로 변환해야 합니다. 예를 들어 IMDB문제에서 영화 리뷰 하나를 큰 벡터 하나로 변환하여 처리했습니다. 이런 네트워크를 피드포워드 네트워크라고 합니다. 순환신경망(RNN)은 같은 원리를 적용한 것입니다. 시퀀스의 원소를 순회하면서 지금까지 처리한 정보를 상태(state)에 저장합니다. 사실 RNN은 내부에 루프(loop)를 가진 신경망의 한 종류입니다. RNN의 상태는 2개의 다른 시퀀스를 ..
2. 모든 내용을 적용하기: 원본 텍스에서 단어 임베딩까지 문장들을 벡터의 시퀀스로 임베딩하고 펼친 후 그 위에 Dense층을 훈련합니다. 여기서는 사전 훈련된 단어 임베딩을 사용하겠습니다. 케라스에 포함된 IMDB데이터는 미리 토큰화가 되어 있습니다. 이를 사용하는 대신 원본 텍스트 데이터를 내려받아 처음부터 시작하겠습니다. 데이터 다운로드(https://mng.bz/0tIo) 하시면 됩니다. 데이터 전처리 다운로드 받은 데이터를 훈련용 리뷰 하나를 문자열 하나로 만들어 훈련 데이터를 문자열의 리스트로 구성해 보겠습니다. 리뷰 레이블(긍정/부정)도 labels리스트로 만들겠습니다. IMDB 원본 데이터 전처리하기 import os imdb_dir = './AI_Tensorflow/data/aclImdb' train_dir = os.path.join(imdb_d..
1. 텍스트 데이터 다루기 시계열 또는 일반적인 시퀀스 데이터를 처리할 수 있는 딥러닝 모델을 살펴보겠습니다. 시퀀스 데이터를 처리하는 기본적인 딥러닝 모델은 순환 신경망(enn)과 1D 컨브넷(1D convnet) 두 가지입니다. 1. 테스트 데이터 다루기 텍스트는 가장 흔한 시퀀스 형태의 데이터입니다. 텍스트는 단어의 시퀀스나 문자의 시퀀스로 이해할 수 있습니다. 다른 모든 신경망과 마찬가지로 텍스트 원본을 입력으로 사용하지 못합니다. 딥러닝 모델은 수치형 텐서만 다룰 수 있습니다. 텍스트를 수치형 텐서로 변환하는 과정을 텍스트 벡터화라고 합니다. 다음과 같은 방법이 있습니다. 텍스트를 단어로 나누고 각 단어를 하나의 벡터를 변환합니다. 텍스트를 문자로 나누고 각 문자를 하나의 벡터로 변환합니다. 텍스트에서 단어나 문자의 n-..