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

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

▶ グーグル インコーポレイテッドの特許一覧

特許7578742畳み込みニューラルネットワークのためのスーパーピクセル法
<>
  • 特許-畳み込みニューラルネットワークのためのスーパーピクセル法 図1A
  • 特許-畳み込みニューラルネットワークのためのスーパーピクセル法 図1B
  • 特許-畳み込みニューラルネットワークのためのスーパーピクセル法 図2
  • 特許-畳み込みニューラルネットワークのためのスーパーピクセル法 図3
  • 特許-畳み込みニューラルネットワークのためのスーパーピクセル法 図4
  • 特許-畳み込みニューラルネットワークのためのスーパーピクセル法 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-28
(45)【発行日】2024-11-06
(54)【発明の名称】畳み込みニューラルネットワークのためのスーパーピクセル法
(51)【国際特許分類】
   G06N 3/0464 20230101AFI20241029BHJP
   G06F 17/10 20060101ALI20241029BHJP
【FI】
G06N3/0464
G06F17/10 A
【請求項の数】 20
【外国語出願】
(21)【出願番号】P 2023036865
(22)【出願日】2023-03-09
(62)【分割の表示】P 2021156865の分割
【原出願日】2017-07-13
(65)【公開番号】P2023078247
(43)【公開日】2023-06-06
【審査請求日】2023-04-06
(31)【優先権主張番号】15/209,658
(32)【優先日】2016-07-13
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ヤング,レジナルド ・クリフォード
(72)【発明者】
【氏名】ロス,ジョナサン
【審査官】藤原 敬利
(56)【参考文献】
【文献】特表2018-506785(JP,A)
【文献】特開2017-091479(JP,A)
【文献】特開2017-068608(JP,A)
【文献】特表2017-520864(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/10
G06N 3/00 -99/00
G06T 7/00 - 7/90
G06V 10/00 -20/90
(57)【特許請求の範囲】
【請求項1】
コンピュータによって実施される、畳み込みニューラルネットワーク層の計算をより効率的に実行するための方法であって、前記畳み込みニューラルネットワーク層は、複数の次元を有する入力テンソルを受け1つ以上の畳み込みニューラルネットワーク層ウェイト行列を用いて前記受けた入力テンソルを処理することにより前記複数の次元を有する出力テンソルを生成するように構成されており、前記方法は、
前記複数の次元を有する前記入力テンソルを受けるステップを含み、前記入力テンソルは、前記複数の次元のサブセットに沿う第1の数の入力と、前記複数の次元のうちの特定の1つの次元に沿う第2の数の入力とを含み、前記複数の次元のうちの前記特定の1つの次元は、前記入力テンソルの深さの大きさを表し、前記方法はさらに、
前記複数の次元を有する修正された入力テンソルを生成するステップを含み、前記修正された入力テンソルは、前記複数の次元の前記サブセットに沿う前記第1の数以下の第3の数の入力と、前記次元のうちの前記特定の1つの次元に沿う前記第2の数以上の第4の数の入力とを有し、前記生成するステップは、
前記入力テンソルの前記第1の数の入力のうちの2つ以上をグループ化するステップと、
前記グループ化された第1の数の入力の空間の大きさを深さの大きさに変換することによって、前記複数の次元の前記サブセットにおけるスーパー入力を生成することにより、空間の大きさよりも深さの大きさを優先して前記畳み込みニューラルネットワーク層の計算の効率を高めるステップとを含み、前記方法はさらに、
1つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得するステップを含み、(i)前記修正されたウェイト行列は、前記複数の次元を有する前記修正された入力テンソルに対して作用することにより、前記複数の次元を有する変換された出力テンソルを生成し、(ii)前記変換された出力テンソルは、前記複数の次元の前記サブセットに沿う前記第1の数以下の第3の数の出力と、前記次元のうちの前記特定の1つの次元に沿う前記第2の数以下の第4の数の出力とを有し、前記方法はさらに、
前記修正された入力テンソルに対し、前記修正されたウェイト行列を有する修正された畳み込みニューラルネットワーク層の計算を実行することにより、前記複数の次元の前記変換された出力テンソルを生成するステップを含み、前記変換された出力テンソルは、前記入力テンソルを処理するときに前記畳み込みニューラルネットワーク層によって生成される出力に対応する前記出力テンソルを含む、方法。
【請求項2】
前記修正された入力テンソルの前記第3の数の入力は、前記入力テンソルの前記第1の数の入力を自然数Nで割ったもの以上の最小整数に等しく、前記修正された入力テンソルの前記第4の数の入力は、前記入力テンソルの前記第2の数の入力にNを掛けたものに等しい、請求項1に記載の方法。
【請求項3】
前記変換された出力テンソルの前記第3の数の出力は、前記出力テンソルの第1の数の出力を自然数Pで割ったもの以上の最小整数に等しく、前記変換された出力テンソルの前記第4の数の出力は、前記出力テンソルの第2の数の出力にPを掛けたものに等しい、請求項2に記載の方法。
【請求項4】
前記畳み込みニューラルネットワーク層は、前記複数の次元の前記サブセットのストライドSを含み、ストライドSと、出力テンソルと、変換された出力テンソルとの関係は、前記変換された出力テンソルの前記第3の数の出力=ceiling(前記第1の数の入力/NS)によって示され、ceiling(A)は、A以上の最小整数を表す、請求項3に記載の方法。
【請求項5】
前記出力テンソルは、前記第1のの入力と等しい前記第1の数の出力を表し、前記変換された出力テンソルは、第3の数のスーパー出力を表し、各スーパー出力は前記出力テンソルの複数の第1の出力を含む、請求項3または4に記載の方法。
【請求項6】
前記出力テンソルの前記複数の第1の出力の数、出数Pに等しい、請求項5に記載の方法。
【請求項7】
前記出力テンソルの前記複数の第1の出力の数は、出数Nに等しい、請求項に記載の方法。
【請求項8】
前記修正された入力テンソルに対する前記修正されたウェイト行列の作用は、前記入力テンソルに対する前記畳み込みニューラルネットワーク層ウェイト行列の作用と同等である、請求項1~7のいずれか1項に記載の方法。
【請求項9】
前記修正されたウェイト行列のエントリは、1つ以上の畳み込みニューラルネットワーク層ウェイト行列を含む、請求項1~8のいずれか1項に記載の方法。
【請求項10】
前記修正されたウェイト行列は、バンド構造を有する行列を含む、請求項1~9のいずれか1項に記載の方法。
【請求項11】
前記畳み込みニューラルネットワーク層はプーリングサブ層を含む、請求項1~10のいずれか1項に記載の方法。
【請求項12】
前記方法は、前記プーリングサブ層を、前記変換された入力テンソルに対するストライド処理に置き換えるステップをさらに含む、請求項11に記載の方法。
【請求項13】
前記畳み込みニューラルネットワーク層はカーネルストライド処理を含み、前記方法は、前記変換された入力テンソルおよび前記修正されたウェイト行列に基づいて、効率的なカーネルストライド処理を実現するステップをさらに含む、請求項1~12のいずれか1項に記載の方法。
【請求項14】
前記出力テンソルは、第1の数の出力を表し、前記変換された出力テンソルは、第3の数のスーパー出力を表し、各スーパー出力は前記出力テンソルの前記複数の第1の出力を含み、
前記出力テンソルの前記複数の第1の出力のうちの前記第1の数の出力は、前記畳み込みニューラルネットワーク層ウェイト行列の次元に依存する、請求項1または2に記載の方法。
【請求項15】
前記出力テンソルは、第1の数の出力を表し、前記変換された出力テンソルは、前記第3の数のスーパー出力を表し、各スーパー出力は複数の第1の出力を含み、
前記複数の第1の出力のうちの第1の数の出力は、(i)前記畳み込みニューラルネットワーク層のアーキテクチャ、(ii)前記畳み込みニューラルネットワーク層を含むニューラルネットワークモデルのアーキテクチャ、または(iii)前記畳み込みニューラルネットワーク層を実現する装置、のうちの1つ以上に依存する、請求項1または2に記載の方法。
【請求項16】
前記1つ以上の畳み込みニューラルネットワーク層ウェイト行列の前記修正は、ソフトウェアのみの修正である、請求項1~15のいずれか1項に記載の方法。
【請求項17】
前記1つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得するステップは、
1つ以上の畳み込みニューラルネットワーク層ウェイト行列を受けるステップを含み、前記畳み込みニューラルネットワーク層ウェイト行列は、前記第1の数の入力に対して作用する第1の数のカーネル要素を含み、前記1つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得するステップはさらに、
前記1つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を生成するステップを含み、前記生成するステップは、前記畳み込みニューラルネットワーク層ウェイト行列における前記第1の数のカーネル要素を減じることにより、前記スーパー入力に対して作用する第2の数のカーネル要素を生成するステップを含み、前記修正されたウェイト行列は、前記修正された入力テンソルに対して作用することにより、前記変換された出力テンソルを生成し、前記変換された出力テンソルは、前記複数の次元の前記サブセットに沿う前記第1の数以下前記3の数の出力と、前記次元のうちの前記特定の1つの次元に沿う前記第2の数以上の前記第4の数の出力とを有する、請求項1~16のいずれか1項に記載の方法。
【請求項18】
1つ以上のコンピュータと1つ以上の記憶装置とを備えるシステムであって、前記1つ以上の記憶装置は、前記1つ以上のコンピュータによって実行されると前記1つ以上のコンピュータに動作を実行させる演算可能な命令を格納し、前記動作は、畳み込みニューラルネットワーク層の計算をより効率的に実行するための動作であり、前記畳み込みニューラルネットワーク層は、複数の次元を有する入力テンソルを受け1つ以上の畳み込みニューラルネットワーク層ウェイト行列を用いて前記受けた入力テンソルを処理することにより前記複数の次元を有する出力テンソルを生成するように構成されており、前記動作は、
前記複数の次元を有する前記入力テンソルを受けることを含み、前記入力テンソルは、前記複数の次元のサブセットに沿う第1の数の入力と、前記複数の次元のうちの特定の1つの次元に沿う第2の数の入力とを含み、前記複数の次元のうちの前記特定の1つの次元は、前記入力テンソルの深さの大きさを表し、前記動作はさらに、
前記複数の次元を有する修正された入力テンソルを生成することを含み、前記修正された入力テンソルは、前記複数の次元の前記サブセットに沿う前記第1の数以下の第3の数の入力と、前記次元のうちの前記特定の1つの次元に沿う前記第2の数以上の第4の数の入力とを有し、前記生成することは、
前記入力テンソルの前記第1の数の入力のうちの2つ以上をグループ化することと、
前記グループ化された第1の数の入力の空間の大きさを深さの大きさに変換することによって、前記複数の次元の前記サブセットにおけるスーパー入力を生成することにより、空間の大きさよりも深さの大きさを優先して前記畳み込みニューラルネットワーク層の計算の効率を高めることとを含み、前記動作はさらに、
1つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得することを含み、(i)前記修正されたウェイト行列は、前記複数の次元を有する前記修正された入力テンソルに対して作用することにより、前記複数の次元を有する変換された出力テンソルを生成し、(ii)前記変換された出力テンソルは、前記複数の次元の前記サブセットに沿う前記第1の数以下の前記第3の数の出力と、前記次元のうちの前記特定の1つの次元に沿う前記第2の数以下の第4の数の出力とを有し、前記動作はさらに、
前記修正された入力テンソルに対し、前記修正されたウェイト行列を有する修正された畳み込みニューラルネットワーク層の計算を実行することにより、前記複数の次元の前記変換された出力テンソルを生成することを含み、前記変換された出力テンソルは、前記入力テンソルを処理するときに前記畳み込みニューラルネットワーク層によって生成される出力に対応する前記出力テンソルを含む、システム。
【請求項19】
前記修正された入力テンソルの前記第3の数の入力は、前記入力テンソルの前記第1の数の入力を自然数Nで割ったもの以上の最小整数に等しく、前記修正された入力テンソルの前記第4の数の入力は、前記入力テンソルの前記第2の数の入力にNを掛けたものに等しい、請求項18に記載のシステム。
【請求項20】
前記1つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得することは、
1つ以上の畳み込みニューラルネットワーク層ウェイト行列を受けることを含み、前記畳み込みニューラルネットワーク層ウェイト行列は、前記第1の数の入力に対して作用する第1の数のカーネル要素を含み、前記1つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得することはさらに、
前記1つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を生成することを含み、前記生成することは、前記畳み込みニューラルネットワーク層ウェイト行列における前記第1の数のカーネル要素を減じることにより、前記スーパー入力に対して作用する第2の数のカーネル要素を生成することを含み、前記修正されたウェイト行列は、前記修正された入力テンソルに対して作用することにより、前記変換された出力テンソルを生成し、前記変換された出力テンソルは、前記複数の次元の前記サブセットに沿う前記第1の数以下の前記第3の数の出力と、前記次元のうちの前記特定の1つの次元に沿う前記第2の数以上の前記第4の数の出力とを有する、請求項18または19に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
背景
本明細書は、入力をニューラルネットワークの層を通して処理することにより出力を生成することに関する。
【背景技術】
【0002】
ニューラルネットワークは、受けた入力に対する出力を予測するために非線形ユニットからなる1つ以上の層を用いる機械学習モデルである。ニューラルネットワークの中には、出力層に加えて1つ以上の隠れ層を含むものがある。各隠れ層の出力は、ネットワーク内の別の層、たとえば次の隠れ層または出力層への入力として使用される。ネットワークの各層は、各組のパラメータの現在の値に従い、受けた入力から出力を生成する。
【発明の概要】
【課題を解決するための手段】
【0003】
概要
概して、本明細書に記載の主題の1つの革新的な側面は、畳み込みニューラルネットワーク(convolutional neural network)層の計算をより効率的に実行するための方法において実現することができる。この畳み込みニューラルネットワーク層は、X×Y×Z入力テンソルを受け1つ以上の畳み込みニューラルネットワーク層ウェイト行列を用いて上記受けた入力テンソルを処理することによりU×V×W出力テンソルを生成するように構成されている。いくつかの側面において、この方法は、X×Y×Z入力テンソルをX’×Y’×Z’入力テンソルに変換するステップを含み、X’はX以下、Y’はY以下、Z’はZ以上であり、この方法はさらに、1つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得するステップを含み、(i)修正されたウェイト行列は、X’×Y’×Z’入力テンソルに対して作用することにより、U’×V’×W’出力テンソルを生成し、(ii)U’×V’×W’出力テンソルは、変換されたU×V×W出力テンソルを含み、U’はU以下、V’はV以下、W’はW以上であり、この方法はさらに、修正されたウェイト行列を用いてX’×Y’×Z’入力テンソルを処理することによりU’×V’×W’出力テンソルを生成するステップを含み、U’×V’×W’出力テンソルはU×V×W出力テンソルを含む。
【0004】
この側面のその他の実施形態は、対応するコンピュータシステム、装置、および1つ以上のコンピュータ記憶装置に記録されたコンピュータプログラムを含み、これらは各々、上記方法のアクションを実行するように構成されている。1つ以上のコンピュータからなるシステムは、ソフトウェア、ファームウェア、ハードウェア、またはその任意の組み合わせによって特定の動作またはアクションを実行するように構成することができ、上記ソフトウェア、ファームウェア、ハードウェア、またはその任意の組み合わせは、当該システムにインストールされ動作時に当該システムに上記アクションを実行させることができる。1つ以上のコンピュータプログラムは、データ処理装置によって実行されると当該装置にアクションを実行させる命令を含むことにより、特定の動作またはアクションを実行するように構成することができる。
【0005】
上記およびその他の実施形態は各々、任意で、以下の特徴のうちの1つ以上を、単独でまたは組み合わせて含み得る。
【0006】
いくつかの実装例において、X’は自然数Nで割ったXのシーリング(ceiling)に等
しく、Y’は自然数Mで割ったYのシーリングに等しく、Z’はZにNMを掛けたものに
等しい。
【0007】
いくつかの実装例において、X×Y×Z入力テンソルはXY第1入力を表し、X’×Y’×Z’入力テンソルはX’Y’スーパー入力を表し、各スーパー入力は複数の第1入力を含む。
【0008】
いくつかの実装例において、複数の第1入力の数はNM個の入力に等しい。
いくつかの実装例において、X’×Y’×Z’入力テンソルに対する修正されたウェイト行列の作用は、X×Y×Z入力テンソルに対する畳み込みニューラルネットワーク層ウェイト行列の作用と同等である。
【0009】
いくつかの実装例において、修正されたウェイト行列のエントリは、1つ以上の畳み込みニューラルネットワーク層ウェイト行列を含む。
【0010】
いくつかの場合において、修正されたウェイト行列は、バンド構造を有する行列を含む。
【0011】
いくつかの実装例において、U’は自然数Pで割ったUのシーリング(ceiling)に等
しく、V’は自然数Qで割ったVのシーリングに等しく、W’はWにPQを掛けたものに等しい。
【0012】
いくつかの実装例において、U×V×W出力テンソルはUV第1出力を表し、U’×V’×W’出力テンソルはU’V’スーパー出力を表し、各スーパー出力は複数の第1出力を含む。
【0013】
いくつかの場合において、複数の第1出力はPQ個の出力に等しい。
いくつかの実装例において、畳み込みニューラルネットワーク層はプーリングサブ層を含む。
【0014】
いくつかの場合において、方法は、プーリングサブ層を、変換された入力テンソルに対するストライド処理(striding)に置き換えるステップをさらに含む。
【0015】
いくつかの実装例において、畳み込みニューラルネットワーク層は、X次元のストライドSとY次元のストライドTとを含み、ストライドS、Tと、出力テンソルU×V×Wと、変換された出力テンソルU’×V’×W’との関係は、U’=ceiling(U/NS)およびV’=ceiling(V/MT)によって示される。
【0016】
いくつかの場合において、U×V×W出力テンソルはUV第1出力を表し、U’×V’×W’出力テンソルはU’V’スーパー出力を表し、各スーパー出力は複数の第1出力を含み、複数の第1出力の中の第1出力の数は、畳み込みニューラルネットワーク層ウェイト行列の次元に依存する。
【0017】
いくつかの実装例において、U×V×W出力テンソルはUV第1出力を表し、U’×V’×W’出力テンソルはU’V’スーパー出力を表し、各スーパー出力は複数の第1出力を含み、複数の第1出力の中の出力の数は、(i)畳み込みニューラルネットワーク層のアーキテクチャ、(ii)畳み込みニューラルネットワーク層を含むニューラルネットワークモデルのアーキテクチャ、または(iii)畳み込みニューラルネットワーク層を実現する装置、のうちの1つ以上に依存する。
【0018】
いくつかの場合において、1つ以上の畳み込みニューラルネットワーク層ウェイト行列
の修正は、ソフトウェアのみの修正である。
【0019】
本明細書に記載の主題は、以下の利点のうちの1つ以上を実現するために特定の実施形態において実施することができる。
【0020】
畳み込みニューラルネットワーク層は、行列乗算演算を用いて計算することができる。しかしながら、ソフトウェアライブラリもハードウェア行列乗算ユニットも、畳み込みニューラルネットワーク層の入力または出力の深さが浅いときは低効率で機能する場合がある。なぜなら、入力深さおよび出力深さは、乗算される行列のうちの1つの行列の次元にマッピングされるからである。一例として、入力画像は入力深さを3にするRGBデータを有することがあり、畳み込みニューラルネットワーク層は深さ16の出力を生成することがある。ここで3および16は先に述べた意味において浅い。効率の悪さが生じる理由として、典型的な現代のコンピュータアーキテクチャは、そのキャッシュ、メモリアクセスおよび計算ユニットのアーキテクチャ設計のために、深さが浅い層と同一または同様の効率で、特定の深さを上限とする極めて深い層を処理できることが、挙げられる。
【0021】
畳み込みニューラルネットワーク層における標準的な動作は、1つの入力、たとえば1つのピクセルを、行列乗算演算の1つの行または列にマッピングする。スーパーピクセル畳み込みニューラルネットワーク層は、本明細書に記載のように、空間的な大きさまたは指標(たとえばX次元およびY次元)よりも深さの大きさまたは指標(たとえばZ次元)を優先して、データに相当する複数の入力、たとえば複数の入力ピクセルをグループ化する。グループ化した入力を、行列乗算ユニットを用いてより効率良く実現し処理することによって、スーパーピクセル畳み込みニューラルネットワーク層技術を実現するシステムの計算効率を高める。たとえば、グループ化された入力を処理するように構成されたスーパーピクセルCNNにおけるニューラルネットワーク層のインメモリ表現はよりコンパクトであるため、ニューラルネットワーク層は、受けた入力を、サイズが限定されている低レイテンシアクセスメモリに格納して処理することができる。このような技術を実装するシステムはしたがって、どの行列マシン上、たとえば中央処理装置、グラフィック処理装置または専用ニューラルネットワーク処理装置上においても、畳み込みニューラルネットワークの、より高い計算スループット、より低い計算レイテンシ、より短い入出力転送時間、およびより優れたエネルギー利用から、恩恵を得ることができる。加えて、システムは、システムハードウェアを修正することなく上記技術を実装し得る、すなわち、上記技術は、全体をシステムソフトウェアを用いて実現してもよく、したがって、行列乗算を実行するために使用されるすべてのマシンに適用することができる。
【0022】
スーパーピクセル畳み込みニューラルネットワーク層は、本明細書に記載のように、標準的な畳み込みニューラルネットワーク層と比較して、含まれるカーネル要素の数を少なくすることができ、したがって、スーパーピクセル畳み込みニューラルネットワーク層を使用するときに実行する必要がある行列乗算演算数を減じることができる。
【0023】
加えて、スーパーピクセル畳み込みニューラルネットワーク層を実現するシステムは、本明細書に記載のように、ストライドが1よりも大きい畳み込みニューラルネットワーク層を、ストライドが1に等しいスーパーピクセル畳み込みニューラルネットワーク層に変換することができる。ストライドが1に等しいスーパーピクセル畳み込みニューラルネットワーク層は、ニューラルネットワークシステムを実現するいくつかのコンピュータアーキテクチャ、たとえば、シストリックアレイのような行列乗算ユニットを含むアーキテクチャのようにストライドが1に等しい畳み込み計算を直接実行することしかできないコンピュータアーキテクチャにとって、必要な場合がある。加えて、場合によっては、ストライドが1に等しいスーパーピクセル畳み込みニューラルネットワーク層を、上記アーキテクチャ上でより効率的に演算することができる。これはたとえば、ストライドが1よりも
大きい畳み込み計算を実行する必要があるオフチップ処理またはその他の対策が不要となり得るからである。よって、スーパーピクセル畳み込みニューラルネットワーク層を実現するシステムの計算効率および利便性が改善される。
【0024】
本明細書に記載の主題はまた、スーパーピクセル畳み込みニューラルネットワーク層を用いる画像認識方法/システムに関する。
【0025】
本明細書の主題の1つ以上の実施形態の詳細は、添付の図面および以下の説明に記載される。この主題のその他の特徴、側面、および利点は、この説明、図面、および請求項から明らかになるであろう。
【図面の簡単な説明】
【0026】
図1A】スーパーピクセル畳み込みニューラルネットワークシステムの一例である。
図1B】畳み込みニューラルネットワーク層とスーパーピクセル畳み込みニューラルネットワーク層との関係を示す図である。
図2】畳み込みニューラルネットワーク層の計算を効率的に実行するためのプロセスの一例のフロー図である。
図3】スーパーピクセル入力テンソル変換の図解の一例である。
図4】畳み込みニューラルネットワーク層ウェイト行列修正の図解の一例である。
図5】スーパーピクセルカーネルストライド処理を含む畳み込みニューラルネットワーク層のウェイト行列修正の図解の一例である。
【発明を実施するための形態】
【0027】
各種図面における同様の参照番号および名称は同様の構成要素を示す。
詳細な説明
図1Aは、一例としてのスーパーピクセル畳み込みニューラルネットワークシステム100を示す。スーパーピクセル畳み込みニューラルネットワークシステム100は、下記のシステム、構成要素、および技術を実現することができる1つ以上の場所にある1つ以上のコンピュータ上でコンピュータプログラムとして実現されるシステムの一例である。
【0028】
スーパーピクセル畳み込みニューラルネットワークシステム100は、システム入力102を受けこのシステム入力102からシステム出力104を生成する機械学習システムである。
【0029】
スーパーピクセル畳み込みニューラルネットワークシステム100は、デジタルデータ入力を受けこの入力に基づいてスコアまたは分類出力を生成するように構成することができる。たとえば、スーパーピクセル畳み込みニューラルネットワークシステム100に対する入力が、画像、または画像から抽出された特徴である場合、スーパーピクセル畳み込みニューラルネットワークシステム100が、たとえば、所与の画像に対し、ニューラルネットワークシステム100に含まれる1つ以上の全結合層または畳み込みニューラルネットワーク層を用いて生成する出力は、1セットのオブジェクトカテゴリ各々のスコアであってもよい。各スコアは、上記画像が、当該カテゴリに属するオブジェクトの画像を含む推定尤度を表すことができる。
【0030】
特に、スーパーピクセル畳み込みニューラルネットワークシステム100は、畳み込みニューラルネットワーク層A 106と、畳み込みニューラルネットワーク層B 108と、スーパーピクセル畳み込みニューラルネットワーク層110とを含む複数の畳み込みニューラルネットワーク層を含む畳み込みニューラルネットワークを実現する。畳み込みニューラルネットワーク層は、そのニューロンまたはノードが3次元アレイ、すなわち幅
、高さ、および深さにおいて論理的に配置されたニューラルネットワーク層である。畳み込みニューラルネットワーク層内のニューロンは、受容野またはカーネルパッチと呼ばれるこの畳み込みニューラルネットワーク層よりも前にある層の小さな領域に接続されており、畳み込みニューラルネットワーク層内の各ニューロンは、並進不変という特性を構成する同一の特徴を検出する。畳み込みニューラルネットワーク層は、この層のパラメータの現在値を格納するそれぞれのウェイト行列またはカーネルに対応付けることができる。この層は、たとえば複数の行列乗算演算を実行することによって、ニューラルネットワーク層のパラメータの現在値に従い、入力から出力を生成する。畳み込みニューラルネットワーク層の一例は、Andrej Karpathy、George Toderici、Sanketh Shetty、Thomas Leung、Rahul SukthankarおよびLi Fei-Feiによる「Large-scale Video Classification with Convolutional Neural Networks」(Proceedings of International Computer Vision and Pattern Recognition (CVPR 2014), IEEE)においてより詳細に説明されている。
【0031】
スーパーピクセル畳み込みニューラルネットワークの層は各々、それぞれの層入力を受け、この層入力を処理することにより、この入力からそれぞれの層出力を生成するように構成されている。たとえば、スーパーピクセル畳み込みニューラルネットワークシステム100に含まれる畳み込みニューラルネットワーク層は、X×Y×Z入力テンソルを受けこの受けた入力テンソルを1つ以上の畳み込みニューラルネットワーク層ウェイト行列またはカーネルを用いて処理することにより、U×V×W出力テンソルを生成するように構成することができる。テンソルは、アレイの次元性に対応する特定の順序を有する数値またはその他の値、たとえばストリングからなる多次元アレイである。たとえば、スカラー値は0次テンソル、数値のベクトルは1次テンソル、行列は2次テンソルである。
【0032】
たとえば、畳み込みニューラルネットワーク層は、特徴深さが3である64×64ピクセルを含む画像を表す64×64×3入力テンソルを受けるように構成することができ、ここで特徴深さは、赤、緑、および青の特徴チャネルで表される。畳み込みニューラルネットワーク層は、受けた64×64×3入力テンソルを1つ以上のそれぞれの畳み込みニューラルネットワーク層行列を用いて処理することにより、それぞれの出力テンソルを生成することができる。
【0033】
いくつかの実装例において、畳み込みニューラルネットワーク層は、畳み込みニューラルネットワーク層のサイズおよび出力ボリュームを制御する1つ以上のハイパーパラメータを含み得る。たとえば、畳み込みニューラルネットワーク層は、入力データに対するフィルタの評価と評価との間に畳み込みフィルタまたはウェイト行列がXおよびYにおいてシフトする量を制御する、カーネルストライドを含み得る。いくつかの実装例において、畳み込みニューラルネットワーク層は、非線形ダウンサンプリングの形態であるプーリング層を含むまたはこのプーリング層に接続することができる。たとえば、畳み込みニューラルネットワーク層は、入力テンソルの深さスライスに対して作用して入力テンソルを空間的にリサイズするプーリングストライドを含み得る。先に述べた例で説明を続けると、畳み込みニューラルネットワーク層はしたがって、それぞれのU×V×W出力を生成することができ、UはX以下、VはY以下、WはZ以上であり、上記出力テンソルは、たとえば、32×32×32出力テンソルである(たとえば7×7カーネルストライドおよび2×2プーリングストライドに相当する)。一般的に、カーネルストライド処理は、最初の計算の省略(たとえば、「評価と評価との間においてXを2スキップしYを2スキップする」)とみなすことができ、一方、プーリングは、ストライド1の評価後のポストパス(post-pass)である(たとえば、プーリングにおいて、計算値はストライドを1として生
成され、プーリングウィンドウにおける各グループの最大値が選択され、たとえば入力データの2×2の部分である)。
【0034】
スーパーピクセルニューラルネットワークシステム100に含まれる少なくとも1つの
畳み込みニューラルネットワーク層は、スーパーピクセル畳み込みニューラルネットワーク層、たとえばスーパーピクセル畳み込みニューラルネットワーク層110である。スーパーピクセル畳み込みニューラルネットワーク層は、形状は異なるが数学的には同等のスーパーピクセル畳み込みニューラルネットワーク層を生成するために、受けた畳み込み層入力および畳み込みニューラルネットワーク層ウェイト行列に対してスーパーピクセル変換(代わりに、修正とも言う)を適用する、畳み込みニューラルネットワーク層である。
【0035】
スーパーピクセル畳み込みニューラルネットワーク層110は、スーパーピクセル畳み込みニューラルネットワーク層110よりも前の畳み込みニューラル層から、入力例えば入力112を受けることができる。たとえば、受けた入力は、スーパーピクセル畳み込みニューラルネットワーク層110よりも前の畳み込みニューラルネットワーク層が生成した出力を含み得る。
【0036】
スーパーピクセル畳み込みニューラルネットワーク層110は、スーパーピクセル生成器114を含み得る。スーパーピクセル生成器114は、畳み込みニューラルネットワーク入力を受けこの受けた入力をスーパーピクセル層入力に変換するように構成される。スーパーピクセル生成器114は、空間の大きさまたは指標、たとえばX次元およびY次元よりも、深さの大きさまたは指標、たとえばZ次元を優先して、受けた入力の構成要素をグループ化する。これに伴う効果として、Z層における畳み込みニューラルネットワーク層の深さが最早浅くはないので、Z層が浅いことに起因する効率の悪さを回避することができる。
【0037】
たとえば、スーパーピクセル畳み込みニューラルネットワーク層110は、入力として、たとえば深さがZであるXY(X掛けるY)を表す、X×Y×Z入力テンソルを受けることができる。スーパーピクセル生成器114は、このX×Y×Z入力テンソルをX’×Y’×Z’スーパーピクセル入力テンソルに変換するように構成され、X’はX以下、Y’はY以下、Z’はZ以上である。スーパーピクセル生成器が実行するスーパーピクセル入力テンソルの変換の一例は、以下の図3に示される。
【0038】
スーパーピクセル畳み込みニューラルネットワーク層110は、スーパーピクセルウェイト行列116を含む。スーパーピクセルウェイト行列116は、畳み込みニューラルネットワーク層に対応する修正された(代わりに、変換されたとも言う)畳み込みニューラルネットワーク層ウェイト行列である。たとえば、畳み込みニューラルネットワーク層ウェイト行列を、スーパーピクセル畳み込みニューラルネットワーク層に変換する各畳み込みニューラルネットワーク層の選択に応じて修正してもよい。スーパーピクセルウェイト行列116は、変換された畳み込みニューラルネットワーク層入力に対して作用する。
【0039】
たとえば、スーパーピクセルニューラルネットワーク層110に対応する畳み込みニューラルネットワーク層は、X×Y×Z入力テンソルを受けるように構成することができる。スーパーピクセルニューラルネットワーク層110は、受けた入力を、X’×Y’×Z’スーパーピクセル入力テンソルに変換することができる。この場合、スーパーピクセルウェイト行列は、X’×Y’×Z’入力テンソルに対して作用することによりU’×V’×W’出力テンソルを生成する修正されたウェイト行列を含み得る。X’は必ずしもU’に等しくはなく、Y’は必ずしもV’に等しくはなく、Z’は必ずしもW’に等しくはない。U’×V’×W’出力テンソルは、変換されたU×V×W出力テンソルであり、U’はU以下、V’はV以下、W’はW以上である。たとえば、U’×V’×W’出力テンソルは、スーパーピクセル出力テンソル、たとえば、U×V×W出力テンソルの構成要素をグループ化したもの、を表すことができる。いくつかの実装例において、グループ化を利用してスーパーピクセル入力テンソルを作成するまたはスーパーピクセル出力テンソルを表すことは、同一ではないかもしれず、たとえば、構成要素の数および構成要素をグルー
プ化するやり方は異なり得る。一例としての畳み込みニューラルネットワーク層ウェイト行列の修正を、以下で図4を参照しながら説明する。加えて、スーパーピクセルウェイト行列(ストライド処理を伴う、またはストライド処理を伴わない、たとえばstride_x=stride_y=1)を生成するためのアルゴリズム(コメントを含む)の一例は、以下の通りであ
る。
【0040】
【数1-1】
【数1-2】
【0041】
上の記載で使用されているSuperIndexルーチンの例は以下によって定義することができるが、これに限定される訳ではない。
【0042】
【数2】
【0043】
上に示したものは専ら例示を目的としている。たとえば、いくつかの実装例において、SuperIndexルーチンは、スーパーピクセル内のパッキング順序に依存しない場合がある。
【0044】
スーパーピクセル畳み込みニューラルネットワーク層110は、変換された入力テンソルを、修正されたウェイト行列を用いて処理することにより、変換された畳み込みニューラルネットワーク層出力、たとえばスーパーピクセル出力118を生成する。この生成された、変換後の畳み込みニューラルネットワーク層出力は、未修正の畳み込みニューラルネットワーク層ウェイト行列を用いて未変換の畳み込みニューラルネットワーク入力を処理することによって生成したニューラルネットワーク出力と、数学的には同等であり得る。未修正の計算の出力値はすべて、生成した変換後の畳み込みニューラルネットワーク層出力において、図1Bを参照しながら以下で説明するように、逆準同型変換を行うことによって計算できる形態で、存在し得る。たとえば、生成した変換された畳み込みニューラルネットワーク層出力は、(未変換の)畳み込みニューラルネットワークを(未修正の)畳み込みニューラルネットワーク層を用いて処理することによって生成したニューラルネットワーク出力に対応するニューラルネットワーク出力を含む出力のスーパーセットを含み得る。いくつかの実装例において、このスーパーセットに含まれる追加の出力は、スーパーピクセルニューラルネットワークシステム100の後続の層に与えることができる。たとえば、追加の出力は、最初に要求された未変換の出力の「エッジ外」の出力の「部分総和」に対応し得る。スーパーピクセル計算が、1つのスーパーピクセル計算を処理するのに効率的であるものより大きなXおよびYでより大きな計算の1つの「タイル」を処理する場合、部分総和を保存しより高い効率を求めて再利用することができる。スーパーピクセル畳み込みニューラルネットワーク層を用いて入力を処理することについては、以下で図2を参照しながらより詳細に説明する。
【0045】
いくつかの実装例において、スーパーピクセル畳み込みニューラルネットワーク層110は、スーパーピクセル出力を受けこの受けたスーパーピクセル出力を通常の順序の出力に変換するように構成されたスーパーピクセルアンフォーマッターを含み得る。たとえば、現在のスーパーピクセル畳み込みニューラルネットワーク層が4×4のスーパーピクセル出力を生成するのに対し、次のスーパーピクセル畳み込みニューラルネットワーク層が8×8のスーパーピクセルを処理するように構成されている場合、システムは、スーパーピクセルアンフォーマッターを使用することにより、4×4のスーパーピクセルを8×8のスーパーピクセルに変換することができる。いくつかの実装例において、スーパーピクセル畳み込みニューラルネットワーク層、たとえば層110のための、スーパーピクセルアンフォーマッターは、スーパーピクセルウェイト行列、たとえばウェイト行列116に従い、ウェイト行列によって生成された出力のグループ解除を実行することができる。その他の実装例において、スーパーピクセル畳み込みニューラルネットワーク層のためのスーパーピクセルアンフォーマッターは、一連のスーパーピクセル畳み込みニューラルネッ
トワーク層における次のスーパーピクセル畳み込みニューラルネットワーク層のためのスーパーピクセル生成器の一部として、またはそれとともに含めることができる。
【0046】
スーパーピクセル畳み込みニューラルネットワーク層110は、一連のニューラルネットワーク層内のさまざまな場所において含まれ得る。いくつかの実装例において、複数のスーパーピクセル畳み込みニューラルネットワーク層が一連のニューラルネットワーク層に含まれていてもよい。たとえば、いくつかの実装例において、畳み込みニューラルネットワーク層AおよびBのうちの1つ以上が、スーパーピクセル畳み込みニューラルネットワーク層であってもよい。複数のスーパーピクセル畳み込みニューラルネットワーク層が一連のニューラルネットワーク層に含まれる実装例において、各スーパーピクセル畳み込みニューラルネットワーク層は、受けた入力に対してそれぞれの変換を適用することにより、それぞれのスーパー入力を生成することができ、生成したそれぞれのスーパー入力は、サイズが異なるスーパー入力を含み得る。
【0047】
複数のスーパーピクセル畳み込みニューラルネットワーク層からなるシステムのレイアウトの一例を以下の表に示す。
【0048】
【表1】
【0049】
上記レイアウトの一例において、ほとんどのニューラルネットワーク層は、1層当たり8×8セットのスーパーピクセルを含む。1スーパーピクセル当たりのピクセルの数は、カーネルストライド処理に応じて調整される。「元の入力深さ(Z)」の欄は、元のニューラルネットワークモデルの入力の深さを示し、「変換後の入力深さ(U)」の欄は、入力およびウェイトを、指定された1スーパーピクセル当たりのピクセルを用いて変換した後の入力の深さを示す。
【0050】
複数のスーパーピクセル畳み込みニューラルネットワーク層からなるシステムのレイアウトの第2の例を以下の表に示す。
【0051】
【表2】
【0052】
スーパーピクセル畳み込みニューラルネットワークシステム100は、ニューラルネットワーク層のパラメータのトレーニング後の値を求めるために、すなわちパラメータの値を初期値からトレーニング後の値に調整するために、トレーニング例の複数回のバッチでトレーニングすることができる。たとえば、トレーニング中に、スーパーピクセル畳み込みニューラルネットワークシステム100は、トレーニング例のバッチを処理しこのバッチ内のトレーニング例ごとにそれぞれのニューラルネットワークを生成することができる。次に、ニューラルネットワーク出力を用い、たとえば従来の勾配降下および逆伝搬ニューラルネットワークトレーニング技術を通して、スーパーピクセル畳み込みニューラルネットワークシステム100の構成要素のパラメータの値を調整することができる。修正されたウェイト行列は、逆伝搬トレーニングプロセス中に、元のウェイト各々のNM個のコピーを作るので(NおよびMは、以下で図2のステップ202を参照しながら説明するスーパーピクセルサイズを表す)、システムは、NM個のコピーすべてにわたってウェイト勾配を追加することにより、元のウェイト各々の正味の値変化を求めることができる。スーパーピクセルニューラルネットワーク層のトレーニングは、深さの大きさまたは指標よりも空間の大きさまたは指標を優先し得る、逆プロセスである。
【0053】
ニューラルネットワークのトレーニングが完了すると、スーパーピクセル畳み込みニューラルネットワークシステム100は、処理対象の新たなニューラルネットワーク入力を受け、このニューラルネットワーク入力を、スーパーピクセル畳み込みニューラルネットワークシステム100の構成要素のパラメータのトレーニングされた値に従い、ニューラルネットワーク層を通して処理することにより、入力用の新たなニューラルネットワーク出力を生成することができる。
【0054】
いくつかの実装例において、スーパーピクセルニューラルネットワークシステム100は、1つ以上の逆畳み込みニューラルネットワーク層を含み得る。これらの場合においては、上記構成要素および技術を逆にすることにより、同一の降下を得ることができる、すなわち、スーパーピクセル逆畳み込みニューラルネットワーク層は、深さの大きさまたは指標よりも空間の大きさまたは指標を優先して、複数の入力をグループ化し、それに応じてそれぞれの逆畳み込みニューラルネットワーク層ウェイト行列を修正することができる。
【0055】
図1Bは、畳み込みニューラルネットワーク層とスーパーピクセル畳み込みニューラル
ネットワーク層との関係を示す図160である。
【0056】
図160に示されるように、畳み込みニューラルネットワーク層は、入力された活性化Iおよびウェイト行列Wに対して畳み込み演算「convolve」162を実行することにより、層出力として活性化O 164を生成するように構成することができる。
【0057】
同様に、スーパーピクセル畳み込みニューラルネットワーク層、たとえば図1Aを参照しながら先に説明した修正または変換された畳み込みニューラルネットワーク層は、変換された入力活性化Transform(I)および変換されたウェイト行列Transform(W)に対して畳み込み演算「convolve」168を実行することにより、変換された層出力として活性化170を生成するように構成することができる。
【0058】
図160は、入力Iを変換された入力Transform(I)に接続しウェイト行列Wを変換されたウェイト行列Transform(W)に接続する2つの準同型矢印を示す。これらの準同型矢印は、元の畳み込みニューラルネットワーク層と修正された畳み込みニューラルネットワーク層との準同型関係を表す。これらの矢印は、たとえば、元のモデル活性化およびウェイトを、修正または変換されたモデル活性化およびウェイトにマッピングする。同様に、図160は、変換された出力Transform(O)を出力Oに接続する逆準同型矢印を示している。逆準同型は、元の畳み込みニューラルネットワーク層と修正された畳み込みニューラルネットワーク層との逆準同型関係を表す。この矢印は、たとえば、逆に、変換された出力を元の出力にマッピングする。
【0059】
元のモデル活性化を変換するためのアルゴリズムの一例は以下の通りである。
【0060】
【数3】
【0061】
逆準同型のアルゴリズムの一例は次の通りである。
【0062】
【数4】
【0063】
図160に示されるように、スーパーピクセル畳み込みニューラルネットワーク層を用いて畳み込みニューラルネットワーク層出力を生成するのに必要な演算の数は、対応する元のニューラルネットワーク層が必要とする演算数よりも多い可能性がある。なぜなら、入力Iおよびウェイト行列Wは、畳み込みを適用する前に変換しておく必要がある場合があるからである。しかしながら、このより多い数の演算を実行するスーパーピクセル畳み込みニューラルネットワーク層アーキテクチャは、対応する元のニューラルネットワーク層が実行するより少ない数の演算よりも、実行時の計算速度は速いであろう。
【0064】
図2は、プロセスの一例200のフロー図であり、このプロセスは、X×Y×ZZ入力テンソルを受けこの受けた入力テンソルを1つ以上の畳み込みニューラルネットワーク層ウェイト行列を用いて処理することによりU×V×W出力テンソルを生成するように構成された畳み込みニューラルネットワーク層の計算を効率良く実行するためのプロセスである。便宜上、プロセス200を、1つ以上の場所に配置された1つ以上のコンピュータからなるシステムによって実行されるものとして説明する。例として、本明細書に従い適切にプログラムされたスーパーピクセル畳み込みニューラルネットワークシステム、たとえば図1Aのスーパーピクセル畳み込みニューラルネットワークシステム100は、プロセス200を実行することができる。
【0065】
本システムは、X×Y×Z入力テンソルをX’×Y’×Z’スーパーピクセル入力テンソルに変換する(ステップ202)。このシステムは、入力テンソルを、空間の大きさまたは指標よりも深さの大きさまたは指標を優先して複数の入力をグループ化することにより、変換する。たとえば、X’×Y’×Z’入力テンソルは、X×Y×Z入力テンソルと異なる次元を有し得る。より具体的には、X’はX以下であってもよく、Y’はY以下であってもよく、Z’はZ以上であってもよい。いくつかの実装例において、X’は、自然数Nで割ったXのシーリング(ceiling)、たとえば、自然数Nで割ったX以上の最小整
数に等しく、Y’は、自然数Mで割ったYのシーリングに等しく、Z’はZにNMを掛けたものに等しい。
【0066】
X×Y×Z入力テンソルは、XY第1入力を表すことができる。たとえば、X×Y×Z入力テンソルは、特徴深さZのX×Yピクセルの画像を表すことができる。同様に、X’×Y’×Z’入力テンソルは、X’Y’スーパー入力を表すことができ、各スーパー入力は複数の第1入力を含む。たとえば、X’×Y’×Z’入力テンソルは、深さZ’のX’×Y’スーパーピクセルの画像を表すことができる。いくつかの実装例において、複数の第1入力の数はNM個の入力に等しい。たとえば、各スーパー入力はNM個の第1入力で構成されていてもよい。入力テンソルの変換の一例が下記図3に示される。
【0067】
このシステムは、1つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得する(ステップ204)。この修正されたウェイト行列は、X’×Y’×Z’入力テンソルに対して作用することにより、U’×V’×W’出力テンソルを生成する。いくつかの実装例において、X’×Y’×Z’入力テンソルに対する修正されたウェイト行列の作用は、X×Y×Z入力テンソルに対する畳み込みニューラルネットワーク層ウェイト行列の作用と同等であり、たとえば、X’×Y’×Z’入力テンソルに対する修正されたウェイト行列の作用により同じ効果が得られる。U’×V’×W’出力テンソルは、変換されたU×V×W出力テンソルを含み得る。U’はU以下、V’はV以下、W’はW以上である。たとえば、U’×V’×W’出力テンソルは、U×V×W出力テンソルからの複数の出力をグループ化したものを表すことができ、この場合、先に述べたように空間の大きさまたは指標よりも深さの大きさまたは指標が優先されている。
【0068】
修正されたウェイト行列のエントリは、1つ以上の畳み込みニューラルネットワーク層ウェイト行列を含み、たとえば、修正されたウェイト行列は、ブロックまたはサブ行列と呼ばれるセクションに分割されたものと解釈することができるブロック行列を含み得る。いくつかの実装例において、修正されたウェイト行列のエントリはバンド構造を示し得る。たとえば、畳み込みニューラルネットワーク層は、各入力が各出力に接続されている全結合行列で表すことができる。全結合行列はバンド構造を示す。バンド構造の場合、行列のほとんどのエントリがゼロであり行列内の小数の斜めバンドが非ゼロエントリを有する。
【0069】
一般的に、1つの次元について、修正されたカーネル要素の数は、ceiling((スーパー入力サイズ+元の畳み込みニューラルネットワーク層カーネル幅-1)/スーパ
ー入力サイズ)(ceiling((superinput_size + original convolutional neutral network layer kernel width - 1)/superinput_size))に等しいであろう。畳み込みニューラ
ルネットワーク層ウェイト行列の修正は、以下で図4を参照しながら説明する。
【0070】
任意で、このシステムは、畳み込みニューラルネットワーク層に対して効率的なカーネルストライド処理を実現できる(ステップ206)。たとえば、いくつかの実装例において、畳み込みニューラルネットワーク層はプーリングサブ層を含み得る。これらの場合において、このシステムは、プーリングサブ層を、変換された入力テンソルX’×Y’×Z
’に対するストライド処理に置き換えることができる。たとえば、以下でステップ208を参照しながら説明するように、いくつかの実装例において、U×V×W出力テンソルはUV第1出力を表すことができ、U’×V’×W’出力テンソルはU’V’スーパー出力を表すことができ、各スーパー出力は複数の第1出力を含む。このような場合において、実現される効率的なカーネルストライド処理サイズは、複数の第1出力の出力数に等しくなくてもよい。カーネルストライド処理の効果は修正されたウェイト行列に組み入れることができる。たとえば、(未変換の)畳み込みニューラルネットワーク層は、畳み込みをそれぞれの入力Iおよびそれぞれのウェイト行列Wに適用するとともに畳み込まれた入力Iおよびウェイト行列Wにストライド処理を適用することによって、すなわち2つの作業を実行することによって層出力Oを生成することができる。ストライド処理を伴う変換されたスーパーピクセル畳み込みニューラルネットワーク層は、変換されたそれぞれの入力transform(I)と、ストライド処理され変換されたウェイト行列strided_transform(2,W)とに、畳み込みを適用することによって、変換された層出力transform(O)を生成することができる。
【0071】
いくつかの実装例において、畳み込みニューラルネットワーク層は、カーネルストライド処理を既に含んでいる場合がある。これらの場合において、システムは、このカーネルストライド処理を効率的なカーネルストライド処理に置き換えてもよい。システムは、異なる入力および出力スーパーピクセルサイズを用いることによって効率的なカーネルストライド処理を実現することができ、スーパーピクセルサイズの比率はストライドに等しい。たとえば、畳み込みニューラルネットワーク層がX次元のストライドSおよびY次元のストライドTを含み、出力スーパーピクセルサイズ(N/S)(M/T)を選択することによって、畳み込みニューラルネットワーク層を、スーパーピクセル入力のサイズがNMであるスーパーピクセル畳み込みニューラルネットワーク層に変換した場合、システムは、スーパーピクセル修正ウェイト行列のカーネルストライド処理を実現する。いくつかの実装例において、ストライドSと、出力テンソルU×V×Wと、変換された出力テンソルU’×V’×W’との関係は、U’=ceiling(U/NM)およびV’=ceiling(V/MT)によって示すことができる。効率的なカーネルストライド処理の実現を、以下で図5を参照しながら説明する。
【0072】
本システムは、X’×Y’×Z’入力テンソルを、修正されたウェイト行列を用いて処理することにより、変換された畳み込みニューラルネットワーク層出力、たとえばU’×V’×W’出力テンソルを生成する(ステップ208)。U’×V’×W’出力テンソルは、U×V×W出力テンソルを含み、たとえば、U’×V’×W’出力テンソルは、U×V×W出力テンソルを含む出力のスーパーセットを含み得る。
【0073】
U’×V’×W’出力テンソルは、U×V×W出力テンソルと異なる次元を有し得る。より具体的には、U’は、自然数Pで割ったUのシーリングに等しくてもよく、V’は自然数Qで割ったVのシーリングに等しくてもよく、W’はWにPQを掛けたものに等しくてもよい。いくつかの実装例において、自然数PおよびQはそれぞれ、ステップ202を参照しながら先に説明した自然数NおよびMに等しくてもよい。加えて、いくつかの実装例において、現在のスーパーピクセル畳み込みニューラルネットワーク層のPおよびQは、たとえば本システムが現在のスーパーピクセル畳み込みニューラルネットワーク層と次のスーパーピクセル畳み込みニューラルネットワーク層との間においてスーパーピクセル生成器およびスーパーピクセルアンフォーマッターを含まない場合、次のスーパーピクセル畳み込みニューラルネットワーク層のNおよびMに等しくてもよい。
【0074】
U×V×W出力テンソルは、深さWのUV第1出力を表すことができる。たとえば、U×V×W出力テンソルは、深さWのU×V出力の特徴マップを表すことができる。同様に、U’×V’×W’出力テンソルは、U’V’スーパー出力を表すことができ、各スーパ
ー出力は複数の第1出力を含む。たとえば、U’×V’×W’出力テンソルは、深さW’のU’×V’ピクセルの画像を表すことができる。いくつかの実装例において、複数の第1出力の数は、P×Q個の出力ピクセルに等しく、たとえば、各スーパー出力はPQ個の第1出力で構成されていてもよい。
【0075】
自然数PおよびQは、ステップ202を参照しながら先に説明した自然数NおよびMと異なっていてもよい。たとえば、上記スーパー入力のサイズはスーパー出力のサイズと同一でなくてもよい。いくつかの実装例において、複数の第1出力の中の第1出力の数、たとえばスーパー出力のサイズは、畳み込みニューラルネットワーク層ウェイト行列の次元に依存する。いくつかの実装例において、複数の第1出力の中の出力の数は、(i)畳み込みニューラルネットワーク層のアーキテクチャ、(ii)畳み込みニューラルネットワーク層を含むニューラルネットワークモデルのアーキテクチャ、または(iii)畳み込みニューラルネットワーク層を実現する装置、のうちの1つ以上に依存する。
【0076】
一例として、最初の畳み込み層の入力サイズがX×Y×Zであり生成する出力サイズがU×V×Wであり、かつ、スーパーピクセル変換畳み込み層の入力サイズがX’×Y’×Z’であり生成する出力サイズがU’×V’×W’であると仮定する。KLがウェイト行列における畳み込みカーネル要素の数を表し、K’L’が修正されたウェイト行列における畳み込みカーネル要素の数を表すとする。さらに、入力および出力ピクセル/スーパーピクセルは同一でありNおよびMで指定されると想定する。そうすると、U’=ceiling(U/N)、V’=ceiling(V/M)、W’=W×N×Mである。加えて、K’=ceiling((N+K-1)/N)およびL’=ceiling((M+L-1)/N)となる。PQがNMに等しくない可能性があるケースは、本システムがカーネルストライド処理を実施している可能性がある場合、または、変換されたスーパーピクセル当たりのピクセルの数が入力から出力へと変化したケースを含む。
【0077】
図3は、スーパーピクセル入力テンソル変換の図解の一例300である。たとえば、この図解の一例は、図2のステップ202を参照しながら先に説明したスーパーピクセル入力テンソル変換を示す。示されている変換は、1つ以上の場所に配置された1つ以上のコンピュータからなるシステムによって実行することができる。例として、本明細書に従い適切にプログラムされたスーパーピクセル生成器、たとえば図1Aのスーパーピクセル生成器114は、図解されている変換を実行することができる。
【0078】
この図解の例は、一例としてのX×Y×Z入力テンソル302を示す。図3に示されるように、入力テンソルは、各々が深さZであるXY入力を含む。図2を参照しながら先に説明したように、X×Y×Z入力テンソルは、複数の入力をグループ化することにより、X’×Y’×Z’スーパーピクセル入力テンソルに変換することができる。このグループ化の間、空間次元(XおよびY次元)における指標またはレイアウトよりも、深さ次元(Z次元)における指標または大きさが優先される。一例としての図解300において、X×Y×Z入力テンソルは、X/2×Y/2×4Zスーパーピクセル入力テンソル304に変換されている。図3に示されるように、スーパーピクセル入力テンソルは、各々が深さ4Zである(X/2)(Y/2)入力を含む。入力テンソル304に含まれる各スーパーピクセル入力は、元の入力4個を表し、このため、元の入力によって表されるデータの量の4倍を表すことになる。
【0079】
図4は、畳み込みニューラルネットワーク層ウェイト行列修正の図解の一例400である。たとえば、この図解の一例は、図2のステップ204を参照しながら先に説明した畳み込みニューラルネットワーク層ウェイト行列修正を示す。示されている修正は、1つ以上の場所に位置する1つ以上のコンピュータからなるシステムによって実行することができる。例として、本明細書に従い適切にプログラムされたスーパーピクセル畳み込みニュ
ーラルネットワーク層、たとえば図1Aのスーパーピクセル畳み込みニューラルネットワーク層110は、図解されている修正を実行することができる。
【0080】
ステップ(a)で、この図解の一例400は、畳み込みニューラルネットワーク層の3×3カーネルパッチ402を示し、このカーネルパッチの各要素は2次元ウェイト行列を含み、次元は、行列乗算に適した元の入力深さ×元の出力深さ、たとえばZ×Wに等しい。この図解の一例はさらに、入力を表す2×2格子404~410を示す。入力は、2×2スーパー入力になるようにグループ化され、各スーパー入力は、元の2×2入力を含む。この図解の一例は、4つの元の出力を含むスーパー出力412を示す。
【0081】
ステップ(b)において、図解の一例400は、ステップ(a)において示すものと同一の2次元畳み込みを、4つの元の出力の各々のドット積計算に拡張したものを示す。2×2格子の背後にあるシェーディング、たとえばシェーディング414は、入力データのうちのどの3×3サブセットが各出力に影響するかを示す。各格子に対するシェーディングが示すように、すべてのスーパー入力がすべての出力に影響するが、各スーパー入力の有用な分数は9/16である。
【0082】
ステップ(c)において、図解の一例400は、一例としての、修正された2次元ウェイト行列416~422を示す。これらのウェイト行列を用いることによりスーパー出力を計算することができる。行列416~422は各々、2×2の修正されたカーネルパッチを構成するカーネル要素である。行列416~422の次元は4Z×4Wであり、したがって、カーネルパッチ402の元の2次元行列の16倍の大きさである。縦軸は、入力深さ、スーパー入力内の入力、およびカーネル要素を表す。横軸は、出力深さ、およびスーパー出力内の出力を表す。この図解例は、ステップ(c)において、行列乗算を示している。カラム424は入力を表し、入力が、修正されたウェイト行列416~422のエントリと同一高さで示されている場合、これはこのウェイトで乗算される。1カラム内のウェイトと入力との積をすべて加算することにより、スーパー出力内の出力の合計値を得る。合計4つのスーパー入力、たとえば1つのスーパー出力、たとえば4つの元の出力、の計算に寄与する16個の元の入力が示されている。
【0083】
4つのスーパー入力は各々、スーパー出力に対し、異なるXおよびY座標関係を有する。説明のために、図4は1スーパーピクセル当たり2×2ピクセルを示し、2×2セットのスーパーピクセルを示す。よって、2×2=4個のウェイト行列が描かれている。1スーパーピクセル当たりおよび1セットのスーパーピクセル当たりのピクセルの数は、たとえば、他の要素のうちでも特にシステムアーキテクチャに基づいて変化し得る。たとえば、場合によっては、1スーパーピクセル当たり4×4ピクセルがあってもよく、100×100スーパーピクセル(よって400×400の元の入力ピクセル)からなる大きな画像サイズであってもよい。この場合、各次元において、ceiling((スーパーピクセル当たりのピクセル+カーネルサイズ-1)/スーパーピクセル当たりのピクセル)(ceiling((pixels_per_superpixel + kernel_size - 1) / pixels_per_superpixel))が2以下である限り、2×2=4のウェイト行列がなおも存在するであろう。
【0084】
先に述べたように、修正されたウェイト行列はカーネル要素である。この点について、修正プロセスは、入力に対する3×3畳み込みをスーパー入力に対する2×2畳み込みに変更することによりパッチ内のカーネル要素の数を減じたものとみなすことができ、各カーネル要素は、より大きな2次元行列である、たとえば、行および列(入力深さZおよび出力深さWに対応)いずれにおいても4倍の大きさである。積み重ねられている修正されたウェイト行列416~422は、3×3カーネル402の要素各々の1つのコピーを含む。いくつかの実装例において、修正されたウェイト行列は、例として対角線方向において同様にラベル付けされたカーネル要素、たとえば対角線426によって示されるように
、バンド構造を示し得る。
【0085】
図5は、スーパーピクセルカーネルストライド処理を含む畳み込みニューラルネットワーク層ウェイト行列修正の図解の一例500である。たとえば、この図解の一例は、図2のステップ206を参照しながら先に述べたカーネルストライド処理を効率的に実現したものを示す。示されている実装例は、1つ以上の場所に位置する1つ以上のコンピュータからなるシステムによって実行することができる。例として、本明細書に従い適切にプログラムされたスーパーピクセル畳み込みニューラルネットワーク層、たとえば図1Aのスーパーピクセル畳み込みニューラルネットワーク層110は、図解されている実装を実施することができる。
【0086】
図解の一例500はウェイト図を示し、それとともに、その要素が2次元ウェイト行列でありその次元が元の入力深さ×元の出力深さたとえばZ×Wに等しい、5×5カーネルパッチ506と、各々が4×4の元の入力を含む4×4スーパー入力502と、各々が2×2の元の出力を含む2×2スーパー出力504とを示す。カーネルストライドの一例は、2×2である。図解の一例500は、4つのスーパーピクセルカーネル要素508~514を含む。各スーパーピクセルカーネル要素は16Z×4W行列である。入力/スーパー入力対出力/スーパー出力は、2×2カーネルストライドによって変化しているので、各16入力に対して4出力しかない。
【0087】
本明細書に記載の主題の実施形態および機能的動作は、デジタル電子回路において、有形的に実現されたコンピュータソフトウェアまたはファームウェアにおいて、本明細書に開示されている構造およびその構造的均等物を含むコンピュータハードウェアにおいて、または、これらのうちの1つ以上を組み合わせたものにおいて、実現することができる。本明細書に記載の主題の実施形態は、1つ以上のコンピュータプログラムとして、すなわち、データ処理装置によって実行されるまたはデータ処理装置の動作を制御するための有形の非一時的なプログラムキャリア上で符号化されたコンピュータプログラム命令の1つ以上のモジュールとして、実現することができる。これに代えてまたはこれに加えて、プログラム命令は、データ処理装置による実行のために適切な受信装置に送信される情報を符号化するために生成された、人為的に生成された伝搬信号、たとえばマシンによって生成された電気、光、または電磁信号上で符号化することができる。コンピュータ記憶媒体は、マシン読取可能記憶媒体、マシン読取可能記憶基盤、ランダムもしくはシリアルアクセスメモリデバイス、または、これらのうちの1つ以上を組み合わせたものであってもよい。しかしながら、コンピュータ記憶媒体は伝搬信号ではない。
【0088】
「データ処理装置」という用語は、例としてプログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データ処理用のすべての種類の装置、デバイス、およびマシンを包含する。この装置は、専用論理回路たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含み得る。この装置はまた、ハードウェアに加えて、当該コンピュータプログラムのために実行環境を作成するコード、たとえばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはこれらのうちの1つ以上の組み合わせを構成するコードを含み得る。
【0089】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、またはコードと呼ぶ、またはそういうものとして説明することもできる)は、コンパイルもしくはインタプリタ言語、または宣言型もしくは手続型言語を含む、任意のプログラミング言語形態で記述することができ、また、スタンドアロンプログラムとしてまたはモジュールとして、コンポーネント、サブルーチン、または計算環境で使用するのに適したその他のユニットを含む、任意の形
態でデプロイすることができる。コンピュータプログラムはファイルシステム内のファイルに対応していてもよいがそうでなくてもよい。プログラムは、その他のプログラムまたはデータを保持する、たとえばマークアップ言語文書に保存されている1つ以上のスクリプトを保持するファイルの一部に、または当該プログラム専用の1つのファイルに、または連携している複数のファイル、たとえば1つ以上のモジュール、サブプログラム、またはコードの一部を保存する複数のファイルに、格納することができる。
【0090】
本明細書で使用する「エンジン」または「ソフトウェアエンジン」は、入力と異なる出力を提供する、ソフトウェアによって実現される入出力システムのことを言う。エンジンは、ライブラリ、プラットフォーム、ソフトウェア開発キット(software development kit:「SDK」)またはオブジェクト等の機能の符号化ブロックであってもよい。各エンジンは、適切な任意の種類の計算装置上で実現することができ、この計算装置は、たとえば、サーバ、携帯電話、タブレットコンピュータ、ノートブックコンピュータ、音楽再生機器、電子書籍リーダー、ラップトップもしくはデスクトップコンピュータ、PDA、スマートフォン、または、1つ以上のプロセッサとコンピュータ読取可能媒体とを含むその他の静止もしくは移動デバイスである。加えて、エンジンの2つ以上は、同一の計算装置上で実現されても、異なる計算装置上で実現されてもよい。
【0091】
本明細書に記載のプロセスおよび論理フローは、入力データに対して作用し出力を生成することによって機能を果たすために1つ以上のコンピュータプログラムを実行する1つ以上のプログラマブルコンピュータによって実行することができる。プロセスおよび論理フローは、専用ロジック回路たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行されてもよく、装置は、専用ロジック回路たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)として実現されてもよい。
【0092】
コンピュータプログラムの実行に適したコンピュータは、一例として、汎用もしくは専用マイクロプロセッサまたはこれら双方に基づいていてもよく、または、その他任意の種類の中央処理装置に基づいていてもよい。一般的に、中央処理装置は、命令およびデータを、読み取り専用メモリまたはランダムアクセスメモリまたはこれら双方から受ける。コンピュータの必須要素は、命令を実施または実行するための中央処理装置と、命令およびデータを格納するための1つ以上のメモリデバイスとである。一般的に、コンピュータは、データを格納するための1つ以上の大量記憶装置たとえば磁気、光磁気ディスク、または光ディスクを含む、または、上記大量記憶装置からデータを受ける、これにデータを転送する、またはこれら双方のために、上記大量記憶装置に作動的に結合される。しかしながら、コンピュータはこのようなデバイスを有していなくてもよい。加えて、コンピュータは別のデバイスに、たとえば、例を挙げると、携帯電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤー、ゲーム機、グローバルポジショニングシステム(GPS)受信機、またはポータブル記憶装置たとえばユニバーサル・シリアル・バス(USB)フラッシュデバイスに、埋め込まれていてもよい。
【0093】
コンピュータプログラム命令およびデータを格納するのに適したコンピュータ読取可能媒体は、すべての形態の不揮発性メモリ、媒体およびメモリデバイスを含み、これは、一例として、半導体メモリデバイスたとえばEPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスクたとえば内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD ROMおよびDVD-ROMディスクを含む。プロセッサおよびメモリに、専用論理回路を補充してもよく、専用論理回路にプロセッサおよびメモリが組み込まれていてもよい。
【0094】
ユーザとのやり取りために、本明細書に記載の主題の実施形態は、ユーザに対して情報
を表示するためのディスプレイデバイスたとえばCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタと、ユーザがコンピュータに入力を与えることができるようにするためのキーボードおよびポインティングデバイスたとえばマウスまたはトラックボールとを有するコンピュータ上で実現することができる。その他の種類のデバイスを用いてユーザとのやり取りが行われるようにしてもよい。たとえば、ユーザに与えられるフィードバックは、任意の形態の感覚フィードバックたとえば視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってもよく、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受けることができる。加えて、コンピュータは、ユーザとの対話を、ユーザが使用するデバイスに文書を送信するかまたはこのデバイスから文書を受信することによって、たとえば、ウェブブラウザから受信した要求に応じてユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによって、実現してもよい。
【0095】
本明細書に記載の主題の実施形態は、たとえばデータサーバとしてバックエンドコンポーネントを含む計算システム、または、ミドルウェアコンポーネントたとえばアプリケーションサーバを含む計算システム、または、フロントエンドコンポーネント、たとえば、本明細書に記載の主題を実現したものとユーザとのやり取りを可能にするためのグラフィカルユーザインターフェイスもしくはウェブブラウザを有するクライアントコンピュータを含む計算システム、または、このようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントのうちの1つ以上の任意の組み合わせを含む計算システムにおいて、実現することができる。当該システムのコンポーネントは、デジタルデータ通信の形態または媒体たとえば通信ネットワークによって相互接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、たとえばインターネットを含む。
【0096】
計算システムはクライアントとサーバとを含み得る。クライアントとサーバは、通常は互いに離れており、通信ネットワークを通してやり取りするのが一般的である。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されクライアントとサーバとの関係を有するコンピュータプログラムによって発生する。いくつかの実施形態において、サーバは、データ、たとえばHTMLページを、クライアントとして機能するユーザデバイスに、たとえばユーザデバイスとやり取りするユーザに対してデータを表示するためおよびユーザからユーザ入力を受けるために、送信する。ユーザデバイスにおいて、たとえばユーザとのやり取りの結果発生したデータは、サーバでユーザデバイスから受信することができる。
【0097】
本明細書には実装の具体的詳細事項が多く含まれているが、これらは、どの発明の範囲またはクレームし得るものの範囲の限定としても解釈されてはならないものであって、むしろ、特定の発明の特定の実施形態に固有であり得る特徴の説明として解釈されるべきものである。本明細書において、別々の実施形態という観点で記載されている特定の特徴は、1つの実施形態において組み合わせ実現することも可能である。逆に、1つの実施形態という観点から記載されている各種特徴を、複数の実施形態において別々に、または任意の適切な下位の組み合わせとして実現することも可能である。加えて、上記特徴は、特定の組み合わせで機能するものとして記載され最初にそういうものとしてクレームされている場合があるが、クレームされている組み合わせに含まれる1つ以上の特徴は、場合によってはこの組み合わせから省略することができる。
【0098】
同様に、動作は図面において特定の順序で示されているが、これは、このような動作が、示されている特定の順序もしくは連続した順序で実行されることを要する、または、示されているすべての動作が所望の結果を得るために実行されることを要する、と理解されてはならない。特定の状況ではマルチタスキングおよび並列処理が好都合である場合があ
る。加えて、上記実施形態における各種システムモジュールおよびコンポーネントの分離は、すべての実施形態においてこのような分離を要するものと理解されてはならない。記載されているプログラムコンポーネントおよびシステムは一般的に、1つのソフトウェアプロダクトに統合できる、または、パッケージングして複数のソフトウェアプロダクトにできることが、理解されるはずである。
【0099】
開示されている技術のさらに他の実装例を以下の例で説明する。
例1:畳み込みニューラルネットワーク層の計算をより効率的に実行するためのコンピュータによって実施される方法であって、上記畳み込みニューラルネットワーク層は、X×Y×Z入力テンソルを受け1つ以上の畳み込みニューラルネットワーク層ウェイト行列を用いて上記受けた入力テンソルを処理することによりU×V×W出力テンソルを生成するように構成されており、上記方法は、上記X×Y×Z入力テンソルをX’×Y’×Z’入力テンソルに変換するステップを含み、X’はX以下、Y’はY以下、Z’はZ以上であり、1つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得するステップを含み、(i)上記修正されたウェイト行列は、上記X’×Y’×Z’入力テンソルに対して作用することにより、U’×V’×W’出力テンソルを生成し、(ii)上記U’×V’×W’出力テンソルは、変換されたU×V×W出力テンソルを含み、U’はU以下、V’はV以下、W’はW以上であり、上記修正されたウェイト行列を用いて上記X’×Y’×Z’入力テンソルを処理することにより上記U’×V’×W’出力テンソルを生成するステップを含み、上記U’×V’×W’出力テンソルは上記U×V×W出力テンソルを含む。
【0100】
例2:X’は自然数Nで割ったXのシーリング(ceiling)に等しく、Y’は自然数M
で割ったYのシーリングに等しく、Z’はZにNMを掛けたものに等しい、例1に記載の方法。
【0101】
例3:上記X×Y×Z入力テンソルはXY第1入力を表し、上記X’×Y’×Z’入力テンソルはX’Y’スーパー入力を表し、各スーパー入力は複数の第1入力を含む、例2に記載の方法。
【0102】
例4:上記複数の第1入力の数はNM個の入力に等しい、例3に記載の方法。
例5:上記X’×Y’×Z’入力テンソルに対する上記修正されたウェイト行列の作用は、上記X×Y×Z入力テンソルに対する上記畳み込みニューラルネットワーク層ウェイト行列の作用と同等である、例1~例4のいずれか1つに記載の方法。
【0103】
例6:上記修正されたウェイト行列のエントリは、1つ以上の畳み込みニューラルネットワーク層ウェイト行列を含む、例1~例5のいずれか1つに記載の方法。
【0104】
例7:上記修正されたウェイト行列は、バンド構造を有する行列を含む、例1~例6のいずれか1つに記載の方法。
【0105】
例8:U’は自然数Pで割ったUのシーリング(ceiling)に等しく、V’は自然数Q
で割ったVのシーリングに等しく、W’はWにPQを掛けたものに等しい、例1~例7のいずれか1つに記載の方法。
【0106】
例9:上記畳み込みニューラルネットワーク層は、X次元のストライドSとY次元のストライドTとを含み、ストライドS、Tと、出力テンソルU×V×Wと、変換された出力テンソルU’×V’×W’との関係は、U’=ceiling(U/NS)およびV’=ceiling(V/MT)によって示される、例8に記載の方法。
【0107】
例10:上記U×V×W出力テンソルはUV第1出力を表し、上記U’×V’×W’出力テンソルはU’V’スーパー出力を表し、各スーパー出力は複数の第1出力を含む、例8または例9に記載の方法。
【0108】
例11:上記複数の第1出力はPQ個の出力に等しい、例10に記載の方法。
例12:上記畳み込みニューラルネットワーク層はプーリングサブ層を含む、例1~例11のいずれか1つに記載の方法。
【0109】
例13:上記方法は、上記プーリングサブ層を、上記変換された入力テンソルに対するストライド処理に置き換えるステップをさらに含む、例12に記載の方法。
【0110】
例14:上記畳み込みニューラルネットワーク層はカーネルストライド処理を含み、上記方法は、上記変換された入力テンソルおよび修正されたウェイト行列に基づいて効率的なカーネルストライド処理を実施するステップをさらに含む、例12または例13に記載の方法。
【0111】
例15:上記U×V×W出力テンソルはUV第1出力を表し、上記U’×V’×W’出力テンソルはU’V’スーパー出力を表し、各スーパー出力は複数の第1出力を含み、上記複数の第1出力の中の第1出力の数は、上記畳み込みニューラルネットワーク層ウェイト行列の次元に依存する、例1~例14のいずれか1つに記載の方法。
【0112】
例16:上記U×V×W出力テンソルはUV第1出力を表し、上記U’×V’×W’出力テンソルはU’V’スーパー出力を表し、各スーパー出力は複数の第1出力を含み、上記複数の第1出力の中の出力の数は、(i)上記畳み込みニューラルネットワーク層のアーキテクチャ、(ii)上記畳み込みニューラルネットワーク層を含むニューラルネットワークモデルのアーキテクチャ、または(iii)上記畳み込みニューラルネットワーク層を実現する装置、のうちの1つ以上に依存する、例1~例15のいずれか1つに記載の方法。
【0113】
例17:上記1つ以上の畳み込みニューラルネットワーク層ウェイト行列の修正は、ソフトウェアのみの修正である、例1~例16のいずれか1つに記載の方法。
【0114】
例18:1つ以上のコンピュータと1つ以上の記憶装置とを備えるシステムであって、上記1つ以上の記憶装置は、上記1つ以上のコンピュータによって実行されると上記1つ以上のコンピュータに動作を実行させる演算可能な命令を格納し、上記動作は、X×Y×Z入力テンソルを受け1つ以上の畳み込みニューラルネットワーク層ウェイト行列を用いて上記受けた入力テンソルを処理することによりU×V×W出力テンソルを生成するように構成された畳み込みニューラルネットワーク層の計算をより効率的に実行するための動作であり、上記動作は、上記X×Y×Z入力テンソルをX’×Y’×Z’入力テンソルに変換することを含み、X’はX以下、Y’はY以下、Z’はZ以上であり、1つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得することを含み、(i)上記修正されたウェイト行列は、上記X’×Y’×Z’入力テンソルに対して作用することにより、U’×V’×W’出力テンソルを生成し、(ii)上記U’×V’×W’出力テンソルは、変換されたU×V×W出力テンソルを含み、U’はU以下、V’はV以下、W’はW以上であり、上記修正されたウェイト行列を用いて上記X’×Y’×Z’入力テンソルを処理することにより上記U’×V’×W’出力テンソルを生成することを含み、上記U’×V’×W’出力テンソルは上記U×V×W出力テンソルを含む。
【0115】
例19:X’は自然数Nで割ったXのシーリング(ceiling)に等しく、Y’は自然数
Mで割ったYのシーリングに等しく、Z’はZにNMを掛けたものに等しい、例18に記
載のシステム。
【0116】
例20:上記X×Y×Z入力テンソルはXY第1入力を表し、上記X’×Y’×Z’入力テンソルはX’Y’スーパー入力を表し、各スーパー入力は複数の第1入力を含む、例19に記載のシステム。
【0117】
例21:上記複数の第1入力の数はNM個の入力に等しい、例20に記載のシステム。
例22:上記X’×Y’×Z’入力テンソルに対する上記修正されたウェイト行列の作用は、上記X×Y×Z入力テンソルに対する上記畳み込みニューラルネットワーク層ウェイト行列の作用と同等である、例18~例21のいずれか1つに記載のシステム。
【0118】
例23:上記修正されたウェイト行列のエントリは、1つ以上の畳み込みニューラルネットワーク層ウェイト行列を含む、例18~例22のいずれか1つに記載のシステム。
【0119】
例24:上記修正されたウェイト行列は、バンド構造を有する行列を含む、例18~例23のいずれか1つに記載のシステム。
【0120】
例25:U’は自然数Pで割ったUのシーリング(ceiling)に等しく、V’は自然数
Qで割ったVのシーリングに等しく、W’はWにPQを掛けたものに等しい、例18~例24のいずれか1つに記載のシステム。
【0121】
例26:上記畳み込みニューラルネットワーク層は、X次元のストライドSとY次元のストライドTとを含み、ストライドS、Tと、出力テンソルU×V×Wと、変換された出力テンソルU’×V’×W’との関係は、U’=ceiling(U/NS)およびV’=ceiling(V/MT)によって示される,例25に記載のシステム。
【0122】
例27:上記U×V×W出力テンソルはUV第1出力を表し、上記U’×V’×W’出力テンソルはU’V’スーパー出力を表し、各スーパー出力は複数の第1出力を含む、例25または例26に記載のシステム。
【0123】
例28:上記複数の第1出力はPQ個の出力に等しい、例27に記載のシステム。
例29:上記畳み込みニューラルネットワーク層はプーリングサブ層を含む、例18に記載のシステム。
【0124】
例30:上記動作は、上記プーリングサブ層を、上記変換された入力テンソルに対するストライド処理に置き換えることをさらに含む、例29に記載のシステム。
【0125】
例31:上記畳み込みニューラルネットワーク層はカーネルストライド処理を含み、上記方法は、上記変換された入力テンソルおよび修正されたウェイト行列に基づいて効率的なカーネルストライド処理を実施することをさらに含む、例18~例30のいずれか1つに記載のシステム。
【0126】
例32:上記U×V×W出力テンソルはUV第1出力を表し、上記U’×V’×W’出力テンソルはU’V’スーパー出力を表し、各スーパー出力は複数の第1出力を含み、上記複数の第1出力の中の第1出力の数は、上記畳み込みニューラルネットワーク層ウェイト行列の次元に依存する、例18~例31のいずれか1つに記載のシステム。
【0127】
例33:上記U×V×W出力テンソルはUV第1出力を表し、上記U’×V’×W’出力テンソルはU’V’スーパー出力を表し、各スーパー出力は複数の第1出力を含み、上記複数の第1出力の中の出力の数は、(i)上記畳み込みニューラルネットワーク層のア
ーキテクチャ、(ii)上記畳み込みニューラルネットワーク層を含むニューラルネットワークモデルのアーキテクチャ、または(iii)上記畳み込みニューラルネットワーク層を実現する装置、のうちの1つ以上に依存する、例18~例32のいずれか1つに記載のシステム。
【0128】
例34:上記1つ以上の畳み込みニューラルネットワーク層ウェイト行列の修正は、ソフトウェアのみの修正である、例18~例33のいずれか1つに記載のシステム。
【0129】
例35:1つ以上のコンピュータによって実行されると上記1つ以上のコンピュータに動作を実行させる命令で符号化されたコンピュータ記憶媒体であって、上記動作は、X×Y×Z入力テンソルを受け1つ以上の畳み込みニューラルネットワーク層ウェイト行列を用いて上記受けた入力テンソルを処理することによりU×V×W出力テンソルを生成するように構成された畳み込みニューラルネットワーク層の計算をより効率的に実行するための動作であり、上記動作は、上記X×Y×Z入力テンソルをX’×Y’×Z’入力テンソルに変換することを含み、X’はX以下、Y’はY以下、Z’はZ以上であり、1つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得することを含み、(i)上記修正されたウェイト行列は、上記X’×Y’×Z’入力テンソルに対して作用することにより、U’×V’×W’出力テンソルを生成し、(ii)上記U’×V’×W’出力テンソルは、変換されたU×V×W出力テンソルを含み、U’はU以下、V’はV以下、W’はW以上であり、上記修正されたウェイト行列を用いて上記X’×Y’×Z’入力テンソルを処理することにより上記U’×V’×W’出力テンソルを生成することを含み、上記U’×V’×W’出力テンソルは上記U×V×W出力テンソルを含む。
【0130】
当該主題の具体的な実施形態は上に述べた通りである。その他の実施形態は以下の請求項の範囲に含まれる。たとえば、請求項に記載の動作は、異なる順序で実行されてそれでもなお所望の結果を得ることができる。一例として、添付の図面に記載されているプロセスは、必ずしも示されている通りの特定の順序または連続した順序によって所望の結果を得ることを要している訳ではない。特定の実装例において、マルチタスキングおよび並列処理が好都合である場合がある。
図1A
図1B
図2
図3
図4
図5