(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023083885
(43)【公開日】2023-06-16
(54)【発明の名称】学習モデル装置、演算装置生産システム、演算方法、演算装置生産方法およびプログラム
(51)【国際特許分類】
G06N 3/04 20230101AFI20230609BHJP
【FI】
G06N3/04
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2021197852
(22)【出願日】2021-12-06
【国等の委託研究の成果に係る記載事項】(出願人による申告)令和2年度、国立研究開発法人新エネルギー・産業技術総合開発機構「人と共に進化する次世代人工知能に関する技術開発事業/説明できるAIの基盤技術開発/進化的機械知能に基づくXAIの基盤技術と産業応用基盤の開発」委託研究、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】504182255
【氏名又は名称】国立大学法人横浜国立大学
(74)【代理人】
【識別番号】110001634
【氏名又は名称】弁理士法人志賀国際特許事務所
(72)【発明者】
【氏名】長尾 智晴
(72)【発明者】
【氏名】葛谷 直規
(57)【要約】
【課題】二値データを用いるノードを備える学習モデルが、ノードの層数を増やす必要なしに、比較的多様な出力値をとり得るようにする。
【解決手段】学習モデル装置が、二値ベクトルの入力を受け、前記二値ベクトルの次元数よりも1次元多い次元数の実数空間における超曲面に含まれる点のうち、前記二値ベクトルを前記実数空間の部分空間における座標値として扱った場合のその座標値の各要素を含む座標値を有する点の前記座標値の要素のうち、前記二値ベクトルによる座標値の要素以外の要素に基づいて、二値化された出力値を決定するノードを備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
二値ベクトルの入力を受け、前記二値ベクトルの次元数よりも1次元多い次元数の実数空間における超曲面に含まれる点のうち、前記二値ベクトルを前記実数空間の部分空間における座標値として扱った場合のその座標値の各要素を含む座標値を有する点の前記座標値の要素のうち、前記二値ベクトルによる座標値の要素以外の要素に基づいて、二値化された出力値を決定するノード
を備える学習モデル装置。
【請求項2】
前記超曲面は、前記二値ベクトルがとり得る値の各々を、前記実数空間の部分空間における座標値として扱った場合のその座標値と、学習パラメータ値との組み合わせによる、前記実数空間における座標値の点を制御点とするB-Spline超曲面である、
請求項1に記載の学習モデル装置。
【請求項3】
前記ノードは、
前記超曲面に含まれる点のうち、前記二値ベクトルを前記実数空間の部分空間における座標値として扱った場合のその座標値の各要素を含む座標値を有する点の前記座標値の要素のうち、前記二値ベクトルによる座標値の要素以外の要素の値を取得する超曲面処理部と、
前記学習モデル装置における順伝播のときは、前記超曲面処理部が取得した値をステップ関数で二値化し、前記学習モデル装置における逆伝播のときは、前記ステップ関数を微分可能な関数で近似する閾値演算部と、
を備える、請求項1または請求項2に記載の学習モデル装置。
【請求項4】
学習モデルシステムと、学習制御部と、設定部とを備え、
前記学習モデルシステムは、
二値ベクトルの入力を受け、前記二値ベクトルの次元数よりも1次元多い次元数の実数空間における超曲面に含まれる点のうち、前記二値ベクトルを前記実数空間の部分空間における座標値として扱った場合のその座標値の各要素を含む座標値を有する点の前記座標値の要素のうち、前記二値ベクトルによる座標値の要素以外の要素に基づいて、二値化された出力値を決定するノード
を備え、
前記学習制御部は、前記学習モデルシステムの学習を制御し、
前記設定部は、学習後の前記学習モデルシステムのノードにおける入力値と出力値との関係を示すルックアップテーブルを生成し、生成したルックアップテーブルを演算装置のテンプレートに設定する、
演算装置生産システム。
【請求項5】
前記演算装置は、Field Programmable Gate Arrayを用いて構成される、
請求項4に記載の演算装置生産システム。
【請求項6】
コンピュータが、
二値ベクトルの入力を受け、前記二値ベクトルの次元数よりも1次元多い次元数の実数空間における超曲面に含まれる点のうち、前記二値ベクトルを前記実数空間の部分空間における座標値として扱った場合のその座標値の各要素を含む座標値を有する点の前記座標値の要素のうち、前記二値ベクトルによる座標値の要素以外の要素に基づいて、二値化された出力値を決定する
ことを含む演算方法。
【請求項7】
二値ベクトルの入力を受け、前記二値ベクトルの次元数よりも1次元多い次元数の実数空間における超曲面に含まれる点のうち、前記二値ベクトルを前記実数空間の部分空間における座標値として扱った場合のその座標値の各要素を含む座標値を有する点の前記座標値の要素のうち、前記二値ベクトルによる座標値の要素以外の要素に基づいて、出力値を決定するノードを備える学習モデルシステムの学習を行い、
学習後の前記学習モデルシステムのノードにおける入力と出力との関係を示すルックアップテーブルを生成し、
生成したルックアップテーブルを演算装置のテンプレートに設定する
ことを含む演算装置生産方法。
【請求項8】
コンピュータに、
二値ベクトルの入力を受け、前記二値ベクトルの次元数よりも1次元多い次元数の実数空間における超曲面に含まれる点のうち、前記二値ベクトルを前記実数空間の部分空間における座標値として扱った場合のその座標値の各要素を含む座標値を有する点の前記座標値の要素のうち、前記二値ベクトルによる座標値の要素以外の要素に基づいて、二値化された出力値を決定すること
を実行させるためのプログラム。
【請求項9】
コンピュータに、
二値ベクトルの入力を受け、前記二値ベクトルの次元数よりも1次元多い次元数の実数空間における超曲面に含まれる点のうち、前記二値ベクトルを前記実数空間の部分空間における座標値として扱った場合のその座標値の各要素を含む座標値を有する点の前記座標値の要素のうち、前記二値ベクトルによる座標値の要素以外の要素に基づいて、出力値を決定するノードを備える学習モデルシステムの学習を行うことと、
学習後の前記学習モデルシステムのノードにおける入力と出力との関係を示すルックアップテーブルを生成することと、
生成したルックアップテーブルを演算装置のテンプレートに設定することと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、学習モデル装置、演算装置生産システム、演算方法、演算装置生産方法およびプログラムに関する。
【背景技術】
【0002】
複数の二値データの入力を受け、それら複数の二値データの合計と閾値とを比較して二値データの出力値を算出するノードを用いるバイナリニューラルネットワークが提案されている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
1層のバイナリニューラルネットワークでは、排他的論理和を表現できないなど、入力値に対してとりうる出力値が限定される。バイナリニューラルネットワークの層数を増やせば、より多様な出力値をとり得るが、ネットワーク構造がより複雑になる。また、ニューラルネットワークの層数が増えると、学習精度の低下、および、学習速度の低下が生じる可能性がある。
二値データを用いるノードを備える学習モデルが、ノードの層数を増やす必要なしに、比較的多様な出力値をとり得ることが好ましい。
【0005】
本発明の目的の一例は、二値データを用いるノードを備える学習モデルが、ノードの層数を増やす必要なしに、比較的多様な出力値をとり得るようにすることができる、学習モデル装置、演算装置生産システム、演算方法、演算装置生産方法およびプログラムを提供することである。
【課題を解決するための手段】
【0006】
本発明の第1の態様によれば、学習モデル装置は、二値ベクトルの入力を受け、前記二値ベクトルの次元数よりも1次元多い次元数の実数空間における超曲面に含まれる点のうち、前記二値ベクトルを前記実数空間の部分空間における座標値として扱った場合のその座標値の各要素を含む座標値を有する点の前記座標値の要素のうち、前記二値ベクトルによる座標値の要素以外の要素に基づいて、二値化された出力値を決定するノードを備える。
【0007】
本発明の第2の態様によれば、演算装置生産システムは、学習モデルシステムと、学習制御部と、設定部とを備え、前記学習モデルシステムは、二値ベクトルの入力を受け、前記二値ベクトルの次元数よりも1次元多い次元数の実数空間における超曲面に含まれる点のうち、前記二値ベクトルを前記実数空間の部分空間における座標値として扱った場合のその座標値の各要素を含む座標値を有する点の前記座標値の要素のうち、前記二値ベクトルによる座標値の要素以外の要素に基づいて、出力値を決定するノードを備え、前記学習制御部は、前記学習モデルシステムの学習を制御し、前記設定部は、学習後の前記学習モデルシステムのノードにおける入力と出力との関係を示すルックアップテーブルを生成し、生成したルックアップテーブルを演算装置のテンプレートに設定する。
【0008】
本発明の第3の態様によれば、演算方法は、コンピュータが、二値ベクトルの入力を受け、前記二値ベクトルの次元数よりも1次元多い次元数の実数空間における超曲面に含まれる点のうち、前記二値ベクトルを前記実数空間の部分空間における座標値として扱った場合のその座標値の各要素を含む座標値を有する点の前記座標値の要素のうち、前記二値ベクトルによる座標値の要素以外の要素に基づいて、二値化された出力値を決定することを含む。
【0009】
本発明の第4の態様によれば、演算装置生産方法は、二値ベクトルの入力を受け、前記二値ベクトルの次元数よりも1次元多い次元数の実数空間における超曲面に含まれる点のうち、前記二値ベクトルを前記実数空間の部分空間における座標値として扱った場合のその座標値の各要素を含む座標値を有する点の前記座標値の要素のうち、前記二値ベクトルによる座標値の要素以外の要素に基づいて、出力値を決定するノードを備える学習モデルシステムの学習を行い、学習後の前記学習モデルシステムのノードにおける入力と出力との関係を示すルックアップテーブルを生成し、生成したルックアップテーブルを演算装置のテンプレートに設定することを含む。
【0010】
本発明の第5の態様によれば、プログラムは、コンピュータに、二値ベクトルの入力を受け、前記二値ベクトルの次元数よりも1次元多い次元数の実数空間における超曲面に含まれる点のうち、前記二値ベクトルを前記実数空間の部分空間における座標値として扱った場合のその座標値の各要素を含む座標値を有する点の前記座標値の要素のうち、前記二値ベクトルによる座標値の要素以外の要素に基づいて、二値化された出力値を決定することを実行させるためのプログラムである。
【0011】
本発明の第6の態様によれば、プログラムは、コンピュータに、二値ベクトルの入力を受け、前記二値ベクトルの次元数よりも1次元多い次元数の実数空間における超曲面に含まれる点のうち、前記二値ベクトルを前記実数空間の部分空間における座標値として扱った場合のその座標値の各要素を含む座標値を有する点の前記座標値の要素のうち、前記二値ベクトルによる座標値の要素以外の要素に基づいて、出力値を決定するノードを備える学習モデルシステムの学習を行うことと、学習後の前記学習モデルシステムのノードにおける入力と出力との関係を示すルックアップテーブルを生成することと、
生成したルックアップテーブルを演算装置のテンプレートに設定することと、を実行させるためのプログラムである。
【発明の効果】
【0012】
上記した学習モデル装置、演算装置生産システム、演算方法、演算装置生産方法およびプログラムによれば、二値データを用いるノードを備える学習モデルが、ノードの層数を増やす必要なしに、比較的多様な出力値をとり得るようにすることができる。
【図面の簡単な説明】
【0013】
【
図1】実施形態に係る演算装置生産システムの構成の例を示す図である。
【
図2】実施形態に係るテーブル型ノードにおけるデータの入出力の例を示す図である。
【
図3】実施形態に係る超曲面型ノードの構成の例を示す図である。
【
図4】実施形態に係る、B-Spline曲面を用いた超曲面処理部の動作確認に用いた二値演算の第1の例を示す図である。
【
図5】動作確認で得られたB-Spline曲面の第1の例を示す図である。
【
図6】実施形態に係る、B-Spline曲面を用いた超曲面処理部の動作確認に用いた二値演算の第2の例を示す図である。
【
図7】動作確認で得られたB-Spline曲面の第2の例を示す図である。
【
図8】実施形態に係る、B-Spline曲面を用いた超曲面処理部の動作確認に用いた二値演算の第3の例を示す図である。
【
図9】動作確認で得られたB-Spline曲面の第3の例を示す図である。
【
図10】実施形態に係る、B-Spline曲面を用いた超曲面処理部111の動作確認に用いた二値演算の第4の例を示す図である。
【
図11】動作確認で得られたB-Spline曲面の第4の例を示す図である。
【
図12】実施形態に係る演算装置生産システム1が演算装置を生成する処理の手順の例を示すフローチャートである。
【
図13】実施形態に係るテーブル型ノードが二値ベクトルを出力する場合の、データの入出力の例を示す図である。
【
図14】実施形態に係る超曲面型ノードが二値ベクトルを出力する場合の、データの入出力の例を示す図である。
【
図15】実施形態に係る1つの学習モデル装置が1つの超曲面型ノードを備える場合の、学習モデル装置における超曲面型ノードの構成の例を示す図である。
【
図16】実施形態に係る1つの学習モデル装置が複数の超曲面型ノードを備える場合の、学習モデル装置における超曲面型ノードの構成の第1の例を示す図である。
【
図17】実施形態に係る1つの学習モデル装置が複数の超曲面型ノードを備える場合の、学習モデル装置における超曲面型ノードの構成の第2の例を示す図である。
【
図18】実施形態に係る実験に用いた畳み込みニューラルネットワークの構成を示す図である。
【
図19】実験結果として得られた認識率を示す図である。
【
図21】実施形態に係る複数のテーブル型ノードに共用でルックアップテーブルが設けられる場合の、演算装置の構成の例を示す図である。
【
図22】少なくとも1つの実施形態に係るコンピュータの構成の例を示す概略ブロック図である。
【発明を実施するための形態】
【0014】
以下、本発明の実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、実施形態に係る演算装置生産システムの構成の例を示す図である。
図1に示す構成で、演算装置生産システム1は、学習モデル装置100と、学習制御部300と、設定部400とを備える。学習モデル装置100は、超曲面型ノード110を備える。
また、
図1には、演算装置200が示されている。演算装置200は、テーブル型ノード210を備える。演算装置200が、演算装置生産システム1の一部として構成されていてもよいし、演算装置生産システム1の外部の装置として構成されていてもよい。
【0015】
演算装置生産システム1は、二値データを用いるノードを備える学習モデルの学習を行って、学習モデルのノード毎に入力値と出力値との関係を示すルックアップテーブルを取得する。演算装置生産システム1は、取得したルックアップテーブルを演算装置200のテンプレートのテーブル型ノード210に設定することで、演算装置200を生産する。ここでいう演算装置200のテンプレートは、ルックアップテーブルが設定されておらず、それ以外の点では演算装置200と同様のものである。
演算装置生産システム1では、学習モデル装置100が学習モデルの機能を有し、超曲面型ノード110が、二値データを用いるノードに該当する。
【0016】
ここでいう学習モデルは、パラメータ値を調整可能なパラメータを有し、入力データ値に対して入力データ値およびパラメータ値に応じた出力データ値を出力するものである。学習モデルのパラメータ値を調整することを、学習モデルの学習と称する。学習モデル装置100の学習モデルの学習を、学習モデル装置100の学習とも称する。
二値データの演算を二値データ演算とも称する。ここでいう演算は、ルックアップテーブルを参照して出力値を決定することであってもよい。
【0017】
演算装置200は、テーブル型ノード210を用いて二値データ演算を行う。演算装置200が備えるテーブル型ノード210の個数は特定の個数に限定されず、1つ以上のいろいろな個数とすることができる。特に、演算装置200が、学習モデル装置100が備える超曲面型ノード110の個数と同じ個数のテーブル型ノード210を備え、学習モデル装置100で超曲面型ノード110が接続されるネットワーク構造と同じネットワーク構造で、テーブル型ノード210が接続されていてもよい。これにより、演算装置生産システム1が学習モデル装置100の学習にて超曲面型ノード110毎に取得するルックアップテーブルを、そのままテーブル型ノード210に設定することができる。
【0018】
二値データを扱ういろいろな演算に演算装置200を用いることができる。例えば、ビット演算、論理演算、または、二値画像処理に演算装置200を用いることができるが、演算装置200の用途はこれらに限定されない。
テーブル型ノード210は、ルックアップテーブルを参照し、入力される二値ベクトルとルックアップテーブルで対応付けられている出力値を出力する。
【0019】
図2は、テーブル型ノード210におけるデータの入出力の例を示す図である。
図2は、2入力かつ1出力の場合のテーブル型ノード210の例を示している。ただし、テーブル型ノード210における入力データの個数は特定の個数に限定されず、1つ以上のいろいろな個数とすることができる。また、後述するように、テーブル型ノード210における出力データの個数が複数であってもよい。
【0020】
図2の例では、テーブル型ノード210は、2つの二値データx
0およびx
1の入力を受け、ルックアップテーブルで入力データ値に対応付けられている二値データ値を出力する。2つの二値データx
0およびx
1は、二値ベクトルの例に該当する。また、
図2の例では、ルックアップテーブルで入力データ値に対応付けられる出力データ値は、入力データ値と同じ行に示されている出力データ値である。
【0021】
テーブル型ノード210では、ルックアップテーブルにおいて入力データ値の組み合わせ毎に任意の出力データ値を設定することができる。テーブル型ノード210は、この点で、高い表現力を有する。例えば、バイナリニューラルネットワークの1つのノードでは排他的論理和の演算を行うことができないのに対し、1つのテーブル型ノード210で排他的論理和の演算を行うことができる。
また、テーブル型ノード210では、ルックアップテーブルを参照して入力データ値に対する出力データ値を決定する点で、複雑な演算に相当する入出力の場合でも、比較的短時間で、かつ、比較的小さい消費電力で、データを出力することができる。
【0022】
一方、テーブル型ノード210が用いるルックアップテーブルは離散的な入力値と離散的な出力値との対応関係を表すものであり、このルックアップテーブルを関数として微分することはできない。このため、例えば誤差逆伝播法など関数の微分を用いる学習手法を演算装置200に適用することはできない。
そこで、演算装置生産システム1は、学習モデル装置100の学習を行い、学習結果を演算装置200に反映させる。
【0023】
学習モデル装置100は、超曲面型ノード110を用いて二値データ演算を行う。学習モデル装置100が、1つの超曲面型ノード110を備えていてもよいし、複数の超曲面型ノード110を備えていてもよい。学習モデル装置100が複数の超曲面型ノード110を備える場合、超曲面型ノード110間でデータの受け渡しが行われるようになっていてもよい。この場合、学習モデル装置100におけるデータの入出力の関係は、ニューラルネットワークの場合と同様、有向グラフの形式で表すことができる。
学習モデル装置100は、学習モデルシステムの例に該当する。
【0024】
図3は、超曲面型ノード110の構成の例を示す図である。
図3に示す構成で、超曲面型ノード110は、超曲面処理部111と、閾値演算部112とを備える。
また、
図3は、2入力かつ1出力の場合の超曲面型ノード110の例を示している。ただし、超曲面型ノード110における入力データの個数および出力データの個数は、特定の個数に限定されない。例えば、学習モデル装置100の超曲面型ノード110と、演算装置200のテーブル型ノード210とが一対一に対応付けられ、対応付けられる超曲面型ノード110とテーブル型ノード210とが、同じ個数の入力データの入力を受けて、同じ個数の出力データを出力するようにしてもよい。
【0025】
超曲面型ノード110は、学習モデル装置100が行う二値データ演算、またはその一部に該当する二値データ演算を行う。具体的には、超曲面型ノード110は、二値ベクトルによる入力ベクトルの入力を受ける。すなわち、超曲面型ノード110は、1つ以上の二値データ値の入力を受ける。そして、超曲面型ノード110は、超曲面処理部111および閾値演算部112にて、入力ベクトルに対する二値データ演算を行って出力値を決定し出力する。
【0026】
超曲面処理部111は、入力ベクトルの次元数よりも1次元多い次元数の実数空間における超曲面に含まれる点のうち、入力ベクトルを上記の実数空間の部分空間における座標値として扱った場合のその座標値の各要素を含む座標値を有する点の座標値を検出する。そして、超曲面処理部111は、検出した座標値の要素のうち、入力ベクトルによる座標値の要素以外の要素の値を出力する。
【0027】
図3の例の場合、2つの入力データ値x
0およびx
1が入力ベクトルの例に該当する。この場合、入力ベクトルの次元数は2次元である。
図3に示されるx
0x
1z座標空間が、入力ベクトルの次元数よりも1次元多い3次元の実数空間の例に該当する。ここでのzは、超曲面処理部111の出力値であり、閾値演算部112への入力データ値となる。
【0028】
このように、入力ベクトルの次元数よりも1次元多い次元数の実数空間として、入力ベクトルの各要素値を実数値として扱う場合の要素毎の座標軸である入力座標軸と、超曲面処理部111の出力値の座標軸である出力座標軸との組み合わせによる座標空間を用いることができる。
入力ベクトルの次元数よりも1次元多い次元数の実数空間を、入出力実数空間とも称する。
【0029】
また、
図3の例で、x
0x
1z座標空間に示される曲面が、入力ベクトルの次元数よりも1次元多い3次元の実数空間(入出力実数空間)における超曲面の例に該当する。
また、x
0座標およびx
1座標で構成されるx
0x
1座標平面が、x
0x
1z座標空間の部分空間の例に該当する。二値データ値である入力データ値x
0およびx
1を、いずれも実数データ値として扱うことで、入力ベクトルをx
0x
1座標平面における座標値として扱うことができる。例えば、x
0=1、x
1=0の場合、入力ベクトル(1,0)をx
0x
1座標平面における座標値(1,0)として扱うことができる。
【0030】
このように、x
0x
1座標平面における座標値(1,0)が定まると、x
0x
1z座標空間に示される曲面に含まれる点のうち、この座標値の各要素x
0=1およびx
1=0を含む座標値を有する点が一意に特定される。
図3に示される曲面では、x
0=1、x
1=0の場合のz座標値はz=0であり、座標値(1,0,0)が特定される。
【0031】
そのために、入出力実数空間における超曲面として、その超曲面に含まれる点のうち、入力ベクトルを入出力実数空間の部分空間における座標値として扱った場合のその座標値の各要素を含む座標値を有する点が一意に定まるような超曲面を用いる。
そのような超曲面の例として、入力ベクトルがとり得る値の各々を、実数空間の部分空間における座標値として扱った場合のその座標値と、入力ベクトルがとり得る値毎に設定される出力座標値との組み合わせによる座標値の点を制御点とするB-Spline超曲面が挙げられる。
【0032】
図3の例では、入力データ値x
0、x
1の何れも0または1の値をとり得る。したがって、入力ベクトルがとり得る値は、(x
0,x
1)=(0,0)、(0,1)、(1,0)および(1,1)である。
図3の例では、入力ベクトルがとり得る値と出力値との組み合わせによる座標値(x
0,x
1,z)=(0,0,0)、(0,1,0)、(1,0,0)および(1,1,1)の各点が制御点に設定されており、白丸(○)で示されている。
図3の例では、これらの制御点の値に基づくB-Spline曲面が、x
0x
1z座標空間における曲面として用いられている。
【0033】
各制御点の座標値の要素のうち出力座標値を、学習パラメータ値として扱うことができる。学習パラメータ値としての出力座標値を変更することで、入力ベクトルがとり得る値に対する超曲面処理部111の出力値が変更される。
また、B-Spline超曲面は、入力ベクトルを引数として出力座標値を出力する微分可能な関数で表すことができる。これにより、制御点の座標値に含まれる学習パラメータ値の学習に、誤差逆伝播法など関数の微分を用いる学習手法を適用し得る。
ただし、入出力実数空間における超曲面は、B-Spline超曲面に限定されず、学習パラメータ値に応じて超曲面処理部111における入力ベクトルと出力データ値との関係が変化し、かつ、微分可能な関数で示されるいろいろな超曲面とすることができる。
【0034】
超曲面処理部111は、超曲面に含まれる点の座標値として特定した座標値の要素のうち、入力ベクトルによる要素以外の要素の値を出力する。上記の例の場合、超曲面処理部111は、特定した座標値(x0,x1,z)=(1,0,0)のうち、z座標値「0」を出力する。
なお、超曲面処理部111の出力値は実数値であり、二値データにおける二値に相当する値以外の値をとり得る。
【0035】
閾値演算部112は、学習モデル装置100における順伝播のときは、超曲面処理部111の出力値をステップ関数で二値化する。例えば、閾値演算部112が、超曲面処理部111の出力値と閾値とを比較して、比較結果に応じて二値データにおける二値の何れかを出力するようにしてもよい。この場合の閾値は固定値となっていてもよいし、学習パラメータ値として可変になっていてもよい。
学習モデル装置100における順伝播のときの例として、学習モデル装置100による二値データ演算実行時が挙げられる。
【0036】
一方、閾値演算部112は、学習モデル装置100における逆伝播のときは、ステップ関数を微分可能な関数で近似する。ステップ関数を近似する微分可能な関数の例としてシグモイド関数、および、双曲線正接関数(Hyperbolic Tangent Function)を挙げることができるが、閾値演算部112が用いる関数はこれらに限定されない。
【0037】
学習モデル装置100における逆伝播のときの例として、誤差逆伝播法における学習パラメータの補正量算出時が挙げられる。閾値演算部112が、ステップ関数を微分可能な関数で近似することで、誤差逆伝播法など関数の微分を用いる学習手法を学習モデル装置100の学習に適用することができる。
【0038】
学習時の少なくとも一部の期間の間、閾値演算部112が、データの二値化を行わず、超曲面型ノード110が実数値のデータを出力するようにしてもよい。例えば、学習開始時から所定の条件が成立するまでの学習の初期の段階では、閾値演算部112がデータの二値化を行わず、所定の条件が成立した初期段階終了後は、閾値演算部112がデータの二値化を行うようにしてもよい。
これにより、学習が比較的速く進むことが期待され、また、学習結果が局所解に陥る可能性が比較的低いことが期待される。
【0039】
図3の例の場合、入出力実数空間における超曲面は、式(1)のように表される。
【0040】
【0041】
ここでは、x0およびx1は、それぞれ、二値データ値による超曲面型ノード110への入力値を実数値として扱う場合の、その実数値をとる実数変数とする。zは、超曲面処理部111の出力値をとる実数変数とする。超曲面処理部111の出力値は、x0x1z座標空間における曲面に含まれる点のうち、超曲面型ノード110への入力値をx0座標値およびx1座標値として扱った場合の、それらの座標値を含むx0x1z座標値を有する点の、そのx0x1z座標値のうちのz座標値である。
【0042】
w0、w1、w2、w3は、それぞれ学習パラメータとして用いられる実数変数である。上記のように、これら学習パラメータの値が、B-Spline曲面の制御点におけるz座標値として用いられていてもよい。
fは、微分可能な関数である。
超曲面型ノード110と閾値演算部112とを組み合わせた超曲面型ノード110全体による演算は、式(2)のように表される。
【0043】
【0044】
ここでは、yは、二値データ値による超曲面型ノード110の出力値を実数値として扱う場合の、その実数値をとる実数変数とする。
学習モデル装置100における逆伝播のときは、fRは、微分可能な関数である。
超曲面型ノード110の出力値の正解値をy*で表し、超曲面型ノード110の出力値yとその正解値y*との誤差Eを式(3)のように定義する。
【0045】
【0046】
学習係数をαとして、学習パラメータw0の補正量Δw0は、Δw0=-α(∂E/∂w0)と算出することができる。式(3)および式(2)を用いてEの記載を書き換えると、学習パラメータw0の補正量Δw0は、式(4)を用いて算出することができる。
【0047】
【0048】
学習パラメータw1、w2、w3についても同様である。
このように、超曲面型ノード110によれば、関数の微分を用いる学習手法を用いることができる。
【0049】
学習制御部300は、学習モデル装置100の学習を制御する。例えば、学習制御部300は、データベースなど他の装置から学習データ(Training Data)を取得し、得られた学習データを用いて学習モデル装置100に学習を行わせる。学習によって、学習モデル装置100の学習パラメータ値が調整される。
【0050】
設定部400は、学習後の学習モデル装置100の超曲面型ノード110における入力値と出力値との関係を示すルックアップテーブルを生成し、生成したルックアップテーブルを演算装置200のテンプレートのテーブル型ノード210に設定する。
例えば、設定部400は、
図3の例における学習モデル装置100について、入力ベクトルがとり得る全ての値(x
0,x
1)=(0,0)、(0,1)、(1,0)、(1,1)のそれぞれについて出力値yを観測し、
図2の例におけるルックアップテーブルを生成する。そして、設定部400は、生成したルックアップテーブルを、
図2の例のように演算装置200のテンプレートのテーブル型ノード210に設定する。
【0051】
学習制御部300と、設定部400と、学習モデル装置100とが、別々の装置として構成されていてもよい。この場合、これら各装置がパソコン(Personal Computer)などのコンピュータを用いて構成されていてもよい。あるいは、学習制御部300、設定部400、または、学習モデル装置100の何れか1つ以上が、ASIC(Application Specific Integrated Circuit)またはFPGA(Field Programmable Gate Array)を用いて構成されるなど、その装置専用のハードウェアを用いて構成されていてもよい。
【0052】
あるいは、学習制御部300、設定部400、および、学習モデル装置100のうち何れか2つ以上が、一体的に構成されていてもよい。例えば、学習制御部300と、設定部400と、学習モデル装置100とが同一の装置に組み込まれていてもよい。この場合も、装置がコンピュータを用いて構成されていてもよいし、その装置専用のハードウェアを用いて構成されていてもよい。
【0053】
演算装置200についても、コンピュータを用いて構成されていてもよいし、演算装置200専用のハードウェアを用いて構成されていてもよい。後述するように、演算装置200は、特にFPGAへの実装に適した構成となっていると考えられ、演算装置200が、FPGAを用いて構成されていてもよい。
【0054】
また、装置の運用時に追加学習を行う場合など、学習モデル装置100を運用に用いるようにしてもよい。この場合、演算装置生産システム1が、設定部400と演算装置200とを備えていなくてもよい。
【0055】
B-Spline曲面を用いて超曲面処理部111による二値演算の学習について動作確認をおこなったところ、良好な結果が得られた。
図4は、B-Spline曲面を用いた超曲面処理部111の動作確認に用いた二値演算の第1の例を示す図である。
図4に示すような論理演算の「AND」(論理積)の入出力データを用いて動作確認を行い、
図5に示すような曲面を得られた。
【0056】
図5は、動作確認で得られたB-Spline曲面の第1の例を示す図である。
図5に示す曲面では、x
0=0、x
1=0のときのzの値は、およそ0になっている。また、x
0=0、x
1=1のときのzの値は、およそ0になっている。また、x
0=1、x
1=0のときのzの値は、およそ0になっている。また、x
0=1、x
1=1のときのzの値は、およそ1になっている。
このように、
図4に示す論理回路の「AND」の入出力と同様の入出力を示す曲面を得られた。
【0057】
図6は、B-Spline曲面を用いた超曲面処理部111の動作確認に用いた二値演算の第2の例を示す図である。
図6に示すような論理演算の「OR」(論理和)の入出力データを用いて動作確認を行い、
図7に示すような曲面を得られた。
【0058】
図7は、動作確認で得られたB-Spline曲面の第2の例を示す図である。
図7に示す曲面では、x
0=0、x
1=0のときのzの値は、およそ0になっている。また、x
0=0、x
1=1のときのzの値は、およそ1になっている。また、x
0=1、x
1=0のときのzの値は、およそ1になっている。また、x
0=1、x
1=1のときのzの値は、およそ1になっている。
このように、
図6に示す論理回路の「OR」の入出力と同様の入出力を示す曲面を得られた。
【0059】
図8は、B-Spline曲面を用いた超曲面処理部111の動作確認に用いた二値演算の第3の例を示す図である。
図8に示すような論理演算の「EXOR」(排他的論理和)の入出力データを用いて動作確認を行い、
図9に示すような曲面を得られた。
【0060】
図9は、動作確認で得られたB-Spline曲面の第3の例を示す図である。
図9に示す曲面では、x
0=0、x
1=0のときのzの値は、およそ0になっている。また、x
0=0、x
1=1のときのzの値は、およそ1になっている。また、x
0=1、x
1=0のときのzの値は、およそ1になっている。また、x
0=1、x
1=1のときのzの値は、およそ0になっている。
このように、
図8に示す論理回路の「EXOR」の入出力と同様の入出力を示す曲面を得られた。
【0061】
図10は、B-Spline曲面を用いた超曲面処理部111の動作確認に用いた二値演算の第4の例を示す図である。
図10に示すような論理演算の「NOT x
0」(入力信号x
0の否定)の入出力データを用いて動作確認を行い、
図11に示すような曲面を得られた。
【0062】
図11は、動作確認で得られたB-Spline曲面の第4の例を示す図である。
図11に示す曲面では、x
0=0、x
1=0のときのzの値は、およそ1になっている。また、x
0=0、x
1=1のときのzの値は、およそ1になっている。また、x
0=1、x
1=0のときのzの値は、およそ0になっている。また、x
0=1、x
1=1のときのzの値は、およそ0になっている。
このように、
図10に示す論理回路の「NOT x
0」の入出力と同様の入出力を示す曲面を得られた。
【0063】
図12は、演算装置生産システム1が演算装置200を生成する処理の手順の例を示すフローチャートである。
図12の処理で、学習モデル装置100は、学習制御部300の制御に従って学習を行い、学習パラメータ値を調整する(ステップS11)。学習モデル装置100は、学習制御部300の制御に従って、超曲面型ノード110を含む学習モデル装置100の学習を行う。特に、複数の超曲面型ノード110がネットワークを構成している場合、ニューラルネットワークの学習の場合ように、ネットワーク全体の学習を行う。
上述したように、学習パラメータが、B-Spline超曲面の制御点の座標の要素となっていてもよい。
【0064】
次に、設定部400は、学習完了後の超曲面型ノード110における入力値と出力値との関係を示すルックアップテーブルを生成し、生成したルックアップテーブルを、演算装置200のテンプレートのテーブル型ノード210に設定する(ステップS12)。
学習モデル装置100が複数の超曲面型ノード110を備える場合、超曲面型ノード110とテーブル型ノード210とが一対一に対応付けられるように、演算装置200を構成しておく。具体的には、演算装置200が備えるテーブル型ノード210の個数を、学習モデル装置100が備える超曲面型ノード110の個数と同数にし、テーブル型ノード210が、超曲面型ノード110が構成するネットワークと同じ構造のネットワークを構成するようにしておく。設定部400は、超曲面型ノード110毎に、その超曲面型ノード110における入力値と出力値との関係を示すルックアップテーブルを生成し、その超曲面型ノード110と一対一に対応付けられるテーブル型ノード210に、生成したルックアップテーブルを設定する。
ステップS12の後、演算装置生産システム1は、
図12の処理を終了する。
【0065】
超曲面型ノード110およびテーブル型ノード210が、それぞれ二値ベクトルを出力するようにしてもよい。すなわち、超曲面型ノード110およびテーブル型ノード210が、それぞれ複数の二値データを出力するようにしてもよい。
【0066】
図13は、テーブル型ノード210が二値ベクトルを出力する場合の、データの入出力の例を示す図である。
図13の例で、テーブル型ノード210bは、N次元(Nは、正の整数)の二値ベクトル(x
0,x
1,・・・,x
N-1)の入力を受け、M次元(Mは、正の整数)の二値ベクトル(y
0,y
1,・・・,y
M-1)を出力する。テーブル型ノード210bは、テーブル型ノード210の例に該当する。
【0067】
この場合、テーブル型ノード210bは、入力ベクトルである二値ベクトル(x0,x1,・・・,xN-1)がとり得る値毎に、出力ベクトルである二値ベクトル(y0,y1,・・・,yM-1)の値を示すルックアップテーブルを備える。入力ベクトルである二値ベクトル(x0,x1,・・・,xN-1)がとり得る値は、2N通りであり、ルックアップテーブルは、2N行分のデータを示す。
【0068】
図14は、超曲面型ノード110が二値ベクトルを出力する場合の、データの入出力の例を示す図である。
図14の例で、超曲面型ノード110bは、テーブル型ノード210bの場合と同じ二値ベクトル(x
0,x
1,・・・,x
N-1)の入力を受け、テーブル型ノード210bの場合と同じ二値ベクトル(y
0,y
1,・・・,y
M-1)を出力する。
この場合の超曲面は、例えば、式(5)のように表される。
【0069】
【0070】
Lは、超曲面としてB-Spline超曲面を用いる場合の学習パラメータの個数を表す正の整数である。入力ベクトルがとり得る値毎にB-Spline超曲面の制御点が設けられ、1つの制御点につき1つの学習パラメータが設けられる。このため、Lの値は式(6)のように表される。
【0071】
【0072】
この場合も、微分可能な関数fを得ることができ、関数の微分を用いる学習手法を適用し得る。例えば、式(5)の関数fが、N個の入力変数x0、x1、・・・、xN-1、および、1つの出力変数yi(ここでは、iは0≦i≦M-1の整数)の各変数の座標軸を持つN+1次元座標空間におけるM個の超曲面で表されていてもよい。
【0073】
あるいは、テーブル型ノード210が出力する二値データの個数分だけ、学習モデル装置100に1出力の超曲面型ノード110が設けられていてもよい。
図13に例示されるN入力M出力のテーブル型ノード210bに対応付けて、学習モデル装置100に、N入力1出力の超曲面型ノード110がM個設けられていてもよい。学習完了後に設定部400が、これらM個の超曲面型ノード110における入力値と出力値との関係を、
図13に例示されるようなN入力M出力のルックアップテーブルに纏め、得られたルックアップテーブルをテーブル型ノード210bに設定するようにしてもよい。
【0074】
学習モデル装置100における超曲面型ノード110の構成について、幾つかのバリエーションが考えられる。
図15は、1つの学習モデル装置100が1つの超曲面型ノード110を備える場合の、学習モデル装置100における超曲面型ノード110の構成の例を示す図である。
図15に示す構成で、学習モデル装置100cは、1つの超曲面型ノード110cを備える。
学習モデル装置100cは、学習モデル装置100の例に該当する。超曲面型ノード110cは、超曲面型ノード110の例に該当する。
【0075】
学習モデル装置100cは、4つの二値データx0、x1、x2およびx3の入力を受けて、3つの二値データy0、y1およびy2を出力する。これに応じて、超曲面型ノード110cは、4つの二値データx0、x1、x2およびx3の入力を受けて、3つの二値データy0、y1およびy2を出力する。
【0076】
このように、学習モデル装置100が1つの超曲面型ノード110を備えるようにしてもよい。そして、超曲面型ノード110が、学習モデル装置100への入力データの入力を受けて、学習モデル装置100の出力データを出力するようにしてもよい。
この学習モデル装置100に対応する演算装置200も、この学習モデル装置100と同様の構成とすることができる。具体的には、演算装置200が、1つのテーブル型ノード210を備えるようにしてもよい。そして、テーブル型ノード210が、演算装置200への入力データの入力を受けて、演算装置200の出力データを出力するようにしてもよい。
【0077】
あるいは、上述したように、学習モデル装置100が出力データの個数の超曲面型ノード110を備えるようにしてもよい。そして、学習完了後に、設定部400が、複数の超曲面型ノード110における入力値と出力値との関係を、1つのルックアップテーブルに纏め、得られたルックアップテーブルを1つのテーブル型ノード210に設定するようにしてもよい。
【0078】
例えば、
図15の例で、学習モデル装置100が、1つの超曲面型ノード110cに変えて、3つの超曲面型ノード110を備えるようにしてもよい。この場合、3つの超曲面型ノード110のそれぞれに、4つの二値データx
0、x
1、x
2およびx
3を入力する。出力データについては、超曲面型ノード110毎に異なる二値データを1つずつ出力するようにする。具体的には、1つ目の超曲面型ノード110が二値データy
0を出力し、2つ目の超曲面型ノード110が二値データy
1を出力し、3つ目の超曲面型ノード110が二値データy
3を出力するようにする。
学習完了後に、設定部400が、3つの超曲面型ノード110における入力値と出力値との関係を、1つのルックアップテーブルに纏め、得られたルックアップテーブルを1つのテーブル型ノード210に設定するようにしてもよい。
【0079】
図16は、1つの学習モデル装置100が複数の超曲面型ノード110を備える場合の、学習モデル装置100における超曲面型ノード110の構成の第1の例を示す図である。
図16に示す構成で、学習モデル装置100dは、超曲面型ノード110d-1、超曲面型ノード110d-2、超曲面型ノード110d-3、および、超曲面型ノード110d-4を備える。
学習モデル装置100dは、学習モデル装置100の例に該当する。超曲面型ノード110d-1、超曲面型ノード110d-2、超曲面型ノード110d-3、および、超曲面型ノード110d-4は、それぞれ、超曲面型ノード110の例に該当する。
【0080】
図16は、超曲面型ノード110が構成するネットワークの構造が固定の場合の例を示している。例えば、学習モデル装置100の設計者など人が、ネットワークの構造を予め決定し、学習モデル装置100に実装しておく。
このように、1つの学習モデル装置100が複数の超曲面型ノード110を備え、これら複数の超曲面型ノード110がネットワークを構成していてもよい。この場合のネットワークの構造は、ニューラルネットワークの場合と同様、いろいろな構造とすることができる。
【0081】
この学習モデル装置100に対応する演算装置200も、この学習モデル装置100と同様の構成とすることができる。具体的には、演算装置200が、学習モデル装置100が備える超曲面型ノード110の個数と同じ個数のテーブル型ノード210を備えるようにする。そして、テーブル型ノード210が、超曲面型ノード110が構成するネットワークと同じ構造のネットワークを構成するようにする。
【0082】
図17は、1つの学習モデル装置100が複数の超曲面型ノード110を備える場合の、学習モデル装置100における超曲面型ノード110の構成の第2の例を示す図である。
図17に示す構成で、学習モデル装置100eは、超曲面型ノード110e-1から超曲面型ノード110e-12を備える。
学習モデル装置100eは、学習モデル装置100の例に該当する。超曲面型ノード110e-1から超曲面型ノード110e-12の各々は、超曲面型ノード110の例に該当する。
【0083】
図17は、超曲面型ノード110が構成するネットワークの構造が学習時に可変である場合の例を示している。この場合、ネットワークの構造を機械学習で決定するようにしてもよい。ネットワークの構造の学習手法について、例えば、遺伝的プログラミングの手法を用いるようにしてもよい。
【0084】
さらに例えば、学習制御部300が、遺伝的プログラミングの一種であるCartesian genetic programming (CGP)の手法を用いてネットワーク構造を探索する場合について考える。この場合、学習制御部300は、超曲面型ノード110が構成するネットワークの構造を、あるネットワーク構造に仮設定する。仮設定されるネットワーク構造は、ネットワーク構造の候補といえる。
【0085】
そして、学習制御部300は、仮設定したネットワーク構造の評価値を計算する。具体的には、学習制御部300は、仮設定による超曲面型ノード110のネットワークの学習を行い、学習結果の評価スコア(例えば、認識率)を算出して、仮設定したネットワーク構造の評価値とする。
【0086】
学習制御部300は、仮設定するネットワーク構造を変化させ、そのネットワーク構造の評価値を算出することを、ネットワーク構造の学習の終了条件として予め定められている条件が成立するまで繰り返す。
ネットワーク構造を変化させる際、学習制御部300は、ネットワーク構造を変化させる度合いを、評価値に基づいて決定することができる。例えば、評価値が所定の評価閾値以上によい評価を示す場合、学習制御部300が、ネットワーク構造における1つのエッジ(Edge)のみ変化させるなど、ネットワーク構造の変化の度合いを比較的小さくするようにしてもよい。一方、例えば、評価値が所定の評価閾値未満の低い評価を示す場合、学習制御部300が、ネットワーク構造における10個のエッジを変化させるなど、ネットワーク構造の変化の度合いを比較的大きくするようにしてもよい。
ただし、超曲面型ノード110が構成するネットワークの構造の学習手法は、特定の方法に限定されない。
【0087】
畳み込みニューラルネットワークにB-Spline超曲面を用いた学習の手法を適用して文字認識の実験を行ったところ、良好な結果が得られた。
図18は、実験に用いた畳み込みニューラルネットワークの構成を示す図である。
図18に示すように、実験では、第1畳み込み層と、プーリング層と、第2畳み込み層とを備え、ソフトマックス関数を用いてクラスを選択する畳み込みニューラルネットワークを用いた。
【0088】
学習データとして、MNIST(Modified National Institute of Standards and Technology)で示される手書きの数字の画像を、8ピクセル×8ピクセルに縮小し二値化した画像のデータセットを用いた。
第1畳み込み層では、8ピクセル×8ピクセルの入力画像データに対し、3ピクセル×3ピクセルの部分画像毎に畳み込み演算を行い、パディングは無し(Zero Padding)として、6ピクセル×6ピクセルの画像データを生成する。
第1畳み込み層は、1つの画像データの入力を受けて10個の画像データを出力する。これら10個の画像データは、「0」から「9」の10個のクラスそれぞれについての特徴量として扱われる。
このように、第1畳み込み層は、3ピクセル×3ピクセルの画像パッチを用いた畳み込みによる9次元のデータの入力を受けて、10次元のデータ(10チャンネルのデータ)を出力する。
【0089】
なお、実験では、従来側の畳み込みニューラルネットワークを用いる場合と、B-Spline超曲面を用いて、かつ、ノードの出力データを二値化せずに実数データとする場合と、B-Spline超曲面を用いて、かつ、ノードの出力データを二値化する場合とを比較した。
従来側の畳み込みニューラルネットワークでは、活性化関数としてReLU(Rectified Linear Unit、正規化線形関数)を用いて、ノードの出力データは実数データとした。
【0090】
一方、B-Spline超曲面を用いる場合は、B-Spline超曲面(B-Spline関数)が、活性化関数の意味合いを含むといえる。一般的なニューラルネットワークではノード毎に、線形処理と活性化関数による処理とが行われるのに対し、超曲面型ノード110によれば、これら2つの処理の組み合わせに相当する処理を、B-Spline超曲面を用いた処理で行うことができる。
【0091】
出力データを二値化する場合については、超曲面型ノード110における閾値演算部112の場合と同様、B-Spline超曲面を用いて得られる値を二値化した。
なお、B-Spline超曲面を用いて、かつ、ノードの出力データを二値化する場合の畳み込みニューラルネットワークで、二値化されたデータを実数データの形式で出力している。このデータを1ビットデータで出力するようにしても、同等の認識率を得られると考えられる。
【0092】
プーリング層では、最大プーリング(Max Pooling)にて、6ピクセル×6ピクセルの画像データを3ピクセル×3ピクセルの画像データに縮小する。
プーリング層は、10個の画像データの入力を受けて10個の画像データを出力する。
【0093】
第2畳み込み層では、3ピクセル×3ピクセルの画像データに対して、3ピクセル×3ピクセル単位でDepthwise畳み込みを行い、パディングは無しとして、1ピクセル×1ピクセルの画像データを出力する。
第2畳み込み層での、従来側の畳み込みニューラルネットワークに用いる活性化関数、および、B-Spline超曲面を用いるノードにおける次元数は、第1畳み込み層の場合と同様とした。
【0094】
第2畳み込み層は、10個の画像データの入力を受けて10個の画像データを出力する。したがって、第2畳み込み層は、「0」から「9」の10個のクラスそれぞれについて、スカラのスコアを出力する。
ソフトマックス関数が、「0」から「9」の10個のクラスのうちスコアが最大のクラスを選択することで、クラス推定が行われる。
【0095】
図19は、実験結果として得られた認識率を示す図である。
図19に示す実験結果で、B-Spline超曲面を用いて、かつ、ノードの出力データを二値化せずに実数データとする場合、および、B-Spline超曲面を用いて、かつ、ノードの出力データを二値化する場合の何れも、従来側の畳み込みニューラルネットワークを用いる場合よりも高い認識率が得られた。
【0096】
設定部400が、演算装置200をFPGAに実装するようにしてもよい。
図20は、FPGAの構成の例を示す図である。
図20に示す構成で、FPGAは、コンフィギャラブルロジックブロック(Configurable Logic Block;CLB)と、スイッチングブロック(Switching Block)とを備えるコンフィギャラブルロジックブロックは、ベーシックロジックエレメント(Basic Logic Element)を備える。ベーシックロジックエレメントは、LUT(Lookup Table)と、フリップフロップ(Flip Flop;FF)と、マルチプレクサ(Multiplexer;MUX)とを備える。
【0097】
ベーシックロジックエレメントでは、ルックアップテーブルが、入力データ(I/P's)の入力を受けて入力データの値に応じた値のデータをフリップフロップおよびマルチプレクサに出力する。
フリップフロップは、クロック信号(CLK)が入力されるタイミングで、ルックアップテーブルからのデータ値を記憶する。リセット信号(RST)が入力された場合、フリップフロップは、記憶しているデータをリセットする。フリップフロップは、記憶しているデータをマルチプレクサに出力する。
【0098】
マルチプレクサは、ルックアップテーブルからのデータ、および、フリップフロップからのデータの入力を受けて、1つの出力データ(O/P)を出力する。例えば、マルチプレクサは、制御信号の入力を受けて、ルックアップテーブルからのデータ、または、フリップフロップからのデータの何れか一方を出力する。
スイッチングブロックは、コンフィギャラブルロジックブロック間のデータ線の接続の有無(On/Off)を切り替える。
【0099】
演算装置200をFPGAに実装する場合、設定部400が、超曲面型ノード110における入力値と出力値との関係に基づいて生成したルックアップテーブルを、ベーシックロジックエレメントのルックアップテーブルに設定するようにしてもよい。この場合、マルチプレクサがルックアップテーブルからのデータを出力するようにすることで、ベーシックロジックエレメントに、超曲面型ノード110が行う演算と同様の演算を行わせることができる。
【0100】
図17の例のように、学習モデル装置100が、超曲面型ノード110が構成するネットワークの構造を学習によって決定する場合、設定部400が、スイッチングブロックの設定を調整することで、超曲面型ノード110が構成するネットワークと同様の構造のネットワークをFPGAに実装するようにしてもよい。
【0101】
複数のテーブル型ノード210に共用でルックアップテーブルが設けられていてもよい。
図21は、複数のテーブル型ノード210に共用でルックアップテーブルが設けられる場合の、演算装置200の構成の例を示す図である。
図21に示す構成で、演算装置200fは、テーブル型ノード210f-1からテーブル型ノード210f-4と、テーブル記憶部220f-1およびテーブル記憶部220f-2とを備える。
【0102】
テーブル型ノード210f-1からテーブル型ノード210f-4を総称してテーブル型ノード210fとも表記する。テーブル記憶部220f-1およびテーブル記憶部220f-2を総称してテーブル記憶部220fとも表記する。
演算装置200fは、演算装置200の例に該当する。テーブル型ノード210fは、テーブル型ノード210の変形例に該当する。テーブル型ノード210fとテーブル記憶部220fとの組み合わせは、テーブル型ノード210の例に該当する。
テーブル記憶部220fは、ルックアップテーブルを記憶する。
【0103】
テーブル型ノード210fの各々は、テーブル型ノード210f自らはルックアップテーブルを備えず、テーブル記憶部220が記憶するルックアップテーブルを参照する。それ以外の点では、テーブル型ノード210fはテーブル型ノード210と同様である。
テーブル記憶部220f-1が記憶するルックアップテーブルは、テーブル型ノード210f-1とテーブル型ノード210f-2とが共用で参照するルックアップテーブルとなっている。テーブル記憶部220f-2が記憶するルックアップテーブルは、テーブル型ノード210f-3とテーブル型ノード210f-4とが共用で参照するルックアップテーブルとなっている。
【0104】
学習モデル装置100の学習が完了し、設定部400が、超曲面型ノード110毎にルックアップテーブルを生成した際に、「似ているルックアップテーブル」を1つのルックアップテーブルに纏め、纏められた1つのルックアップテーブルをテーブル記憶部220fに記憶させるようにしてもよい。そして、纏められる前のルックアップテーブルを参照することになっていた超曲面型ノード110が、纏められたルックアップテーブルを共用で参照するように、設定部400が、各超曲面型ノード110のルックアップテーブルの参照先を設定するようにしてもよい。
【0105】
「似ているルックアップテーブル」の判定条件として、例えば、ルックアップテーブルで「共通する行」のうち所定の閾値の割合以上(例えば、90%以上)の行で出力値が同じである、といった条件を用いるようにしてもよい。
テーブル型ノード210への入力データと、ルックアップテーブルに示される入力データとの対応関係をテーブル型ノード210毎に設定可能な場合、「共通する行」の設定方法が複数通りあり、この点でルックアップテーブルを共用化できる可能性が高くなる。
【0106】
図21の例で、テーブル型ノード210f-1への入力データは(x
1,x
2)であり、テーブル型ノード210f-2への入力データは(x
0,x
1)である。また、テーブル記憶部220f-1が記憶するルックアップテーブルにおける入力データが(I
0,I
1)であるものとする。また、テーブル型ノード210f-1が、x
1をI
0に対応付け、x
2をI
1に対応付けてルックアップテーブルを参照するように、ルックアップテーブルにおける出力値が設定されるものとする。
【0107】
テーブル型ノード210f-2が、x0をI0に対応付け、x1をI1に対応付けるようにしてもよいし、あるいは、x1をI0に対応付け、x0をI1に対応付けるようにしてもよい。これら2通りの対応付けのうち少なくとも何れか一方の対応付けで判定条件が満たされれば、テーブル型ノード210f-1が参照するルックアップテーブルと、テーブル型ノード210f-2が参照するルックアップテーブルとを共用化することができる。
【0108】
テーブル型ノード210fへの入力データの個数が、ルックアップテーブルに示される入力データの個数よりも少ない場合、「共通する行」の設定方法の場合の数がさらに増え、ルックアップテーブルを共用化できる可能性がさらに高くなる。
例えば、テーブル型ノード210f-1の出力データをv1と表記すると、テーブル型ノード210f-3の入力データは、(x0,v1)の2つである。また、テーブル型ノード210f-4の入力データは、(y0,x2,x3)の3つである。
なお、ここでは、「入力データの個数」は、入力ベクトルの個数ではなく、個々の二値データの個数(したがって、入力ベクトルの要素数)を指すものとする。
【0109】
また、テーブル記憶部220f-2が記憶するルックアップテーブルにおける入力データが(I2,I3,I4)の3つであるものとする。また、テーブル型ノード210f-4が、y0をI2に対応付け、x2をI3に対応付け、x3をI4に対応付けてルックアップテーブルを参照するように、ルックアップテーブルにおける出力値が設定されるものとする。
【0110】
テーブル型ノード210f-3が入力データ(x0,v1)をルックアップテーブルにおける入力データ(I2,I3,I4)に対応付ける方法は、(x0,v1)=(I2,I3)、(I2,I4)、(I3,I2)、(I3,I4)、(I4,I2)、(I4,I3)の6通りある。これら6通りの対応付けのうち少なくとも何れか1通りの対応付けで判定条件が満たされれば、テーブル型ノード210f-3が参照するルックアップテーブルと、テーブル型ノード210f-4が参照するルックアップテーブルとを共用化することができる。
【0111】
また、複数のテーブル型ノード210fが参照するルックアップテーブルを共用化する場合、共用化されるルックアップテーブルに、
図13の例のように出力値の列を複数設け、テーブル型ノード210f毎の出力値を記載するようにしてもよい。
例えば、3つの1出力のテーブル型ノード210fを共用化する場合、ルックアップテーブルに出力値の列を3列設け、各テーブル型ノード210fの出力値を記載するようにしてもよい。
この場合、テーブル型ノード210fがルックアップテーブルを参照する際の検索キーとして用いられる入力データの記載を共用化することができ、この点で、ルックアップテーブルの記憶に必要なメモリ容量を削減することができる。
【0112】
以上のように、超曲面型ノード110は、二値ベクトルの入力を受け、入力された二値ベクトルの次元数よりも1次元多い次元数の実数空間である入出力実数空間における超曲面に含まれる点のうち、入力された二値ベクトルを入出力実数空間の部分空間における座標値として扱った場合のその座標値の各要素を含む座標値を有する点の座標値の要素のうち、入力された二値ベクトルによる座標値の要素以外の要素に基づいて、二値化された出力値を決定する。
【0113】
超曲面型ノード110によれば、超曲面で入力値と出力値との関係を表すことで、真理値表と同等の表現力を得られる。学習モデル装置100によれば、この点で、二値データを用いる超曲面型ノード110を備える学習モデルが、超曲面型ノード110の層数を増やす必要なしに、比較的多様な出力値をとり得るようにすることができる。
【0114】
また、超曲面型ノード110に設けられる超曲面は、超曲面型ノード110に入力される二値ベクトルがとり得る値の各々を、入出力実数空間の部分空間における座標値として扱った場合のその座標値と、学習パラメータ値との組み合わせによる、入出力実数空間における座標値の点を制御点とするB-Spline超曲面である。
【0115】
超曲面型ノード110によれば、このようにB-Spline超曲面を用いることで微分可能な関数を得られ、誤差逆伝播法など関数の微分を用いる学習手法を適用することができる。
また、超曲面型ノード110への入力データ値をB-Spline超曲面の制御点として用いることで、制御点の出力座標値が入力データ値に対する出力データ値を示すようなる。超曲面型ノード110によれば、この点で、入力データ値と出力データ値との関係を比較的容易に把握することができる。
【0116】
また、超曲面処理部111は、超曲面に含まれる点のうち、超曲面型ノード110に入力される二値ベクトルを入出力実数空間の部分空間における座標値として扱った場合のその座標値の各要素を含む座標値を有する点の前記座標値の要素のうち、超曲面型ノード110に入力される二値ベクトルによる座標値の要素以外の要素の値を取得する。
閾値演算部112は、学習モデル装置100における順伝播のときは、超曲面処理部111が取得した値をステップ関数で二値化し、超曲面処理部111における逆伝播のときは、ステップ関数を微分可能な関数で近似する。
【0117】
このように、閾値演算部112が、閾値関数を切り替えることで、順伝播のときは超曲面型ノード110が二値データを出力するようにし、かつ、誤差逆伝播法など関数の微分を用いる学習手法を適用することができる。
【0118】
また、学習モデル装置100は、二値ベクトルの入力を受け、入力された二値ベクトルの次元数よりも1次元多い次元数の実数空間である入出力実数空間における超曲面に含まれる点のうち、入力された二値ベクトルを入出力実数空間の部分空間における座標値として扱った場合のその座標値の各要素を含む座標値を有する点の座標値の要素のうち、入力された二値ベクトルによる座標値の要素以外の要素に基づいて、二値化された出力値を決定する。
学習制御部300は、学習モデル装置100の学習を制御する。
設定部400は、学習後の学習モデル装置100のノードにおける入力値と出力値との関係を示すルックアップテーブルを生成し、生成したルックアップテーブルを演算装置200のテンプレートに設定する。
【0119】
演算装置生産システム1によれば、超曲面で超曲面処理部111における入力値と出力値との関係を表すことで、真理値表と同等の表現力を得られる。演算装置生産システム1によれば、この点で、二値データを用いる超曲面型ノード110を備える学習モデルが、超曲面型ノード110の層数を増やす必要なしに、比較的多様な出力値をとり得るようにすることができる。
また、演算装置生産システム1によれば、学習で得られたルックアップテーブルを演算装置200のテンプレートに設定して演算装置200を生産することで、演算装置200は、ルックアップテーブルを参照して二値演算を行うことができる。演算装置生産システム1によれば、テーブル型ノード210は、ルックアップテーブルを参照して入力データ値に対する出力データ値を決定する点で、複雑な演算に相当する入出力の場合でも、比較的短時間で、かつ、比較的小さい消費電力で、データを出力することができる。
【0120】
また、演算装置200は、Field Programmable Gate Arrayを用いて構成される。
演算装置生産システム1によれば、既存のFGPAを演算装置200のテンプレートとして用いることができ、演算装置200のテンプレートを別途生成する必要がない。このように、演算装置生産システム1によれば、演算装置200を生産するための負担が比較的小さい。
【0121】
図22は、少なくとも1つの実施形態に係るコンピュータの構成の例を示す概略ブロック図である。
図22に示す構成で、コンピュータ700は、CPU710と、主記憶装置720と、補助記憶装置730と、インタフェース740とを備える。
【0122】
上記の学習モデル装置100、演算装置200、演算装置200f、学習制御部300、および、設定部400のうち何れか1つ以上が、コンピュータ700に実装されてもよい。その場合、上述した各処理部の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。また、CPU710は、プログラムに従って、上述した各記憶部に対応する記憶領域を主記憶装置720に確保する。
【0123】
学習モデル装置100がコンピュータ700に実装される場合、超曲面型ノード110の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0124】
また、CPU710は、プログラムに従って、学習モデル装置100が処理を行うための記憶領域を主記憶装置720に確保する。学習モデル装置100と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。
学習モデル装置100とユーザとのインタラクションは、インタフェース740が入力デバイスおよび出力デバイスを有し、CPU710の制御に従って出力デバイスにて情報をユーザに提示し、入力デバイスにてユーザ操作を受け付けることで実行される。
【0125】
演算装置200がコンピュータ700に実装される場合、テーブル型ノード210の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0126】
また、CPU710は、プログラムに従って、演算装置200が処理を行うための記憶領域を主記憶装置720に確保する。演算装置200と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。
演算装置200とユーザとのインタラクションは、インタフェース740が入力デバイスおよび出力デバイスを有し、CPU710の制御に従って出力デバイスにて情報をユーザに提示し、入力デバイスにてユーザ操作を受け付けることで実行される。
【0127】
演算装置200fがコンピュータ700に実装される場合、テーブル型ノード210fの動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0128】
また、CPU710は、プログラムに従って、テーブル記憶部220fに対応する記憶領域を主記憶装置720に確保する。演算装置200fと他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。
演算装置200fとユーザとのインタラクションは、インタフェース740が入力デバイスおよび出力デバイスを有し、CPU710の制御に従って出力デバイスにて情報をユーザに提示し、入力デバイスにてユーザ操作を受け付けることで実行される。
【0129】
学習制御部300がコンピュータ700に実装される場合、学習制御部300の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0130】
また、CPU710は、プログラムに従って、学習制御部300が処理を行うための記憶領域を主記憶装置720に確保する。学習制御部300と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。
学習制御部300とユーザとのインタラクションは、インタフェース740が入力デバイスおよび出力デバイスを有し、CPU710の制御に従って出力デバイスにて情報をユーザに提示し、入力デバイスにてユーザ操作を受け付けることで実行される。
【0131】
設定部400がコンピュータ700に実装される場合、設定部400の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0132】
また、CPU710は、プログラムに従って、設定部400が処理を行うための記憶領域を主記憶装置720に確保する。設定部400と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。
設定部400とユーザとのインタラクションは、インタフェース740が入力デバイスおよび出力デバイスを有し、CPU710の制御に従って出力デバイスにて情報をユーザに提示し、入力デバイスにてユーザ操作を受け付けることで実行される。
【0133】
なお、学習モデル装置100、演算装置200、演算装置200f、学習制御部300、および、設定部400の全部または一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することで各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OS(Operating System)や周辺機器等のハードウェアを含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM(Read Only Memory)、CD-ROM(Compact Disc Read Only Memory)等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
【0134】
以上、本発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【0135】
1 演算装置生産システム
100 学習モデル装置
110 超曲面型ノード
111 超曲面処理部
112 閾値演算部
200、200f 演算装置
210、210f テーブル型ノード
220f テーブル記憶部
300 学習制御部
400 設定部
220 テーブル記憶部