3.1 연구대상 지역
본 연구에서는 한반도 중부에 위치한 강원도 내 상류 한탄강 유역을 연구 대상 지역으로 선정하였다. 해당 유역은 Fig. 1에 제시된 바와 같이 한탄대교를 기준으로 상류에 위치하고 있으며, 임진강의 주요 지류인 한탄강이 이 지역의 주요 수로를 형성하고 있다. 한탄강의 본류
길이는 175.81 km에 이르며, 전체 유역 면적은 1,063.96 km2이다. 이 유역 내 수위 관측을 위해 3개의 수위 관측소가 설치되어 있으며, 이들은 각각 삼합교(관측소 1), 장수대교(관측소 2), 한탄대교(관측소
3)이다. 또한, 해당 유역의 강우량 정보는 청양리, 오덕초교, 서면초교, 다목초교, 용담교, 명월리 등 6개의 인근 강우 관측소로부터 수집된다.
Fig. 1. Study Area and Location of Waterlevel and Rain Stations
3.2 학습자료 전처리
본 연구에서는 2019년 7월 1일부터 2021년 10월 31일까지 삼합교, 장수대교, 한탄대교에서 수집된 연속적인 수위 데이터를 이용하였다. 수위
데이터는 10분 간격으로 측정되었으며, 이는 Fig. 2와 Fig. 3의 (b)-(d)에 해당한다. 또한, 인근 6개의 강우 관측소에서 수집된 강우 데이터를 이용하여 Thiessen 가중 평균법을 통해 평균 면적 강우를 산출하였다.
이는 Fig. 2와 Fig. 3의 (a)에 해당한다.
본 연구에서는 실시간 홍수예보 활용을 목표로 딥러닝 기반의 하천 수위 예측 모델을 설계하였다. 일반적으로 연속적인 데이터에 대한 딥러닝 예측 모델은
크게 3가지 방법으로 구성될 수 있다(Han et al., 2023). 첫 번째는 단일타겟(single target) 모델로 기존 하천 수위 예측 시 일반적으로 사용되던 방식으로, 예측 시간별로 각 모델을 구축하여
개별적으로 예측을 수행하므로, 예측시간이 m개인 경우, 모델 개수도 m개로 동일하며, 각 모델의 출력갯수는 1개가 된다. 두 번째는 재귀적(recursive)
모델로, 단일 모델이 예측한 결과를 다음 단계의 입력자료로 다시 정의해서 사용하는 모델이다. 따라서 예측 시간과 무관하게 모델 개수는 1개이나, 예측
시간이 증가하면서 모델 오차가 누적되어 예측 정확도가 저하된다는 단점이 있다. 세 번째 방식인 다중타겟(multi target) 모델은 시계열 예측과
유사하게 예측 시간 m까지 예측을 수행하므로, 모델 1개로 인한 출력 개수는 m개가 된다. 일반적으로 많이 사용되는 단일타겟 모델은 예측 시간별로
개별 모델 구축이 필요하고, 예측 시간이 늘어날수록 모델의 수가 증가되어 구축 복잡성이 높아지고, 유지 관리에 소요되는 전산 자원이 과다하게 소모된다는
단점이 있다. 특히, 각 모델이 독립적으로 예측을 수행하므로, 예측에 필요한 데이터의 상관관계를 효과적으로 반영하지 못하고, 시간 간의 일관성 있는
패턴을 유지하기 어려우므로, 시간에 따른 연속성을 고려할 때 한계가 있을 수 있다. 반면 다중타겟 모델은 전체 손실을 최소화하여 다양한 선행시간에
대해 학습되므로 특정 리드 타임에 대한 성능이 저하될 수 있지만, 일관성 있는 시계열 패턴 유지 및 예측 효율성을 높일 수 있다는 장점이 있다. 본
연구에서는 실시간 관점에서 수위 자료의 시계열 일관성을 고려하고, 연산 및 모델 유지관리의 효율성을 고려하여 다중타겟 모델 개념으로 학습을 수행하고자
하였다.
이에 따라 학습 및 검증 데이터셋은 실시간 입력 데이터 형식을 모방하여 구성되었다. 기본적으로 모델은 과거 720분 동안의 72개의 시점에서 수집된
관측 데이터를 이용하여, 향후 360분까지의 36개의 시점을 예측하는 것을 목표로 한다.
데이터의 처리 절차는 다음과 같다. 먼저 데이터 정제 및 정규화 작업을 수행하였다. 결측값 처리를 위해 중위값 대체(median imputation)
데이터 보간 기법을 적용하였다. 이 보간 방법은 각 열의 중위값으로 결측값을 대체하여 데이터 연속성을 유지하면서 잠재적인 이상치의 영향을 최소화한다.
또한, 데이터의 표준화를 위해 파이썬 머신러닝 라이브러리인 scikit-learn의 StandardScaler를 사용하였으며, 이는 각 데이터($x_{i}$)에
대하여 Eq. (3)과 같이 평균을 0, 분산을 1로 맞추는 방식으로 수행된다.
또한, 시계열 데이터를 시퀀스-투-시퀀스(sequence-to-sequence) 예측을 위해 준비하는 과정에서는 슬라이딩 윈도우(sliding window)
방식을 사용하였다. 이 방법을 통해 입력-출력 쌍을 생성하였으며, 각 입력 시퀀스는 72개의 시간 단계(input_steps)로 구성되었고, 여기에는
강우 및 3개 관측소의 수위 데이터가 모두 포함된다. 이에 대응하는 출력 시퀀스는 36개의 시간 단계(output_steps)로 구성되며, 목표 변수는
관측소 3의 수위이다. 슬라이딩 윈도우 기법은 창을 점진적으로 이동시키면서 시퀀스 데이터를 생성하게 된다.
본 연구에서는 홍수 예경보 발령 예측 정확도를 높이기 위해서 중요 기준이 되는 고수위 및 수위 상승 시퀀스들을 별도로 분리하여 학습데이터 세트를 구분하고
이로 인한 예측 성능의 차이를 확인하고자 하였다. 이를 위해 데이터 세트 구성 과정에서 두 가지 필터링 기준을 적용하였다. 첫 번째는 입력데이터 시간
범위에서 강우량이 0.1 mm 이상인 데이터가 있는 경우만을 필터링하여 총 30,067개 학습 데이터세트(Dataset type 1)를 구성하였다.
다만, 이렇게 구성된 데이터 세트에서는 강우와 그에 따른 수위 변화가 없는 기간이 강우로 인한 수위 상승이 있는 기간보다 더 빈번하게 나타났다. 이러한
데이터를 학습에 사용하면 모델이 낮은 수위 상승을 예측하는 데 최적화될 수 있으며, 이는 홍수와 같은 중요한 사건에서의 예측 성능을 저하시킬 수 있다.
이에 모델의 성능, 특히 첨두유량 및 수위 상승 예측 성능을 향상시키기 위해 두 번째 필터링 기준을 적용하였다. 적용 기준은 입력 데이터 시간 범위에서
강우량이 0.1 mm 이상이고, 예측 데이터 시간 범위에서 예측하고자 하는 한탄대교(관측소 3)의 최대 수위가 EL.2m 이상인 데이터를 필터링하였다.
그 결과 13,801개 학습 데이터세트(Dataset type 2)를 구성하였고, 이 필터링 기준에 따라 구분된 학습 데이터 세트의 일부를 Fig. 4에 표시하였다. 파란색 선은 입력자료이며 주황색 선은 예측 목표값이다.
최종적으로 구성된 학습데이터 세트를 정리하면 다음 Table 1과 같다.
Fig. 2. Observed Rain and Waterlevel Data for Training. (a) Rain Data, (b) Waterlevel
Data(Station 1), (c) Waterlevel Data(Station 2), (d) Waterlevel Data(Station 3)
Fig. 3. Observed Rain and Waterlevel Data for Test. (a) Rain Data, (b) Waterlevel
Data(Station 1), (c) Waterlevel Data(Station 2), (d) Waterlevel Data(Station 3)
Fig. 4. Pre-processed Dataset with Filtering for Training and Validation
Table 1. Summarizes the Dataset
Category
|
Dataset type 1
|
Dataset type 2
|
Filtering Criteria
|
Rainfall ≧ 0.1mm
|
Rainfall ≧ 0.1mm
Maximum water level of target station ≧ EL.2m
|
Number of dataset
|
30,067
|
13,801
|
3.3 하천홍수예측을 위한 딥러닝 신경망 최적화
Dataset type 1과 Dataset type 2를 각각 이용하여 AutoKeras가 최적화한 딥러닝 모델은 다음 Table 2와 같은 하이퍼파라미터를 갖는다. AutoKeras를 통해 최적모델을 선정할 때 100번까지 모델 구조 탐색을 시도하도록 조건을 설정하여, 오차가
적고 정확도가 높은 모델이 선정되도록 하였다.
30,067개의 데이터세트(Dataset type 1)를 모두 이용하였을 때, 16번째 모델 구성에서 최적화된 것으로 나타났다. 옵티마이저로 확률적
경사 하강법(SGD), 학습률 0.01일 때 학습 손실(loss)는 0.0817, NSE는 0.9111이었고, 검증 손실은 0.0907, NSE는
0.9763로 나타나 과적합 되지 않고 안정적으로 딥러닝 신경망을 최적화하였다.
Fig. 5는 Dataset type 1 활용한 모델의 학습 및 검정 과정의 epoch 별 오차와 NSE의 변화를 보여준다. 결정된 딥러닝 모델(Model 1)은
Fig. 6과 같이 크기(None, 72, 4)를 갖는 입력 레이어로 시작한다. 여기서 72는 시간 단계(time steps)를, 4는 입력변수(features)의
수를 나타낸다. 이어서 데이터 타입 변환 레이어(cast_to_float32), 다차원 입력 데이터를 일차원 벡터로 변환하는 평탄화 레이어(flatten),
평탄화된 데이터를 입력으로 받아 36개의 출력을 생성하는 회귀 출력 레이어(regression_head_1)와 완전 연결층(Dense)으로 이어지는
구조이며, 총 10,404개의 학습 가능한 파라미터를 갖는다.
최적 결정된 두 모델 모두 시계열 수위 예측에 좋은 성능을 보인 LSTM 구조를 갖지 않지만, 인위적인 조정없이 100번의 모델 탐색 과정에서 최적
선정된 모델로써 각 데이터 특성을 반영하여 가장 높은 정확도와 낮은 오차로 학습된 것이다.
13,801개의 데이터세트(Dataset type 2)를 이용하였을 때는 3번째 시도한 모델 구성에서 최적화되었다(Fig. 7). 이때 회귀 헤드의 dropout 비율 0.5, 확률적 경사 하강법(SGD) 옵티마이저, 학습률 0.01이 사용되었다. 검증 손실은 0.1773으로
학습 손실 0.2300보다 낮았으며, 검증 NSE는 0.964이다.
최적화된 모델(Model 2)의 구조는 Fig. 8에 나타난 바와 같이 여러 핵심 요소로 구성된다. 모델은 입력층에서 (None, 72, 4) 형태의 3D 입력을 받는다. 데이터 전처리 단계에서는
CastToFloat32 레이어를 사용하여 네트워크 전체에서 일관된 데이터 타입을 유지함으로써 계산 효율성과 수치적 안정성을 향상시킬 수 있다. 과적합을
방지하기 위해 드롭아웃(dropout) 레이어가 적용되었는데, 이 드롭아웃은 학습 중 일부 뉴런을 무작위로 제거하여 모델 복잡도를 조절하고 일반화
성능을 향상시키는 모델 정규화이다.
특징 추출 단계에서는 평탄화(flatten) 레이어가 3D 입력을 1D 벡터로 변환하며, 72 * 4개의 피처로 구성된 288개의 요소를 생성한다.
출력층은 36개의 유닛을 가진 단일 Dense 레이어로 구성되며, 이 레이어는 평탄화된 피처를 36개의 시간 단계로 직접 매핑하여 수위 예측을 수행한다.
Fig. 5. Model Training Result of Each Epoch Using Dataset Type 1. (a) Regression Loss
(MAE), (b) Nash-Sutcliffe Efficiency (NSE)
Fig. 6. Structure of the Optimized Deep Learning Model Using Dataset Type 1
Fig. 7. Model Training Result of Each Epoch Using Dataset Type 2. (a) Regression Loss
(MAE), (b) Nash-Sutcliffe Efficiency (NSE)
Fig. 8. Structure of the Optimized Deep Learning Model Using Dataset Type 2
Table 2. Summarizes the Hyperparameters and Metric Results for Deep Learning Model
Training and Validation
Category
|
Parameter / Metric
|
Dataset type 1
|
Dataset type 2
|
Hyperparameters
|
regression_head_1 / dropout
|
0.0
|
0.5
|
optimizer
|
SGD
|
SGD
|
learning rate
|
0.01
|
0.01
|
Training Metrics
|
loss
|
0.0817
|
0.2300
|
NSE
|
0.9111
|
0.7315
|
Validation Metrics
|
val_loss
|
0.0907
|
0.1773
|
val_NSE
|
0.9763
|
0.9646
|
Trial Info
|
Trial ID
|
16
|
3
|
Best epoch
|
99
|
98
|