머신러닝

6-22 LSTM RNN에 의한 High Pass Filtering

coding art 2019. 8. 21. 17:04
728x90



지난해 겨울 텐서플로우 OpenCV 출간 이후 7개월 만에 2권에 해당하는 “Scikit PyTorch 머신러닝을 출간하게 되었다. 각권이 450 페이지이므로 합 900 페이지에 달하는 내용이라 무슨 머신러닝을 공부하는데 분량이 왜 이렇게 많은가? 하고 의문을 가질 수도 있겠으나 그 내용이 튜토리얼성에 가까워 사실 그렇게 큰 부담은 없는 책이다. 물론 책 내부에 파이선 코드를 끼워 넣는 먹통 짓은 지금 세상에서는 할 필요가 없을 것이다. 해당 책의 머리말에 써둔 하이퍼링크 목차를 다운받으면 블로그를 직접 열어 볼 수 있으며 거기서 예제 코드를 다운 받을 수 있다.


 

1권에 해당하는 텐서플로우 OpenCV 머신러닝에서는 20179월경부터 201812월 사이에 머신러닝을 이해하고자 하는 필자의 열공(?) 내용을 담아 보았다면 2권에서는 1권에서 제기되었던 여러 내용들에 대해서 해답을 찾아가는 내용들을 꽤 많이 포함하였다. 2권이라고 해서 내용적으로 완전히 정리된 것은 아니기 때문에 다시 3권의 출발점이 될 수도 있을 것이다.

 

다소 아쉬운 점은 흥미 위주로 시작했던 1, 2권의 Softmax 관련 내용을 완전히 정리하지는 못했는데 이 그 이유는 R&D 영역으로 넘어갔기 때문이다. 2020년에는그 내용까지도 포함하여 출간할 계획이다.

 

본 서의 출간 목적은 작가들과 출판사가 염원하는 베스트셀러 화가 목표가 아니다. 사회적으로 인공지능(머신러닝)에 대한 이해 필요성이 점증하는 시기이며, 인공지능 분야의 발전 속도가 상당히 빠르기 때문에 그에 맞춰서 비전공자라 할지라도 머신러닝에 입문해 볼 수 있도록 경험과 생각을 공유해 보고자 하는 것이다.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

반대로 고주파 성분만을 필터링 해 보자

. 2가지 파형 즉 저주파인 1.0*Sin(2.0*t) 와 상대적으로 고주파인 0.5*Sin(50*t)를 혼합한 파형을 엑셀에서 1000A 컬럼 데이타로 생성한다. 이어서 다시 고주파 노이즈 부분인 0.5*Sin(50*t) 파형으로 다시 숫자 컬럼 데이타 B를 생성해서 CSV 포맷으로 저장한다. 시간 t 의 간격은 0.01로 설정한다.

 

아울러 RNN 필터링 코드를 엑셀 CSV 데이터 파일과 같은 폴더에 두도록 한다. RNN 필터링 코드는 6-19에서 사용했던 rnn_low_pass_filtering.py를 그대로 사용하기로 한다. 위 그림은 1000개의 데이터에서 20% 15%를 사용하여 필터링한 결과이다. 200개 이하에서는 필터링이 불완전하여 진폭의 영향을 받고 있으나 20% 이상의 학습 데이터를 사용하면 정확한 필터링 결과가 얻어지고 있다.

 

결론적으로 저주파 필터링과 마찬가지로 고주파 성분 필터링도 가능하다.