Moglobin's
article thumbnail

목표: 선형회귀(Linear Regression)를 코드로 구현한다,

핵심키워드: 선형회귀(Linear Regression), 가설(Hypothesis), 비용함수(Cost Function)

 

Cost-> 에러 제곱의 평균값

 

 

 

텐서플로우 내장 함수

reduce_mean() -> 랭크를 하나 줄이고 평균 구하기

square()-> 제곱값 구하기

 

- 경사하강법

 

GradientTape() 함수로 구현. 변수들(w, b)에 대한 정보를 tape 에 기록.

tape.gradient 로 경사도(미분값)을 구함. 

assign_sub 로 해당 연산 수행

 

100 회 반복
전체 코드

 텐서플로우 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

역시 거의 일치함을 알 수 있다.

 

 

느낀점: 결국 주어진 자료로 예측 방적식을 생성해내는 알고리즘인 것 같다.

내가 직접 계산하지 않아도 된다는 장점.

그리고 숫자 자료뿐만 아니라 다양한 종류의 자료에 적용 가능하다는 장점.

 

profile

Moglobin's

@슈플로프

Take your time 🍋