
기존 프로그래밍과 인공지능의 차이점을 알게 하는 것이 교수님의 목표 👩🏻🏫
기존 프로그래밍) input, output이 정확하고 최적의 솔루션을 우리가 직접 찾는 것 (ex. 자료구조, 알고리즘)
인공지능) 데이터와 task를 지정해주면, 최적의 솔루션을 기계가 찾아주는 것

모델을 배운다 = 모델의 파라미터를 배운다
둘은 같은 뜻이다!
[학습]
사람이 다양한 경험을 통해서 지식이 성장해 가는 것
• 경험: 여러분이 모은 데이터와 여러분이 알려준 정답 (클래스 라벨)
• 작업 목표(지식): 여러분이 결정한 task모델 (영상 분류, 음성 분류)
• 성능 지표(성장): 정답에 가까운 솔루션을 찾아가고 있는 것인가 (평가)
여러분들은 그 동안 학습 기반 방법론을 배운 것이 아니라 전문가 지식을 직접 구현하는 방법(SW1.0)에 익숙하기 때문에, 학습 기반 방법론(SW2.0)을 배우기 위한 마인드 셋의 변화가 필요하다



위와 같은 통계자료가 있을 때,
내가 7시간 공부했다면 몇점을 맞을 것인가? 대략 ... 65점?
이렇게 예측하는 것이 바로 Regression (회귀)

더 간단한 데이터를 이용해보자

데이터를 다음과 같이 나타내보자

이제 가설설정을 해보자.
우리는 Linear할 것으로 가설을 세운다. (H(x) = Wx + b)


W와 b에 따라서 정말 다양한 방정식들을 세워볼 수 있는데
이 중에서 가장 잘 세운 가설은 무엇일까...?

함수의 답(예측값)과 정답의 차이가 작은 녀석이 바로 best 가설이라고 할 수 있다!!!
cost function=loss function=objective function!
함수의 답과 정답의 차이 (error)
H(x) : 예측된 값
y: 참값(정답)
우리는 이 cost function이 가장 작게 되는 그때의 W와 b를 찾는 것이 중요하다!!
W와 b: 모델 파라미터


수학적으로 표현하면 다음과 같다.
모든 데이터의 error 제곱의 평균을 계산한 것!
Q. 제곱을 하는 이유? 음과 양에 의해 값이 상쇄되는 것을 막기 위해!

다시 한번 최종 정리하면, 기계가 시험 점수를 예측하는 방법은 바로
cost를 최소화하는 W와 b를 찾는 것
우리는 이를 min_{W,b} (cost(W,b)) 라고 줄여서 쓰기도 하고
argmin_{W,b} (cost(W,b)) 라고 쓰기도 한다 :)

더욱 간단히 연습하기 위해 상수항 b를 제거한 예시로 다시 살펴보자.

W = 2 일 때는 1/3((2*1-1)^2 + (2*2-2)^2 + (2*3-3)^2) = 14/3 = 4.67

W = 1일 때 cost(W) = 0이고, W = 0 & 2일 때 cost(W) = 4.67로 대칭이므로 위와 같은 이차함수가 나온다는건 어렵지 않게 생각할 수 있다.
사실은, (Wx - y)^2 이 꼴만 보고도, 2차 함수라는걸 눈치챌 수 있었지 :)
사람의 눈으로는 저 위의 cost함수를 보고 아 ~ W=1일 때 최소네! 하면서 답이 바로 나오지만
기계의 눈은 그렇지 않단 말이지. 그럼 어떠한 방법으로 cost가 최소인 W를 찾을까? 바로 경사하강알고리즘!

그래 이 알고리즘을 이용하는건 알았는데 그럼 구체적으로 어떻게 찾는다는건데?

지도 없이 산을 하강하고 있다고 생각해보면 (= cost 최소가 어딘지 모르는 상태)
우리는 여러 길 중에 내리막길을 선택해서 갈 것이다.
그러다보면 고도가 0인 부분에 도착할 수 있겠지. (=cost 최소)

기울기는 '미분'과 동일하잖아
아 그럼 미분을 이용해서 cost가 최소인 부분을 찾을 수 있겠구나!
기울기가 점점 작아지는 쪽으로 이동하면 되는 것
커지는 쪽으로 가면 발산할 수 있음!

미분 꼴을 이쁘게 하기 위해 1/2을 미리 넣어보자

좌변의 W: 갱신되는 값 (W_{t})
우변의 W: 현재값 (W_{t-1})α: 보통 0.1, 0.01 많이 사용
∂/∂W cost(W): 기울기
W_{t}의 값이 더 이상 변하지 않을 때까지 이 과정을 반복하면 됨!
더 값이 변하지 않는다는게 무슨 뜻이야? 바로 기울기가 0이 되니까
W = W - 0이 되어서 변하지 않는거!

미분을 하면 다음과 같은 결과!
H(x) = Wx일 때의 결과!
https://www.derivative-calculator.net/

convex function: 볼록 함수
어디서 경사하강법을 시작하든지 상관없이 always 똑같은 최솟값에서 만난다 (global minimum)

반면에 non convex function은 최솟값이 여러개일 수 있다.
즉, 어디서 출발하느냐에 따라 결과가 다르기 때문에 global minimum을 보장할 수 없다.
(즉, 국소적 최솟값인 local minimum가 존재함 ㅠ)
+ 참고 동영상
Convex and Nonconvex - YouTube
지금까지 우리는 one input일 때만 구해보았다.
그렇다면 multiple inputs을 가질 때는 어떻게 계산을 할까?
학생은 총 5명, 그리고 각각은 3개의 점수
문제를 더 쉽게 이해하기 위해 b는 생략하고 설명
w와 x의 위치가 바뀌어도 전혀 상관 없지 어차피 scalar이니까!
5개일 때 Matrix는 다음과 같다.
n개일 때도 동일하게 다음과 같은 matrix
output이 2일 때는 다음과 같은 matrix
