목표: 선형회귀(Linear Regression)를 코드로 구현한다,
핵심키워드: 선형회귀(Linear Regression), 가설(Hypothesis), 비용함수(Cost Function)

Cost-> 에러 제곱의 평균값


텐서플로우 내장 함수
reduce_mean() -> 랭크를 하나 줄이고 평균 구하기
square()-> 제곱값 구하기

- 경사하강법
GradientTape() 함수로 구현. 변수들(w, b)에 대한 정보를 tape 에 기록.
tape.gradient 로 경사도(미분값)을 구함.

assign_sub 로 해당 연산 수행


텐서플로우 import 하고, tf.enable_eager_execution 활성화로 즉시 실행 가능하게
x_data, y_data 준비
변수 W(기울기), b(절편) 선언, 값 임의로 지정(W=2.9, b=0.5)
learning_rate 를 상수로 지정
Gradient descent 방법으로 W와 b 값을 반복 갱신
중간에 변화 과정을 10번에 한 번씩 출력
입력된 자료에서 y = x 의 관계를 나타냄을 직관적으로 알 수 있지만
(W=1, b=0)
예제를 통해 이를 학습하는 과정을 알아보자.
여러 번 반복과정을 돌린 결과
W과 b 모두 특정 값(1과 0)으로 수렴
cost 도 점점 작아짐

초기 설정 W, b 일 때와 트레이닝 후의 결과 비교

예측한 모델로 값을 집어넣어서 결과 확인
x 에 5 대입했을 때 -> 해는 5, 예측값은 5.0066934
거의 일치,
x 에 2.5 대입했을 때 -> 해는 2.5, 예측값은 2.4946523
역시 거의 일치함을 알 수 있다.
느낀점: 결국 주어진 자료로 예측 방적식을 생성해내는 알고리즘인 것 같다.
내가 직접 계산하지 않아도 된다는 장점.
그리고 숫자 자료뿐만 아니라 다양한 종류의 자료에 적용 가능하다는 장점.
'컴공' 카테고리의 다른 글
Statistical Learning with Python (0) | 2021.03.09 |
---|---|
Linear Regression and How to minimize cost 를 TensorFlow 로 구현하기 (0) | 2021.01.26 |
Linear Regression and How to minimize cost (0) | 2021.01.25 |
Simple Linear Regression (0) | 2021.01.25 |
[C++] 포인터(Pointers) (1) (0) | 2021.01.20 |