소개: 손실 함수가 모든 것을 주도합니다
La 손실 함수 (손실 함수) 및 모델이 최적화하는 기준 훈련 중. 그리고 학습의 "나침반"은 "틀리는 것"이 무엇을 의미하는지 정의합니다. 그리고 얼마나. 잘못된 손실을 선택하면 학습이 불가능해질 수 있습니다. 완벽한 아키텍처.
무엇을 배울 것인가
- 회귀 손실: MSE, MAE, Huber 손실
- 분류별 손실: 이진 및 다중 클래스 교차 엔트로피
- 불균형 데이터 세트의 초점 손실
- SVM 및 마진에 대한 힌지 손실
- 임베딩을 위한 대비 및 삼중항 손실
- 사용자 정의 손실 함수를 만드는 방법
회귀로 인한 손실
평균 제곱 오차(MSE)
회귀분석에 가장 많이 사용되는 손실입니다. 큰 오류에 대해 2차적으로 페널티를 적용합니다.
예측에 대한 파생물 \\hat{y}_i:
찬성: 어디에서나 미분 가능하며 기울기는 오류에 비례합니다. 에 맞서: 민감하다 특이치 (단일 변칙적인 지점이 있을 수 있습니다. 손실을 지배하십시오).
평균 절대 오차(MAE)
찬성: 이상치에 강건합니다(선형 페널티). 에 맞서: 일정한 기울기(최소 근처에서 가속하지 않음), 0으로 미분할 수 없음.
후버 로스: 타협
La 후버 손실 MSE와 MAE의 장점을 결합: 오류에 대해 MSE처럼 동작합니다. 작은 오류의 경우 MAE로 사용:
import numpy as np
def mse(y_true, y_pred):
return np.mean((y_true - y_pred)**2)
def mae(y_true, y_pred):
return np.mean(np.abs(y_true - y_pred))
def huber_loss(y_true, y_pred, delta=1.0):
error = np.abs(y_true - y_pred)
quadratic = np.minimum(error, delta)
linear = error - quadratic
return np.mean(0.5 * quadratic**2 + delta * linear)
# Dati normali
y_true = np.array([1.0, 2.0, 3.0, 4.0, 5.0])
y_pred = np.array([1.1, 2.2, 2.8, 4.1, 4.9])
print("Senza outlier:")
print(f" MSE: {mse(y_true, y_pred):.4f}")
print(f" MAE: {mae(y_true, y_pred):.4f}")
print(f" Huber: {huber_loss(y_true, y_pred):.4f}")
# Aggiungi outlier
y_true_out = np.append(y_true, 6.0)
y_pred_out = np.append(y_pred, 20.0) # Outlier!
print("\nCon outlier:")
print(f" MSE: {mse(y_true_out, y_pred_out):.4f}")
print(f" MAE: {mae(y_true_out, y_pred_out):.4f}")
print(f" Huber: {huber_loss(y_true_out, y_pred_out):.4f}")
분류별 손실
이진 교차 엔트로피(BCE)
시그모이드 출력을 사용한 이진 분류의 경우 \\hat{y} = \\sigma(z) \\in (0, 1):
(우아하게 단순한) 파생물:
범주형 교차엔트로피
소프트맥스 출력을 사용한 다중클래스 분류의 경우:
원-핫 라벨(하나만 y_c = 1)는 다음과 같이 됩니다: L = -\\log(\\hat{y}_c), 어디 c 그리고 올바른 수업.
초점 손실: 불균형 데이터 세트의 경우
La 초점 손실 어려운 예제에 집중하기 위해 쉬운 예제의 무게를 줄였습니다.
어디 p_t 그리고 올바른 클래스의 확률, \\감마 \\geq 0 및 포커싱 매개변수(일반적으로 2), e \\alpha_t 그리고 균형 요소. 모델이 이미 있을 때 물론이죠(p_t 높음), 용어 (1 - p_t)^\\gamma 손실에 대한 기여도를 줄입니다.
import numpy as np
def softmax(z):
exp_z = np.exp(z - np.max(z, axis=-1, keepdims=True))
return exp_z / np.sum(exp_z, axis=-1, keepdims=True)
def cross_entropy_loss(y_true, logits):
"""Categorical cross-entropy con softmax."""
probs = softmax(logits)
n = y_true.shape[0]
log_probs = -np.log(probs[np.arange(n), y_true] + 1e-15)
return np.mean(log_probs)
def focal_loss(y_true, logits, gamma=2.0, alpha=1.0):
"""Focal loss per dataset sbilanciati."""
probs = softmax(logits)
n = y_true.shape[0]
pt = probs[np.arange(n), y_true]
focal_weight = alpha * (1 - pt) ** gamma
log_probs = -np.log(pt + 1e-15)
return np.mean(focal_weight * log_probs)
# Esempio: 3 classi
y_true = np.array([0, 1, 2, 1, 0])
logits = np.array([
[2.0, 0.5, -1.0], # Classe 0 facile
[0.1, 3.0, -0.5], # Classe 1 facile
[-1.0, 0.2, 1.5], # Classe 2 media
[0.5, 0.3, 0.2], # Classe 1 difficile
[0.1, 0.1, 0.1], # Classe 0 difficilissima
])
print(f"Cross-Entropy: {cross_entropy_loss(y_true, logits):.4f}")
print(f"Focal Loss (gamma=2): {focal_loss(y_true, logits, gamma=2):.4f}")
print(f"Focal Loss (gamma=0): {focal_loss(y_true, logits, gamma=0):.4f}") # = CE
유사성 학습에 대한 손실
힌지 손실
다음에서 사용됨 SVM (지원 벡터 머신), 클래스 간 최소 마진이 필요합니다.
어디 y \\in \\{-1, +1\\}. 모델이 올바르게 분류되면 마진이 충분하면 손실은 0입니다.
대비 손실
쌍을 포함하려면 유사한 항목을 더 가까이 배치하고 다른 항목은 더 멀리 배치합니다.
어디 d = \\|f(x_1) - f(x_2)\\|, y=0 비슷한 커플의 경우, y=1 다른 커플의 경우 e m 그리고 마진.
삼중 손실
임베딩을 학습하려면 삼중 항(앵커, 포지티브, 네거티브)을 사용하십시오.
앵커는 음수보다 양수에 여유를 두고 더 가까워야 합니다. m.
온도 스케일링 및 교정
Il 온도 스케일링 매개변수를 추가하는 사후 교정 기술 티 > 0 소프트맥스로:
티 > 1: "더 부드러운" 분포(덜 자신감 있음). 티 < 1: "더 어려운" 분포(더 자신감 있음). 티 = 1: 표준 소프트맥스.
손실 선택 가이드
실제 규칙:
- 회귀: MSE(표준), Huber(이상값 포함), MAE(중앙값 대 평균)
- 이진 분류: 이진 교차 엔트로피 + 시그모이드
- 멀티클래스 분류: 교차엔트로피 + 소프트맥스
- 불균형 데이터 세트: 클래스 가중치를 갖는 초점 손실 또는 교차 엔트로피
- 유사성/임베딩: 삼중선 손실 또는 대비 손실
- 순위: 힌지 손실 또는 마진 순위 손실
요약
기억해야 할 핵심 사항
- MSE: \\frac{1}{n}\\sum(y - \\hat{y})^2 - 회귀 표준, 이상값에 민감
- 교차 엔트로피: -\\sum y_k \\log \\hat{y}_k - 분류 기준
- 초점 손실: 추가 (1-p_t)^\\감마 수업의 균형을 맞추기 위해
- 후버 손실: 임계값을 통한 강력한 MSE/MAE 절충 \\델타
- 삼중 손실: 마진이 있는 임베딩을 학습합니다.
- 온도: T 소프트맥스의 신뢰도 확장
다음 기사에서: 우리는 다음을 탐구할 것이다. 추론 통계 데이터 과학자를 위한 것입니다. 신뢰 구간, t-테스트, p-값, A/B 테스트 및 이를 방지하는 방법 가장 흔한 통계 함정.







