1. 선형회귀 계수 구하기
1) 기존에 배운 선형 회귀식 : 무어 펜로즈 역행렬 이용
- $\beta = (X^{T}X)^{-1}X^{T}y$
2) 경사하강법
사용 이유 : 선형과 비선형 모델 모두에 적용되는 식이기 때문
2. 경사하강법으로 선형회귀 계수 구하기
* 선형회귀 계수 : 선형회귀의 목적식을 최소화하는 $\beta$
$\nabla_{\beta}\left\|y - X\beta \right\|_{2} = (\partial_{\beta_{1}}\left\|y - X\beta \right\|_{2}, ..., \partial_{\beta_{d}}\left\|y - X\beta \right\|_{2})$
위 그레디언트 벡터의 k번째 원소는 아래와 같다.
(* n으로 나눠준 이유는 데이터의 절대적 개수에 따라 오차가 커지는 것을 방지하기 위함이다.)
$\partial_{\beta_{k}}\left\|y - X\beta \right\|_{2} = -\frac{{X_{k}}^{T}(y - X\beta)}{n\left\|y - X\beta \right\|_{2}}$
따라서 모든 원소에 대해 미분한 전체 그레디언트 벡터는 다음과 같다.
$\partial_{\beta}\left\|y - X\beta \right\|_{2} = -\frac{X^{T}(y - X\beta)}{n\left\|y - X\beta \right\|_{2}}$
더 간단하게 계산하면 아래와 같다.
$\partial_{\beta}{\left\|y - X\beta\right\|_{2}}^{2} = -\frac{2}{n}{X}^{T}(y - X\beta)$
* 참고
- $-2\times X^{T}\times(y - X\beta)$ : 열 벡터
- $-2\times(y - X\beta)^{T}\times X$ : 행 벡터
=> 두 벡터 모두 ${\left\| y - X\beta \right\|_{2}}^{2}$ 을 미분한 그레디언트 벡터로 같은 값을 가짐.
- 벡터와 노름의 미분
https://darkpgmr.tistory.com/141
벡터 미분과 행렬 미분
논문을 읽거나 어떤 이론을 이해할 때, 그리고 자신이 수식을 전재할 때 종종 벡터, 행렬에 대한 미분이 필요한 경우가 종종 있습니다. 저의 경우는 주로 함수 최적화 기법(Least Squares, Weighted Lest
darkpgmr.tistory.com
3. 목적식을 최소화하는 $\beta$ 를 구하는 법
- 임의의 벡터 $\beta$ 에 대해 경사하강법 알고리즘을 적용하여 $\beta$를 업데이트하는 식
- $\beta^{(t)}$ : $t$번째 업데이트한 $\beta$
- $\lambda$ : 학습률(신중하게 설정해야함)
- 목적식을 최소화하는 $\beta$를 구하는 경사하강법 알고리즘
- 더 간단 ver : 경사하강법이므로 → t+1번째 벡터 = t번째 벡터 - 학습률 * t번째 벡터에서의 미분 벡터
- 경사하강법 - 파이썬 코드
- intercept = 절편 = 편향
- 주의 : 학습률(0.01)과 학습횟수(100)가 중요한 하이퍼파라미터가 된다.
4. 경사하강법의 문제점
- 미분 가능 + 볼록(convex)한 함수에 대해서는 수렴이 보장되지만, 그렇지 않은 경우 보장 안됨
- 비선형회귀 문제 : convex하지 않을 수 있음 → 수렴 항상 보장 x
- 특히 딥러닝을 사용하는 경우 목적식의 대부분은 볼록함수가 아님
5. 확률적 경사하강법(SGD)
- 데이터 1개 ~ 일부 활용하여 업데이트
- 볼록이 아닌(non-convex)한 목적식은 SGD를 통해 최적화 가능
- 딥러닝의 경우 GD보다 SGD의 성능이 더 낫다고 검증됨
- 활용하는 데이터의 수가 적으므로, 업데이트 횟수가 줄어 시간 복잡도 줄어듦
- → 전체 데이터 $(X, y)$ 를 쓰지 않고 미니 배치 $(X_{(b)}, y_{(b)})$ 를 사용해 업데이트하므로 연산량이 기존의 $b/n$로 감소 (*전체 데이터 개수: n, 미니 배치 개수: b개일 때)
6. 미니배치 연산
확률적 경사하강법 - 매번 다른 미니배치(임의추출 데이터) 사용 -> 곡선(데이터) 매번 다름
- 배치 사이즈가 지나치게 작으면 경사하강법보다 성능 나쁨
- 적절한 배치 사이즈를 주는 것이 좋음
- 볼록이 아닌(non-convex) 목적식에서도 사용 가능 -> 머신러닝 학습에서 GD보다 SGD가 더 효율적
- 미니배치는 확률적으로 선택하므로 목적식 모양이 바뀜
추가 학습
@ 와 dot 의 차이점 : Notepad for mathcom : 네이버 블로그
- * : element-wise 연산
- @ 와 dot : 일반적인 행렬간 곱셈
- @ 와 dot 의 연산 결과가 달라지는 경우 : 행렬이 3차원 이상일 때
- 3차원 이상에서는 보통 @ 를 쓴다고 함
'AI > AITech 3기' 카테고리의 다른 글
[AI Math] 6강 확률론 맛보기 (0) | 2022.01.22 |
---|---|
[AI Math] 5강 딥러닝 학습 방법 이해하기 (0) | 2022.01.22 |
[AI Math] 3강 경사하강법 순한맛 (0) | 2022.01.21 |
[부스트캠프 AI Tech 3기] Pre-Course #1 인공지능 맛보기 (0) | 2022.01.02 |
[부스트캠프 AI Tech 3기] Pre-Course #2-1 Python Basics for AI (0) | 2022.01.02 |