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
- Normalization (정규화) : 전체구간을 0~100으로 설정하여 데이터를 관찰하는 방법.
Overfitting : 학습을 통해 모델을 만들어가는데, 학습데이터에 딱 잘맞는 모델을 만들어내면 문제가 됨..
- 실제 데이터를 넣을 경우 안맞는 경우가 생김.
- model2 는 데이터에만 맞는 모델이여서 실제 정확도가 매우 떨어짐. (Overfitting)
- 구부러진 형태..
Overfitting 을 줄이는 방법?
- Training data Set,
- features 의 중복을 줄인다.
- Regularization 을 한다. (일반화)
- 너무 큰 w 의 값을 가지지 말자.
- 구부러진 그래프를 펴는 방법이다.
- 일반화의 공식은 아래와 같다.
- 기존의 코스트 함수에 추가로 regurarization term 을 추가한다.
- regurarization term 이란 모든 w의 제곱의 합을 더한뒤, regurarization strength 라는 람다 상수에 곱하여 더한값.
- 람다는 상수
- 0 에 가까워질수록 regurarization 을 사용하지 않겠다.
- 1 에 가까워질수록 regurarization 을 중요하게 생각하겠다.
- 이 식은 w를 최소가 되는 값을 구할 수 있다...? 어떻게
- /출처 : http://gjghks.tistory.com/category/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D/%EB%AA%A8%EB%91%90%EB%A5%BC%20%EC%9C%84%ED%95%9C%20%EB%94%A5%EB%9F%AC%EB%8B%9D
- Training data 외에도 testing, validation 데이터 셋을 만드는게 필요하다.
- training data set 을 30% 정도로 적당히 나눠주는게 좋다.
one epoch - 한번에 도는 트레이닝 데이터셋
batch size - one epoch 이 너무 커서 자르는 데이터셋.
'TensorFlow' 카테고리의 다른 글
TensorFlow - XOR 문제 딥 러닝으로 풀기. (0) | 2018.03.26 |
---|---|
TensorFlow - 딥러닝의 기본 개념 (0) | 2018.03.26 |
TensorFlow - Logistic regression (0) | 2018.03.25 |
TensorFlow - Hypothesis, CostFunction (0) | 2018.03.25 |
Tensorflow 기초 - Window 에서 사용하기 (0) | 2018.03.25 |