티스토리 뷰

개인 공부

Softmax & Loss

dasu 2022. 8. 13. 07:28

What is softmax?

  • Softmax layer란 classification이나 regression 등에서 마지막에 output layer에서 확률과 비슷한 성질을 가지게 처리해주는 부분
  • Softmax layer에서 사용하는 함수를 Softmax function이라 하고, 추후 편의를 위해 output layer 직전까지의 결과를 x=[x1, x2, , xn]T\mathbf{x}=[x_1,~x_2,~\cdots,~x_n]^T, 즉 xRn\mathbf{x}\in\R^n이라 하자.
  • 이때 softmax function f(x) : RnRnf(\mathbf{x})\ :\ \R^n\rightarrow\R^n에 대해 다음과 같이 정의한다.
f(x)=[exp(x1)i=1nexp(xi)exp(x2)i=1nexp(xi)exp(xn)i=1nexp(xi)]f(\mathbf{x})=\begin{bmatrix} \dfrac{exp(x_1)}{\sum_{i=1}^n exp(x_i)}\\\\ \dfrac{exp(x_2)}{\sum_{i=1}^n exp(x_i)}\\\\ \vdots\\\\ \dfrac{exp(x_n)}{\sum_{i=1}^n exp(x_i)}\end{bmatrix}
  • 이때 exp(x)exp(x)는 자연상수를 밑으로 하는 지수함수를 의미한다.
  • 이가 확률과 비슷한 성질을 가지고 있다고 했는데, 왜 그렇게 되는지 확인해보자.
  • 확률 같은 경우
    1. 총 합이 1이여야 하며
    1. 모든 값이 0보다 크거나 같아야 하고,
    1. 발생할 수 있는 event 수가 많을 수록 높은 확률값을 가지고 있어야 한다.
  • 물론.. 확률 자체도 정의하기 위해서는 Measure라는 다른 개념을 들고 와야하지만, 너무 deep하니까 이건 빼고 알아보도록 하자.
    1. y^=f(x)\hat{y}=f(\mathbf{x})라 하면 i=1ny^i=i=1nexp(xi)j=1nexp(xj)=1\displaystyle\sum_{i=1}^n \hat{y}_i=\displaystyle\sum_{i=1}^n \dfrac{exp(x_i)}{\sum_{j=1}^n exp(x_j)}=1 (분모가 상수이기 때문에 앞으로 빼고 계산)
    1. exp(x)>0exp(x)>0이기 때문에 trivial
    1. 이를 보이기 위해  i, jn : xi>xj\exist ~i,\ j\leq n\ :\ x_i>x_j라 하자.
      • 이때, h(x)=exp(x)h(x)=exp(x)라 하면 h(x)=exp(x)h'(x)=exp(x)이므로 x : h(x)>0\forall x\ :\ h'(x)>0, 즉 h(x)h(x)는 증가함수이다.
      • 앞에서도 말했다시피 분모는 상수이므로 분자가 크면 클수록 더 큰 값을 가지고, 따라서 y^i>y^j\hat{y}_i>\hat{y}_j이다.
  • 하지만, 식을 보면 알 수 있듯이, 이는 확률이랑은 엄연히 다른 개념이다.
  • 우리가 필요한 것은 어떠한 값이 얼마나 많이 나올지, 즉 확률에 대한 값이 필요한데 왜 흔히 아는 정의를 사용하지 않고 이렇게 복잡하게 softmax를 활용하여 계산을 할까?

Why softmax? (1) - probability & gradient aspect

  • 앞에서 수도 없이 언급했듯이, softmax function은 probability 관점에서 바라볼 수 있기 때문에, 확률을 대신하는 개념으로 자주 사용된다.
  • 다만, 일반적인 확률 대신 선택 받은 이유는 범용성 때문이다.
  • 생각보다, 일반 확률은 불편한 점이 많다. 만약, 모든 xix_i의 값이 00보다 크다면 상관이 없지만, xix_i가 음수가 되는 순간부터 헬파티이다.
  • 이를 막기 위해 절댓값을 취해주면, 그 때부터는 미분 여부에 대해 문제점이 생긴다!
  • 일반적으로, 우리는 절댓값 함수가 미분이 가능하지 않다고 배웠고, 뭐 다변수 함수가 된다고 그러한 점이 크게 변하지는 않는다. 실제로 다변수함수에 대한 미분을 그래디언트라고 하는데, 그래디언트를 계산하는 방법도 우리가 일반적으로 미분하는 방법과 크게 다르지는 않다. (편미분)
  • 우리는 단순히 모델에 대한 학습 정도를 파악하는 것이 아니라, parameter들을 직접 학습해야한다! 이러한 과정을 이전에 Backpropagation이라고 하였다.
  • 이때, 앞에서도 말했듯이 계산해야하는 양이 굉장히 많기 때문에 backpropagation에서 계산하는 미분값은 사칙연산을 통해서 모두 계산이 되어야하고, 사칙연산이든 말든 기본적으로는 미분이 되어야 한다!
  • 하지만, 절댓값 함수 자체가 미분이 불가능하기 때문에, 그것들 자체가 미분이 가능하다는 보장이 없다.
    • 물론, sigmoid function 등을 1회 걸쳐서 확률로 만든 다음 계산하는 방법도 있을 수 있으나, 그렇게 할 바엔 든든하고 뜨끈한 softmax 한번 조지고 만다 (물론 sigmoid 자체가 softmax function에서 n=2인 경우라서.. 두 개는 굉장히 유사하다)
  • 이 뿐만 아니라, softmax는 Invariant 특성을 가지고 있다.
    • Invarinat는 불변의 라는 의미인데, 보통 Invariant under X라고 하면 X에 대해 변하지 않는 것을 의미한다. 예를 들어, 함수 ff가 scaling에 invariant하다면 f(cx)=f(x)f(cx)=f(x)의 특성을 가지고 있다.
    • softmax는 Scaling에 대해서는 Invariant하지는 않고, translation에 대해 invariant하다. 즉, f(x+c)=f(x)f(x+c)=f(x)이다.
    • 이 말인 즉슨, 확률 분포의 값이 단체로 여러 칸 이동해도 크게 변하지 않음을 의미한다.
      • 참고로, 일반적인 확률 개념에서는 변한다. 만약 NN개에 대해 cc만큼 움직이면 분모가 cNcN만큼 커지므로, 영향력이 전체적으로 변하게 된다.
    • 이 덕분에, 값의 크기가 아니라 값들이 어떠한 분포를 가지고 있느냐에 따라 softmax 값이 정해진다는 큰 장점이 있다.

Why Softmax? (2) - Information aspect

  • 다음은 정보 이론에서 다루는 내용과 큰 관련이 있다.
  • 간단하게 요점부터 말하면, Backpropagation 과정에서 gradient를 계산할 때, probability distribution으로 softmax를 활용하게 되면 굉장히 간단하게 결과가 나온다.
    • 그래디언트의 값이 y^y\hat{y}-y가 되는데, 일단 이걸 자세하게 설명하기 위해 여러 가지 사실을 알아보자.

Likelihood

  • 번역하면 “가능도”라고 불리는 요소인데, 뭐가 가능하단 것인지 한번 보자.
  • 우리는 일반적으로 어떠한 확률 분포가 주어졌을 떄, 어떤 이벤트가 발생하는 것을 확률이라고 한다. 이를, 조건부 확률을 사용하여 표시하면
    • distribution을 이룰 때 사용한 parameter를 θ\theta, event는 xx이다.
    • 이때, 확률 PPP(x  θ)=Pθ(X=x)P(x\ |\ \theta)=P_\theta(X=x)라고 적을 수 있다.
  • 하지만, 우리는 일반적으로 “어떠한 값”에 대해서는 알기 쉬우나, “어떠한 분포”인지는 알기가 굉장히 어렵다. DL이나 ML에서는 이것을 간략하게 approximation 하기도 하고…
  • 따라서, 우리는 역으로 어떠한 값이 주어졌을 때 이 값이 해당 distribution에서 나왔을 확률이 얼마인가?에 대해서 알아볼 필요가 있다. 즉, 이때까지 y=f(x)y=f(x)에 대해서 탐구했다면 지금은 x=f1(y)x=f^{-1}(y)에 대해서 탐구하는 느낌이라고 보면 될 듯 하다.
[출처]: https://dlearner.tistory.com/43
  • 이를 “가능도”라고 하고, 동일하게 xxθ\theta라 하면 L(θ  x)\mathcal{L}(\theta\ |\ x)라고 적는다.
    • 아주 자주 쓰는 예시로(다른말로 위키피디아 펌이라는 뜻 ㅎ)
      • 만약 아주 이상적인 동전을 던진다고 하면, 앞면이 나올 확률은 0.50.5이다.
      • 앞면을 H\mathrm{H}라 하고, 동전을 θ\theta라 하면 P(HH  θ)=0.25P(\mathrm{HH}\ |\ \theta)=0.25가 된다.
      • 역으로, P(θ  HH)P(\theta\ |\ \mathrm{HH})에 대해서 알아보면, 이미 동전이 앞이 두개가 나온 상황에서 앞면이 나올 확률을 0.50.5라고 하자.
      • 그러면, 앞면 두개가 나올 확률은 당연히 0.250.25이다.
      • 즉, 확률에서는 distribution을 고정하고 event들을 요리조리 움직였다면, 가능도에서는 역으로 event를 고정하고 distribution을 요리조리 옮기는 것이다.
  • 말했다시피, 우리가 알고 싶은 것은 어떠한 parameter들일 때 이러한 관측값들이 최대가 되는가?이다. 이를 Maximum likelihood estimation(최대우도법)이라고 한다.

Entropy

  • 이제 잠시 주제를 바꾸어서, Information theory으로 넘어가보려고 한다.
  • Entropy는 물리에서 자주 나오는 개념이라 열역학 쫌 쳐봤다 싶으면 익숙한 개념일텐데, 비슷하다.
    • 일반적으로 Entropy는 “무질서도”라는 의미를 가지고 있는데, 다른 말로 하면 “불확실성”을 의미한다.
    • 만약 질서정연하게 있으면 어떠한 객체가 어디쯤 있을지는 쉽게 예측할 수 있다. 서있는 곳 찍으면 되니까.. 하지만, 여러 가지로 퍼져 있으면, 그걸 찾는것은 기하급수적으로 어려워진다.
    • 왜y? 공간이 넓어지고 그러면, 어떠한 자리에 있을 “확률”이 낮아지기 때문
    • 즉, Entropy는 확률이랑 아주 밀접한 관련이 있으며, 확률이 낮으면 낮을수록 그 정보에 대해서 확신을 할 수 없게 된다. 이럴 때 우리는 “엔트로피가 높다”라고 한다.
  • 조금 더 엄밀하게 말하면, 엔트로피는 어떠한 정보(확률)에 대해 이것이 일어나면 얻을 수 있는 정보량이라고 생각하면 좋다.
  • 예를 들어, 일이 99%로 일어난다고 치자. 만약 그 일이 일어나면, 우리는 “아~ 익숙하구머잉”이라고 하면서 넘어가지 와 세계멸망의대징조가보인다우리의인생은어떻게하지 이런 스탠스를 보이지 않는다.
  • 즉, 너무 자주 일어나기 때문에 그 일이 일어나도 얻을 수 있는 정보가 많이 없다.
  • 하지만, 갑자기 내가 로또 당첨되면 천재일우의 기회라면서 떠받혀준다. 확률이 극히 적으니, 이런 일이 일어나면 뭐 어떤 꿈을 꿨느니 어떤 루트로 길을 걸었느니 주변에서 별 시덥잖은 거 다 물어보지 않는가? 비슷하다. 아주 드문 일이 일어나면 그 일이 일어난 경위 등에 대해서 정보를 얻을 수 있게 되고, 이런 것을 보고 정보량이 많다라고 한다.
  • 즉, 확률이 낮으면 낮을 수록 정보량이 높음을 알 수 있고, 이것의 기댓값을 엔트로피라고 하자는 것이다.
[출처]: https://en.wikipedia.org/wiki/Entropy_(information_theory)
  • 그러면 우리는 이 정보량이라는 정량적으로 표현할 방법이 필요하다. 간단하게 생각해보자.
  • 우리는 일반적으로 정보를 얻는다라고 생각을 할 때, 어떤가가 참인가? 거짓인가?로 판단하게 된다. 즉, 어떠한 가정을 세우고 그에 대한 답을 듣고 그걸 정보로 삼는 것이다.
  • 이제 한 가지 집합을 정의하자. 총 1616개의 공이 있는데, 88개는 빨강, 44개는 노랑, 흰색과 검은색 공은 22개씩 있다고 하자.
  • 친구가 공 11개를 뽑고, 우리한테 어떠한 색인 것 같냐고 물어본다. 이 경우, 차례대로 빨간색 공? ⇒ 노란색 공? ⇒ 흰색 (or 검은색) 공? 의 질문을 차례대로 던지면 된다.
  • 즉, 빨간색 공일 확률은 12\dfrac{1}{2}로 제일 높으므로 질문을 한번만 해도 알아낼 수 있고, 노란색은 14\dfrac{1}{4}이므로 두번만 하면 알아낼 수 있다. 나머지 공은 33번은 해야한다.
  • 즉, 우리는 하나의 사건에 대한 질문 수를 log1p(x)=logp(x)\log \dfrac{1}{p(x)}=-\log p(x)라고 할 수 있고, 기댓값(현재는 이산)은 possible xp(x)×(logp(x))=p(x)logp(x)\displaystyle\sum_{\text{possible}~x} p(x)\times(-\log p(x))=-\sum p(x)\log p(x)로 적을 수 있다.
  • 이를 우리는 엔트로피라고 하고, HH라고 보통 작성한다.
  • 즉, 확률 벡터 x\mathbf{x}에 대해 H(x)=k=1nxilog(xi)H(\mathbf{x})=-\displaystyle\sum_{k=1}^n x_i\log(x_i)로 정의한다.
  • 현재 log로 자연상수를 썼는데, 이진로그를 써도 된다. 하지만.. 자연상수 쓰는게 일반적으로 편하므로 앞으로는 자연상수로 통일한다.

Cross Entropy

  • 앞에서는 하나의 사건들에 대해 다루었다면, 확장하여 두 개의 사건에 대해 다루어보자.
  • 즉, 두 Sample space PPQQ에 대해 xx의 확률을 P(x)P(x), Q(x)Q(x)라 하여 확장해보자.
  • 기존에는 PP의 확률을 알고 이를 이용하여 PP에 질문을 던졌다면, Cross Entropy에서는 반대로 PP의 확률을 알고 이를 이용하여 QQ에 질문을 던지는 것이다.
  • 그러면, 우리가 알고 있는 것은 PP이므로 PP 상에서 최적의 전략을 이용하여 질문을 던질 것이고, 이가 QQ에서 실제로 유효할수도, 그렇지 않을 수도 있다.
  • 이를 식으로 나타내면 possibile xp(x)×(logq(x))=possibile xp(x)logq(x)\displaystyle\sum_{\text{possibile}\ x}p(x)\times(-\log q(x))=-\displaystyle\sum_{\text{possibile}\ x}p(x)\log q(x)가 된다.
  • 이때, PP를 아는 상황에서 Cross-Entropy를 최소화하기 위해서는 어떻게 해야할까?
    • pp가 각각의 상수로 고정이 되어 있는 상황에서 위 문제는 Unconstrained Convex Problem 으로 바꿀 수 있다.
    • 따라서, gradient의 값이 00이 됨을 이용하여 구해보면 pqp\approx q일수록 Cross-Entropy의 값이 줄어든다.
  • 근데 이 개념을 다른 관점에서 보도록 하자.
  • 우리는 Training data에서 값들이 어떤 분포를 가지고 있는지 알고 있다!
    • 이는 이미 답이 정해져 있는 상태이기 때문에 할 수 있는 추론이다.
    • 즉, 이는 p(x)p(x)에 해당한다.
    • 그리고 q(x)q(x)를 “모델이 알아내는 값”으로 해버리면, Cross-Entropy를 최소화하는 문제는 모델이 정확한 값을 예측하는 문제와 동치임을 알 수 있다.
    • 이의 확장판이 KL-Divergence
  • 앞의 버전은 이산적인 상황이고, 뒤로 넘어가면 넘어갈수록 연속적인(Regression) 문제로 바뀌기 떄문에 p(x)logq(x)\int p(x)\log q(x)로 대부분 작성하곤 한다.

KL-Divergence

  • KL-Divergence는 두 확률 분포 간의 차이를 측정하는 measure 중 가장 많이, 그리고 가장 단순히 사용된다.
    • 이외에 Weierstrass, Jensen-Shannon divergence…. 등이 있음
  • 앞에서 말한 Cross-Entropy는 단순히 전략 PP에 대한 QQ의 횟수를 물어보았다면, KL-Divergence는 전략 PP를 사용했을 때 QQPP에 대해 얼마나 많이 손해를 보는가?이다.
  • 앞의 것과 뭐가 다르냐? 싶겠지만.. 느낌이 많이 다르다.
    • 앞의 것은 단순히 QQ에 대해 초점이 맞추어져 있다.
    • 허나, KL-Divergence는 단순히 QQ만 보겠다는 것이 아니라 PP도 같이 보겠다는 의미
  • 식으로는
DKL(PQ)=p(x)logp(x)q(x)D_{KL}(P||Q)=-\int p(x)\log \dfrac{p(x)}{q(x)}

로 적고, 확률 분포 PP에 따른 QQ의 차이를 의미한다.

  • 직관적으로 생각해보았을 때 PP에 따른 QQ의 차이와 QQ에 따른 PP의 차이는 다르다. 12\dfrac{1}{2}의 관점에서 2244배이나 22의 관점에서 12\dfrac{1}{2}14\dfrac{1}{4}배인 것을 떠오르면 좋다.
  • 즉, DKL(PQ)DKL(QP)D_{KL}(P||Q)\neq D_{KL}(Q||P)이고, 자기 자신에 대한 KL-Divergence는 00이다.
  • 위를 종합하면 다음 두 가지가 성립한다.
    • DKL(PQ)0D_{KL}(P||Q)\geq 0
    • DKL(PQ)DKL(QP)\bm{D_{KL}(P||Q)\neq D_{KL}(Q||P)} (Not Symmetric)
  • 이때, pp를 진짜의 분포, qq를 우리가 알고 싶은 모델의 예측 분포라고 가정하면 KL-Divergence를 최소화하는 것은 모델이 보다 정확한 예측을 하는 문제로 바뀌게 된다!
  • 이제 KLD의 식을 조금 정리해볼 것인데, 로그의 성질을 활용하면..
DKL(PQ)=p(x){logp(x)logq(x)}=H(p, q)H(p)D_{KL}(P||Q)=-\int p(x)\{\log p(x)-\log q(x)\}=H(p,~q)-H(p)
  • 앞에서도 말했듯이 pp는 이미 나와있는 값이므로 H(p)H(p)는 상수이다.
  • 즉, DKL(PQ)\bm{D_{KL}(P||Q)}를 최소화하는 것은 p\bm{p}에 대한 q\bm{q}의 Cross-Entropy를 최소화하는 것과 동일하다!

Relation between KL-Divergence and negative log-likelihood

  • 이때까지 배웠던 내용을 상기해보면, Classification(Discrete label)에서는 Cross-Entropy를, Regression(Continuous label)에서는 MSE(Mean Square Error)를 일반적으로 사용한다.
  • 뭐 MSE는 그렇다치고… Cross-Entropy Loss에 대해서는 한번쯤 의문을 가져볼만하다.
  • Cross-Entropy Loss의 식이 결코 단순하진 않은데, 왜 하필 이런 복잡한 식을 사용할까?
  • 그 이유는 Negative log-likelihood에 있다.
  • Output이 multiple한, 즉 y=[y1, y2, ..., yn]y=\left[y_1,~y_2,~...,~y_n\right]인 Label과 모델이 예측한 확률의 값을 y^\hat{y}라 하고, parameter set을 θ\theta라 하자.
  • 이때 Likelihood function은 L(yx;θ)=i=1ny^iyiL(y|x;\theta)=\prod_{i=1}^n\hat{y}_i^{y_i}로 작성할 수 있다. (실제로 11인 것만 반영하는 확률)
  • 이를 최대화하는 것이 목표이고, log(x)\log(x)는 one-to-one increasing function이므로 L(yx;θ)L(y|x;\theta)를 최대화하는 것은 log(L(yx;θ))\log(L(y|x;\theta))를 최대화하는 것과 동일하다.
  • 실제로 log\log를 양변에 취하면 i=1nyilogy^i\displaystyle\sum_{i=1}^n y_i\log{\hat{y}_i}가 되고, 이를 최대화하는 것이 목표이다
    • 위의 식은 Cross-Entropy에 음수를 취한 것이므로, log-likelihood에 음수를 취하자!
    • 즉, Negative log-likelihood를 최소화하는 것은 Cross-Entropy를 최소화하는 것과 동일한 문제가 되었다!
  • 추가로, 만약 Continuous(Regression)의 경우 Gaussian model에 대해 MLE를 구하는 것으로 생각할 수 있고, 이때의 loss는 MSE이다.

Link


Uploaded by N2T

'개인 공부' 카테고리의 다른 글

Batch normalization Forward Pass & Backpropagation  (0) 2023.01.02
Graph transformer networks based text representation  (0) 2022.09.03
B. (Variational) Auto Encoder  (0) 2022.07.16
A. Attention  (0) 2022.07.16
8. Weight Initialization  (0) 2022.07.16
댓글
최근에 올라온 글
공지사항
Total
Today
Yesterday
최근에 달린 댓글
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함