5-7 비선형 방정식 x-cos(x) = 0 의 머신러닝 TensorFlow 수치해석

in #kr5 years ago

스팸메일 판별이라든지 또는 의학용 이미지 데이터 처리와 같은 머신 러닝의 전문적인 영역에서의 응용도 있긴 하지만 2018년 현재까지의 머신 러닝의 응용 범위는 너무나 제한적이었다고 보인다. 적어도 머신 러닝이 인공지능의 영역에서 중요한 역할을 맡고 있는 것이 사실이라면 머신 러닝 알고리듬으로 수학 중에서 아주 기초적인 방정식 풀이 정도는 당연히 학습에 따라 처리할 수 있어야 할 것이다. 사람이 손으로 풀 수 있는 2차, 3차 및 4차 방정식을 넘어 수치해석법(Numerical Analysis)에 의존하고 있는 문제들까지 머신 러닝 학습법을 통해 처리할 수 있는 역량이 있는지 확인해 보도록 하자.

일반적인 수치해석 분야로 TensorFlow 의 용도를 확장해 보도록 하자. 이미 TensorFlow 가 2차 방정식을 비롯한 다항식 형태의 방정식을 대상으로 hypothesis를 설정 후 cost 함수를 구성하여 최소화함에 의해서 해를 구할 수 있었다. 여기서는 더 나아가 다항식이 아닌 삼각함수를 포함하는 방정식의 사례로서 f(x) = x - cos(x) 에 대해서 Newton Raphson 수치해석법이 아닌 TensorFlow 에 의한 해법을 적용해 보기로 한다.

noname01.png

f(x) = x- cos(x) 가 x축과 만나는 점은 x = 0.7390 이며 Newton Raphson 기법에 의해 계산이 가능하다. 그래프 작도는 pylab 과 numpy 모듈을 사용하여 작도하였다.
이 방정식을 TensorFlow 로 풀기 위해서는 이 함수의 어떤 함수인지 학습을 시킬 필요가 있으며 3개의 점 좌표 (0.0, -1.0), (0.4, -0.5211), (1.0, 0.4597) 을 사용하였다. 아울러 이 방정식의 해가 1개라는 점을 감안하여 선형회귀 형태와 유사하게 아래와 같이 hypothesis를 설정한다.

hypothesis = f(x_train) - f(W) = (x_train - tf.cos(x_train) - W + tf.cos(W))

즉 hypothesis 가 0 이 될 때의 웨이트 W 값을 찾는 문제로 귀착된다.

noname02.png

최소 자승법을 적용하여 계산한 결과 40회 반복 계산에서 cost 함수의 값이 10의 –10승 크기일 때에 해 W= 0.7390 이 얻어졌다. 아래의 계산 결과는 학습을 위한 3개의 점 좌표 중 1개를 변경한 계산 사례이다. 학습을 위한 3개의 점 좌표 (-1.0, -1.5403), (0.0, -1.0), (1.0, 0.4597) 가 사용되었다. 즉 어떤 학습을 위한 점 좌표와 무관하게 TensorFlow가 해를 찾아내는 것으로 보인다.
학습용 점 좌표의 수를 3개, 2개 ,1개를 사용해도 cost 함수의 값 크기가 10의 -10승 정도 이상의 정밀도로 해를 찾아준다.

noname03.png

필자의 블로그에서 파이선 코드를 다운받아 실행해 보자
http://blog.daum.net/ejleep1/685
xcoseqn_regression_01.py

Sort:  

짱짱맨 호출에 응답하여 보팅하였습니다.

오늘 블록체인 전문 콘텐츠를 만드는 「Keep !t」의 웹진 구독서비스를 시작합니다. 스팀잇 사용자를 위한 75% 할인구독 포스팅을 참고해 주세요.

KEEP!T이 북이오에 유료웹진을 75%할인된 가격으로 오픈합니다!

방정식이 코드에 주어지지 않으면 어떻게 되나요? 입력값이 더 많아야겠죠?
그냥 갑자기, 방정식을 알면 굳이 머신러닝으로 할 필요가 없을 것 같고, 실제 상황에선 방정식을 모르는 경우가 더 많을 것 같다는 생각이 들어 여쭤봅니다.

Coin Marketplace

STEEM 0.27
TRX 0.11
JST 0.032
BTC 64579.45
ETH 3101.05
USDT 1.00
SBD 3.83