1차 함수와 x 축과의 만나는 점을 찾아내는 문제는 2개의 1차 방정식의 교점을 구하는 문제의 특수한 경우라고 볼 수 있다. 즉 2개의 1차 방정식 중 1개가 x 축이 되는 경우이다. 즉 교점의 좌표를 (x0, y0)라고 한다면 x축과의 교점은 (x0, 0) 이 된다. 따라서 간단한 기하학적 아이디어를 사용하여 least square 기법을 적용해 보기로 한다.
(x,y) 평면에서 1차 방정식 Ax+By+C=0 과 x축 상의 1점 P(x0, 0) 와 최단 직선거리는 그림의 d 로 표현된다. 따라서 y = 0 일 때 방정식의 해는 (x,y) 평면상에서 x축과 교차하는 직선의 교점을 찾는 문제로서 간단히 방정식 Ax + C = 0을 푸는 문제로 바뀐다,
기하학적인 방법으로서 x축에서 방정식 Ax+By+C=0에 수직한 최소 직선거리 d 의 제곱을 cost 함수로 선택하여 그 값을 최소화 하도록 하자.
머신 러닝을 시작하기 위한 초기 조건은 y=0 인 x축 상에 위치한 1점 P (x0, 0) 의 값을 TensorFlow 의 난수 명령을 사용하여 임의의 값 즉 W에서 시작하기로 한다. 여기에서 웨이트 W는 미지의 교점 즉 x 좌표를 뜻한다고 보면 된다.
d의 제곱이 위와 같이 표현되면 TensorFlow 모듈을 사용하는 linear regression 예제 코드를 쉽게 변경하여 사용할 수 있음을 알 수 있다. 이 예제에서는 특별히 바이어스 b = 0 인 경우이다.
linear regression 예제 코드에서 hypothesis 와 cost 는 다음과 같이 코딩되었음에 착안하자.
hypothesis = x_train * W + b
여기서 x_train 과 y_train 은 각각 리스트 데이터 구조를 가진다. 이 코딩을 참조하여 다음과 같이 코드 형태를 수정하자.
hypothesis = A_train * W
여기서 학습 데이터인 A_train, B_train, C_train 은 다음과 같이 리스트 데이터 구조로 주어진다.
A=1, B=1, C=-1 인 수치 예제를 고려하자. 이 문제는 다음과 같이 2개의 직선의 방정식을 의미한다. 연립하여 풀면 해는 (1, 0)이 된다.
x + y – 1 = 0,
y = 0
1/√2 = 0.707 로 두면 리스트 데이터는 다음 같이 A_train = [ 0.707 ], B_train = [ 0.707 ], C_train = [ 0.707] 으로 설정된다.
learning rate= 0.01에 1000회 학습횟수를 주어 계산된 결과로서 W = 1.0 즉 해는 x = 1.0 임을 알 수 있다.
이 예제에서도 hypothesis 구성이 linear regression 과 다르다는 점에 유의한다. 특히 앞으로 다루게 될 중학교 또는 고등학교 수준의 방정식 문제와 더 나아가 대학 수준의 수치해석 문제들에 있어서도 머신 러닝에 의해서 문제를 해결하려면 문제에 적합한 hypothesis 구성이 전제 되어야 한다.
linear_reg_1wn1chaeqn_01
http://blog.daum.net/ejleep1/543
신기한 방법론이네요! 문제를 어떻게 프레이밍하느냐에 따라 방법론이 갈린다는게 신기하네요ㅎㅎ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
머신 러닝 다루는 사람들이 현실적인 어려운 문제들만 학습시키고 있는데 아무리 머신이라해도 사람이 배우는 내용 중에서 특히 중고등학교 기초수학을 제대로 학습을 시켜야 더 많은 분야에서 머신 러닝을 활용할 수 있겠지요
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit