경사하강법으로 선형괴휘 계수 구하기
2022.01.19 - [부스트캠프 AI Tech 3기/이론 : U-stage] - [DAY3] AI math 2. 행렬이 뭐예요?
[DAY3] AI math 2. 행렬이 뭐예요?
행렬 Matrix 여러 백터들을 원소로 가지는 2차원 배열 여러 점들 x=np.array([[1,2,3], [4,5,6]]) 2개의 행 벡터가 하나의 배열안에 담겨있다. numpy에서는 행이 기본 단위, 기준이 된다. 행 row 열 column $ x_{i..
chae52.tistory.com
의 맨 마지막을 보면 예측한 선형식의 값 ˆy과 원래 y값의 차이(ˆy−y)를 최소화하는 것이 선형회귀의 방향이다.
ˆy=Xβ
이므로 선형회귀의 목적식은 ∥y−Xβ∥2 이고,
목적식을 최소화해야하는 β를 찾아야 하기 때문에 목적식의 β로 미분해야 한다.
∇β∥y−Xβ∥2 을 구하면 된다.
∇β∥y−Xβ∥2 를 벡터로 펼쳐 보면
(∂β1∥y−Xβ∥2,⋯,∂βd∥y−Xβ∥2)
와 같이 각각의 β 에 대해서 편미분을 한 것이 들어가게 된다.
그렇다면 ∂βk∥y−Xβ∥2 와 같은 편미분은 어떻게 할까

편미분 계산 과정을 나중에 꼭 시도해봐야겠다 ㅠㅠ
그래서 이 편미분을 각 성분에 대해 적용해서 gradient vector를 구할 수 있다
그러면
∇β∥y−Xβ∥2
=(∂β1∥y−Xβ∥2,⋯,∂βd∥y−Xβ∥2)
이 성분들에 하나씩 편미분을 하면
=(−XT1(y−Xβ)n∥y−Xβ∥2,−XT2(y−Xβ)n∥y−Xβ∥2,⋯,−XTd(y−Xβ)n∥y−Xβ∥2)
이렇게 되고, 모든 것을 합쳐서 행렬로 표현하면
=−XT(y−Xβ)n∥y−Xβ∥2
와 같이 전치행렬로 나타낼 수 있다.
경사하강법 알고리즘 적용
드디어 구한 gradient vector를 경사하강법에 적용하면
β(t+1)←βt−λ∇β∥y−Xβ(t)∥
β 벡터에 gradient vector를 빼주어 함숫갑이 줄어드는 방향으로 업데이트한 후 새로운 β 벡터를 만드는 것이다.
λ 람다는 학습률 (learning rate)이다. 학습률로 수렴속도를 결정할 수 있다.
위의 식에 gradient vector를 대입하면
β(t+1)←βt+λnXT(y−Xβ(t))∥y−Xβ(t)∥
gradient vector가 음수라서 +부호로 바뀌게 된다.
L2 norm을 계산할 때

각 요소의 제곱을 더해서 마지막에 제곱근을 취해주었었는데, gradient vector를 좀 더 간단하게 계산하기 위해서는 제곱근을 취하지 않아도 상관없다. 그래도 결과는 같고 식이 좀 더 간단해진다.
∇β∥y−Xβ∥22=(∂β1∥y−Xβ∥22,⋯,∂βd∥y−Xβ∥22)
=−2nXT(y−Xβ)
이렇게 정리 된다.
결과를 경사하강법 알고리즘에 넣으면 다음과 같다.
β(t+1)←βt+2λnXT(y−Xβ(t))
경사하강법 사용
- 학습률과 학습횟수를 적절히 선택해야 한다.
너무 적으면 학습이 덜 된다. - 볼록함수인 경우에는 항상 최소점을 향하게 보장된다.
특히 선형회귀의 경우 L2 norm으로 만든 목적함수는 볼록함수이기 때문에 수렴이 보장된다. - 비선형회귀의 경우는 볼록하지 않으므로(non convex) 수렴이 보장되지는 않는다.
볼록한 부분이 여러군데 있을 수 있다.
확률적 경사하강법 SGD : Stochastic Gradient Descent
모든 데이터를 사용하지 않고 데이터를 한 개만 활용하여 업데이트한다.
한 개가 아닌 일부를 사용하는 것은 Mini batch SGD라고 한다.
보통 1개만 사용하면 비효율적이어서 그냥 SGD라고 쓰여 있어도 mini batch 인 경우가 많다.
non-convex목적식을 SGD로 최적화가 가능하다.
딥러닝의 경우 SGD가 모든 데이터를 사용하는 경사하강법보다 실증적으로 더 낫다.
또한 일부를 가지고 연산하기 때문에 자원에 대해서 효율적이다.
매번 배치가 바뀌기 때문에 목적식 모양이 일정하지 않고 계속해서 바뀌게 된다. 그래서 non-convex함수에서도 극솟점이 아닌 점을 탈출할 수 있다.


하지만 방향은 비슷하게 흘러간다. 정확하진 않지만 빠르게 정답으로 다가간다.
또한 미니배치의 크기에 따라서 ex)100,30,10 속도가 다를 수 있으니 조절이 필요하다.
또한 하드웨어에 큰 데이터를 모두 올리기에는 공간이 부족할 수 있기 때문에 SGD를 더 사용한다.
'부스트캠프 AI Tech 3기 > 이론 : U-stage' 카테고리의 다른 글
[Day4] AI math 6. 확률론 맛보기 : 확률분포, 확률변수, 결합분포, 주변확률분포, 조건부 확률분포, 조건부 확률, 기대값, 몬테카를로 샘플링 (0) | 2022.01.21 |
---|---|
[DAY4] AI math 5. 딥러닝 학습방법 이해하기 (0) | 2022.01.20 |
[DAY3] AI math 3. 경사하강법 -1 (0) | 2022.01.20 |
[DAY3] AI math 2. 행렬이 뭐예요? (전치, 행렬곱, 역행렬, 유사역행렬) (0) | 2022.01.19 |
[Day3] AI math 1. 벡터가 뭐예요? (스칼라곱, 연산, 성분곱, norm, L1, L2, 거리, 각도, 내적) (0) | 2022.01.19 |