【文献】
本山 義史 ほか,低ランク近似行列によるCNNにおける畳み込み演算の最適化,情報処理学会 研究報告 ハイパフォーマンスコンピューティング(HPC) 2017−HPC−158,日本,情報処理学会,2017年 3月10日,No.25,p.1-7
(58)【調査した分野】(Int.Cl.,DB名)
前記少なくとも一つの次元が幅および/または高さおよび/または深さを含む場合、前記重みパラメータの属する層の特徴データに対して、対応する幅および/または高さおよび/または深さにおいてパディングすることを含む、請求項1に記載の方法。
前記特徴データがパディングされる次元ごとのパディング位置およびパディング量は、前記重みパラメータの対応する次元におけるパディング位置およびパディング量とそれぞれ同じである、請求項12に記載の方法。
【発明を実施するための形態】
【0012】
以下の記載において、添付図面を参照しつつ、本開示に係る例示的な実施形態を述べる。
【0013】
異なる応用場面および処理目標に基づいて、ニューラルネットワークの異なる層の特徴データおよび/または重みパラメータは、異なる形式および/または数量を有することができる。本明細書において、ニューラルネットワークの種類およびニューラルネットワークの層におけるキーとなる演算に依存し、重みパラメータは、該層のキーとなる演算に関連するキーとなるパラメータを含む。例えば、畳み込みニューラルネットワークの畳み込み層の場合、キーとなる演算は畳み込み演算とすることができ、かつ重みパラメータは一以上の畳み込みカーネルを含むことができる。
【0014】
前記キーとなる演算及び重みパラメータの種類および/または視点または前記特徴に基づいて、一または複数の次元を決定または選択することができる。例えば、対応する重みパラメータが一以上の値である場合、重みパラメータは、少なくとも次のような次元の数量を有することができる。対応する重みパラメータが一以上の一次元データ(例えば、一以上の値を含む一次元配列)である場合、重みパラメータは、少なくとも幅(例えば、一次元配列におけるデータの数量)及び数量(例えば、一次元配列の数量)のような次元を有することができる。対応する重みパラメータが一以上の二次元データ(例えば、行列)である場合、重みパラメータは、少なくとも幅(例えば、行列の列の数)、高さ(例えば、行列の行の数)及び数量のような次元を有することができる。対応する重みパラメータが一以上の三次元データ(例えば、立方体)である場合、重みパラメータは、少なくとも幅、高さ、深さおよび数量の次元を有することができる。同様に、層ごとの特徴データは、一または複数の次元(例えば、幅、高さ、深さおよび数量)を有することができる。また、必要に応じて、ニューラルネットワークの所定の層の特徴データおよび/または重みパラメータについて、他の種類および数量の次元を考慮してもよいが、上記の例示に限定されることはない。
【0015】
例えば、設計の複雑さおよびコストなどへの考慮から、ニューラルネットワークにおける演算をサポートするためのハードウェア(専用アクセラレータ、アキュムレータ、およびアキュムレータとの間の配線など)は、所定の形式および/または数量しか直接処理できない重みパラメータおよび/または特徴データであってもよく、または所定の形式および/または数量の重みパラメータおよび/または特徴データの場合にのみ、比較的良好な処理性能を有するとしてもよい。したがって、特徴データおよび/または重みパラメータに対してパディングして、規範化された形式および/または数量の特徴データおよび/または重みパラメータを得ることは、ハードウェア設計を簡素化し、コストを節約し、処理効率を向上させるなどのために有利である。
【0016】
図1は、本開示の実施形態に係るニューラルネットワークのパラメータを適合させるための例示方法100を示す。
図1に示すように、ニューラルネットワークの少なくとも一の層における未処理層の重みパラメータに対し、ステップ110において、一または複数の次元を選択する。
【0017】
ステップ120において、該重みパラメータの選択された一または複数の次元における次元ごとのディメンション値および対応する目標値を決定する。
【0018】
ステップ130において、各次元に対して、該重みパラメータの該次元におけるディメンション値および対応する目標値を比較する。該重みパラメータの少なくとも一つの次元におけるディメンション値が対応する目標値より小さい場合、方法100はステップ140に進む。そうでなければ、方法100はステップ110に返し、次の未処理層の重みパラメータの処理を続行する。
【0019】
ステップ140において、パディング後に得られた重みパラメータが選択された一または複数の次元における次元ごとのディメンション値がいずれも対応する目標値に等しくなるように、ステップ130における比較結果に基づいて決定された各次元において、重みパラメータに対してパディングする。次に、方法100はステップ110に返し、次の未処理層の重みパラメータの処理を続行する。
【0020】
以下の記載において、畳み込みニューラルネットワークを例として、本開示に係る実施形態による方法をより詳細に説明する。ただし、本開示の原理は、畳み込みニューラルネットワークに限定されることはなく、他の種類のニューラルネットワークにも適用することができる。
【0021】
図2に畳み込みニューラルネットワークにおける特徴データおよび重みパラメータの次元の例を示す。
図2に示すように、特徴データは、少なくとも幅、高さ、深さ(またはチャネル数)、および数量(図示せず)などのような次元を有してもよい。
図2に示すように、重みパラメータは、同じ形状およびサイズを有する一以上の畳み込みカーネルであってもよく、かつ少なくとも幅(畳み込みカーネルごとの幅)、高さ(畳み込みカーネルごとの高さ)、深さの次元(畳み込みカーネルごとの深度またはチャネルの数)および数量(畳み込みカーネルごとの数)のような次元を有してもよい。
【0022】
図2に示す重みパラメータの一例について、例えば、例示方法100は、ステップ110において、幅、高さ、深さ、および数量のうちの一つまたは複数を、さらなる処理をする次元として選択することができる。
【0023】
一実施形態において、例示方法100のステップ110において選択された一または複数の次元における部分または全部の対応する目標値は、独立して決定してもよい。
【0024】
例えば、ニューラルネットワークにおける乗算、加算の演算をサポートするハードウェア回路において、一以上のグループの乗算器および加算器の配置を含んでもよく、各グループの乗算器および加算器の配置において、一以上の乗算器および一以上の加算器を含むことができる。各グループの乗算器および加算器の配置に基づいて、重みパラメータの深さ値がAである場合、乗算器および加算器の使用率が最も高い(または比較的に高い)と判定し、例えば、選択/イネーブル装置(enabling appliance)の設計/配置を省略することができる場合、重みパラメータの深さにおける目標値を、Aの所定の倍数と決定してもよく、該倍数は重みパラメータの深さのディメンション値より大きいまたはそれに等しい。
【0025】
例えば、A=3とする場合、現在のニューラルネットワークについて、重みパラメータの深さにおける目標値の候補値の集合は、{x|x=n×A、nは正の整数}である。現在の層の重みパラメータの深さのディメンション値が5とする場合、該重みパラメータの深さにおける目標値を、前記候補値の集合における5以上の所定値と決定し、例えば、6、9または12などと決定してもよい。例えば、候補値の集合のサブセット{x|x=n×A、nは5以上の正の整数である}から最小値(すなわち、6)を目標値として選択してもよい。
【0026】
別の実施形態において、ニューラルネットワークに基づくアーキテクチャおよび/またはニューラルネットワークをサポートするハードウェアの設計に基づいて、重みパラメータの深さにおける目標値は、集合{3,5,7,9,12,256,1024,……}のうちの所定の値になるべきと決定し、例えば、重みパラメータの深さが集合における所定の値である場合、余分の処理を低減することができ、またはハードウェアの処理性能がより良好になる場合、重みパラメータの深さにおける目標値を、該集合における5より大きいまたは5である所定の値、例えば、5,7,9,12,256,1024などと決定してもよい。
【0027】
例えば、これらの候補値から最も小さい値である5を目標値として選択してもよく、この場合、ディメンション値は目標値に等しいので、深さにおいて該重みパラメータに対してパディングする必要はない。別の実施形態において、例えば、7を目標値として選択してもよく、この場合、ディメンション値が目標値よりも小さいので、深さにおいて該重みパラメータに対してパディングする必要がある。
【0028】
別の実施形態において、各グループの乗算器および加算器の配置またはニューラルネットワークのアーキテクチャの設計などに基づいて、重みパラメータの数量がBである場合、乗算器および加算器の使用率が最も高く(または比較的高く)、例えば、選択/イネーブル装置(enabling appliance)の設計/配置を省略することができる場合、重みパラメータの数量の目標値を、Bの所定の倍数として決定することができ、該倍数は重みパラメータの数量におけるディメンション値より大きいまたはそれに等しい。
【0029】
例えば、B=5とする場合、現在のニューラルネットワークについて、重みパラメータの数量における目標値の候補値の集合は、{y|y=n×B、nは正の整数}である。現在の層の重みパラメータの数量におけるディメンション値が8とすると、該重みパラメータの数量における目標値を、前記候補値の集合のうち8以上(8であるまたは8より大きい)の所定の値、例えば、10、15または20などと決定することができる。
例えば、候補値の集合のサブセット{y|y=n×B、nは5以上の正の整数である}から最小値10を目標値として選択してもよい。
【0030】
別の実施形態において、ニューラルネットワークの積和演算をサポートするハードウェア回路において、一以上のグループの乗算器および加算器の配置を含んでもよく、各グループの乗算器および加算器の配置(例えば、最後のステップの加算の演算を実行するための加算器の数)及びグループ数に基づいて、第1のパラメータC及び第2のパラメータDを決定してもよい。このような場合、重みパラメータの深さまたは数量における目標値の候補値の集合は、C及びDの公倍数の集合と決定してもよい。
【0031】
別の実施形態において、ハードウェアが直接処理することができる重みパラメータの形状またはニューラルネットワークのアーキテクチャの設計などに基づいて、重みパラメータの幅における目標値は、集合{3,5,6,7,9,11}のうちの一つの値になるべきである。
【0032】
現在の層の重みパラメータの幅が4であるとすると、該重みパラメータの幅における目標値は、前記集合のサブセット{5,6,7,9,11}のうちの一つの値と決定してもよい。例えば、目標値をサブセットにおける最小値5と決定してもよい。
【0033】
別の実施形態において、例えば、例示方法100のステップ110で選択された一または複数の次元において、部分または全部の次元における対応する目標値は互いに関連付けて決定してもよい。
【0034】
例えば、ハードウェアが直接処理することができる重みパラメータの幅と高さとの組み合わせが、集合{(3,3),(3,6),(4,7),(5,5),(7,7)}のうちの所定の組み合わせであると決定してもよく、該集合を重みパラメータの幅と高さにおける目標値の候補値配列の集合としてもよい。
【0035】
現在の層の重みパラメータの幅および高さがそれぞれ4および4であるとする場合、重みパラメータの幅および高さにおける対応する目標値を決定するために、前記例示の集合のサブセット{(4,7),(5,5),(7,7)}から一つの候補値配列を選択することができる。ここで、該サブセットにおける各候補値配列によって決定された幅および高さにおける対応する目標値が、いずれもそれぞれ該重みパラメータの幅および高さにおけるディメンション値より大きいまたはそれに等しい。
【0036】
例えば、幅を主要参照次元として選択することができ、上記サブセットから最小幅値を含む候補値配列(4,7)を選択することができ、該候補値配列に基づいて、該重みパラメータの幅および高さにおける対応する目標値を、4及び7とそれぞれ決定してもよい。
【0037】
別の実施形態において、上記サブセットから候補値配列におけるすべての成分の積が最小である候補値配列(5,5)(ここで、4×7=28、5×5=25、7×7=49、候補値配列(5,5)におけるすべての成分の積が最小である)を選択することができ、該候補値配列に基づいて、該重みパラメータの幅および高さにおける対応する目標値を、それぞれ5及び5と決定する。これは、パディングされた重みパラメータの幅および高さの二次元における「面積」が最小になり、かつ元の重みパラメータを完全に「カバー」することができることに相当する。
【0038】
別の実施形態において、ニューラルネットワークベースのアーキテクチャの設計および/またはハードウェアパラメータに基づいて、重みパラメータの幅、高さ、および深さにおける目標値の組み合わせが、集合{(3,3,3)、(3,6,6),(4,7,6),(5,5,5),(7,7,7)}のうちの所定の組み合わせであると決定する。現在の層の重みパラメータの幅、高さおよび深さがそれぞれ4,4および4であるとする場合、重みパラメータの幅、高さ、および深さにおける対応する目標値を決定するために、上記例示のサブセット{(4,7,6),(5,5,5),(7,7,7)}から一つの候補値配列を選択することができる。ここで、該サブセットにおける各候補値配列に基づいて決定された重みパラメータの幅、高さ、および深さにおける対応する目標値が、いずれも、ぞれぞれ、該重みパラメータの幅、高さ、および深さにおけるディメンション値より大きいまたはそれに等しい。
【0039】
例えば、幅を主要参照次元として選択することができ、上記サブセットから最小幅値を含む候補値配列(4,7,6)を選択することができ、該候補値配列に基づいて、該重みパラメータの幅、高さおよび深さにおける対応する目標値を、4、7及び6とそれぞれ決定することができる。
【0040】
別の実施形態において、上記サブセットから候補値配列におけるすべての成分の積が最小である候補値配列(5,5,5)(ここで、4×7×6=168,5×5×5=125,7×7×7=343、候補値配列(5,5,5)におけるすべての成分の積が最小である)を選択することができ、該候補値配列に基づいて、該重みパラメータの幅、高さおよび深さにおける対応する目標値を、それぞれ5、5及び5と決定する。これはパディングされた重みパラメータの幅、高さおよび深さの三次元における「体積」が最小になり、かつ元の重みパラメータを完全に「囲い込む」ことができることに相当する。
【0041】
別の実施形態によると、例えば、例示方法100のステップ110において選択された一または複数の次元において、部分次元における対応する目標値は互いに対応付けて決定してもよく、他の部分次元の各次元における対応する目標値は独立して決定してもよい。
【0042】
一実施形態によれると、方法100は、ステップ110で選択された一または複数の次元の次元のそれぞれについて、またはステップ130で決定された少なくとも一つの次元のそれぞれについて、該次元に対応するパディングモードを決定することをさらに含むことができる。ここで、決定されたパディングモードは、該次元における重みパラメータに対してパディングする一以上のパディング位置、パディング量及びパディン値を設定する規則のうちの少なくとも一つを示す。
【0043】
例えば、幅に対応するパディングモードによって示される情報は、幅方向の左側及び/又は右側及び/又は中央を含む一以上の位置に一列または複数列パディングする。対応して、パディング量は、それぞれ、示された一以上の位置にパディングする列の数とすることができる。
【0044】
例えば、高さに対応するパディングモードによって示される情報は、高さ方向の上方及び/又は下方及び/又は中央を含む一以上の位置に一行または複数行パディングする。対応して、パディング量は、それぞれ、示された一以上の位置にパディングする行の数とすることができる。
【0045】
例えば、深さに対応するパディングモードによって示される情報は、深さ方向の前方及び/又は後方及び/又は中央を含む一以上の位置に一行または複数行パディングする。対応して、パディング量は、それぞれ、示された一以上の位置にパディングする行の数とすることができる。
【0046】
例えば、数量に対応するパディングモードによって示される情報は、重みパレメータの系列の前及び/又は後及び/又は中央を含む一以上の位置に一以上のパディング値をパディングする。対応して、パディング量は、それぞれ、示された一以上の位置にパディングするパディング値の数量とすることができる。
【0047】
一の実施形態によると、ゼロ値を用いて重みパラメータに対してパディングしてもよい。異なる実施形態によると、パディング値を設定する規則も、予め定義された非ゼロ値を用いてパディングし、パディングする位置に隣接する位置の値を用いてパディングすることなどを含むことができるが、これらには限定されない。
【0048】
本明細書において、ゼロ値は、数値的にゼロに等しい値、またはすべての成分の値がいずれも0の配列、タプル、行列、立方体など、またはゼロに等しいとみなすことができる他の形式の値であってもよい。対応して、非ゼロ値は、数値的にゼロに等しくない値、または部分若しくは全部の成分の値が0ではない配列、タプル、行列、立方体など、またはゼロに等しいとみなすことができない他の形式の値であってもよい。
【0049】
一の実施形態によると、ニューラルネットワークの所定の層における重みパラメータのサイズおよび形状が、パディングの後に変更または重みパラメータのサイズおよび形状の変更が発生することが特定できる場合、方法100は、例えば、幅および/または高さおよび/または深さなどのような重みパラメータのサイズおよび形状を変更させる次元において重みパラメータに対してパディングした後、または重みパラメータに対して、幅および/または高さおよび/または深さなどのような重みパラメータのサイズおよび形状を変更させる次元において重みパラメータに対してパディングすると決定した場合、該層の特徴データに対して、重みパラメータのサイズおよび形状を変更させる次元(例えば、幅及び/又は高さ及び/又は深さ)において、パディングすることをさらに含むことができる。
【0050】
例えば、重みパラメータが幅においてパディングされた場合、対応する特徴データも幅においてパディングしてもよい。
【0051】
一の実施形態において、特徴データがパディングされる各次元におけるパディング位置及びパディング量は、重みパラメータの対応する次元におけるパディング位置及びパディング量とそれぞれ同じにすることができ、または重みパラメータに対して決定されるパディングモードを用いて、特徴データに対してパディングしてもよい。
【0052】
異なる実施形態によると、特徴データのパディング値を設定する規則は、ゼロ値を用いてパディングし、予め定義された非ゼロ値を用いてパディングし、パディングされる位置に隣接する位置の値を用いてパディングし、乱数または任意値を用いてパディングするなどを含むことができるが、これらには限定されない。
【0053】
しかし、
図1に示す方法100も単なる例示である。別の実施形態において、ステップ110において、次元ごとの対応する目標値を決定してもよく、または目標値の決定を単独のステップとしてもよい。例えば、パディングモードを決定する任意のステップは、重みパラメータおよび/または特徴データをパディングする前の任意の段階に配置してもよい。例えば、特徴データに対するパディングおよび重みパラメータのパディングは、並行して実行してもよい。
【0054】
図3は、本開示の実施形態に係る方法を使用して、畳み込みニューラルネットワークにおける重みパラメータの数量の次元におけるパディングの例を示す。
図3に示す実施形態において、ニューラルネットワークの設計アーキテクチャ(例えば、ニューラルネットワークのアルゴリズム設計者によって特定のアプリケーションおよび目標に基づいて予め定義されている)に基づいて、所定の層における特徴データ300に対して、予め3つの畳み込みカーネルを設定する。すなわち、畳み込みカーネル301、畳み込みカーネル302、及び畳み込みカーネル303。したがって、
図3に示された実施形態において、重みパラメータの数量における次元のディメンション値は3である。
【0055】
例えば、ニューラルネットワークの計算をサポートするハードウェア関連のパラメータに基づいて、例えば5つの畳み込みカーネルを設計した場合、ソフトウェアおよび/またはハードウェアのコストおよび性能は比較的良好であると判断され、例えば、加算器の選択/イネーブル装置の設計を省略することができる場合、または比較的良好な処理の並列性を取得できる場合、または次の所定の層でプーリング処理を行うと決定してハードウェアが対応するプーリング層(pooling layer)における特徴データのチャネル数が5である場合に最良または比較的良好な処理性(例えば、並行度)を得ることができると判断された場合である。したがって、重みパラメータの数量における次元の目標値は5と決定してもよい。
【0056】
重みパラメータの数量における次元のディメンション値(すなわち、3)は、対応する目標値(すなわち、5)より小さいため、重みパラメータに対して数量においてパディングすることができる。
【0057】
図3に示された実施形態において、畳み込みカーネル301、畳み込みカーネル302、及び畳み込みカーネル303に基づいて、畳み込みカーネル301〜303のそれぞれと同じサイズおよび形状(すなわち、幅、高さ及び深さにおいて、それぞれ完全に同じ)を有する2つの畳み込みカーネルを追加することができ、すなわち、畳み込みカーネル304及び畳み込みカーネル305(
図3の点線で示される)を追加することができる。これにより、パディング後の畳み込みカーネルの総数が5になり、決定された目標値と同じになる。
【0058】
一の実施形態において、パディング用の畳み込みカーネル304と畳み込みカーネル305とは同じであってもよい。言い換えると、一以上の同じ畳み込みカーネルを用いて、数量の次元におけるパディングをしてもよい。
【0059】
別の実施形態において、必要に応じて、異なる値を含む一以上の畳み込みカーネルを選択して、数量の次元におけるパディングをすることができ、選択されたすべてのパディング用畳み込みカーネル(例えば、
図3における畳み込みカーネル304及び305)を、オリジナル設定された畳み込みカーネル(例えば、
図3の畳み込みカーネル301,302、及び303)と同じ形状およびサイズにすることができ、すなわち、すべての畳み込みカーネル(
図3における畳み込みカーネル301〜305を含む)が、少なくとも同じ幅、同じ高さおよび同じ深さを有する。
【0060】
一の実施形態において、パディングのための畳み込みカーネル304及び畳み込みカーネル305は、いずれもゼロ値に相当する畳み込みカーネルであってもよい。すなわち、畳み込みカーネル304及び305に含まれたすべての成分の値がいずれもゼロである。
【0061】
別の実施形態において、畳み込みカーネル304及び畳み込みカーネル305は、予め定義された(例えば、ニューラルネットワークの設計段階で設計者によって予め定義された)一セットのテンプレートデータ(ゼロ値および/または非ゼロを含めてもよい)から選択することができ、または予め定義されたパディング用畳み込みカーネルの生成規則に基づいて、例えば、一以上の所定の定義された値(非ゼロ値であってもよい)を用いて生成することができる。
【0062】
図3に示された実施形態について、畳み込みカーネル304及び305は、畳み込みカーネル303の下方にパディングされ、または畳み込みカーネル304及び305が、畳み込みカーネル301、畳み込みカーネル302、及び畳み込みカーネル303を含む順番付けられたシーケンスの尾部にパディングされてもよい。
【0063】
一の実施形態において、必要に応じて、一以上の別のパディング位置を選択することができる。例えば、畳み込みカーネル304及び305を、畳み込みカーネル301、畳み込みカーネル302、および畳み込みカーネル303を含む順番付けられたシーケンスの先頭にパディングしてもよく、または畳み込みカーネル304を、シーケンスの先頭(すなわち、
図3に示す実施形態の畳み込みカーネル301の上方)にパディングして畳み込みカーネル305が畳み込みカーネル302と303との間にパディングしてもよく、または畳み込みカーネル304を、畳み込みカーネル301と302との間にパディングして畳み込みカーネル305を畳み込みカーネル302と303との間にパディングしてもよく、または畳み込みカーネル304と305の両方を畳み込みカーネル301と302との間にパディングしてもよい。
【0064】
上述の通り、デフォルトまたは決定されたパディングモードに基づいて数量の次元におけるパディング位置、パディング量及びパディング値を設定する規則を決定することができる。
【0065】
図4は、本開示に係る実施形態による方法を使用して、畳み込みニューラルネットワークにおける所定の層の重みパラメータを、幅と高さの二次元においてパディングする一例を示す。
図4において、各畳み込みカーネルにおける番号1,2、……、12などは、畳み込みカーネルの数値(または重み値)の相対位置を例示するためだけに用いられるものであり、実際の値を表すものではない。分かりやすくするために、
図4には、畳み込み及び特徴データの深さ(チャネル)を示していない。
【0066】
図4に示す実施形態において、例えば、ニューラルネットワークの設計アーキテクチャに基づいて、特徴データ400に対して予め設定された畳み込みカーネルごとの(例えば、
図4における畳み込みカーネル401、畳み込みカーネル402、及び畳み込みカーネル403)幅と高さはそれぞれ4と3である。
【0067】
例えば、ニューラルネットワークの計算をサポートするハードウェア関連パラメータに基づいて、ハードウェア(例えば、ニューラルネットワークの専用アクセラレータ)が直接処理できる畳み込みカーネルの幅および高さは、それぞれ5及び5であると決定される。したがって、重みパラメータの数量の幅および高さにおける目標値は、それぞれ5及び5と決定してもよい。
【0068】
重みパラメータの幅と高さの二つの次元におけるディメンション値はそれぞれ対応する目標値よりも小さいので、重みパラメータに対して、幅と高さの二つの次元においてパディングすることができる。
【0069】
図4に示された実施形態において、畳み込みカーネル401,402、及び403のそれぞれについて、左側に一列パディングし、下方に2行パディングし(
図4において、Pを用いてパディングされた行および列を示す)、パディング後に得られた畳み込みカーネル401’、402’及び403’のそれぞれの幅と高さは、それぞれ5と5であり、これで決定された対応する目標値と同じになる。
【0070】
一の実施形態において、まず、幅にパディングすることができ、すなわち、左側で一列パディングし、得られた幅及び高さがそれぞれ5と3の中間結果で、それから、高さにおいて幅と高さにそれぞれ5と3の中間結果に対してパディングし、すなわち、下方に二行パディングすることによって、最終に幅と高さがそれぞれ5と5であるパディング後の畳み込みカーネルを得る。
【0071】
別の実施形態において、まず高さでパディングしてから、幅でパディングすることも可能である。
別の実施形態において、幅と高さにおいて同時にパディングすることも可能である。
重みパラメータの幅および/または高さに対してパディングする場合、重みパラメータ(畳み込みカーネルごと)の形状が変更する。
【0072】
対応して、対応する特徴データ400について、幅および/または高さにおいて対応するパディングを行うことができ、パディング後の特徴データ400’が、パディング後の畳み込みカーネル401’、402’及び403’にマッチするようにすることで、ニューラルネットワークが、パディング後の特徴データ400’を使用し及びパディング後の畳み込みカーネル401’、402’及び403’を使用した場合に、得ることができる最終結果と、オリジナル特徴データ400を使用し及びオリジナル畳み込みカーネル401、402及び403を使用した場合に得ることができる最終結果と同じになることを確保する。
【0073】
図4に示された実施形態において、畳み込みカーネル401,402,403のそれぞれについて、左側に一列パディングして下方に二行パディングし、かつ、対応して、特徴データ400に対し、その左側に一列パディングして下方に二行パディングし、これによってパディング後の畳み込みカーネル401’、402’及び403’及びパディング後の特徴データ400’が得られる。
【0074】
一実施形態において、ゼロ値を用いて畳み込みカーネルおよび特徴データの幅および高さにおいてパディングすることができる。例えば、
図4に示す例示において、各畳み込みカーネルおよび特徴データの各パディング位置Pにおけるパディング値はゼロ値であってもよい。
【0075】
別の実施形態において、特徴データに対して、一以上の非ゼロ値を用い、または特徴データにおけるパディングされる位置(たとえば、
図4の特徴データ400の最も左の一列及び最下方の一行)に隣接する位置の値を複製してパディングする。
【0076】
図5に、例えば、
図4における特徴データ400に対して、複製によって得られたパッディング後の特徴データ500’の実施形態を示す。ここで、パッディングビットA、B、C、D及びEはそれぞれ特徴データ400における位置A、B、C、D及びEにおける値をパディング値とする。別の実施形態において、必要に応じて、畳み込みカーネルに対して、他の値(例えば、乱数や任意の値)を使用してパディングすることができる。
【0077】
図4及び
図5に示された実施形態において、畳み込みカーネルおよび/または特徴データごとの左側および下方にパディングを実行する。別の実施形態において、畳み込みカーネルおよび/または特徴データの右側および下方にパディングすることを選択することができ、または畳み込みカーネルおよび/または特徴データの左側または右側および上方にパディングすることを選択することができ、または畳み込みカーネルおよび/または特徴データの左側または右側に一列パディングし、かつ畳み込みカーネルおよび/または特徴データの上方または下方に一行パディングすることを選択することができる。
【0078】
一実施形態において、畳み込みカーネルに対するパディング方法を、特徴データに対するパディング方法と同じにすることができる。例えば、畳み込みカーネルの右側に一列パディングして上方および下方に一行パディングする場合、特徴データの右側にも一列パディングして上方および下方にも一行パディングする。
【0079】
上述の通り、デフォルトまたは決定されたパディングモードに基づいて、幅および/または高さの次元におけるパディング位置、パディング量及びパディング値を設定する規則などを決定し、特徴データに対する幅および/または高さの次元におけるパディング位置、パディング量は、重みパラメータの幅および/または高さの次元におけるパディング位置、パディング量とそれぞれ同じであってもよい。
【0080】
明確のために、
図4及び
図5には畳み込みおよび/または特徴データの深さ(チャネル)を示していない。実際では、
図4及び
図5の実施形態は、重みパラメータおよび/または特徴データの各チャネル(または深さ)におけるパディング処理の例示とみなすことができる。
【0081】
深さを考慮する場合、重量パラメータおよび/または特徴データに対するすべてのチャネル(または深さ)に対し、同じ位置で、同じパディング値を設定する規則に従って、同じパディング量でパディングすることができる。
図6は、幅、高さ、深さがそれぞれ3、2及び2である例示の畳み込みカーネルになるように、幅、高さ、深さがいずれも2である例示の畳み込みカーネルを右側に一列パディングする例を示す。
【0082】
図4及び
図5は、幅及び高さの二つの次元において、重量パラメータおよび/または特徴データに対して同時にパディングすること示しているが、
図6に示すように、畳み込みカーネルの形状とサイズ、および幅および/または高さにおける対応する目標値との比較結果に基づいて、幅および高さのうちの一つに次元において重量パラメータおよび/または特徴データに対してパディングしてもよい。
【0083】
図7は、本開示に係る実施形態による方法を使用して、畳み込みニューラルネットワークにおいて所定の層の重みパラメータの深さ(チャネル)におけるパディングの実施形態を示す。
【0084】
図7に示す実施形態において、ニューラルネットワークの設計アーキテクチャに基づいて、ニューラルネットワークの所定の層チャネル数(深さ)が3である特性データ700に対し、深さ(またはチャネル)が3であるいくつかの畳み込みカーネル701,702及び703を予め設定する。
【0085】
例えば、ニューラルネットワークの計算をサポートするハードウェアに関連するパラメータに基づいて、例えば、深さが5である畳み込みカーネルを設計する場合、ハードウェアのコストと性能とが比較的良好であると判定され、例えば、加算器の選択/イネーブル回路の設計が省略でき、または処理において比較的良好な並列性を得ることができ、ハードウェアによって直接処理をすることができるような場合である。したがって、重みパラメータの深さの次元における目標値を5と決定してもよい。
【0086】
重みパラメータの深さにおけるディメンション値が対応する目標値よりも小さいので、畳み込みカーネルに対して深さにおけるパディングを行うことができる。
【0087】
図7に示されるように、畳み込みカーネル701、702及び703のそれぞれに対し、二行(
図7において、破線で示す。)パディングし、パディング後の得られた畳み込みカーネル701’、702’及び703’のそれぞれの深さがいずれも5にすることにより、決定された対応する目標値と同じになる。
【0088】
深さにおいて重みパラメータに対してパディングする場合、畳み込みカーネル701,702,703の形状が変わる。対応して、深さにおいて、該層の特徴データ700に対してパディングし、パディング後の特徴データ700’が、パディング後の畳み込みカーネル701’、702’及び703’にマッチできるようにし、ニューラルネットワークがパディング後の特徴データ700’及びパディング後の畳み込みカーネル701’、702’及び703’を使用する場合に得られる最終結果が、オリジナル特徴データおよびオリジナル畳み込みカーネル701、702及び703を使用する場合に得られる最終結果と同じであることが確保される。
【0089】
図7示された実施形態において、畳み込みカーネル701、702及び703のそれぞれに対して、後方に二行(パディング後の畳み込みカーネルがそれぞれ深さにおいて同じ幅と高さを有する)パディングする。対応して、特徴データ700の後方に二行(パディング後の特徴データ700’がそれぞれ深さにおいて同じ幅と高さを有する)パディングしてもよい。これにより、パディング後の畳み込みカーネル701’、702’及び703’及びパディング後の特徴データ700’を得る。
【0090】
一の実施形態において、ゼロ値を用いて畳み込みカーネルに対し、深さにおいてパディングすることができる。例えば、
図7の畳み込みカーネル701’、702’、及び703’のそれぞれの後方にパディングされた二行のデータはすべてゼロであってもよい。別の実施形態において、必要に応じて、他の値を用いて、畳み込みカーネルに対し、深さにおいてパディングしてもよい。同様に、ゼロ値または他の値を用いて特徴データに対して深さにおいてパディングしてもよい。
【0091】
図7に示された実施形態において、畳み込みカーネルおよび特徴データごとの後方にパディングする。別の実施形態において、前方に二行パディングすることを選択することができ、または所定の二つの連続するチャネルの間に二行パディングすることができ、またはチャネル1とチャネル2との間に一行パディングしてチャネル2とチャネル3との間に一行パディングすることができ、または所定の二つの連続するチャネルの間に一行パディングして前方または後方に一行パディングしてもよい。
【0092】
一の実施形態において、畳み込みカーネルに対するパディング方法は、特徴データに対するパディング方法と同じにすることができる。例えば、畳み込みカーネルの前方に一行パディングしてチャネル2とチャネル3との間に一行パディングする場合、特徴データに対しても前方に一行パディングしてチャネル2とチャネル3との間に一行パディングする。
【0093】
上述したように、デフォルトまたは決定されたパディングモードに基づいて、深さの次元においてパディング位置、パディング量、パディング値を設定する規則などを決定してもよく、特徴データに対する深さの次元におけるパディング位置およびパディング量は、重みパラメータに対して対応する次元におけるパディング位置およびパディング量とそれぞれ同じにしてもよい。
【0094】
また、特徴データをパディングためのパディング値は、重みパラメータをパディングするためのパディング値によって決定してもよく、または独立して決定してもよい。
【0095】
図3〜
図7に本開示に係る実施形態による方法を使用し、重みパラメータおよび/または特徴データに対して、数量、幅、高さ、および深さなどの次元においてパディングする例を示す。
図2〜
図7で使用される特徴データおよび重みパラメータの表現は異なっているかもしれないが、これらの特徴データおよび/または重みパラメータの実際の形式が異なることを意味するものではない。
【0096】
しかし、異なる形式で特徴データおよび/または重みパラメータを示すことは、便宜上および/または強調の目的のためにすぎない。
【0097】
また、本開示の実施形態に係る方法は、
図3〜
図7に示される実施形態に限定されるものではなく、畳み込みニューラルネットワークや他の種類のニューラルネットワークにおける所定の層の重みパラメータや特徴データに対して、必要に応じて、重みパラメータおよび/または特徴データは実際に一以上の次元を有することを考慮し、または一以上の次元から重みパラメータおよび/または特徴データを観察し、必要に応じて、本開示の実施形態に係る方法を用いて重みパラメータおよび/または特徴データに対してパディングし、規範化された形式を有する重みパラメータおよび/または特徴データを得る。
【0098】
例えば、畳み込みニューラルネットワークにおいて存在し得るプーリング層(pooling layer)について、特徴データに対してプーリングカーネル(pooling kernel)(受容野(receptive field)とも呼ばれる)を設けることができ、これまたはこれらのプーリングカーネルを使用し、特徴データの各チャネルに対してそれぞれプーリング処理をする。
【0099】
対応して、プーリングカーネルを深さのような次元を有するとみなし、かつその深さ値は特徴データのチャネル数(または深さ値)に等しく、かつ必要に応じて、該プーリング層のプーリングカーネルおよび/または特徴データに対し、例えば、深さにおいてパディングしてもよく、例えば、深さにおいてプーリングカーネルおよび/または特徴データを複製してパディングする。
【0100】
本開示の実施形態に係る方法を使用し、重みパラメータおよび/または特徴データに対してパディングすることによって、規範化された形式の重みパラメータおよび/または特徴データを得ることができ、ニューラルネットワークのアーキテクチャの設計及びニューラルネットワークの演算をサポートする(例えば、専用アクセラレータ、アキュムレータ等)の設計を簡略化することができ、異なる形式の重みパラメータを処理するための余計な処理及び起こり得る誤りを回避することができ、ハードウェアおよび/またはソフトウェアの処理性能(例えば、処理の並列性またはハードウェアの使用率など)などを向上させることができる。
【0101】
本開示に係る実施形態による方法(例えば、
図1に示された例示方法100)は、ニューラルネットワークの一以上の層における特徴データおよび重みパラメータの前処理のために使用されてもよい。例えば、ニューラルネットワークのアーキテクチャにおけるコンパイラ層(compiler layer)によってハードウェア層にデータおよび指令を提出する前に、ニューラルネットワークの一以上の層における特徴データおよび重みパラメータに対して、本開示に係る実施形態による方法を使用して、チェック及びパディングしてもよい。
【0102】
ニューラルネットワークにおける一以上の層の層ごとの演算の前に、本開示に係る実施形態による方法を使用して、該層の特徴データ及び重みパラメータに対してチェック及びパディングすることができる。
以上の記載では、畳み込みニューラルネットワークを例示として、本開示に係るニューラルネットワークのパラメータを適応させる方法の原理を述べたが、本開示の原理は、他の種類のニューラルネットワークにも適用することができる。
【0103】
例えば、重みパラメータが一以上の単一値データである場合、
図1に示された例示方法100を使用することができ、かつ
図3に示された実施形態を参照して、数量において重みパラメータに対してパディングしてもよい。
【0104】
例えば、重みパラメータが一つまたは複数の二次元データである場合、
図1に示された例示方法100を使用することができ、
図4及び
図5に示された実施形態を参照して、二次元データの二つの次元において重みパラメータに対してパディングする。対応して、必要に応じて及びニューラルネットワークの種類に応じて、重みパラメータの対応する次元における目標値の決定方法およびパディング方法を決定してもよい。
【0105】
図8は、本開示に係る実施形態によるニューラルネットワークのパラメータを適応させるために使用することができる装置のブロック図を示す。
図8に示すように、例示装置800は、一以上のプロセッサ810を含むことができる。プロセッサ810は、汎用CPU、GPU、専用ニューラルネットワークプロセッサまたはアクセラレータなどのようなデータ処理能力および/または指令の実行能力を有する任意の形態の処理手段であってもよい。
【0106】
例えば、プロセッサ810は、本開示に係る実施形態によりニューラルネットワークのパラメータを適応させる方法を実行することができる。さらに、プロセッサ810は、デバイス810における他の部品を制御して、所望の機能を実行させることもできる。
プロセッサ810は、バスシステムおよび/または他の形態の接続機構(図示せず)を介して、メモリ830およびI/Oインターフェイス830に接続することができる。
【0107】
メモリ830は、例えば、揮発性メモリおよび/または不揮発性メモリなどの様々なコンピュータ読み書き可能な記憶媒体を含むことができる。揮発性メモリは、ランダムアクセスメモリ(RAM)及び/又はキャッシュメモリ(キャッシュ)などを含むことができる。不揮発性メモリは、例えば、読み取り専用メモリ(ROM)、ハードディスク、フラッシュメモリ等を含むことができる。
【0108】
読み書き可能な記憶媒体は、例えば、電気、磁気、光、電磁気、赤外線、または半導体のシステム、装置、またはデバイス、またはそれらの任意の組み合わせを含むことができるがこれらに限らない。
【0109】
例えば、ニューラルネットワーク専用プロセッサに合わせて使用する場合、メモリ820は、専用プロセッサが搭載されるチップ上のRAMであってもよい。メモリ820は、本開示に係る実施形態によるニューラルネットワークのパラメータを適応させる方法のプログラム指令を実行させるための指示手段800を含むことができる。
【0110】
I/Oインターフェイス830は、プロセッサ810にパラメータまたはデータを提供し、かつプロセッサ810によって処理された結果データの出力のために用いることができる。
【0111】
図9は、本開示に係る別の実施形態によるニューラルネットワークのパラメータを適応させるために使用することができる装置のブロック図を示す。
【0112】
図9に示されたように、例示装置900は、検出器910及びパッダー920を含むことができる。検出器910は、ニューラルネットワークの少なくとも一つの層における層ごとの重みパラメータによって選択された一以上の次元に対して、該重みパラメータの各次元におけるディメンション値及び対応する目標値を決定するように構成することができる。
【0113】
パッダー920は、重みパラメータの各次元におけるディメンション値が対応する目標値よりも小さい場合、パディング後に得られた重みパラメータの各次元におけるディメンション値が対応する目標値に等しくなるように、前記重みパラメータに対してパディングする。
【0114】
例示装置900は、プロセッサ930(例えば、汎用CPU、GPU、ニューラルネットワークの専用プロセッサまたはアクセラレータ)を含むことができ、パダー920からの出力データを受信してニューラルネットワークに関する演算を行う。
【0115】
しかし、
図8及び
図9に示された装置800および900は単なる例示であって限定的なものではない。必要に応じて、本開示に係る実施形態によるニューラルネットワークのパラメータを適応させることができる装置は、その他の部材および/または構造を有することができる。
【0116】
前後文から明確に別途の要求がある場合を除き、明細書および特許請求の範囲全体において、用語「comprise」(有する)、「include」(含む)などは、排他性または限界性(exhaustive)の意味の逆である包括的な意味として解釈すべきであり、つまり、「を含むが、これに限定されない」の意味として解釈すべきである。
【0117】
また、用語「本明細書中」、「以上の記載に」、「以下の記載に」及び似たような意味の用語が本開示において使用される場合に、本開示の具体的な部分ではなく、本開示全体を指すとすべきである。前後文が許される場合、単数形または複数形を使用する以上の記載における用語も、それぞれ複数または単数を含むことができる。二つまたは複数の項目のリストを言及する場合の用語「または」について、該用語は該用語の以下の解釈における全部をカバーする。すなわち、リストにおける任意の項目、リストにおけるすべての項目、及びリストにおける項目の任意の組み合わせである。
【0118】
本開示に係る実施形態の以上の詳細な説明は、制限的または本発明を以上の記載によって開示された適切な形式に限定することを意図するものではない。説明のために、本開示に係る具体的な実施形態及び例示を述べたが、当該分野における技術者が認識しているように本発明の技術的範囲内である限り、各種の均等の範囲における変更は可能である。
【0119】
例えば、処理またはブロックが所定の順序で示したが、代替の実施形態において、これらのステップの処理または異なる順序でこれらのブロックのシステムを使用することができ、かついくつかの処理またはブロックは、削除、移動、追加、細分化、結合、および/または変更が可能である。これらの処理またはブロックのそれぞれは異なる方法で実施することができる。また、処理またはブロックは直列的に実行されるが、代わりに、これらの処理及びブロックは並列的に実行され、または異なる時間で実行されることも可能である。
【0120】
本明細書で提供される本発明の教示は、必ずしも上記のシステムである必要はなく、他のシステムにも適用することができる。上述のそれぞれの実施形態の部品及び動作を組み合わせることにより、別の実施形態を提供することができる。
【0121】
本開示に係るいくつかの実施形態について説明したが、これらの実施形態は、例示として提示するものであり、本開示の範囲を限定するものではない。実際、本明細書に記載された新規の方法およびシステムは、様々なその他の形態で実施することができる。また、本発明の範囲から逸脱しなければ、本明細書に記載された方法およびシステムの形式に種々の省略、置換および変更をすることが可能である。