머신러닝 프로젝트 – DNN을 이용한 수식 예측하기

머신러닝 프로젝트 – DNN을 이용한 수식 예측하기

2018년 October 19일 0 By SUNGMIN

 

자세한 내용은 ppt에 기재 되어있다.
여기서는 매우 간단한 프로젝트이지만 ppt가 46page나 되기 때문에 프로젝트에 대해서 간단히 요약해서 보여주겠다.

해당 프로젝트의 목표는 데이터 만을 이용해 y = 3x, y = x^3, y = lnx 3개의 수식에 대해 x, y 간의 관계를 예측하는 DNN 모델을 만드는 것이다.

 

y = 3x 그래프와 특징. 순간변화율이 일정하다.

 

y = x^3 그래프와 특징. x가 커질수록 순간변화율의 변화율이 커진다.(x > 0 일때)

 

y = lnx 그래프와 특징. x가 커질수록 순간변화율의 변화율의 절대값이 줄어든다. (x > 0 일때)

 

아래는 y = 3x의 관계를 가지는 데이터를 생성하고 DNN모델을 구축해 학습하는 코드이다.

y = x^3 와 y = lnx의 코드는 위 y = 3x의 코드에서 Data 클래스의 ret_xy 함수내에 각 함수(x^3, lnx)를 리턴하는 값을 제외하고 모두 동일하다.

그래서 따로 설명하지 않겠다. (자세한 내용은 ppt에 있다.)

 

위의 그래프는 실제 함수의 그래프 아래의 그래프는 DNN모델을 통해 예측한 그래프이다. 그래프 형태가 다를수록 loss가 크게 나타난다.

 

위 내용을 통해 선형그래프가 비선형 그래프 보다 학습이 잘 된 것을 알 수 있다.

 

y = lnx에 대해 100 epochs와 500 epochs를 학습 시킨 결과.

비선형 그래프라도 학습 횟수가 늘어남에 따라 학습이 잘 된것을 알 수 있다.

 

왼쪽은 y = x^3을 500epoch 학습시킨 그래프
오른쪽은 y = lnx를 500epoch 학습시킨 그래프이다.
같은 비선형 그래프라도 x의(x > 0 일때) 증가에 따른 f”(x)의 절댓값이 큰 구간일 수록 학습이 어렵다. 즉, 순간변화율의 변화율이 큰 구간일 수록 학습이 어렵다.

 

프로젝트 결과.

 

배운점 & 느낀점.

 

매우 간단한 프로젝트 였지만 이론서에서 없던 내용에 대해 생각해 볼 수 있어 좋았던 프로젝트 였던 것 같다.ㅎㅎ
다음 프로젝트는 CNN 과 아두이노를 접목 시킨 프로젝트를 진행 해봐야지ㅋㅋ
혹시 질문사항이나 문의사항이 있다면 댓글 또는 이메일 보내주세요.

 

아래 파일은 PPT 파일 입니다. ppt사용은 자유롭게 사용하셔도 되나 저작권 표기는 꼭 해주세요.ㅎㅎ
간단한 프로젝트였지만 ppt 만드는데 은근 시간이 많이 걸렸어요 ㅜㅜ

DNN_project_PPT

 

코드는 아래 github 사이트에서 다운로드 하실 수 있습니다.

https://github.com/MLlounge/ML-Project/blob/master/Basic%20Project/DNN%20-%20Train%20Mathematical%20Expression(lnx)/DNN%20-%20Train%20Mathematical%20Expression(lnx).py