TensorFlow - Softmax regression


sigmoid 란 0~1 의 값으로 조정시켜 주는것. 
소프트 맥스는 sigmoid 를 하는 기법 중의 하나로 이해할 수 있겠다.
소프트 맥스를 통과하면 0~1사이고 전체의 sum 이 1이 된다.
-> 이것을 one-hot encoding 기법으로 1. 0. 0 로 변경하는데 tensor flow 에는 argmax 함수가 있다.


cost function
  cross entropy 라는 함수를 사용한다.
  
logistic cost vs cross entropy
  동일하다.


cross entroy  = loss function 


learning_rate : 테스트를 위해 한번에 움직이는 계수.


Learning rate 가 클 경우, 그레프를 뚫고 지나간다.  cost 함수를 실행하면 NAN 이 나오는 이유.

마찬가지로 leaning rate 가 적을때에도 기울기가 0인 부분을 찾아 떠나다가 늙어죽는다.

  • Cost 함수를 출력해봐서 learning rate 를 조절하는 것이 필요.




Data (X) 의 선처리를 하는 이유

  • w 가 2개가 있다고 가장했을 때 그래프를 위와 같이 그릴 수 있는데, 값이 매우 커질 경우에는 아래와 같이 변경된 형태의 그래프가 생기게 된다. 

  • learning rate 가 적은 값임에도 불구하고 위 그림과 같이 데이터가 튈 수 있다.
  • 그래서 Nomalize를 거친다
    • zero-centered data, nomalized data 한 데이터를 만들기 위함.






Learning rate 가 적당한데도 값이 튄다면 아래 함수를 적용하여 Nomalize 를 시행하면 된다.


  • x의 값을 계산한 평균과 분산의 값을 가지고 나누어주는데 이러한 형태의 Nomalization 을 Standardization 이라 한다.
  • 수학 통계학 관점에서 봤을 때,
    • Normalization (정규화) : 전체구간을 0~100으로 설정하여 데이터를 관찰하는 방법. 
      • 우리는 전체 구간을 0~1 로 설정한다.
    • Standardization (표준화) : 평균을 기준으로 얼마나 떨어져 있는지를 나타내는 값.
      • 2개 이상의 대상이 단위가 다를 때 대상 데이터를 같은 기준으로 볼 수 있게 하기 위함.
    • 출처 : https://brunch.co.kr/@rapaellee/4


Overfitting : 학습을 통해 모델을 만들어가는데, 학습데이터에 딱 잘맞는 모델을 만들어내면 문제가 됨..
  • 실제 데이터를 넣을 경우 안맞는 경우가 생김.


  • model2 는 데이터에만 맞는 모델이여서 실제 정확도가 매우 떨어짐. (Overfitting)
  • 구부러진 형태..


Overfitting 을 줄이는 방법?
  • Training data Set,
  • features 의 중복을 줄인다.
  • Regularization 을 한다. (일반화)




  • Training data 외에도 testing, validation 데이터 셋을 만드는게 필요하다.



  • training data set 을 30% 정도로 적당히 나눠주는게 좋다.









one epoch - 한번에 도는 트레이닝 데이터셋
batch size - one epoch 이 너무 커서 자르는 데이터셋.











+ Recent posts