(57)【要約】  学習装置100 は、Ｍ行Ｎ列（Ｍ、Ｎはそれぞれ１以上の整数）の行列が入力される演算部110 を備える学習装置であって、演算部110 は、複数の演算器を含み、複数の演算器は、演算部110 に行列が入力されると行列の各成分をそれぞれ読み込み、読み込まれた成分を対応する演算器にそれぞれ入力する。
2020049637.tif 000002
【特許請求の範囲】
【請求項１】
Ｍ行Ｎ列（Ｍ、Ｎはそれぞれ１以上の整数）の行列が入力される演算部を備える学習装置であって、
前記演算部は、
複数の演算器を含み、
前記複数の演算器は、
前記演算部に前記行列が入力されると前記行列の各成分をそれぞれ読み込み、
読み込まれた成分を対応する演算器にそれぞれ入力する
ことを特徴とする学習装置。
【請求項２】
ｍを１以上Ｍ以下の整数、ｎを１以上Ｎ以下の整数とするとき、行列の（ｍ，ｎ）成分（ｍ≠ｎ）を読み込んだ演算器と、前記行列の（ｎ，ｍ）成分を読み込んだ演算器とが対応する
請求項１記載の学習装置。
【請求項３】
行列形式で配置されている複数の演算器のうちの上からｍ番目、左からｎ番目（ｍ≠ｎ）の演算器は、
前記複数の演算器のうちの上からｎ番目、左からｍ番目の演算器と対応し、
演算部に行列が入力されると前記行列の（ｍ，ｎ）成分を読み込む
請求項２記載の学習装置。
【請求項４】
ｍを１以上Ｍ以下の整数、ｎを１以上Ｎ以下の整数とするとき、行列の（ｍ，ｎ）成分（２×ｍ−１≠Ｍ、かつ２×ｎ−１≠Ｎ）を読み込んだ演算器と、前記行列の（Ｍ＋１−ｍ，Ｎ＋１−ｎ）成分を読み込んだ演算器とが対応する
請求項１記載の学習装置。
【請求項５】
行列形式で配置されている複数の演算器のうちの上からｍ番目、左からｎ番目（２×ｍ−１≠Ｍ、かつ２×ｎ−１≠Ｎ）の演算器は、
前記複数の演算器のうちの上から（Ｍ＋１−ｍ）番目、左から（Ｎ＋１−ｎ）番目の演算器と対応し、
演算部に行列が入力されると前記行列の（ｍ，ｎ）成分を読み込む
請求項４記載の学習装置。
【請求項６】
各演算器は、対応する演算器と配線でそれぞれ接続されている
請求項１から請求項５のうちのいずれか１項に記載の学習装置。
【請求項７】
各演算器は、対応する演算器と２本の配線でそれぞれ接続されている
請求項６記載の学習装置。
【請求項８】
各演算器は、他の演算器を介して対応する演算器に読み込まれた成分をそれぞれ入力する
請求項１から請求項５のうちのいずれか１項に記載の学習装置。
【請求項９】
各演算器は、他の演算器と２本の配線でそれぞれ接続されている
請求項８記載の学習装置。
【請求項１０】
行列の成分は、１つ以上のユニットでそれぞれ構成された複数の層が層状に結合された判別モデルの各ユニットのパラメタである
請求項１から請求項９のうちのいずれか１項に記載の学習装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習装置に関する。
【背景技術】
【０００２】
機械学習の普及が進み、時々刻々と変化する状況に対応するための更なる工夫が求められる。時々刻々と変化する状況に対応するためには、使用される環境で取得される多様な生データを学習用データとして学習に取り入れることが求められる。学習用データは、判別モデルの学習に用いられるデータである。【０００３】
学習用データが用いられた学習（機械学習）では、例えば、学習用データが示す入力と出力の関係等に基づいて、所定の学習器で使用される演算式や判別式のパラメタが調整される。学習器は、例えば、データが入力されると、１つまたは複数のラベルに関する判別を行う判別モデルである。【０００４】
機械学習における演算資源と演算精度の関係として、例えば、非特許文献１には、ニューラルネットワークの深層学習を効率的に、特に低い消費電力で実行するための学習用演算回路および学習方法の例が記載されている。【０００５】
また、非特許文献２には、ＣＮＮ（Convolutional Neural Network）における深層学習において、複数ある畳込み層を、重みが固定される層と重みが更新される層（拡張機能層）に分けて学習範囲を制限することによって学習時間の短縮を図る学習方法の例が記載されている。【０００６】
また、機械学習における学習演算用の回路構成の例として、非特許文献３には、ＦＰＧＡ（Field-Programmable Gate Array ）をベースとしたアクセラレータ設計の最適化例が記載されている。【０００７】
以下、学習方法の概略を説明する。図１０は、入力層と出力層との間に１つ以上の中間層を含むニューラルネットワークにおける一般的な学習方法および学習のための回路構成の例を示す説明図である。【０００８】
図１０に示す例では、汎用用途の学習アルゴリズムに対応するために、大規模学習回路70が、所定の判別モデルであるニューラルネットワーク全体を学習する。【０００９】
図１０に示す大規模学習回路70に付された吹き出しには、ニューラルネットワークの学習過程における処理の方向および処理の範囲が模式的に記載されている。吹き出し内において、ニューラルネットワークにおけるニューロンに相当するユニット71が楕円で表されている。【００１０】
また、線分72（図１０に示すユニット71間を結ぶ線）は、ユニット71間結合を表す。また、矢印73（図１０に示す右向きの太線矢印）は、推論処理および推論処理の範囲を表す。また、矢印74（図１０に示す左向きの太線矢印）は、パラメタ更新処理およびパラメタ更新処理の範囲を表す。なお、パラメタ更新処理は、学習処理の例である。【００１１】
なお、図１０は、各ユニット71への入力が前段の層のユニット71の出力になるフィードフォワード型のニューラルネットワークの例を示す。例えば、時系列情報が保持されている場合、リカレント型のニューラルネットワークのように、各ユニット71への入力に、前の時刻における前段の層のユニット71の出力が含まれてもよい。【００１２】
なお、各ユニット71への入力に前の時刻における前段の層のユニット71の出力が含まれる場合も、推論処理の方向は、入力層から出力層へと向かう方向（順方向）であるとみなされる。また、各ユニット71への入力は、上記の例に限定されない。【００１３】
入力層から所定の順番で行われる推論処理は、「順伝搬」とも呼ばれる。一方、パラメタ更新処理の方向は、特に限定されない。例えば、図１０に示すパラメタ更新処理のように、パラメタ更新処理の方向は、出力層から入力層へと向かう方向（逆方向）でもよい。【００１４】
なお、図１０に示すパラメタ更新処理は、誤差逆伝搬法で実行される処理の例である。しかし、パラメタ更新処理は、誤差逆伝搬法で実行される処理に限定されない。例えば、パラメタ更新処理は、ＳＴＤＰ（Spike Timing Dependent Plasticity ）で実行されてもよい。【００１５】
ニューラルネットワークに限らず、深層学習におけるモデルの学習方法の例として、次のような学習方法が挙げられる。まず、入力層に学習用データを入力した後、出力層までの各層で順方向に各ユニット71の出力を計算する推論処理を行う（順伝搬：図１０に示す矢印73参照）。【００１６】
次いで、出力層からの出力（最終出力）と学習用データが示す入力と出力の関係等とから算出される誤差に基づいて、層内の各ユニット71の出力を計算するために用いられるパラメタを更新するパラメタ更新処理を行う（逆伝搬：図１０に示す矢印74参照）。図１０に示すように、パラメタ更新処理は、出力層から第１層までの各層を逆方向に辿って行われる。また、パラメタ更新処理は、算出される誤差が最小になるように行われる。【００１７】
図１０に示すように、モデル全体が学習対象である場合、パラメタ更新処理で、入力層より後段の全ての層（第１層〜第ｎ層）における層内の各ユニット71の出力を計算するために用いられるパラメタが更新される。更新されるパラメタは、例えば、層内の各ユニット71と他の層のユニット71を結合するユニット71間結合の重みである。【００１８】
上記のようなパラメタ更新処理が、例えば学習用データが変更されながら複数回繰り返し実行されることによって、高い認識率を有する学習済みモデルが生成される。図１０は、学習を行う演算回路の実現例として、上記の推論処理とパラメタ更新処理とを高い演算精度で行う大規模学習回路70を示す。【００１９】
図１１は、１つのユニット71に着目したときのユニット71の入出力および他ユニット71との結合の例を示す説明図である。図１１（ａ）は、１つのユニット71の入出力の例を示す。また、図１１（ｂ）は、２層に並べられたユニット71間の結合の例を示す。【００２０】
図１１（ａ）に示すように、１つのユニット71に対して４つの入力（ｘ１〜ｘ４）と１つの出力（ｚ）が与えられた場合、ユニット71の動作は、例えば式（１Ａ）のように表される。【００２１】
ｚ＝ｆ（ｕ）  ・・・式（１Ａ）
ただし、ｕ＝ａ＋ｗ１ｘ１＋ｗ２ｘ２＋ｗ３ｘ３＋ｗ４ｘ４  ・・・式（１Ｂ）【００２２】
なお、式（１Ａ）におけるｆ（）は、活性化関数を表す。また、式（１Ｂ）におけるａは、切片を表す。また、式（１Ｂ）におけるｗ１〜ｗ４は、各入力（ｘ１〜ｘ４）に対応した重み等のパラメタを表す。【００２３】
一方、図１１（ｂ）に示すように、２層に並べられた層間で各ユニット71が結合されている場合、後段の層に着目すると、層内の各ユニット71への入力（それぞれｘ１〜ｘ４）に対する各ユニット71の出力（ｚ１〜ｚ４）は、例えば、次のように表される。【００２４】
ｚｉ＝ｆ（ｕｉ）  ・・・式（２Ａ）
ただし、ｕｉ＝ａ＋ｗｉ，１ｘ１＋ｗｉ，２ｘ２＋ｗｉ，３ｘ３＋ｗｉ，４ｘ４ ・・・式（２Ｂ）【００２５】
なお、式（２Ａ）におけるｉは、同一層内のユニット71の識別子（本例ではｉ＝１〜３）である。また、式（２Ｂ）における切片ａを、値１の定数項の係数（すなわち、パラメタの１つ）とみなすことも可能である。【００２６】
以下では、式（２Ｂ）を単純化して、
ｕｉ＝Σ（ｗｉ，ｋ＊ｘｋ）  ・・・式（２Ｃ）
と記す場合がある。なお、式（２Ｃ）において、切片ａは省略されている。また、式（２Ｃ）におけるｋは、層における各ユニット71への入力、より具体的には入力を行う他のユニット71の識別子を表す。【００２７】
また、層における各ユニット71への入力が前段の層の各ユニット71の出力のみである場合、上記の簡略式を、
ｕｉ（Ｌ）＝Σ（ｗｉ，ｋ（Ｌ）＊ｘｋ（Ｌ−１））  ・・・式（２Ｄ）
と記すことも可能である。【００２８】
なお、式（２Ｄ）におけるＬは、層の識別子を表す。また、式（２Ｄ）におけるｗｉ，ｋは、第Ｌ層における各ユニットｉのパラメタを表す。より具体的には、ｗｉ，ｋは、各ユニットｉと他のユニットｋとの結合（ユニット71間結合）の重みに相当する。【００２９】
以下、ユニット71を特に区別せず、ユニット71の出力値を決める関数（活性化関数）を簡略化して、ｚ＝Σ（ｗ＊ｘ）と記す場合がある。【００３０】
上記の重みの集合は、ベクトル形式で以下のように記載される。【００３１】
ｗｉ＝［ｗｉ，１，ｗｉ，２，・・・，ｗｉ，ｋ］Ｔ  ・・・式（３）【００３２】
式（３）を、重みベクトルと呼ぶ。また、ある層の入力の集合である入力ベクトルｘ＝［ｘ１，ｘ２，・・・，ｘｋ］Ｔ、重みベクトルを横に連結した重み行列をＷとすると、出力ベクトルｚはｆ（ＷＴｘ）で表される。なお、出力ベクトルｚと活性化関数との間に、以下の関係が成り立つ。【００３３】
ｚ＝ｆ（ｕ）＝［ｆ（ｕ１），ｆ（ｕ２），・・・，ｆ（ｕｎ）］  ・・・式（４）【００３４】
上記の例において、あるユニット71が入力ｘから出力ｚを求める計算が、ユニット71における推論処理に相当する。推論処理においてパラメタ（例えば、重みｗ）は固定される。推論処理は、例えば、運用中の監視システム等で、画像中の物体が特定の物体であるか否かを判定するために実行される処理である。一方、ユニット71のパラメタを求める計算が、ユニット71におけるパラメタ更新処理に相当する。【００３５】
図１２に、推論処理を行う推論装置の例を示す。図１２は、一般的な推論装置の構成例を示すブロック図である。図１２に示す推論装置80は、重みメモリ81と、重みロード部82と、演算部83とを備える。【００３６】
重みメモリ81は、重み行列Ｗを記憶する機能を有する。重みロード部82は、重みメモリ81に記憶されている重み行列Ｗを重みメモリ81からロードする機能を有する。【００３７】
重みロード部82は、ロードされた重み行列Ｗを演算部83に入力する。演算部83は、入力された重み行列Ｗを用いて、上記の推論処理を行う機能を有する。【００３８】
次に、図１３に、パラメタ更新処理を行う学習装置の例を示す。図１３は、一般的な学習装置の構成例を示すブロック図である。図１３に示す学習装置90は、重みメモリ91と、重みロード部92と、演算部93と、重みストア部94とを備える。【００３９】
重みメモリ91は、重み行列Ｗを記憶する機能を有する。重みロード部92は、重みメモリ91に記憶されている重み行列Ｗを重みメモリ91からロードする機能を有する。【００４０】
重みロード部92は、ロードされた重み行列Ｗを演算部93に入力する。演算部93は、入力された重み行列Ｗを用いて、上記のパラメタ更新処理を行う機能を有する。【００４１】
演算部93は、パラメタ更新処理で更新された重み行列Ｗを、重みストア部94に入力する。重みストア部94は、演算部93により更新された重み行列Ｗを重みメモリ91に書き込む機能を有する。【００４２】
具体的には、重みストア部94は、重みメモリ91に記憶されている重み行列Ｗを、入力された重み行列Ｗに更新する。なお、重み行列Ｗの書き込みにあたり、重みストア部94は、重み行列Ｗを一時的に保存する機能を有してもよい。【００４３】
また、推論処理および学習処理を実行する装置の他の例として、特許文献１には、ハードウェアを増やすことなくニューラルネットワークの推論および学習の計算を高速に行うニューロプロセッサが記載されている。
【先行技術文献】
【特許文献】
【００４４】
【特許文献１】特開平５−３４６９１４号公報
【非特許文献】
【００４５】
【非特許文献１】Y.H.Chen, et.al., "Eyeriss: an Energy-Efficient Reconfigurable Accelerator for Deep Convolutional Neural Networks", in IEEE Jornal of Slid-State Circuits, vol.52, no.1, Jan. 2017, pp.127-138.
【非特許文献２】Wei. Liu, et.al., "SSD: Single shot MultiBox Detector", arXiv:1512.02325v5, Dec. 2016.
【非特許文献３】Chen Zhang, et.al., "Optimizing FPGA-based Accelerator Design for Deep convolutional Neural Networks", In ACM FPGA 2015, pp.160-170.
【発明の概要】
【発明が解決しようとする課題】
【００４６】
上記の学習処理において、重み行列Ｗの各成分は、並べ替えられて使用される。例えば、重み行列Ｗの転置行列ＷＴ等の、各成分の配置が入れ替えられた行列が使用される。【００４７】
図１３に示す重みロード部92は、転置行列ＷＴを生成するために、例えば、重みメモリ91に記憶されている重み行列Ｗの各成分を行ごとに読み出し、読み出された各成分を並べ替える作業を繰り返し実行する。【００４８】
しかし、重みメモリ91からの重み行列Ｗのロードおよび各成分の並べ替えを繰り返し実行する方法では、消費される電力が高くなる。また、各成分の並べ替えに係る時間も長くなる。【００４９】
また、重みメモリ91側で重み行列Ｗの各成分が並べ替えられても、重みロード部92が演算部93に行列を転送する際に電力が消費される。特許文献１、および非特許文献１〜３には、消費電力の低い行列の各成分の並べ替え方法が記載されていない。【００５０】
［発明の目的］
そこで、本発明は、上述した課題を解決する、低消費電力で行列の各成分を並べ替えることができる学習装置を提供することを目的とする。
【課題を解決するための手段】
【００５１】
本発明による学習装置は、Ｍ行Ｎ列（Ｍ、Ｎはそれぞれ１以上の整数）の行列が入力される演算部を備える学習装置であって、演算部は、複数の演算器を含み、複数の演算器は、演算部に行列が入力されると行列の各成分をそれぞれ読み込み、読み込まれた成分を対応する演算器にそれぞれ入力することを特徴とする。
【発明の効果】
【００５２】
本発明によれば、低消費電力で行列の各成分を並べ替えることができる。
【図面の簡単な説明】
【００５３】
【図１】本発明による学習装置の第１の実施形態の構成例を示すブロック図である。
【図２】第１の実施形態の演算部1300の構成例を示すブロック図である。
【図３】第１の実施形態の演算部1300の他の構成例を示すブロック図である。
【図４】第１の実施形態の演算部1300の他の構成例を示すブロック図である。
【図５】第１の実施形態の演算部1300による転置行列生成処理の動作を示すフローチャートである。
【図６】第２の実施形態の演算部1300の構成例を示すブロック図である。
【図７】第２の実施形態の演算部1300による180 度回転行列生成処理の動作を示すフローチャートである。
【図８】本発明による学習装置1000のハードウェア構成例を示す説明図である。
【図９】本発明による学習装置の概要を示すブロック図である。
【図１０】入力層と出力層との間に１つ以上の中間層を含むニューラルネットワークにおける一般的な学習方法および学習のための回路構成の例を示す説明図である。
【図１１】１つのユニット71に着目したときのユニット71の入出力および他ユニット71との結合の例を示す説明図である。
【図１２】一般的な推論装置の構成例を示すブロック図である。
【図１３】一般的な学習装置の構成例を示すブロック図である。
【発明を実施するための形態】
【００５４】
実施形態１．
［構成の説明］
以下、本発明の実施形態を、図面を参照して説明する。図１は、本発明による学習装置の第１の実施形態の構成例を示すブロック図である。
【００５５】
図１に示すように、学習装置1000は、重みメモリ1100と、重みロード部1200と、演算部1300と、重みストア部1400とを備える。
【００５６】
なお、各ブロック図に記載されている単方向の矢印は、データが流れる方向を示す。しかし、各矢印が記載されている箇所において双方向にデータが流れる可能性は排除されていない。
【００５７】
低消費電力で重み行列Ｗの各成分を並べ替えるために、演算部1300が、成分の内部転送が可能な配線を有する演算器群を含むことが解決手段として考えられる。
【００５８】
重みロード部1200が重み行列Ｗの各成分を行ごとに読み出し各成分を並べ替える作業に比べて、成分を読み込んだ各演算器が成分を交換することによって各成分を並べ替える作業の方が、消費される電力が低い。以下、低消費電力で重み行列Ｗの各成分を並べ替える学習装置1000の各構成要素の機能を説明する。
【００５９】
重みメモリ1100は、推論処理および学習処理に使用される重み行列Ｗ（パラメタ群）を記憶する機能を有する。なお、各ユニット71の重みが、本実施形態における各ユニット71のパラメタである。また、判別モデルは、例えばニューラルネットワークである。
【００６０】
重みロード部1200は、重みメモリ1100から重み行列Ｗをロードする機能を有する。推論処理と学習処理のいずれが行われる時であっても、重みロード部1200は、重みメモリ1100から重み行列Ｗをそのままロードする。重みロード部1200は、ロードされた重み行列Ｗを演算部1300に入力する。
【００６１】
演算部1300は、重みメモリ1100からロードされた重み行列Ｗを用いて上記の推論処理、または上記の学習処理を行う機能を有する。
【００６２】
具体的には、演算部1300は、１つ以上のユニット71でそれぞれ構成された複数の層が層状に結合された判別モデルの各ユニット71の判別用データに対する出力を所定の順番で計算する推論処理を実行する。また、演算部1300は、各ユニット71の学習用データに対する出力に基づいて各ユニット71の重みの少なくとも一部を更新する学習処理を実行する。
【００６３】
演算部1300は、学習処理で更新された重み行列Ｗを、重みストア部1400に入力する。重みストア部1400は、演算部1300により更新された重み行列Ｗを重みメモリ1100に書き込む機能を有する。
【００６４】
具体的には、重みストア部1400は、重みメモリ1100に記憶されている重み行列Ｗを、入力された重み行列Ｗに更新する。なお、重み行列Ｗの書き込みにあたり、重みストア部1400は、重み行列Ｗを一時的に保存する機能を有してもよい。
【００６５】
すなわち、重みストア部1400は、学習処理における各ユニット71の更新対象の重み（重み行列Ｗ）を重みメモリ1100に格納する。重みストア部1400が重み行列Ｗを重みメモリ1100に格納することによって、次の推論処理および学習処理では更新された重み行列Ｗが使用される。
【００６６】
図２は、第１の実施形態の演算部1300の構成例を示すブロック図である。図２に示すように、演算部1300は、演算器1301〜1309と、第１重みレジスタ1311〜1319と、第２重みレジスタ1321〜1329とを含む。
【００６７】
本実施形態の演算部1300は、９つの演算器を含む。なお、演算部1300が含む演算器の数は、９つに限られない。演算部1300は、行列形式で配置されている複数の演算器を含んでいればよい。本実施形態の演算部1300は、３行３列の行列形式で配置されている演算器を含む。
【００６８】
図２に示すように、演算器1301は、第１重みレジスタ1311と、第２重みレジスタ1321と共に演算部1300に配置されている。他の演算器も同様に、第１重みレジスタと、第２重みレジスタと共に演算部1300に配置されている。
【００６９】
第１重みレジスタには、演算部1300に重み行列Ｗが入力された時、各演算器が読み込んだ重みが格納される。各演算器は、自身の配置に対応する重み行列Ｗの成分を読み込む。
【００７０】
具体的には、演算部1300内で上からｍ（ｍは１以上３以下の整数）番目、左からｎ（ｎは１以上３以下の整数）番目に配置されている演算器は、演算部1300に重み行列Ｗが入力されると重み行列Ｗの（ｍ,ｎ）成分を読み込む。
【００７１】
図２に示す例であれば、上から１番目、左から１番目に配置されている演算器1301は、重み行列Ｗの(1,1) 成分である重みw1を読み込む。第１重みレジスタ1311には、演算器1301が読み込んだ重みw1が格納される。各演算器は、第１重みレジスタに格納されている重みを用いて推論処理および学習処理を実行する。
【００７２】
また、図２に示すように、演算部1300は、演算器1302と演算器1304との間で、演算器1303と演算器1307との間で、および演算器1306と演算器1308との間でそれぞれデータが転送可能に構成されている。具体的には、図２に示すように、演算器同士が配線で接続されている。
【００７３】
学習処理では、重み行列Ｗの転置行列ＷＴが使用される。図２に示す例であれば、重み行列Ｗの(1,2) 成分である重みw2は、転置行列ＷＴでは(2,1) 成分になる。また、重み行列Ｗの(2,1) 成分である重みw4は、転置行列ＷＴでは(1,2) 成分になる。
【００７４】
よって、学習処理が実行される場合、演算器1302と演算器1304との間で重みが交換される。具体的には、演算器1302は、第１重みレジスタ1312に格納された重みw2を演算器1304の第２重みレジスタ1324に書き込む。
【００７５】
また、演算器1304は、第１重みレジスタ1314に格納された重みw4を演算器1302の第２重みレジスタ1322に書き込む。同様に、演算器1303と演算器1307との間、および演算器1306と演算器1308との間でもそれぞれ重みが交換される。
【００７６】
なお、図２に示す構成例では２つの演算器の間に１本しか配線が存在しないため、重みの交換は、例えば時分割多重化方式に従って行われる。
【００７７】
時分割多重化方式に従って重みが交換される場合、演算器1302が重みw2を第２重みレジスタ1324に書き込んだ後、演算器1304が重みw4を第２重みレジスタ1322に書き込む。同様に、演算器1303と演算器1307、および演算器1306と演算器1308も、時分割多重化方式に従って重みを交換する。
【００７８】
重みが交換された後、演算器1301、演算器1305、および演算器1309を除く各演算器は、第２重みレジスタに書き込まれた重みと第１重みレジスタに格納されている重みとを入れ替える。
【００７９】
例えば、演算器1302は、第２重みレジスタ1322に書き込まれた重みw4を第１重みレジスタ1312に書き込む。また、演算器1302は、第１重みレジスタ1312に格納されている重みw2を第２重みレジスタ1322に書き込む。
【００８０】
以上の処理を実行することによって、演算部1300は、重み行列Ｗの転置行列ＷＴを仮想的に生成する。すなわち、各第１重みレジスタには、図２に示す転置行列ＷＴの配列通りに各重みが格納される。よって、演算部1300は、転置行列ＷＴを用いて学習処理を実行できる。
【００８１】
図３は、第１の実施形態の演算部1300の他の構成例を示すブロック図である。図３に示す構成例のように、演算器1302と演算器1304との間、演算器1303と演算器1307との間、および演算器1306と演算器1308との間にはそれぞれ、２本の配線が存在してもよい。
【００８２】
図３に示す２本の配線で接続されている２つの演算器は、重みの交換をそれぞれ同時に実行できる。例えば、演算器1302が重みw2を第２重みレジスタ1324に書き込む作業と、演算器1304が重みw4を第２重みレジスタ1322に書き込む作業は、同時に実行可能である。
【００８３】
図２〜３に示す構成例では重みを交換する演算器同士が直接結ばれているため、各重みは、１回だけ転送される。すなわち、各重みの並べ替えで消費される電力が最低になる。
【００８４】
図４は、第１の実施形態の演算部1300の他の構成例を示すブロック図である。図２〜３に示す構成例と異なり、図４に示す構成例では、重みを交換する演算器同士が直接結ばれていない。
【００８５】
図４に示す各演算器は、以下のように各重みを交換する。例えば、演算器1302は、最初に重みw2を演算器1301の第２重みレジスタ1321に書き込む。次いで、演算器1301は、書き込まれた重みw2を演算器1304の第２重みレジスタ1324に書き込む。
【００８６】
重みw2が第２重みレジスタ1324に書き込まれた後、演算器1304は、重みw4を演算器1301の第２重みレジスタ1321に書き込む。次いで、演算器1301は、書き込まれた重みw4を演算器1302の第２重みレジスタ1322に書き込む。
【００８７】
上記のように、図４に示す各演算器は、他の演算器を介して宛先の演算器に重みを入力する。図４に示すように、演算器1302および演算器1304と実線の矢印で結ばれた演算器1301を介して、重みw2と重みw4が交換される。
【００８８】
同様に、演算器1303および演算器1307と破線の矢印で結ばれた演算器1302、演算器1304、演算器1305を介して、重みw3と重みw7が交換される。また、演算器1306および演算器1308と太線の矢印で結ばれた演算器1305を介して、重みw6と重みw8が交換される。
【００８９】
なお、各重みは、図４に示す経路以外の経路を介して交換されてもよい。また、図３に示す構成例のように、各演算器の間に配線（図４に示す矢印に相当）が２本存在していてもよい。
【００９０】
重みが交換された後、演算器1301、演算器1305、および演算器1309を除く各演算器は、第２重みレジスタに書き込まれた重みと第１重みレジスタに格納されている重みとを入れ替える。
【００９１】
図４に示すように、各演算器が重みの転送先を自在に設定できれば、すなわち各演算器がルーティング能力を有していれば、演算器間での重みのやり取りがより柔軟に実行される。
【００９２】
本実施形態のＭ行Ｎ列（Ｍ、Ｎはそれぞれ１以上の整数）の行列が入力される演算部1300が含む各演算器の動作は、以下のように一般化されて記載される。ｍを１以上Ｍ以下の整数、ｎを１以上Ｎ以下の整数とするとき、本実施形態の演算部1300が含む複数の演算器のうちの上からｍ番目、左からｎ番目の各演算器は、演算部1300にＭ行Ｎ列の行列が入力されると行列の（ｍ，ｎ）成分をそれぞれ読み込む。
【００９３】
本実施形態では、上からｍ番目、左からｎ番目（ｍ≠ｎ）の演算器と、上からｎ番目、左からｍ番目の演算器とが対応する。すなわち、行列の（ｍ，ｎ）成分（ｍ≠ｎ）を読み込んだ演算器と、行列の（ｎ，ｍ）成分を読み込んだ演算器とが対応する。各演算器は、読み込まれた成分を対応する演算器にそれぞれ入力する。
【００９４】
なお、「ｍ≠ｎ」とする理由は、正方行列の対角成分に対応する演算器（例えば、演算器1301、演算器1305、および演算器1309）を除外するためである。以上の動作により、演算部1300は、低消費電力で重み行列Ｗを基に転置行列ＷＴを生成できる。
【００９５】
［動作の説明］
以下、本実施形態の演算部1300が転置行列ＷＴを生成する動作を図５を参照して説明する。図５は、第１の実施形態の演算部1300による転置行列生成処理の動作を示すフローチャートである。
【００９６】
最初に、演算部1300に重み行列Ｗが入力されると、各演算器は、重み行列Ｗの該当する重みをそれぞれ読み込む（ステップS101）。各演算器は、読み込まれた重みを第１重みレジスタにそれぞれ格納する。
【００９７】
次いで、演算器1301、演算器1305、および演算器1309を除く各演算器は、対応する演算器と重みを交換する（ステップS102）。すなわち、各演算器は、格納された重みを対応する演算器の第２重みレジスタに書き込む。また、各演算器の第２重みレジスタには、対応する演算器から重みが書き込まれる。
【００９８】
次いで、演算器1301、演算器1305、および演算器1309を除く各演算器は、第２重みレジスタに書き込まれた重みと第１重みレジスタに格納されている重みとを入れ替える（ステップS103）。
【００９９】
すなわち、各演算器は、第２重みレジスタに書き込まれた重みを第１重みレジスタに書き込む。また、各演算器は、第１重みレジスタに格納されている重みを第２重みレジスタに書き込む。各重みを入れ替えた後、演算部1300は、転置行列生成処理を終了する。
【０１００】
［効果の説明］
本実施形態の学習装置1000は、直接配線で結ばれた複数の演算器を含む演算部1300を備える。配線で結ばれた演算器同士は、読み込まれた重みをやり取りできる。すなわち、演算部1300は、入力された重み行列Ｗから転置行列ＷＴを容易に生成できる。
【０１０１】
演算部1300が転置行列ＷＴを生成するため、重み行列Ｗのロードおよび各成分の並べ替えを繰り返し実行する学習装置に比べて、本実施形態の学習装置1000は、転置行列ＷＴの生成で消費される電力を削減できる。
【０１０２】
実施形態２．
［構成の説明］
次に、本発明による演算部1300の第２の実施形態を、図面を参照して説明する。図６は、第２の実施形態の演算部1300の構成例を示すブロック図である。なお、本実施形態の学習装置1000の構成は、図１に示す学習装置1000の構成と同様である。
【０１０３】
図６に示すように、本実施形態の演算部1300も第１の実施形態と同様に、演算器1301〜1309と、第１重みレジスタ1311〜1319と、第２重みレジスタ1321〜1329とを含む。すなわち、本実施形態の演算部1300も、３行３列の行列形式で配置されている演算器を含む。
【０１０４】
各演算器は、第１重みレジスタと、第２重みレジスタと共に演算部1300に配置されている。演算器、第１重みレジスタ、第２重みレジスタが有する各機能は、第１の実施形態における各機能とそれぞれ同様である。
【０１０５】
図６に示すように、演算部1300は、演算器1305以外の各演算器の間でデータが転送可能に構成されている。
【０１０６】
学習処理では、重み行列Ｗの転置行列ＷＴ以外に、重み行列Ｗの各重みが180 度反対の位置に配置された行列（以下、180 度回転行列と呼ぶ。）も使用される。図６に示す例であれば、重み行列Ｗの(1,2) 成分である重みw2は、180 度回転行列では(3,2) 成分になる。
【０１０７】
すなわち、重み行列Ｗの(1,2) 成分は、180 度回転行列では(3,2) 成分=((3+1-1),(3+1-2))成分として扱われる。(3+1-1) の「３」は、重み行列Ｗの行数である。また、(3+1-1) の２番目の「１」は、重み行列Ｗの(1,2) 成分の「１」に対応している。
【０１０８】
また、(3+1-2) の「３」は、重み行列Ｗの列数である。また、(3+1-2) の「２」は、重み行列Ｗの(1,2) 成分の「２」に対応している。他の重み行列Ｗの成分も、同様の計算式に従って並べ替えられる。
【０１０９】
よって、学習処理が実行される場合、演算器1302と演算器1308との間で、重みw2と重みw8が交換される。具体的には、演算器1302は、最初に重みw2を演算器1303の第２重みレジスタ1323に書き込む。次いで、演算器1303は、書き込まれた重みw2を演算器1306の第２重みレジスタ1326に書き込む。
【０１１０】
次いで、演算器1306は、書き込まれた重みw2を演算器1309の第２重みレジスタ1329に書き込む。次いで、演算器1309は、書き込まれた重みw2を演算器1308の第２重みレジスタ1328に書き込む。同様に、演算器1308も、他の演算器を介して重みw8を演算器1302の第２重みレジスタ1322に書き込む。
【０１１１】
上記のように、図６に示す各演算器は、他の演算器を介して宛先の演算器に重みを入力する。同様に、演算器1301と演算器1309との間で、重みw1と重みw9が交換される。また、演算器1303と演算器1307との間で、重みw3と重みw7が交換される。また、演算器1304と演算器1306との間で、重みw4と重みw6が交換される。
【０１１２】
なお、各重みは、図６に示す経路以外の経路を介して交換されてもよい。また、図３に示す構成例のように、各演算器の間に配線（図６に示す矢印に相当）が２本存在していてもよい。
【０１１３】
重みが交換された後、演算器1305を除く各演算器は、第２重みレジスタに書き込まれた重みと第１重みレジスタに格納されている重みとを入れ替える。
【０１１４】
図６に示すように、各演算器が重みの転送先を自在に設定できれば、すなわち各演算器がルーティング能力を有していれば、演算器間での重みのやり取りがより柔軟に実行される。
【０１１５】
また、図２に示す構成例のように、重みが交換される演算器同士が配線で接続されていてもよい。また、図３に示す構成例のように、重みが交換される演算器同士が２本の配線で接続されていてもよい。
【０１１６】
本実施形態のＭ行Ｎ列（Ｍ、Ｎはそれぞれ１以上の整数）の行列が入力される演算部1300が含む各演算器の動作は、以下のように一般化されて記載される。ｍを１以上Ｍ以下の整数、ｎを１以上Ｎ以下の整数とするとき、本実施形態の演算部1300が含む複数の演算器のうちの上からｍ番目、左からｎ番目の各演算器は、演算部1300にＭ行Ｎ列の行列が入力されると行列の（ｍ，ｎ）成分をそれぞれ読み込む。
【０１１７】
本実施形態では、上からｍ番目、左からｎ番目（２×ｍ−１≠Ｍ、かつ２×ｎ−１≠Ｎ）の演算器と、上から（Ｍ＋１−ｍ）番目、左から（Ｎ＋１−ｎ）番目の演算器とが対応する。すなわち、行列の（ｍ，ｎ）成分（２×ｍ−１≠Ｍ、かつ２×ｎ−１≠Ｎ）を読み込んだ演算器と、行列の（Ｍ＋１−ｍ，Ｎ＋１−ｎ）成分を読み込んだ演算器とが対応する。各演算器は、読み込まれた成分を対応する演算器にそれぞれ入力する。
【０１１８】
なお、「２×ｍ−１≠Ｍ、かつ２×ｎ−１≠Ｎ」とする理由は、行数および列数が奇数である正方行列の中心に位置する成分に対応する演算器（例えば、演算器1305）を除外するためである。以上の動作により、演算部1300は、低消費電力で重み行列Ｗを基に180 度回転行列を生成できる。
【０１１９】
［動作の説明］
以下、本実施形態の演算部1300が180 度回転行列を生成する動作を図７を参照して説明する。図７は、第２の実施形態の演算部1300による180 度回転行列生成処理の動作を示すフローチャートである。
【０１２０】
最初に、演算部1300に重み行列Ｗが入力されると、各演算器は、重み行列Ｗの該当する重みをそれぞれ読み込む（ステップS201）。各演算器は、読み込まれた重みを第１重みレジスタにそれぞれ格納する。
【０１２１】
次いで、演算器1305を除く各演算器は、対応する演算器と重みを交換する（ステップS202）。すなわち、各演算器は、格納された重みを対応する演算器の第２重みレジスタに書き込む。また、各演算器の第２重みレジスタには、対応する演算器から重みが書き込まれる。
【０１２２】
次いで、演算器1305を除く各演算器は、第２重みレジスタに書き込まれた重みと第１重みレジスタに格納されている重みとを入れ替える（ステップS203）。
【０１２３】
すなわち、各演算器は、第２重みレジスタに書き込まれた重みを第１重みレジスタに書き込む。また、各演算器は、第１重みレジスタに格納されている重みを第２重みレジスタに書き込む。各重みを入れ替えた後、演算部1300は、180 度回転行列生成処理を終了する。
【０１２４】
［効果の説明］
本実施形態の学習装置1000は、直接配線で結ばれた複数の演算器を含む演算部1300を備える。配線で結ばれた演算器同士は、読み込まれた重みをやり取りできる。すなわち、演算部1300は、入力された重み行列Ｗから180 度回転行列を容易に生成できる。
【０１２５】
演算部1300が180 度回転行列を生成するため、重み行列Ｗのロードおよび各成分の並べ替えを繰り返し実行する学習装置に比べて、本実施形態の学習装置1000は、180 度回転行列の生成で消費される電力を削減できる。
【０１２６】
以下、各実施形態の学習装置1000のハードウェア構成の具体例を説明する。図８は、本発明による学習装置1000のハードウェア構成例を示す説明図である。
【０１２７】
図８に示す学習装置1000は、プロセッサ1001と、主記憶装置1002と、補助記憶装置1003と、インタフェース1004と、出力デバイス1005と、入力デバイス1006とを備える。また、プロセッサ1001は、ＣＰＵ1008や、ＧＰＵ1007等の各種演算・処理装置を含んでいてもよい。
【０１２８】
図８に示すように実装される場合、学習装置1000の動作は、プログラムの形式で補助記憶装置1003に記憶されていてもよい。プログラムが補助記憶装置1003に記憶される場合、ＣＰＵ1008は、プログラムを補助記憶装置1003から読み出して主記憶装置1002に展開し、展開されたプログラムに従って学習装置1000における所定の処理を実行する。
【０１２９】
なお、ＣＰＵ1008は、プログラムに従って動作する情報処理装置の一例である。学習装置1000は、ＣＰＵ（Central Processing Unit ）以外にも、例えば、ＭＰＵ（Micro Processing Unit ）やＭＣＵ（Memory Control Unit ）やＧＰＵ（Graphics Processing Unit）を備えていてもよい。図８には、学習装置1000がＣＰＵ1008に加えて、ＧＰＵ1007をさらに備える例が記載されている。
【０１３０】
補助記憶装置1003は、一時的でない有形の媒体の一例である。一時的でない有形の媒体の他の例として、インタフェース1004を介して接続される磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ（Compact Disk Read Only Memory ）、ＤＶＤ−ＲＯＭ（Digital Versatile Disk Read Only Memory ）、半導体メモリ等が挙げられる。
【０１３１】
また、補助記憶装置1003に記憶される対象のプログラムが補助記憶装置1003に記憶される代わりに通信回線によって学習装置1000に配信される場合、配信を受けた学習装置1000は、配信されたプログラムを主記憶装置1002に展開し、所定の処理を実行してもよい。
【０１３２】
また、プログラムは、学習装置1000における所定の処理の一部を実現するためのものでもよい。さらに、プログラムは、補助記憶装置1003に既に記憶されている他のプログラムと組み合わせられて使用される、学習装置1000における所定の処理を実現するための差分プログラムでもよい。
【０１３３】
インタフェース1004は、他の装置との間で情報の送受信を行う。また、出力デバイス1005は、ユーザに情報を提示する。また、入力デバイス1006は、ユーザからの情報の入力を受け付ける。
【０１３４】
また、学習装置1000における処理内容によっては、図８に示す一部の要素は省略可能である。例えば、学習装置1000がユーザに情報を提示しないのであれば、出力デバイス1005は省略可能である。また、例えば、学習装置1000がユーザから情報入力を受け付けないのであれば、入力デバイス1006は省略可能である。
【０１３５】
また、上記の各構成要素の一部または全部は、汎用または専用の回路（Circuitry ）、プロセッサ等やこれらの組み合わせによって実現される。これらは単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。また、上記の各構成要素の一部または全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
【０１３６】
上記の各構成要素の一部または全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【０１３７】
次に、本発明の概要を説明する。図９は、本発明による学習装置の概要を示すブロック図である。本発明による学習装置100 は、Ｍ行Ｎ列（Ｍ、Ｎはそれぞれ１以上の整数）の行列が入力される演算部110 （例えば、演算部1300）を備える学習装置であって、演算部110 は、複数の演算器（例えば、演算器1301〜1309）を含み、複数の演算器は、演算部110 に行列が入力されると行列の各成分をそれぞれ読み込み、読み込まれた成分を対応する演算器にそれぞれ入力する。
【０１３８】
そのような構成により、学習装置は、低消費電力で行列の各成分を並べ替えることができる。
【０１３９】
また、ｍを１以上Ｍ以下の整数、ｎを１以上Ｎ以下の整数とするとき、行列の（ｍ，ｎ）成分（ｍ≠ｎ）を読み込んだ演算器と、行列の（ｎ，ｍ）成分を読み込んだ演算器とが対応してもよい。
【０１４０】
そのような構成により、学習装置は、転置行列を生成できる。
【０１４１】
また、行列形式で配置されている複数の演算器のうちの上からｍ番目、左からｎ番目（ｍ≠ｎ）の演算器は、複数の演算器のうちの上からｎ番目、左からｍ番目の演算器と対応し、演算部110 に行列が入力されると行列の（ｍ，ｎ）成分を読み込んでもよい。
【０１４２】
そのような構成により、学習装置は、複数の演算器の配置を利用して転置行列を生成できる。
【０１４３】
また、ｍを１以上Ｍ以下の整数、ｎを１以上Ｎ以下の整数とするとき、行列の（ｍ，ｎ）成分（２×ｍ−１≠Ｍ、かつ２×ｎ−１≠Ｎ）を読み込んだ演算器と、行列の（Ｍ＋１−ｍ，Ｎ＋１−ｎ）成分を読み込んだ演算器とが対応してもよい。
【０１４４】
そのような構成により、学習装置は、180 度回転行列を生成できる。
【０１４５】
また、行列形式で配置されている複数の演算器のうちの上からｍ番目、左からｎ番目（２×ｍ−１≠Ｍ、かつ２×ｎ−１≠Ｎ）の演算器は、複数の演算器のうちの上から（Ｍ＋１−ｍ）番目、左から（Ｎ＋１−ｎ）番目の演算器と対応し、演算部110 に行列が入力されると行列の（ｍ，ｎ）成分を読み込んでもよい。
【０１４６】
そのような構成により、学習装置は、複数の演算器の配置を利用して180 度回転行列を生成できる。
【０１４７】
また、各演算器は、対応する演算器と配線でそれぞれ接続されていてもよい。
【０１４８】
そのような構成により、学習装置は、行列の各成分の並べ替えに係る消費電力をより削減できる。
【０１４９】
また、各演算器は、対応する演算器と２本の配線でそれぞれ接続されていてもよい。
【０１５０】
そのような構成により、学習装置は、行列の各成分をより迅速に交換できる。
【０１５１】
また、各演算器は、他の演算器を介して対応する演算器に読み込まれた成分をそれぞれ入力してもよい。
【０１５２】
そのような構成により、学習装置は、転置行列または180 度回転行列の生成の用途以外にも適用される。
【０１５３】
また、各演算器は、他の演算器と２本の配線でそれぞれ接続されていてもよい。
【０１５４】
そのような構成により、学習装置は、行列の各成分をより迅速に交換できる。
【０１５５】
また、行列の成分は、１つ以上のユニットでそれぞれ構成された複数の層が層状に結合された判別モデルの各ユニットのパラメタでもよい。
【０１５６】
そのような構成により、学習装置は、重み行列を取り扱うことができる。
【０１５７】
また、判別モデルは、ニューラルネットワークでもよい。
【０１５８】
そのような構成により、学習装置は、深層学習を実行できる。
【０１５９】
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０１６０】
70  大規模学習回路
71  ユニット
80  推論装置
81、91、1100  重みメモリ
82、92、1200  重みロード部
83、93、110 、1300  演算部
90、100 、1000  学習装置
94、1400  重みストア部
1001  プロセッサ
1002  主記憶装置
1003  補助記憶装置
1004  インタフェース
1005  出力デバイス
1006  入力デバイス
1007  ＧＰＵ
1008  ＣＰＵ
1301〜1309  演算器
1311〜1319  第１重みレジスタ
1321〜1329  第２重みレジスタ
【図１】
2020049637.tif 000003
【図２】
2020049637.tif 000004
【図３】
2020049637.tif 000005
【図４】
2020049637.tif 000006
【図５】
2020049637.tif 000007
【図６】
2020049637.tif 000008
【図７】
2020049637.tif 000009
【図８】
2020049637.tif 000010
【図９】
2020049637.tif 000011
【図１０】
2020049637.tif 000012
【図１１】
2020049637.tif 000013
【図１２】
2020049637.tif 000014
【図１３】
2020049637.tif 000015
【国際調査報告】
2020049637.tif 000016
2020049637.tif 000017