딥러닝 2 - Linear Regression 의 개념
모두를 위한 머신러닝/딥러닝 강의
hunkim.github.io
모든 내용은 위의 강좌를 바탕으로 작성하였습니다.
regression (회귀분석) : 독립변수 (x)로 종속변수(y)를 예측하는것 - 지도학습의 하나
데이터를 가장 잘 나타내 줄 수 있는 선을 찾는것이 목표이다.
-cost function
머신러닝을 통해서 만들어낸 가설이 실제 데이터에 대해 얼마나 적합한지 검증을 해봐야한다.
따라서 실제 데이터와 가설을 비교하는것을 cost function (Loss) 이라고 한다.
(실제 데이터 - 가설) 의 값은 음수가 나올수도 있으며 멀리있는 데이터에 좀 더 패널티를 주기위해 제곱을 곱해
cost 를 계산한다.
결론적으로 학습을 시킨다는 것은
cost를 최소화하는 최적의 W, b 값을 찾아내는 것이다
////////////////////////실습/////////////////
앞에 1장에서 말했듯이 맨 처음엔 그래프를 정의해야한다.
variable 은 우리가 흔히 알던 변수랑은 조금 다름 느낌인데 텐서플로우가 학습하는 과정에서 자체적으로 변경시키는 변수라는 의미입니다.
tf.random_normal은 학습시키기전 랜덤한 값을 배정하는데 사용합니다. () 안에는 shape를 주게 됩니다.
reduce_mean은 평균을 내주는 함수.
cost를 최소화 할 때 옵티마이저를 정의하고 옵티마이저 중 어떤 값을 미니마이즈할 것인지 정해줍니다.
이제 여기까지 그래프가 구현이 되었으니 세션을 통해서 실행시켜 줍니다.
항상 variable들을 사용하기전에는 글로벌 변수들을 초기화 시켜줘야합니다.
위에 이제까지 한 작업의 결과물로 train이라는 노드를 생성하게 되었으므로 세션에서 train을 실행시켜 줍니다.
step은 학습 진행률을 보기 위한 것.
session.run을 통해 출력해줍니다.
상세한 진행과정은 원문 참고
Lab02-Linear Regression
Lab 2 Linear Regression Sung Kim <hunkim+ml@gmail.com> Code: https://github.com/hunkim/DeepLearningZeroToAll/ With TF 1.0!</hunkim+ml@gmail.com>
docs.google.com
이제 동일한 과정을 placeholder를 통해서 재현해봅시다.
placeholder를 쓰는 이유는 학습을 할때 동적으로 값을 넘겨줄 수 있기 때문입니다.
shape = [none] //개수는 제한 없이, 1차원 데이터를 설정
#testing model 에서는 x값을 넘겨주면 y 값 예측 해줌