딥러닝 & 머신러닝

딥러닝 2 - Linear Regression 의 개념

El_Pong 2021. 9. 7. 16:23
728x90

https://hunkim.github.io/ml/

 

모두를 위한 머신러닝/딥러닝 강의

 

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을 통해 출력해줍니다.

 

상세한 진행과정은 원문 참고 

https://docs.google.com/presentation/d/12raZrY3d244q6jGuC7EykeSPzjP1-FqofMiNlx5Q52o/edit#slide=id.g1d11dcbc39_0_61

 

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 값 예측 해줌