카테고리 없음

[모두를 위한 딥러닝] Lab-06. Softmax Classification

우숨 2021. 2. 5. 07:05

 

discrete Probability distribution 이산적 확률 분포

- 정수의 값

- 예: 주사위(uniform ditrinution: 확률 동일) , 가위를 냈을 때 상대방이 다음 뭐낼지(동일분포가 아닐 수도 있음

- 정규분포(pdf): 면적이 확률의 값. 어떠한 값의 확률은 알 수 없다. 

- 이산형 같은 경우에는 각 값의 확률을 알 수 있다. 

 

  •  softmax 함수 적용: 예전에 철수가 가위를 냈을 때 다음 주먹이 올 확률(랜덤, 사람마다 일정한 패턴 존재)
  •  p(주먹|가위) / p(가위|가위) / p(보|가위) 이런 확률 분포를 근사할 때 뉴런 네트워크 등 이용
  •  softmax: max 값을 뽑는데 soft하게 뽑아줌
    • 기존 max를 뽑는 방법 
    • softmax: 합이 1이 되도록

기존 max를 뽑는 방법
softmax
softmax

 

Cross Entropy

- 2개의 확률분포(P,Q)가 주어졌을 때 얼마나 서로 비슷한지 나타내는 수치

- p가 철수가 가위를 냈을 때 다음에 무엇을 낼 지에 대한 확률분포라 가정했을 때, cross entropy를 최소화하도록 하면

q2>q1 >p로 점점 p에 근사하게 될 것

  • cross entropy loss
    • z: uniform distribution
    • dim=1: 두 번째 디멘젼에 대한 softmax 수행
    • tensor([0,2,1]): 각 샘플의 인덱스값 나타냄. 해당하는 값(0.2645,0.2322,0.1986)을 지칭

  • discrete 확률 분포: one-hot vector로 나타낼 수 있음
    • hypothesis =z 은 원핫벡터 만들어 줌
    • scatter_: scatter inplace
    • y.unsqueeze: (3,) > (3,1)로

pytorch에서 torch.log> F.log_softmax >F.nll loss >F.cross_entropy (모두 동일, 필요에 따라)

뉴럴네트워크는 소프트맥스 이전의 값을 뱉어내야할 가능성이 있어서 예측하는 과정에서 확률 값을 구하기 위해서 다시 소프트맥스를 취해줘야 할 수도 있음

 

실습

 

- 4차원의 벡터를 받아서 어떤 클래스인지 예측하려고 할 때

- y_train: one hot vector로 나타냈을 때 1이 있는 위치의 인덱스 값(이산형> longtensor로 변환)

F.cross_entropy: scatter필요없고 원핫벡터 만드는 과정 생략

 

더 간단하게

 

binary classification > sigmoid function 사용

cross entropy > softmax function 사용