[딥러닝] Activation Functions 와 Cost Function

chaeyoung·2023년 4월 23일
0

DeepLearning

목록 보기
2/4
post-thumbnail

💡 Cost Function

  • Cost/Loss function: data set과 가설함수(h(x))의 오차를 계산하는 함수, 궁극적인 목표는 Global Minimum을 찾는 것

    • Ji(θ)=12(h(xi)yi)2J^i(\theta)=\frac{1}{2} (h(x^i)-y^i)^2
  • Mean-square Cost Function: 전체 Cost의 평균을 구하는 식(이 기준으로 param을 최적화 시켜야함)!

    • J(θ)=1mi=1mJi(θ)J(\theta)=\frac{1}{m} \sum_{i=1}^{m} J^i(\theta)

최적화를 시키는 방법 Gradient 사용

💡 Gradient Descent

  • gradient: 편미분한 값을 vector로 표현

  • Gradient Descent Algorithm 방식:

    1차 미분계수를 이용해 함수의 최솟값을 찾아가는 iterative한 방법

    • -> 그러나 일반적으로 이차함수의 형태를 띄지 않음: 최소점을 찾는 문제가 복잡해짐
  • θ\theta를 효과적으로 구하기 위해 Loss Function의 값을 최소화 하기 위해 기울기 반대 방향으로 일정 크기만큼 이동하는 것을 반복, θ\theta의 변화식은 아래와 같다

    • θ=θαθJ(θ)\theta = \theta -\alpha\nabla_\theta J(\theta)(α\alpha는 learning rate)
    • 종류
      • Grdient Descent: θ=θαθJ(θ)\theta = \theta -\alpha\nabla_\theta J(\theta)
        • 줄이고 싶은 전체 sample의 변곡점을 찾는 알고리즘
        • 단점: 연산량⇡, Saddle Point, Local minimal 발생위험
      • Stochastic Gradient Descent: θ=θαθJi(θ)\theta = \theta -\alpha\nabla_\theta J^i(\theta)
        • 전체 sample 대신 일부 데이터모음을 사용해 최적 파라미터를 찾음
          - 정확도 떨어질 수 있지만, 속도가 빨라 여러번 반복하면 된다.
      • Mini-batch SGD: θ=θαBk=1BθJ(jk)(θ)\theta = \theta -\frac{\alpha}{B}\sum_{k=1}^{B} \nabla_\theta J^(j_k)(\theta)
        • sample B를 길이가 m으로 인덱싱한 후 Gradient Descent값(=오차)를 모두 합함
        • B개의 sample의 오차만 구하기 때문에 속도⇡
    • SGD vs GD
      • GD Time steps: dataset의 batch에서 Epoch이 한번씩 발생
        - SGD Time steps: dataset의 batch와 epoch의 횟수가 맞지않다.
      • "Cost/Loss function을 구한 후 Gradient한 것과 Mean-square Cost Function을 구한 후 Gradient한 값은 같지않다
        "θJ(θ)θJ1(θ)\nabla_\theta J(\theta)\neq\nabla_\theta J_1(\theta)"

참고: https://mangkyu.tistory.com/62
https://angeloyeo.github.io/2020/08/16/gradient_descent.html
https://deeppago.tistory.com/m/67

0개의 댓글