Q. 어떻게 비용함수가 최소가 되는 w 파라미터를 구할 수 있을까?
Gradient Descent
원래 함수의 최대, 최소를 점진적으로 근사하여 찾는 방법.
(점진적으로 반복적인 계산을 통해 w 파라미터 값을 업데이트 하면서 오류 값이 최소가 되는 w 파라미터를 구하는 방식)
반복적으로 비용 함수의 반환 값(예측값과 실제값의 차이)이 작아지는 방향성을 가지고 w 파라미터를 지속해서 보정해 나감.
→ 오류 값이 더이상 작아지지 않으면 그 오류 값을 최소 비용으로 판단하고, 그 때 w 값을 최적 파라미터로 반환
**Gradient = 원래 함수가 가장 빠르게 증가하는 방향 → 최솟값 구하려면 - 붙이면 됨.



이 비용함수를 최소화 하는 w0과 w1의 값은, 두 개의 w파라미터인 w0과 w1 각 변수에 순차적으로 편미분을 수행해 얻을 수 있음.

Q. 구한 편미분 값으로 어떻게 파라미터를 업데이트 할까?
A. 업데이트는 새로운 w1을 이전 w1에서 편미분 결괏값을 마이너스 하면서 적용. (구한 편미분 값 gradient 자체는 원래함수가 가장 빠르게 증가하는 방향을 의미 ( 애초에 미분 자체가 기울기 구하는거고, gradient는 그 중 가장 가파른!)
- 경사하강법의 단점
모든 학습 데이터에 대해 반복적으로 비용함수 최소화를 위한 값을 업데이트 하기 때문에 수행 시간이 매우 오래 걸림
→ 확률적 경사 하강법 (Stochastic Gradient Descent) 사용
-batch gradient descent
: 전체 입력 데이터로 w가 업데이트 되는 값을 계산(모든 입력 데이터를 하나의 batch로 한번에)
: 매 스텝마다 batch 전체에 대한 계산 필요. 데이터셋이 너무 커지면 속도가 느려짐.
: 학습률이 너무 작은 경우엔 시간이 오래 걸리고, 너무 큰 경우엔 최적해를 지나쳐 해를 찾지 못할수도
-mini-batch gradient descent
: 입력 데이터셋을 작은 크기(mini-batch)의 무작위 부분 집합으로 나누어서 gradient를 구하는 방법
: stochatic g.d보단 불규칙한 움직임이 덜하고, local minimum에서 빠져나오기가 상대적으로 더 어려움.
-stochastic gradient descent(sequential learning, online learning)
: 일부 데이터만 이용해 계산 (무작위로 선택한 한 개의 sample에 대해서만 계산)
: 대규모 데이터셋을 처리하는데 유리
: 선택하는 사례의 무작위성으로 움직임이 불규칙
: batch에 비해 local optimum에서 쉽게 빠져나올 수 있음.

: 최적해에 도달하지만(수렴하더라도) 지속적으로 요동
: batch와 마찬가지로 global optimum이라는 보장이 없음 (모든 g.d의 한계)

- 피처가 여러 개인 경우
동일하고, X만 그냥 X matrix로 표현.
피처가 M개 있다면 그에 따른 회귀 계수도 M+1개(1개는 w0) 도출됨.
𝑌 ̂ =𝑤_0+𝑤_1∗𝑋_1+𝑤_2∗𝑋_2+… +𝑤_100∗𝑋_100
데이터의 개수가 N이고 피처 M개의 입력 행렬을 Xmat, 회귀 계수 w1,w2,…w100을 W 배열로 표기하면,
𝑌 ̂ =𝑛𝑝.𝑑𝑜𝑡(𝑋_(𝑚𝑎𝑡, ) 𝑊^𝑇 )+𝑤0

'Machine Learning > 회귀' 카테고리의 다른 글
[파이썬 머신러닝 가이드] 회귀 - 다항 회귀와 과(대)적합/과소적합 이해 (1) | 2023.12.23 |
---|---|
[파이썬 머신러닝 가이드] 회귀 - 사이킷런 Linear Regression을 이용한 보스턴 주택 가격 예측 (1) | 2023.12.23 |
[파이썬 머신러닝 가이드] 회귀 - 회귀 소개 (1) | 2023.12.23 |