crossentropy
ニューラル ネットワーク性能
説明
は、オプションの性能の重みとその他のパラメーターを使用して、特定のターゲットと出力でのネットワーク性能を計算します。この関数は、極端に不正確な出力 (perf
= crossentropy(net
,targets
,outputs
,perfWeights
)y
が 1-t
に近い) には厳しいペナルティを課し、ほぼ正しい分類 (y
が t
に近い) にはほとんどペナルティを課さない結果を返します。クロスエントロピーを最小化すると、適切な分類器が得られます。
出力要素とターゲット要素の各ペアのクロスエントロピーは、ce = -t .* log(y)
のように計算されます。
総合的なクロスエントロピー性能は個々の値の平均であり、perf = sum(ce(:))/numel(ce)
のように求められます。
特殊なケース (N = 1): 出力が 1 つの要素のみで構成されている場合、出力とターゲットはバイナリ符号化として解釈されます。つまり、2 つのクラスがあり、ターゲットは 0 と 1 です。一方、N 個中 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.0267
性能関数としてのクロスエントロピーの設定
この例では、学習時に crossentropy
を使用するようにネットワークを設定する方法を示します。
net = feedforwardnet(10); net.performFcn = 'crossentropy'; net.performParam.regularization = 0.1; net.performParam.normalization = 'none';
入力引数
net
— ニューラル ネットワーク
ネットワーク オブジェクト
ニューラル ネットワーク。ネットワーク オブジェクトとして指定します。
例: net = feedforwardnet(10);
targets
— ニューラル ネットワークのターゲット値
数値の行列または cell 配列
ニューラル ネットワークのターゲット値。数値の行列または cell 配列として指定します。ネットワークのターゲット値は、目標の出力を定義します。このターゲット値は、Q
個の N
要素ベクトルの N
行 Q
列の行列、または各要素が Ni
行 Q
列の行列である M
行 TS
列の cell 配列として指定できます。これらのケースでは、N
または Ni
はベクトル長、Q
はサンプルの数、M
は複数の出力があるニューラル ネットワークの信号の数、TS
は時系列データのタイム ステップの数を示します。targets
の次元は outputs
と同じでなければなりません。
ターゲット行列の列は、その列ベクトルで表されるクラスの位置に 1 が 1 つあり、残りはすべて 0 で構成されます。N = 1 の場合、バイナリ符号化用のクロス エントロピーが使用されます。そうでない場合、N 個中 1 個の符号化用のクロス エントロピーが使用されます。NaN
値を使用して、不明な出力値または don't-care 出力値を示すことができます。NaN
ターゲット値の性能は無視されます。
データ型: double
| cell
outputs
— ニューラル ネットワークの出力値
数値の行列または cell 配列
ニューラル ネットワークの出力値。数値の行列または cell 配列として指定します。ネットワークの出力値は、Q
個の N
要素ベクトルの N
行 Q
列の行列、または各要素が Ni
行 Q
列の行列である M
行 TS
列の cell 配列として指定できます。これらのケースでは、N
または Ni
はベクトル長、Q
はサンプルの数、M
は複数の出力があるニューラル ネットワークの信号の数、TS
は時系列データのタイム ステップの数を示します。outputs
の次元は targets
と同じでなければなりません。
出力に不明な出力値を示す NaN
が含まれる場合があります。この出力値は、(同様に不明な値または don't-care 値を表す) NaN
入力値の結果として生成されたと推定されます。NaN
出力値の性能は無視されます。
一般的なケース (N>=2): 出力行列の列は、クラス メンバーシップの推定値を表し、合計が 1 にならなければなりません。伝達関数 softmax
を使用して、このような出力値を生成できます。patternnet
を使用して、ソフトマックス出力層でクロスエントロピー性能を使用するように設定済みのネットワークを作成します。
データ型: double
| cell
perfWeights
— 性能の重み
{1}
(既定値) | 数値のベクトルまたは cell 配列
性能の重み。数値のベクトルまたは cell 配列として指定します。性能の重みは、各ターゲット値に関連付けられた各性能値の重要度を 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
が行列の cell 配列である場合、perfWeights
は、同じサイズの cell 配列、行 cell 配列 (各タイム ステップの相対的な重要度を示す)、列 cell 配列 (各ニューラル ネットワーク出力の相対的な重要度を示す)、あるいは 1 つの行列の cell 配列または行列のみ (どちらの場合もすべての行列の重要度の値が同じであることを示す) になります。
どの問題でも、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 コマンド ウィンドウに入力して実行してください。Web ブラウザーは 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)