(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2025-02-26
(54)【発明の名称】機械学習タスクを実施するためのニューラル・ネットワークの訓練
(51)【国際特許分類】
G06N 3/047 20230101AFI20250218BHJP
G06N 3/063 20230101ALI20250218BHJP
G06N 3/08 20230101ALI20250218BHJP
G06N 3/0985 20230101ALI20250218BHJP
【FI】
G06N3/047
G06N3/063
G06N3/08
G06N3/0985
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024545042
(86)(22)【出願日】2022-01-26
(85)【翻訳文提出日】2024-09-24
(86)【国際出願番号】 EP2022051710
(87)【国際公開番号】W WO2023143707
(87)【国際公開日】2023-08-03
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】524281493
【氏名又は名称】ピーターセン リサーチ,エルエルシー
【氏名又は名称原語表記】PETERSEN RESEARCH, LLC
(74)【代理人】
【識別番号】110000729
【氏名又は名称】弁理士法人ユニアス国際特許事務所
(72)【発明者】
【氏名】ピーターセン、フェリックス
(57)【要約】
【課題】機械学習タスクを実施するためにニューラル・ネットワークを訓練するための方法、プログラム、およびシステムを提供すること。
【解決手段】方法は、ニューラル・ネットワークに対する入力データを受け取ることを含む。方法はさらに、ニューラル・ネットワークの複数のハイパーパラメータに対する値を決定することを含む。方法はさらに、ハイパーパラメータ値に従ってニューラル・ネットワークを構築することを含み、ニューラル・ネットワークは複数のニューロンを備える。各ニューロンは、ニューロンが複数の論理演算子のそれぞれに対して、対応する確率を含むような、論理演算子に対する確率分布を含む。方法はさらに、各ニューロンの確率分布を学習することによって、ハイパーパラメータ値および入力データに従ってニューラル・ネットワークを訓練することを含む。方法はさらに、確率分布における値を選択することによって、各ニューロンに対する複数の論理演算子の論理演算子を決定することを含む。
【選択図】
図1
【特許請求の範囲】
【請求項1】
画像分類などの機械学習タスクを実施するためにニューラル・ネットワークを訓練するためのコンピュータ実装方法であって、
該ニューラル・ネットワークに対する入力データを受け取ること(S201)と、
該ニューラル・ネットワークの複数のハイパーパラメータに対する値を決定すること(S203)と、
該ハイパーパラメータ値に従って、複数のニューロン(1.1~3.4)を備える該ニューラル・ネットワークを構築すること(S205)であって、
各ニューロン(1.1~3.4)が、該ニューロン(1.3~3.4)が複数の論理演算子それぞれに対して、対応する確率を含むような、該論理演算子に対する確率分布を含む、該ニューラル・ネットワークを構築することと、
各ニューロン(1.3~3.4)の該確率分布を学習することによって、該ハイパーパラメータ値および該入力データに従って該ニューラル・ネットワークを訓練すること(S207)と、
該確率分布における値を選択することによって、各ニューロン(1.3~3.4)に対する前記複数の論理演算子の論理演算子を決定すること(S209)と
を含む、コンピュータ実装方法。
【請求項2】
前記入力データが、入力と、対応する所望の出力とを含み、
前記入力データが、訓練データ、検証データ、およびテスト・データのうちの1つまたは複数を含む、
請求項1に記載の方法。
【請求項3】
前記ハイパーパラメータ値が、1つまたは複数の指定の計算資源制約下で前記ニューラル・ネットワークの検証誤差を最小限に抑えるように決定され、
該指定の計算資源制約がプロセッサおよび/またはメモリの制約を含み得る、
請求項1または2に記載の方法。
【請求項4】
前記ハイパーパラメータが、層ごとのニューロン、層の数、エポックの数、バッチ・サイズ、および学習率のうちの1つまたは複数を含む、
請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記ニューラル・ネットワークが出力層(107)を含む複数の層を含む、請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記出力層(107)がn個のニューロンを含み、前記機械学習タスクがk個のクラスを有する分類タスクであり、
前記方法がさらに、前記訓練済みニューラル・ネットワークを使用して該分類タスクを実施することを含み、該分類タスクを実施することが、
前記訓練済みニューラル・ネットワークによって、該クラスそれぞれに対する分類スコアを出力することと、
出力を、サイズn/kのk個のグループにグループ分けすることであって、各グループの1の数が該グループに対応するクラスの分類スコアに対応する、グループ分けすることと、
該分類スコアの最大値を決定することを含む、分類を決定することと
を含む、請求項5に記載の方法。
【請求項7】
前記ニューラル・ネットワークを訓練した後、および前記機械学習タスクを実施する前に、前記方法がさらに、
前記訓練済みニューラル・ネットワークを、中央処理装置またはグラフィック処理装置上で実行可能なバイナリに変換することを含み、
該実行可能バイナリが、共有オブジェクト・バイナリを扱うことができるプログラムを介して呼び出し可能であり、該プログラムがPythonによるものであり得る、
請求項1から6のいずれか一項に記載の方法。
【請求項8】
各ニューロンの出力が0から1の範囲の値であり、および/または
各ニューロンが0から3の入力を受け取る、
請求項1から7のいずれか一項に記載の方法。
【請求項9】
前記ニューラル・ネットワークを構築することがさらに、前記ニューロン間の接続を疑似ランダムに初期化することを含み、
前記訓練の間、ニューロン間の接続が固定のままであり得る、
請求項1から8のいずれか一項に記載の方法。
【請求項10】
前記機械学習タスクが、
バイナリ分類、パターン認識、画像分類、物体識別または認識、文字認識、ジェスチャーまたは顔認識、音声検出または発話認識、テキスト分類
のうちの1つまたは複数を含む分類タスクである、請求項1から9のいずれか一項に記載の方法。
【請求項11】
前記機械学習タスクが回帰タスクであり、該回帰タスクが、
画像の生成、テキストの生成、映像の生成、発話の生成、3D再構築、圧縮、符号化
のうちの1つまたは複数を含む、請求項1から10のいずれか一項に記載の方法。
【請求項12】
前記複数の論理演算子が、少なくとも2つの演算子またはちょうど16個の演算子を含み、
前記複数の論理演算子が実数値演算子であり得、
該実数値演算子が、確率的、Hamacher t-ノルム、relativistic Einstein和t-コノルム、Lukasiewicz t-ノルムおよびt-コノルムといった解釈のうちの1つに準拠し得る、
請求項1から11のいずれか一項に記載の方法。
【請求項13】
前記入力データが複数のサンプルを有するテスト・データを含み、
推論の間、前記ニューラル・ネットワークの第1の層(103)によって前記テスト・データの総計にアクセスすることによって、前記機械学習タスクを実施すること、該アクセスすることが、前記テスト・データの各サンプルの要素を整数の連続ビットに割り当てることを含む、
推論の間、各ニューロンの2つの入力が、前記機械学習タスクが実施されるべきコンピュータのプロセッサのハードウェア実装データ・タイプに対応する数値データ・タイプを有する、
請求項1から12のいずれか一項に記載の方法。
【請求項14】
コンピュータ・プログラムであって、前記プログラムがコンピュータによって実行されると、請求項1から13のいずれか一項に記載の方法を該コンピュータに実施させる命令を含む、コンピュータ・プログラム。
【請求項15】
画像分類などの機械学習タスクを実施するためにニューラル・ネットワークを訓練するためのコンピュータ・システムであって、
少なくとも1つのプロセッサを備え、該プロセッサが、
該ニューラル・ネットワークに対する入力データを受け取り、
該ニューラル・ネットワークの複数のハイパーパラメータに対する値を決定し、
該ハイパーパラメータ値に従って、複数のニューロン(1.3~3.4)を備える該ニューラル・ネットワークを構築することであって、
各ニューロン(1.3~3.4)が、該ニューロン(1.3~3.4)が複数の論理演算子のそれぞれに対して、対応する確率を含むような、該論理演算子に対する確率分布を含む、該ニューラル・ネットワークを構築することを行い、
各ニューロン(1.3~3.4)の該確率分布を学習することによって、該ハイパーパラメータ値および該入力データに従って該ニューラル・ネットワークを訓練し、
該確率分布における値を選択することによって、各ニューロン(1.3~3.4)に対する該複数の論理演算子の論理演算子を決定する
ように構成された、コンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野は、人工知能、特にニューラル・ネットワークである。態様は、機械学習タスクを実施するためにニューラル・ネットワークを訓練することに関する。機械学習タスクは、分類タスクまたは回帰タスクであってもよい。分類タスクは、パターンおよび/またはシーケンス認識、新規性検出(即ち、外れ値もしくは異常検出)、逐次意思決定のうちの1つまたは複数を含んでもよい。回帰タスクは圧縮または復元を含んでもよい。加えて、態様は、訓練済みニューラル・ネットワークを使用して機械学習タスクを実施することに関連してもよい。
【背景技術】
【0002】
ニューラル・ネットワークは、人工ニューロン(即ち、ニューロン、ノード、計算ユニット、またはユニット)を含んでもよく、人工知能問題を解決するために使用されてもよい。ニューロン間の接続は、ニューラル・ネットワークにおける重みとしてモデル化されてもよい。ニューラル・ネットワークは、訓練することができるニューラル・ネットワークの構成要素または要素である、パラメータを含んでもよい。例えば、重みは、いくつかのニューラル・ネットワークにおけるパラメータであってもよい。しかしながら、他のパラメータも可能である。
【0003】
ニューラル・ネットワークの出力の大きさを制御するために、活性化関数が使用されてもよい。したがって、活性化関数は、ニューラル・ネットワークの出力の値を制限し、ニューラル・ネットワークに非線形性を追加するために使用されてもよい。
【0004】
ニューラル・ネットワークは、最適化アルゴリズムを使用して訓練されてもよい。訓練は、ニューラル・ネットワークが十分に正確になるまで、ニューラル・ネットワークのパラメータを調節することを含んでもよい。最適化アルゴリズムは勾配降下法に基づいて(または依存して)もよい。勾配降下法に基づいた最適化アルゴリズムの例としては、確率的勾配降下法(SGD)、およびAdam(適応学習率最適化アルゴリズム-根平均二乗伝播とSGDを運動量と組み合わせたものとして実現される)が挙げられる。Adamに関するさらなる情報は、「Adam:A method for stochastic optimization」、Kingmaら、2014年に見出すことができる。
【0005】
勾配降下は、誤差逆伝播(即ち、バックプロップ(backprop)または逆方向伝播)に基づいてもよい。勾配降下は、パラメータの精度を測定し、パラメータの変更がネットワークを改善する、即ちそれによってパラメータを改善することができる方向を決定する、コスト関数を含んでもよい。コスト関数の出力がゼロのとき、最小値のとき、またはゼロの指定範囲内のとき、十分な精度を得ることができる。指定範囲は機械学習タスクに依存してもよい。場合によっては、勾配降下(または勾配降下に基づいたアルゴリズム)は、微分可能なパラメータを有するニューラル・ネットワークを訓練することにしか使用できないため、バイナリまたはブール型パラメータは勾配降下を介して訓練することはできない。ブール型パラメータ(ニューラル・ネットワークでは0または1として表される)は不連続性(例えば、0から1へのジャンプ)につながることがあり、その場合、勾配は不明瞭であり、勾配降下は不可能である。
【0006】
ニューラル・ネットワークの精度は様々な手法で計算されてもよい。例えば、分類タスクに関連して、訓練誤差(または損失)は、ニューラル・ネットワークを訓練するために使用されるデータをニューラル・ネットワークがどの程度正確に分類できるかを測定することによって得られてもよい。分類損失(一般化誤差または期待損失とも呼ばれる)は、以前は目に見えなかったデータに対する分類タスクをニューラル・ネットワークがどの程度正確に実施できるかを測定することによって得られてもよい。
【0007】
場合によっては、ニューラル・ネットワークは、複数の層、即ち少なくとも1つの隠れ層と出力層とを含んでもよい。そのような場合、ニューラル・ネットワークは深層学習ニューラル・ネットワークと呼ばれることがあり、無限の数の隠れ層があってもよい。したがって、複数の層が、より上位の特徴を入力から漸増的に抽出するために使用されてもよい。ニューラル・ネットワークは、データが逆ループすることなく前の隠れ層から出力層へと流れる、フィードフォワード・ネットワークとして実現されてもよい。ニューラル・ネットワークの初期化は、ランダム重みをニューロン間の接続に割り当てることを含んでもよい。
【0008】
従来、ニューラル・ネットワークが機械学習タスクを正確に実施しない場合、重みが調節される。このようにして、機械学習タスクを実施するための入力の適切な機械的操作が決定されるまで、ネットワーク内における異なるニューロンの影響を較正することができる。
【0009】
機械学習タスクを実施するように訓練されると、ニューラル・ネットワークは機械学習タスクを実施するために使用されてもよい。機械学習タスクの実施は、推論、または推論の実施と呼ばれることもある。
【0010】
ニューラル・ネットワークは様々な問題に直面している。例えば、訓練誤差は少ないが分類損失が比較的大きい場合、過学習が起こることがある。換言すれば、ニューラル・ネットワークは、訓練データ以外の他のデータに対しては良好に一般化されない、ニューラル・ネットワークを訓練するために使用される訓練データに固有のアプローチを学習する。ニューラル・ネットワークがその入力と出力との間の関係を正確に獲得できない場合、未学習が起こることがあり、訓練データと他のデータとの両方に高い誤差率が生じる。
【0011】
ニューラル・ネットワークは、分類タスクを実施するのに有効なことがあるが、非効率的なことがある。したがって、ニューラル・ネットワークの効率を増加させる様々なアプローチが開発されてきた。
【0012】
例えば、従来のニューラル・ネットワークは、ニューラル・ネットワークの一部または全体が完全に接続されるように、少なくとも1つの稠密層を含む深層学習ニューラル・ネットワークであってもよく、つまり、稠密層の各ニューロンは前の層のすべてのニューロンに対する入力を受け取る。この例では、ニューラル・ネットワークは、高密度接続ニューラル・ネットワークまたは完全接続ニューラル・ネットワークと呼ばれることがある。
【0013】
加えて、従来のューラル・ネットワークは、完全精度の重みおよび活性化(例えば、倍精度、つまり64ビット)の浮動小数点計算を用いてもよく、一般に、高価な行列乗算を要する。低精度の浮動小数点重みおよび活性化(例えば、単精度または半精度)であっても、計算は依然として高価なことがある。
【0014】
バイナリ・ニューラル・ネットワークは、1ビット活性化(および/または重み)が従来のニューラル・ネットワークの浮動小数点活性化(および/または重み)に置き換わるという点で、従来のニューラル・ネットワークとは異なることがある。したがって、ネットワークを通して伝播される要素は、2つの値のうちの1つのみ、例えば0または1を有することができるという意味でバイナリである。したがって、従来のニューラル・ネットワークと比較して、高価な行列乗算は、より高速のXNORおよびビット・カウント演算に単純化されてもよく、これは、従来のニューラル・ネットワークと比較してバイナリ・ニューラル・ネットワーク推論性能を大幅に改善する。場合によっては、XNORはビット・カウント演算よりも高速であり得、両方とも浮動小数点演算よりも高速であり得る。
【0015】
ニューラル・ネットワークを訓練するのに必要な浮動小数点演算は、コンピュータのハードウェアでサポートされてもよい。具体的には、float32加算器および/またはfloat32乗算器は、少なくとも1000の論理ゲート(またはルック・アップ・テーブル)を要することがあり、数十の論理レベルの遅延を有することがある。Float32加算器および/またはfloat32乗算器は、中央処理装置(CPU)またはグラフィック処理装置(GPU)に直接実装されてもよい。いずれにせよ、float32加算器およびfloat32乗算器は、float32およびint32データ・タイプに対して最適化されたGPUであっても、int64データ・タイプに対するビット単位の論理演算よりもはるかに多くの計算資源(例えば、処理サイクル)を要することがある。GPUがint32に対して最適化されている場合、int64は効率的にサポートされていないことがある。したがって、かかるGPUにはint32データ・タイプを使用するのがより効率的なことがある。いくつかのハードウェア実装例では、論理演算は加算および/または乗算演算よりも高速であり得る。
【0016】
CPUでは、約3~約10のint64ビット単位演算をクロック・サイクルごとに実施できることがあるが、浮動小数点演算は通常、クロック・サイクル全体を要する(即ち、クロック・サイクルごとに実施できる浮動小数点演算は1つのみであり得る)。したがって、バイナリ・ニューラル・ネットワークを訓練するときに実施されるXNORおよびビット・カウント演算は、浮動小数点演算(例えば、float32加算器またはfloat32乗算器)がGPUまたはCPUに専用のハードウェア・サポートを有する場合であっても、従来のニューラル・ネットワークに対して実施される浮動小数点演算と比較して、著しい性能上の利点を有することがある。浮動小数点および整数演算に関する検討事項は、機械学習タスクに対するニューラル・ネットワークの訓練にも適用可能なことがある。
【0017】
畳み込みニューラル・ネットワーク(CNN)は、少なくとも1つの隠れ層が構造化された接続を有する、即ち完全接続されていない、深層学習ニューラル・ネットワークであってもよい。したがって、CNNは畳み込みを実施してもよく、例えば、隠れ層は、隠れ層の入力行列を用いて畳み込みカーネルのドット積を実施する。したがって、畳み込みカーネルがカバーする隠れ層のニューロンのみが、CNNの別の層のそれぞれのニューロンに接続されることがある。
【0018】
従来の例では、バイナリ・ニューラル・ネットワークは、非常に小さい(3×3)畳み込みフィルタを介して深さを増加させ、3つの完全接続層を含み、訓練時間を削減するために修正の非線形性(ReLU)を使用する、非常に深い畳み込みニューラル・ネットワーク(例えば、VGG)アーキテクチャに基づくことがある。あるいは、バイナリ・ニューラル・ネットワークは、スキップ接続を使用していくつかの層を飛ばす、残差ニューラル・ネットワーク(ResNet)アーキテクチャに基づくことがある。VGGおよびResNetアーキテクチャは両方とも、非常に大型のニューラル・ネットワークをもたらすことがあり、非効率性につながることがある。
【0019】
ニューラル・ネットワークはスパースであってもよい(この例では、スパース・ニューラル・ネットワーク)。したがって、スパース・ニューラル・ネットワークは、完全接続ニューラル・ネットワークの接続の適切なサブセットを有する。換言すれば、完全接続層の代わりに、スパース・ニューラル・ネットワークの層におけるすべてではないニューロンが互いに接続される。スパースネスは、各ニューロンが他のニューロンの限定された数のみから入力を受け取るような、ニューラル・ネットワークの接続性を指してもよく、および/または、スパース・ニューラル・ネットワークにおけるすべてではないニューロンが任意の所与の時間にアクティブであるような、ニューラル・ネットワークにおけるすべてのニューロンの活性のレベルを説明する、ニューラル・ネットワークの状態を指してもよい。
【0020】
スパース・ニューラル・ネットワークは、全接続ニューラル・ネットワークの90%未満の接続を有してもよく、即ち、スパース・ニューラル・ネットワークは少なくとも10%のスパース性を有してもよい(10%~70%のスパース性は低スパース性、70%~90%のスパース性は中間の(medium)スパース性、90%~99.9%のスパース性は中程度の(moderate)スパース性、および99.9%を超えるスパース性は高スパース性と呼ばれることがある)。10%未満のスパース性を有するニューラル・ネットワークは密と呼ばれることがある。
【0021】
スパース・ニューラル・ネットワークは、プルーニングまたは圧縮技術、例えば正則化技術を使用して、高密度または完全接続ニューラル・ネットワークから導き出されてもよい。例えば、1つもしくは複数の分析方法またはヒューリスティックスが、保持されるべき重み、およびニューラル・ネットワークから除去されるべき重みを決定するために使用されてもよい(重みの除去は、重みを0に設定することを伴ってもよい)。より具体的には、L1またはL2正則化を使用して、正則化項を加算することによって一般コスト関数を更新してもよい。さらに別の例として、ドロップアウトは、ニューラル・ネットワークのランダム・ニューロンが取消しまたは除去される正則化技術である。ドロップアウトは、変分型であってもよく、境界(例えば、いくつのニューロンが取り消されるかに関する限界)によって限定されてもよい。場合によっては、重みを除去するのではなく、ニューロン自体がニューラル・ネットワークから除去されてもよい。プルーニング技術は、上述したように、過学習を回避し、それによって一般化誤差を減少させることを助け得る。他の技術は、ニューラル・ネットワークの全層を除去すること、またはニューラル・ネットワークの比較的大きい重みに対する追加コストを加算することを伴ってもよい。したがって、スパース・ニューラル・ネットワークは、高密度ニューラル・ネットワークと比較して、改善された精度(例えば、より少ない過学習)を提供してもよい。スパース・ニューラル・ネットワークはまた、高密度ニューラル・ネットワークと比較して、必要な記憶空間が少なくてもよい。しかしながら、高密度ニューラル・ネットワークから重みを除去することによってスパース・ニューラル・ネットワークが導き出される場合、スパース・ニューラル・ネットワークは、実際の重みに加えて重み位置を記憶するために、より多くの記憶域を要することがある。
【0022】
従来の実現例の、次に示す2つの例では、ニューラル・ネットワークの接続性が緩和されることがある。
【0023】
第1の例では、ニューラル・ネットワークのニューロンは、論理モジュールとして実現されてもよく、論理モジュールの半分はファジーな(即ち、緩和された)連言で定義され、残り半分はファジーな(即ち、緩和された)選言で定義される。この例では、ニューラル・ネットワークのパラメータは重みを含むが、演算子(即ち、ファジーな連言および選言)は固定される。したがって、ファジーな連言および選言に含まれるニューロンの重みは、0または1のみから0~1の範囲内の値に緩和されてもよい。このようにして、ブール型パラメータとは異なり、勾配降下を介して論理モジュールのパラメータを訓練することができる。
【0024】
第2の例では、算術演算のセットが各層に対して事前定義され、その層のニューロンに対して実現される。ソフトマックスの形態が学習に使用され、前の層の出力が、現在の層に対応する算術演算の入力として使用される。このようにして、象徴的表現をデータから学習させることができる。
【0025】
別の従来例では、人工ニューラル・ネットワークの完全接続層は、訓練前にスパース層と置き換えられて、精度を大幅に減少させることなく(例えば、5%を超えてまたは10%を超えて精度を減少させることなく)、パラメータの数を二次式的に低減させる。スパース・トポロジーは、2つの連続層を有し、訓練中にスケール・フリー・トポロジーへと展開する。スケール・フリー・トポロジーは、べき則の度数分布P(d)~d-yを近似するスパースなグラフであり、ネットワークの全ニューロンからの割合P(d)は、他のニューロンに対するd個の接続を有し、パラメータγは通常、γ∈(2,3)の範囲内に留まる。
【0026】
さらに別の従来例では、単一の共有重みパラメータがニューラル・ネットワークのすべての接続に割り当てられる。重みを最適化する代わりに、ニューラル・ネットワークは、広範囲の重みに対して良好に実施するネットワーク・トポロジーに対して最適化される。ニューロンおよび接続は徐々に追加され、活性化関数(例えば、サイン、コサイン、ガウス、双曲線正接、シグモイド、逆、絶対値、ReLU)が新しいニューロンに無作為に割り当てられる。ニューラル・ネットワークが成長するにつれて活性化関数が展開する。ニューラル・ネットワークは浮動小数点演算子を使用する。
【0027】
別の従来例によれば、バイナリ(2入力)ルック・アップ・テーブルのネットワークを用いてバイナリ分類データ・セットを記憶するための方法が提供される。ルック・アップ・テーブルのネットワークは、訓練データにおける条件付き頻度(例えば、パターンpが訓練データの特定の出力0と何回関連付けられるか)を計数することによって構築される。ニューラル・ネットワークと同じく、ルック・アップ・テーブルは連続層に配置される。ニューラル・ネットワークとは異なり、訓練は記憶を介して行われ、逆伝播または勾配降下は関与しない。記憶は、訓練データの入力と最も共通して関連付けられる出力を覚えることを伴う。
【0028】
さらなる従来例では、ニューラル・ネットワークは最初に機械学習タスクに対して訓練され、次にニューラル・ネットワークはランダム・フォレストに翻訳され、ランダム・フォレストは次に、AND-Inverter論理ゲートのネットワークに翻訳され、即ちネットワークは「AND」および「NOT」論理ゲートに基づく。
【発明の概要】
【発明が解決しようとする課題】
【0029】
上述した従来例よりも効率的であるとともにそれらに匹敵する精度を維持する、機械学習タスクを提供するためのニューラル・ネットワークを提供するのが望ましいことがある。
【0030】
例えば、論理ゲート・ネットワークが使用されてもよい。論理ゲート・ネットワークは、各ニューロンが論理演算子(即ち、「AND」または「NAND」などの論理ゲート)を含む、ニューラル・ネットワークであってもよい。各論理演算子は0~2の入力を有してもよい。論理ゲート・ネットワークは、完全接続ニューラル・ネットワークと比較してスパースであり、前の層のすべてのニューロンが現在の層の各ニューロンに対する入力として提供される。換言すれば、n個の入力(nは層ごとのニューロンの数)を受け取るよりも、論理ゲート・ネットワークの各ニューロンが2つの入力のみを受け取るため、論理ゲート・ネットワークはスパースである。したがって、論理演算を非常に高速で計算することができるので(例えば、論理演算はプロセッサのアーキテクチャに組み込まれる場合が多いため)、機械学習タスクは効率的に実施されてもよい。加えて、各ニューロンの入力は最大2つなので、論理ゲート・ネットワークは非常にスパース、例えば少なくとも中間のスパース性であって、より稠密なネットワークと比較して精度の改善につながることがある。
【0031】
任意に、論理ゲート・ネットワークは、3つ以上の入力を有する少なくとも1つの演算子を含んでもよい。
【0032】
有利には、論理ゲート・ネットワークは二進値で動作し(例えば、訓練後)、非線形的であるため、論理ゲート・ネットワークは活性化関数を要しないことがある。
【0033】
しかしながら、従来の論理ゲート・ネットワークは、SGDまたはAdam(上述)などの勾配降下に基づいた最適化アルゴリズムを使用して訓練することができないため、ニューラル・ネットワークを論理ゲート・ネットワークとして実現するのは問題があることがある。これは、従来の論理ゲート・ネットワークの値が常に0または1になるためである。したがって、ネットワークの層のパラメータに関する損失関数は導関数を有さないので、従来の論理ゲート・ネットワークにおける勾配を計算するのは不可能である。したがって、勾配降下に基づいた最適化アルゴリズムを使用して訓練することができる、論理ゲート・ネットワークを提供するのが望ましいことがある。
【0034】
さらに、従来の論理ゲート・ネットワークは、単一のバイナリ出力(例えば、回帰タスクの場合)またはk個のクラスに対してk個のバイナリ出力(例えば、分類タスクの場合)を提供してもよい。これは、段階的予測、即ち互いに対するクラスの格付けが不可能である。換言すれば、これは、「最大活性化」分類スキーム(「How a Neural Network Works」、Arkin Gupta、2018年5月27日)に従った分類が不可能である。
【課題を解決するための手段】
【0035】
一態様によれば、機械学習タスクを実施するためにニューラル・ネットワークを訓練するためのコンピュータ実装方法が提供される。方法は、ニューラル・ネットワークに対する入力データを受け取ることを含む。方法はさらに、ニューラル・ネットワークの複数のハイパーパラメータに対する値を決定することを含む。方法はさらに、ハイパーパラメータ値に従ってニューラル・ネットワークを構築することを含み、ニューラル・ネットワークは複数のニューロンを備える。各ニューロンは、ニューロンが複数の論理演算子それぞれに対して、対応する確率を含むような、論理演算子に対する確率分布を含む。方法はさらに、各ニューロンの確率分布を学習することによって、ハイパーパラメータ値および入力データに従ってニューラル・ネットワークを訓練することを含む。方法はさらに、確率分布における値を選択することによって、各ニューロンに対する複数の論理演算子の論理演算子を決定することを含む。
【0036】
ニューラル・ネットワークは、バイナリ・ニューラル・ネットワーク(ニューラル・ネットワークが訓練されると、ネットワーク内を伝播する要素が2つの値のうちの1つのみを有することがあるため)、論理ゲート・ネットワーク(ニューロンが論理演算子を実現するため)、またはバイナリ論理ゲート・ネットワークと呼ばれることがある。論理演算子は論理ゲートと呼ばれることもある。
【0037】
場合によっては、ニューロンごとに最大2つの入力がある。ニューロンごとにちょうど2つの入力があり、層ごとにn個のニューロンがある場合、ニューラル・ネットワークは最大1-(2/n)のスパース性を有することができる。
【0038】
複数のハイパーパラメータの値は、受け取ったハイパーパラメータ(例えば、類似の機械学習タスクの実施に対して使用されるか、または類似のニューラル・ネットワークによって同じ機械学習タスクを実施するために使用される)から決定されるか、あるいは初期値を受け取ることなく定義されてもよい。
【0039】
場合によっては、各ニューロンの確率分布は、確率分布のすべてのエントリが合計1となり、非負であるような、複数の浮動小数点値から導き出されるカテゴリ別確率分布であってもよい。確率分布は、浮動小数点値が確率単体に位置し、それによってカテゴリ別確率分布がもたらされるように、ソフトマックスを介して浮動小数点値から導き出されてもよい。確率分布が訓練されるので、ニューラル・ネットワークの確率分布はニューラル・ネットワークのパラメータとも呼ばれることがある。
【0040】
確率分布の確率は≧0および≦1であってもよい。
【0041】
ソフトマックスは、値を確率に変換するために使用される従来の関数であってもよい。ソフトマックスは、温度(即ち、温度パラメータ)を含んでもよく、温度は低確率に対する感度を増加させてもよい。換言すれば、温度は、確率分布のエントロピーを制御する手段であってもよい(高温はエントロピーを増加させて確率分布をより均一にするが、低温はエントロピーを減少させ、高い確率を際立たせる)。
【0042】
確率分布の値を選択することは、最尤値を選択することまたはランダム値を選択することによって実現されてもよい。より具体的には、値を選択することは、好適な値が見つかるまでランダム値を繰り返し選択することを伴ってもよい。場合によっては、選択は、確率分布を確率分布のモードと置き換えることを含んでもよい。したがって、訓練済みニューラル・ネットワークでは、各ニューロンの入力および出力はブール型(0または1)であってもよく、ならびに/あるいは各ニューロンの演算子は固定(即ち、確率分布ではなく単一の演算子)であってもよい。
【0043】
したがって、確率分布の使用によって、損失関数を最小限に抑えるために使用できる勾配を計算することが可能になるので、論理ゲート・ネットワークは、各ニューロンの確率分布を学習することによって訓練することができる。したがって、上述した従来の論理ゲート・ネットワークと比較して、損失関数の導関数を計算することができ、勾配ベクトルを得ることができる。損失関数の導関数は、ニューラル・ネットワークが改善する方向である。したがって、損失関数の導関数を計算できることによって、訓練中にニューラル・ネットワークを改善することが可能になる。
【0044】
入力データは、入力と、対応する所望の出力とを含んでもよい。入力データは、訓練データ、検証データ、およびテスト・データを含んでもよい。訓練データ、検証データ、およびテスト・データは、相互に排他的またはばらばらであってもよい。換言すれば、訓練データ中のサンプルはいずれも検証データまたはテスト・データの形では現れず、テスト・データ中のサンプルはいずれも検証データまたは訓練データの形では現れない。このようにして、検証データを使用してハイパーパラメータを評価するとき、およびテスト・データを使用してニューラル・ネットワークの精度をテストするとき、過学習を決定することができる。場合によっては、過学習を回避するのが望ましいことがある。他の事例(良性過学習と呼ばれる場合がある)では、訓練データに対して約100%の精度が達成された場合であっても、ニューラル・ネットワークは検証およびテスト・データに関して依然として比較的正確なことがある。サンプルはデータ点とも呼ばれることがある。
【0045】
場合によっては、訓練データは、決定されたハイパーパラメータ値に従ってニューラル・ネットワークを訓練するために使用されてもよい。検証データは、決定されたハイパーパラメータ値の1つのセット、を決定されたハイパーパラメータ値の別のセットと比較するために使用されてもよい。テスト・データは、ハイパーパラメータの最終的な(例えば、最も正確な)値が決定されると、機械学習タスクを実施するときにニューラル・ネットワークの精度を決定するために使用されてもよい。
【0046】
所望の出力はラベルと呼ばれることがある。入力データはタプルのセットとして提供されてもよく、各タプルは(入力またはサンプル、対応する出力)の形態を有する。サンプルは、固定サイズのベクトル(例えば、バイナリ・ベクトル)として提供されてもよく、または既知のトポロジー構造(例えば、画像)を有してもよい。
【0047】
場合によっては、1つまたは複数の指定の計算資源制約下でニューラル・ネットワークの検証誤差を最小限に抑えるように、ハイパーパラメータ値が決定されてもよく、指定の計算資源制約はプロセッサおよび/またはメモリの制約を含んでもよい。
【0048】
少なくとも5つのハイパーパラメータまたは少なくとも10のハイパーパラメータがあってもよい。ハイパーパラメータ値は、ニューラル・ネットワークの構造、およびニューラル・ネットワークがどのように訓練されるかを決定してもよい。ハイパーパラメータは、ニューラル・ネットワークを介して実施される推論の計算時間およびメモリ・コストに影響を及ぼすことがある。加えて、ハイパーパラメータはニューラル・ネットワークの精度に影響を及ぼすことがある。例えば、層ごとのニューロンが多すぎると過学習につながることがあり、層が少なすぎるかまたは層ごとのニューロンが少なすぎると未学習につながることがある。
【0049】
場合によっては、ハイパーパラメータ値の複数のセットが決定されてもよく、ハイパーパラメータ値の各セットに従ってニューラル・ネットワークが訓練されてもよい。十分に正確な場合、訓練済みニューラル・ネットワークにおいて最も正確なものが推論に使用されてもよい。
【0050】
ハイパーパラメータ値(複数のハイパーパラメータに対する値)は、無作為に、最適化アルゴリズム(例えば、グリッド・サーチもしくは自動機械学習(AutoML))を介して、またはランダム・サーチを介して選ばれてもよい。最適化アルゴリズムは、ユーザによって提供される制約を使用して実現されてもよい。制約は機械学習タスクに依存してもよい。グリッド・サーチに関連して、制約はグリッドと呼ばれることがある。グリッド・サーチは従来のグリッド・サーチ・アルゴリズムを介して実施されてもよい。
【0051】
場合によっては、入力データは訓練データおよび検証データを含んでもよい。したがって、ハイパーパラメータ値の複数のセットにおける各セットに対して、ニューラル・ネットワークは、訓練データとハイパーパラメータ値のセットとを使用して訓練されてもよく、次にニューラル・ネットワークは、ハイパーパラメータ値のセットと検証データとを使用して精度を検証されてもよい。検証データとの誤差が最も少ないハイパーパラメータ値のセット(即ち、最も低い検証誤差および最も正確なハイパーパラメータ値)は、決定されたハイパーパラメータ値であってもよい。
【0052】
ハイパーパラメータは、層ごとのニューロン、層の数、エポックの数、バッチ・サイズ、学習率のうちの1つまたは複数を含んでもよい。分類タスクに関連して、ハイパーパラメータはさらに、確率分布を訓練するためのソフトマックス温度を含んでもよい。ソフトマックス温度は、層ごとのニューロン数が増加するにつれて増加するように使用されてもよい。したがって、ソフトマックス温度はクラスごとの出力の数に依存してもよい(例えば、ソフトマックス温度は、クラスごとの出力の数が増加するにつれて増加してもよい)。
【0053】
ニューラル・ネットワークにおける層ごとのニューロンの数は、{100, 1000, 10,000, 100,000, 1,000,000, 10,000,000}という制約に従って決定されて(例えば、グリッドから選択されて)もよい。ニューラル・ネットワークにおける層の数は、{4,5,6,7,8}という制約に従って決定されて(例えば、グリッドから選択されて)もよい。あるいは、{2,3,4,5,6,7,8,9}のグリッドが使用されてもよい。より少数のニューロンを有するニューラル・ネットワークは、特定の機械学習タスク、例えば表形式データを伴う分類タスクに対してより良好に実施してよい。そのような場合、より少ないニューロンが過学習を回避する助けとなることがある。対称的に、より多くのニューロン(例えば、64,000)は画像分類の場合により良好なことがある。
【0054】
ソフトマックス温度は、{1,3,10,30,100}という制約に従って決定されて(例えば、グリッドから選択されて)もよい。あるいは、{1,1/0.3,1/0.1,1/0.03,1/0.01}のグリッドが使用されてもよい。層ごとのニューロンの数が増加するにつれてソフトマックス温度を増加させることで性能を改善してもよい。例えば、層ごとのニューロンの数が2000~10,000の場合、約10のソフトマックス温度が、他のソフトマックス温度値と比較して正確なニューラル・ネットワーク(低検証誤差)につながることがある。層ごとのニューロンの数が12,000~100,000の場合、約30のソフトマックス温度が正確なニューラル・ネットワークにつながることがある。層ごとのニューロンの数が100,000を超える場合、約100のソフトマックス温度が正確なニューラル・ネットワークにつながることがある。層ごとのニューロンの数が100の場合、3未満(例えば、1または3)のソフトマックス温度が正確なニューラル・ネットワークにつながることがある。
【0055】
ハイパーパラメータ値に従ってニューラル・ネットワークを訓練することは、バッチ・サイズでエポックの数に対して学習率で訓練することを含んでもよい。
【0056】
エポックの数は、訓練中にすべての訓練データがニューラル・ネットワークに対して示される(例えば、入力としてニューラル・ネットワークに提供される)回数であってもよい。例えば、ハイパーパラメータを決定するとき、訓練誤差が減少している場合であっても検証誤差が増加し始めるまで(過学習)、エポックの数を増加させてもよい。エポックの数に対する好適な値は約200であってもよい。
【0057】
バッチ・サイズは、訓練の反復ごとにニューラル・ネットワークを通して伝播される入力データからの、サンプルの数(即ち、インスタンス、観察、入力ベクトル、または特徴ベクトル)を指してもよい。例えば、画像分類の分類タスクに関連して、入力データの各サンプルは画像と画像に対するラベルとを含んでもよい。バッチ・サイズの可能な値は、32、64、128、256、および2の他の累乗であってもよい。場合によっては、約100のバッチ・サイズが使用されてもよい。
【0058】
学習率は、各エポックに対する検証誤差に応答してニューラル・ネットワークをどの程度変更するかを指定してもよい。学習率を設定する際、低い検証誤差への収束率と訓練中の訓練誤差の増加との間にトレード・オフがあることがある。学習率は、{0.1,0.01,10-3,10-4,10-5}という制約に従って決定されて(例えば、グリッドから選択されて)もよい。例えば、約0.01の学習率が使用されてもよい。
【0059】
ニューラル・ネットワークを訓練することは、確率分布を連続してパラメータ化することを含んでもよい。したがって、各ニューロンの確率分布は、(例えば、ソフトマックスを使用して、標準正規分布から要素を独立して選択して)訓練中にパラメータ化されてもよい。例えば、ニューラル・ネットワークにおける各確率分布から結果が計算されてもよく、例えば、各エポック(即ち、各学習段階)の間に結果が計算されてもよい。結果は、平均、重み付き平均、または確率分布の別の統計関数であってもよい。
【0060】
ニューラル・ネットワークは、出力層を含む複数の層を含んでもよい。ニューラル・ネットワークは少なくとも1つの隠れ層を含んでもよい。少なくとも1つの層(例えば、隠れ層)が出力層に先行してもよい。ニューラル・ネットワークへの入力は、第1の層、例えば複数の隠れ層のうちの第1のものによってアクセスされてもよい。
【0061】
複数の隠れ層の場合、隠れ層はそれぞれ同じ数のニューロンを有してもよい。
【0062】
ニューラル・ネットワークは、隠れ層および出力層に同じ数のニューロンを有してもよい。加えてまたは別の方法として、ニューラル・ネットワークは4~8層を有してもよい。
【0063】
機械学習タスクが分類タスクのとき、分類タスクは少なくとも2つのクラスを有してもよい。場合によっては、層ごとのニューロンの数は、分類タスクの各クラスが出力層の複数のニューロンと関連付けられるようにして選択されてもよい。したがって、クラスごとに複数のニューロンを使用し、合算によってそれらを総計することによって、クラスごとのニューロンと同じ数の等級(レベル)を有する段階的分類を実施することができる。クラスのニューロンはそれぞれ、クラスの異なるエビデンス(またはアスペクト)を獲得して、従来の論理ゲート・ネットワークと比較してより細かい等級分類を可能にすることができる。
【0064】
方法はさらに、各ニューロンに対する論理演算子を決定した後、訓練済みニューラル・ネットワークを使用して機械学習タスクを実施することを含んでもよい。分類タスクの場合、出力層はn個のニューロンを含んでもよく、分類タスクはk個のクラスを有してもよい。したがって、訓練済みニューラル・ネットワークを使用して分類タスクを実施することは、
訓練済みニューラル・ネットワークによって、クラスそれぞれに対する分類スコアを出力することと、
出力を、サイズn/kのk個のグループにグループ分けすることであって、各グループの1の数がグループに対応するクラスの分類スコアに対応する、グループ分けすることと、
分類スコアの最大値を決定することを含む、分類を決定することとを含んでもよい。
【0065】
分類スコアの最大値を決定することは、演算を使用して、最大確率(即ち、最大予測確率)を有するクラスを決定することを含んでもよい。したがって、分類スコアの最大値はargmax演算を使用して決定されてもよい。
【0066】
場合によっては、各クラス(即ち、各分類スコア)に対する出力ビットを総計してバイナリ数にし、予測(即ち、分類スコア)を返すために必要なメモリ帯域幅を低減してもよい。これは、固定の論理ゲート・ネットワークを介して表されてもよい。具体的には、1ビットを加算して論理ゲートを有するバイナリ数にすることができる、加算器が実装されてもよい。したがって、加算器の数が分類スコアの数に対応するように、加算器が各分類スコアに対して実装されてもよい。加算器は、対応するクラスの出力ビットを加算して整数にするのに好適であるように修正されてもよい。このように、総計は非常に効率的であり、具体的には、総計は総計されていない結果をVRAMに記憶するよりも高速である。
【0067】
各ニューロンに対する論理演算子を決定した後、および分類スコアを出力する前、方法はさらに、訓練済みニューラル・ネットワークを、中央処理装置(CPU)またはグラフィック処理装置(GPU)上で実行可能なバイナリに変換することを含んでもよい。場合によっては、実行可能バイナリは、共有オブジェクト・バイナリ、例えばPythonを扱うことができるプログラムを介して呼び出し可能である。CPU上で実行可能なバイナリはCコードからコンパイルされてもよい。GPU上で実行可能なバイナリは、CUDA(以前の計算統一デバイス・アーキテクチャ)からコンパイルされてもよい。
【0068】
ニューロンの入力および出力は実数値であってもよい。
【0069】
場合によっては、訓練中、すべてのニューロンの出力は0~1の範囲(即ち、0以上1以下)の値であってもよい。同様に、ニューロンに対する入力は0以上1以下であってもよい。加えてまたは別の方法として、各ニューロンは0~3の入力を受け取ってもよい。より具体的には、各ニューロンは0~2の入力を受け取ってもよい。例えば、「0」演算子は0の入力を受け取ってもよく、「A」演算子は1つの入力のみを受け取ってもよく、「A-AB」演算子は2つの入力を受け取ってもよい。
【0070】
ニューラル・ネットワークを構築することはさらに、ニューロン間の接続(即ち、ニューラル・ネットワークの重み)を疑似ランダムに初期化することを含んでもよい。疑似ランダム初期化は、接続を記憶する必要がなく、必要に応じて発生させることができるという利点を有することがある。特に、接続は、シード(即ち、疑似乱数発生器を初期化するのに使用されるランダム・シード)から生成され、同じシードから再現されてもよい。シードは、コンピュータの状態(例えば、時間)から、またはハードウェア・ベースの専用乱数発生器から発生させてもよい。ニューラル・ネットワークを構築することはまた、他のヒューリスティックスを使用して、例えばグループ内において疑似ランダムに接続を初期化すること、または特定のハードウェアに対してより高速の計算を可能にする構造を初期化することを含んでもよい。
【0071】
したがって、ニューラル・ネットワークが訓練されると、ニューラル・ネットワークを記憶するために必要なのは、どの論理演算子が各ニューロンに使用されるかを指定する4ビットの情報を記憶することのみである。換言すれば、ニューラル・ネットワークを記憶するには、n×4ビット(nはニューラル・ネットワークにおけるニューロンの数)に、比較的小さい定数値を加えたものを要することがある。定数値は、シード、および層のサイズ(入力の数および出力の数)を含んでもよい(例えば、それらに限定されてもよい)。層のサイズが同じである(即ち、すべての層が同じサイズを有する)場合、1つのサイズの値のみを要する。このようにして、ニューラル・ネットワークの記憶の要件は、従来のニューラル・ネットワーク(例えば、高密度ニューラル・ネットワーク、畳み込みニューラル・ネットワーク、スパース・ニューラル・ネットワーク、またはさらにはバイナリ・ニューラル・ネットワーク)よりも大幅に少なくてもよい。
【0072】
訓練の間、ニューロン間の接続は固定のままであってもよい。換言すれば、ニューラル・ネットワークがニューロンの重みを調節することによって訓練されなくてもよい。
【0073】
分類タスクは、バイナリ分類、パターン認識(例えば、特徴分類)、画像分類、物体識別または認識、文字認識、ジェスチャーまたは顔認識、音声検出または発話認識、テキスト分類のうちの1つまたは複数を含んでもよい。
【0074】
例えば、バイナリ分類タスクに対する入力データはサイズ17のバイナリ・ベクトルを含んでもよい。バイナリ・ベクトルはそれぞれクラス0またはクラス1に分類されてもよい。別の例では、パターン認識(具体的には、画像分類)タスクに対する入力データは、0~9桁の画像、ならびに画像それぞれに対する対応するラベルを含んでもよい。画像はそれぞれ、画像がどの桁に対応するかを識別することによって分類されてもよい。
【0075】
バイナリ分類は、医療検査(患者が疾患を有しているか否かを決定する)、品質管理(技術仕様が満たされているか否かを決定する)、および情報検索(ページが検索結果セット内にあるべきか否かを決定する)のうちの1つを含んでもよい。
【0076】
パターン認識は画像処理(例えば、画像分類)を含んでもよい。パターン認識は、識別および/または認証、医療診断、防衛、ならびに機動性のうちの1つに使用されてもよい。識別および/または認証は、ライセンス・プレート認識、指紋分析、顔認識、音声ベースの認証を含んでもよい。医療診断は、子宮頸がん、胸部腫瘍、または心音のスクリーニングを含んでもよい。防衛は、航法誘導システム、標的認識システム、形状認識技術を含んでもよい。機動性は、運転支援システム(運転および駐車を支援する)ならびに/あるいは自律走行車技術(人間の入力をほとんどまたはまったく用いずに安全に移動することができる地上車の場合)を含んでもよい。
【0077】
機械学習タスクは回帰タスクであってもよく、回帰タスクは、画像の生成、テキストの生成、映像の生成、発話の生成、3D再構築、圧縮、符号化のうちの1つまたは複数を含んでもよい。特に、回帰タスクは、映像、音声、または画像の圧縮を含んでもよい。符号化は発話符号化を含んでもよい。
【0078】
ニューラル・ネットワークを訓練することはさらに、ニューラル・ネットワークの精度を指定の精度と比較することによって、ニューラル・ネットワークが十分に正確か否かを決定することを含んでもよい。訓練は微分可能な形で実施され、即ち、ニューラル・ネットワークのニューロンに対する論理演算子の確率分布は訓練中に学習される。したがって、訓練は、ニューロン確率分布の損失または誤差を決定することを含む。訓練とは対照的に、推論(即ち、訓練済みニューラル・ネットワークの使用)は必ずしも微分可能でなくてもよく、固定の論理演算子、および緩和値(0~1の確率)ではなくハード値(0または1)を使用して実施することができる。
【0079】
ニューラル・ネットワークの精度は、従来の損失関数を使用して従来的に決定されてもよい。例えば、ソフトマックス交差エントロピー分類損失関数が使用されてもよい。これに関連して、交差エントロピーは2つの確率分布の差の発散測度である。代替として、平均二乗誤差損失が回帰に使用されてもよい。
【0080】
指定の精度は機械学習タスクに従って決定されてもよい。例えば、バイナリ分類に対する指定の精度は約100%であってもよく、画像分類に対する指定の精度は少なくとも95%または少なくとも97%であってもよい。
【0081】
ニューラル・ネットワークを訓練することはさらに、ニューラル・ネットワークが十分に正確でないとき、ハイパーパラメータに対する新しい値を決定することを含んでもよい。ハイパーパラメータに対する新しい値は、例えばベイズ最適化を使用して、反復して決定されてもよい。したがって、ニューラル・ネットワークは新しい値に従って再構築されてもよく、再構築されたニューラル・ネットワークは新しい値に従って訓練されてもよい。指定数の反復を実施した後(または指定の精度に達すると)、ニューラル・ネットワークおよび再構築されたニューラル・ネットワークから最も正確なニューラル・ネットワークが決定されてもよい。最も正確なニューラル・ネットワークは訓練済みニューラル・ネットワークとして提供されてもよい。
【0082】
精度と効率との間にトレード・オフがあることがある。特に、より多くのニューロンを含むニューラル・ネットワークは推論において効率的でないことがある。したがって、関心の効率において指定の精度を低減するのが望ましいことがある。加えて、前の反復からの知識を使用して、後に続く反復のための新しいハイパーパラメータ値が決定されてもよい。例えば、ハイパーパラメータ値を決定するための制約が修正されてもよい。
【0083】
いくつかの例では、複数の論理演算子は、少なくとも2つの演算子、少なくとも8つの演算子、またはちょうど16個の演算子を含んでもよい。
【0084】
いくつかの例では、複数の論理演算子は実数値(即ち、論理ゲートの緩和された対応物)であってもよい。
【0085】
論理演算子は、確率的、Hamacher t-ノルム、relativistic Einstein和t-コノルム、Lukasiewicz t-ノルムおよびt-コノルムといった解釈のうちの1つに準拠してもよい。
【0086】
実数値論理演算子はファジー論理から導き出されてもよい。
【0087】
t-ノルムは連言を表すためにファジー論理で使用されるバイナリ演算であってもよい。同様に、t-コノルムはファジー論理で選言を表すために使用されてもよい。
【0088】
実数値論理演算子および/または実数値入力の使用は、ニューラル・ネットワークを微分可能にするために寄与してもよい。従来の論理ゲート・ネットワークは、それらのパラメータが0および1に限定されるので、微分可能ではない。実数値の使用は、実数値の使用が不連続性を、例えば0から1へのジャンプを排除するので、勾配をネットワーク・パラメータに対して損失関数の導関数(例えば、多次元導関数)として計算できるようにしてもよい。したがって、ニューラル・ネットワークは微分可能な論理ゲート・ネットワークと呼ばれることがある。ニューラル・ネットワークを微分可能にすることで、勾配降下に基づいたアルゴリズムを使用する訓練を容易にしてもよい。
【0089】
さらに、ニューロンの入力および出力は、訓練中は実数値であるが、訓練済みニューラル・ネットワークではブール型(固定)であってもよい。同様に、訓練済みニューラル・ネットワークの論理演算子は、各確率分布が確率分布の最高値を有する論理演算子に置き換えられるように、それらのモードを取ることによって離散化されてもよい。
【0090】
実数値論理演算子は次のものを含んでもよい。
0,A・B,A-AB,A,
B-AB,B,A+B-2AB,A+B-AB,
1-(A+B-AB),1-(A+B-2AB),1-B,1-B+AB,
1-A,1-A+AB,1-AB,1.
【0091】
上述の実数値論理演算子では、AおよびBは対応するニューロンからの入力であってもよい。換言すれば、所与のニューロンの実数値論理演算子は、第1のニューロンからの入力Aおよび第2のニューロンからの入力Bに対して演算を実施してもよい。0および1の場合、これらの値は入力にかかわらず出力されてもよい。上述の実数値論理演算子は、確率的解釈(即ち、確率的積T-ノルムおよび確率的和T-コノルム)に対応してもよい。しかしながら、(上述したような)他の解釈が使用されてもよい。
【0092】
場合によっては、入力データは複数のサンプルを有するテスト・データを含んでもよい。方法はさらに、推論の間(即ち、訓練後)、ニューラル・ネットワークの第1の層によってテスト・データの総計にアクセスすることによって、機械学習タスクを実施することを含んでもよく、アクセスすることは、テスト・データの各サンプルの要素を整数の連続ビットに割り当てることを含む。したがって、推論の間(即ち、訓練後)、各ニューロンの2つの入力は、機械学習タスクが実施されるべきコンピュータのプロセッサのハードウェア実装データ・タイプに対応する数値データ・タイプを有する。
【0093】
したがって、テスト・データの総計は総計サイズ、即ち推論中のバッチの総計サイズを有してもよい。総計サイズは、プロセッサのハードウェア実装データ・タイプ(即ち、アセンブリ言語データ・タイプ)に対応し、したがって効率的である。例えば、総計サイズ64はint64のハードウェア実装データ・タイプに、総計サイズ32はint32のハードウェア実装データ・タイプに使用することができる。
【0094】
具体的には、テスト・データのサンプルは画像であってもよく、サンプルの要素は画像のピクセルであってもよい。数値データ・タイプは、バイナリ・ニューラル・ネットワークと共に従来使用されたブール型データ・タイプではなく、整数データ・タイプ、例えばint64であってもよい。したがって、各ニューロン入力は、整数全体が64の異なるニューロン入力から成るように、int64整数の一部であってもよい。総計サイズは64であってもよい。したがって、機械学習タスクに提供される画像の各バッチは64の画像を含んでもよく、各画像は784のバイナリ・ピクセル(即ち、28×28のビットマップ画像)を有するので、画像は、int64のハードウェア実装データ・タイプをそれぞれが有する784の整数変数のアレイへとバッチ処理する(即ち、全体に拡散させる)ことができる。機械学習タスクが実施されるべきコンピュータのプロセッサはCPUまたはGPUであってもよい。
【0095】
第1の層のニューロンによってテスト・データにアクセスすることは、第1の層のニューロン全体にわたってテスト・データを拡散させることに対応してもよい。アクセスすることは、各連続画像が第1の層のすべての整数全体にわたって拡散されるように、画像1の(すべての)値を整数のビット1に、画像2の(すべての)値を整数のビット2に割り当てることを含んでもよい。言い換えると、画像kのブール値iがint64値iのビットkに割り当てられてもよい。
【0096】
したがって、演算は各画像に対して同じなので、すべての論理演算は整数に対して実行される。したがって、通常は、ビット単位の演算子をブール型データ・タイプを有する単一の値に適用するのと同じ(または匹敵する)処理コストで、ビット単位の演算子をint64の64ビットに同時に適用することができる。
【0097】
このようにして、ブール型データ・タイプを有する値に対する演算の性能と比較して、性能を大幅に改善することができる。特に、この性能の改善は、ブール型データ・タイプを有する値、およびプロセッサのハードウェア実装データ・タイプ(例えば、int64データ・タイプ)に対応する整数データ・タイプを有する値に対するビット単位の演算を実施する多くのプロセッサ(例えば、ほとんどではなくても多くのCPU)が、同じ時間量を効率的にかける、即ち1つの命令を要するという事実に依存する。int64よりも大きいデータ・タイプを使用することによって、例えば、アドバンスト・ベクトル・エクステンション(例えば、AVX、AVX2、AVX-512)命令セットを使用して、さらなる効率が実現されてもよい。
【0098】
CPUまたはGPUの代替として、専用ハードウェア、例えばASICまたはFPGAが使用されてもよい。この場合、ブール型データ・タイプが効率的に使用されてもよい。
【0099】
別の態様によれば、コンピュータ・プログラムが提供される。コンピュータ・プログラムは、プログラムがコンピュータによって実行されると、上述したような方法をコンピュータに実施させる命令を含む。コンピュータ・プログラムはコンピュータ・プログラム製品の一部であって(またはそれに含まれて)もよい。コンピュータ・プログラムはコンピュータ可読媒体で(有形的に)具体化されてもよい。コンピュータ・プログラムは、ハードウェアまたはソフトウェアで実現されてもよい。特に、コンピュータ・プログラムはFPGAまたはASICを使用して実現されてもよい。加えてまたは別の方法として、コンピュータ・プログラムは、ニューラル・ネットワークを実現して特定のタスクを実施するハードウェア符号化(例えば、FPGAまたはASIC)を含む、プロセッサ(CPUまたはGPU)構成要素で実現されてもよい。
【0100】
さらに別の態様によれば、機械学習タスクを実施するためにニューラル・ネットワークを訓練するためのコンピュータ・システムが提供される。コンピュータ・システムは少なくとも1つのプロセッサを備える。プロセッサは、ニューラル・ネットワークに対する入力データを受け取り、ニューラル・ネットワークの複数のハイパーパラメータに対する値を決定し、ハイパーパラメータ値に従ってニューラル・ネットワークを構築するように構成される。ニューラル・ネットワークは複数のニューロンを備える。各ニューロンは、ニューロンが複数の論理演算子それぞれに対して、対応する確率を含むような、論理演算子に対する確率分布を含む。プロセッサはさらに、各ニューロンの確率分布を学習することによって、ハイパーパラメータ値および入力データに従ってニューラル・ネットワークを訓練するように構成される。プロセッサはさらに、確率分布における値を選択することによって、各ニューロンに対する複数の論理演算子の論理演算子を決定するように構成される。
【0101】
プロセッサは、(本開示の技術を使用して)機械学習タスクを実施するためのニューラル・ネットワークの訓練を加速するか、または機械学習タスクの性能を加速するために活用することができる特徴を含むGPUであってもよい。
【0102】
加えてまたは別の方法として、コンピュータ・システムは少なくとも1つのFPGAおよび/またはASICを使用して実現されてもよい。
【0103】
加えてまたは別の方法として、コンピュータ・システムは、論理ゲート・ネットワークのための(例えば、ASICにおける)ハードウェア・アクセラレーションを含んでもよい。
【0104】
本開示に記載する主題は、場合によっては1つまたは複数のコンピュータ・プログラム(例えば、コンピュータ・プログラム製品)の形態で、方法としてまたはデバイス上で実現することができる。かかるコンピュータ・プログラムは、本開示に記載する1つまたは複数の演算をデータ処理装置に実施させてもよい。
【0105】
本開示に記載する主題は、データ信号において、または機械可読媒体上で実現することができ、媒体は、テープ、CD-ROM、DVD-ROM、半導体メモリ、またはハード・ディスクなど、1つもしくは複数の情報担体で具体化される。特に、開示する主題は、機械(コンピュータ)可読媒体で有形的に具体化されてもよい。
【0106】
加えて、本開示に記載する主題は、少なくとも1つのプロセッサとプロセッサに結合されたメモリとを含む、システムとして実現することができる。プロセッサは、中央処理装置(CPU)またはグラフィック処理装置(GPU)であってもよい。メモリは、本出願に記載する方法の1つまたは複数をプロセッサに実施させるように、1つまたは複数のプログラムを符号化してもよい。本開示に記載するさらなる主題は様々な機械を使用して実現することができる。CPUおよび/またはGPUは、ハードウェア・アクセラレーション、例えば浮動小数点演算に対するハードウェア・アクセラレーションを有する集積回路を含んでもよい。あるいは、プロセッサは、ハードウェア・アクセラレーション(例えば、浮動小数点アクセラレーション)なしの汎用ハードウェアであってもよい。
【0107】
さらに、本開示の主題は少なくとも1つのフィールド・プログラマブル・ゲート・アレイ(FPGA)で実現されてもよい。FPGAは、人工知能向けに、および/または特にニューラル・ネットワークを実現するために特別に設計されてもよい。FPGAは、事前定義のタスクが論理ゲートを介して表される場合、事前定義のタスク(またはタスクのセット)を効率的に実施することができる、構成可能なハードウェア加速プロセッサであってもよい。FPGAは、暗号通貨(例えば、Bitcoin)のマイニングまたはオシロスコープの実現など、複雑性は制限されるが高速が必要なタスクに特に好適であってもよい。したがって、ニューラル・ネットワークに対する演算の場合、ニューラル・ネットワークを処理するために特別に設計されたFPGAは、従来のCPUよりも10~100倍高速であってもよい。
【0108】
加えてまたは別の方法として、本開示の主題は、特定の用途のためにカスタマイズされた特定用途向け集積回路(ASIC)を使用して実現されてもよい。例えば、ASICは人工知能をサポートするように開発されてもよい。具体的には、GoogleのTensor Processing Unitまたは富士通のDeep Learning Unitが使用されてもよい。
【0109】
加えてまたは別の方法として、論理ゲート・ネットワークのハードウェア実装が使用されてもよい。具体的には、FPGAまたはASICは、論理ゲート・ネットワークを実現するために使用されてもよく、あるいはGPUは、(本開示の技術を使用して)機械学習タスクを実施するためのニューラル・ネットワークの訓練を加速するか、または機械学習タスクの性能を加速するために活用することができる特徴を含んでもよい。
【0110】
1つまたは複数の実現例の詳細を、例示の図面および以下の記載で説明する。他の特徴は、説明、図面から、および請求の範囲から明白となるであろう。
【図面の簡単な説明】
【0111】
【
図1】入力、2つの隠れ層、および出力層を含む、単純化されたニューラル・ネットワークを示す図である。
【
図2】別の単純化されたニューラル・ネットワークを示す図である。
【
図3】機械学習タスクを実施するためにニューラル・ネットワークを訓練するための方法のステップを示す図である。
【
図4】訓練後の4層ニューラル・ネットワークにおける論理演算子の分布を示す図である。
【発明を実施するための形態】
【0112】
以下の文書では、図面を参照して例の詳細な記載を提供する。例に対する様々な修正が行われてもよい。特に、1つの例の1つまたは複数の要素が組み合わされ、他の例で使用されて新しい例が形成されてもよい。
【0113】
図1は、機械学習タスクを実施するための例示的なニューラル・ネットワークを示している。より具体的には、ニューラル・ネットワークは分類タスクを実施するためのものである。ニューラル・ネットワークは、決定されたハイパーパラメータ値に従って構築されてもよい。したがって、ハイパーパラメータ値はニューラル・ネットワークの構造を定義してもよい。ハイパーパラメータ値は、複数の層と層ごとに複数のニューロンとを含んでもよい。したがって、ニューラル・ネットワークは、ニューラル・ネットワークが入力101、第1の層103、第2の層105、および出力層107を含むようにして、ハイパーパラメータに従って構築されてもよい。さらに、出力層107は4つのニューロンを含む。加えて、層103および105はそれぞれ4つのニューロンを含む。
【0114】
したがって、ニューラル・ネットワークの層103および105ならびに出力層107はそれぞれ、同じ数のニューロンを含んでもよい。言い換えると、ニューラル・ネットワークの層はそれぞれ同じ数のニューロンを含んでもよい。
【0115】
単純化されたニューラル・ネットワークの分類タスクは、クラス0およびクラス1の2つのクラスを有する。したがって、分類タスクはバイナリ分類を含む。例えば、ニューロン3.1および3.2はそれぞれ「1」を出力してもよく、ニューロン3.3および3.4はそれぞれ「0」を出力してもよい。この場合、クラスkの数は2であり、外側層107のニューロンnの数は4なので、出力をサイズ2の2つのグループにグループ分けすることができる。したがって、クラス0に対する分類スコアは2となり、クラス1に対する分類スコアは0となる。したがって、分類スコアの最大値に従って分類を決定することで、クラス0を分類として決定することになる。他の例では、より多くのクラスが使用されてもよい。
【0116】
ニューラル・ネットワークの各ニューロン1.1~3.4は2つの異なるニューロンから2つの入力を受け取る。例えば、第1の層103のニューロン1.4は入力101の入力0.5および0.6を受け取る。
【0117】
各ニューロンは、複数の論理演算子それぞれに対して、対応する確率を含んでもよい。ニューロンの確率は、ニューラル・ネットワークが訓練されるにつれて学習されてもよい、ニューロンの確率分布の一部であってもよい。論理演算子は実数値であって(即ち、緩和されて)もよい。実数値論理演算子は、T-ノルム(「and」の緩和)およびT-コノルム(「or」の緩和)に基づいてもよい。実数値論理演算子は微分可能および/または連続であってもよい。したがって、極端なT-ノルムまたは最小T-ノルムのどちらも、実数値論理演算子に対する適切な基礎を提供しないことがある。
【0118】
実数値論理演算子は、実数値論理演算子が0および1の入力に対してだけでなく0~1の間の入力に対しても定義されるという点で、従来のブール型論理演算子の延長とみられることがある。
【0119】
層103のニューロン1.1に対する例示的な確率分布は、表1に示されるような次の確率を含んでもよい。
【0120】
【0121】
表2は、実数値論理演算子(確率的論理演算子)の確率的解釈およびそれらに対応するブール型解釈を示している。
【0122】
【0123】
表2において、ID列は各行を識別する。演算子列はブール型演算子を示す。実数値列の行は、その行のブール型演算子に対応する実数値演算子を示す。列「00」、「01」、「10」、「11」の行は、入力として列のヘッダ値(例えば、「00」)を所与として、その行に対応する演算子(ブール型または実数値)の出力を示す。表2の演算子の数を低減すると性能の減少につながることがあるというテストが示されている。換言すれば、16未満の論理演算子に対抗して16の論理演算子を使用することで、機械学習タスクを実施するためにニューラル・ネットワークを訓練するための方法の効率を改善してもよい。
【0124】
表2の値は確率的論理演算子を示している。実数値論理演算子に対する他の解釈が使用されてもよい。例えば、Hamacher積T-ノルムとその双対であるEinstein和T-コノルムは微分可能であってもよく、実数値論理演算子に対する好適な基礎を提供する。Hamacher積T-ノルムおよびEinstein和T-コノルムに基づいた実数値論理演算子は、次の表3に示されている。
【0125】
【0126】
表3のいくつかの演算子は表3の他の演算子から導き出すことができる。表3の行2、4、および9において、それぞれのブール型演算子は対応する実数値演算子を有さない。含意(表3の行2および4)に関して、T-ノルムに対応するR-含意(または残差)が使用されてもよい(「Continuous R-implications」、B.Jayaramら、2009年7月20~24日を参照)。表2の確率的演算子は、テストの際に表3のHamacher T-ノルムおよびEinstein和T-コノルムよりも良好に実施することが見出されている。
【0127】
実数値演算子の他の実現例は、対応するT-コノルムに加えて、Frank T-ノルム、Yager T-ノルム、Aczel-Alsina T-ノルム、Dombi T-ノルム、およびSugeno-Weber T-ノルムに基づいてもよい。論理演算子に関するさらなる情報は、「Analyzing Differentiable Fuzzy Logic Operators」、van Kriekenら、2021年8月24日に見出すことができる。
【0128】
実数値演算子を実現するのに使用されてもよい、さらなるT-ノルムおよびT-コノルムは、次の表4および表5に示されている。
【0129】
【0130】
【0131】
訓練中の
図1のニューロンに対する例示的な値は、次の表に提供されている。
ニューラル・ネットワークの訓練中期における論理演算子確率
ニューラル・ネットワークの訓練後期における、即ち収束後の論理演算子確率
【0132】
上に示される論理演算子確率の各行に対応する
図1のニューロンは、行の始めに提供されている。例えば、「1.1」で始まる行は層103のニューロン1.1に対する値を示す。論理演算子確率の行のaにおける各列は、表2の連続IDに対応する。例えば、論理演算子確率の行1は表2のID 0に対応し、論理演算子確率の行2はID 1に対応する。したがって、訓練の中期において、ニューロン3.2の最高確率は0.678であり、表2のID 10、即ち実数値演算子1-Bに対応する。
【0133】
訓練の中期は、ネットワークが訓練される、エポックの数を指してもよい。したがって、訓練の中期はエポックの数の約半分を指してもよい。同様に、訓練の後期は最終エポックの10%以内のエポックを指してもよい。例えば、ニューラル・ネットワークが200のエポックに対して訓練されている場合、訓練の中期はエポック90~110であってもよい。同様に、訓練の後期はエポック190~エポック200であってもよい。収束は、訓練を追加してもニューラル・ネットワークが改善しなくなる訓練の段階を指してもよい。
【0134】
上述の例示的な値から分かるように、訓練の中期において各ニューロンに対して0~1の論理演算子の確率の数がある。しかしながら、収束後、一般的に、確率の1つまたは2つのみが0以外の値を有し、少なくとも1つの値は1に近い。
【0135】
図2は、回帰タスクを実施するためのニューラル・ネットワークを示している。この場合、「クラス0」または「クラス1」の代わりに、ニューラル・ネットワークの出力は出力層107の値である。より具体的には、出力はブール値のアレイ(即ち、各値が0または1のどちらかであってもよい値のベクトル)であってもよい。あるいは、スカラー出力があってもよい。
【0136】
より具体的には、k次元出力を生成(即ち、予測)するため、出力層107にn個のニューロンがあってもよい。出力は(例えば、サイズn/kの)k個のグループにグループ分けされてもよい。出力(予測)の各次元iに対して、αi・n/kが有効であり、出力(予測)に対する決定された(所望の)範囲を提供するような、スカラー・パラメータαiがあってもよい。
【0137】
例えば、回帰タスクが降雨を予測するものである場合、1次元があってもよく、回帰タスクが降雨および風速を予測するものである場合、2次元があってもよい。降雨の決定された範囲は0~200mmであってもよい。別の例では、回帰タスクが画像生成である場合、kはピクセルの数であってもよく、したがって784ピクセルの画像を生成するには、kは784であってもよい。
【0138】
最終出力は、出力層107における出力ニューロンの1の値を計数することによって決定されてもよい。
【0139】
正値および負値両方の出力を生成するために、決定された範囲(即ち、出力空間)をシフトするのにバイアスβ
iが使用されてもよい。したがって、最終出力は、出力ニューロンを計数し、次式に示されるようにアフィン変換を適用することによって決定されてもよい。
【数1】
【0140】
アフィン変換は、0~n/kの決定された範囲をより好適な特定用途向けの範囲に変換(またはシフト)するために使用されてもよい。
【0141】
場合によっては、すべてのiに対してα=αiおよびβ=βiであるように、出力のすべての次元が同じ範囲を有する。
【0142】
場合によっては、決定された範囲がすべての実数をカバーするのが望ましいことがあり、これは次式のようにロジット変換を使用して達成することができる。
【数2】
式中、
【数3】
【0143】
出力を使用して、平均二乗誤差(MSE)損失を次式のように公式化することができる。
【数4】
【0144】
他の観点では、
図2のニューラル・ネットワークは
図1のニューラル・ネットワークに対応する。
【0145】
図3は、機械学習タスクを実施するためにニューラル・ネットワークを訓練するための方法を示している。ニューラル・ネットワークは、上述した
図1および
図2のニューラル・ネットワークに対応してもよい。
【0146】
ニューラル・ネットワークは、訓練後、従来のニューラル・ネットワークで一般的に実施される浮動小数点計算ではなく、すべての計算をブール値に対するバイナリ演算として実施する、深層微分可能論理ゲート・ネットワークと呼ばれることがある。ニューラル・ネットワークの各ニューロンに対する演算子は、論理ゲートを使用して排他的に実現されてもよい。これは、訓練済みニューラル・ネットワークを用いて機械学習タスクを実施するとき、非常にスパースなネットワークおよび効率の増加につながることがある。効率は、機械学習タスクに対するデータ(例えば、テスト・データ)を第1の層103のニューロンにわたって拡散させることによって、さらに増加させてもよい。
【0147】
ステップS201で、ニューラル・ネットワークに対する入力データが受け取られる。入力データは、層103~105の各ニューロンが2つの入力を受け取るように、バイナリ値入力101として受け取られてもよい。入力データは、訓練データ、検証データ、およびテスト・データを含んでもよい。訓練データは、各ニューロンに対する確率分布を学習するために使用されてもよい。検証データは、ニューラル・ネットワークが十分に正確か否かを決定するために、即ち訓練が完了しているか否かを決定するために使用されてもよい。テスト・データは、推論中(訓練が完了した後)に、例えば、他のまたは従来のニューラル・ネットワークに対してニューラル・ネットワークを評価するために使用されてもよい。
【0148】
ステップS203で、ニューラル・ネットワークの複数のハイパーパラメータに対する値が決定される。ハイパーパラメータは、層の数(例えば、約2~約32)、各層におけるニューロンの数(例えば、約12~約1024000)、および学習率を含んでもよい。
【0149】
例えば、各層は同じ数のニューロンを有してもよい。加えてまたは別の方法として、約4~約8層があってもよい。このことは、ニューラル・ネットワークのアーキテクチャ/構造を微調整する必要がないという利点につながってもよい。したがって、これは、ハイパーパラメータの決定を単純化し高速化してもよい。
【0150】
学習率は約0.01の定数値を有してもよい。
【0151】
ステップS205で、ハイパーパラメータ値に従ってニューラル・ネットワークが構築されてもよい。これは、ハイパーパラメータ値に従って、層の数(例えば、4)および層ごとのニューロンの数(例えば、8000)を生成することを含んでもよい。構築することは、ニューロン間の接続、即ちネットワークの重みを疑似ランダムに初期化することを含んでもよい。接続(即ち、重み)を初期化する他の手段も可能である。例えば、従来のアプローチに従って決定された重みを有する訓練済みニューラル・ネットワークが基礎として使用されてもよい。
【0152】
各ニューロンは複数の論理演算子に対する確率分布を含んでもよい。論理演算子はそれぞれ次の特徴(signature)を有してもよい。
f:{0,1}x{0,1}→{0,1}
【0153】
ハード・バイナリ値p∈{0,1}の代わりに、確率分布の確率はp∈[0,1]16に緩和されてもよい。これは、ニューラル・ネットワークを微分可能にするステップであってもよい。
【0154】
ニューラル・ネットワークでは、単一のニューロンは次のように定義されてもよい。ニューロンに対する2つの入力はa,b∈[0,1]と定義されてもよい。したがって、pは確率単体Δ
15であり、論理演算子にわたる確率分布である。pは
【数5】
を介してパラメータ化されてもよく、p=softmax(q)である。さらに、0p
i(・,・)は、上述の表2に従って、ID iを有する実数値論理演算子であってもよい。したがって、ニューロンの出力oは次式のように定義されてもよい。
【数6】
【0155】
出力oは∈[0,1]であってもよい。
【0156】
バイナリ入力を用いた場合であってもニューラル・ネットワークのニューロンを互いに区別することができるので、即ち、ネットワークの値は∈{0.1}に制約されなくなるので、確率分布(例えば、カテゴリ別確率分布)によって、どの論理演算子(即ち、論理ゲート)が各ニューロンに存在するかの選択を表すことによって、(例えば、勾配降下に基づいたアルゴリズムを使用して)訓練を実施することができる。
【0157】
有利には、ニューラル・ネットワークを記憶する記憶要件は、論理演算子を使用する代わりに浮動小数点演算を実施するニューラル・ネットワークの場合よりも大幅に少なくてもよい。例えば、複数の論理演算子は16の論理演算子から成ってもよい。したがって、ニューラル・ネットワークが訓練された後、所与のニューロンに対する論理演算子を表すために4ビットのみを要する。換言すれば、所与のニューロンが実行する演算を指定する情報を記憶するために4ビットのみを要する。これは、ニューロンがより複雑な演算を実施するニューラル・ネットワークで必要とされるよりも大幅に少ないメモリであってもよい。
【0158】
従来のスパース・ニューラル・ネットワークでは、スパース・ニューラル・ネットワークのニューロン(重み)間の接続が訓練されてもよい。
【0159】
ステップS207で、ニューラル・ネットワークはハイパーパラメータ値に従って訓練されてもよい。従来のスパース・ニューラル・ネットワークとは対照的に、ニューラル・ネットワークを訓練することは、初期化後にニューロン間の接続を固定したまま、どの論理演算子(即ち、バイナリ関数)を各ニューロンにおいて実現するかを学習することを含んでもよい。したがって、学習目的は、論理演算子のうちどれが各ニューロンに存在すべきかを決定することであってもよい。したがって、ネットワークは、各ニューロンにおける論理演算子に対して確率分布を学習することによって(連続的に)パラメータ化されてもよい。
【0160】
ニューラル・ネットワークは緩和されてもよい。換言すれば、固定の論理演算子の代わりに、論理演算子の確率分布が使用されてもよく、ニューラル・ネットワークが訓練中に確率に対して働いてもよい。論理演算子を緩和することは、ニューラル・ネットワークを微分可能にする際の別のステップであってもよい。各ニューロンの確率分布を学習することは、(緩和された)ソフトマックスのパラメータ化を介して実施されてもよい。
【0161】
確率分布を学習することは、16の論理演算子に対応する16の浮動小数点値を用いて各ニューロンをパラメータ化することによって実現されてもよい。ソフトマックスは、16の浮動小数点値を確率単体にマッピングするために使用されてもよい(即ち、すべてのエントリが合計して1になり、非負値のみが存在するようなカテゴリ別確率分布)。上述の式4の考察を参照すると、ニューラル・ネットワークの初期化中にニューロンをパラメータ化することは、標準正規分布とは独立してqの要素を選択(描写)することを含んでもよい。
【0162】
訓練は、各ニューロンに対して16の論理演算子をすべて評価することと、カテゴリ別確率分布を使用してそれらの重み付け平均を計算することとを含んでもよい。したがって、訓練中、すべてのニューロンの出力は∈[0,1]であってもよい。
【0163】
より具体的には、出力層のk個のクラスおよびn個のニューロンを用いる分類タスクの場合、出力はサイズn/kのk個のグループにグループ分けされてもよい。このようにして、クラスそれぞれに対する分類スコアは、各グループにおける1の数を計数することによって決定されてもよい。したがって、分類タスクに関連して、ニューラル・ネットワークの出力は、分類スコアのargmaxを取ることによって決定されてもよい。
【0164】
ニューラル・ネットワークが十分に正確か否かを決定するために、1の数を計数するのではなく、グループそれぞれにおける出力の確率が加算されてもよい。したがって、分類損失を計算することによって精度の測度が決定されてもよい。例えば、ソフトマックス交差エントロピー分類損失が次式のように計算されてもよい。
【数7】
出力ニューロン(o
i)
i∈{1…n}について、結果として得られる(真の)クラス(y
j)
j∈{1…k}に対するワン・ホット符号化、およびソフトマックス温度τである。Adam最適化アルゴリズムが訓練のために使用されてもよい。
【0165】
訓練が完了した後、ニューロンに対する2つの入力はa,b∈{0,1}と定義されてもよい。したがって、ニューロンに対する入力が浮動小数点値≧0および≦1であってもよい、訓練中のニューロン(式4を参照)とは対照的に、訓練後のニューロンに対する入力はブール値、即ち0または1のどちらかであってもよい。同様に、ニューロンの出力oは∈{0,1}であってもよい。したがって、訓練後のニューロンの出力oは次式のように定義されてもよい。
o=0pγ(a,b) (式6)
式中、式(6)においてγ=argmaxipiであり、iは表2のIDを指す。
【0166】
ステップS209で、論理演算子が各ニューロンに対して決定されてもよい。論理演算子は、訓練が完了した後、即ち推論中に決定されてもよい。決定された論理演算子は最尤度の論理演算子、例えば、最高確率を有する確率分布の論理演算子であってもよい。換言すれば、確率分布はそれらのモードを取ることによって離散化されてもよい。したがって、機械学習タスクは、浮動小数点値ではなくブール値を計算することによって実施されてもよく、それにより、浮動小数点演算に依存するニューラル・ネットワークと比較して分類が効率的になる。
【0167】
訓練済みニューラル・ネットワークを使用して機械学習タスクを実施する前に、ニューラル・ネットワークは、少なくとも1つのバイナリ実行ファイルにコンパイルされてもよい。バイナリ実行ファイルはプロセッサ依存であってもよい。例えば、1つはCPU用(例えば、Cコードから)、1つはGPU用(例えば、CUDAから)の2つのバイナリ実行ファイルがコンパイルされてもよい。
【0168】
加えて、論理的表現および/または下位表現が単純化されてもよい。例えば、ブール型データ・タイプの代わりに、機械学習タスクが実施されるべきプロセッサに対応するハードウェア実装データ・タイプが使用されてもよい。
【0169】
例えば、64ビットCPUの場合、ハードウェア実装データ・タイプはint64であってもよい。加えて、総計サイズ64が使用されてもよく、つまり、64のサンプル(例えば、画像)が所与の反復(即ち、エポック)でニューラル・ネットワークを通して処理される。GPUにおいて、GPUメモリに対する任意の書込みがボトルネック(即ち、性能の低減)をもたらすことがあるので、出力ニューロンは、それぞれの加算器を構成する論理ゲートを使用して直接総計されてもよい。一般に、ボトルネック(速度の低減を引き起こすことがあるシステム内の地点)は、データ・ローダおよび/または送信速度であってもよい。
【0170】
したがって、ビット単位の演算が、大きいバッチに対して実施されてもよく、そのことが、機械学習タスクを実施することができる速度に対して著しい影響を有することがある。
【0171】
出力層107はクラスごとに複数の出力を生成してもよい。出力は、ビット計数を介して、即ち、各クラスに対するスコアを生じる1を計数することによって、総計されてもよい。したがって、機械学習タスクが分類タスクである場合、分類タスクは、最高スコアを有するクラスをニューラル・ネットワークの出力として提供することによって完了してもよい。
【0172】
入力として与えられるバイナリ・ベクトルを用いて機械学習タスクを実施する場合、ブール値の対はバイナリ・ベクトルから選択されてもよく、層のうちの1つ(例えば、層103)の論理演算子(即ち、バイナリ論理ゲート)がブール値に適用されてもよく、次にそれらの出力をニューラル・ネットワークの後続の層(例えば、層105または107)に使用することができる。
【0173】
訓練後、機械学習タスクを実施する計算コストは、従来のバイナリおよびスパース・ニューラル・ネットワークと比較して、ならびに場合によってはさらに他のタイプの従来のニューラル・ネットワークと比較して、少なくとも1桁低減されてもよい。
【0174】
例示的な機械学習タスクは、「The monk’s problems:A performance comparison of different learning algorithms」、Thrunら,1991年で考察されているような、モンク問題である。モンク問題、MONK-1、MONK-2、およびMONK-3は、機械学習アルゴリズムをベンチマークするために使用されてきた3つの機械学習タスクである。これらのタスクは、6つの属性とそれぞれ2つ~4つの可能な値を有するデータ・セットに対する、3つのバイナリ分類タスクから成る。したがって、データ点(サンプル)をサイズ17のバイナリ・ベクトルとして符号化することができる。
【0175】
テストは、上述のニューラル・ネットワークが3つのMONKデータ・セットすべてに対してロジスティック回帰よりも正確な分類を実施することを示している。加えて、MONK-3の場合、上述の(即ち、
図1および
図2の)ニューラル・ネットワークは、はるかに大きい畳み込みニューラル・ネットワークよりも正確である。加えて、上述のニューラル・ネットワークは、ロジスティック回帰の3倍を超える速さであり、より大きい畳み込みニューラル・ネットワークの7倍を超える速さである。加えて、上述のニューラル・ネットワークは、ロジスティック回帰または畳み込みニューラル・ネットワークのどちらよりも必要な記憶空間が大幅に小さい。
【0176】
別の例示的な機械学習タスクとして、成人の国勢調査(「Uci machine learning repository:Adult data set」、Kohaviら、1996年)および乳がん(「Uci machine learning repository breast cancer dataset」、Zwitterら、1988年)のデータ・セットが考察されてもよい。成人のデータ・セットに関して、機械学習タスクは、教育および週の労働時間などの属性に基づいて、所与の成人が年間50,000ドル超稼ぐか否かを予測するというものである。乳がんに関して、機械学習タスクは、バイナリ分類を含み、周囲、面積、平滑性を含む細胞核の特性に基づいて、がんの診断が良性であるかまたは悪性であるかを決定することを伴う。これらのタスクに関して、上述のニューラル・ネットワークによって達成される(分類)精度は、従来の(畳み込み)ニューラル・ネットワークおよびロジスティック回帰に匹敵する。加えて、分類速度は、ロジスティック回帰の10倍を超える速さであり、従来のニューラル・ネットワークの40倍を超える速さである。加えて、上述のニューラル・ネットワークは、必要な記憶空間がロジスティック回帰よりも約20%少なく、従来のニューラル・ネットワークよりも約75%少ない。
【0177】
さらに、非常に高いフレーム率が画像分類で達成されてもよい。例えば、上述のニューラル・ネットワークの場合、Modified National Institute of Standards and Technology(MNIST)データセット(http://yann.lecun.com/exdb/mnist/)およびCanadian Institute For Advanced Research(CIFAR-10)データセットの画像に対して毎秒100万画像を超えるフレーム率が達成されてもよい(「Learning Multiple Layers of Features from Tiny Images」、Alex Krizhevsky、2009年4月8日)。換言すれば、毎秒100万画像を超える分類率は単一のCPUコアを使用して達成されてもよい。これは、任意の従来のアプローチの効率を上回ってもよい。
【0178】
より具体的には、上述のニューラル・ネットワークは、最も高速の従来のバイナリ・ニューラル・ネットワークに匹敵する、MNISTデータセットに対する画像分類精度を有してもよく、一方で必要なバイナリ演算の数は10%未満である。標準的なGPU(例えば、NVIDIA A6000)において、上述のニューラル・ネットワークが要するGPU利用はわずか7%であるが、上述のニューラル・ネットワークは専用のFPGAハードウェアに対して従来のバイナリ・ニューラル・ネットワークよりも12倍高速で実施してもよい。別の従来のバイナリ・ニューラル・ネットワークと比較して、上述のニューラル・ネットワークは3桁程度高速であってもよい。進化的に学習させてきたスパース関数ネットワークと比較して、上述のニューラル・ネットワークはより正確である。
【0179】
CIFAR-10データセットを使用する画像分類の場合、上述のニューラル・ネットワークの精度は、従来の畳み込みニューラル・ネットワークに匹敵してもよく、一方で必要なメモリは、いくつかの例では0.1%未満、他の例では1%未満である。専用の完全接続ネットワークはわずかに(4%未満)精度が高いが、64%多いメモリを要する。
【0180】
CIFAR-10データ・セットを使用して画像分類を実施する場合、浮動小数点演算に依存する従来の完全接続ニューラル・ネットワークは、機械学習タスクを実施するために2,000,000の浮動小数点演算を要することがあるが、上述のニューラル・ネットワークは、プルーニングまたは最適化の前は、5,000,000のビット単位の論理演算を要する。浮動演算のハードウェア加速集積回路(例えば、今のGPUおよび多くのCPU)において、2,000,000の浮動小数点演算は、5,000,000のビット単位論理演算の約100分の1の低速である。浮動演算のアクセラレーションがない場合、速度の差は1桁大きくなり、即ち差は3桁となる。
【0181】
従来のスパース・ニューラル・ネットワークであっても、従来の完全接続ニューラル・ネットワークよりも高速であるが、依然として上述のニューラル・ネットワークよりも少なくとも1桁低速である。1つのスパース・ニューラル・ネットワークは、上述のニューラル・ネットワークの少なくとも2倍の記憶空間を要する。
【0182】
上述のニューラル・ネットワーク(
図1および
図2に関連する)に対して可能な例示的アーキテクチャは、次の表6に示されている。
【0183】
【0184】
表7は、表6のニューラル・ネットワーク構成と比較するための基礎として使用された、完全接続ReLUネットワークの構成を示している。
【0185】
【0186】
加えて、一般的な汎用デスクトップ・コンピュータまたはラップトップ・コンピュータのCPUの各クロック・サイクル(例えば、Hertzごとの)において、CPUの各コアに対して平均約250のバイナリ論理ゲートを計算することが可能であってもよい。これは、一般的なCPUが、シングル・コアであってもクロック・サイクルごとに多くの命令を実行するため可能である。これは、浮動小数点演算に依存してニューラル・ネットワークを実行する場合に可能であるよりも大幅に高速であってもよい。加えて、CPUは、データの複数のサンプル(例えば、画像)からのビットを単一の整数(例えば、データ・タイプint64を有する整数)にグループ分けすることによって、機械学習タスクのデータを第1の層103のニューロンにわたって拡散させることができてもよい。複数のサンプルからのビットを単一の整数にグループ分けすることは、単一命令多重データ(SIMD)と呼ばれることがある。追加の効率向上は、アドバンスト・ベクトル・エクステンション(AVX)を使用して可能であってもよい。
【0187】
n個のニューロンを有する層(例えば、層103、105、または107)によって実施される機械学習タスクの一部の計算コストは、ブール型の論理ゲートのみを要する(即ち、演算が論理演算子を介して排他的に実施され、したがって非常に効率的に実施することができる)ので、細かい固定コストを含めて0(n)であってもよい。比較すると、m個の入力ニューロンを有する完全接続層は、特に、完全接続層が一般的に浮動小数点演算を要するので、大幅に高い固定コストを伴う計算コストO(n・m)を有する。全体的に、
図1および
図2を参照して記載した方法に従って訓練されたニューラル・ネットワークを使用して機械学習タスクを実施することは、完全接続ReLUニューラル・ネットワーク(ReLU活性化関数を使用するニューラル・ネットワーク)よりも2桁高速である推論速度につながることがある。加えて、
図1および
図2の方法に従って訓練されたニューラル・ネットワークは、従来のバイナリ・ニューラル・ネットワークよりも13倍を超える速さであって、従来のスパース・ニューラル・ネットワークの理論上の速度の2~3桁高速であってもよい。
【0188】
図4は、機械学習タスクを実施するように訓練されたニューラル・ネットワークに対する論理ゲートの分布を示している。この場合、機械学習タスクは画像分類を含む。ニューラル・ネットワークは4つの層を有し、層ごとに12,000のニューロンを有する。層1および2に対して、X軸上の値は、表2のID、ならびに層3および層4の場合のX軸上の値に対応する。Y軸上の値は、X軸上の論理演算子が存在するニューロンの数の計数を提供する。
【0189】
図4から、定数「0」および「1」(表2のID 0および15に対応する)に対する論理演算子は、非常に低頻度で使用され、層4ではまったく起こらないことが分かる。第1の層では、「and」、「nand」、「or」、および「nor」は比較的強い確率を有する。
【0190】
第2および第3の層において、2つの入力のうちの1つは無視され、他方の入力が次の層に(場合によっては修正された形態で)順送りされるので、残差直接接続として見ることができる「A」、「B」、「┐A」、および「┐B」がより多く発生する。これは、層の事前定義された数よりも少ない層で表現することによって、ニューラル・ネットワークがより低次の依存性をより効率的にモデル化できるようにし得る。
【0191】
層4では、最も高頻度の演算は、前の層の活性化の条件付き依存を作成することができる、「xor」および「xnor」である。図示されるように、含意は低頻度で使用される。しかしながら、テストは、(表2の確率的解釈の16個の演算子すべてではなく)論理演算子の適切なサブセットのみを使用することが、精度の減少につながり得ることを示している。
【国際調査報告】