CS/Artificial Intelligence

Cross entropy Loss에서 gradient 구하기

djs100201 2024. 11. 10. 14:24

딥러닝 개론 수업 과제를 하면서 꽤나 까다롭게 느껴져서 정리하고자 올린다.

일단 gpt를 보고 어느정도 도움을 받기는 했는데 gpt는 softmax function과 sigmoid 함수 관계를 자꾸 설명하지 못해서 내가 손으로 직접 풀었다.

 

1. Softmax Function

 

 

2. Cross Entrophy Loss 

Regularzation 생략

 

Softmax Fuction의 미분은 

같이 나오게 되는데, 이는 각각에 대해 편미분을 생각해보면 조금 편하다.

 

우선 j와 k가 다를 때는 분수함수의 미분을 사용해야 하는데, k에 대해서 생각을 해보면 1/f 꼴의 미분이라는 것을 알 수 있는데,e^x 의 미분은 자기 자신이여서,  f'/f = softmax(sk)가 나온다

아이패드가 지금 없어서 손글씨...

 

j = k 일때는 더 쉽다. 시그모이드 함수를 g라고 하자. g(x)= 1/1+e^(-x) 인데 분자 분모에 e^x를 곱하면 g(x)=e^x/1+e^x 이다. 

softmax 함수의 편미분을 생각해보면, e^x/상수 + e^x 꼴이다. 이 상수를 c라고 하고  분자 분모를 c로 나누고, x = y/c로 치환해서 미분하면 어차피 결국 g(x) 꼴임을 알 수 있고, 따라서 미분 결과도 저렇게 나온다는 것을 추론 및 증명 할 수 있다.

 

그럼 이제 Li를 쉽게 구해보자.

log를 f(x)라고하고 softmax를 s(x)라고 하면 Li= -1 *  f(s(x))이다. L'=s' f'(s)인데 우리는 f'(x)=1/x 임을 안다. (ln미분...)

 

따라서 L'= s'/s임을 알게 되는데, 위에서 본 것처럼 softmax(Sk)가 j=k이던 아니던 둘다 곱해져 있다! (즉 s'을 s로 나눌 수 있다!)

 

따라서 L'은 j=k 일때는 S-1이고 j!=k일때는 S이다

따라서 전체 graident는 그냥 softmax function을 구하고 y label들에 대해서만 1빼주면 된다.

 

아래는 gpt의 내용이다. 최종 정리가 되어 있다.

 

 

 

'CS > Artificial Intelligence' 카테고리의 다른 글

Purpose of Regularization  (1) 2025.01.06
강화학습에서 Value Iteration / Bellman backup  (0) 2024.11.21