Lab-04 Multi variable linear regression LAB
변수 3개 각각에 해당하는 w값 3개 필요
x: 입력 데이터
y: 출력 데이터, 예측값, 레이블
초기값: 1 / 일반적으로 랜덤값을 준다.
w 3개, b 1개
learning rate: 매우 작은 값
cost = 오차 제곱의 평균값
w1, w2, w3, b 변수에 대한 정보를 tape에 저장하고, tape의 gradient값(기울기 값) 정한다.
update를 위해 assign_sub 함수를 사용했다. (learning_rate를 곱한 값을 뺀다.)
1001번 반복 실행하고 50번에 한 번씩 출력한다.
i값: 50만큼씩 쭉 증가한다.
cost값: 급속히 줄어들다가 일정 구간에서는 줄어들지 않는다.
data가 한 matrix에 저장돼있다.
slice는 ','를 기준으로 앞 부분은 행, 뒷 부분은 열을 뜻한다.
':' 기준으로 앞뒤로 아무것도 안 써있을 때는 전체 row를 뜻한다.
뒷부분은 column을 뜻하는데 첫 컬럼부터 마지막 column을 제외한 값까지를 뜻한다.
즉 x1, x2, x3 데이터를 뜻한다.
y는 마지막 데이터, 마지막 column, 즉 y 데이터를 뜻한다.
x column이 3개이므로 weight 매트릭스의 row는 3개가 필요하고, 출력 값으로 1개의 열이 필요하다.
bias는 1개가 필요하다.
predict, 즉 예측 함수는 matmul(X, W) + b이다. 이때 b는 생략할 수도 있다.
x data는 슬라이싱을 통해 5행 3열 크기의 매트릭스가 된다.
y data는 슬라이싱을 통해 5행 1열 크기의 매트릭스가 된다.
x: 입력
y: 출력, label, 정답
w의 행 수는 x의 열 수만큼, 즉 3이고 w의 열 수는 출력이므로 1이다.
b는 출력값으로 크기가 1이다.
for문을 순회하면서 gradient descent 알고리즘을 통해 w와 b 값을 지속적으로 업데이트한다.
한 번 도는 것을 epoch라고 한다.
여기선 2001회 epoch를 순회한다.
epoch가 순회하면서 cost가 매우 큰 값에서 급격히 줄어들다가 더이상 잘 줄어들지 않는다.
변수의 개수만큼 weight가 필요하다.
각 w에 따라 따로 할당해주어야 한다.
H(X) = XW 수식에 따라 상황에 따라 한 줄로 쉽게 표현이 가능하다.
출처: https://youtu.be/tmfo04t664Q
모든 이미지 출처: http://bit.ly/2LQMKvk