(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-08-08
(54)【発明の名称】ニューラルネットワークのバンクバランス型疎活性化および結合活性化重み疎トレーニングのためのシステムおよび方法
(51)【国際特許分類】
G06N 3/084 20230101AFI20240801BHJP
【FI】
G06N3/084
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024509037
(86)(22)【出願日】2022-08-15
(85)【翻訳文提出日】2024-03-29
(86)【国際出願番号】 CN2022112435
(87)【国際公開番号】W WO2023020419
(87)【国際公開日】2023-02-23
(32)【優先日】2021-08-16
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】523062486
【氏名又は名称】モフェット インターナショナル カンパニー,リミティド
(74)【代理人】
【識別番号】100099759
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100092624
【氏名又は名称】鶴田 準一
(74)【代理人】
【識別番号】100114018
【氏名又は名称】南山 知広
(74)【代理人】
【識別番号】100153729
【氏名又は名称】森本 有一
(72)【発明者】
【氏名】エンシュイ イェン
(57)【要約】
ニューラルネットワークトレーニングを最適化するための、コンピュータ記憶媒体にエンコードされたコンピュータプログラムを含む方法、システム、および装置が説明される。この方法は、ニューラルネットワークの現在の層における順方向伝播中に、現在の層の疎入力テンソルおよび疎重みテンソルに基づいて、高密度出力テンソルを生成し、高密度出力テンソルを疎化して、疎出力テンソルを取得することと、ニューラルネットワークの現在の層における逆方向伝播中に、疎出力テンソルに基づいて、第1の疎導関数テンソルを決定し、現在の層の第1の疎導関数テンソルおよび疎重みテンソルに基づいて、高密度導関数テンソルを取得し、高密度導関数テンソルを疎化して、第2の疎導関数テンソルを取得することと、第1の疎導関数テンソルおよび第2の疎導関数テンソルに基づいて、ニューラルネットワークの重みテンソルをトレーニングすることとを含むことができる。
【特許請求の範囲】
【請求項1】
ニューラルネットワークトレーニングを最適化するためのコンピュータ実施方法であって、
ニューラルネットワークの現在の層における順方向伝播中に、
前記現在の層の疎入力テンソルおよび疎重みテンソルに基づいて、高密度出力テンソルを生成し、
前記高密度出力テンソルを疎化して、疎出力テンソルを取得することと、
前記ニューラルネットワークの前記現在の層における逆方向伝播中に、
前記疎出力テンソルに基づいて、第1の疎導関数テンソルを決定し、
前記現在の層の前記第1の疎導関数テンソルおよび前記疎重みテンソルに基づいて、高密度導関数テンソルを取得し、
前記高密度導関数テンソルを疎化して、第2の疎導関数テンソルを取得することと、
前記第1の疎導関数テンソルおよび前記第2の疎導関数テンソルに基づいて、前記ニューラルネットワークの重みテンソルをトレーニングすることとを備える、方法。
【請求項2】
前記高密度出力テンソルは、前記現在の層の前記疎入力テンソルと前記疎重みテンソルとのテンソル積を備え、
前記高密度導関数テンソルは、前記現在の層の前記第1の疎導関数テンソルと前記疎重みテンソルとのテンソル積を備える、請求項1に記載の方法。
【請求項3】
前記ニューラルネットワークの前記重みテンソルをトレーニングすることは、
前記第2の疎導関数テンソルに基づいて、前の層のための新たな疎重みテンソルを決定することを備える、請求項1に記載の方法。
【請求項4】
前記ニューラルネットワークの前記重みテンソルをトレーニングすることは、
前記第1の疎導関数テンソルおよび前記疎入力テンソルに基づいて、前記現在の層のための新たな疎重みテンソルを決定することを備える、請求項1に記載の方法。
【請求項5】
前記ニューラルネットワークの前記現在の層は、重みテンソルマスクに対応し、
前記現在の層のための新たな疎重みテンソルを決定することは、
前記第1の疎導関数テンソルと前記疎入力テンソルの転置とのテンソル積に基づいて、高密度導関数重みテンソルを取得することと、
前記重みテンソルマスクを前記高密度導関数重みテンソルに適用することによって、前記高密度導関数重みテンソルにおける1つまたは複数の重みを無効化して、前記現在の層のための前記新たな疎重みテンソルを取得することとを備える、請求項4に記載の方法。
【請求項6】
前記高密度導関数重みテンソルは、前記ニューラルネットワークの前記現在の層における複数の重みパラメータに対応する複数の勾配を備える、請求項5に記載の方法。
【請求項7】
前記現在の層のための新たな疎重みテンソルを決定することは、
前記第1の疎導関数テンソルと前記疎入力テンソルの転置とのテンソル積に基づいて、高密度導関数重みテンソルを取得することと、
上位K個活性化関数を、前記高密度導関数重みテンソルに適用して、前記現在の層のための前記新たな疎重みテンソルを取得することとを備える、請求項4に記載の方法。
【請求項8】
前記上位K個活性化関数を適用することは、
前記高密度導関数重みテンソルの各行または列を、プロセッサのメモリバンクに対応する複数のバンクに分割することと、
前記複数のバンクのそれぞれについて、前記バンク内の上位K個の重みを決定し、前記バンク内の前記上位K個の重みではない重みを無効化することとを備える、請求項7に記載の方法。
【請求項9】
前記高密度出力テンソルを疎化して、疎出力テンソルを取得することは、
上位K個活性化関数を前記高密度出力テンソルに適用して、前記疎出力テンソルを取得することを備え、
前記高密度導関数テンソルを疎化して、第2の疎導関数テンソルを取得することは、
前記上位K個活性化関数を前記高密度導関数テンソルに適用して、前記第2の疎導関数テンソルを取得することを備える、請求項1に記載の方法。
【請求項10】
前記ニューラルネットワークの前記現在の層は、高密度重みテンソルを備え、重みテンソルマスクに対応しており、前記現在の層の前記疎重みテンソルは、
前記重みテンソルマスクを前記高密度重みテンソルに適用することによって、前記高密度重みテンソルにおける1つまたは複数の重みを無効化して、前記疎重みテンソルを取得することによって取得される、請求項1に記載の方法。
【請求項11】
1つまたは複数のプロセッサと、前記1つまたは複数のプロセッサに結合され、以下を備える動作をシステムに実行させるために、前記1つまたは複数のプロセッサによって実行可能な命令で構成された1つまたは複数の非一時的なコンピュータ可読メモリとを備えるシステムであって、前記動作は、
ニューラルネットワークの現在の層における順方向伝播中に、
前記現在の層の疎入力テンソルおよび疎重みテンソルに基づいて、高密度出力テンソルを生成し、前記高密度出力テンソルを疎化して、疎出力テンソルを取得することと、
前記ニューラルネットワークの前記現在の層における逆方向伝播中に、
前記疎出力テンソルに基づいて、第1の疎導関数テンソルを決定し、
前記現在の層の前記第1の疎導関数テンソルおよび前記疎重みテンソルに基づいて、高密度導関数テンソルを取得し、
前記高密度導関数テンソルを疎化して、第2の疎導関数テンソルを取得することと、
前記第1の疎導関数テンソルおよび前記第2の疎導関数テンソルに基づいて、前記ニューラルネットワークの重みテンソルをトレーニングすることとを備える、システム。
【請求項12】
前記ニューラルネットワークの前記重みテンソルをトレーニングすることは、
前記第1の疎導関数テンソルおよび前記疎入力テンソルに基づいて、前記現在の層のための新たな疎重みテンソルを決定することを備える、請求項11に記載のシステム。
【請求項13】
前記ニューラルネットワークの前記現在の層は、重みテンソルマスクに対応し、前記現在の層のための新たな疎重みテンソルを決定することは、
前記第1の疎導関数テンソルと前記疎入力テンソルの転置とのテンソル積に基づいて、高密度導関数重みテンソルを取得することと、
前記重みテンソルマスクを前記高密度導関数重みテンソルに適用することによって、前記高密度導関数重みテンソルにおける1つまたは複数の重みを無効化して、前記現在の層のための前記新たな疎重みテンソルを取得することとを備える、請求項12に記載のシステム。
【請求項14】
前記ニューラルネットワークの前記現在の層は、重みテンソルマスクに対応し、前記現在の層のための新たな疎重みテンソルを決定することは、
前記第1の疎導関数テンソルと前記疎入力テンソルの転置とのテンソル積に基づいて、高密度導関数重みテンソルを取得することと、
前記重みテンソルマスクを前記高密度導関数重みテンソルに適用することによって、前記高密度導関数重みテンソルにおける1つまたは複数の重みを無効化して、前記現在の層のための前記新たな疎重みテンソルを取得することとを備える、請求項12に記載のシステム。
【請求項15】
前記高密度出力テンソルを疎化して、疎出力テンソルを取得することは、
上位K個活性化関数を前記高密度出力テンソルに適用して、前記疎出力テンソルを取得することを備え、
前記高密度導関数テンソルを疎化して、第2の疎導関数テンソルを取得することは、
前記上位K個活性化関数を前記高密度導関数テンソルに適用して、前記第2の疎導関数テンソルを取得することを備える、請求項11に記載のシステム。
【請求項16】
1つまたは複数のプロセッサによって実行可能な命令を用いて、以下を備える動作を前記1つまたは複数のプロセッサに実行させるように構成された非一時的なコンピュータ可読記憶媒体であって、前記動作は、
ニューラルネットワークの現在の層における順方向伝播中に、
前記現在の層の疎入力テンソルおよび疎重みテンソルに基づいて、高密度出力テンソルを生成し、
前記高密度出力テンソルを疎化して、疎出力テンソルを取得することと、
前記ニューラルネットワークの前記現在の層における逆方向伝播中に、
前記疎出力テンソルに基づいて、第1の疎導関数テンソルを決定し、
前記現在の層の前記第1の疎導関数テンソルおよび前記疎重みテンソルに基づいて、高密度導関数テンソルを取得し、
前記高密度導関数テンソルを疎化して、第2の疎導関数テンソルを取得することと、
前記第1の疎導関数テンソルおよび前記第2の疎導関数テンソルに基づいて、前記ニューラルネットワークの重みテンソルをトレーニングすることとを備える、非一時的なコンピュータ可読記憶媒体。
【請求項17】
前記ニューラルネットワークの前記重みテンソルをトレーニングすることは、
前記第1の疎導関数テンソルおよび前記疎入力テンソルに基づいて、前記現在の層のための新たな疎重みテンソルを決定することを備える、請求項16に記載の非一時的なコンピュータ可読記憶媒体。
【請求項18】
前記ニューラルネットワークの前記現在の層は、重みテンソルマスクに対応し、
前記現在の層のための新たな疎重みテンソルを決定することは、
前記第1の疎導関数テンソルと前記疎入力テンソルの転置とのテンソル積に基づいて、高密度導関数重みテンソルを取得することと、
前記重みテンソルマスクを前記高密度導関数重みテンソルに適用することによって、前記高密度導関数重みテンソルにおける1つまたは複数の重みを無効化して、前記現在の層のための前記新たな疎重みテンソルを取得することとを備える、請求項17に記載の非一時的なコンピュータ可読記憶媒体。
【請求項19】
前記ニューラルネットワークの前記現在の層は、重みテンソルマスクに対応し、
前記現在の層のための新たな疎重みテンソルを決定することは、
前記第1の疎導関数テンソルと前記疎入力テンソルの転置とのテンソル積に基づいて、高密度導関数重みテンソルを取得することと、
前記重みテンソルマスクを前記高密度導関数重みテンソルに適用することによって、前記高密度導関数重みテンソルにおける1つまたは複数の重みを無効化して、前記現在の層のための前記新たな疎重みテンソルを取得することとを備える、請求項17に記載の非一時的なコンピュータ可読記憶媒体。
【請求項20】
前記高密度出力テンソルを疎化して、疎出力テンソルを取得することは、
上位K個活性化関数を前記高密度出力テンソルに適用して、前記疎出力テンソルを取得することを備え、
前記高密度導関数テンソルを疎化して、第2の疎導関数テンソルを取得することは、
前記上位K個活性化関数を前記高密度導関数テンソルに適用して、前記第2の疎導関数テンソルを取得することを備える、請求項16に記載の非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、人工知能(AI)モデルのトレーニングに関し、より具体的には、バンクバランス型ニューラルネットワーク(NN)の結合活性化重み疎(以下、結合A-W疎と称される)トレーニングに関する。
【背景技術】
【0002】
ニューラルネットワーク(NN)は現在、画像およびビデオ認識、レコメンダシステム、分類、医用画像分析、および自然言語処理など、多くの最新の人工知能(AI)アプリケーションの基盤である。NNを推論用に展開する前に、トレーニングする必要がある。NNモデルをトレーニングすることは、トレーニングデータセットを使用して、モデル重みを繰り返し更新し、入力から出力への正確なマッピングを作成することを含む。今日のNNトレーニングプロセスは一般に、順方向伝播と逆方向伝播との多数の反復を含む。計算されるトレーニングデータ(たとえば、CNNにおける畳み込み)が膨大で、各トレーニング反復中に多くの重みがトレーニング/更新されるため、NNモデルのトレーニングは、計算量が多く、したがって、コストがかかる。
【0003】
近年、たとえば、NNの重みテンソルをプルーニングして、トレーニングされるNNモデルのサイズと、推論のために計算されるデータ量とを低減するように、NNに疎性を導入することによって、NNの効率を向上させる様々なアプローチが開発されている。しかしながら、疎性は、NNのトレーニング速度を高めるために十分に活用されていない。この開示は、順方向伝播と逆方向伝播との両方の間に疎性を導入して、NNトレーニングプロセスの効率を向上するための新たなソリューションを説明する。それに加えて、重みテンソルおよび活性化テンソルに導入された疎性は、ハードウェア効率を最適化するために、バンクバランス型として調整される。
【発明の概要】
【0004】
本明細書の様々な実施形態は、ニューラルネットワークトレーニングを最適化するためのシステム、方法、および非一時的なコンピュータ可読媒体を含むことができる。
【0005】
1つの態様によれば、この方法は、ニューラルネットワークの現在の層における順方向伝播中に、現在の層の疎入力テンソルおよび疎重みテンソルに基づいて、高密度出力テンソルを生成し、高密度出力テンソルを疎化することによって、疎出力テンソルを取得することと、ニューラルネットワークの現在の層における逆方向伝播中に、疎出力テンソルに基づいて、第1の疎導関数テンソルを決定し、現在の層の第1の疎導関数テンソルおよび疎重みテンソルに基づいて、高密度導関数テンソルを取得し、高密度導関数テンソルを疎化することによって、第2の疎導関数テンソルを取得することと、第1の疎導関数テンソルおよび第2の疎導関数テンソルに基づいて、ニューラルネットワークの重みテンソルをトレーニングすることとを含むことができる。
【0006】
いくつかの実施形態では、高密度出力テンソルは、現在の層の疎入力テンソルと疎重みテンソルとのテンソル積を備え、高密度導関数テンソルは、現在の層の第1の疎導関数テンソルと疎重みテンソルとのテンソル積を備える。
【0007】
いくつかの実施形態では、ニューラルネットワークの重みテンソルをトレーニングすることは、第2の疎導関数テンソルに基づいて、前の層のための新たな疎重みテンソルを決定することを備える。
【0008】
いくつかの実施形態では、ニューラルネットワークの重みテンソルをトレーニングすることは、第1の疎導関数テンソルおよび疎入力テンソルに基づいて、現在の層のための新たな疎重みテンソルを決定することを備える。
【0009】
いくつかの実施形態では、ニューラルネットワークの現在の層は、重みテンソルマスクに対応し、現在の層のための新たな疎重みテンソルを決定することは、第1の疎導関数テンソルと疎入力テンソルの転置とのテンソル積に基づいて、高密度導関数重みテンソルを取得することと、重みテンソルマスクを高密度導関数重みテンソルに適用することによって、高密度導関数重みテンソルにおける1つまたは複数の重みを無効化して、現在の層のための新たな疎重みテンソルを取得することとを備える。
【0010】
いくつかの実施形態では、高密度導関数重みテンソルは、ニューラルネットワークの現在の層における複数の重みパラメータに対応する複数の勾配を備える。
【0011】
いくつかの実施形態では、現在の層のための新たな疎重みテンソルを決定することは、第1の疎導関数テンソルと疎入力テンソルの転置とのテンソル積に基づいて、高密度導関数重みテンソルを取得することと、上位K個活性化関数を、高密度導関数重みテンソルに適用して、現在の層のための新たな疎重みテンソルを取得することとを備える。
【0012】
いくつかの実施形態では、上位K個活性化関数を適用することは、高密度導関数重みテンソルの各行または列を、プロセッサのメモリバンクに対応する複数のバンクに分割することと、複数のバンクのそれぞれについて、バンク内の上位K個の重みを決定し、バンク内の上位K個の重みではない重みを無効化することとを備える。
【0013】
いくつかの実施形態では、高密度出力テンソルを疎化することによって疎出力テンソルを取得することは、上位K個活性化関数を高密度出力テンソルに適用して、疎出力テンソルを取得することを備え、高密度導関数テンソルを疎化することによって第2の疎導関数テンソルを取得することは、上位K個活性化関数を高密度導関数テンソルに適用して、第2の疎導関数テンソルを取得することを備える。
【0014】
いくつかの実施形態では、ニューラルネットワークの現在の層は、高密度重みテンソルを備え、重みテンソルマスクに対応しており、現在の層の疎重みテンソルは、重みテンソルマスクを高密度重みテンソルに適用することによって、高密度重みテンソルにおける1つまたは複数の重みを無効化して、疎重みテンソルを取得することによって取得される。
【0015】
別の態様によれば、ニューラルネットワークトレーニングを最適化するためのシステムが説明される。このシステムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合され、以下を含む動作をシステムに実行させるために、1つまたは複数のプロセッサによって実行可能な命令で構成された1つまたは複数の非一時的なコンピュータ可読メモリとを備えることができ、この動作は、ニューラルネットワークの現在の層における順方向伝播中に、現在の層の疎入力テンソルおよび疎重みテンソルに基づいて、高密度出力テンソルを生成し、高密度出力テンソルを疎化することによって、疎出力テンソルを取得することと、ニューラルネットワークの現在の層における逆方向伝播中に、疎出力テンソルに基づいて、第1の疎導関数テンソルを決定し、現在の層の第1の疎導関数テンソルおよび疎重みテンソルに基づいて、高密度導関数テンソルを取得し、高密度導関数テンソルを疎化することによって、第2の疎導関数テンソルを取得することと、第1の疎導関数テンソルおよび第2の疎導関数テンソルに基づいて、ニューラルネットワークの重みテンソルをトレーニングすることとを含む。
【0016】
さらに別の態様によれば、ニューラルネットワークトレーニングを最適化するための非一時的なコンピュータ可読記憶媒体が説明される。非一時的なコンピュータ可読記憶媒体は、1つまたは複数のプロセッサによって実行可能な命令を用いて、以下を備える動作を1つまたは複数のプロセッサに実行させるように構成することができ、この動作は、ニューラルネットワークの現在の層における順方向伝播中に、現在の層の疎入力テンソルおよび疎重みテンソルに基づいて、高密度出力テンソルを生成し、高密度出力テンソルを疎化することによって、疎出力テンソルを取得することと、ニューラルネットワークの現在の層における逆方向伝播中に、疎出力テンソルに基づいて、第1の疎導関数テンソルを決定し、現在の層の第1の疎導関数テンソルおよび疎重みテンソルに基づいて、高密度導関数テンソルを取得し、高密度導関数テンソルを疎化することによって、第2の疎導関数テンソルを取得することと、第1の疎導関数テンソルおよび第2の疎導関数テンソルに基づいて、ニューラルネットワークの重みテンソルをトレーニングすることとを備える。
【0017】
本明細書に開示されるシステム、方法、および非一時的なコンピュータ可読媒体のこれらおよび他の特徴、ならびに構造の関連要素の動作の方法および機能、部品の組合せおよび製造の経済性は、以下の説明および添付の特許請求の範囲を、すべてが本明細書の一部を形成し、同様の参照番号が様々な図において対応する部分を示す添付図面を参照して考慮するとより明らかになるであろう。しかしながら、図面は例示および説明のみを目的としており、本発明の限定の定義として意図されていないと、明確に理解されるべきである。
【図面の簡単な説明】
【0018】
【
図1】様々な実施形態によるニューラルネットワーク(NN)の例示的なトレーニングプロセスを例示する図である。
【
図2】様々な実施形態によるNNの例示的な結合AW疎トレーニングを例示する図である。
【
図3】様々な実施形態によるNNの結合AW疎トレーニングにおける例示的な順方向伝播を例示する図である。
【
図4】様々な実施形態によるNNの結合AW疎トレーニングにおける例示的な逆方向伝播を例示する図である。
【
図5A】様々な実施形態によるバンクバランス型NNの結合AW疎トレーニングにおける例示的な重み勾配更新プロセスを例示する図である。
【
図5B】様々な実施形態によるバンクバランス型NNの結合AW疎トレーニングにおいて重み勾配を更新するための例示的な方法を例示する図である。
【
図5C】様々な実施形態によるバンクバランス型NNの結合AW疎トレーニングにおいて重み勾配を更新するための別の例示的な方法を例示する図である。
【
図6A】様々な実施形態によるバンクバランス型疎化テンソルを生成するための例示的な2D疎化を例示する図である。
【
図6B】様々な実施形態によるバンクバランス型疎化テンソルを生成するための例示的な3D疎化を例示する図である。
【
図7】様々な実施形態によるバンクバランス型NNの結合AW疎トレーニングの例示的な方法を例示する図である。
【
図8】本明細書で説明される実施形態のいずれかを実施できる例示的なコンピュータシステムを例示する図である。
【発明を実施するための形態】
【0019】
本明細書で説明される実施形態は、バンクバランス型NNの結合活性化重み疎(以下、結合A-W疎と称する)トレーニングのための方法、システム、装置を提供する。以下の説明では、本発明の特定の非限定的な実施形態が、図面を参照して説明される。本明細書に開示される任意の実施形態の特定の特徴および態様は、本明細書に開示される任意の他の実施形態の特定の特徴および態様とともに使用および/または組み合わせることができる。また、そのような実施形態は、一例であり、本発明の範囲内の少数の実施形態を単に例示するに過ぎないことも理解されるべきである。本発明に関連する当業者にとって明らかな様々な変更および修正は、添付の特許請求の範囲でさらに定義される本発明の精神、範囲、および考慮内であるとみなされる。
【0020】
図1は、様々な実施形態によるニューラルネットワーク(NN)の例示的なトレーニングプロセス100を例示している。この開示で説明される実施形態は、トレーニング効率を向上させるために、
図1における例示的なトレーニングプロセスの一部として、または、別の適切なNNトレーニング方法として実施することができる。
【0021】
図1に図示されるように、例示的なNNは、複数の層130、たとえば、層1,2,3,・・・,L,・・・などを含む。各層130は、重みテンソル、バイアステンソルなどの複数のパラメータを含むことができる。「テンソル」とは、ランク1テンソル(ベクトル)、ランク2テンソル(行列)、およびより高次のテンソルを含む、深層学習の領域における主要なデータ構造を称する。
【0022】
例示的なトレーニングプロセス100は、NNのパラメータをトレーニングするための複数の反復を含む。各反復は、順方向伝播(または順方向パス)110および逆方向伝播(または逆方向パス)120を含むことができる。順方向伝播110は、ニューラルネットワークの中間変数(出力を含む)を、入力層から出力層まで順番に計算および記憶することを含む。逆方向伝播120は、NNパラメータの勾配を計算することを含み、これは、NNのパラメータを更新するための基礎として使用することができる。
【0023】
例示目的のために、
図1における層Lは、順方向伝播110および逆方向伝播120に含まれる動作を説明するための例として選択される。前のL-1層からの入力テンソルが、a[L-1]であり、層Lが、重み項(たとえば、重みテンソル)w[L]およびバイアス項(たとえば、バイアステンソル)b[L]を有していると仮定する。中間変数は、z[L]=w[L]a[L-1]+b[L]として計算および明示することができ、ここで、wおよびaは、両方ともテンソルであり、zは、wとaのテンソル積である。中間変数zを、活性化関数φで実行した後、活性化テンソルを、a[L+1]=φ(z)として取得することができる。この活性化テンソルa[L+1]は、L+1(次の)層における順方向伝播のための入力として使用できる。いくつかの場合では、z[L]は、逆方向伝播120中の(たとえば、反復計算を回避する)計算のための中間変数としてキャッシュに格納することができる。それに加えて、逆方向伝播120中の不必要な外部メモリアクセスを回避するために、重みテンソルw[L]およびバイアステンソルb[L]をキャッシュに格納することもできる。順方向伝播プロセスは、NNの出力層まで継続する。出力層の出力テンソルは、損失(たとえば、現在のパラメータを用いて定量化されたNNのパフォーマンス)を決定するために、トレーニングデータのトレーニングラベルとともに損失関数に入力することができる。その後、損失を正則化項(L2正則化など)と組み合わせて、目的関数を決定することができる。
【0024】
逆方向伝播120の目的は、勾配を計算することである。その後、勾配を使用してNNの対応する重みパラメータを更新して、損失を最小化するか、または目的関数を最大化することができる。逆方向伝播120中、活性化テンソルの導関数を、すべての層にわたって反復的に計算することができる。たとえば、NNのL番目の層では、L番目の層の活性化テンソルの導関数を、∇a[L]として取得することができる。L番目の層の重みテンソルw[L]に∇a[L]を乗じて、(L-1)番目の層の活性化テンソルの導関数を取得することができる。このプロセスは、NNの第1の層まで継続することができる。ここで、乗算は、2つのテンソルのテンソル積を取得するための演算を称することができる。層Lでは、導関数∇a[L]と入力テンソルa[L]の転置とのテンソル積を、∇W[L]として示されるL番目の層における重みテンソルの導関数として計算することができる。∇W[L]に基づいて、L番目の層における重みパラメータを、トレーニングデータに適合するように更新することができる。上記で説明された導関数は、対応する変数の勾配と称することもできることに留意されたい。
【0025】
いくつかの実施形態では、トレーニング効率を向上させるために、順方向伝播、逆方向伝播、および重み勾配計算を含む、上記で説明されたステップのそれぞれに疎性を導入することができる。既存の疎化ベースのNNトレーニング方法は、通常、(たとえば、順方向パスでテンソルをプルーニングすることによって)順方向伝播に焦点を当てるが、逆方向伝播を無視する。以下に説明される実施形態は、トレーニング効率を最適化するために、導関数テンソルを含むすべてのテンソルが、順方向伝播と逆方向伝播との両方でプルーニングされる方法およびシステムを説明する。それに加えて、逆方向伝播の各ラウンド後に、各層において更新された重みテンソルは、バンクバランス型手法でプルーニングされるため、結果として得られるトレーニング済みNNは、プロセッサ(たとえば、GPU、TPU、NPU)におけるメモリバンクと整列されるなど、基礎となるハードウェアアーキテクチャのために最適化される。バンクバランス型NNは、(コアにおける負荷がバランスされる)マルチコアシステムを使用したバランス型並列処理をサポートし、バンクの競合を最小化する(一部のバンクへのアクセス輻輳を回避する)ことによって、推論中、メモリアクセスを最適化することができる。バンクに情報を格納するタイプのメモリでは、ランダムなアドレスで同じバンクに連続してアクセスすると、バンク競合が発生する可能性がある。たとえば、2つの連続したアクセスが同じバンク内の異なる行にある場合、これら2つのアクセスは、同時に実行できない場合がある。実際、多くのタイプのメモリ(たとえば、DDR)では、同じバンクにおける各メモリアクセスの間に、複数のサイクルの遅延が発生する可能性がある。たとえば、次のメモリアクセスが、同じバンクにおける異なる行にある場合、次のメモリアクセスは、完了するまでに12サイクル待機する必要がある場合がある。その結果、バンクの競合が、システムにおいて、大きな遅延を発生させる可能性がある。
【0026】
図2は、様々な実施形態によるNNの例示的な結合AW疎トレーニングを例示している。
図2に例示されるトレーニングプロセスは、1つのNN層で発生する順方向伝播110、逆方向伝播120、および重み勾配更新130を含む。
図2において使用されるインデクスは、例示目的のためであり、単に層の相対位置を示しており、これは、NNの他の層に一般化することができる。
【0027】
順方向伝播110中に、入力活性化テンソルを、前の層から受け取ることができる。いくつかの実施形態では、この入力活性化テンソルは、
図2においてA
1として示される疎入力テンソルにプルーニングすることができ、ここで、インデクス1は、現在の層が、層1であることを示す。その後、疎入力テンソルを、テンソル乗算を使用して、層1における重みテンソルと乗算して、次の層のための出力テンソルを取得することができる。いくつかの実施形態では、NNのサイズ、および処理されるデータの量を低減するために、現在の層1における重みテンソルを、Wとして示される疎重みテンソルにプルーニングすることができる。
図2に図示されるように、2つの疎テンソル、すなわちA1およびWに基づいて生成されたテンソル積R1は、テンソル乗算の性質によって、高密度になることができる。
【0028】
いくつかの実施形態では、この高密度テンソル積R1は、活性化演算および/または上位K個サンプリングを経て、非ゼロ値を低減し、A2として示される疎出力テンソルを取得することができ、ここで、インデクス2は、A2が、順方向伝播プロセス110において次の層のための入力テンソルとして使用されることを示す。活性化演算は、NNに非線形性を導入する非線形活性化関数を含むことができる。例示的な非線形活性化関数は、シグモイド、双曲線正接、および正規化線形関数(ReLU)を含む。ReLU関数は、要素ごとの活性化関数を適用して、高密度テンソル積R1における一部の出力(活性化)をフィルタで除外することができる。ReLU関数は、出力活性化テンソルのサイズを変更しない場合があるが、後続の層における計算効率を向上させるために、アクティブなニューロンの数を制限することができる。上位K個サンプリングは、高密度テンソル積R1内の各バンクにおいて、最大の大きさを有するK個の値を選択し、それらの値を保持することと、バンク内の他の値をゼロに設定することとを含むことができる。これらの活性化および/または上位K個演算は、絶対値が小さく重要ではない値/特徴のみがゼロ化またはプルーニングされるため、精度を犠牲にすることなく、トレーニング中のテンソルのフットプリントを効果的に低減する。
【0029】
上記で説明された順方向伝播110は継続し、NNの最後の層(たとえば、出力層)で終了する。その後、逆方向伝播120は、NNの重みおよび/または他のパラメータを更新するために、勾配を計算するために逆方向に(たとえば、NNの最後の層から最初の層へ)実行することができる。いくつかの実施形態では、
図2におけるNNの層1における逆方向伝播120は、疎出力テンソルA
2に基づいて、
【0030】
【数1】
として示される導関数テンソルを計算することで開始することができる。A
2が疎であるため、導関数テンソル
【0031】
【数2】
も疎である。ここで、導関数テンソルは、疎出力テンソルA
2における各非ゼロ値に対して導関数演算を実行することによって取得することができる。いくつかの実施形態では、この導関数テンソル
【0032】
【0033】
第1に、逆方向伝播120のための中間値として使用することができる。たとえば、層1における疎重みテンソルのテンソル積は、疎導関数テンソル
【0034】
【数4】
と乗算されて、疎入力テンソルA
1の導関数バージョンを取得することができ、これは、
【0035】
【数5】
と示すことができる。上記で説明されたように、2つの疎テンソル、たとえばWと
【0036】
【数6】
との積は、高密度になる可能性がある。いくつかの実施形態では、活性化および/または上位K個のサンプリングを適用して、
【0037】
【数7】
をプルーニングして、前の層(たとえば、層0)の疎導関数テンソル
【0038】
【数8】
を取得することができる。疎導関数テンソル
【0039】
【数9】
は、逆方向伝播120における次のステップのために使用することができる。
【0040】
第2に、
【0041】
【数10】
を使用して、層1において、重み勾配130を更新することができる。たとえば、
図2に図示されるように、層1における疎入力テンソルA
1と層1における疎導関数テンソル
【0042】
【数11】
とのテンソル積は、∇
Wとして示される重みパラメータの勾配を示す高密度テンソルであることができる。重みパラメータ∇
Wの勾配は、重みパラメータを更新するために、疎勾配テンソルにさらにプルーニングされてもよい。
【0043】
図示されるように、上記で説明されたNNの結合AW疎トレーニングは、順方向伝播110(たとえば、R1をA2へプルーニングする活性化演算および/または上位K個演算)と、逆方向伝播120(たとえば、
【0044】
【0045】
【数13】
へプルーニングする活性化演算および/または上位K個演算)の両方におけるステップを含む、トレーニングのすべてのステップにおいて疎性を利用する。
図5は、重み勾配更新プロセス130を更新する際に疎性がどのように導入されるかをさらに説明する。
【0046】
図3は、様々な実施形態によるNNの結合AW疎トレーニングにおける例示的な順方向伝播を例示している。
図3に例示されるプロセスは、
図2における順方向伝播110についてさらに詳細を提供する。
図3における値および表記は、例示目的のためである。
【0047】
図3において、疎入力テンソルA
1は、NNの現在の層で受け取られ、現在の層の重みテンソルWを用いて、たとえば行列乗算のような計算を実行する。
図3は、テンソルA
1とWとの両方を2D行列として図示している。いくつかの実施形態では、重みテンソルWは、重みテンソル内の重みの一部をマスクオフする疎重みテンソルマスクを適用することによって、プルーニングすることができる。マスクされている重みは、ゼロに設定されているか、無効化されているとみなすことができる。いくつかの実施形態では、NNの各層は、1つの対応する疎重みテンソルマスクを有することができる。疎重みテンソルマスクは、重みテンソルにおける重みの大きさに基づいて決定することができ、大きさが小さい重みほど、ゼロとしてマスクされる可能性が高い。
【0048】
いくつかの実施形態では、疎A1および疎Wが乗算されて高密度テンソルR1となり、その後、活性化関数、上位K個サンプリング、またはその両方を経ることによってプルーニングされ、疎テンソルA2を得ることができる。
【0049】
図4は、様々な実施形態によるNNの結合AW疎トレーニングにおける例示的な逆方向伝播を例示している。
図3に例示されるプロセスは、
図2における逆方向伝播120についての詳細を提供する。
図4における値および表記は、例示目的のためである。
【0050】
【0051】
【数14】
は、
図2および
図3における疎出力テンソルA
2に基づいて生成することができる。A
2は疎であり、導関数演算はゼロ値を変更しないため、結果として得られる導関数テンソル
【0052】
【数15】
も疎になる。NNの現在の層における重みテンソルWは、
図3において説明された疎重みテンソルマスクを使用してプルーニングすることができる。2つの疎テンソル
【0053】
【0054】
【数17】
として示される高密度テンソルになる可能性があり、これは、さらに、活性化、上位K個サンプリング、またはその両方を経ることによってプルーニングされ、疎テンソル
【0055】
【0056】
【数19】
は、
図5Aにおいて説明される前の層(たとえば、層0)において重みテンソルを更新するために使用することもできる。
【0057】
図5Aは、様々な実施形態によるバンクバランス型NNの結合AW疎トレーニングにおける例示的な重み勾配更新プロセスを例示している。
図2~
図4において説明された順方向伝播および逆方向伝播を用いると、疎導関数テンソル
【0058】
【数20】
は、NNの各層に対して取得することができ、ここで、iは、層のインデクスを称する。
図5Aにおいて、
【0059】
【0060】
【0061】
【数22】
と疎入力テンソルA
1の転置とのテンソル積は、∇
Wとして示される高密度導関数テンソルとなることができる。いくつかの実施形態では、高密度導関数テンソル∇
Wは、様々な手法でプルーニングすることができる。
【0062】
たとえば、
図5Aにおけるオプション1では、
図3において説明される疎重みテンソルマスクを、高密度導関数テンソル∇
Wに適用して、疎導関数テンソル∇
W’を取得することができる。疎重みテンソルマスクは、現在の層において重みの一部を非必須として識別し、これらの重みをゼロに設定する(たとえば、これらの重みまたはこれらの重みに対応する活性化を無効化する)ことができる。
図5Bは、様々な実施形態によるバンクバランス型NNの結合AW疎トレーニングにおいて、重み勾配を更新するためのオプション1を図示する図を例示している。
図5Bに図示されるように、既存の疎マスク520が、高密度導関数テンソル∇
Wに適用され、疎導関数テンソルが取得される。既存の疎マスク520は、高密度導関数テンソル∇
Wにおける対応する重みをマスクオフするための複数のゼロ値を含む。
【0063】
別の例として、
図5Aにおけるオプション2では、高密度導関数テンソル∇
Wは、等しいサイズの複数のバンクにセグメント化され得る。
図5Cは、様々な実施形態によるバンクバランス型NNの結合AW疎トレーニングにおける重み勾配を更新するためのオプション2を図示する図を例示している。
図5Cにおけるバンク530は、実施に応じて異なる手法で定義することができる。たとえば、バンク530は、高密度導関数テンソル∇
W内の列または行であってもよい。各バンク530内で、上位K個のサンプリングを実行して、最大の大きさ(最大の正の値および負の値)を有するK個の重みを特定し、バンク530内の他の重みをゼロとして設定することができ、それによって、疎導関数テンソル∇
W’を生成することができる。この上位K個のサンプリングベースのプルーニング方法を使用すると、生成された∇
W’は、バンクバランスをとることができ、すなわち、各バンク530は、同数の非ゼロ値を含む。実際の応用では、テンソルの各バンク530は、基礎となるハードウェアのローカルメモリ(たとえば、NNトレーニングアクセラレータ内のキャッシュ、外部メモリ)内のセグメントに対応する(たとえば、そこに格納される)ことができる。したがって、バンクバランス型テンソルは、ローカルメモリの異なるセグメント間で、非ゼロ値を均等に分散することができ、これにより、トレーニングおよび推論のために、よりバランスのとれた並列処理方式を容易にすることができる。以下の説明では、バンクバランス型疎化テンソルを生成する様々な手法が、
図6Aおよび
図6Bにおいて説明される。
【0064】
図6Aは、様々な実施形態によるバンクバランス型疎化テンソルを生成するための例示的な2D疎化を例示している。
図6Aにおいて、プルーニングされるテンソルは2D行列である。たとえば、入力テンソルまたは重みテンソルが3Dテンソルであると仮定すると、それを3次元のうちの1つの次元、たとえば、チャネル次元とともに、セグメント化して、複数の2D行列を取得することができる。
図6Aに例示される例示的な2D疎化方法は、複数の2D行列のそれぞれに適用可能である。
図6Aにおけるテンソルは、NNの文脈において重みテンソルまたは活性化テンソルを称する場合がある。
【0065】
図示されるように、Y
1として示される2D高密度行列は、多数の非ゼロ値を有することができる。行列のバンクバランスがとられた疎化バージョンを生成するには、2つの手法、すなわち、行方向の疎化610および列方向の疎化620がある。たとえば、行方向の疎化610では、2D高密度行列の各行を、同じサイズの複数のバンクにセグメント化することができる。各バンク内で、上位K個のサンプリングが実行されて、最大の大きさを有するK個の非ゼロ値が保持され、他の値がゼロに設定される。
図6Aにおいて、2D行列の各行は、2つのバンクにセグメント化され、上位2個のサンプリングが、各バンクに適用され、その中に2つの非ゼロ値が保持される。別の例として、列方向の疎化620では、2D高密度行列の各列を、同じサイズの複数のバンクにセグメント化することができる。各バンク内で、上位K個のサンプリングが実行されて、最大の大きさを有するK個の非ゼロ値が保持され、他の値がゼロに設定される。
図6Aにおいて、2D高密度行列の各列は、2つのバンクにセグメント化され、上位1個のサンプリングが、各バンクに適用され、その中に1つの非ゼロ値が保持される。
【0066】
いくつかの実施形態では、上記で説明された結合AW疎トレーニングプロセス中に、行方向の疎化または列方向の疎化を、NNの異なる層に適用することができる。たとえば、
図5Aに図示される重み勾配更新ステップ中に、高密度重み勾配テンソル∇
Wが、行方向または列方向の疎化を使用してプルーニングされて、疎の重み勾配テンソル∇’
Wを取得することができる。最適なパフォーマンスを達成するために、異なる層が、異なる疎化方法を導入することができる。
【0067】
図6Bは、様々な実施形態によるバンクバランス型疎化テンソルを生成するための例示的な3D疎化を例示している。
図6Bにおいて、プルーニングされるテンソルは、3D行列であると仮定され、それは、NNにおける1つの層で取得される活性化テンソル、または重みテンソルとなることができる。
図6Bに図示される例として、活性化テンソルY1は、入力テンソルX、重みテンソルW、およびバイアステンソルBに基づいて取得することができる。活性化テンソルY1は、3つの次元、すなわち、高さ寸法、幅寸法、およびチャネル寸法を有することができる。
【0068】
図6Bに例示される630~650など、3D高密度行列に基づいてバンクバランスがとられ、疎化されたテンソルを生成するためのいくつかのアプローチがある。これらのアプローチは、バンクの定義方法が異なる。たとえば、アプローチ630において、1つのチャネルが、バンクとして考慮され、たとえば、前面/表面を、バンクとして考慮することができる。別の例として、アプローチ640では、各チャネルを、同じサイズの複数のバンクに分割することができる。さらに別の例として、アプローチ650では、複数のチャネルを1つのバンクとして考慮することができる。バンクが定義された後、各バンクで上位K個のサンプリングを実行して、最大の大きさを有するK個の非ゼロ値を保持し、他の値をゼロに設定することができる。いくつかの実施形態では、バンクをセグメント化する別の手法は、各バンク内のデータが、メモリ内で物理的に同じ場所に配置されるようにするための異なる記憶方式を必要とする場合がある。各バンクを連続的に格納すると、シーケンシャルな読み取りが容易になり(メモリアクセスの数を低減させ)、良好な並列処理のために、非ゼロデータを均等に分散させることができる。
【0069】
図6Aにおいて説明された2D疎化アプローチと比較すると、3D疎化は、より多くの次元にわたって固有の重み関係を維持することができるが、2D疎化は、実施が容易である。使用する場合および好みに応じて、疎化アプローチのいずれかを展開して、バンクバランス型テンソルおよび疎テンソルを生成できる。
【0070】
図7は、様々な実施形態によるバンクバランス型NNの結合AW疎トレーニングのための例示的な方法を例示している。方法700は、リソース割当を最適化するためのデバイス、装置、またはシステムによって実行することができる。以下に提示される方法700の動作は、例示的であることが意図される。実施に応じて、方法700は、様々な順序で、または並行して実行される追加のステップ、より少ないステップ、または代替のステップを含むことができる。
【0071】
ブロック710は、ニューラルネットワークの現在の層における順方向伝播中に、現在の層の疎入力テンソルおよび疎重みテンソルに基づいて、高密度出力テンソルを生成し、高密度出力テンソルを疎化することによって、疎出力テンソルを取得することを含む。いくつかの実施形態では、高密度出力テンソルは、現在の層の疎入力テンソルと疎重みテンソルとのテンソル積を備え、高密度導関数テンソルは、現在の層の第1の疎導関数テンソルと疎重みテンソルとのテンソル積を備える。いくつかの実施形態では、高密度出力テンソルを疎化することによって疎出力テンソルを取得することは、上位K個活性化関数を高密度出力テンソルに適用して、疎出力テンソルを取得することを備え、高密度導関数テンソルを疎化することによって第2の疎導関数テンソルを取得することは、上位K個活性化関数を高密度導関数テンソルに適用して、第2の疎導関数テンソルを取得することを備える。いくつかの実施形態では、ニューラルネットワークの現在の層は、高密度重みテンソルを備え、重みテンソルマスクに対応し、現在の層の疎重みテンソルは、重みテンソルマスクを高密度重みテンソルに適用することによって、高密度重みテンソルにおける1つまたは複数の重みを無効化して、疎重みテンソルを取得することによって取得される。
【0072】
ブロック720は、ニューラルネットワークの現在の層における逆方向伝播中に、疎出力テンソルに基づいて、第1の疎導関数テンソルを決定し、現在の層の第1の疎導関数テンソルおよび疎重みテンソルに基づいて、高密度導関数テンソルを取得し、高密度導関数テンソルを疎化することによって、第2の疎導関数テンソルを取得することを含む。
【0073】
第1の疎導関数テンソルおよび第2の疎導関数テンソルに基づいて、ニューラルネットワークの重みテンソルをトレーニングするブロック730。いくつかの実施形態では、ニューラルネットワークの重みテンソルをトレーニングすることは、第2の疎導関数テンソルに基づいて、前の層の新たな疎重みテンソルを決定することを備える。いくつかの実施形態では、ニューラルネットワークの重みテンソルをトレーニングすることは、第1の疎導関数テンソルおよび疎入力テンソルに基づいて、現在の層のための新たな疎重みテンソルを決定することを備える。
【0074】
いくつかの実施形態では、ニューラルネットワークの現在の層は、重みテンソルマスクに対応し、現在の層のための新たな疎重みテンソルを決定することは、第1の疎導関数テンソルと疎入力テンソルの転置とのテンソル積に基づいて、高密度導関数重みテンソルを取得することと、重みテンソルマスクを高密度導関数重みテンソルに適用することによって、高密度導関数重みテンソルにおける1つまたは複数の重みを無効化して、現在の層のための新たな疎重みテンソルを取得することとを備える。
【0075】
いくつかの実施形態では、高密度導関数重みテンソルは、ニューラルネットワークの現在の層における複数の重みパラメータに対応する複数の勾配を備える。いくつかの実施形態では、現在の層のための新たな疎重みテンソルを決定することは、第1の疎導関数テンソルと疎入力テンソルの転置とのテンソル積に基づいて、高密度導関数重みテンソルを取得することと、上位K個活性化関数を高密度導関数重みテンソルに適用して、現在の層のための新たな疎重みテンソルを取得することとを備える。
【0076】
いくつかの実施形態では、上位K個活性化関数を適用することは、高密度導関数重みテンソルの各行または列を、プロセッサのメモリバンクに対応する複数のバンクに分割することと、複数のバンクのそれぞれについて、バンクにおける上位K個の重みを決定し、バンクにおける上位K個の重みではない重みを無効化することとを備える。
【0077】
図8は、本明細書で説明される実施形態のいずれかを実施することができる例示的なコンピューティングデバイスを例示している。コンピューティングデバイスは、
図1~
図7に図示されるシステムおよび方法の1つまたは複数のコンポーネントを実施するために使用することができる。コンピューティングデバイス800は、情報を通信するためのバス802または他の通信機構と、情報を処理するためにバス802に結合された1つまたは複数のハードウェアプロセッサ804とを備えることができる。ハードウェアプロセッサ804は、たとえば、1つまたは複数の汎用マイクロプロセッサとすることができる。
【0078】
コンピューティングデバイス800はまた、プロセッサ804によって実行される情報および命令を格納するためにバス802に結合された、ランダムアクセスメモリ(RAM)、キャッシュおよび/または他の動的記憶デバイスなどのメインメモリ807を含むことができる。メインメモリ807はまた、プロセッサ804によって実行される命令の実行中に、一時的な変数または他の中間情報を格納するために使用することができる。そのような命令は、プロセッサ804にアクセス可能な記憶媒体に格納されると、コンピューティングデバイス800を、命令で指定された動作を実行するようにカスタマイズされた専用機械にレンダリングすることができる。メインメモリ807は、不揮発性媒体および/または揮発性媒体を含むことができる。不揮発性媒体は、たとえば、光ディスクまたは磁気ディスクを含むことができる。揮発性媒体は、動的メモリを含むことができる。一般的な媒体の形式は、たとえば、フロッピーディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、または他の任意の磁気データ記憶媒体、CD-ROM、他の任意の光学データ記憶媒体、穴のパターンを有する任意の物理的媒体、RAM、DRAM、PROM、EPROM、FLASH-EPROM、NVRAN、他の任意のメモリチップまたはカートリッジ、あるいはそれらのネットワーク化されたバージョンを含むことができる。
【0079】
コンピューティングデバイス800は、カスタマイズされたハードワイヤロジック、1つまたは複数のASICまたはFPGA、コンピューティングデバイスと組み合わされて、コンピューティングデバイス800を、専用機械にするか、または専用機械になるようにプログラムすることができる、ファームウェアおよび/またはプログラムロジックを使用して、本明細書で説明された技法を実施することができる。1つの実施形態によれば、本明細書における技法は、プロセッサ804が、メインメモリ807に含まれる1つまたは複数の命令の1つまたは複数のシーケンスを実行することに応じて、コンピューティングデバイス800によって実行される。このような命令は、記憶デバイス809などの別の記憶媒体からメインメモリ807に読み込むことができる。メインメモリ807に含まれる一連の命令を実行すると、プロセッサ804は、本明細書で説明されたプロセスステップを実行することができる。たとえば、本明細書に開示されるプロセス/方法は、メインメモリ807に格納されたコンピュータプログラム命令によって実施することができる。これらの命令がプロセッサ804によって実行されると、対応する図に図示され、上記で説明されたステップを実行することができる。代替実施形態では、ソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて、ハードワイヤ回路構成を使用することができる。
【0080】
コンピューティングデバイス800は、バス802に結合された通信インターフェース810も含む。通信インターフェース810は、1つまたは複数のネットワークに接続された1つまたは複数のネットワークリンクに結合する双方向データ通信を提供することができる。別の例として、通信インターフェース810は、互換性のあるLAN(または、WANと通信するWANコンポーネント)へのデータ通信接続を提供するローカルエリアネットワーク(LAN)カードであることができる。ワイヤレスリンクを実施することもできる。
【0081】
特定の動作のパフォーマンスはプロセッサ間で分散され、単一の機械内に存在するだけでなく、多数の機械にわたって展開することができる。いくつかの例示的な実施形態では、プロセッサまたはプロセッサ実施エンジンは、単一の地理的位置(たとえば、家庭環境、オフィス環境、またはサーバファーム内)に配置することができる。他の例示的な実施形態では、プロセッサまたはプロセッサ実施エンジンは、多数の地理的位置にわたって分散することができる。
【0082】
前のセクションで説明されたプロセス、方法、およびアルゴリズムのそれぞれは、コンピュータハードウェアを備える1つまたは複数のコンピュータシステムまたはコンピュータプロセッサによって実行されるコードモジュールにおいて具体化することができ、完全にまたは部分的に自動化することができる。プロセスおよびアルゴリズムは、アプリケーション固有の回路構成で部分的または全体的に実施することができる。
【0083】
本明細書に開示される機能が、ソフトウェア機能ユニットの形式で実施され、独立した製品として販売または使用される場合、それらは、プロセッサ実行可能な不揮発性コンピュータ可読記憶媒体に記憶することができる。本明細書に開示される特定の技術的解決策(全部または一部)または現在の技術に貢献する態様は、ソフトウェア製品の形態で具体化することができる。ソフトウェア製品は、(パーソナルコンピュータ、サーバ、ネットワークデバイスなどであってもよい)コンピューティングデバイスに、本願の実施形態の方法のすべてまたは一部のステップを実行させるための多数の命令を備える記憶媒体に記憶することができる。記憶媒体は、フラッシュドライブ、ポータブルハードドライブ、ROM、RAM、磁気ディスク、光ディスク、プログラムコードを記憶するように動作可能な別の媒体、またはそれらの任意の組合せを備えることができる。
【0084】
特定の実施形態はさらに、プロセッサと、上記で開示された実施形態の任意の方法におけるステップに対応する動作をシステムに実行させる、プロセッサによって実行可能な命令を格納する非一時的なコンピュータ可読記憶媒体とを備える、システムを提供することができる。特定の実施形態はさらに、1つまたは複数のプロセッサに、上記で開示された実施形態の任意の方法におけるステップに対応する動作を実行させるための、1つまたは複数のプロセッサによって実行可能な命令で構成された非一時的なコンピュータ可読記憶媒体を提供する。
【0085】
本明細書で開示される実施形態は、クライアントと対話するクラウドプラットフォーム、サーバ、またはサーバグループ(以下、集合的に「サービスシステム」)によって実施することができる。クライアントは、端末デバイス、またはユーザによってプラットフォームに登録されたクライアントであってもよく、端末デバイスは、モバイル端末、パーソナルコンピュータ(PC)、およびプラットフォームアプリケーションプログラムをインストールできる任意のデバイスであってもよい。
【0086】
上記で説明された様々な特徴およびプロセスは、互いに独立して使用することも、または様々な手法で組み合わせることもできる。あらゆる可能な組合せおよび部分的な組合せは、この開示の範囲内に含まれることが意図されている。それに加えて、実施によっては、特定の方法またはプロセスブロックを省略することができる。また、本明細書で説明される方法およびプロセスは、いかなる特定のシーケンスにも限定されず、それに関連するブロックまたは状態は、適切である他のシーケンスにおいて実行することができる。たとえば、説明されたブロックまたは状態が、特に開示された順序以外の順序で実行することができ、または、複数のブロックまたは状態が、単一のブロックまたは状態に結合することができる。例示的なブロックまたは状態は、直列、並列、または他のいくつかの方式で実行することができる。ブロックまたは状態は、開示された例示的な実施形態に追加されても、または削除されてもよい。本明細書で説明される例示的なシステムおよびコンポーネントを、説明とは異なるように構成することができる。たとえば、開示された例示的な実施形態と比較して、要素を追加したり、削除したり、再配置することができる。
【0087】
本明細書に記載される例示的な方法の様々な動作は、少なくとも部分的に、アルゴリズムによって実行することができる。アルゴリズムは、メモリ(たとえば、上記で説明された非一時的なコンピュータ可読記憶媒体)に記憶されたプログラムコードまたは命令に含まれてもよい。そのようなアルゴリズムは、機械学習アルゴリズムを備えることができる。いくつかの実施形態では、機械学習アルゴリズムは、機能を実行するようにコンピュータを明示的にプログラムすることはできないが、機能を実行する予測モデルを作成するためにトレーニングデータから学習することができる。
【0088】
本明細書に記載される例示的な方法の様々な動作は、関連する動作を実行するように一時的に(たとえば、ソフトウェアによって)構成された、または永続的に構成された1つまたは複数のプロセッサによって、少なくとも部分的に実行することができる。一時的または永続的に構成されるか否かに関わらず、そのようなプロセッサは、本明細書に記載される1つまたは複数の動作または機能を実行するように動作するプロセッサ実施エンジンを構成することができる。
【0089】
同様に、本明細書で説明される方法は、少なくとも部分的にプロセッサにおいて実施することができ、特定の1つまたは複数プロセッサは、ハードウェアの例である。たとえば、方法の動作の少なくとも一部は、1つまたは複数のプロセッサまたはプロセッサ実施エンジンによって実行できる。さらに、1つまたは複数のプロセッサは、「クラウドコンピューティング」環境において、または「サービスとしてのソフトウェア」(SaaS)として関連する動作のパフォーマンスをサポートするように動作することもできる。たとえば、動作の少なくとも一部は、コンピュータのグループによって(プロセッサを含む機械の例として)実行することができ、これらの動作は、ネットワーク(たとえば、インターネット)を介して、および1つまたは複数の適切なインターフェース(たとえば、アプリケーションプログラムインターフェース(API))を介してアクセス可能である。
【0090】
特定の動作のパフォーマンスはプロセッサ間で分散され、単一の機械内に存在するだけでなく、多数の機械にわたって展開することができる。いくつかの例示的な実施形態では、プロセッサまたはプロセッサ実施エンジンは、単一の地理的位置(たとえば、家庭環境、オフィス環境、またはサーバファーム内)に配置することができる。他の例示的な実施形態では、プロセッサまたはプロセッサ実施エンジンは、多数の地理的位置にわたって分散できる。
【0091】
本明細書全体を通じて、単一のインスタンスとして説明されたコンポーネント、動作、または構造を、複数のインスタンスが実施することができる。1つまたは複数の方法の個々の動作は、別個の動作として例示および説明されているが、1つまたは複数の個別の動作を同時に実行することができ、動作は、例示された順序で実行される必要はない。例示的な構成において別個のコンポーネントとして提示された構造および機能は、結合された構造またはコンポーネントとして実施することができる。同様に、単一のコンポーネントとして提示された構造および機能は、別個のコンポーネントとして実施することができる。これらおよび他の変形、修正、追加、および改良は、本明細書の主題の範囲内に含まれる。
【0092】
本明細書で使用される場合、「または」は、明示的に別段の指示がない限り、または文脈によって別段の指示がない限り、包括的であり、排他的ではない。したがって、本明細書において、「A、B、またはC」は、明示的に別段の指示がない限り、または文脈によって別段の指示がない限り、「A、B、AおよびB、AおよびC、BおよびC、またはA、BおよびC」を意味する。さらに、「および」は、明示的に別段の指示がない限り、または文脈によって別段の指示がない限り、結合および複数の両方である。したがって、本明細書において、「AおよびB」は、明示的に別段の指示がない限り、または文脈によって別段の指示がない限り、「AおよびBを結合的または個別に」を意味する。さらに、本明細書で単一のインスタンスとして説明されるリソース、動作、または構造に対して複数のインスタンスを提供することができる。それに加えて、様々なリソース、動作、エンジン、およびデータストア間の境界は、ある程度任意であり、特定の動作は、特定の例示的な構成のコンテキストで例示されている。機能の他の割当も想定され、本開示の様々な実施形態の範囲内にあることができる。一般に、例示的な構成において別個のリソースとして提示された構造および機能は、結合された構造またはリソースとして実施することができる。同様に、単一のリソースとして提示される構造および機能は、別個のリソースとして実施することができる。これらおよび他の変形、修正、追加、および改良は、添付の特許請求の範囲によって表される本開示の実施形態の範囲内にある。したがって、明細書および図面は、限定的な意味ではなく、例示的な意味としてみなされるべきである。
【0093】
「含む」または「備える」という用語は、その後に宣言された特徴の存在を示すために使用されるが、他の特徴の追加を排除しない。特に「できる」、「できた」、「かもしれない」、または「することができる」などの条件付きの文言は、特に別段の記載がない限り、または使用される文脈内で別段理解されない限り、一般に、特定の実施形態が含むが、他の実施形態が含まない特定の特徴、要素および/またはステップを伝えるように意図されている。したがって、そのような条件付き文言は、一般に、特徴、要素、および/またはステップが、何らかの手法で1つまたは複数の実施形態のために必要であること、または、1つまたは複数の実施形態が、ユーザ入力またはプロンプトの有無に関わらず、これらの特徴、要素、および/またはステップが、特定の実施形態に含まれるか、または実行されることを決定するためのロジックを必然的に含むことを示唆するように意図されていない。
【0094】
特定の例示的な実施形態を参照して主題の概要が説明されたが、本開示の実施形態のより広い範囲から逸脱することなく、これらの実施形態に対して様々な修正および変更を加えることができる。主題のそのような実施形態は、本明細書では、単に便宜上、本願の範囲を、実際には1つ以上が開示されている場合、任意の単一の開示または概念に限定することを意図することなく、個別にまたは集合的に「発明」という用語で参照することができる。
【0095】
本明細書に例示される実施形態は、当業者が、開示された教示を実施できるように十分に詳細に説明されている。この開示の範囲から逸脱することなく、構造的および論理的な置換および変更を行うことができるように、他の実施形態が、使用され、派生され得る。したがって、詳細な説明は、限定的な意味で解釈されるべきではなく、様々な実施形態の範囲は、添付の特許請求の範囲と、そのような特許請求の範囲が権利を有する均等物の全範囲によってのみ定義される。
【国際調査報告】