crossentropy
신경망 성능
설명
는 주어진 목표값과 출력값, 그리고 선택적으로 지정하는 성능 가중치와 기타 파라미터를 사용하여 신경망 성능을 계산합니다. 이 함수는 극도로 부정확한 출력값(perf
= crossentropy(net
,targets
,outputs
,perfWeights
)y
값이 1-t
에 가까운 경우)에 높은 벌점을 적용하고 상당히 정확한 분류(y
값이 t
에 가까운 경우)에 매우 작은 벌점을 적용하여 결과를 반환합니다. 교차 엔트로피를 최소화하면 분류기의 성능이 좋아집니다.
각 출력값-목표값 요소 쌍의 교차 엔트로피는 ce = -t .* log(y)
로 계산됩니다.
개별 값의 평균, 즉 perf = sum(ce(:))/numel(ce)
는 집계 교차 엔트로피 성능의 총합입니다.
특수한 경우(N = 1): 출력값이 오직 1개의 요소로만 이루어진 경우, 출력값과 목표값은 이진 인코딩으로 해석됩니다. 즉, 1-of-N 인코딩에서는 클래스가 2개 이상이 되는 반면 이진 인코딩에서는 목표값이 0과 1인 2개의 클래스만 있습니다. 이진 교차 엔트로피의 표현식은 ce = -t .* log(y) - (1-t) .* log(1-y)
입니다.
는 지정된 이름-값 쌍 인수에 따른 사용자 지정을 지원합니다.perf
= crossentropy(___,Name,Value
)
예제
신경망 성능 계산하기
이 예제에서는 교차 엔트로피와 0.1 정규화를 사용하여 분류 신경망을 설계하고 전체 데이터셋에 대한 성능을 계산하는 방법을 보여줍니다.
[x,t] = iris_dataset; net = patternnet(10); net.performParam.regularization = 0.1; net = train(net,x,t);
y = net(x);
perf = crossentropy(net,t,y,{1},'regularization',0.1)
perf = 0.0278
crossentropy를 성능 함수로 설정하기
이 예제에서는 신경망이 훈련 중에 crossentropy
를 사용하도록 설정하는 방법을 보여줍니다.
net = feedforwardnet(10); net.performFcn = 'crossentropy'; net.performParam.regularization = 0.1; net.performParam.normalization = 'none';
입력 인수
net
— 신경망
network 객체
신경망으로, network 객체로 지정됩니다.
예: net = feedforwardnet(10);
targets
— 신경망 목표값
숫자형 값으로 구성된 행렬 또는 셀형 배열
신경망 목표값으로, 숫자형 값으로 구성된 행렬 또는 셀형 배열로 지정됩니다. 신경망 목표값은 원하는 출력값을 정의하며, 요소가 N
개인 벡터 Q
개로 구성된 N
×Q
행렬, 또는 각 요소가 Ni
×Q
행렬인 M
×TS
셀형 배열로 지정될 수 있습니다. 각각의 경우에서 N
또는 Ni
는 벡터 길이를, Q
는 샘플 개수를, M
은 여러 개의 출력값을 갖는 신경망의 신호 개수를, TS
는 시계열 데이터의 시간 스텝 개수를 나타냅니다. targets
는 outputs
와 차원이 같아야 합니다.
목표 행렬의 열은 해당 열 벡터가 나타내는 클래스의 위치만 1이고 나머지는 0으로 구성됩니다. N = 1인 경우에는 이진 인코딩을 위한 교차 엔트로피가 사용되고, 그 밖의 경우에는 1-of-N 인코딩을 위한 교차 엔트로피가 사용됩니다. NaN
값을 사용하여 알 수 없거나 무관한(don't-care) 출력값을 나타낼 수 있습니다. NaN
목표값의 성능은 무시됩니다.
데이터형: double
| cell
outputs
— 신경망 출력값
숫자형 값으로 구성된 행렬 또는 셀형 배열
신경망 출력값으로, 숫자형 값으로 구성된 행렬 또는 셀형 배열로 지정됩니다. 신경망 출력값은 요소가 N
개인 벡터 Q
개로 구성된 N
×Q
행렬, 또는 각 요소가 Ni
×Q
행렬인 M
×TS
셀형 배열로 지정될 수 있습니다. 각각의 경우에서 N
또는 Ni
는 벡터 길이를, Q
는 샘플 개수를, M
은 여러 개의 출력값을 갖는 신경망의 신호 개수를, TS
는 시계열 데이터의 시간 스텝 개수를 나타냅니다. outputs
는 targets
와 차원이 같아야 합니다.
알 수 없는 출력값을 표시하기 위해 출력값에 NaN
이 포함될 수 있습니다. 이는 입력값에(마찬가지로 알 수 없거나 무관한(don't-care) 값을 나타내는) NaN
이 있어 생기는 결과일 것입니다. NaN
출력값의 성능은 무시됩니다.
일반적인 경우(N>=2): 출력 행렬의 열은 클래스 소속 여부에 대한 추정값을 나타내며, 총합은 1이 되어야 합니다. softmax
전달 함수를 사용하여 이러한 출력값을 생성할 수 있습니다. patternnet
을 사용하면 소프트맥스 출력 계층에 교차 엔트로피 성능을 사용하도록 이미 설정된 신경망을 만들 수 있습니다.
데이터형: double
| cell
perfWeights
— 성능 가중치
{1}
(디폴트 값) | 벡터 또는 숫자형 값으로 구성된 셀형 배열
성능 가중치로, 벡터 또는 숫자형 값으로 구성된 셀형 배열로 지정됩니다. 성능 가중치는 0과 1 사이의 값을 사용하여 각 목표값에 연결된 각 성능 값의 중요도를 정의하는 선택적 인수입니다. 성능 값 0은 무시해야 하는 목표값을 나타내고, 1은 보통의 중요도로 취급해야 하는 목표값을 나타냅니다. 0과 1 사이의 값을 사용하여 목표값에 대한 상대적인 중요도로 취급할 수 있습니다.
성능 가중치는 다양한 용도로 사용됩니다. 분류 문제에서는 어떤 분류 또는 오분류가 상대적으로 더 큰 이익(또는 비용)을 야기하는지 나타낼 수 있어 유용합니다. 또한, 다른 시간 스텝에 비해 특정 시간 스텝(예: 마지막 시간 스텝)에서 올바른 출력값을 얻는 것이 더 중요한 시계열 문제에서도 유용할 수 있습니다. 성능 가중치는 신경망에서 목표값이 가장 정확하게 알려진 샘플을 최적의 방법으로 피팅하고 덜 정확하다고 알려진 목표값에는 상대적으로 적은 중요도를 부여하는 용도로도 사용할 수 있습니다.
perfWeights
는 targets
및 outputs
와 같은 차원을 가질 수 있습니다. 또는 성능 가중치의 각 차원은 targets
및 outputs
의 차원과 일치할 수도 있고, 1이 될 수도 있습니다. 예를 들어, targets
가 요소가 N
개인 벡터의 샘플 Q
개를 정의하는 N
×Q
행렬인 경우, 성능 가중치는 각 목표값마다 서로 중요도가 다름을 나타내는 N
×Q
가 될 수도 있고, 목표의 행마다 서로 중요도가 다름을 정의하는 N
×1
이 될 수도 있습니다. 또는 각 샘플마다 서로 중요도가 다름을 나타내는 1
×Q
가 될 수도 있고, 모든 목표값의 중요도가 동일함을 나타내는 스칼라 1(즉, 1×1)이 될 수도 있습니다.
마찬가지로, outputs
및 targets
가 행렬로 구성된 셀형 배열인 경우, perfWeights
는 동일한 크기를 갖는 셀형 배열, 각 시간 스텝의 상대적 중요도를 나타내는 행 셀형 배열, 각 신경망 출력값의 상대적 중요도를 나타내는 열 셀형 배열, 단일 행렬로 구성된 셀형 배열, 또는 행렬일 수 있습니다. 마지막 2가지 경우에는 모든 행렬이 동일한 중요도 값을 갖습니다.
모든 문제에서, perfWeights
값이 {1}
(디폴트 값) 또는 스칼라 1이면 성능이 모두 동일한 중요도를 가짐을 나타냅니다.
데이터형: double
| cell
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: 'normalization','standard'
는 입력값과 목표값이 (-1,+1) 범위로 정규화되도록 지정합니다.
regularization
— 가중치/편향 값에 기인한 성능의 비율
0 (디폴트 값) | (0,1) 범위의 숫자형 값
가중치/편향 값에 기인한 성능의 비율로, 0(디폴트 값)과 1 사이의 double형으로 지정됩니다. 값이 클수록 가중치가 큰 신경망에 벌점이 적용되며 신경망 함수에 과적합이 발생하지 않을 확률이 커집니다.
예: 'regularization',0
데이터형: single
| double
normalization
— 출력값, 목표값 및 오차에 대한 정규화 모드
'none'
(디폴트 값) | 'standard'
| 'percent'
출력값, 목표값 및 오차에 대한 정규화 모드로, 'none'
, 'standard'
또는 'percent'
로 지정됩니다. 'none'
을 지정하면 정규화가 수행되지 않습니다. 'standard'
를 지정하면 출력값과 목표값이 (-1, +1)로 정규화되고, 이에 따라 오차가 (-2, +2) 범위로 정규화됩니다.'percent'
를 지정하면 출력값과 목표값이 (-0.5, 0.5)로, 오차가 (-1, 1)로 정규화됩니다.
예: 'normalization','standard'
데이터형: char
출력 인수
perf
— 신경망 성능
double형
신경망 성능으로, (0,1) 범위의 double형으로 반환됩니다.
버전 내역
R2013b에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)