목차
손실함수란 무엇인가요?
손실 함수 및 측정항목
손실 함수를 사용하는 이유
회귀 문제
1. 평균 제곱 오차(MSE)
2. 평균절대오차(MAE)
3. 평균 제곱근 오차(RMSE)
4. 평균 편향 오차(MBE)
5. Huber 손실
이진 분류
6. 최대 가능성 손실(Likelihood Loss/LHL)
7.BCE(Binary Cross Entropy)
8、Hinge Loss 和 Squared Hinge Loss (HL and SHL)
多分类
9、交叉熵(CE)
10、Kullback-Leibler 散度 (KLD)
백엔드 개발 파이썬 튜토리얼 일반적으로 사용되는 10가지 손실 함수 설명 및 Python 코드 구현

일반적으로 사용되는 10가지 손실 함수 설명 및 Python 코드 구현

Apr 13, 2023 am 09:37 AM
python 연산 손실 함수

손실함수란 무엇인가요?

손실 함수는 모델이 데이터에 얼마나 잘 맞는지 측정하는 알고리즘입니다. 손실 함수는 실제 측정값과 예측값 간의 차이를 측정하는 방법입니다. 손실 함수의 값이 높을수록 예측이 부정확해지고, 손실 함수의 값이 낮을수록 예측이 실제 값에 가까워집니다. 손실 함수는 각 개별 관찰(데이터 포인트)에 대해 계산됩니다. 모든 손실 함수의 값을 평균하는 함수를 비용 함수라고 합니다. 더 쉽게 이해하면 손실 함수는 단일 샘플에 대한 것이고 비용 함수는 모든 샘플에 대한 것입니다.

손실 함수 및 측정항목

일부 손실 함수는 평가 측정항목으로도 사용할 수 있습니다. 그러나 손실 함수와 메트릭은 목적이 다릅니다. 측정항목은 최종 모델을 평가하고 다양한 모델의 성능을 비교하는 데 사용되는 반면, 손실 함수는 모델 구축 단계에서 생성되는 모델에 대한 최적화 도구로 사용됩니다. 손실 함수는 모델에 오류를 최소화하는 방법을 안내합니다.

즉, 손실 함수는 모델이 어떻게 훈련되었는지 알고, 측정 지수는 모델의 성능을 설명합니다.

손실 함수를 사용하는 이유

손실 함수는 예측 값과 실제 값의 차이를 측정하므로 모델을 훈련할 때(일반적인 경사하강법) 모델 개선을 안내하는 데 사용할 수 있습니다. 모델을 구축하는 과정에서 특성의 가중치가 변하여 예측이 좋아지거나 나빠지면 손실 함수를 사용하여 모델 내 특성의 가중치를 변경해야 하는지 여부와 변화 방향을 판단해야 합니다. .

우리가 해결하려는 문제의 유형, 데이터 품질 및 분포, 사용하는 알고리즘에 따라 기계 학습에서 다양한 손실 함수를 사용할 수 있습니다. 다음 그림은 우리가 컴파일한 10가지 일반적인 손실 함수를 보여줍니다. :

일반적으로 사용되는 10가지 손실 함수 설명 및 Python 코드 구현

회귀 문제

1. 평균 제곱 오차(MSE)

평균 제곱 오차는 모든 예측값과 참값의 차이를 제곱하여 평균한 것을 말합니다. 회귀 문제에 자주 사용됩니다.

def MSE (y, y_predicted):sq_error = (y_predicted - y) ** 2sum_sq_error = np.sum(sq_error)mse = sum_sq_error/y.sizereturn mse
로그인 후 복사

2. 평균절대오차(MAE)

는 예측값과 실제값의 절대차의 평균으로 계산됩니다. 이는 데이터에 이상값이 있는 경우 평균 제곱 오차보다 더 나은 측정값입니다.

def MAE (y, y_predicted):error = y_predicted - yabsolute_error = np.absolute(error)total_absolute_error = np.sum(absolute_error)mae = total_absolute_error/y.sizereturn mae
로그인 후 복사

3. 평균 제곱근 오차(RMSE)

이 손실 함수는 평균 제곱 오차의 제곱근입니다. 더 큰 오류를 처벌하고 싶지 않은 경우 이는 이상적인 접근 방식입니다.

def RMSE (y, y_predicted):sq_error = (y_predicted - y) ** 2total_sq_error = np.sum(sq_error)mse = total_sq_error/y.sizermse = math.sqrt(mse)return rmse
로그인 후 복사

4. 평균 편향 오차(MBE)

는 평균 절대 오차와 유사하지만 절대값을 구하지 않습니다. 이 손실 함수의 단점은 음수 오류와 양수 오류가 서로 상쇄될 수 있다는 점이므로 연구자가 오류가 한 방향으로만 진행된다는 것을 알고 있을 때 적용하는 것이 좋습니다.

def MBE (y, y_predicted):error = y_predicted - ytotal_error = np.sum(error)mbe = total_error/y.sizereturn mbe
로그인 후 복사

5. Huber 손실

Huber 손실 함수는 평균 절대 오차(MAE)와 평균 제곱 오차(MSE)의 장점을 결합합니다. 이는 Hubber 손실이 두 가지 분기를 갖는 함수이기 때문입니다. 한 가지 분기는 예상 값과 일치하는 MAE에 적용되고 다른 분기는 이상값에 적용됩니다. Hubber Loss의 일반 기능은 다음과 같습니다.

일반적으로 사용되는 10가지 손실 함수 설명 및 Python 코드 구현

여기

일반적으로 사용되는 10가지 손실 함수 설명 및 Python 코드 구현

def hubber_loss (y, y_predicted, delta)delta = 1.35 * MAEy_size = y.sizetotal_error = 0for i in range (y_size):erro = np.absolute(y_predicted[i] - y[i])if error < delta:hubber_error = (error * error) / 2else:hubber_error = (delta * error) / (0.5 * (delta * delta))total_error += hubber_errortotal_hubber_error = total_error/y.sizereturn total_hubber_error
로그인 후 복사

이진 분류

6. 최대 가능성 손실(Likelihood Loss/LHL)

이 손실 함수는 주로 이진 분류 문제에 사용됩니다. 각 예측 값의 확률을 곱하여 손실 값을 구하고, 관련 비용 함수는 관측된 모든 값의 평균입니다. 클래스가 [0] 또는 [1]인 이진 분류의 다음 예를 살펴보겠습니다. 출력 확률이 0.5보다 크거나 같으면 예측 클래스는 [1]이고, 그렇지 않으면 [0]입니다. 출력 확률의 예는 다음과 같습니다.

[0.3, 0.7, 0.8, 0.5, 0.6, 0.4]

해당 예측 클래스는 다음과 같습니다.

[0, 1, 1, 1, 1, 0]

실제 클래스는 다음과 같습니다.

[0, 1, 1, 0, 1, 0]

이제 실제 클래스와 출력 확률을 사용하여 손실을 계산합니다. 실제 클래스가 [1]이면 출력 확률을 사용하고, 실제 클래스가 [0]이면 1-확률을 사용합니다.

((1–0.3)+0.7+0.8+(1–0.5)+ 0.6+(1 –0.4)) / 6 = 0.65

파이썬 코드는 다음과 같습니다:

def LHL (y, y_predicted):likelihood_loss = (y * y_predicted) + ((1-y) * (y_predicted))total_likelihood_loss = np.sum(likelihood_loss)lhl = - total_likelihood_loss / y.sizereturn lhl
로그인 후 복사

7.BCE(Binary Cross Entropy)

이 함수는 대수 우도 손실을 수정한 것입니다. 일련의 숫자를 쌓으면 신뢰도가 높지만 잘못된 예측에 불이익을 줄 수 있습니다. 이진 교차 엔트로피 손실 함수의 일반 공식은 다음과 같습니다.

— (y . log (p) + (1 — y) . ​​​​log (1 — p))

계속해서 다음 값을 사용해 보겠습니다. 위의 예:

출력 확률 = [0.3, 0.7, 0.8, 0.5, 0.6, 0.4]

실제 클래스 = [0, 1, 1, 0, 1, 0]

— (0 . log (0.3) + (1–0) .로그(1–0.3)) = 0.155

— (1 . log(0.7) + (1–1) . log (0.3)) = 0.155

— (1 . log(0.8) + (1–1) . log (0.2)) = 0.097

— (0 . log (0.5) + (1–0) . log (1–0.5)) = 0.301

— (1 . log(0.6) + (1–1) . log (0.4)) = 0.222

— (0 . log (0.4) + (1–0) . log (1–0.4)) = 0.222

那么代价函数的结果为:

(0.155 + 0.155 + 0.097 + 0.301 + 0.222 + 0.222) / 6 = 0.192

Python的代码如下:

def BCE (y, y_predicted):ce_loss = y*(np.log(y_predicted))+(1-y)*(np.log(1-y_predicted))total_ce = np.sum(ce_loss)bce = - total_ce/y.sizereturn bce
로그인 후 복사

8、Hinge Loss 和 Squared Hinge Loss (HL and SHL)

Hinge Loss被翻译成铰链损失或者合页损失,这里还是以英文为准。

Hinge Loss主要用于支持向量机模型的评估。错误的预测和不太自信的正确预测都会受到惩罚。 所以一般损失函数是:

l(y) = max (0 , 1 — t . y)

这里的t是真实结果用[1]或[-1]表示。

使用Hinge Loss的类应该是[1]或[-1](不是[0])。为了在Hinge loss函数中不被惩罚,一个观测不仅需要正确分类而且到超平面的距离应该大于margin(一个自信的正确预测)。如果我们想进一步惩罚更高的误差,我们可以用与MSE类似的方法平方Hinge损失,也就是Squared Hinge Loss。

如果你对SVM比较熟悉,应该还记得在SVM中,超平面的边缘(margin)越高,则某一预测就越有信心。如果这块不熟悉,则看看这个可视化的例子:

일반적으로 사용되는 10가지 손실 함수 설명 및 Python 코드 구현

如果一个预测的结果是1.5,并且真正的类是[1],损失将是0(零),因为模型是高度自信的。

loss= Max (0,1 - 1* 1.5) = Max (0, -0.5) = 0

일반적으로 사용되는 10가지 손실 함수 설명 및 Python 코드 구현

如果一个观测结果为0(0),则表示该观测处于边界(超平面),真实的类为[-1]。损失为1,模型既不正确也不错误,可信度很低。

loss = max (0 , 1–(-1) * 0) = max (0 , 1) = 1

일반적으로 사용되는 10가지 손실 함수 설명 및 Python 코드 구현

如果一次观测结果为2,但分类错误(乘以[-1]),则距离为-2。损失是3(非常高),因为我们的模型对错误的决策非常有信心(这个是绝不能容忍的)。

loss = max (0 , 1 — (-1) . 2) = max (0 , 1+2) = max (0 , 3) = 3

python代码如下:

#Hinge Lossdef Hinge (y, y_predicted):hinge_loss = np.sum(max(0 , 1 - (y_predicted * y)))return hinge_loss#Squared Hinge Lossdef SqHinge (y, y_predicted):sq_hinge_loss = max (0 , 1 - (y_predicted * y)) ** 2total_sq_hinge_loss = np.sum(sq_hinge_loss)return total_sq_hinge_loss
로그인 후 복사

多分类

9、交叉熵(CE)

在多分类中,我们使用与二元交叉熵类似的公式,但有一个额外的步骤。首先需要计算每一对[y, y_predicted]的损失,一般公式为:

일반적으로 사용되는 10가지 손실 함수 설명 및 Python 코드 구현

如果我们有三个类,其中单个[y, y_predicted]对的输出是:

일반적으로 사용되는 10가지 손실 함수 설명 및 Python 코드 구현

这里实际的类3(也就是值=1的部分),我们的模型对真正的类是3的信任度是0.7。计算这损失如下:

Loss = 0 . log (0.1) + 0 . log (0.2) + 1 . log (0.7) = -0.155

为了得到代价函数的值,我们需要计算所有单个配对的损失,然后将它们相加最后乘以[-1/样本数量]。代价函数由下式给出:

일반적으로 사용되는 10가지 손실 함수 설명 및 Python 코드 구현

使用上面的例子,如果我们的第二对:

Loss = 0 . log (0.4) + 1. log (0.4) + 0. log (0.2) = -0.40

那么成本函数计算如下:

일반적으로 사용되는 10가지 손실 함수 설명 및 Python 코드 구현

使用Python的代码示例可以更容易理解:

def CCE (y, y_predicted):cce_class = y * (np.log(y_predicted))sum_totalpair_cce = np.sum(cce_class)cce = - sum_totalpair_cce / y.sizereturn cce
로그인 후 복사

10、Kullback-Leibler 散度 (KLD)

又被简化称为KL散度,它类似于分类交叉熵,但考虑了观测值发生的概率。 如果我们的类不平衡,它特别有用。

일반적으로 사용되는 10가지 손실 함수 설명 및 Python 코드 구현

def KL (y, y_predicted):kl = y * (np.log(y / y_predicted))total_kl = np.sum(kl)return total_kl
로그인 후 복사

以上就是常见的10个损失函数,希望对你有所帮助。

위 내용은 일반적으로 사용되는 10가지 손실 함수 설명 및 Python 코드 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

휴대폰에서 XML을 PDF로 변환 할 때 변환 속도가 빠르나요? 휴대폰에서 XML을 PDF로 변환 할 때 변환 속도가 빠르나요? Apr 02, 2025 pm 10:09 PM

모바일 XML에서 PDF의 속도는 다음 요인에 따라 다릅니다. XML 구조의 복잡성. 모바일 하드웨어 구성 변환 방법 (라이브러리, 알고리즘) 코드 품질 최적화 방법 (효율적인 라이브러리 선택, 알고리즘 최적화, 캐시 데이터 및 다중 스레딩 사용). 전반적으로 절대적인 답변은 없으며 특정 상황에 따라 최적화해야합니다.

휴대 전화에서 XML 파일을 PDF로 변환하는 방법은 무엇입니까? 휴대 전화에서 XML 파일을 PDF로 변환하는 방법은 무엇입니까? Apr 02, 2025 pm 10:12 PM

단일 애플리케이션으로 휴대 전화에서 직접 XML에서 PDF 변환을 완료하는 것은 불가능합니다. 두 단계를 통해 달성 할 수있는 클라우드 서비스를 사용해야합니다. 1. 클라우드에서 XML을 PDF로 변환하십시오. 2. 휴대 전화에서 변환 된 PDF 파일에 액세스하거나 다운로드하십시오.

C 언어 합계의 기능은 무엇입니까? C 언어 합계의 기능은 무엇입니까? Apr 03, 2025 pm 02:21 PM

C 언어에는 내장 합계 기능이 없으므로 직접 작성해야합니다. 합계는 배열 및 축적 요소를 가로 질러 달성 할 수 있습니다. 루프 버전 : 루프 및 배열 길이를 사용하여 계산됩니다. 포인터 버전 : 포인터를 사용하여 배열 요소를 가리키며 효율적인 합계는 자체 증가 포인터를 통해 달성됩니다. 동적으로 배열 버전을 할당 : 배열을 동적으로 할당하고 메모리를 직접 관리하여 메모리 누출을 방지하기 위해 할당 된 메모리가 해제되도록합니다.

XML을 PDF로 변환 할 수있는 모바일 앱이 있습니까? XML을 PDF로 변환 할 수있는 모바일 앱이 있습니까? Apr 02, 2025 pm 09:45 PM

XML 구조가 유연하고 다양하기 때문에 모든 XML 파일을 PDF로 변환 할 수있는 앱은 없습니다. XML에서 PDF의 핵심은 데이터 구조를 페이지 레이아웃으로 변환하는 것입니다. XML을 구문 분석하고 PDF를 생성해야합니다. 일반적인 방법으로는 요소 트리와 같은 파이썬 라이브러리를 사용한 XML 및 ReportLab 라이브러리를 사용하여 PDF를 생성하는 XML을 구문 분석합니다. 복잡한 XML의 경우 XSLT 변환 구조를 사용해야 할 수도 있습니다. 성능을 최적화 할 때는 멀티 스레드 또는 멀티 프로세스 사용을 고려하고 적절한 라이브러리를 선택하십시오.

권장 XML 서식 도구 권장 XML 서식 도구 Apr 02, 2025 pm 09:03 PM

XML 서식 도구는 규칙에 따라 코드를 입력하여 가독성과 이해를 향상시킬 수 있습니다. 도구를 선택할 때는 사용자 정의 기능, 특수 상황 처리, 성능 및 사용 편의성에주의하십시오. 일반적으로 사용되는 도구 유형에는 온라인 도구, IDE 플러그인 및 명령 줄 도구가 포함됩니다.

휴대 전화에서 XML을 PDF로 변환하는 방법은 무엇입니까? 휴대 전화에서 XML을 PDF로 변환하는 방법은 무엇입니까? Apr 02, 2025 pm 10:18 PM

휴대 전화에서 XML을 PDF로 직접 변환하는 것은 쉽지 않지만 클라우드 서비스를 통해 달성 할 수 있습니다. 가벼운 모바일 앱을 사용하여 XML 파일을 업로드하고 생성 된 PDF를 수신하고 클라우드 API로 변환하는 것이 좋습니다. Cloud API는 Serverless Computing Services를 사용하고 올바른 플랫폼을 선택하는 것이 중요합니다. XML 구문 분석 및 PDF 생성을 처리 할 때 복잡성, 오류 처리, 보안 및 최적화 전략을 고려해야합니다. 전체 프로세스에는 프론트 엔드 앱과 백엔드 API가 함께 작동해야하며 다양한 기술에 대한 이해가 필요합니다.

XML 형식을 여는 방법 XML 형식을 여는 방법 Apr 02, 2025 pm 09:00 PM

대부분의 텍스트 편집기를 사용하여 XML 파일을여십시오. 보다 직관적 인 트리 디스플레이가 필요한 경우 Oxygen XML 편집기 또는 XMLSPy와 같은 XML 편집기를 사용할 수 있습니다. 프로그램에서 XML 데이터를 처리하는 경우 프로그래밍 언어 (예 : Python) 및 XML 라이브러 (예 : XML.etree.elementtree)를 사용하여 구문 분석해야합니다.

XML을 그림으로 변환하는 방법 XML을 그림으로 변환하는 방법 Apr 03, 2025 am 07:39 AM

XSLT 변환기 또는 이미지 라이브러리를 사용하여 XML을 이미지로 변환 할 수 있습니다. XSLT 변환기 : XSLT 프로세서 및 스타일 시트를 사용하여 XML을 이미지로 변환합니다. 이미지 라이브러리 : Pil 또는 Imagemagick와 같은 라이브러리를 사용하여 XML 데이터에서 이미지를 그리기 및 텍스트 그리기와 같은 이미지를 만듭니다.

See all articles