최근 출간한 “파이선 코딩 초보자를 위한 Scikit∙PyTorch 머신러닝”의 6장-19 RNN 편에서 이미 고주파 노이즈가 섞인 데이터의 저주파 필터링에 관해서 다루어 보았다. 이번에는 동일한 문제에 대해서 학습용 저주파 파형의 진폭을 변경시켜 학습시킬 경우 일어나는 영향을 조사해 보기로 한다.
2가지 파형 즉 저주파인 1.0Sin(2.0t) 와 상대적으로 고주파인 0.5Sin(50t)를 혼합한 파형을 엑셀에서 1000개 A 컬럼 데이타로 생성한다. 이어서 다시 0.5Sin(2.0t) 파형으로 다시 숫자 컬럼 데이타 B를 생성해서 CSV 포맷으로 저장한다. 시간 t 의 간격은 0.01로 설정한다.
아울러 RNN 필터링 코드를 엑셀 CSV 데이터 파일과 같은 폴더에 두도록 한다. RNN 필터링 코드는 6-19에서 사용했던 rnn_low_pass_filtering.py를 그대로 사용하기로 한다. 위 그림은 1000개의 데이터에서 20% 즉 200개를 학습에 사용한 결과이다.
2가지 파형이 혼합된 파형에서 Sin(2.0t) 에 해당하는 파형만 필터링 하기로 하자. RNN 필터링 과정에서 진폭(Amplitude) 의 영향을 조사하기 위해 컬럼 데이터 B는 1.0Sin(2.0*t) 파형의 진폭을 0.5로 바꾸어 학습시킨 후 제대로 저주파 필터링이 되는지 결과를 관찰해 보도록 하자.
위 그림의 오른 쪽 필터링 결과를 관찰해 보면 주파수 자체는 정확히 예측되었지만 필터링 된 파형의 진폭이 원래 1.0 이었음에 반해 학습 파형의 0.5에 연동이 되어 버려 진폭이 0.5인 저주파 파형이 얻어짐을 알 수 있다.