CS229 Machine Learning (2018 Autumn 2주차)

곽태욱·2021년 1월 28일
0

이론

용어 정의

mm : dataset 개수

nn : input 차원, feature 개수

XX : input (주로 vector)

yy : output (주로 scalar)

(X(i),y(i))(X^{(i)}, y^{(i)}) : i번째 dataset

XjX_j : input의 j번째 feature

scalar : 0차원 값

vector : 1차원 배열

matrix : 2차원 배열

Dataset 예시

XXXX...XXyy
x1(1)x^{(1)}_1x2(1)x^{(1)}_2...xn(1)x^{(1)}_ny(1)y^{(1)}
x1(2)x^{(2)}_1x2(2)x^{(2)}_2...xn(2)x^{(2)}_ny(2)y^{(2)}
............
x1(m)x^{(m)}_1x2(m)x^{(m)}_2...xn(m)x^{(m)}_ny(m)y^{(m)}

Gradient Descent

J(θ)J(\theta)를 최소화하기 위해 J(θ)J(\theta)가 감소하는 방향으로 θ\theta를 업데이트한다.

선형 회귀 학습 방법

Batch Gradient Descent Linear Regression

매 학습 단계마다 모든 training set을 보고 dJ(θ)dθ\cfrac{dJ(\theta)}{d\theta}를 구해 θ\theta를 업데이트한다.

학습 속도가 느리지만, 결국 θ\thetaJ(θ)J(\theta)를 최솟값으로 만드는 값으로 수렴한다.

Stochastic Gradient Descent Linear Regression

매 학습 단계마다 1개의 training set을 보고 dJ(θ)dθ\cfrac{dJ(\theta)}{d\theta}를 구해 θ\theta를 업데이트한다.

학습 속도가 빠르지만, θ\theta가 수렴하지 않고 특정 범위 안에서 진동한다. 이 경우 매 학습 단계마다 학습률을 줄이면 θ\theta가 특정 값에 수렴한다. 하지만 이 수렴된 값이 최적의 θ\theta값은 아니다.

Mini-Batch Gradient Descent Linear Regression

매 학습 단계마다 n개의 training set을 보고 dJ(θ)dθ\cfrac{dJ(\theta)}{d\theta}를 구해 θ\theta를 업데이트한다.

n값에 따라 Batch와 Stochastic의 중간 장단점을 가진다.

혼합

초반엔 Stochastic으로 하다 후반엔 Batch로 학습시키기

Normal Equation

J(θ)J(\theta)를 최소화하는 θ\thetadJ(θ)dθ=0\cfrac{dJ(\theta)}{d\theta} = 0 이라는 점을 이용해, 각 θj\theta_j에 대해 연립 방정식을 세워서 풀면 θ\theta를 한번에 찾을 수 있다.

예시

배치 경사하강 선형 회귀

Forwarding

오차를 구하는 과정

오차를 구하는 자세한 과정

Back Propagation

θj\theta_j의 절댓값이 0~1이면 일반적으로 학습률을 0.01로 잡고 기하급수적으로 늘려서 적절한 학습률 값을 찾는다. 만약 θ\theta를 업데이트했는데 J(θ)J(\theta)가 증가하면 학습률이 크다는 뜻이다.

여기서 J(θ)J(\theta)는 (위 그림과 달리) θ\theta에 대한 2차 함수여서 convex하기 때문에 항상 전역 최소점이 존재하고, 전역 최소점 = 지역 최소점이다.

dJ(θ)dθ\cfrac{dJ(\theta)}{d\theta} 는 위 그림과 같이 구할 수 있다.

정규 방정식 선형 회귀

θ=(XTX)1XTY\theta = (X^TX)^{-1}X^TY

위 공식을 활용하면 θ\theta 값을 한번에 구할 수 있다. 선형 회귀만 θ\theta 값을 한번에 구할 수 있는 공식이 존재한다.

profile
이유와 방법을 알려주는 메모장 겸 블로그. 블로그 내용에 대한 토의나 질문은 언제나 환영합니다.

0개의 댓글