kang9366
Repository
kang9366
글쓰기
설정
전체 방문자
오늘
어제
  • 분류 전체보기 (143)
    • Programming (70)
      • Java (1)
      • C++ (11)
      • Kotlin (12)
      • Keras (2)
      • Android (34)
      • Jetpack Compose (1)
      • Error Solution (7)
    • CS (36)
      • 자료구조 (13)
      • 운영체제 (1)
      • 알고리즘 (4)
      • 컴퓨터 보안 (8)
      • 기타 (10)
    • Data Science (28)
      • 데이터분석 (7)
      • 머신러닝 (14)
      • 딥러닝 (7)

인기 글

최근 글

최근 댓글

Github · Instagram · Facebook
kang9366

Repository

Gradient Descent (경사하강법)
Data Science/딥러닝

Gradient Descent (경사하강법)

2022. 12. 2. 00:12

Optimization

딥러닝에서 Optimization(최적화)란 손실함수(Loss Function) 값을 최소화하는 파라미터를 구하는 과정이다. 딥러닝에서는 학습 데이터를 입력하여 네트워크 구조를 거쳐 예측값(y^)을 얻습니다. 이 예측값과 실제 정답(y)과의 차이를 비교하는 함수가 손실함수이다.

즉, 모델이 예측한 값과 실젯값의 차이를 최소화하는 네트워크 구조의 파라미터를 찾는 과정이 최적화이다.

 

 

 

Gradient Descent

경사하강법은 함수의 기울기(=gradient)를 이용해서 함수의 최소값 일 때의 x값을 찾기 위한 방법이다. 기울기가 양수인 경우는 x 값이 증가할수록 함수 값도 증가하고, 반대로 음수인 경우에는 x 값이 증가할수록 함수 값이 감소한다. 그리고 기울기 값이 크다, 기울기가 가파르다는 것은 최소값으로부터 거리가 멀다는 뜻이다.

이 점을 이용해서 기울기가 양수라면 음의 방향으로 x를 옮기면 되고, 기울기가 음수라면 양의 방향으로 x를 옮기면 된다.

  • 이를 공식으로 옮기면 다음과 같다.
    (1)xi+1​=xi​−이동거리×기울기의 부호

식 (1)에서 기울기의 부호는 알 수 있지만, 이동 거리는 어떻게 구해야 할까?
미분 계수(=기울기=gradient)는 극소값에 가까워질수록 값이 작아진다. 따라서, 이동거리에는 미분 계수와 비례하는 값을 이용한다. 그럼 극소값에서 멀 때는 많이 이동하고, 극소값에 가까울 때는 조금씩 이동할 수 있다.

  • 이렇게해서 유도되는 최종 공식은 다음과 같다.
    (2)xi+1​=xi​−αdxdf​(xi​)
    α=step size(hyperparameter)

 

경사하강법을 사용하는 이유

보통 함수의 최솟값을 찾고자 할 때, 미분계수를 구함으로써 찾곤 한다(컴퓨터를 사용하는 것이 아닌 그냥 수학 문제를 풀 때). 컴퓨터에서 해당 방법을 사용하지 않는 이유는 다음과 같다.

  • 실제 분석에서(특히, 딥러닝 알고리즘을 활용하는 경우) 보게 되는 함수들은 형태가 굉장히 복잡해서 미분계수와 그 근을 계산하기 어려운 경우가 많음
  • 미분계수 계산 과정을 컴퓨터로 구현하는 것보다 경사하강법을 구현하는 것이 훨씬 쉬움
  • 데이터의 양이 매우 큰 경우 경사하강법과 같은 순차적인 방법이 계산량 측면에서 훨씬 효율적



Step size

적절한 step size 선택은 매우 중요하다. Step size가 큰 경우 이동 거리가 커지므로 빠르게 수렴할 수 있다는 장점이 있지만, 최소값으로 수렴되지 못 하고 함수값이 발산할 여지가 있다.
반면에 step size가 너무 작으면 발산하지는 않겠지만, 최소값을 찾는데 너무 오래 걸릴 여지가 있다.

 

 

Gradient Descent의 문제점

1. Local minima

경사하강법의 또 다른 문제는 local minima이다. 우리가 찾고 싶은 건 global minima(함수 전체에서의 최소값)이지만, 어떤 경우에는 local minima에 빠져 벗어나지 못 하는 상황이 발생한다.

하지만 최근에는 실제로 딥러닝이 학습을 할 때, local minima에 빠질 확률이 거의 없다고 한다.
위의 그래프는 가중치(w)가 1개인 모델이지만 실제 딥러닝 모델에서는 w가 수도 없이 많고, 그 수 많은 w가 모두 local minima에 빠져야 w 업데이트가 정지된다. 이는 이론적으로 거의 불가능에 가까운 일이므로, 사실상 local minima는 고려할 필요가 없다.

 

2. 학습시간

한번 학습할 때마다 모든 데이터셋을 이용한다. 즉, 손실함수의 최솟값을 찾아 나가기 위해 한 칸 전진할 때마다 모든 데이터를 다 훑는다는 것이다. 따라서 학습이 굉장히 오래 걸린다(최솟값을 찾는데 오래 걸린다).

 

 

 

저작자표시 비영리 변경금지 (새창열림)

'Data Science > 딥러닝' 카테고리의 다른 글

CNN  (0) 2022.12.03
Optimizer  (0) 2022.12.03
Backpropagation (역전파)  (0) 2022.12.02
Activation Function  (0) 2022.11.24
Perceptron  (0) 2022.11.24
    'Data Science/딥러닝' 카테고리의 다른 글
    • CNN
    • Optimizer
    • Backpropagation (역전파)
    • Activation Function
    kang9366
    kang9366

    티스토리툴바