미분은 변화율의 극한(함수의 순간 기울기)을 측정하기 위한 도구
cf) 주요 함수에 대한 미분 (참고 - Youtube채널 동빈나)
미분은 sympy.diff() 함수를 이용하여 계산할 수 있음
함수값을 증가시키고 싶으면 미분값을 더하고, 감소시키고 싶으면 미분값을 뺌
선형회귀의 목적식은 or 이고, 이를 최소화하는 를 찾아야 함
계산해야하는 Gradient Vector는 다음과 같음
위 식을 정리하면, 에 대한 목적식의 편미분값을 과 원래 목적식의 L2노름 값의 곱으로 나눈 값에 음수를 취해준 것과 같음.
다시 말해, 를 계수 에 대해 미분한 결과에 를 곱해주는 것과 동일함.
이에 따라 목적식을 최소화하는 를 구하는 알고리즘은 아래와 같음.
대신 를 사용하면 식이 조금 더 간단해짐.
경사하강법 기반 선형회귀 알고리즘은 무어-펜로즈 역행렬처럼 정확한 수렴값을 찾는 것이 아니므로, "적절한" 학습률/학습횟수가 필요함.
경사하강법은 미분 가능하고, 볼록함수(Convex)에 대해서만 이론적으로 수렴이 보장됨. (eg. 선형회귀의 목적식 )
하지만 비선형회귀 문제는 목적식이 볼록하지 않을(Non-convex) 수 있기 때문에 수렴이 항상 보장되지 않고, 이에 따라 변형된 경사하강법이 필요함.
확률적 경사하강법(Stochastic Gradient Descent)은 전체 데이터를 사용하는 대신 데이터 일부를 활용하여 파라미터를 업데이트함.
(학습률, 학습횟수 조정이 필요하므로 만능은 아니지만, 실증적으로 GD보다 낫다고 검증됨)
Mini-batch SGD는 (전체 데이터)를 가지고 목적식의 Gradient Vector인 를 계산함.
(: 목적식, : 전체 데이터, : 주어진 파라미터)
또한 매번 다른 미니배치를 확률적으로 선택하여 사용하기 때문에 목적식의 곡선 모영이 바뀌게 되고, Non-convex한 곡선의 경우 Local Point의 결과값이 극소점|극대점을 확률적으로 탈출할 수 있다는 원리를 차용하였음.