Main Content

浅層ニューラル ネットワークの入出力の構成

このトピックは、ニューラル ネットワーク設計のワークフローで説明されている設計ワークフローの一部です。

ニューラル ネットワークはその作成の後、構成されなければなりません。構成ステップは、入力データとターゲット データの確認、データに一致するネットワークの入出力サイズの設定、最適なネットワーク性能を実現する入出力処理の設定の選択で構成されます。通常、構成ステップは、学習関数が呼び出されるときに自動的に実行されます。ただし、構成関数を使用すると、手動で実行できます。たとえば、前に作成した、正弦関数を近似するネットワークを構成するには、次のコマンドを発行します。

p = -2:.1:2;
t = sin(pi*p/2);
net1 = configure(net,p,t);

入力とターゲット (目的のネットワーク出力) の例のセットをネットワークに与えます。この情報により、関数 configure は、データに一致するようにネットワークの入力と出力のサイズを設定できます。

構成後、層 1 と層 2 の間の重みを再度確認すると、重みの次元が 1 行 20 列であることがわかります。これは、このネットワークのターゲットがスカラーであるためです。

net1.layerWeights{2,1}

    Neural Network Weight

            delays: 0
           initFcn: (none)
        initConfig: .inputSize
             learn: true
          learnFcn: 'learngdm'
        learnParam: .lr, .mc
              size: [1 10]
         weightFcn: 'dotprod'
       weightParam: (none)
          userdata: (your custom info)

重みの適切な次元の設定に加え、構成ステップでは入出力処理の設定も定義します。入力処理は inputs サブオブジェクトにあります。

net1.inputs{1}

    Neural Network Input

              name: 'Input'
    feedbackOutput: []
       processFcns: {'removeconstantrows', mapminmax}
     processParams: {1x2 cell array of 2 params}
   processSettings: {1x2 cell array of 2 settings}
    processedRange: [1x2 double]
     processedSize: 1
             range: [1x2 double]
              size: 1
          userdata: (your custom info)

入力は、ネットワークに適用される前に 2 つの関数 removeconstantrows および mapminmax で処理されます。これらについては、浅層の多層ニューラル ネットワークと逆伝播学習で詳しく説明されているので、ここでは詳細を説明しません。これらの処理関数には、処理パラメーターがいくつかあります。これらのパラメーターは、net1.inputs{1}.processParam サブオブジェクトに含まれています。それらの既定値はオーバーライドできます。処理関数には、標本データに依存する構成設定がある場合もあります。これらは net1.inputs{1}.processSettings に含まれており、構成プロセスの中で設定されます。たとえば、処理関数 mapminmax は、すべての入力が範囲 [-1, 1] に収まるようにデータを正規化します。その構成設定には、適切に正規化を実行する必要がある標本データの最小値と最大値が含まれています。これについては、浅層の多層ニューラル ネットワークと逆伝播学習でさらに詳しく説明します。

原則として、処理パラメーター、学習パラメーターなどの "パラメーター" という用語は、ネットワークの作成時にソフトウェアによって割り当てられる既定値を持つ (オーバーライド可能な) 定数を表すために使用します。プロセス構成設定のような "構成設定" という用語は、標本データの解析からソフトウェアによって割り当てられる定数を表すために使用します。これらの設定は既定値を持たず、通常、オーバーライドされるべきではありません。

詳細は、浅層ネットワークのデータ構造についても参照してください。