2.2 Long Short Term Memory(LSTM)(8)
Long Short Term Memory(LSTM)은 1997년 Hochreiter & Schmidhuber에 의해 제안된 순환신경망(RNN) 구조로
RNN의 문제점인 데이터의 장기 의존성(Long-Term Dependency)의 한계를 해결해 텍스트 생성, 음성인식, 텍스트 번역 등 순차적, 혹은
시계열 데이터의 학습 및 예측에 탁월한 성능을 보이는 모델이다.
LSTM은 4개의 layer가 서로의 정보를 주고받는 형태로 신경망이 구성된다. LSTM의 핵심은 셀 상태(cell state)인데 이것은 인간의‘기억’에
해당한다. 셀 상태는 게이트(gate)에 의해서 제어되는데, LSTM은 입력 게이트(Input gate), 망각 게이트(Forget gate), 출력
게이트(Output gate)로 이루어진다. LSTM모델은 그림 3에 나타나있다. 그림 3은 그림 2의 A부분에 해당한다. 망각 게이트는 식(1)과 같이 입력과 이전 셀의 출력에서 어떤 정보를 버릴 것인지를 결정하는 역할을 한다. 입력 게이트는 식(2)-(3)과 같이 입력되는 새로운 정보(시간 $t$에서 입력($x_{t}$)되는 정보와 $t-1$셀의 출력($h_{t-1}$)정보) 중에서 어떤 것을 셀 상태로
저장 혹은 기억할 것인지를 결정한다. 출력 게이트는 식(4)-(5)와 같이 입력과 기억 중 어느 부분을 출력으로 내보낼지를 결정한다. 식(6)은 과거 셀 상태(기억)를 업데이트해서 현재 셀 상태를 만든다. LSTM에서도 오차를 줄여가는 방법으로 순환신경망과 같이 Back Propagation
Through Time (BPTT)를 사용한다.
여기서, $W_{f}$는 망각게이트 가중치, $b_{f}$는 망각 게이트 바이어스, $W_{i}$ 는 입력 게이트 가중치, $b_{i}$는 입력
게이트 바이어스, $W_{o}$ 는 출력 게이트 가중치, $b_{o}$는 출력 게이트 바이어스, $W_{c}$ 는 셀 게이트 가중치이고, $x_{t}$는
시간 $t$에서의 입력, $h_{t-1}$는 시간 $t-1$에서의 출력, $C_{t}$는 시간 $t$의 기억(셀), $C_{t-1}$은 시간 $t-1$에서의
기억이고, $\sigma$는 시그모이드 활성화 함수, $\tanh$는 Hyperbolic tangent 활성화 함수이다.
그림. 3. LSTM모델
Fig. 3. LSTM model
2.3 데이터 전처리 및 입·출력 데이터
이 논문에서는 풍력 단지 출력을 단지별로 모으지 않고, 계통 운영자의 운영 지역 내에 있는 풍력 단지 출력을 통합적인 발전량으로 하여 발전량을 예측하였다(9).
그림. 4. 계통 운영 지역 총 풍력 발전량과 풍속
Fig. 4. Total wind power and wind speed in the system operation area
그림 4의 A구간 즉, 50시간대에 풍속은 3~4[m/s]로 바람의 흐름이 있으나 발전기의 발전량은 0이고 B구간, 550에서 650시간대의 풍속은 2~6[m/s]로
충분히 발전할 수 있는 풍속이나 발전량은 무의미한 값을 가지고 있는 것으로 보아 입력 장치의 오류 혹은 측정 오류일 수 있다. 이런 이상 값들은 딥러닝
모델을 학습할 때 예상치 못한 결과를 만든다. 그러므로 이상 혹은 오류가 있는 데이터는 식(9)와 같이 강제적으로 제거한 후 딥러닝을 실행하였다.
계통 운영자가 제공한 2010년 1월 1일 0시부터 2019년 10월 5일 23시까지의 시간별 지역 풍력 발전량(풍력 단지가 아닌)과 기상청에서 제공하는
기온(t), 풍속(s), 풍향(d), 습도(h), 증기압(a), 지역 기압(la), 해수면 기압(sa), 지면 온도(gt), 전력(p)과 일년 중
몇 번째 주(w)에 해당하는지를 추가하여 초단기 풍력 발전량을 예측하였다.
시간 i의 입력 데이터는 식(10)과 같다.
여기서, 각 기호는 기온(t), 풍속(s), 풍향(d), 습도(h), 기압(a), 지역 기압(la), 해수면 기압(sa), 지면 온도(gt), 전력(p)이고
첨자 $i$는 $i$시간을 나타낸다.
입력 데이터 요소(기온, 풍속, 풍향, 습도, 기압, 지역기압, 해수면 기압, 지면온도, 전력)들은 단위와 크기가 다르기 때문에 요소들의 정규화가
필요하다. 본 논문에서는 모든 요소에 대해 Min-Max 정규화를 시켰다. Min-Max 정규화는 식(11)과 같이 각 요소의 최소값은 0에 최대값은 1에 대응시키는 함수이다.
여기서, $x_{\min}$은 변수 $x$의 최소값, $x_{\max}$는 변수 $x$의 최대값이다.
예측시점이 dt일 때의 출력은 식(12)과 같이 작성된다.
여기서, $p_{i+dt}$는 $i+dt$시간의 전력량이다. $dt = 1$이면 $X_{i}$의 데이터를 가지고 1시간 후를 예측하는 것이다.
그림 5와 같이 예측시점이 한 시간이면 출력 데이터는 $Y_{i}=[p_{i+1}]$이고 예측시점이 두 시간이면 출력 데이터는 $Y_{i}=[p_{i+2}]$이다.
이와 같이 예측시점이 $n$ 시간이면 출력 데이터는 $Y_{i}=[p_{i+n}]$이다.
그림. 5. 예측시점별 입력데이터와 예측 출력데이터
Fig. 5. Input data and prediction output data by prediction time
그림. 6. 학습용/검증용 입력·출력데이터
Fig. 6. Input /Output data for Train/Test
딥러닝 학습을 위해 데이터를 그림 6과 같이 학습용 데이터(Train Data)와 검증용 데이터(Test Data)로 나눈다. 이 논문에서는 전체 데이터 중에서 90%를 학습용 데이터로,
10%를 검증용 데이터로 하였다.
효율적인 학습을 위해 배치크기(batch size)를 $n$으로 하면 입력은 $X =[X_{T},\: X_{T-1},\: X_{T-2},\: ...
,\: X_{T-n}]$이고 출력은 $Y =[Y_{T},\:$$Y_{T-1},\: Y_{T-2},\: ... ,\: Y_{T-n}]$가 된다.
2.4 시간별 LSTM 예측 모델
이 장에서는 LSTM 시간별 풍력발전 예측 모형에 대해 기술하였으며, 제안된 모형은 그림 7, 8과 같다.
LSTM의 시퀀스 입·출력은 그림 2와 같을 수 있으나 이 논문에서는 그림 7과 같이 예측 시점별 모델을 만들어서 시점별 풍력 발전을 예측하였다. 1시간에서 3시간을 예측하는 모델은 예측 시점이 1시간인 예측모델, 예측 시점이
2시간인 예측모델과 예측 시점이 3시간인 예측모델 각각을 학습시키고 이를 결합하여 1~3시간의 예측을 진행하였다.
그림. 7. 시간별 예측모델
Fig. 7. Hourly Forecast model
시간별 예측 모델은 그림 7과 같다. 시간별 예측 모델은:
(1) 2.4절에서 정의한 각 시간별 $X_{i}$ 데이터를 LSTM에 입력한다. 이 논문에서 사용한 LSTM은 1개 layer, 96개의 시퀀스를
갖는다. 10개의 입력을 받아서 예측 시점의 전력량을 출력한다.
(2) 6 layer의 심층 신경망을 구성한다. 3쌍의 FC layer(Full connected layer)와 ReLU(Rectified Linear
Unit) 활성화 함수로 구성한다.
FC layer는 뉴럴 네트워크로 입력층의 모든 노드와 은닉층의 모든 노들들이 서로 연결된 모델이다. 본 논문에서는 첫번째 FC는 (10, 20),
두 번째 FC는 (20, 10) 그리고 세 번째 FC는 (10, 1)의 크기를 갖는다.
활성화 함수는 식(13)의 ReLU함수를 사용한다.
역전파(backpropagation) 방법으로 오차를 줄이도록 가중치를 수정한다. 오차는 식(14)의 오차 제곱 평균(Mean Square Error)을 사용하였다.
여기서, $y_{i}$는 시간 $i$에서의 실측값, $\hat y_{i}$는 시간 $i$에서의 예측값, $n$은 샘플링 개수다.
제안한 모델은
(1) 2.4절에서 설명한 데이터 전처리를 실행하고 학습과 검증을 위한 입·출력 데이터를 만든다.
그림. 8. 제안한 단기 풍력 예측 모델
Fig. 8. Proposed short-term wind power forecast model
(2) 예측 시점별 모델을 학습하고
(3) 학습된 예측 시점별 모델들을 모아서 단기 풍력 발전을 예측한다.