IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ モフェット インターナショナル カンパニー,リミティドの特許一覧

特許7623038層別解析によるニューラルネットワーク剪定方法およびシステム
<>
  • 特許-層別解析によるニューラルネットワーク剪定方法およびシステム 図1
  • 特許-層別解析によるニューラルネットワーク剪定方法およびシステム 図2
  • 特許-層別解析によるニューラルネットワーク剪定方法およびシステム 図3
  • 特許-層別解析によるニューラルネットワーク剪定方法およびシステム 図4
  • 特許-層別解析によるニューラルネットワーク剪定方法およびシステム 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-01-20
(45)【発行日】2025-01-28
(54)【発明の名称】層別解析によるニューラルネットワーク剪定方法およびシステム
(51)【国際特許分類】
   G06N 3/08 20230101AFI20250121BHJP
   G06N 3/045 20230101ALI20250121BHJP
【FI】
G06N3/08
G06N3/045
【請求項の数】 13
(21)【出願番号】P 2023532776
(86)(22)【出願日】2021-10-28
(65)【公表番号】
(43)【公表日】2023-12-13
(86)【国際出願番号】 US2021057095
(87)【国際公開番号】W WO2022115202
(87)【国際公開日】2022-06-02
【審査請求日】2023-07-28
(31)【優先権主張番号】17/107,046
(32)【優先日】2020-11-30
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】523062486
【氏名又は名称】モフェット インターナショナル カンパニー,リミティド
(74)【代理人】
【識別番号】100094569
【弁理士】
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100103610
【弁理士】
【氏名又は名称】▲吉▼田 和彦
(74)【代理人】
【識別番号】100109070
【弁理士】
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【弁理士】
【氏名又は名称】大塚 文昭
(74)【代理人】
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【弁理士】
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100139712
【弁理士】
【氏名又は名称】那須 威夫
(74)【代理人】
【識別番号】100141553
【弁理士】
【氏名又は名称】鈴木 信彦
(74)【代理人】
【識別番号】100176418
【弁理士】
【氏名又は名称】工藤 嘉晃
(72)【発明者】
【氏名】ヤン エンシュ
(72)【発明者】
【氏名】シュ ドンクアン
(72)【発明者】
【氏名】リウ ジャチャオ
【審査官】千葉 久博
(56)【参考文献】
【文献】特開2018-129033(JP,A)
【文献】米国特許出願公開第2020/0356860(US,A1)
【文献】米国特許出願公開第2020/0311552(US,A1)
【文献】米国特許出願公開第2020/0160185(US,A1)
【文献】米国特許出願公開第2016/0293167(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/08
G06N 3/045
(57)【特許請求の範囲】
【請求項1】
第1のニューラルネットワークを取得するステップであって、
前記第1のニューラルネットワークが訓練データの第1のセットを使用して訓練され、
前記第1のニューラルネットワークがノードの第1のセットを備え、
前記第1のニューラルネットワークが、ノードの前記第1のセットを相互接続する接続の第1のセットを備える、
ステップと、
前記第1のニューラルネットワークに基づいて第2のニューラルネットワークを生成するステップであって、
前記第1のニューラルネットワークの中間層のセットを解析するステップと、
前記中間層のうち各中間層に対して重みのサブセットを決定するステップであって、前記中間層に提供された入力および参照出力に基づいてそれぞれのフィルタを生成することを含み、前記それぞれのフィルタが重みのサブセットをそれぞれ1つ備える、ステップと、
各中間層に対する重みの前記サブセットに基づいて前記第2のニューラルネットワークを生成するステップと、
を備え、
前記第2のニューラルネットワークが、ノードの第2のセットを相互接続する接続の第2のセットを備え、接続の前記第2のセットが接続の前記第1のセットのサブセットを備え、
前記第2のニューラルネットワークが、訓練データの前記第1のセットを使用せずに生成される、
ステップと
を備える、方法。
【請求項2】
前記入力が、
入力特徴マップの第1のセットを積み重ねて第1の結合特徴マップを生成すること
によって生成され、前記入力が前記第1の結合特徴マップを備える、
請求項に記載の方法。
【請求項3】
入力特徴マップの前記第1のセットが前記第1のニューラルネットワークの第1のフィルタによって生成される、請求項に記載の方法。
【請求項4】
前記参照出力が、
出力特徴マップを平板化してベクトルを生成すること
によって生成され、前記参照出力が前記ベクトルを備える、
請求項に記載の方法。
【請求項5】
前記出力特徴マップが前記第1のニューラルネットワークの第2のフィルタに基づいて生成される、請求項に記載の方法。
【請求項6】
各中間層に対する重みの前記サブセットが、各中間層に対して同時に決定される、請求項1に記載の方法。
【請求項7】
前記第2のニューラルネットワークを生成するステップが、
前記第2のニューラルネットワークを訓練せずに前記第2のニューラルネットワークを生成するステップ
を備える、請求項1に記載の方法。
【請求項8】
ノードの前記第2のセットがノードの前記第1のセットのサブセットを備える、請求項1に記載の方法。
【請求項9】
プロセッサと、
前記プロセッサによって実行されると、前記プロセッサに請求項1からのいずれかに1項に記載の方法を実行させる命令を記憶するために、プロセッサに結合されたメモリと、
を備える装置。
【請求項10】
第1のニューラルネットワークを取得するステップであって、
前記第1のニューラルネットワークが、第1の回数前記第1のニューラルネットワークを通して訓練データのセットを渡すことによって訓練され、
前記第1のニューラルネットワークがノードの第1のセットを備え、
前記第1のニューラルネットワークが、ノードの前記第1のセットを相互接続する接続の第1のセットを備える、
ステップと、
前記第1のニューラルネットワークに基づいて第2のニューラルネットワークを生成するステップであって、
前記第2のニューラルネットワークが、ノードの第2のセットを相互接続する接続の第2のセットを備え、接続の前記第2のセットが接続の前記第1のセットのサブセットを備え、
前記第2のニューラルネットワークが、第2の回数前記第2のニューラルネットワークを通して訓練データの前記セットを渡すことによって訓練され、前記第2の回数が前記第1の回数より小さい、
ステップと
を備える、方法。
【請求項11】
前記第1のニューラルネットワークに基づいて前記第2のニューラルネットワークを生成するステップが、
前記第1のニューラルネットワークの中間層のセットを解析するステップと、
各中間層に対して重みのサブセットを決定するステップと、
各中間層に対する重みの前記サブセットに基づいて前記第2のニューラルネットワークを生成するステップと
を備える、請求項10に記載の方法。
【請求項12】
各中間層に対して重みの前記サブセットを決定するステップが、
各中間層に対して、前記中間層に提供された入力および参照出力に基づいてそれぞれのフィルタを生成するステップであって、前記それぞれのフィルタが重みのサブセットを備える、ステップ
を備える、請求項11に記載の方法。
【請求項13】
前記入力が、
入力特徴マップの第1のセットを積み重ねて第1の結合特徴マップを生成すること
によって生成され、前記入力が前記第1の結合特徴マップを備える、
請求項12に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、その開示が全体として参照により本明細書に組み込まれる、2020年11月30日に出願された米国非仮特許出願第17/107,046号の利益を主張する。
【0002】
本開示の実施形態は、一般に、人工知能に関する。より詳細には、本開示の実施形態は、深層ニューラルネットワークなどのニューラルネットワークを剪定する方法およびシステムに関する。
【背景技術】
【0003】
深層ニューラルネットワーク(DNN)、畳み込みニューラルネットワーク(CNN)などのニューラルネットワークは、画像、ビデオ、オーディオ、およびテキストなどの低レベルのデータから高レベルの情報を抽出するための、人工知能(AI)において広く使用される手法になっている。しかしながら、ニューラルネットワークの高い計算コストは、エネルギー消費、処理容量/リソース、記憶スペース、および/または待ち時間許容値に対する予算が少ない用途においてその使用を阻む可能性がある。たとえば、携帯電話および監視カメラなどのエッジデバイスは、大きいストレージ/処理リソースなどをもたない場合がある。
【発明の概要】
【0004】
ニューラルネットワークの計算コストは、様々なソースに起因する場合がある。第1に、ニューラルネットワークパラメータは、巨大な記憶コストをもたらす数百万または数千万のオーダーであり得、メモリ空間へのニューラルネットワークパラメータの記憶を阻む可能性がある。第2に、ニューラルネットワーク内のニューロンの数は大きいメモリ空間を消費する可能性があり、実行時に数十億の算術演算を必要とする場合がある。第3に、顔比較エンジンなどの、ニューラルネットワークによって生成されるベクトル表現に基づく検索エンジンは、ニューラルネットワークの高次元密度ベクトル表現(埋め込み)に部分的に基づいて、計算コストが高い可能性がある。
【0005】
本開示の実施形態は、添付図面の図において限定ではなく例として示され、添付図面では、同様の参照記号は同様の要素を示す。
【図面の簡単な説明】
【0006】
図1】本開示の1つまたは複数の実施形態による、ニューラルネットワークの動作を示す図である。
図2】本開示の1つまたは複数の実施形態による、例示的なニューラルネットワークを示す図である。
図3】本開示の1つまたは複数の実施形態による、例示的な剪定エンジンを示す図である。
図4】本開示の1つまたは複数の実施形態による、ニューラルネットワークを剪定するための例示的なプロセスを示すフロー図である。
図5】本開示の1つまたは複数の実施形態による、例示的なコンピューティングデバイスを示すブロック図である。
【発明を実施するための形態】
【0007】
下記に説明される詳細を参照して本開示の様々な実施形態および態様が記載され、添付図面は様々な実施形態を示す。以下の説明および図面は、本開示の例示であり、本開示を限定するものと解釈されるべきでない。本開示の様々な実施形態の完全な理解を提供するために、多数の具体的な所為債が記載される。しかしながら、いくつかの例では、本開示の様々な実施形態の簡潔な説明を提供するために、周知または従来の詳細は記載されない。
【0008】
「一実施形態」または「実施形態」に対する本明細書内の参照は、その実施形態とともに記載される特定の特徴、構造、または特性が本開示の少なくとも1つの実施形態に含まれ得ることを意味する。本明細書内の様々な場所における「一実施形態では」というフレーズの出現は、必ずしもすべてが同じ実施形態を参照するとは限らない。
【0009】
ニューラルネットワークは、何千または何百万のノードおよび/または重みを含む場合がある。これらの重みおよび/またはノードを記憶することは、膨大な量の記憶スペースを使用する場合がある。加えて、ニューラルネットワーク200を実行するために(たとえば、ニューラルネットワーク200を使用して入力データを処理/解析するために)、膨大な量の処理/計算リソースが使用される場合がある。たとえば、重みの各々は入力に適用される場合があり、それはニューラルネットワークによって実行される計算および/または演算の数を増大させる。したがって、ニューラルネットワーク内の重み/接続および/またはノードの数を削減することが有用であり得る。これにより、ニューラルネットワークを記憶するために使用される記憶スペースの量が低減され、使用される処理/計算リソースが低減されるはずである。
【0010】
図1は、本開示の1つまたは複数の実施形態による、例示的なニューラルネットワーク100を示す図である。ニューラルネットワークは深層ニューラルネットワークであり得る。深層ニューラルネットワークは、複数の中間層(たとえば、ノードおよび/またはノード間の重み/接続の複数の層)を含むニューラルネットワークであり得る。一実施形態では、ニューラルネットワークは、深層ニューラルネットワークのタイプ/クラスであり得る畳み込みニューラルネットワーク(CNN)であり得る。ニューラルネットワーク(たとえば、CNN)は、畳み込み演算およびプーリング演算を使用して、入力を処理し、推論、判断などを生成し出力することができる。CNNは、しばしば、画像解析および/または画像処理を実行するために使用される場合がある。
【0011】
図1に示されたように、ニューラルネットワーク100に入力110が提供される(たとえば、渡される、供給されるなど)場合がある。たとえば、入力110は、ニューラルネットワーク100によって処理および/または解析される1つまたは複数の画像(たとえば、デジタル画像、ピクチャなど)を含む場合がある。入力110は、第1のカーネル115によって処理される場合がある。第1のカーネル115は、畳み込みフィルタと呼ばれる場合もある。畳み込みフィルタは、1つまたは複数のカーネル(たとえば、畳み込みカーネル)を含む場合がある。たとえば、入力(たとえば、画像)は、複数のチャネル(たとえば、赤、青、緑、画像のピクセルごとの入力チャネルなどの複数の入力チャネル)を有する場合がある。第1のカーネル115は、チャネルごとにフィルタを含む場合がある。第1のカーネル115は、入力110に対する畳み込み演算を実行するために使用される場合がある。畳み込み演算は、2組の情報を出力にマージすることができる演算であり得るか、またはそれを指す場合がある。たとえば、第1のカーネル115は、出力を生成するために入力の部分に適用され得る重み(たとえば、値)を含む場合がある。第1のカーネル115は、ニューラルネットワークの層(たとえば、中間層)と呼ばれる場合もある。
【0012】
一実施形態では、第1のカーネル115によって生成された出力は、特徴マップ120であり得る。特徴マップ120は、入力の値に第1のカーネル115(たとえば、重みのセット)を適用した結果であり得る。たとえば、特徴マップ120は、要素別行列乗算の結果および結果の総和であり得る。
【0013】
一実施形態では、ニューラルネットワーク100は、特徴マップ120に対して実行され得るプーリング演算も含み、かつ/または実行することができる。プーリング演算は、同じ深度を保ちながら特徴マップ120の高さおよび重みを低減する、特徴マップのダウンダンプリングを指す場合がある。たとえば、最大プーリング(たとえば、プーリング範囲内の最大値を使用することができるプーリングのタイプ)が特徴マップ120に適用される場合がある。特徴マップ120は、第1のカーネル115の出力(たとえば、第1の層の出力)であり得、第2のカーネル125に提供される入力(たとえば、第2の次の層の入力)でもあり得る。
【0014】
第2のカーネル125は、特徴マップ120(たとえば、入力特徴マップ)を受け取ることができ、特徴マップ120に畳み込み演算を適用して特徴マップ130を生成することができる。上記で説明されたように、特徴マップ130に対して1つまたは複数のプーリング演算が実行される場合がある。特徴マップ130は、第2のカーネル125の出力(たとえば、1つの層の出力)であり得、第3のカーネル135に提供される入力(たとえば、別の次の層の入力)でもあり得る。第3のカーネル135は、特徴マップ130(たとえば、入力特徴マップ)を受け取ることができ、特徴マップ130に畳み込み演算を適用して特徴マップ140を生成することができる。上記で説明されたように、特徴マップ140に対して1つまたは複数のプーリング演算が実行される場合がある。特徴マップ140は、第3のカーネル135の出力(たとえば、1つの層の出力)であり得、第4のカーネル145に提供される入力(たとえば、別の次の層の入力)でもあり得る。
【0015】
第4のカーネル145は、特徴マップ140(たとえば、入力特徴マップ)を受け取ることができ、特徴マップ140に畳み込み演算を適用して特徴マップ150を生成することができる。上記で説明されたように、特徴マップ150に対して1つまたは複数のプーリング演算が実行される場合がある。特徴マップ150は、第4のカーネル145の出力(たとえば、1つの層の出力)であり得、全結合層160に提供される入力でもあり得る。
【0016】
図1に示されたように、ニューラルネットワーク100は、全結合層160および170も含む。一実施形態では、全結合層160および170は、前の層の出力(たとえば、特徴マップ120、130、140、および/または150)を使用することができ、ニューラルネットワーク100の最終的な出力(たとえば、最終的な推論、判断など)を生成することができる。
【0017】
図2は、本開示の1つまたは複数の実施形態による、例示的なニューラルネットワーク200を示す図である。ニューラルネットワーク200は、(たとえば、複雑な)入力と出力との間の関係をモデル化するか、またはデータ内のパターンを見つけるために使用される場合があり、入力と出力との間の依存関係は容易に確認されない場合がある。ニューラルネットワーク200は、様々な計算を介して入力データ内の特徴を決定するために使用され得る計算モデルでもあり得る。たとえば、ニューラルネットワーク200は、計算が実行される順番を定義する構造に従って、入力データ(たとえば、オーディオデータ、画像データ、ビデオデータなど)内の特徴(たとえば、数、形状、パターンなど)を決定することができる。
【0018】
ニューラルネットワーク200は深層ニューラルネットワーク(CNN)であり得る。CNNは、フィードフォワードニューラルネットワークであり得る。フィードフォワードニューラルネットワークは、ノード間の接続がサイクルを形成しないニューラルネットワークのタイプであり得る。たとえば、信号、メッセージ、データ、情報などは、左から右へのニューラルネットワーク200の入力層210から(たとえば、入力ノードから)前方へ、中間層220を通って、出力層220に(たとえば、出力ノードに)流れる。信号、メッセージ、データ、情報などは、ニューラルネットワークを通って後方へ行くことはない(たとえば、右から左に行くことはない)。CNNは、画像解析に使用される場合がある。接続および/またはそれらの関連する重みは、入力に適用され得る(たとえば、画像の異なるピクセルに適用され得る)畳み込みフィルタ(および/または畳み込みカーネル)の形態を取ることができる。本開示はCNN向けの画像解析を参照する場合があるが、他の実施形態では、CNNは他のタイプのデータおよび入力に使用される場合がある。
【0019】
ニューラルネットワーク200は、入力層210、中間層220、および出力層220を含む。入力層210、中間層220、および出力層220の各々は、1つまたは複数のノード205を含む。入力層210、中間層220、および出力層220の各々は、異なる数のノード205を有する場合がある。ニューラルネットワーク200は、深層ニューラルネットワーク(DNN)または深層CNNであり得る。ニューラルネットワークは、2つ以上の中間層220が存在する場合(たとえば、4個、10個、または何らかの他の適切な数の中間層220が存在する場合)、深層(たとえば、深層ニューラルネットワーク)であり得る。図2に示されたように、ニューラルネットワーク200は、2つの中間層220(たとえば、ノード205の2つの列)を含む。一実施形態では、中間層220は、ノード205と、中間層220内でノード205に結合された接続/重みとを含む場合がある。中間層のノードは、中間層220向けの入力(たとえば、前の層によって生成された特徴マップなどの出力)を受け取ることができる。重み(たとえば、カーネル/フィルタ)は、現在の中間層の出力(たとえば、特注マップ)を生成するために、入力に適用される場合がある。
【0020】
層内のノード205の各々は、ノード205の間の矢印/線によって表されたように、次のレベルの(たとえば、次の副層)内のノード205または別の層内のノード205のいずれかに接続される。たとえば、入力層内のノード205は、各々第1の中間層220内の少なくとも1つのノード205に結合される。ニューラルネットワーク200は、全結合ニューラルネットワークであり得る。たとえば、各層またはレベル内の各ノード205は、次の層またはレベルが存在する場合の次の層またはレベル内の各ノードへのコネクタである(出力層220内のノード205は他のノードに接続されない)。
【0021】
各接続は、重みまたは重み値と関連付けられる場合がある(たとえば、重みを有する場合がある)。重みまたは重み値は、計算に適用される係数を定義することができる。たとえば、重みまたは重み値は、2つ以上のノード205の間のスケーリングファクタであり得る。各ノード205はその入力の合計を表すことができ、接続に関連付けられた重みまたは重み値は、その接続内のノード205の出力に乗算される係数またはスケーリングファクタを表すことができる。ノード205の間の重みは、ニューラルネットワークのための訓練プロセスの間に決定、計算、生成、割り当て、学習などされる場合がある。たとえば、ラベル付けされた訓練データ内の対応する値が与えられると、ニューラルネットワーク200が予想出力値を生成するように重みを設定するために、後方伝搬が使用される場合がある。したがって、中間層220の重みは、データ内の意味のあるパターンの符号化として見なすことができる。ノード205の間の接続の重みは、さらなる訓練によって修正される場合がある。
【0022】
ニューラルネットワーク200は特定の数のノード205、層、および接続で描写されているが、他の実施形態では、様々なニューラルネットワークのアーキテクチャ/構成が使用される場合がある。たとえば、異なる全結合ニューラルネットワークおよび(隣接する層内のすべてのノードが接続されている訳ではない)部分結合ニューラルネットワークが使用される場合がある。
【0023】
本開示は畳み込みニューラルネットワークを参照する場合があるが、他の実施形態では、他のタイプのニューラルネットワークおよび/または深層ニューラルネットワークが使用される場合がある。たとえば、他の実施形態では、部分結合深層ニューラルネットワーク、再帰型ニューラルネットワーク、長短期記憶(LSTM)ニューラルネットワークなどが使用される場合がある。
【0024】
上記で説明されたように、ニューラルネットワーク200は、何千または何百万のノードおよび/または重みを含む場合がある。ニューラルネットワーク200を記憶することは、多数のノードおよび/または重みに起因して膨大な量の記憶スペースを使用する場合がある。加えて、ニューラルネットワーク200を実行するために(たとえば、ニューラルネットワーク200を使用して入力データを処理/解析するために)、膨大な量の処理/計算リソースが使用される場合がある。したがって、ニューラルネットワーク200内の重み/接続および/またはノードの数を削減することが有用であり得る。これにより、ニューラルネットワークを記憶するために使用される記憶スペースの量が低減され、使用される処理/計算リソースが低減されるはずである。
【0025】
図3は、本開示の1つまたは複数の実施形態による、例示的な剪定エンジン300を示す図である。剪定エンジン300は、コンピューティングデバイス380内に位置する場合がある。コンピューティングデバイス380は、処理デバイス(たとえば、プロセッサ、中央処理装置(CPU)、プログラマブルロジックデバイス(PLD)など)、メモリ(たとえば、ランダムアクセスメモリ(たとえば、RAM)、ストレージデバイス(たとえば、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)など)、および他のハードウェアデバイス(たとえば、サウンドカード、ビデオカードなど)などのハードウェアを含む場合がある。コンピューティングデバイス380は、たとえば、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、セットトップボックスなどを含む、プログラマブルプロセッサを有する任意の適切なタイプのコンピューティングデバイスまたはマシンであり得る。いくつかの例では、コンピューティングデバイス380は、単一のマシンを備える場合があるか、または複数の相互接続されたマシン(たとえば、クラスタ内に構成された複数のサーバ)を含む場合がある。コンピューティングデバイス380は、オペレーティングシステム(OS)を実行するか、または含む場合がある。OSは、コンピューティングデバイス380の他の構成要素(たとえば、ソフトウェア、アプリケーションなど)の実行を管理することができ、かつ/またはハードウェア(たとえば、プロセッサ、メモリ、ストレージデバイスなど)へのアクセスを管理することができる。本開示はコンピューティングデバイス380を参照する場合があるが、他の実施形態では、剪定エンジン300は、仮想環境などの他のタイプのコンピューティング環境に位置する場合がある。たとえば、剪定エンジン300は、他の実施形態では、仮想マシン(VM)、コンテナなどに位置する場合がある。
【0026】
上記で説明されたように、ニューラルネットワーク310は、何千または何百万のノードおよび/または重みを含む場合がある。ニューラルネットワーク310を記憶することは、多数のノードおよび/または重みに起因して膨大な量の記憶スペースを使用する場合がある。加えて、ニューラルネットワーク310を実行するために(たとえば、ニューラルネットワーク310を使用して入力データを処理/解析するために)、膨大な量の処理/計算リソースが使用される場合がある。ニューラルネットワーク内の重み/接続および/またはノードの数を削減すること(たとえば、ニューラルネットワークを剪定すること、ニューラルネットワークを希薄化すること)は、上記で説明された問題を軽減することができる。
【0027】
しかしながら、ニューラルネットワークは、概して、ニューラルネットワークが剪定された後に再訓練される。上記で説明されたように、ニューラルネットワークを訓練することは、時間がかかり、処理集約型であり、かつ/または高コストのプロセスであり得る。ニューラルネットワークを訓練するために、ニューラルネットワークのノード間の接続の重みが正確に設定される前に、訓練データ350は何百回または何千回ニューラルネットワークに渡される(たとえば、提供される)場合がある。何百回/何千回(またはそれ以上)ニューラルネットワークを通して訓練データ350を渡すことは、ニューラルネットワークを訓練するために必要とされる時間(たとえば、日、週など)を大幅に増大させる場合がある。加えて、何百回/何千回ニューラルネットワークを通して訓練データ350を渡すことは、かなりの量の処理リソースおよび/または電力を使用する場合もある。
【0028】
一実施形態では、剪定エンジン300は、ニューラルネットワーク310を取得および/または解析することができる。たとえば、剪定エンジン300は、データストア(たとえば、メモリ、ディスクドライブなど)からニューラルネットワーク310を検索および/またはアクセスすることができる。図3に示されたように、ニューラルネットワーク310は、(ニューラルネットワーク310内に円として示された)ノードのセットと、ノードのセットの中のノードを相互接続する(ノード/円の間の線として示された)接続のセットとを含む。ノード間の接続は、重みと呼ばれる場合もある。ニューラルネットワーク310は、元のニューラルネットワーク、参照ニューラルネットワーク、教師ニューラルネットワークなどと呼ばれる場合がある。
【0029】
一実施形態では、剪定エンジン300は、ニューラルネットワーク310(たとえば、第1のニューラルネットワーク)に基づいて、ニューラルネットワーク320(たとえば、第2のニューラルネットワーク)を生成することができる。ニューラルネットワーク320は、ニューラルネットワーク310内にある接続のサブセットを含む場合がある。たとえば、ニューラルネットワーク320は、ニューラルネットワーク310の各層からの接続のサブセットを決定、選択、識別などすることによって生成される場合がある。ニューラルネットワーク310の各層からの接続のサブセットは、ニューラルネットワーク320を生成するために使用される場合がある。ニューラルネットワーク320は、ニューラルネットワーク310内にあるノードのサブセットを含む場合もある。たとえば、ニューラルネットワーク310からの接続のサブセットを選択した後、ニューラルネットワーク320内のいくつかのノードは、接続を介していかなる他のノードにも接続されない場合がある。これらのノードは、ニューラルネットワーク320から取り除かれる場合がある。ニューラルネットワーク内の接続および/またはノードのサブセットを決定、選択、識別などすることは、ニューラルネットワークの剪定、ニューラルネットワークの乱切などと呼ばれる場合がある。
【0030】
一実施形態では、剪定エンジン300は、ニューラルネットワーク310の中間層を解析することによって第2のニューラルネットワークを生成することができる。ニューラルネットワーク310の中間層の各々に対して、剪定エンジン300は、各中間層内の重みのサブセットを決定(たとえば、識別、選択など)することができる。剪定エンジン300は、各中間層からの接続の異なるサブセットを使用して、ニューラルネットワーク320を生成することができる。たとえば、ニューラルネットワーク320は、ニューラルネットワーク310と同じ数の層を有する場合がある。しかしながら、ニューラルネットワーク320は、1つまたは複数の層内の少ない接続を有する場合がある。
【0031】
一実施形態では、剪定エンジン300は、ニューラルネットワーク320を訓練および/または再訓練することなくニューラルネットワーク320を生成することができる。たとえば、剪定エンジン300は、ニューラルネットワーク320を生成するためにいかなる訓練データも使用しない場合がある。剪定エンジン300は、下記でより詳細に説明されるように、ニューラルネットワーク310の異なる層に提供された入力にも続いて、かつニューラルネットワーク310の異なる層によって生成された参照に基づいて、ニューラルネットワーク320を生成することができる。たとえば、ニューラルネットワーク310の各層は、入力(たとえば、入力データ、特徴マップ、前の層の出力など)を受け取ることができ、入力に基づいて出力(たとえば、特徴マップ)を生成することができる。剪定エンジンは、ニューラルネットワーク310の中間層の入力および/または出力を使用して、ニューラルネットワーク320の層内で使用されるべき接続(たとえば、重み)のサブセットを識別することができる。ニューラルネットワーク310の中間層に提供される入力は参照入力と呼ばれる場合があり、ニューラルネットワーク310の中間層によって生成される出力は、参照出力と呼ばれる場合がある。
【0032】
一実施形態では、剪定エンジン300は、同時に(または実質的に同時に)ニューラルネットワーク320の層の各々に対して接続のサブセットを決定することが可能であり得る。上記で説明されたように、剪定エンジン300は、ニューラルネットワーク310の層の参照入力および参照出力のすべてにアクセスすることができる。これにより、剪定エンジン300がニューラルネットワーク320の各中間層に対して接続のサブセットの決定を並列化することが可能になり得る。
【0033】
一実施形態では、剪定エンジン300は、訓練データ350を使用してニューラルネットワーク320を生成することができる。しかしながら、標準的なニューラルネットワーク訓練プロセスと比較すると、剪定エンジン300は、数百回または数千回ニューラルネットワーク320に訓練データ350を提供しない場合がある。代わりに、剪定エンジン300がニューラルネットワーク320に訓練データ350を渡すことができる回数は、ニューラルネットワーク310を訓練するためにニューラルネットワーク310に訓練データ350が提供された回数よりも少ない場合がある。たとえば、訓練データ350は、1回または2回ニューラルネットワーク320に渡される場合がある。剪定エンジンは、下記でより詳細に説明されるように、ニューラルネットワーク310の異なる層によって生成された参照出力に基づいて、ニューラルネットワーク320を生成することができる。
【0034】
一実施形態では、ニューラルネットワーク320は、層ごとに生成される場合がある。たとえば、剪定エンジン300は、ニューラルネットワーク320に提供された入力に基づいて、第1の層のためのカーネル/フィルタを生成することができる。その入力は、第1の参照出力特徴マップ(たとえば、ニューラルネットワーク310によって生成された特徴マップ)に基づいて、第1のフィルタを生成するために使用される場合がある。入力は訓練データ350であり得る。第1のフィルタの出力は、第2のフィルタを生成するために使用される場合がある。たとえば、剪定エンジン300は、第2の参照出力特徴マップおよび第1のフィルタの出力に基づいて、第2のフィルタを決定することができる。したがって、ニューラルネットワーク320のフィルタは、層ごとに順次生成される場合がある。
【0035】
上記で説明されたように、ニューラルネットワーク320は、ニューラルネットワーク310、ニューラルネットワーク310の中間層への参照入力、およびニューラルネットワーク310の中間層の参照出力のうちの1つまたは複数に基づいて生成される場合がある。一実施形態では、ニューラルネットワーク320は、下記の式(1)に基づいて生成される場合がある。
【数1】
(1)
式(1)は、ニューラルネットワーク320の中間層の各々を決定(たとえば、選択、識別、計算など)するときに使用および/または適用される場合がある。たとえば、式(1)は、中間層(たとえば、畳み込み層)の接続/重みを決定するために適用/使用される場合がある。
【0036】
一実施形態では、式(1)の項Xは、ニューラルネットワーク310の中間層に提供された1つまたは複数の特徴マップ(たとえば、1つまたは複数の参照入力)を表すことができる。上記で説明されたように、ニューラルネットワーク320は、ニューラルネットワーク310と同じ数の層を有する場合がある。ニューラルネットワーク320の各中間層は、ニューラルネットワーク310の層に対応する場合があり、かつ/またはそれと関連付けられる場合がある。ニューラルネットワーク310の層に提供された同じ特徴マップ(たとえば、X)は、ニューラルネットワーク320の対応する層の接続/重みを決定するために使用される場合がある。1つまたは複数の特徴マップXは、寸法(たとえば、形状)[N、H、W、C]を有する場合があり、ここで、Hは高さであり、Wは幅であり、Cは入力チャネルの数であり、Nはサンプルの数(たとえば、特徴マップの数)である。たとえば、複数の特徴マップ(たとえば、N個の特徴マップ)がXに含まれる場合がある。特徴マップの各々は、3つのチャネル(たとえば、C=3)、すなわち赤色用のチャネル、青色用のチャネル、および青色用のチャネルを有する場合がある。
【0037】
一実施形態では、Yはニューラルネットワーク310の対応する層によって生成された参照出力であり得る。たとえば、Yは、ニューラルネットワーク310の対応する層に提供された特徴マップXに基づいて、ニューラルネットワーク310の対応する層によって生成された1つまたは複数の特徴マップを表すことができる。1つまたは複数の特徴マップYは、寸法(たとえば、形状)[N、H、W、K]を有する場合があり、ここで、Hは高さであり、Wは幅であり、Kは出力チャネルの数であり、Nはサンプルの数(たとえば、特徴マップの数)である。
【0038】
一実施形態では、Wは、ニューラルネットワーク320の層のために決定されるべきフィルタ(たとえば、接続/重みを含む1つまたは複数のカーネル)である。たとえば、Wは、ニューラルネットワーク320の対応する層に含まれるフィルタであり得る。したがって、式(1)は、Y(たとえば、参照出力)とフィルタWが入力Xに適用されたときの結果との間の差を最小化するW(たとえば、フィルタ)を剪定エンジン300が取得(たとえば、決定、計算など)していることを示すことができる。Wは寸法(たとえば、形状)[R、S、C、K]を有する場合があり、ここで、Rは高さであり、Sは幅であり、Cは入力チャネルの数であり、Kは出力チャネルの数である。フィルタWは、畳み込み演算(たとえば、式(1)の中の「*」演算)における入力Xに適用される場合がある。
【0039】
式(1)は、K個の独立した問題、すなわち各出力チャネルKに対して1つの問題に表現(たとえば、分解、解体、変換、単純化など)することができる。式(2)は、K個の独立した問題の各々を表すために使用される場合がある。
【数2】
(2)
上記で説明されたように、式(1)の項Xは、ニューラルネットワーク310の中間層に提供された1つまたは複数の特徴マップ(たとえば、1つまたは複数の参照入力)を表すことができる。項YKは、ニューラルネットワーク310の対応する層によって生成された、出力チャネルKのための参照出力を表すことができる。WKは、ニューラルネットワーク320の層用の出力チャネルKのために決定されるべきフィルタ(たとえば、接続/重みを含む1つまたは複数のカーネル)である。WKは寸法(たとえば、形状)[R、S、C]を有する場合があり、ここで、Rは高さであり、Sは幅であり、Cは入力チャネルの数である。
【0040】
畳み込み演算(たとえば、「*」)は、R×S個の行列乗算問題、すなわち下記の式(3)に示されたC個の変数の各々に低減される場合がある。
【数3】
(3)
r,sは、寸法[N、H、W、C]を有する特徴マップであり得る。上記で説明されたように、Hは高さであり、Wは幅であり、Cは入力チャネルの数であり、Nはサンプルの数(たとえば、特徴マップの数)である。Xr,sは、H軸に沿ってXをrだけシフトし、W軸に沿ってXをsだけシフトすることによって取得(たとえば、生成、計算、決定など)される場合がある。
【0041】
式(3)の項は、下記の式(4)を生成するために修正される場合がある。
【数4】
(4)
式(3)に戻ると、wr,sは、式(4)のベクトルwを形成するために積み重ねられる場合がある。ベクトルwはサイズR×S×Cを有する場合がある。加えて、式(3)のXr,sは、式(4)の行列
【数5】
を取得(たとえば、生成)するために積み重ねられる場合がある。行列
【数6】
は、サイズ/寸法
【数7】
を有する場合がある。たとえば、行列
【数8】
は、異なる特徴マップXr,sの各々を取り、それらを互いに積み重ねること(たとえば、第1の特徴マップXr,sの下に第2の特徴マップXr,sが積み重ねられ、第2の特徴マップXr,sの下に第3の特徴マップXr,sが積み重ねられるなど)によって取得される場合がある。式(3)のYKは、式(4)のベクトルYKを取得するために平板化される場合がある。式(4)を使用すると、式(3)の畳み込み演算が行列乗算演算に変換されることが可能になり得る。
【0042】
式(4)は、式(5a)、(5b)、および(5c)に示されたようにさらに修正することができる。
【数9】
(5a)
(5b)
(5c)
式(5a)に示されたように、
【数10】

【数11】
のように書き直される場合がある。tr()演算は、行列の主対角線上に位置する値の合計(たとえば、行列の左上から始まり右下に向かう値の合計)を決定するトレース演算を参照することができる。式(5a)の中の「T」は、式(5a)の中の1つまたは複数の項の転置行列を表す。式(5a)の左辺を展開すると、式(5b)になる。たとえば、式(5a)の左辺を展開するために、異なる項が互いに乗算され、加算/減算される場合がある。式(5b)は、式(5C)に示されたようにさらに単純化することができる。
【0043】
上記の式(5c)を参照すると、項
【数12】
は、寸法(たとえば、形状)[RSC、RSC]を有する行列であり得、ここで、RSCは行列(たとえば、RSC×RSCの行列)の高さおよび幅である。項
【数13】
は、wについて解くときに使用されない場合がある(たとえば、無視される場合がある)定数項であり得る。項
【数14】
は、式(5c)の中で項
【数15】
に置き換えられる場合があり、項bkは項
【数16】
に置き換えられる場合がある。
【0044】
上記の式(1)~(5c)に基づいて、剪定エンジン300は項wについて解くことができる。たとえば、剪定エンジン300は、回帰分析、線形回帰、および/または他の統計的回帰を実行して、項wについて解くことができる。項wについて解くと、ニューラルネットワーク320の中間層用のカーネルがもたらされる。上記で説明されたように、剪定エンジン300は、同時および/または順次(たとえば、層ごとに)各中間層に対してカーネル(たとえば、1つまたは複数のフィルタ、畳み込みフィルタなど)を決定(たとえば、計算、決定、取得など)することができる。
【0045】
一実施形態では、式(1)~sにより、剪定エンジン300が、いかなる訓練データも使用せずにニューラルネットワーク320を決定する(たとえば、ニューラルネットワーク320のカーネル/フィルタ内で使用される重みを決定する)ことが可能になり得る。たとえば、剪定エンジン300は、ニューラルネットワーク310(たとえば、参照ニューラルネットワーク、教師ニューラルネットワークなど)によって生成された入力および/または出力を使用して、カーネル/フィルタを生成することができる。別の実施形態では、剪定エンジン350は、層ごとに順次ニューラルネットワーク320の中間層用のカーネル/フィルタを生成することができる(たとえば、第1の中間層用のカー熱が生成され、次いで、第2の中間層用のカーネルが生成される、など)。層ごとにカーネルを生成すると、数百回または数千回ニューラルネットワークを通して訓練データを渡すことができる一般的な訓練プロセスと比較すると、少ない回数(たとえば、1~2回)剪定エンジン300がニューラルネットワーク320を通して訓練データ350を渡すことが可能になり得る。
【0046】
剪定エンジン300は、剪定された(たとえば、希薄化された)ニューラルネットワーク(たとえば、ニューラルネットワーク320)を作成するために使用され得る、時間、労力、計算/処理リソースなどを減少させることができる。訓練データ350を使用することを控えること(たとえば、訓練データ350を全く使用しないこと)により、または少ない回数(たとえば、1~2回)訓練データ350を使用することにより、剪定エンジン300は、ニューラルネットワーク320を生成するときに時間および/またはリソースを節約することができる。たとえば、剪定エンジン300は、数百回または数千回ニューラルネットワークを通して訓練データを渡すことなく、ニューラルネットワーク320を生成することが可能であり得る。これにより、効率が大幅に向上し、かつ/またはニューラルネットワークを剪定するために取られる時間が削減され得る。
【0047】
図4は、本開示の1つまたは複数の実施形態による、深層ニューラルネットワークを剪定するための例示的なプロセス400を示すフロー図である。プロセス400は、ハードウェア(たとえば、回路、専用ロジック、プログラマブルロジック、プロセッサ、処理デバイス、中央処理装置(CPU)、システムオンチップ(SoC)など)、ソフトウェア(たとえば、処理デバイス上で動作する/実行される命令)、ファームウェア(たとえば、マイクロコード)、またはそれらの組合せを備える場合があるロジックを処理することによって実行される場合がある。いくつかの実施形態では、プロセス400は、コンピューティングデバイス(たとえば、図3に示されたコンピューティングデバイス380)および剪定エンジン(たとえば、図3に示された剪定エンジン300)のうちの1つまたは複数によって実行される場合がある。
【0048】
図4を参照すると、プロセス400は、様々な実施形態によって使用される例示的な機能を示す。具体的な機能ブロック(「ブロック」)がプロセス400に開示されているが、そのようなブロックは例である。すなわち、実施形態は、プロセス400に列挙された様々な他のブロックまたはブロックの変形形態を実行することにうまく適合している。プロセス400内のブロックは、提示された順序とは異なる順序で実行される場合があること、およびプロセス400内のブロックのすべてが実行されない場合があることを諒解されたい。加えて、図4に示されたブロックの間に(図4に示されていない)さらなる他のブロックが挿入される場合がある。
【0049】
プロセス400がブロック405から始まり、そこでプロセス400は第1のニューラルネットワークを取得する。第1のニューラルネットワークは、ニューラルネットワークのサイズを低減するために、かつ/または使用される計算/処理リソースの量を低減するために、剪定(たとえば、希薄化)されるべきニューラルネットワークであり得る。ブロック410において、プロセス400は、第1のニューラルネットワークに基づいて第2のニューラルネットワークを生成することができる。
【0050】
ブロック410は、さらなるブロック411、412、および413を含む。ブロック411において、プロセス400は、第1のニューラルネットワークの1つまたは複数の中間層を解析することができる。たとえば、プロセス400は、第1のニューラルネットワークの中間層に提供された入力(たとえば、参照入力特徴マップ)および/または中間層によって生成された出力(たとえば、参照出力特徴マップ)を取得することができる。ブロック412において、プロセス400は、各中間層に対して重みのサブセットを決定(たとえば、識別、選択、計算など)することができる。たとえば、第1のニューラルネットワークの各層は、重みのセットを含む場合がある。プロセス400は、各層内の重みのサブセットを識別して、第2のニューラルネットワークの対応する層を決定することができる。プロセス400は、上記で説明されたように、様々な行列を積み重ね、平板化、および/または処理して、各層に対する重みのセットを識別することができる。重みのサブセットを選択することは、層用のフィルタを生成することと呼ばれる場合がある。一実施形態では、プロセス400は、すべての層に対して同時に、各層に対する重みのサブセットを識別することができる。たとえば、プロセス400は、第1のニューラルネットワークの各層によって生成された入力および/または出力にアクセスすることができる。これにより、プロセス400が第2のニューラルネットワーク内の対応する各層に対してフィルタを同時に生成する(同時にすべての層に対するwについて解く)ことが可能になり得る。別の実施形態では、プロセス400は、順次各層のための各フィルタを生成することができる。たとえば、プロセス400は、現在の層のための現在のフィルタを生成した後に、次の層のための次のフィルタを生成することができる。ブロック413において、プロセス400は、各層に対して識別された重みのサブセットに基づいて第2のニューラルネットワークを生成することができる。
【0051】
図5は、いくつかの実施形態による、例示的なコンピューティングデバイス500のブロック図である。コンピューティングデバイス500は、LAN、イントラネット、エクストラネット、および/またはインターネットにおいて他のコンピューティングデバイスに接続される場合がある。コンピューティングデバイスは、クライアントサーバネットワーク環境内のサーバマシンの資格で、またはピアツーピアネットワーク環境内のクライアントの資格で動作することができる。コンピューティングデバイスは、パーソナルコンピュータ(PC)、セットトップボックス(STB)、サーバ、ネットワークルータ、スイッチもしくはブリッジ、またはそのマシンによって取られるべきアクションを指定する命令のセットを(順次もしくは他の方法で)実行することが可能な任意のマシンによって提供される場合がある。さらに、単一のコンピューティングデバイスが図示されているが、「コンピューティングデバイス」という用語はまた、本明細書で説明された方法を実行するために、命令のセット(または複数のセット)を単独または一緒に実行するコンピューティングデバイスの任意の集合を含むように受け取られるべきである。
【0052】
例示的なコンピューティングデバイス500は、処理デバイス(たとえば、汎用プロセッサ、プログラマブルロジックデバイス(PLD)など)502と、メインメモリ504(たとえば、同期式ダイナミックランダムアクセスメモリ(DRAM)、読取り専用メモリ(ROM))と、スタティックメモリ506(たとえば、フラッシュメモリ)と、データストレージデバイス518とを含む場合があり、それらはバス530を介して互いに通信することができる。
【0053】
処理デバイス502は、マイクロプロセッサ、中央処理装置などの1つまたは複数の汎用処理デバイスによって提供される場合がある。例示的な例では、処理デバイス502は、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、または他の命令セットを実装するプロセッサもしくは命令セットの組合せを実装するプロセッサを備える場合がある。処理デバイス502はまた、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサなどを備える場合がある。処理デバイス502は、本明細書で説明された動作およびステップを実行するために、本開示の1つまたは複数の態様に従って、本明細書に記載された動作を実行するように構成される場合がある。
【0054】
コンピューティングデバイス500はさらに、ネットワーク520と通信することができるネットワークインターフェースデバイス508を含む場合がある。コンピューティングデバイス500はまた、ビデオディスプレイユニット510(たとえば、液晶ディスプレイ(LCD)または陰極線管(CRT))と、英数字入力デバイス512(たとえば、キーボード)と、カーソル制御デバイス514(たとえば、マウス)と、音響信号生成デバイス516(たとえば、スピーカ)とを含む場合がある。一実施形態では、ビデオディスプレイユニット510、英数字入力デバイス512、およびカーソル制御デバイス514は、単一の構成要素またはデバイス(たとえば、LCDタッチスクリーン)の中に組み合わされる場合がある。
【0055】
データストレージデバイス518は、剪定エンジン命令525、たとえば、本開示の1つまたは複数の態様に従って本明細書に記載された動作を実行するための命令の1つまたは複数のセットが記憶され得るコンピュータ可読記憶媒体528を含む場合がある。剪定エンジン命令525はまた、コンピューティングデバイス500、メインメモリ504、およびコンピュータ可読媒体も構成する処理デバイス502によるそれらの実行中に、完全にまたは少なくとも部分的に、メインメモリ504および/または処理デバイス502内に存在する場合がある。剪定エンジン命令525はさらに、ネットワークインターフェースデバイス508を介してネットワーク520上で送信または受信される場合がある。
【0056】
コンピュータ可読記憶媒体528は単一の媒体であるように例示的な例では示されているが、「コンピュータ可読記憶媒体」という用語は、命令の1つまたは複数のセットを記憶する単一の媒体または複数の媒体(たとえば、集中型データベースもしくは分散型データベースならびに/または関連するキャッシュおよびサーバ)を含むように受け取られるべきである。「コンピュータ可読記憶媒体」という用語はまた、マシンによる実行のための命令のセットを記憶、符号化、または搬送することが可能であり、本明細書に記載された方法をマシンに実行させる任意の媒体を含むように受け取られるべきである。「コンピュータ可読記憶媒体」という用語は、したがってソリッドステートメモリ、光学媒体、および磁気媒体を含むが、それらに限定されないように受け取られるべきである。
【0057】
別段に具体的に明記されない限り、「取得」、「生成」、「解析」、「決定」、「積み重ね、「平板化」などの用語は、コンピューティングデバイスのレジスタおよびメモリ内の物理(電子)量として表されるデータを操作し、コンピューティングデバイスのメモリもしくはレジスタ、または他のそのような情報を記憶、送信、もしくは表示するデバイス内の物理量と同様に表される他のデータに変換する、コンピューティングデバイスによって実行または実装されるアクションおよびプロセスを指す。また、本明細書で使用される「第1の」、「第2の」、「第3の」、「第4の」などの用語は、異なる要素の間を区別するラベルを意味し、必ずしもそれらの数字指定による順序の意味を有するとは限らない場合がある。
【0058】
本明細書に記載された例はまた、本明細書に記載された動作を実行するための装置に関係する。この装置は、必要な目的のために特別に構築される場合があるか、またはそれは、コンピューティングデバイスに記憶されたコンピュータプログラムによって選択的にプログラムされた汎用コンピューティングデバイスを備える場合がある。そのようなコンピュータプログラムは、コンピュータ可読非一時的記憶媒体に記憶される場合がある。
【0059】
本明細書に記載された方法および例示的な例は、任意の特定のコンピュータまたは他の装置に本来関係しない。様々な汎用システムは、本明細書に記載された教示に従って使用される場合があるか、またはそれは、必要な方法ステップを実行するためにより特化した装置を構築することが好都合であると証明する場合がある。様々なこれらのシステムに必要な構造は、上記の説明に記載されたように明らかになる。
【0060】
上記の説明は、例示的なものであり、限定的なものではない。本開示は具体的で例示的な例を参照して記載されているが、本開示は記載された例に限定されないことが認識されよう。本開示の範囲は、特許請求の範囲が資格を与えられた均等物の全範囲とともに以下の特許請求の範囲を参照して決定されるべきである。
【0061】
本明細書で使用される単数形「a」、「an」、および「the」は、特に文脈が明確に示さない限り、複数形も含むものである。「備える」、「備えている」、「含む」および/または「含んでいる」という用語は、本明細書で使用されると、記載された特徴、整数、ステップ、動作、構成要素、および/または構成部品の存在を明示し、1つまたは複数の他の特徴、整数、ステップ、動作、構成要素、構成部品、および/またはそれらの組合せの存在または追加を排除しないことがさらに理解されよう。したがって、本明細書で使用される述語は、特定の実施形態を記載するためにすぎず、限定するものではない。
【0062】
いくつかの代替の実装形態では、示された機能/働きは図の中で示された順序以外で発生する場合があることも留意されるべきである。例えば、連続して示された2つの図は、関与する機能/働きに応じて、実際には実質的に並行して実行される場合があるか、または時々逆の順序で実行される場合がある。
【0063】
方法の動作は特定の順序で記載されたが、記載された動作の間で他の動作が実行される場合があり、記載された動作は、それらがわずかに異なる時間に発生するように調整される場合があるか、または記載された動作は、処理に関連付けられた様々な間隔で処理動作の発生を可能にするシステム内で分散される場合があることが理解されるべきである。
【0064】
様々なユニット、回路、または他の構成要素は、1つまたは複数のタスクを実行するように「構成される」または「構成可能である」として記載または特許請求される場合がある。そのようなコンテキストでは、「構成される」または「構成可能である」という語句は、ユニット/回路/構成要素が動作中に1つまたは複数のタスクを実行する構造(たとえば、回路)を含むことを示すことによって構造を暗示するために使用される。そのため、ユニット/回路/構成要素は、指定されたユニット/回路/構成要素が現在動作可能でない(たとえば、オンでない)ときでも、タスクを実行するように構成される、またはタスクを実行するように構成可能であると言うことができる。「構成される」または「構成可能である」という言葉とともに使用されるユニット/回路/構成要素は、ハードウェア、たとえば、回路、動作を実施するように実行可能なプログラム命令を記憶するメモリなどを含む。ユニット/回路/構成要素が1つもしくは複数のタスク実行するように「構成される」、または1つもしくは複数のタスク実行するように「構成可能である」と列挙することは、そのユニット/回路/構成要素に対して米国特許法112第6パラグラフを行使するものではない。さらに、「構成される」または「構成可能である」は、問題のタスクを実行することが可能な方式で動作するように、ソフトウェアおよび/またはファームウェア(たとえば、ソフトウェアを実行するFPGAもしくは汎用プロセッサ)によって操作される一般的な構造(たとえば、一般的な回路)を含むことができる。「構成される」はまた、1つまたは複数のタスクを実施または実行するように適合されたデバイス(たとえば、集積回路)を製造するように、製造プロセス(たとえば、半導体製造設備)を適合することを含む場合がある。「構成可能である」は、明らかに、開示された機能を実行するように構成されるべきプログラムされていないデバイスに能力を授与するプログラムされた媒体が添付されていない限り、ブランク媒体、プログラムされていないプロセッサもしくはプログラムされていない一般的なコンピュータもしくはプログラムされていないプログラマブルロジックデバイス、プログラマブルゲートアレイ、または他のプログラムされていないデバイスに適用するものではない。
【0065】
説明目的の上記の記述は、具体的な実施形態を参照して記載されている。しかしながら、上記の例示的な説明は、本発明を開示されたそのままの形態に徹底または限定するものではない。上記の教示に照らして、多くの修正形態または変形形態が可能である。実施形態は、それにより、考察された特定の使用法に適合され得るように当業者が実施形態および様々な修正形態を最も良く利用することを可能にするために、実施形態の原理およびその実際的な適用例を最も良く説明するために選択および記載される。したがって、本実施形態は、例示的であって限定的ではないと見なされるべきであり、本発明は、本明細書に与えられた詳細に限定されるべきではなく、添付特許請求の範囲の範囲および均等物において修正されてもよい。
図1
図2
図3
図4
図5