XOR 문제 다음으로 딥러닝 발전에 암흑기를 가져온 '기울기 사라짐(Vanishing Gradient)'에 대해 공부해본다.

 

  • 인공신경망은 합성함수의 형태로 계산이 되어 결괏값이 나오는 형태이기 때문에, 그 미분은 연쇄 법칙을 통해서 계산이 됨
  • 연쇄 법칙은 어떤 미분의 곱들로 계산이 됨
  • p1은 활성화 함수 a1에 가중치*x 해준 것
  • p1을 w1으로 미분한 값 = a1을 w1으로 미분한 값

 

  • 최종적으로 입력값에 가중치들이 곱해지고 활성화 함수를 미분한 형태들을 볼 수 있음
  • 역전파의 형태를 봤더니, 활성화 함수를 미분하는 과정이 들어 있는 것을 알 수 있음

 

  • 빨간색으로 표시된 sigmoid는 스무스한 그래프를 가지고 있음
  • sigmoid를 미분하면 파란색 그래프로 표현됨
  • sigmoid 미분한 값들을 곱하면 엄청 작은 0에 가까운 수가 됨
  • 우리가 구하고자 하는 미분 값이 0에 가까운 수가 될 수 있음

 

  • 우리가 w1에 대해 업데이트하고 싶은데 미분 값이 0으로 가버리게 되면 w1이 되기 때문에
  • 다음 가중치가 업데이터 되지 않는 현상이 발생함
  • 이 것을 '기울기 사라짐'이라고 함
  • 층을 깊게 하면 예측에 좋다고 생각을 했는데, 막상 업데이트를 하려고 하니까 연쇄 법칙이 이뤄지면서 미분 값이 0으로 가버리는 문제가 생김

 

  • ReLU 그래프의 0을 기준으로 왼쪽을 미분하면 0, 오른쪽을 미분하면 1
  • 오른쪽 값의 경우 무조건 1이 나오기 때문에 sigmoid 보다는 좋음
  • Leaky ReLU 그래프를 사용하여 기울기 사라짐을 더 방지할 수 있음

 

손실 함수와 최적화에 대해 완벽한 이해가 되지 않더라도, 포인트는 꼭 알고 가자!!

하강법(Descent Method)의 한계

  • 손실 함수 설계 시 W형 그래프인 경우 어디가 최솟값인지 알 수 없는 경우가 생기므로 U형 그래프로 설계하는 것이 좋음
  • 대표적인 손실 함수(Loss function)의 특징 : MAE, MSE, Cross Entropy 함수는 볼록성(Convexity)을 지님
  • Loss Function은 Convex로 설계해주는 것이 가장 좋음

볼록성에 대해서는 아래에서 더 보자!

더보기

볼록성(Convexity)

두 점을 잡아 직선을 그었을 때 원래 있던 함수값보다 위에 있을 경우 Convex라고 이야기함

Loss Function을 Convex 형태로 만들 경우 최솟값을 찾기 쉬우므로 제일 좋음

Non-convex의 경우 시작 위치에 따라 global min으로 갈 수도 있고, local min으로 갈 수도 있기 때문에 최적화하는데 좋지 않음

Loss Function에서 max를 구하는 경우, Concave를 사용하면 좋음(-를 곱하면 min이 되므로 좋음)

 

두 점을 잡아 직선을 그었을 때 원래 있던 함수값보다 위에 있을 경우 Convex라고 이야기함

 

 

 

 

 

내용에 문제가 있으면 댓글로 알려주세요!

 

출처 : 인프런 - 실전 인공지능으로 이어지는 딥러닝 개념 잡기(딥러닝 호형)

앞에서 하강법에 대해 배웠으니, 경사 하강법에 대해 배워보자.

 

 

  • 위 이미지를 보면 이전 변수에 새로 계산한 변수로 update 함
  • 첫 번째 이미지에서는 µ값을 0.4로 해주었고, 최소 값으로 수렴하는 것을 볼 수 있음
  • 두 번째 이미지에서는 µ값을 0.6으로 해주었고, 지그재그로 최솟값을 찾아가는 것을 볼 수 있음
  • 세 번째 이미지에서는 µ값을 1.2로 해주었고, 지그재그로 큰 값으로 가는 것을 볼 수 있음
  • gradient descent를 사용했음에도 불구하고 최소값을 찾지 못하는 현상이 발생하게 됨
  • 따라서, µ 를 적절히  조절을 잘해줘야 함
  • µ 이 너무 크면 수렴하지 않을 수 있음
  • µ이 너무 작으면 수렴 속도가 너무 오래 걸릴 수 있음

 

 

내용에 문제가 있으면 댓글로 알려주세요!

 

출처 : 인프런 - 실전 인공지능으로 이어지는 딥러닝 개념 잡기(딥러닝 호형)

다음은 모델 최적화의 핵심 내용인 경사 하강법을 알기 전에 하강법에 대해 알고 넘어가자.

 

모델이 어떻게 작동하는지에 대해 알기 위해 메커니즘을 알고 넘어가야 한다.

  • 먼저 모델의 input이 주어지면 인풋값을 바탕으로 아웃풋을 산출함
  • input 값을 받아서 output 값을 추출하는 것을 '예측'이라고 함
  • 예측 값이 실제 값과 얼마나 차이가 나는지 아는 것이 중요
  • 실제 값과 예측 값의 차이를 나타내는 척도가 Loss Function
  • 실제 값과 예측 값의 차이가 작으면 작을 수록 학습이 잘 되고 있다는 것
  • w라는 변수를 가지고 있는 모델을 거쳐서 나온 예측 값을 Loss Function에 넣었을 때 값이 작게 나오면 학습이 잘 되고 있는 것
  • 그렇기 때문에, Loss Function의 값이 작게 나오게 하기 위한 w를 구해서 모델에서 사용하는 w값을 update 함
  • 위 이미지의 과정(점점 좋은 w값을 찾는 것)을 반복하는 것을 '최적화'라고 함
  • 모델의 파라미터를 최적화하는 것을 최적화라고 하는데, Loss Function의 값을 작게 만들어주는 w를 찾는 과정이라고 볼 수 있음
  • 일반적으로 초기의 값은 임의로 주어짐
  • 가끔 Loss Function에서 min이 아닌 max를 구하는 로직이 있는데, 이럴 때 당황하지 말고 -max(loss)를 취해주자
  • max(loss) = -min(loss)

 

목적 함수(Objective Function)

  • Loss Function을 작게 하는 모델의 변수를 구하는 것이 목적
  • 그래서 위 함수를 목적 함수라고 부름
  • 목적함수를 기준으로 해서 w값을 계속 갱신함

 

하강법(Descent Method)

  • 주어진 지점으로부터 더 작은 곳으로 이동하려는 방법을 하강법이라고 함
  • 그림의 오른쪽 지점에서 미분을 하면 양수의 기울기가 나오고, 왼쪽 지점에서 미분을 하면 음수의 기울기가 나옴
  • w 지점이 내려가는 방향의 부호와 접선의 기울기가 항상 다름
  • 이 부등호를 만족하는 방향으로 간다면, 항상 아래쪽으로 향할 수 있음

 

  • 하강법의 단점 - 초기 위치에 따라서 도착 지점이 달라질 수 있음(local min에 도착할 수 있음)
  • 우리의 목표는 global min으로 가는 것임
  • 딥러닝에서 global min으로 가도록 하는 것은 매우 힘든 일

 

  • 보통 경사 하강법을 주로 사용함
  • 속도는 느리지만 좀 더 정확한 계산을 원한다면 뉴턴 방법을 사용함

 

경사 하강법(Gradient Descent)를 살짝 맛보고 넘어가 보자.

  • 앞의 내용들을 통해서 경사 하강법이 나옴
  • 경사 하강법을 사용할 때는 이전 변수(w)에서 step size(µ)에 이전 변수의 gradient 값(▽f(w))을 빼서 다음 step으로 가게 함

 

 

 

 

내용에 문제가 있으면 댓글로 알려주세요!

 

출처 : 인프런 - 실전 인공지능으로 이어지는 딥러닝 개념 잡기(딥러닝 호형)

추석 연휴가 다 지나갔으니 다시 겅부를 시작해보쟈ㅠ

 

오늘은 미분에 대해 공부해볼 예정이다.

미분은 인공신경망을 최적화하는데 가장 핵심 요소이기 때문에 반드시 알아야 한다고 한다.

 

기울기의 정의?

  • 직선의 가파른 정도 (두 점을 알고 있어야 기울기를 구할 수 있음)
  • y = ax + b => a : 기울기
  • 접선의 기울기를 알기 위해서 하나의 점에서 가까운 점들을 하나씩 넣어서 기울기를 구해서 극한으로 보냄
  • 왼쪽 그림에서 초록색으로 나타낸 부분은 '평균 기울기'라고 부르며,
  • 오른쪽 그림에서 표시된 접선의 기울기는 '순간 기울기'라고 부름

 

 

도함수와 미분 계수

  • x와 y에 대한 도함수
  • 도함수는 순간 기울기를 의미함

 

미분법 종류

  • 곱의 미분법

  • 합성 함수의 미분법

 

연쇄 법칙(Chain Rule)

  • 인공 신경망은 기본적으로 합성함수의 연산임
  • 미분 가능한 함수들의 합성함수를 미분하는 법칙

 

그레디언트(Gradient)

  • 함수 f를 변수 별로 한 번 미분한 것들을 모은 벡터

 

 

 

 

내용에 문제가 있으면 댓글로 알려주세요!

 

출처 : 인프런 - 실전 인공지능으로 이어지는 딥러닝 개념 잡기(딥러닝 호형)

+ Recent posts