主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

モデル関数の学習可能なパラメーターの初期化

層,層グラフ,またはdlnetworkオブジェクトを使用してネットワークに学習させる場合,ソフトウェアは,層の初期化プロパティに従って,学習可能なパラメーターを自動的に初期化します。関数として深層学習モデルを定義する場合,学習可能なパラメーターを手動で初期化しなければなりません。

学習可能なパラメーター(重みやバイアスなど)の初期化は,深層学習モデルの収束速度に大きな影響を与える可能性があります。

ヒント

このページでは,カスタム学習ループにおいて,関数として定義された深層学習モデルの学習可能なパラメーターを初期化する方法を説明します。深層学習層の学習可能なパラメーターの初期化を指定する方法を学ぶために,対応する層のプロパティを使用します。たとえば,convolution2dLayerオブジェクトの重み初期化子を設定するには,WeightsInitializerプロパティを使用します。

層の既定の初期化

この表は,各層の学習可能なパラメーターに関する既定の初期化を示しています。また,同じ初期化を使用して,モデル関数の学習可能なパラメーターを初期化する方法を示すリンクが記載されています。

学習可能なパラメーター 既定の初期化
convolution2dLayer 重み Glorotの初期化
偏见 ゼロでの初期化
convolution3dLayer 重み Glorotの初期化
偏见 ゼロでの初期化
groupedConvolution2dLayer 重み Glorotの初期化
偏见 ゼロでの初期化
transposedConv2dLayer 重み Glorotの初期化
偏见 ゼロでの初期化
transposedConv3dLayer 重み Glorotの初期化
偏见 ゼロでの初期化
fullyConnectedLayer 重み Glorotの初期化
偏见 ゼロでの初期化
batchNormalizationLayer オフセット ゼロでの初期化
スケール 1での初期化
lstmLayer 入力重み Glorotの初期化
再帰重み 直交初期化
偏见 ユニット忘却ゲートによる初期化
gruLayer 入力重み Glorotの初期化
再帰重み 直交初期化
偏见 ゼロでの初期化
wordEmbeddingLayer 重み ガウスによる初期化0.01,平均为0,標準偏差とする。

学習可能なパラメーターのサイズ

モデル関数の学習可能なパラメーターを初期化する場合,正しいサイズのパラメーターを指定しなければなりません。学習可能なパラメーターのサイズは,深層学習演算のタイプによって異なります。

操作 学習可能なパラメーター サイズ
batchnorm オフセット

[numChannels 1]numChannelsは入力チャネル数。

スケール

[numChannels 1]numChannelsは入力チャネル数。

dlconv 重み

[filterSize numChannels numFilters]filterSizeはフィルターサイズを指定する1行K列のベクトル,numChannelsは入力チャネル数,numFiltersはフィルター数,Kは空間次元数。

偏见

次のいずれかを選択。

  • [numFilters 1]numFiltersはフィルター数

  • [1]

dlconv(グループ化) 重み

[filterSize numChannelsPerGroup numFiltersPerGroup numGroups]filterSizeはフィルターサイズを指定する1行K列のベクトル,numChannelsPerGroupは各グループの入力チャネル数,numFiltersPerGroupは各グループのフィルター数,numGroupsはグループ数,Kは空間次元数。

偏见

次のいずれかを選択。

  • [numFiltersPerGroup 1]numFiltersPerGroupは各グループのフィルター数。

  • [1]

dltranspconv 重み

[filterSize numFilters numChannels]filterSizeはフィルターサイズを指定する1行K列のベクトル,numChannelsは入力チャネル数,numFiltersはフィルター数,Kは空間次元数。

偏见

次のいずれかを選択。

  • [numFilters 1]numFiltersは各グループのフィルター数。

  • [1]

dltranspconv(グループ化) 重み

[filterSize numFiltersPerGroup numChannelsPerGroup numGroups]filterSizeはフィルターサイズを指定する1行K列のベクトル,numChannelsPerGroupは各グループの入力チャネル数,numFiltersPerGroupは各グループのフィルター数,numGroupsはグループ数,Kは空間次元数。

偏见

次のいずれかを選択。

  • [numFiltersPerGroup 1]numFiltersPerGroupは各グループのフィルター数。

  • [1]

fullyconnect 重み

[outputSize inputSize]outputSizeinputSizeはそれぞれ出力チャネル数と入力チャネル数。

偏见

[outputSize 1]outputSizeは出力チャネル数。

格勒乌 入力重み

(3 * numHiddenUnits inputSize]numHiddenUnitsは演算の隠れユニット数,inputSizeは入力チャネル数。

再帰重み

(3 * numHiddenUnits numHiddenUnits]numHiddenUnitsは演算の隠れユニット数。

偏见

(3 * numHiddenUnits 1)numHiddenUnitsは演算の隠れユニット数。

lstm 入力重み

[4 * numHiddenUnits inputSize]numHiddenUnitsは演算の隠れユニット数,inputSizeは入力チャネル数。

再帰重み

[4 * numHiddenUnits numHiddenUnits]numHiddenUnitsは演算の隠れユニット数。

偏见

(4 * numHiddenUnits 1)numHiddenUnitsは演算の隠れユニット数。

Glorotの初期化

Glorot (Xavierとも呼ばれる)初期化子[1]は,範囲指定付きの一様分布 6 N o + N 6 N o + N から重みをサンプリングします。ここで,NoとNの値は,深層学習演算のタイプによって異なります。

操作 学習可能なパラメーター No N
dlconv 重み

刺激(filterSize) * numFiltersfilterSizeはフィルターサイズを含む1行K列のベクトル,numFiltersはフィルター数,Kは空間次元数。

刺激(filterSize) * numChannelsfilterSizeはフィルターサイズを含む1行K列のベクトル,numChannelsは入力チャネル数,Kは空間次元数。

dlconv(グループ化) 重み

刺激(filterSize) * numFiltersPerGroupfilterSizeはフィルターサイズを含む1行K列のベクトル,numFiltersPerGroupは各グループのフィルター数,Kは空間次元数。

刺激(filterSize) * numChannelsPerGroupfilterSizeはフィルターサイズを含む1行K列のベクトル,numChannelsPerGroupは各グループの入力チャネル数,Kは空間次元数。

dltranspconv 重み

刺激(filterSize) * numFiltersfilterSizeはフィルターサイズを含む1行K列のベクトル,numFiltersはフィルター数,Kは空間次元数。

刺激(filterSize) * numChannelsfilterSizeはフィルターサイズを含む1行K列のベクトル,numChannelsは入力チャネル数,Kは空間次元数。

dltranspconv(グループ化) 重み

刺激(filterSize) * numFiltersPerGroupfilterSizeはフィルターサイズを含む1行K列のベクトル,numFiltersPerGroupは各グループのフィルター数,Kは空間次元数。

刺激(filterSize) * numChannelsPerGroupfilterSizeはフィルターサイズを含む1行K列のベクトル,numChannelsPerGroupは各グループの入力チャネル数,Kは空間次元数。

fullyconnect 重み 演算の出力チャネル数 演算の入力チャネル数
格勒乌 入力重み 3 * numHiddenUnitsnumHiddenUnitsは演算の隠れユニット数。 演算の入力チャネル数
再帰重み 3 * numHiddenUnitsnumHiddenUnitsは演算の隠れユニット数。 演算の隠れユニット数。
lstm 入力重み 4 * numHiddenUnitsnumHiddenUnitsは演算の隠れユニット数。 演算の入力チャネル数
再帰重み 4 * numHiddenUnitsnumHiddenUnitsは演算の隠れユニット数。 演算の隠れユニット数。

Glorot初期化子を使用して学習可能なパラメーターを簡単に初期化するため,カスタム関数を定義できます。関数initializeGlorotは,学習可能なパラメーター深圳のサイズ,ならびに値NoおよびN(それぞれnumOutnumIn)を入力として受け取り,基となる型が“单一”dlarrayオブジェクトとして,サンプリングされた重みを返します。

函数Z = 2*rand(sz, numOut,numIn)“单一”) - 1;bound =√(6 / (numIn + numOut));weights = bound * Z;重量= dlarray(重量);结束

サイズ5 x 5のフィルター128個,入力チャネル3個で,畳み込み演算の重みを初期化します。

filterSize = [5 5];numChannels = 3;numFilters = 128;sz = [filterSize numChannels numFilters];numOut = prod(filterSize) * numFilters;numIn = prod(filterSize) * numFilters;parameters.conv.Weights = initializeGlorot(深圳、numOut numIn);

他の初期化

他初期化子[44]は,平均0分散 2 N の正規分布から重みをサンプリングします。ここで値Nは,深層学習演算のタイプによって決まります。

操作 学習可能なパラメーター N
dlconv 重み

刺激(filterSize) * numChannelsPerGroupfilterSizeはフィルターサイズを含む1行K列のベクトル,numChannelsPerGroupは各グループの入力チャネル数,Kは空間次元数。

dltranspconv 重み

刺激(filterSize) * numChannelsPerGroupfilterSizeはフィルターサイズを含む1行K列のベクトル,numChannelsPerGroupは各グループの入力チャネル数,Kは空間次元数。

fullyconnect 重み 演算の入力チャネル数
格勒乌 入力重み 演算の入力チャネル数
再帰重み 演算の隠れユニット数。
lstm 入力重み 演算の入力チャネル数
再帰重み 演算の隠れユニット数。

他初期化子を使用して学習可能なパラメーターを簡単に初期化するために,カスタム関数を定義できます。関数initializeHeは,学習可能なパラメーター深圳のサイズと値Nを入力として受け取り,基となる型が“单一”dlarrayオブジェクトとして,サンプリングされた重みを返します。

函数(sz,numIn) =初始化“单一”) *√2 / numIn);重量= dlarray(重量);结束

サイズ5 x 5のフィルター128個,入力チャネル3個で,畳み込み演算の重みを初期化します。

filterSize = [5 5];numChannels = 3;numFilters = 128;sz = [filterSize numChannels numFilters];numIn = prod(filterSize) * numFilters;numIn parameters.conv.Weights = initializeHe(深圳);

ガウスによる初期化

ガウス初期化子は,正規分布から重みをサンプリングします。

ガウス初期化子を使用して学習可能なパラメーターを簡単に初期化するために,カスタム関数を定義できます。関数initializeGaussianは,学習可能なパラメーター深圳のサイズ,分散平均μ、分散標準偏差σを入力として受け取り,基となる型が“单一”dlarrayオブジェクトとして,サンプリングされた重みを返します。

函数权重= initializgauss (sz,mu,sigma)“单一”σ)* +μ;重量= dlarray(重量);结束

平均0および標準偏差0.01のガウス初期化子を使用して,次元300年,語彙サイズ5000で埋め込み演算の重みを初期化します。

embeddingDimension = 300;vocabularySize = 5000;μ= 0;σ= 0.01;sz = [embedingdimension vocabularySize];parameters.emb.Weights = initializeGaussian (sz、μ、σ);

一様分布による初期化

一様分布初期化子は,一様分布から重みをサンプリングします。

一様分布初期化子を使用して学習可能なパラメーターを簡単に初期化するために,カスタム関数を定義できます。関数initializeUniformは,学習可能なパラメーター深圳のサイズと分布境界绑定を入力として受け取り,基となる型が“单一”dlarrayオブジェクトとして,サンプリングされた重みを返します。

函数参数= initializeUniform(sz,bound) Z = 2*rand(sz,“单一”) - 1;参数= bound * Z;参数= dlarray(参数);结束

一様分布初期化子を使用して,サイズ100 x 100,境界0.1でアテンションメカニズムの重みを初期化します。

Sz = [100 100];绑定= 0.1;parameters.attentionn.Weights = initializeUniform(深圳、绑定);

直交初期化

直交初期化子は,Z = QRのQR分解によって与えられる直交行列问を返します。ここでZは単位正規分布からサンプリングされ,Zのサイズは学習可能なパラメーターのサイズと一致します。

直交初期化子を使用して学習可能なパラメーターを簡単に初期化するために,カスタム関数を定義できます。関数initializeOrthogonalは,学習可能なパラメーター深圳のサイズを入力として受け取り,基となる型が“单一”dlarrayオブジェクトとして,直交行列を返します。

函数参数= initializeOrthogonal(sz)“单一”);(Q, R) = qr (Z, 0);D =诊断接头(R);Q = Q * diag(D ./ abs(D));参数= dlarray (Q);结束

直交初期化子を使用して,100個の隠れユニットでLSTM演算の反復重みを初期化します。

numHiddenUnits = 100;sz = [4*numHiddenUnits numHiddenUnits];parameters.lstm.RecurrentWeights = initializeOrthogonal(深圳);

ユニット忘却ゲートによる初期化

ユニット忘却ゲート初期化子は,バイアスの忘却ゲート成分が1,残りのエントリが0になるように,LSTM演算のバイアスを初期化します。

直交初期化子を使用して学習可能なパラメーターを簡単に初期化するために,カスタム関数を定義できます。関数initializeUnitForgetGateは,LSTM演算の隠れユニットの数を入力として受け取り,基となる型が“单一”dlarrayオブジェクトとしてバイアスを返します。

函数bias = initializeUnitForgetGate(numHiddenUnits) bias = 0 (4*numHiddenUnits,1,“单一”);idx = numHiddenUnits + 1:2 * numHiddenUnits;偏见(idx) = 1;偏见= dlarray(偏差);结束

ユニット忘却ゲート初期化子を使用して,100個の隠れユニットでLSTM演算のバイアスを初期化します。

numHiddenUnits = 100;parameters.lstm.Bias = initializeUnitForgetGate (numHiddenUnits,“单一”);

1での初期化

学習可能なパラメーターを1で簡単に初期化するために,カスタム関数を定義できます。関数initializeOnesは,学習可能なパラメーター深圳のサイズを入力として受け取り,基となる型が“单一”dlarrayオブジェクトとして,パラメーターを返します。

函数sz, sz, sz, sz,“单一”);参数= dlarray(重量);结束

128年個の入力チャネルで1を使用してバッチ正規化演算のスケールを初期化します。

numChannels = 128;sz = [numChannels 1];parameters.bn.Scale = initializeOnes(深圳);

ゼロでの初期化

学習可能なパラメーターをゼロで簡単に初期化するために,カスタム関数を定義できます。関数initializeZerosは,学習可能なパラメーター深圳のサイズを入力として受け取り,基となる型が“单一”dlarrayオブジェクトとして,パラメーターを返します。

函数参数= initializeZeros(sz)“单一”);参数= dlarray(重量);结束

128年個の入力チャネルでゼロを使用してバッチ正規化演算のオフセットを初期化します。

numChannels = 128;sz = [numChannels 1];parameters.bn.Offset = initializeZeros(深圳);

参照

[1]格洛洛,泽维尔,还有约书亚·本吉奥。“理解训练深度前馈神经网络的难度。”第13届人工智能与统计国际会议论文集,第249-256页。2010.

何开明,张翔宇,任少青,孙健《深入整流器:在图像网分类上超越人类水平的表现》《IEEE计算机视觉国际会议论文集》,第1026-1034页。2015.

参考

|||

関連するトピック