머신러닝

5-3 TensorFlow solution of x - 1.12345 = 0

coding art 2021. 7. 7. 18:24
728x90

머신 러닝 연구가 아무리 첨단을 간다 해도 머신 러닝이 그렇게 대단한 툴이라면 이 정도 간단한 문제는 당연히 풀 수 있어야 하겠지. 항상 어려운 어렵고 난해한 문제만 쫓아다니다 보니 x 1.12345 = 0 과 같이 우스울 정도로 쉬운 문제를 어떻게 코딩해야 할지 해보기 전에는 막막하다는 생각이 들기도 한다. 물론 머신 러닝이 컴퓨터에 인스톨되기 때문에 기본적인 덧셈, 뺄셈, 곱셈, 나눗셈의 4칙 연산이 가능하므로 양변에 1.12345를 한번 더해주면 끝나는 간단한 문제이지만 이 방법에 의해서 푼다면 그것은 머신 러닝이라 할 수는 없다.

 

머신 러닝의 특징은 데이터 학습, random number 생성에 의한 웨이트와 편향(바이어스) 설정, hypothesis 설정, 경사하강법 적용 및 웨이트와 편향의 업데이트 과정일 것이다. 이와 같은 머신 러닝의 틀에 맞춰 TensorFlow를 사용하여 일차 방정식 x 1.12345 = 0을 처리해 보자. 방정식이 간단하므로 직접 hypothesis를 설정하고 제곱하여 cost 함수를 구성하도록 한다.

cost 함수에 경사 하강법 적용을 위해서 random_uniform()을 사용하여 충분히 넓은 범위 구간에서 weight w의 초기 값을 부여한다. 항상 동일한 계산 결과를 보려면 난수의 seed 값을 일정하게 부여하도록 한다.

learning rate = 0.9 로 설정하여 경사하강법에 의해 step 0 에서 90 회까지 총 91회에 걸쳐 weight 값을 업데이트 하면서 cost 함수의 최소값을 아래와 같이 계산하여 찾게 된다.

물론 TensorFlow 라이브러리를 사용하여 머신 러닝에 의해 해를 구할 수도 있지만 이 방정식은 너무 간단하여 수계산을 통해서도 해를 계산하여 확인할 수도 있다. cost 함수는 다음과 같이 제곱의 형태로 주어진다.

이 미분 항을 사용하여 그 다음 업데이트 된 웨이트 값을 아래와 같이 계산 해보자.