Professional Documents
Culture Documents
08 - 2 - RNN 고급 활용
08 - 2 - RNN 고급 활용
컴퓨터공학과 황준하
Contents
1. apple 주가 데이터 준비
2. GRU
3. 스태킹 순환층
4. RNN 드롭아웃
5. 양방향 RNN
2/10
RNN 고급 활용
1. apple 주가 데이터 준비
학습 데이터와 검증 데이터 분리
프로그램
◦ 08_2_1_apple 주가 예측 .ipynb
학습 데이터와 검증 데이터 분리
◦ 학습 데이터 : 70%
◦ 검증 데이터 : 30%
3/10
RNN 고급 활용
2. GRU
4/10
RNN 고급 활용
2. GRU
layers.GRU()
SimpleRNN, LSTM 과 사용 방법 동일
프로그램
◦ 08_2_1_apple 주가 예측 .ipynb
x = layers.GRU(16, return_sequences=False)
(inputs)
5/10
RNN 고급 활용
3. 스태킹 순환층
RNN 스태킹
FCNN (Fully-Connected Neural Network)
◦ 층의 개수는 ? 1 개 ? 3 개 ? 10 개 ?
◦ 층이 많으면 표현력 증가 과대 적합 가능성 증가
RNN
◦ 층이 1 개일 필요가 있나 ? 여러 개 RNN 층 스태킹
(stacking)
◦ 표현력 증가
◦ 학습 시간 길어짐
기존 stacking
6/10
RNN 고급 활용
3. 스태킹 순환층
RNN 드롭아웃
RNN 두 가지 드롭 아웃
◦ 레이어 사이의 드롭 아웃 : 기존과 같이 RNN 레이어 간 (
또는 RNN 레이어와 다른 레이어 사이 ) 의 드롭 아웃
◦ 순환 드롭 아웃 마스크
순환 드롭 아웃 마스크
◦ 하나의 RNN 순환 층 내에서 타임스텝 사이에 드롭 아웃을
적용
일반적으로 모든 타임스텝에 동일한 드롭아웃 마스크 적용
x = layers.LSTM(16, return_sequences=False,
recurrent_dropout=0.3)(inputs)
◦ 과대 적합을 방지하기 위해 사용 가능
문제 및 데이터에 따라 효과가 다를 수 있음
8/10
RNN 고급 활용
5. 양방향 RNN
양방향 RNN
(0, 1, 2) (2, 1, 0)
입력 (0, 1, 2)
9/10
RNN 고급 활용
5. 양방향 RNN
◦ 최종 출력
(0, 1, 2) (2, 1, 0)
weight RNN + bias = Output
입력 (0, 1, 2)
RNN
layers.Bidirectional(layers.LSTM(16))
inputs = keras.Input(shape=(50, 1))
x = layers.Bidirectional(layers.LSTM(64,
return_sequences=True))(inputs)
x = layers.Bidirectional(layers.LSTM(32,
return_sequences=True))(x)
x = layers.Bidirectional(layers.LSTM(16,
return_sequences=False))(x)
outputs = layers.Dense(1)(x)
10/10
RNN model
고급 활용 = keras.Model(inputs=inputs, outputs=outputs)
연습 문제
apple 주가 예측 실험 (apple_stock2.csv)
apple_stock2.csv 데이터는 1980 년부터 2021 년까지의
일별 주가 (Date, Open, High, Low, Close 등 ) 를 포함하고
있다 .
◦ 50 일 동안의 Open, High, Low, Close 주가를 기반으로 그
다음 날의 Open 주가를 예측하는 RNN 프로그램을 작성하라 .
◦ 하나의 예제의 경우 x, y 는 다음과 같이 표현된다 .
x : [[1, 2, 3, 4], [3, 2, 3, 2], ..., [3, 4, 5, 2]]
y : [5] 또는 [[5]]
즉 , x 의 전체 shape 은 [?, 50, 4], y 는 [?, 1]( 또는 [?, 1, 1]) 이 됨
◦ MinMaxScaler 를 사용하여 0~1 로 스케일링한다 .
◦ 전체 데이터의 30% 를 검증 데이터로 사용한다 .
◦ epochs=100
11/10
RNN 고급 활용