>  기사  >  기술 주변기기  >  딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

王林
王林앞으로
2023-04-16 14:16:031353검색

훈련 중 신경망 최적화는 먼저 모델의 현재 상태에 대한 오차를 추정한 후, 다음 평가의 오차를 줄이기 위해 오차를 표현할 수 있는 함수를 사용하여 가중치를 업데이트하는 것이 필요합니다. 이 함수를 손실 함수라고 합니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

손실 함수의 선택은 신경망 모델이 예제에서 학습하는 특정 예측 모델링 문제(예: 분류 또는 회귀)와 관련이 있습니다. 이 기사에서는 다음을 포함하여 일반적으로 사용되는 몇 가지 손실 함수를 소개합니다.

  • 회귀 모델의 평균 제곱 오류 손실
  • 이진 분류 모델의 교차 엔트로피 및 힌지 손실

회귀 모델의 손실 함수

주요 회귀 예측 모델 연속 값을 예측하는 데 사용됩니다. 따라서 우리는 scikit-learn의 make_regression() 함수를 사용하여 일부 시뮬레이션 데이터를 생성하고 이 데이터를 사용하여 회귀 모델을 구축할 것입니다.

우리는 20개의 입력 특성을 생성할 것입니다. 그 중 10개는 의미가 있지만 10개는 문제와 관련이 없습니다.

그리고 무작위로 1,000개의 예시를 생성합니다. 그리고 무작위 시드를 지정하면 코드를 실행할 때마다 동일한 1,000개의 예제가 생성됩니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

실제 값 입력 및 출력 변수를 합리적인 범위로 확장하면 신경망의 성능이 향상되는 경우가 많습니다. 그래서 우리는 데이터를 표준화해야 합니다.

StandardScaler는 scikit-learn 라이브러리에서도 사용할 수 있습니다. 문제를 단순화하기 위해 모든 데이터를 훈련 및 테스트 세트로 분할하기 전에 크기를 조정합니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

그런 다음 훈련 세트와 검증 세트를 동일하게 분할합니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

다양한 손실 함수를 도입하기 위해 작은 MLP(다층 퍼셉트론) 모델을 개발하겠습니다.

문제 정의에 따르면 입력으로 20개의 특성이 있으며 이는 모델을 통과합니다. 예측하려면 실제 값이 필요하므로 출력 레이어에는 노드가 있습니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

최적화를 위해 SGD를 사용하며 학습률은 0.01, 모멘텀은 0.9이며 둘 다 합리적인 기본값입니다. 훈련은 100 epoch 동안 수행되며, 테스트 세트는 각 단계가 끝날 때 평가되고 학습 곡선이 그려집니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

모델이 완성된 후 손실 함수를 도입할 수 있습니다.

MSE

가장 일반적으로 사용되는 회귀 문제는 평균 제곱 오류 손실(MSE)입니다. 이는 대상 변수의 분포가 가우스인 경우 최대 우도 추론에서 선호되는 손실 함수입니다. 따라서 더 나은 이유가 있는 경우에만 다른 손실 함수로 변경해야 합니다.

Keras에서 모델을 컴파일할 때 손실 함수로 "mse" 또는 "mean_squared_error"를 지정하면 평균 제곱 오차 손실 함수가 사용됩니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

아래 코드는 위 회귀 문제의 완전한 예입니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

예제를 실행하는 첫 번째 단계에서는 모델의 학습 및 테스트 데이터 세트의 평균 제곱 오차가 인쇄됩니다. 소수점 3자리가 유지되므로 0.000

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

으로 표시됩니다. 아래 그림에서 볼 수 있듯이 모델은 매우 빠르게 수렴되고 훈련 및 테스트 성능은 변경되지 않은 것으로 나타났습니다. 모델의 성능 및 수렴 속성에 따라 평균 제곱 오차는 회귀 문제에 적합한 선택입니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

MSLE

다양한 범위의 값을 갖는 회귀 문제에서는 큰 값을 예측할 때 모델에 평균 제곱 오차만큼 페널티를 주는 것이 바람직하지 않을 수 있습니다. 따라서 평균 제곱 오차는 먼저 각 예측 값의 자연 로그를 계산하여 계산할 수 있습니다. 이러한 손실을 MSLE 또는 평균 제곱 로그 오류라고 합니다.

예측값에 큰 차이가 있을 경우 페널티 효과를 완화하는 효과가 있습니다. 모델이 규모가 조정되지 않은 수량을 직접 예측할 때 이는 더 적절한 손실 측정이 될 수 있습니다.

keras의 손실 함수로 "mean_squared_logarithmic_error" 사용

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

아래 예는 MSLE 손실 함수를 사용한 전체 코드입니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

모델의 MSE는 훈련 데이터 세트와 테스트 데이터 세트 모두에서 약간 더 나쁩니다. 이는 목표 변수의 분포가 표준 가우스 분포이기 때문입니다. 이는 우리의 손실 함수가 이 문제에 적합하지 않을 수 있음을 의미합니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

아래 그림은 각 훈련 epoch의 비교를 보여줍니다. MSE는 잘 수렴하지만 epoch 20부터 변화할 때마다 감소하다가 증가하기 시작하므로 MSE가 과적합될 수 있습니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

MAE

회귀 문제에 따라 대상 변수의 분포는 주로 가우스 분포일 수 있지만, 평균에서 멀리 떨어진 크거나 작은 값과 같은 이상치가 포함될 수 있습니다.

이 경우 평균 절대 오차 또는 MAE 손실은 이상값에 더 강력하므로 적합한 손실 함수입니다. 실제 값과 예측 값 간의 절대 차이를 고려하여 평균으로 계산됩니다.

"mean_absolute_error" 손실 함수를 사용하여

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

MAE를 사용한 전체 코드입니다

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

결과는 다음과 같습니다

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

아래 그림에서 볼 수 있듯이 MAE는 수렴하지만 울퉁불퉁 한 과정이 있습니다. 또한 MAE는 목표 변수가 큰 이상값이 없는 가우스 함수이기 때문에 이 경우에는 그다지 적합하지 않습니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

이진 분류에 대한 손실 함수

이진 분류 문제는 예측 모델링 문제의 두 레이블 중 하나입니다. 이 문제는 첫 번째 또는 두 번째 클래스의 값을 0 또는 1로 예측하는 것으로 정의되며, 일반적으로 클래스 값 1에 속할 확률을 예측하는 것으로 구현됩니다.

또한 sklearn을 사용하여 데이터를 생성합니다. 여기서는 2차원 평면과 두 개의 동심원이 있는 문제를 사용합니다. 외부 원의 점은 클래스 0에 속하고 내부 원의 점은 클래스 1에 속합니다. . 학습을 더욱 어렵게 만들기 위해 샘플에 통계적 노이즈도 추가합니다. 표본 크기는 1000이고 통계적 잡음은 10% 추가되었습니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

데이터 세트의 산점도는 우리가 모델링하는 문제를 이해하는 데 도움이 될 수 있습니다. 아래 나열된 것은 완전한 예입니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

산점도는 다음과 같으며, 입력 변수는 점의 위치를 ​​결정하고 색상은 클래스 값입니다. 0은 파란색이고 1은 주황색입니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

여기에는 여전히 훈련용 절반과 테스트용 절반이 있습니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

SGD 최적화를 사용하여 간단한 MLP 모델

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

을 정의합니다. 학습률은 0.01, 추진력은 0.99입니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

모델은 200회의 피팅을 위해 훈련되었으며 모델의 성능은 손실과 정확도 측면에서 평가됩니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

BCE

BCE는 이진 분류 문제를 해결하는 데 사용되는 기본 손실 함수입니다. 최대 우도 추론 프레임워크에서는 손실 함수를 선택합니다. 유형 1 예측의 경우 교차 엔트로피는 실제 확률 분포와 예측 확률 분포 간의 평균 차이를 요약하는 점수를 계산합니다.

Keras 모델을 컴파일할 때 Binary_crossentropy를 손실 함수로 지정할 수 있습니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

클래스 1의 확률을 예측하려면 출력 레이어에 노드와 '시그모이드' 활성화가 포함되어야 합니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

전체 코드는 다음과 같습니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

모델은 테스트 데이터 세트에서 83%의 정확도와 85%의 정확도로 문제를 비교적 잘 학습했습니다. 점수 간에 어느 정도 겹치는 부분이 있는데, 이는 모델이 과대적합도 과소적합도 아님을 나타냅니다.

아래 사진처럼 훈련효과가 아주 좋습니다. 확률 분포 간의 오류가 연속적이므로 손실 플롯은 매끄러워지는 반면 정확도 선 플롯은 범프를 표시합니다. 훈련 및 테스트 세트의 예는 올바른지 또는 잘못된 것으로만 예측할 수 있고 덜 세부적인 정보를 제공할 수 있기 때문입니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

Hinge

지원 벡터 머신(SVM) 모델은 이진 분류 문제를 해결하기 위해 교차 엔트로피 대신 Hinge 손실 함수를 사용합니다.

목표 값은 이진 분류에 사용하기 위한 [-1, 1] 집합에 있습니다. 실제 클래스 값과 예측 클래스 값의 부호가 다른 경우 Hinge에서는 더 큰 오류가 발생합니다. 이진 분류 문제에서는 교차 엔트로피보다 더 나은 경우도 있습니다.

첫 번째 단계로 대상 변수의 값을 {-1, 1} 집합으로 수정해야 합니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

케라스에서는 '힌지'라고 합니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

네트워크의 출력 계층에서 tanh 활성화 함수의 단일 노드를 사용하여 -1과 1 사이의 단일 값을 출력해야 합니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

전체 코드는 다음과 같습니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

교차 엔트로피보다 약간 나쁜 성능, 훈련 및 테스트 세트의 정확도가 80% 미만입니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

아래 그림에서 볼 수 있듯이 모델은 수렴하였고, 분류 정확도 그래프에서도 역시 수렴한 것을 알 수 있습니다.

딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수

이 문제에는 BCE가 더 낫다는 것을 알 수 있습니다. 여기서 가능한 이유는 노이즈 포인트가 있다는 것입니다

위 내용은 딥러닝 신경망 훈련에 일반적으로 사용되는 5가지 손실 함수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제