logo

머신러닝에서의 손실 함수 📂머신러닝

머신러닝에서의 손실 함수

정의

데이터 Y=[y1yn]Y = \begin{bmatrix} y_{1} \\ \vdots \\ y_{n} \end{bmatrix} 에 대한 추정치가 Y^=[y1^yn^]\widehat{Y} = \begin{bmatrix} \widehat{ y_{1} } \\ \vdots \\ \widehat{y_{n}} \end{bmatrix} 와 같이 주어져 있을 때 데이터와 추정치의 괴리도를 나태는 스칼라 함수 L:Rn[0,)L : \mathbb{R}^{n} \to [ 0 , \infty )손실 함수라 한다.

다른 이름

손실 함수는 학습을 통해 얻은 데이터의 추정치가 실제 데이터와 얼마나 차이나는지 평가하는 지표로 쓰인다. 이 값이 크면 클수록 많이 틀렸다는 의미고, 이 값이 00 이라는 것은 ‘무손실’ 즉 완벽하게 추정할 수 있다는 의미가 된다. 이는 수학에서 말하는 메트릭과 크게 다를 바가 없다.

원래 경제학에서 먼저 쓰인 단어기 때문에 LL 은 때때로 비용 함수Cost Function 라 불리기도 한다.

종류

다음 두가지는 대표적인 손실 함수로, 용도에 알맞게 사용할 정도로만 알면 충분하다.

MSE(Mean of Squared Error)

L(Y^):=1ni=1n(yiyi^)2 L \left( \widehat{Y} \right) := {{1} \over {n}} \sum_{i=1}^{n} ( y_{i} - \widehat{ y_{i} } )^2 MSE는 유서 깊은 손실 함수로써, yiRy_{i} \in \mathbb{R} 일 때 유의미하게 사용할 수 있다.

크로스 엔트로피

L(Y^):=1ni=1n<yi,log(σ(yi^))> L \left( \widehat{Y} \right) := - {{1} \over {n}} \sum_{i=1}^{n} \left< y_{i} , \log \left( \sigma ( \hat{y_{i}} ) \right) \right>

크로스 엔트로피는 이른바 원-핫 인코딩을 할 때 유효한 수단이 되며, YY 가 범주형 데이터일 때 Y^\widehat{Y} 가 추정한 각각의 확률을 이용해 계산한다. 주로 분류 문제에 사용된다.

원-핫 인코딩이란 그냥 표준기저로의 매핑을 말한다. mm 개의 계급이 있다면, Rn\mathbb{R}^{n} 상의 표준기저를 β={ei}i=1m\beta = \left\{ e_{i} \right\}_{i=1}^{m}으로 표기할 때, 각각의 yiy_{i}yi^\hat{y_{i}}

yiRm,y^iβ y_{i} \in \mathbb{R}^{m},\qquad \hat{y}_{i} \in \beta

와 같은 벡터로 나타난다. 예를 들어 YY 가 3개의 계급을 가질 때, yiy_{i}가 1번 분류에 속한다면 yi=[1,0,0]ty_{i} = [1,0,0]^{t}, 33번 분류에 속한다면 yi=[0,0,1]ty_{i} = [0,0,1]^{t} 처럼 나타내는 식이다.

σ\sigma소프트맥스 함수로써 주어진 벡터의 값들을 [0,1][0,1] 에 바운드 시키고 확률분포의 조건을 만족시키게 하는 함수다. <,>\left< \cdot , \cdot \right>내적이다. σ(yi^)[0,1]\sigma ( \hat{y_{i}} ) \in [0,1] 이므로 log(σ(yi^))<0\log \left( \sigma ( \hat{y_{i}} ) \right) < 0 이고 yiy_{i}00 혹은 11 이므로 L(Y^)=1ni=1n<yi,log(σ(yi^))>0 L \left( \widehat{Y} \right) = - {{1} \over {n}} \sum_{i=1}^{n} \left< y_{i} , \log \left( \sigma ( \hat{y_{i}} ) \right) \right> \ge 0 임을 쉽게 확인할 수 있다.

yi=(yi1,,yij,,yim)y_{i} = ( y_{i1} , \cdots , y_{ij} , \cdots , y_{im} ) 의 추정치인 yi^=(yi1^,,yij^,,yim^)\hat{ y_{i} } = ( \hat{ y_{i1} } , \cdots , \hat{y_{ij}} , \cdots , \hat{y_{im}} ) 의 각 성분들은 확률이 높을수록 큰 값, 낮을 수록 낮은 값을 갖는다. 이를 소프트맥스 함수에 넣으면 확률이 클수록 11 에 가깝고 낮을수록 00 에 가까운 값으로 조정된다. 만약 실제 성분이 11 인데 확률을 낮게 계산했다면 1log(c)- 1 \cdot \log (c)c1c\ll 1 이므로 꽤 큰 값이 된다. 반대로 실제 성분이 00 인데 확률을 높게 계산해봐도 0log(c)- 0 \cdot \log(c) 은 큰 의미가 없다. 따라서 많이 틀리면 틀릴수록 크로스 엔트로피가 치솟게 될 것임을 어렵지 않게 짐작할 수 있다.

같이보기