PyTorchKorea / tutorials-kr

🇰🇷파이토치에서 제공하는 튜토리얼의 한국어 번역을 위한 저장소입니다. (Translate PyTorch tutorials in Korean🇰🇷)
http://tutorials.pytorch.kr
BSD 3-Clause "New" or "Revised" License
343 stars 245 forks source link

TRANSLATION_GUIDE.md 용어 제안 #723

Open Ssunbell opened 1 year ago

Ssunbell commented 1 year ago

이슈 내용

softmax layer에서 사용하는 Temperature 파라미터는 생성 모델 등에서도 쓰이는 hyper parmeter입니다. 그러나 딥러닝을 공부할 때 단순히 받아들여지는 느낌은 "온도? 뭥미?"라는 느낌이 강합니다. 따라서 이 Temperature가 나온 쓰임과 유래를 근거로 볼츠만 온도라는 명칭을 제안합니다.

일반적인 softmax layer와 softmax layer with temperature 구현은 다음과 같습니다.

## softmax
def softmax(a) : 
    c = np.max(a) 
    exp_a = np.exp(a-c) 
    sum_exp_a = np.sum(exp_a)
    y = exp_a / sum_exp_a
    return y

## Softmax with Temperature Parameter
def softmax_with_temperature(z, T) : 
    z = np.array(z)
    z = z / T 
    max_z = np.max(z) 
    exp_z = np.exp(z-max_z) 
    sum_exp_z = np.sum(exp_z)
    y = exp_z / sum_exp_z
    return y
스크린샷 2023-08-13 오전 11 10 56

첫번째 plot은 temperature = 1인 일반적으로 사용하는 softmax 입니다. 두번째와 세번째는 temperature을 각각 > 1, < 1 값을 적용한 결과입니다. 즉, 지수함수의 성질에 따라 큰 값은 더 높은 확률이라고 예측하는 softmax의 성질을 완화해주는 역할을 해줍니다. 이러한 쓰임은 저희가 일반적으로 알고 있는 온도와는 거리가 멉니다.

이 Temperature의 원래 쓰임은 Boltzmann distribution(Gibbs distribution)에서 유래했습니다. 열역학에서 에너지 상태의 시스템 내의 입자 수를 설명하기 위해 대기 상태에서의 온도를 표현하기 위한 단어로 여기서의 온도를 실제로 저희가 아는 온도를 의미합니다.

하지만, cross entropy가 정보 이론에 도입이 되고 이러한 열역학적인 내용이 딥러닝에서도 도입이 되면서 이러한 hyper parameter도 용어를 그대로 가져오는 경우가 대부분입니다. 따라서, 일반적인 온도와 딥러닝에서의 온도를 구별하기 위해 이것이 확률 분포에서 나온 온도라는 것을 표기하고자 볼츠만 분포의 온도 줄여서 볼츠만 온도로 제안합니다.

추가 정보(Ref)

출처1 출처2 출처3 출처4

ganghe74 commented 1 year ago

오, 몰랐던 사실이네요. 덕분에 Temperature 용어의 어원에 대해 배워갑니다 !!

좋은 제안이지만 원문에서 "Boltzmann"을 언급하지 않는다면, 그냥 "온도"로 번역하는 게 낫다고 생각합니다. 최근 AI 논문들도 "Temperature" 용어를 사용할 때 앞에 "Boltzmann"을 붙이지 않는 것으로 알고 있습니다.

대신 문서에 짤막한 Note 형태로 해당 용어의 어원에 대해 언급하거나, https://discuss.pytorch.kr/ 커뮤니티에 공유해주시면 더 많은 사람들이 알 수 있을 것 같아요 !!