Hey Tech
[Deep Learning] 최적화 개념과 경사 하강법(Gradient Descent) 본문
[Deep Learning] 최적화 개념과 경사 하강법(Gradient Descent)
Tony Park (토니) 2022. 5. 6. 16:29📌 Text 빅데이터분석 플랫폼 베타테스트 참가자 모집 중!(네이버페이 4만 원 전원 지급)
👋 안녕하세요, 코딩이 필요 없는 AI/빅데이터 분석 All in One 플랫폼 <DATA101> 개발팀입니다.
😊 저희 서비스를 사용해 보시고 경험담을 들려주세요 :)
💸 참여해 주신 "모든" 분들께 네이버페이 4만 원 쿠폰을 지급해 드립니다.
👨💻 참여 희망 시 카톡플러스친구 1:1 채팅 or 인스타그램 DM 부탁드립니다 :)
📆 참여기간 : 11/25(월)~11/29(금) 11:00~21:00 중 택1 (1시간 1타임)
👉 참여장소 : 강남역 인근 스터디카페 미팅Room
📍 소요시간 : 총 40분 내외(서비스 체험 및 인터뷰 포함)
✅ 참가조건 : Text 빅데이터 분석 업무 경험자
👉 참가 가능일정 조회하기 : https://url.kr/n8k8gu
- 카톡플친 : http://pf.kakao.com/_SxltHG/chat
- 인스타그램 : https://www.instagram.com/data101.official/
📚 목차
1. 최적화 개념
2. 기울기 개념
3. 경사 하강법 개념
4. 경사 하강법의 한계
1. 최적화 개념
딥러닝 분야에서 최적화(Optimization)란 손실 함수(Loss Function) 값을 최소화하는 파라미터를 구하는 과정입니다(아래 그림 1 참고). 딥러닝에서는 학습 데이터를 입력하여 네트워크 구조를 거쳐 예측값(\(\hat{y}\))을 얻습니다. 이 예측값과 실제 정답(\(y\))과의 차이를 비교하는 함수가 손실 함수입니다. 즉, 모델이 예측한 값과 실젯값의 차이를 최소화하는 네트워크 구조의 파라미터(a.k.a., Feature)를 찾는 과정이 최적화입니다. 최적화 기법에는 여러 가지가 있으며, 본 포스팅에서는 경사 하강법(Gradient Descent)에 대해 알아봅니다.
2. 기울기 개념
경사 하강법(Gradient Descent)을 알아보기 전에 기울기를 먼저 이해하고 넘어가야 합니다. 기울기(Gradient)란 미분 가능한 \(N\)개의 다변수 함수 \(f\)를 각 축이 가리키는 방향마다 편미분한 것입니다. Gradient를 수식으로 나타내면 아래와 같으며, Del 또는 Nabla 연산자를 사용하여 표현하기도 합니다.
$$ gradient(f) = \nabla f(x) = [\frac{\partial f(x_0)}{\partial x_0}, \frac{\partial f(x_1)}{\partial f(x_1)}, ..., \frac{\partial f(x_{N-1})}{\partial x_{N-1}}]^{T}$$
수식을 풀어서 살펴보면, Gradient는 \(x_{0}\)축 이외의 모든 축과 관련된 값은 상수로 취급하고 미분한 값, \(x_{1}\)축 이외의 모든 축과 관련된 값은 상수로 취급하고 미분한 값, ..., \(x_{N-1}\)축으로 편미분한 값으로 구성된 것을 알 수 있습니다. 만약 함수 \(f\)가 단순히 \(x\)와 \(y\)축으로 이루어져 있다면 Gradient는 다음과 같이 표현할 수 있습니다.
$$ \nabla f(x, y) = f_{x} \hat{\imath} + f_{y} \hat{\jmath} = \frac{\partial f(x, y)}{\partial x} \hat{\imath} + \frac{\partial f(x, y)}{\partial y} \hat{\jmath} $$
이처럼 Gradient는 스칼라 함수를 입력으로 받아 벡터장(Vector Field)을 생성하는 역할을 합니다. 예를 들어, 함수 \(f\)가 다음과 같이 주어졌다고 가정해 보겠습니다.
$$ f(x, y) = x^2 + 3xy + y^2 $$
함수 \(f\)를 \(x\)와 \(y\)축으로 각각 편미분하면 다음과 같습니다.
$$\frac{\partial f(x, y)}{\partial x} = \frac{\partial}{\partial x}(x^{2} + 3xy + y^{2}) = 2x + 3y $$
$$\frac{\partial f(x, y)}{\partial y} = \frac{\partial}{\partial y}(x^{2} + 3xy + y^{2}) = 3x + 2y $$
즉, \(Gradient(f)\)는 \(x\), \(y\)의 함수이자 모든 \(x\), \(y\)축에 대응되는 벡터를 생성할 수 있다는 것을 알 수 있습니다.
3. 경사 하강법 개념
경사 하강법(Gradient Descent)이란 딥러닝 알고리즘 학습 시 사용되는 최적화 방법 중 하나입니다. 딥러닝 알고리즘 학습 시 목표는 예측값과 정답값 간의 차이인 손실 함수의 크기를 최소화시키는 파라미터를 찾는 것입니다. 학습 데이터 입력을 변경할 수 없기 때문에, 손실 함수 값의 변화에 따라 가중치(weight) 혹은 편향(bias)을 업데이트해야 합니다. 그럼 어떻게 최적의 가중치나 편향을 찾을 수 있을까요? 최적의 가중치를 찾는 과정을 소개합니다. 최적의 편향을 찾는 과정 역시 절차는 동일합니다. 아래의 그림 2를 예시로 활용하겠습니다. 가로축은 가중치를, 세로축은 손실 함수를 의미합니다. 먼저 임의의 가중치를 선정합니다. 운이 좋다면 손실 함수의 최솟값에 해당되는 가중치를 단번에 선택할 수도 있겠지만 그렇지 않을 확률이 훨씬 높습니다.
예를 들어, \(w_{n-1}\)을 임의의 가중치로 선정했다고 가정하겠습니다. 최적의 가중치를 찾기 위해서 목표 함수인 손실 함수를 비용 함수 \(w\)에 대해 편미분하고, 이를 학습률(Learning rate)과 곱한 값을 앞서 선정한 \(w_{n-1}\)에서 빼줍니다. 수식으로 나타내면 다음과 같습니다.
$$ w_{n} = w_{n-1} - \alpha \nabla f(w_{n-1}) $$
위 수식을 통해 손실 함수의 값이 거의 변하지 않을 때까지(약 \(10^{-6}\)) 가중치를 업데이트하는 과정을 반복합니다. 이처럼 손실 함수 그래프에서 값이 가장 낮은 지점으로(=손실 함수의 최솟값) 경사를 타고 하강하는 기법을 경사 하강법이라고 부릅니다.
💬 학습률에 대한 자세한 설명
학습률이란 어떤 비율만큼 파라미터를 업데이트할지를 결정하는 값으로 \(0\)과 \(1\) 사이의 값을 가지며, 사용자가 직접 설정해야 하는 하이퍼파라미터(hyper-parameter)입니다. 즉, 학습률이 작을수록 촘촘하게 파라미터를 변화시키며 모델을 학습시킬 수 있지만 그만큼 학습 시 시간이 오래 걸립니다. 반면, 학습률이 너무 클 경우 손실 함수 그래프 자체를 벗어나는 경우가 생길 수 있기 때문에 적절한 학습률을 선택하는 것이 중요합니다.
4. 경사 하강법의 한계
경사 하강법은 크게 2가지 한계점이 있습니다.
- 첫째, Local Minimum에 빠지기 쉽다는 점
- 둘째, 안장점(Saddle point)을 벗어나지 못한다는 점
각각에 대해 알아보겠습니다.
4.1. Local Minimum 문제
경사 하강법은 비볼록 함수의 경우, 파라미터의 초기 시작 위치에 따라 최적의 값이 달라진다는 한계가 있습니다. 그 이유에 대해 알아봅니다. 함수의 형태는 크게 볼록 함수(Convex function)와 비 볼록 함수(Non-convex function)로 나눌 수 있습니다.
1) 볼록 함수
아래 그림 3과 같이 아래 또는 위로 볼록한 함수를 볼록 함수라고 부릅니다. 이러한 볼록 함수는 초기 파라미터 값이 어떻게 설정되어도 경사 하강법을 활용하면 최적의 값에 도달할 수 있습니다. 다만, 현실에서는 대부분의 함수는 비볼록 함수 형태입니다.
2) 비볼록 함수
아래 그림 4와 같은 비볼록 함수는 경사 하강법 사용 시 파라미터 값의 시작 위치에 따라 최적의 값이 달라진다는 한계가 있습니다. 즉, Local Minimum에 빠질 수 있고 심지어는 최적의 값이라고 판단한 값이 Global minimum인지, Local minimum인지 구분할 수 없다는 한계가 있습니다.
아래의 그림 5와 같이 Global Minimum은 목표 함수 그래프 전체를 고려했을 때 최솟값을 의미하고, Local minimum은 그래프 내 일부만 고려했을 때 최솟값을 의미합니다. 즉, 경사 하강법으로 최적의 값인 줄 알았던 값이 Global minimum보다 큰 경우를 Local minimum이라고 할 수 있습니다.
4.2. Saddle Point 문제
경사 하강법의 두 번째 한계점은 안장점(Saddle Point)을 벗어나지 못한다는 것입니다. 아래의 그림 6에 검정색 점이 안장점입니다. 말(horse)의 안장과 비슷한 모양 위에 있는 점이라 안장점이라고 이름 붙여졌다고 합니다. 안장점은 기울기가 \(0\)이지만 극값이 아닌 지점을 의미합니다. 아래 그림 6과 같이, A-B 사이에서 검은색 점은 최솟값(minima)이지만, C-D 사이에서 검은색 점은 최댓값(maxima)입니다. 따라서 해당 지점은 미분이 \(0\)이지만 극값을 가질 수 없습니다. 경사 하강법은 미분이 \(0\)일 경우 더이상 파라미터를 업데이트하지 않기 때문에, 이러한 안장점을 벗어나지 못하는 한계가 있습니다.
다음 포스팅에서는 경사 하강법의 이러한 한계점을 개선한 기법들에 대해 다룹니다.
https://heytech.tistory.com/382
https://heytech.tistory.com/383
https://heytech.tistory.com/384
https://heytech.tistory.com/385
📚참고할 만한 포스팅
1. [Deep Learning] 퍼셉트론(Perceptron) 개념 이해
2. [Deep Learning] 퍼셉트론(Perceptron) 학습방법 및 절차
3. [Deep Learning] 활성화 함수의 개념 및 종류: sign, tanh, sigmoid, softmax, ReLU
4. [Deep Learning] 손실함수(Loss Function) 개념
5. [Deep Learning] 평균제곱오차(MSE) 개념 및 특징
6. [Deep Learning] 평균절대오차(MAE) 개념 및 특징
7. [Deep Learning] 최적화 개념과 경사 하강법(Gradient Descent)
8. [Deep Learning] 최적화 기법: (1) Momentum
9. [Deep Learning] 최적화 기법: (2) AdaGrad
10. [Deep Learning] 최적화 기법: (3) RMSProp
11. [Deep Learning] 최적화 기법: (4) Adam
Last Updated @2022-07-07
- @dlrlseong 님께서 '2. 기울기 개념' 섹션에서 편미분 수식의 오탈자를 피드백해 주셔서 수정하였습니다. 감사합니다 :)
최적화 개념과 경사 하강법에 대해 알아봤습니다.
포스팅 내용에 오류가 있다면 아래에 댓글 남겨주시길 바랍니다.
그럼 오늘도 즐겁고 건강한 하루 보내시길 바랍니다 :)
고맙습니다😊
'AI & 빅데이터 > 머신러닝·딥러닝' 카테고리의 다른 글
[Deep Learning] 최적화(Optimizer): (2) AdaGrad (0) | 2022.05.20 |
---|---|
[Deep Learning] 최적화(Optimizer): (1) Momentum (2) | 2022.05.17 |
[Deep Learning] 평균절대오차(MAE) 개념 및 특징 (1) | 2022.05.04 |
[Deep Learning] 평균제곱오차(MSE) 개념 및 특징 (2) | 2022.04.23 |
[Deep Learning] 손실함수(Loss Function) 개념 (0) | 2022.04.22 |