본문 바로가기

딥러닝 & 머신러닝/[2020-2] 머신러닝 수업

20201112 머신러닝 수업

- 미니 배치, iteration, epoch

 

: 1000개의 샘플이 있다고 할 때, 100개의 미니 배치 10개로 구성한다고 하자. 이 "미니 배치 한 개를 학습 완료하면 한 번의 iteration이 끝났다"라고 한다. 그리고 모든 미니 배치, 즉 10개의 미니 배치, 즉 "1000개의 모든 샘플을 한 번 학습 완료하면 한 번의 epoch이 끝났다"라고 한다.

 

- softmax 함수 (or classifier)

softmax 함수

e^x 함수는 입력받은 x의 값이 작으면 더 작게, 크면 더 크게 만드는 성질을 갖고 있다. 즉, 위 그림처럼 여러 가지 입력값이 softmax 함수에 들어왔을 때, 가장 큰 값을 제외한 나머지 값들은 전부 작게 만들어버리는게 softmax의 기능이다. 이때 softmax의 분모는 정규화 기능을 한다.

 

왜 'soft'max인가? max 함수는 입력받은 값들을 정렬시켜 가장 끝의 원소, 즉 가장 큰 값 하나만을 골라낸다. 한편 max 함수는 미분이 불가능하다. 그러나 softmax 함수는 미분이 가능하고, max와 유사하다. 그래서 'soft'max라고 부른다.

 

위 그림에서, 입력으로 들어온 x가 Linear model을 통과하고 난 후, softmax 함수로 들어가기 전의 그 값을 logit이라고 한다. 이때부터 이미 예측값은 맨 위의 값으로 정해졌다. logit의 값이 2로, 나머지 두 개보다 크기 때문이다. 그러나 우리는 logit을 softmax 함수에 통과시켜 확률분포로 만든 후, 그것을 cross entropy 함수에 통과시킨다. 그러면 가장 높은 확률 값을 가진 값 하나만 1로 표시하고 나머지는 다 0으로 표시하는, 원-핫 벡터(label, 즉 ground truth)이 된다.

 

cross entropy loss

원-핫 벡터는 ground truth, 즉 실제값의 형태를 띠는데, 이것은 logit과 값 뿐만 아니라 스케일도 다르다. (위 그림에선 스케일은 비슷하지만 실제로는 많이 다를 수 있다) 그러나 softmax를 한 번 통과시키면 스케일 조정도 되고, 그 값이 확률값이기 때문에 cross entropy loss 사용이 가능하다. 이러한 두 가지 이유로 softmax를 사용한다.

 

더 자세히 말하자면, logit과 원-핫 벡터(ground truth)를 비교하는 것보다, softmax 통과값과 원-핫 벡터를 비교할 때 둘 사이의 차이가 적기 때문에 softmax를 사용한다.