My Vision, Computer Vision

[딥러닝 공부] 딥러닝 최적화1 - 목적 함수 본문

공부

[딥러닝 공부] 딥러닝 최적화1 - 목적 함수

gyuilLim 2025. 1. 3. 13:32

 

 

이 글은

『오일석, Machine Learning(기계 학습), 한빛아카데미(2017년)』

에서 공부한 내용을 토대로 작성되었다.

https://mvcv.tistory.com/41 이 글에서 이어집니다.

 

평균 제곱 오차(Mean Squared Error)의 문제

MSE 적용 예시 비교

 

위 그림을 보면 입력값 x가 1.5이고 타겟값이 0.0인 상태에서 왼쪽 노드는 0.7503, 오른쪽 노드는 0.9971을 출력값으로 내보낸 상황이다.

 

출력 노드는 한 개이기 때문에 평균제곱 오차의 목적함수는 다음과 같이 쓸 수 있다. (σ는 sigmoid 함수)

 

e=12(yo)2=12(yσ(wx+b))2

 

위 그림에서 업데이트해야 할 파라미터는 w(weight)와 bias인데, 이들의 그래디언트를 구하기 위해 각각에 대해 편미분을 해주면 다음과 같은 식이 된다.

 

ew=(yo)xσ(wx+b)eb=(yo)σ(wx+b)

 

왼쪽과 오른쪽 그림의 y, o, x, w, b 값을 위 식에 각각 대입하면

왼쪽 노드에 대해서 eweb는 0.2109, 0.1406이고

오른쪽 노드에 대해서 eweb는 0.0043, 0.0029가 된다.

 

타겟값이 0이기 때문에 0.9971의 값을 출력한 오른쪽 노드가 0.7503을 출력한 왼쪽 노드에 비해 오차가 더 커서 그래디언트도 오른쪽(0.0043, 0.0029)에서 더 커야하지만, 실제로는 왼쪽의 그래디언트(0.2109, 0.1406)가 더 크다.

로지스틱 시그모이드와 도함수

 

위 사진에서 왼쪽 그래프는 시그모이드이고 오른쪽 그래프는 시그모이드의 도함수 그래프이다.

 

시그모이드의 도함수는 0에서 가장 큰 값을 가지고 양쪽으로 퍼질수록 작은 값을 가진다. 즉 $\sigma'(wx+b)$에서 입력값이 커질수록 0에 가까운 값을 가지게 되는 것이다.

 

이는 그래디언트를 작아지게 만들고 그래디언트의 크기가 작기 때문에 매개변수에 업데이트되는 정도가 작아지게된다.

 

결국 학습 속도 저하의 원인이 된다. 학습의 방향은 맞지만 업데이트되는 그래디언트의 크기가 작기 때문에 학습에 시간이 더 걸리게 되는 일이 발생하는 것이다.

 

이러한 현상은 실제 신경망에서도 나타난다.

 

교차 엔트로피 목적함수

e=ylog2o+(1y)log2(1o)

이 때, o=σ(z),z=wx+b 이다.

 

위 수식은 이진 분류에서의 교차 엔트로피 목적함수이다.

 

만약 y가 1일 때 o가 0.98이면 예측값이 정답값에 가깝기 떄문에 예측을 잘 했다고 할 수 있고, 오류 e는 0.0291이 된다.

 

반면 y가 1일 때 o가 0.0001이라면 예측이 잘 안됐다고 할 수 있는데, 이 때 e=13.2877이 되어 예측값이 근접했을 때와 비교했을 때보다 오류값이 더 큰 값을 가지게 된다.

 

출력값과 예측값의 차이가 클 때 오류율또한 증가하므로 적절한 목적함수라고 할 수 있다.

 

또한 교차 엔트로피 목적함수가 느린 학습의 문제를 해결할 수 있는지를 알아보기 위해 w와 b에 대하여 편미분하면 다음과 같다.

 

ew=eoow=(yo1y1o)ow=(yo1y1o)xσ(z)=x(yo1y1o)o(1o)=x(oy)

eb=(oy)

 

각각 w와 b로 편미분한 결과 식에서, 즉 그래디언트에서 출력값과 정답값의 차이(oy)가 기여하는 것을 확인할 수 있다.

 

따라서 o와 y의 차이가 크면 클수록 더 큰 오류율을 반환하게 되는 것이고 이로써 느린 학습의 문제점을 해결했다고 볼 수 있다.

 

교차 엔트로피 목적함수를 이진 분류에서 i개의 부류를 분류하는 문제로 확장하게 되면 다음과 같은 식으로 나타낼 수 있다.

 

e=i=1,c(yilog2oi+(1yi)log2(1oi))

 

교차 엔트로피는 두개의 확률 분포 yo를 고르게 맞춰준다.

 

이 때 y는 정답 o는 예측이기 때문에 y분포는 고정되어 있고 oy에 맞춰지면서 학습된다.

 

yo의 분포가 비슷해지면 엔트로피값이 증가하게 된다. 교차 엔트로피는 두개의 분포가 같아지면 낮아지게 정의를 한것이다.

 

Softmax 활성함수

Softmax는 보통 출력층의 활성함수로 사용한다. 은닉층의 활성함수는 시그모이드나 하이퍼볼릭 탄젠트 함수를 사용한다.

 

출력층에서 softmax를 활성함수로 사용하는 이유는 값의 차이를 키워주는 역할을 하기 때문이다.

max와 softmax의 차이

 

위와 같이 세 개의 부류에 대해 각각 2.0, 1.2, 4.0의 값을 출력했다고 했을 때 이 값들을 sigmoid에 입력하면 0.8808, 0.7685, 0.9820이 출력된다.

 

값의 차이가 원래보다 확연히 줄어든것을 확인할 수 있다. 반면 세 개의 출력값들을 softmax에 입력하게 되면 0.1131, 0.0508, 0.8360의 출력값이 나오게 되는데, 이는 시그모이드보다 입력값들의 차이를 더 키워주는 기능을 한다.

 

Max 함수를 활성함수로 사용했을 때는 값이 제일 큰 세 번째 부류만 1이 되고 나머지는 0이 되는데, softmax는 출력값들을 max 함수의 결과와 비슷하지만 부드럽게 만들어준다고하여 softmax라는 이름이 붙었다.

 

로그우도 목적함수

딥러닝에서 널리 쓰이는 또 다른 목적함수로 로그우도가 있다. 로그우도는 평균제곱 오차나 교차 엔트로피와 달리 해당 부류의 출력값 하나만 사용한다.

 

e=log2oy

 

위 식이 로그우도 목적함수이다. 단순히 분류만 하는 문제에서, 네트워크의 출력값은 부류별 추정값을 의미한다.

 

즉 제일 높은 값을 출력한 부류로 분류되는 것이다. 만약 현재 입력값이 두번째 부류에 해당된다면, 두번째 부류에 해당하는 노드의 출력값이 $o_y$이다. $o_y$의 값이 낮다면 e의 값이 커질것이고 반대로 $o_y$가 높다면 e의 값이 작아질 것이다.

 

따라서 목적함수에 적합하다고 볼 수 있다.

 

728x90