[CHAPTER03] perceptron, activation function, loss function
Perceptron : 가장 간단한 신경망으로 생물학적 뉴런을 대략 본떠 만듦.
y = f(wx+b)
f - 활성화 함수(비선형 함수)
Activation Function 활성화 함수
1. Sigmoid
- torch.sigmoid(x)
- 매우 빠르게 포화되어 극단적인 출력을 만듦 -> vanishing gradient problem, exploding gradient problem -> 출력을 확률로 압축하는 출력층에서만 사용
2. Hyperbolic tangent
- torch.tanh(x)
- 시그모이드 함수의 변종
3. ReLU(Rectified Linear Unit)
- torch.nn.ReLU()
- 음수를 제거해 gradient vanishing 해결
- 시간이 지나서 신경망의 특정 출력이 0이 되면 다시 돌아오지 않는다는 문제 발생 -> Leakly ReLU, PReLU
3.5 PReLU(Parametric ReLU)
- a는 학습되는 파라미터
4. Softmax
- torch.nn.Softmax()
- 모든 출력의 합으로 각 출력을 나누어 K개 클래스에 대한 이산 확률 분포 만듦. (소프트맥스 출력 합은 1이됨)
Loss Function 손실 함수
정답(y)과 예측(y⌒)을 입력 받아 실숫값 점수를 만드는데, 점수가 높을수록 모델의 예측 성능이 나쁨
1. MSE(Mean Squared Error) 평균 제곱 오차
- torch.nn.MSELoss(outputs, targets)
- 예측과 타깃값의 차이를 제곱하여 평균한 값
- 신경망의 출력과 타깃이 연속값인 회귀 문제에서 사용
- MAE(Mean Absolute Error) , RMSE(Root Mean Squared Error)
2. Categorical Cross-Entropy Loss
- torch.nn.CrossEntropyLoss(outputs, targets)
- 출력을 클래스 소속 확률에 대한 예측으로 이해할 수 있는 다중 분류 문제에 사용
신경망 출력과 손실 함수
1. 출력함수는 수의 범위 제한이 있다
2. 소프트맥스 함수에 사용한 지수 함수의 입력이 음수이면 그 결과는 기하급수적으로 작은 수가 되고, 양수이면 기하급수적으로 큰 수가 된다.
3. 신경망의 출력은 소프트맥스 함수를 적용하기 직전의 벡터라고 가정
4. 로그 함수는 지수 하수의 역함수이고 log(exp(x))는 x와 같다
3. Binary Cross Entropy Loss
- torch.nnBCELoss(probabilities(=sigmoid), targets)
- Binary classification에 효율적
- sigmoid 로 이진확률 벡터 만들고 정답 벡터와의 비교로 이진 크로스 엔트로피 손실 계산.