図面 (/)

技術 機械学習システムおよびボルツマンマシンの計算方法

出願人 株式会社日立製作所
発明者 内垣内洋
出願日 2018年8月27日 (2年4ヶ月経過) 出願番号 2018-158443
公開日 2020年3月5日 (9ヶ月経過) 公開番号 2020-035000
状態 未査定
技術分野 知識ベースシステム 学習型計算機
主要キーワード モデルパラメタ 回路実装面 局所エネルギ イジングモデル 文脈毎 計算命令 更新バッファ スピン数
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2020年3月5日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (17)

課題

機械学習における学習及び推論処理省電力化回路規模削減を実現することである。

解決手段

学習器と、データ抽出部と、データ処理部から構成される機械学習システムである。学習器は、内部状態と内部パラメタから構成される。データ抽出部は、入力された入力データから、データ処理部で算出される評価値に影響を与えない部分を取り除くことで加工入力データを作成する。データ処理部は、加工入力データと学習器を基に評価値を算出する。入力データは離散的な値から構成され、内部状態は、入力データが変わることによって変化する。

概要

背景

近年、深層学習などに代表される機械学習アルゴリズム進展により、計算機による画像や音声などの認識精度が向上した。これにより、自動運転機械翻訳など、機械学習の応用例が急速に拡大している。

複雑な問題に機械学習を適用する際の課題の一つは、学習完了までに必要なモデルパラメタ更新回数が増大してしまうことである。モデルパラメタとは、例えばニューラルネットワークではニューロン間結合係数に相当する。更新回数が増大すると、比例して演算回数が増え、学習時間が増大する。そのため、最近、モデルパラメタの更新回数が少なくても学習可能なアルゴリズムの研究が盛んである。ボルツマンマシンを用いた機械学習もその一つである。ボルツマンマシンを用いると、ニューラルネットワークを利用した場合と比較して、学習に必要なモデルパラメタの更新回数を減らせる場合があることがわかっている。これにより、複雑な問題でも短時間で学習することが可能となる。

特許文献1には、量子効果を用いた強化学習システムに関する技術が開示されており、特許文献2には、フィードバックパラメタ共有を行うことで、必要メモリ容量を削減する技術が開示されている。

概要

機械学習における学習及び推論処理省電力化回路規模削減を実現することである。学習器と、データ抽出部と、データ処理部から構成される機械学習システムである。学習器は、内部状態と内部パラメタから構成される。データ抽出部は、入力された入力データから、データ処理部で算出される評価値に影響を与えない部分を取り除くことで加工入力データを作成する。データ処理部は、加工入力データと学習器を基に評価値を算出する。入力データは離散的な値から構成され、内部状態は、入力データが変わることによって変化する。

目的

これにより、スピンの向きを高速収束させることができるが、前述の課題である

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

学習器と、データ抽出部と、データ処理部から構成される機械学習システムであって、前記学習器は、内部状態と内部パラメタから構成され、前記データ抽出部は、入力された入力データから、前記データ処理部で算出される評価値に影響を与えない部分を取り除くことで加工入力データを作成し、前記データ処理部は、前記加工入力データと前記学習器を基に前記評価値を算出し、前記入力データは離散的な値から構成され、前記内部状態は、前記入力データが変わることによって変化することを特徴とする機械学習システム。

請求項2

前記学習器は、ボルツマンマシンから構成され、前記内部状態は2値の離散的な値から構成されることを特徴とする、請求項1に記載の機械学習システム。

請求項3

前記学習器は、ボルツマンマシンから構成され、前記入力データは、2値の離散的な値から構成され、前記データ抽出部は、前記2値のうち一方の値に基づいて前記加工入力データを作成する、請求項1に記載の機械学習システム。

請求項4

前記2値のうち他方の値は、前記内部パラメタとの積が0になる値である、請求項3に記載の機械学習システム。

請求項5

前記内部パラメタは、ボルツマンマシンの結合係数である、請求項4に記載の機械学習システム。

請求項6

前記入力データは、ボルツマンマシンの可視スピンである、請求項4に記載の機械学習システム。

請求項7

前記可視スピンは、第1の可視スピンと第2の可視スピンを含み、前記加工入力データは、前記第1の可視スピンに含まれる前記一方の値の数と位置を特定する情報を含む、請求項6に記載の機械学習システム。

請求項8

前記データ処理部が前記評価値を算出する際に、前記加工入力データと前記内部状態の一部のみと前記内部パラメタの一部のみを用いることを特徴とする、請求項1に記載の機械学習システム。

請求項9

内部パラメタ更新部をさらに備え、前記内部パラメタ更新部は、前記データ処理部によって算出された前記評価値を用いて、前記内部パラメタを更新することを特徴とする、請求項1記載の機械学習システム。

請求項10

ボルツマンマシンのエネルギー関数情報処理装置により計算する計算方法であって、2値をもつ可視スピンを、ボルツマンマシンの入力データとして準備する第1のステップ、前記2値のうち一方の値をもつ可視スピンの情報のみから、加工入力データを作成する第2のステップ、前記加工入力データとボルツマンマシンの結合係数に基づいて、前記エネルギー関数を計算する第3のステップ、を備えるボルツマンマシンの計算方法。

請求項11

前記2値は“1”と“0”であって、前記第2のステップでは“1”をもつ可視スピンの情報のみから、加工入力データを作成する、請求項10記載のボルツマンマシンの計算方法。

請求項12

前記第2のステップにおいて、前記加工入力データに、前記一方の値をもつ可視スピンの個数を示す情報を付加する、請求項10記載のボルツマンマシンの計算方法。

請求項13

前記第1のステップにおいて、前記可視スピンは第1の可視スピンと第2の可視スピンを含み、前記第2のステップにおいて、前記加工入力データに、前記第1の可視スピンの前記一方の値をもつ可視スピンの個数と位置を示す情報を付加する、請求項12記載のボルツマンマシンの計算方法。

請求項14

前記第3のステップで計算したエネルギー関数に基づいて前記結合係数を更新する、第4のステップを備える、請求項10記載のボルツマンマシンの計算方法。

請求項15

前記第2のステップにおいて、前記2値のうち一方の値をもつ可視スピンの情報のみから、加工入力データを作成する際に、前記2値のうち他方の値をもつ可視スピンは、前記第3のステップのエネルギー計算における積和演算計算結果に影響しない可視スピンである、請求項10記載のボルツマンマシンの計算方法。

技術分野

0001

本発明は機械学習における学習及び推論処理省電力化回路規模削減を実現する機械学習システムに関するものである。

背景技術

0002

近年、深層学習などに代表される機械学習アルゴリズム進展により、計算機による画像や音声などの認識精度が向上した。これにより、自動運転機械翻訳など、機械学習の応用例が急速に拡大している。

0003

複雑な問題に機械学習を適用する際の課題の一つは、学習完了までに必要なモデルパラメタ更新回数が増大してしまうことである。モデルパラメタとは、例えばニューラルネットワークではニューロン間結合係数に相当する。更新回数が増大すると、比例して演算回数が増え、学習時間が増大する。そのため、最近、モデルパラメタの更新回数が少なくても学習可能なアルゴリズムの研究が盛んである。ボルツマンマシンを用いた機械学習もその一つである。ボルツマンマシンを用いると、ニューラルネットワークを利用した場合と比較して、学習に必要なモデルパラメタの更新回数を減らせる場合があることがわかっている。これにより、複雑な問題でも短時間で学習することが可能となる。

0004

特許文献1には、量子効果を用いた強化学習システムに関する技術が開示されており、特許文献2には、フィードバックパラメタ共有を行うことで、必要メモリ容量を削減する技術が開示されている。

先行技術

0005

米国公開特許US 2017/0323195 A1
公表特許WO2016/194248

発明が解決しようとする課題

0006

上記のように、ボルツマンマシンを用いた機械学習によって、ニューラルネットワークを用いた機械学習と比較して、モデルパラメタの更新回数を減らすことができるが、モデル規模(パラメタの数や並列演算数)が大きくなるケースが多い。そのため、モデルパラメタの1回更新あたりの消費電力や、実装回路規模が増大してしまう。したがって、消費電力の増大や実装回路規模を削減する技術が求められている。

0007

特許文献1には、ボルツマンマシン(イジングモデル)のスピン(上向きもしくは下向きの2値)に対して、スピンの向きとは直交する横向きの磁場を加えて、スピンの向きを収束させるアルゴリズムや、それらを用いた強化学習システムに関する技術が記載されている。これにより、スピンの向きを高速に収束させることができるが、前述の課題である、モデルの規模の増大による消費電力や実装回路規模の増大は避けることができない。特に、学習対象となるデータのサイズが大きい問題やデータの複雑度が高い問題の場合、これらの増大によるデメリットは大きい。

0008

また、特許文献2には、ニューラルネットワークにおけるネットワークのフィードバックやパラメタの共有を行うことで、機械学習で必要となる計算量やメモリ容量を削減する技術が記載されている。ただし、ボルツマンマシンを学習器に利用した場合のモデル規模の増大を防ぐことはできず、消費電力や実装回路規模は増大する。

0009

本発明の目的は、機械学習における学習及び推論処理の省電力化と回路規模削減を実現することである。

課題を解決するための手段

0010

本発明の好ましい一側面は、学習器と、データ抽出部と、データ処理部から構成される機械学習システムである。学習器は、内部状態と内部パラメタから構成される。データ抽出部は、入力された入力データから、データ処理部で算出される評価値に影響を与えない部分を取り除くことで加工入力データを作成する。データ処理部は、加工入力データと学習器を基に評価値を算出する。入力データは離散的な値から構成され、内部状態は、入力データが変わることによって変化する。

0011

本発明の他の好ましい一側面は、ボルツマンマシンのエネルギー関数情報処理装置により計算する計算方法である。この方法では、2値をもつ可視スピンを、ボルツマンマシンの入力データとして準備する第1のステップ、2値のうち一方の値をもつ可視スピンの情報のみから、加工入力データを作成する第2のステップ、加工入力データとボルツマンマシンの結合係数に基づいて、エネルギー関数を計算する第3のステップ、を備える。

発明の効果

0012

機械学習における学習及び推論処理の省電力化と回路規模削減を実現することができる。

図面の簡単な説明

0013

機械学習システムの第一の実施例を示す構成図である。
ボルツマンマシンの構成の一例を示す説明図である。
ボルツマンマシンのスピン間の結合係数の一例を示す説明図である。
ボルツマンマシンのスピン間の結合係数のデータフォーマットの一例を示す説明図である。
ハイパパラメタの一例を示すテーブルである。
第一の実施例における、データ抽出部によるデータ加工処理の一例を示す説明図である。
本願適用による演算回路削減の効果を示す説明図である。
第一の実施例における、演算部の構成の一例を示す構成図である。
機械学習システムの第二の実施例を示す構成図である。
第二の実施例の機械学習システムの動作フローの一例を示すフローチャートである。
第二の実施例における、データ抽出部によるデータ加工処理の一例を示す説明図である。
機械学習システムの第三の実施例を示す構成図である。
第三の実施例の機械学習システムの動作フローの一例を示すフローチャートである。
第三の実施例における、データ抽出部によるデータ加工処理の一例を示す説明図である。
第三の実施例における、演算部の構成の一例を示す構成図である。
更新部の構成の一例を示す構成図である。

実施例

0014

実施の形態について、図面を用いて詳細に説明する。ただし、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。

0015

以下に説明する発明の構成において、同一部分又は同様な機能を有する部分には同一の符号を異なる図面間で共通して用い、重複する説明は省略することがある。

0016

同一あるいは同様な機能を有する要素が複数ある場合には、同一の符号に異なる添字を付して説明する場合がある。ただし、複数の要素を区別する必要がない場合には、添字を省略して説明する場合がある。

0017

本明細書等における「第1」、「第2」、「第3」などの表記は、構成要素を識別するために付するものであり、必ずしも、数、順序、もしくはその内容を限定するものではない。また、構成要素の識別のための番号は文脈毎に用いられ、一つの文脈で用いた番号が、他の文脈で必ずしも同一の構成を示すとは限らない。また、ある番号で識別された構成要素が、他の番号で識別された構成要素の機能を兼ねることを妨げるものではない。

0018

図面等において示す各構成の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面等に開示された位置、大きさ、形状、範囲などに限定されない。

0019

以下の実施例で説明されるもののうち単純な例は、データ抽出部とデータ処理部と学習器から構成される機械学習システムである。このシステムは、ソフトウェアあるいはハードウェアもしくはこれらの組み合わせから構成することができる。

0020

学習器(例えばボルツマンマシン)は、内部状態(例えば隠れスピン)と内部パラメタ(例えば結合係数)から構成される。データ抽出部は、機械学習システムに入力された入力データ(例えば可視スピン)から、データ処理部で算出される評価値(例えばエネルギー関数)に影響を与えない部分を取り除くことで加工入力データを作成する。評価値に影響を与えない部分とは、例えば内部パラメタとの積が0になる部分である。入力データが可視スピンであれば、可視スピンの値が0である部分は、内部パラメタの値に関わらず内部パラメタとの積が0になるため、評価値に影響を与えずに取り除くことができる。データ処理部は、加工入力データと学習器に基づいて評価値を算出する。入力データは離散的な値から構成され、内部状態は、入力データが変わることによって変化する。

0021

このような構成を用いることで、例えばボルツマンマシンでは可視スピンの0の値を持つノードに接続されるエッジは省略することができる。よって、機械学習における学習及び推論処理の省電力化と回路規模削減を実現でき、例えば、電力や回路規模の制限の厳しい条件での学習及び推論処理が可能となる。

0022

以下では、本発明にかかわる機械学習システムの幾つかの実施例を順に説明する。第一の実施例は、ある入力データに対応する計算値を出力する例であり、第二の実施例は、データの一部を入力した場合に、対応する複数の計算値を出力する例であり、第三の実施例は、入力データに基づいてモデルパラメタを更新する場合の例である。

0023

<A.機械学習システムの第一の実施例>
機械学習システムの第一の実施例を説明する。
図1に機械学習システムの構成を示す。機械学習システム100は、機械学習における処理を統括及び実行する機械学習フレームワーク(FW)110と、機械学習において定型化された処理を高速に実行する機械学習モジュール(ML m)120から構成される。機械学習フレームワーク110の例としては、TensorFlow(商標)、Keras、Caffe、Chainer(商標)、Theanoなどのソフトウェア・ライブラリ群でもよいし、独自の機械学習用ソフトウェアでもよいし、各社ITベンダーが提供している機械学習用プラットフォームなどでもよい。

0024

機械学習モジュール120は、機械学習フレームワーク110とデータをやり取りするデータインターフェース部(I/O)121と、機械学習フレームワーク110から送付されたデータを格納するバッファ(Buf)122と、バッファ内のデータを抽出及び加工するデータ抽出部(Ex)123と、データ抽出部123から送られたデータを基に計算処理を実行する演算部(Cal)124と、データを記憶するメモリ(Mem)125から構成される。

0025

メモリ125には、機械学習モジュール120から機械学習フレームワーク110に返答する結果(R)126と、ボルツマンマシンにおけるスピン間の結合係数(W)127と機械学習におけるハイパパラメタ(P)128が格納されている。機械学習モジュール120の全体がハードウェアとして実装されていても良いし、一部もしくは全体がソフトウェアとして実装されていてもよい。図1に記載された矢印は、データやコマンドの流れを表す。各矢印に対応するデータやコマンドの詳細は、後述する。

0026

図2に機械学習システムに用いるボルツマンマシンの例を示す。ボルツマンマシンは、可視スピン(Visible spins 1及びVisible spins 2)201-1,201-2と隠れスピン(Hidden spins)202から構成される。また、スピン203とスピン間の結合係数204が示されている。可視スピン(「可視変数」ともいう)は、観測データ点に対応している変数であり、隠れスピン(「隠れ変数」ともいう)は、観測データ点に直接対応していない変数である。

0027

可視スピン201が2つに分かれているのは、意味合いの異なる2種類のスピンを入力するためである。例えば、画像認識分類に代表されるような教師付き学習では、可視スピン201-1は学習対象の画像データとなり、可視スピン201-2は可視スピン201-1に入力された画像データの分類(なのかなのか)に関する情報となる。また、強化学習の場合、可視スピン201-1は環境からAgentに返される状態に対応し、可視スピン201-2はAgentから環境に返答する行動に対応する。

0028

隠れスピン202は、1つ以上の層(図中H[0]などのスピン1列分)から構成され、隠れスピンが1層の場合は制限ボルツマンマシン、2層以上の場合はディープボルツマンマシンと呼ばれる。図2中の例では、隣り合う層に属するスピン間は全対全で結合しているが、結合の仕方はこの例に限らず、部分的に接続されていてもよい。本実施例では隠れスピンとして2値をとるが、3値以上の値をとることも可能である。

0029

図3と図4で、機械学習モジュール120内のメモリ125に格納されるボルツマンマシンのスピン間の結合係数127のデータフォーマットの一例を説明する。

0030

図3は、ボルツマンマシンの層と結合係数の概念を示す概念図である。隠れスピンが2層の場合の例を示しており、可視スピンを含めて層を順にL[0]〜L[3]とする。隣り合う層に属するスピン間の結合係数を、層ごとにW[0]〜W[2]とする。

0031

図4は、スピン間の結合係数127のデータフォーマットの一例を表す。ここでは図3の結合係数W[0]を示している。この例では、図3で左側の層(L[0])のスピン数分の行数と、右側の層(L[1])のスピン数分の列数をもつテーブル形式(2次元配列形式)でメモリ125に格納されている。これはあくまで一例であり、メモリ容量の制限や、演算の順序、メモリアクセスの速度などを考慮して、最適なデータフォーマットが選択される。

0032

図5に、機械学習モジュール120内のメモリ125に格納されるハイパパラメタ128の一例を示す。ハイパパラメタは、後述するボルツマンマシンのエネルギー計算などに必要な初期温度128-1や、最終温度128-2や、隠れスピンのサンプリング数128-3などが含まれる。

0033

次に機械学習システムの動作の流れの一例を、順次実行される4つのStepで説明する。また、各Stepでやり取りされるデータなどが図1のどの矢印に対応するかも合わせて示す。

0034

まず、Step 1では、機械学習フレームワーク110から機械学習モジュール120へ、特定の計算命令コマンドと機械学習モジュール120が計算するための入力データが送られる(図1IN)。

0035

コマンドは大きく分類すると、(1)ある入力データに対応する計算値を出力するように指令するコマンド、(2)データの一部を入力した場合に、対応する複数の計算値を出力するように指令するコマンド、(3)入力データに基づいてモデルパラメタを更新するように指令するコマンドに分類される。第一の実施例では、(1)の場合を説明する。(2),(3)はそれぞれ第二、第三の実施例中で説明する。計算命令コマンドと入力データは、データインターフェース部121が受領し、バッファ122に格納される(図1A)。

0036

つづいてStep 2では、データ抽出部123がバッファ122に格納された計算命令コマンドと入力データを用いて(図1B)、加工データを作成する。加工データは演算部124に送付される(図1C)。

0037

次にStep 3では、演算部124はメモリ125からスピン間の結合係数127とハイパパラメタ128を読み出し(図1D及びE)、データ抽出部123から送付された加工データを基に、演算を実行する。演算内容は、入力データとして与えられた可視スピンに対応するボルツマンマシンの自由エネルギー内部エネルギー(エネルギー関数)の計算であり、求められたエネルギーが計算値として出力され、メモリ125内の結果126に保存される(図1F)。また、演算部124は上記演算の終了後、演算のエラー終了フラグもしくは正常終了フラグをデータインターフェース部121に送付する(図1G)。

0038

最後にStep 4では、データインターフェース部121が正常終了フラグを受領した場合、演算部124が計算したエネルギーの値をメモリ125内の結果126から取得し(図1H)、機械学習フレームワーク110へ送付する(図1OUT)。エラー終了フラグを受領した場合は、機械学習フレームワーク110へエラー内容などを送付する(図1OUT)。

0039

図6に、データ抽出部123が行うデータ加工処理の一例を示す。データ加工処理では、まずデータ抽出部123がバッファ122に格納された計算命令コマンドと入力データを取得する(図1B)。

0040

第一の実施例では、計算命令コマンドが、”ある入力データに対応する計算値を出力するように指令するコマンド”である場合を説明する。この場合、入力データには可視スピン全て(例えば図7の可視スピン701-1と可視スピン701-2)の向きが含まれている。ここでスピンの向きは”1”が上向き、”0”が下向きとする。入力データには、全可視スピンの向きが直接記載されているが、データ抽出部123は、入力データのうち、スピンが上向き、つまり”1”のデータをもつスピンの位置のみを抽出し、上向きスピン位置情報に変換する。

0041

図6に示すように、可視スピン701-1と可視スピン701-2のそれぞれに位置を表すアドレス割り当てられている。データ抽出部123は、出力データの先頭に可視スピン701-1の上向きスピンの個数である”2”を書く。その後ろに、可視スピン701-1の上向きスピンのアドレス”0”と”3”を記載し、最後に可視スピン701-2の上向きスピンのアドレス”0”を書いて出力データ”2030”とする。スピンの個数の情報は、計算の処理において、意味合いの異なる2種類のスピンである可視スピン701-1と可視スピン701-2を識別するために利用することができる。

0042

前述したように、可視スピン701-2は、教師付き学習であればデータの分類に関する情報として、強化学習であれば、行動を表す情報として用いられるため、いずれの場合も上向きスピンの数は1つである。そのため、可視スピン701-2の上向きスピンの個数に関する情報は記載しない。もちろん、実施例の適用範囲は上記例に限られないため、必要であれば、可視スピン701-2の上向きスピンの個数に関する情報も付記してよい。このようにして、データ抽出部123によって作成された出力データは、演算部124に送付される(図1C)。

0043

図7に、加工処理による、演算回路規模の削減の効果を示す。図6で説明したように、データ抽出部123によってデータ加工処理が施される前は、可視スピン全て(可視スピン701-1と可視スピン701-2)の向きが、スピン毎”0”もしくは”1”で表現されている。後述するエネルギー演算処理では、スピン間の結合係数とスピン値(”0”もしくは”1”)の積和演算が実行される。例えば、図7(a)の可視スピン701-1の層(L[0])と隠れスピン702の1層目(L[1])の間では、L[1]の各スピンに対する局所エネルギー(local energy)として、

0044

0045

というように、結合係数とスピン値の積和が実行される。このような局所エネルギーの計算が隠れスピン数分だけ(右方向と左方向)実行されるため、図7(a)に示した例では、4×5+5×5×2+3×5=85回の積演算が行われることになる。

0046

これらの演算は同時並列的に行われる必要が有るため、基本的には積演算の回数分の積演算回路を実装する必要がある。しかし、例えばL[0][j]=0となるj=1, 2などでは、積演算を行うまでもなく、積の結果は0であり、本質的に無駄な演算が含まれてしまう。

0047

一方、データ抽出部123によってデータ加工処理が施された後は、上向きの可視スピン(可視スピン701-1と可視スピン701-2)の位置だけが演算部124に伝達されるため、図7(b)に示すように、積演算の結果が0でない上向きスピンに関わる演算のみ実行することができる。これにより、以下に示す条件をみたす場合、実装する積演算回路の数を削減し、回路実装面積の低減及び演算に依る消費電力の削減を実現できる。条件は、
・上向き可視スピンの数の最大値が全可視スピンの数より小さい。
・上向き可視スピンの数の最大値が予めわかっている。
となる。

0048

実際に、ボルツマンマシンによる機械学習でポピュラーに用いられる自由エネルギーの計算では、上記条件が満たされるケースが多いことが知られている。また、隠れスピンは全てのスピンが演算中に”0”と”1”の両者を取る可能性があるため、隠れスピン部分に関しては、上記のような積演算回路数の削減は難しい。

0049

図7では、可視スピンの数が隠れスピンの数よりも少ないが、例えば画像データを学習に用いる場合、画像の各ピクセルは256階調であれば8bit値なので、単純には1ピクセルを8 つのスピンに変換する必要がある。その他連続値を持つデータを学習する場合も、スピンの数は元の連続値の数よりも増えてしまう。そのため、可視スピンの数は隠れスピン1層のスピン数よりも増えてしまうケースも多い。そのようなケースでは、図7(b)で示した実装回路数の削減による効果はより顕著となる。

0050

公知であるが、ボルツマンマシンでは、各スピンについて局所エネルギーを計算し、局所エネルギーに基づいて当該スピンの向きを決める処理を行なうことができる。このような計算により内部エネルギーが最小になるスピンの状態を求めることができる。また、局所解に陥ることを防ぐために、スピンのフリップ確率(スピンの向きが変わる確率)を調整して計算を繰り返す、アニーリングという処理を行なうことができる。

0051

図8で、演算部124で行われる演算処理の一例を説明する。図8は自由エネルギーを計算するための演算部124の内部を機能ブロック図で表現したものである。まず、演算部124は抽出部123から加工データ801を受領する。受領した加工データ801はレジスタ(Re)802に保存される。

0052

次に積和演算ユニット(Ac)803は、レジスタ802から読み出した加工データ(図8A)と、メモリ125から読み出したスピン間の結合係数127(図8B)と、必要に応じて隠れスピンの値(図8C)を用いて、図7を用いて説明した積和演算を実行する。積和演算ユニット803は、その結果を局所エネルギーユニット(LE)804に送付する(図8D)。

0053

局所エネルギーユニット804はその結果とメモリ125から読み出したハイパパラメタ128(図8E)を基に、スピンのフリップ確率を計算し、スピンフリップ制御ユニット(Sf)805に送付する(図8F)。スピンフリップ制御ユニット805は、スピンのフリップ確率を基に、各スピンをフリップするか否かを決めて、その結果を隠れスピン管理ユニット(HM)806に送付する(図8H)。

0054

各スピンをフリップするか否かの結果を受領した隠れスピン管理ユニット806は、フリップ対象の隠れスピンをフリップする。また、スピンフリップ制御ユニット805は、メモリ125から読み出したハイパパラメタ128(図8G)を基に、アニーリングが終了したか否かを判定し、終了していなければ、スピンフリップサイクルを1つ増やし、隠れスピン管理ユニット806に送付する。そののち、前述の積和演算ユニット803による処理から繰り返される。

0055

スピンフリップサイクルは、上記で述べた処理中のデータのやり取りを通して、積和演算ユニット803と局所エネルギーユニット804とスピンフリップ制御ユニット805の間で共有される。

0056

スピンフリップ制御ユニット805がアニーリング終了か否かを判定し、終了していた場合は、全サイクルが終了したかどうかを判定する。その結果全サイクルが終了していなければ、スピンフリップ制御ユニット805は、隠れスピンのスナップショットを取る命令を隠れスピン管理ユニット806に送付する。命令を受けた隠れスピン管理ユニット806は、現在の隠れスピンの値(各スピン”0”か”1”)を隠れスピンレジスタ(Re.h)807に保存し(図8I)、隠れスピンの値を初期化する。そののち、前述の積和演算ユニット803による処理から繰り返される。

0057

また、全サイクルが終了していると判定された場合、スピンフリップ制御ユニット805は、自由エネルギーの計算実行命令を隠れスピン管理ユニット806に送付する。命令を受けた隠れスピン管理ユニット806は、隠れスピンレジスタ807から、これまで保存した隠れスピンの値を取得し(図8J)、その平均値を計算する(この平均値は、各スピン0から1までの連続値となる)。

0058

次に隠れスピン管理ユニット806は、その平均値を隠れスピンの値として、積和演算ユニット803に送付する。積和演算ユニット803は、前述の処理と同様にして、レジスタ802から読み出した加工データ(図8A)と、メモリ125から読み出したスピン間の結合係数127(図8B)と、受領した隠れスピンの平均値(図8C)を用いて、積和演算を実行し、その結果を局所エネルギーユニット804に送付する(図8D)。

0059

局所エネルギーユニット804は、その局所エネルギーを足し合わせ(厳密には、更に隠れスピンの右方向と左方向のダブルカウント部分を差し引いて)、足し合わされた値と、ハイパパラメタ128に含まれる温度を、統合部(Syn)808に送付する(図8K)。

0060

また上記処理と並列して、統合部808は隠れスピンレジスタ807から、これまで保存した隠れスピンの値を取得し(図8 L)、エントロピーを計算する。そして、統合部808は、エントロピーと足し合わされた局所エネルギーと温度を用いて、自由エネルギーを計算する。次に、統合部808は、計算された自由エネルギーをメモリ125の結果126として保存し(図8結果#0)、演算のエラー終了フラグもしくは正常終了フラグをデータインターフェース部(I/O)に送付する(図8結果#1)。

0061

かくして、実施例1ではボルツマンマシンにより、ハイパパラメタや結合係数は変えず、与えられた可視スピンの値に対して自由エネルギーの計算を行なう。この処理では、例えばボルツマンマシンがある問題と解に対して設定されている場合、問題と解である可視スピン701-1と可視スピン701-2の入力に対して、解の確からしさ(あるいは設定の確からしさ)を自由エネルギーで評価することができる。実施例1では、そのための計算量を従来に比べ減少することができる。

0062

<B.機械学習システムの第二の実施例>
機械学習システムの第二の実施例を説明する。この実施例は、上記「(2)データの一部を入力した場合に、対応する複数の計算値を出力するように指令するコマンド」に対応するものである。例えば、可視スピンの一方のみ(例えば701-1)を入力し、可視スピンの他方(例えば701-2)の組み合わせを自動生成して、計算を行なう。

0063

図9に機械学習システム100bの構成を示す。機械学習システム100bの各機能ブロックの名称は第一の実施例と同じであるため、第一の実施例と異なる点を、図10動作フローチャートの一例と併せて説明する。なお、用いるボルツマンマシンの形状や、スピン間の結合係数(W)127のデータフォーマット、ハイパパラメタ(P)128は、第一の実施例と同様である。

0064

図10のStep 1では、機械学習フレームワーク110から機械学習モジュール120へ、特定の計算命令コマンドと機械学習モジュール120が計算するための入力データが送られる(図9IN)。ここでは、入力データは図11で示す可視スピン111-1を含むものとする。コマンドは”データの一部を入力した場合に、対応する複数の計算値を出力するように指令するコマンド“であり、のちほどデータ抽出部123が使用する可視スピン111-2の数(Nv2)を含む。計算命令コマンドと入力データは、データインターフェース部121が受領し、バッファ122に格納される(図9A)。

0065

つづいて、データ抽出部123は、バッファ122に格納された計算命令コマンドと入力データを読み出し(図9B)、繰り返しを示すカウンタを0にセットする(図10i=0)。

0066

次に、データ抽出部123は、カウンタの値を読み出し、値が可視スピン111-2の数(Nv2)と一致するか判定する(図10i=Nv2?)。一致しなかった場合、Step 2に進み(図10N)、一致した場合はStep 4に進む(図10Y)。

0067

まずStep 2を説明する。Step 2では、データ抽出部123は、計算命令コマンドと入力データを用いて、加工データの一部を作成し、演算部124に送付する(図9C)。加工データの一部を送付したのち、データ抽出部123は、カウンタの値を1つ増やす(図10i++)。加工データの一部のデータフォーマットは、第一の実施例の加工データと同様である。

0068

次にStep 3で、演算部124は、メモリ125からスピン間の結合係数127とハイパパラメタ128を読み出し(図9D及びE)、データ抽出部123から送付された加工データの一部を基に、演算を実行する。演算内容は、第一の実施例と同様に、加工データの一部として与えられた可視スピンに対応するボルツマンマシンの自由エネルギーや内部エネルギーの計算であり、求められたエネルギーが計算値として出力され、メモリ125内の結果126に保存される(図9F)。

0069

演算部124は上記演算の終了後、演算のエラー終了フラグもしくは正常終了フラグをデータ抽出部123に送付する(図9G)。そののち、データ抽出部123は、カウンタの値を読み出し、値が可視スピン111-2の数(Nv2)と一致するか判定する(図10i=Nv2?)。

0070

次にStep 4に進んだ場合を説明する。Step 4で、データ抽出部123は、全演算のエラー終了フラグもしくは正常終了フラグをデータインターフェース部121に送付する(図9H)。

0071

最後にStep 5では、データインターフェース部121が正常終了フラグを受領した場合、演算部124が計算したエネルギーの値(複数存在する)をメモリ125内の結果126から取得し(図9I)、機械学習フレームワーク110へ送付する(図9OUT)。エラー終了フラグを受領した場合は、機械学習フレームワーク110へエラー内容などを送付する(図9OUT)。

0072

図11に、データ抽出部123が行うデータ加工処理の一例を示す。データ加工処理では、まずデータ抽出部123がバッファ122に格納された計算命令コマンドと入力データを取得する。第二の実施例では、計算命令コマンドが、”データの一部を入力した場合に、対応する複数の計算値を出力するように指令するコマンド“である場合を説明する。

0073

この場合、入力データには可視スピンの一部(可視スピン111-1のみ)の向きが含まれている。ここでスピンの向きは”1”が上向き、”0”が下向きとする。入力データには、可視スピンの一部(可視スピン111-1のみ)の向きが直接記載されているが、データ抽出部123は、入力データのうち、スピンが上向き、つまり”1”のデータをもつスピンの位置を抽出し、上向きスピン位置情報に変換する。変換の仕方は第一の実施例の場合と同じである。

0074

また、その際、前段落で述べたカウンタの値に応じて、データの末尾数字を付加する。図11の例では、例えばカウンタの値が0の場合は、加工データの一部(出力#0)のように末尾に0が付加される。これは、第一の実施例で可視スピン(可視スピン201-2)が”100”であった場合に相当する。カウンタ(0からNv2-1)の値に応じてデータの末尾の数字を変更するのは、言い換えると、全ての可視スピン(可視スピン111-2)のパタンに対する加工データを作成していることと同義である。このようにして、カウンタの値1つに対して、対応する加工データの一部が1つずつ、データ抽出部123から演算部124に送付される。

0075

図11の例では、入力データの可視スピン111-1”0100100”に対して、カウンタが更新されるごとに出力#0,#1,#2が順次出力される。出力#0は、可視スピン111-1の”1”の数”2”、”1”のアドレスである”1”と”4”、そして、カウンダの値”0”を並べ”2140”となる。

0076

実施例2では、データ抽出部123からの出力#0,#1,#2のそれぞれに対して、Step 2の処理が実行されるが、その内容は実施例1と同様である。実施例1が可視スピン201-2を予め定めて入力するのに対して、実施例2では可視スピン111-2の可能性のある組み合わせを自動的に生成して入力する点が異なる。

0077

加工処理による演算回路規模の削減の効果は、第一の実施例で述べたものと同様のものが期待できる。また、演算部124で行われる演算処理に関しても、第一の実施例で述べたものと同様となる。

0078

<C.機械学習システムの第三の実施例>
機械学習システムの第三の実施例を説明する。この実施例は、上記「(3)入力データに基づいてモデルパラメタを更新するように指令するコマンド」に対応するものである。この実施例は結合係数を学習する際に用いることができ、実質的なモデルの学習を行なうことができる。

0079

図12に機械学習システム100cの構成を示す。機械学習システムの機能ブロックの構成は第一の実施例及び第二の実施例とほぼ同じだが、機械学習モジュール120の構成要素の一つとして、スピン間の結合係数127を更新する更新部(Upd)1201が新たに追加されている。なお、用いるボルツマンマシンの形状や、スピン間の結合係数127のデータフォーマットは、第一の実施例及び第二の実施例と同様である。また、第三の実施例では、機械学習モジュール120内の更新部1201でスピン間の結合係数127の更新を行うため、ハイパパラメタ128には、第一の実施例及び第二の実施例で述べた温度などに加えて、学習係数(Learning coefficient)や、更新のアルゴリズム(Stochastic Gradient Descent(SGD)、Adaptive Moment Estimation(ADAM)など)に関する情報や、強化学習であれば、割引率(discount rate)なども含まれる。これらの一般的な学習に関する概念は公知であるので、詳細説明は省略する。

0080

図13にまた、機械学習の一例として、強化学習における動作フローチャートの例を示す。図12に記した矢印は、データやコマンドのフローを表し、図13と合わせて説明する。

0081

図13のStep 1では、機械学習フレームワーク110から機械学習モジュール120へ、特定の計算命令コマンドと機械学習モジュール120が計算するための入力データが送られる(図12IN)。コマンドは”入力データに基づいてモデルパラメタを更新するように指令するコマンド“であり、のちほどデータ抽出部123が使用するミニバッチ数(Nminibatch)と、行動数(Naction)を含む。

0082

ミニバッチ数は可視スピン1で表される入力データの数、例えば画像の枚数に対応する。行動数は可視スピン2で表される入力データの数、例えば画像の分類数に対応する。図13学習処理の目的は、可視スピン1と可視スピン2の組み合わせが所望の関係にあるときに、エネルギーが最小になるような結合係数を探索することにある。

0083

計算命令コマンドと入力データは、データインターフェース部121が受領し、バッファ122に格納される(図12A)。つづいて、データ抽出部123は、バッファ122に格納された計算命令コマンドを読み出し(図12B)、ミニバッチ数カウンタ(i)と、行動数カウンタ(j)を共に0にセットする(図13i=0, j=0)。

0084

次に、データ抽出部123は、ミニバッチ数カウンタ(i)の値を読み出し、値がミニバッチ数(Nminibatch)と一致するか判定する(図13i=Nminibatch?)。一致しなかった場合、Step 2に進み(図13N1)、一致した場合はStep 7に進む(図13Y1)。

0085

まず、Step 2から先のフローを説明する。Step 2では、データ抽出部123は、バッファ122に格納された入力データの一部を読み出し(図12B)、読み出したデータの一部を加工する。次に、データ抽出部123は、ミニバッチ数カウンタ(i)の値を一つ増やす(図13i++)。その後、データ抽出部123は、行動数カウンタ(j)の値を読み出し、値が行動数(Naction)と一致するか判定する(図13j=Naction?)。一致しなかった場合、Step 3に進み(図13N2)、一致した場合はStep 5に進む(図13Y2)。

0086

まず、Step 3から先のフローを説明する。Step 3では、データ抽出部123は、Step 2で読み出したデータの残りの部分を加工する。そして、加工したデータを演算部124に送付する(図12C)。次に、データ抽出部123は、行動数カウンタ(j)の値を1つ増やす(図13j++)。その後、演算部124は、メモリ125からスピン間の結合係数127とハイパパラメタ128を読み出し(図12D及びE)、データ抽出部123から受領した加工データを基にして、演算を実行する。

0087

演算部124は、演算結果を更新部1201に送付する(図12F)。更新部1201は、演算結果を受領したことを、データ抽出部123に伝える(図12H)。すると再び、データ抽出部123は、行動数カウンタ(j)の値を読み出し、値が行動数(Naction)と一致するか判定する(図13j=Naction?)。

0088

次に、Step 5から先のフローを説明する。Step 5では、Step 2で加工したデータを演算部124に送付する(図12C)。演算部124は、メモリ125からスピン間の結合係数127とハイパパラメタ128を読み出し(図12D及びE)、データ抽出部123から受領した加工データを基にして、演算を実行する。

0089

演算部124は、演算結果を更新部1201に送付する(図12F)。次にStep 6では、更新部1201は、メモリ125からハイパパラメタ128を読み出し(図12G)、これまでに受領した演算結果を基にして、結合係数127の更新量を計算する。また、更新量の計算が完了したことを、データ抽出部123に伝える(図12H)。

0090

その後、再び、データ抽出部123は、ミニバッチ数カウンタ(i)の値を読み出し、値がミニバッチ数(Nminibatch)と一致するか判定する(図13i=Nminibatch?)。

0091

次に、Step 7から先のフローを説明する。Step 7では、データ抽出部123は、更新部1201にミニバッチ数終了通知を送る(図12I)。

0092

Step 8では、ミニバッチ数終了通知を受領した更新部1201は、これまで計算した結合係数127の更新量を基に、最終的な更新量の値を計算し、それをメモリ125に格納されたスピン間の結合係数127に反映させる(図12J)。また、更新部1201は、スピン間の結合係数127の更新がエラーなく終了したか否か、またエラーが発生した場合はエラー内容もメモリ125内の結果126に格納する(図12K)。

0093

次に、更新部1201は、終了フラグをデータインターフェース部121に送付する(図12L)。Step 9では、終了フラグを受領したデータインターフェース部121は、メモリ125内の結果126から、スピン間の結合係数127の更新がエラーなく終了したか否か、またエラーが発生した場合はエラー内容も読み出し(図12M)、機械学習フレームワーク110へ送付する(図12OUT)。

0094

図14にて、データ抽出部123が行うデータ加工処理の一例を、強化学習を例に挙げて示す。データ加工処理では、まずデータ抽出部123がバッファ122に格納された計算命令コマンドを取得する。第三の実施例では、計算命令コマンドが、” 入力データに基づいてモデルパラメタを更新するように指令するコマンド“である場合を説明する。バッファ122に格納された入力データの例を図14(a)に示す。

0095

入力データは、indexが0からミニバッチ数(Nminibatch)-1までのデータ部分で構成され、各データ部分は、現在の状態(State(j))、現在の状態のもとで実行する行動(Action(j))、報酬(Reward(j))、次の状態(State(j+1))から構成される。入力データの見方は、第一の実施例及び第二の実施例の場合と同様、”1”が上向きスピン、”0”が下向きスピンを表わす。また、現在の状態(State(j))や次の状態(State(j+1))は可視スピン1(Visible spins 1)に対応し、現在の状態のもとで実行する行動(Action(j))は可視スピン2(Visible spins 2)に対応する。

0096

データ抽出部123は、バッファ122からミニバッチ数カウンタ(i)の値に対応するデータ部分を読み出し、データ部分1つずつ順に加工処理を行う。また、データ部分は、一度に全て加工処理が実行されるわけではなく、行動数カウンタ(j)の値に応じて部分的に加工処理が行われる。行動数カウンタ(j)の値が0から行動数(Naction)-1のときは、データ部分のうち、次の状態(State(j+1))と次の状態のもとで実行する行動(Action(j+1))が加工され(Output of Extraction 0-3)、演算部(Calculation)に送付される。これは図13のStep 3に対応する加工処理となる。

0097

一方、行動数カウンタ(j)の値が行動数(Naction)の場合は、現在の状態(State(j))と現在の状態のもとで実行する行動(Action(j))が加工され(Output of Extraction 4)、報酬の値とともに演算部124に送付される。これは図13のStep 5に対応する加工処理となる。なお、加工処理による演算回路規模の削減の効果は、第一の実施例で述べたものと同様のものが期待できる。

0098

図15で、演算部124で行われる演算処理の一例を説明する。図15は自由エネルギーを計算するための演算部124の内部を機能ブロック図で表現したものである。まず、演算部124は抽出部123から加工データを受領する(Input of Calculation)。加工データは2つに分類でき、1つ目は可視スピン(Visible spins 1及びVisible spins 2、例えば図7の可視スピン701-1と可視スピン701-2)の向きの情報のみが含まれているもの(図14のOutput of Extraction 0から3に相当)で、2つめは可視スピンの向きの情報に加えて、報酬が付加されたもの(図14のOutput of Extraction 4に相当)である。

0099

以下は、まず加工データに可視スピンの向きの情報のみが含まれている場合を説明する。この場合の演算部124の動作フローは<A>で述べた内容とほぼ同じであり、演算部124が受領した加工データは、まずレジスタ802に保存される。

0100

次に積和演算ユニット803は、レジスタから読み出した加工データ(図15A)と、メモリ125から読み出したスピン間の結合係数127(図15B)と、必要に応じて隠れスピンの値(図15C)を用いて、図7を用いて説明した積和演算を実行する。積和演算ユニット803は、その結果を局所エネルギーユニット804に送付する(図15D)。

0101

局所エネルギーユニット804はその結果とメモリ125から読み出したハイパパラメタ128(図15E)を基に、スピンのフリップ確率(スピンの向きが変わる確率)を計算し、スピンフリップ制御ユニット805に送付する(図15F)。スピンフリップ制御ユニット805は、スピンのフリップ確率を基に、各スピンをフリップするか否かを決めて、その結果を隠れスピン管理ユニット806に送付する(図15H)。

0102

各スピンをフリップするか否かの結果を受領した隠れスピン管理ユニット806は、フリップ対象の隠れスピンをフリップする。また、スピンフリップ制御ユニット805は、メモリ125から読み出したハイパパラメタ128(図15G)を基に、アニーリングが終了したか否かを判定し、終了していなければ、スピンフリップサイクルを1つ増やし、隠れスピン管理ユニット806に送付する。

0103

そののち、前述の積和演算ユニット803による処理から繰り返される。スピンフリップサイクルは、上記で述べた処理中のデータのやり取りを通して、積和演算ユニット803と局所エネルギーユニット804とスピンフリップ制御ユニット805の間で共有される。

0104

スピンフリップ制御ユニット805がアニーリング終了か否かを判定し、終了していた場合は、全サイクルが終了したかどうかを判定する。その結果全サイクルが終了していなければ、スピンフリップ制御ユニット805は、隠れスピンのスナップショットを取る命令を隠れスピン管理ユニット806に送付する。

0105

命令を受けた隠れスピン管理ユニット806は、現在の隠れスピンの値(各スピン”0”か”1”)を隠れスピンレジスタ807に保存し(図15I)、隠れスピンの値を初期化する。そののち、前述の積和演算ユニット803による処理から繰り返される。

0106

また、全サイクルが終了していると判定された場合、スピンフリップ制御ユニット805は、自由エネルギーの計算実行命令を隠れスピン管理ユニット806に送付する。命令を受けた隠れスピン管理ユニット806は、隠れスピンレジスタ807から、これまで保存した隠れスピンの値を取得し(図15J)、その平均値を計算する(この平均値は、各スピン0から1までの連続値となる)。

0107

次に隠れスピン管理ユニット806は、その平均値を隠れスピンの値として、積和演算ユニット803に送付する。積和演算ユニット803は、前述の処理と同様にして、レジスタから読み出した加工データ(図15A)と、メモリ125から読み出したスピン間の結合係数127(図15B)と、受領した隠れスピンの平均値(図15C)を用いて、積和演算を実行し、その結果を局所エネルギーユニット804に送付する(図15D)。

0108

局所エネルギーユニット804は、その局所エネルギーを足し合わせ(厳密には、更に隠れスピンの右方向と左方向のダブルカウント部分を差し引いて)、足し合わされた値と、ハイパパラメタ128に含まれる温度を、統合部808に送付する(図15K)。また上記処理と並列して、統合部808は隠れスピンレジスタ807から、これまで保存した隠れスピンの値を取得し(図15L)、エントロピーを計算する。

0109

そして、統合部808は、エントロピーと足し合わされた局所エネルギーと温度を用いて、自由エネルギーを計算する。次に、統合部808は、計算された自由エネルギーを更新部1201に送付する(図15Output of Calculation 1)。

0110

次に、加工データに可視スピンの向きの情報に加えて報酬が含まれている場合を説明する。この場合の演算部124の動作フローは、1つ目の例と共通する部分もあるため、差分を説明する。まず、演算部124は、加工データを受領後、更新部1201に加工データを送付する(図15Output of Calculation 0)。また、1つ目の例と同様のフローで計算された自由エネルギーを、更新部1201に送付する(図15Output of Calculation 1)。その後、演算部124は、隠れスピン管理ユニット806に保存された隠れスピンの平均値を更新部1201に送付する(図15Output of Calculation 2)。

0111

図16で、更新部1201で行われるスピン間の結合係数127の更新処理の一例を説明する。図16は更新処理のための更新部1201の内部を機能ブロック図で表現したものである。更新部1201は更新処理部(Update Processor)1202と更新バッファ(Update Buffer)1203から構成される。

0112

まず、演算部124から更新処理部1202に、データが送付される(図16IN0と図12F)。このデータには2種類あり、自由エネルギーのみの場合と、自由エネルギーに加えて抽出部123が加工した加工データと、隠れスピンの平均値が含まれる場合がある。前者の場合、更新処理部1202は、演算部124から送付された自由エネルギーを更新バッファ1203に格納し(図16A)、自由エネルギー受領通知を抽出部123に送付する(図16OUT0と図12H)。後者の場合、これまで受領した自由エネルギーと、加工データ及び隠れスピンの平均値を用いて、スピン間の結合係数127の更新量を計算し、更新量を更新バッファ1203に格納する(図16A)。

0113

更新量の計算にあたっては、例えば、教師付き学習であれば、正解に対応する自由エネルギーの値を、他の不正解のラベルに対応する自由エネルギーの値と比べて相対的に選ばれやすくするように(一般的には減少させるように)結合係数127を変更し、強化学習であれば、行動に対応する将来報酬値の総和を負の自由エネルギー(自由エネルギーの正負反転させたもの)と一致させるように、結合係数127を変更する。

0114

その後、スピン間の結合係数127の更新量の計算完了通知を抽出部123に送付する(図16OUT0と図12H)。また、抽出部123からミニバッチ数終了通知を受領した場合(図16IN1と図12I)、更新処理部1202は更新バッファ1203から、これまでに保存したスピン間の結合係数127の更新量を読み出し(図16B)、それらから、例えば平均をとるなどして、最終的なスピン間の結合係数の更新量を計算して、メモリ125内に保存されているスピン間の結合係数127の値に反映させる(図16OUT1と図12J)。

0115

その後、更新処理部1202は、更新バッファ1203にこれまでに保存されているスピン間の結合係数127の更新量を消去する。次に、更新処理部1202は、スピン間の結合係数127の更新がエラーなく終了したか否か、またエラーが発生した場合はエラー内容もメモリ125内の結果126に格納する(図16OUT2と図12K)。格納後、更新処理部1202は、終了フラグをデータインターフェース部121に送付する(図16OUT3と図12L)。

0116

第三の実施例では、機械学習のうち、強化学習の例を重点的に説明したが、実施例の範囲は強化学習に限定されず、教師付き学習に適用してもよい。その場合は、第一の実施例及び第二の実施例で説明したように、状態(State)は可視スピン1(Visible spins 1)に対応し、行動(Action)は可視スピン2(Visible spins 2)に対応する。

0117

上記の3つの実施例<A><B><C>では、演算部124でボルツマンマシンの自由エネルギーを計算する例を挙げたが、評価関数を表現するのは自由エネルギーに限らず、例えば内部エネルギー(自由エネルギーからエントロピーの項を除いたもの)で表現してもよい。ここで、評価関数とは、強化学習では行動価値関数状態価値関数などに対応し、教師付き学習では入力データが各分類に属する確率などに対応する。

0118

第一の実施例でも述べたように、機械学習フレームワーク110はソフトウェアでもプラットフォームでもよく、機械学習モジュール120と連帯した(もしくは一体型の)ハードウェアでもよい。一方、機械学習モジュール120もハードウェアに限らず、一部もしくは全体がソフトウェアとして実装されていてもよい。また、上記の3つの実施例<A><B><C>では、機械学習システムが機械学習フレームワーク110と機械学習モジュール120から構成される例を挙げたが、機械学習フレームワークの機能(ユーザによる機械学習コマンドの入出力学習用データの入出力など含む)も機械学習モジュール120に持たせて、機械学習モジュール単独で構成してもよい。

0119

<D.実施例の効果のまとめ>
以上説明した実施例によって得られる主な効果は以下の通りである。
第一の実施例を適用することにより、機械学習において評価値を算出する際、入力するデータから評価値の算出に影響を与えない部分を取り除く(データを加工する)ことで、評価値の算出に必要な演算回路規模を削減し、回路面積の低減や演算時の消費電力の削減をすることができる。第二の実施例を適用することにより、入力するデータから複数の評価値を算出することができる。これにより、第一の実施例を適用した際の効果に加え、一つの評価値を算出する際のデータの入力回数を減らすことができ、より高速な評価値の算出が可能となる。第三の実施例を適用することにより、入力するデータから評価値の算出に影響を与えない部分を取り除き(データを加工)、その評価値を基に、評価値を求めるためのモデルのパラメタを更新する(学習する)ことができる。これにより、機械学習における学習プロセスに必要な演算回路規模を削減し、回路面積の低減や学習時の消費電力の削減をすることができる。

0120

以上の実施例における説明では、機械学習フレームワーク、データインターフェース部、データ抽出部、演算部、更新部など、機能ごとに分かれたブロック図として、機械学習システムを例示していたが、上記の機能分割に限らず、データを加工する機能、評価値を算出する機能、モデルのパラメタを更新する機能が含まれていれば良い。実装形態も、ASICのような専用回路として実装してもよいし、FPGAのようにプログラマブルロジックとして実装してもよいし、組み込みのマイコンに実装してもよいし、CPUやGPU上で動作するソフトウェアとして実装してもよい。もしくは、機能ごとに上記の組み合わせで実装してもよい。

0121

詳細に説明したように、上記実施例の技術を採用することにより、機械学習において、ボルツマンマシンを学習器に利用した場合の(ニューラルネットワークと比較した場合の)モデル規模増大による消費電力や実装回路規模の増大を防ぎつつ、学習に必要なモデルパラメタの更新回数を減らし、学習時間や消費電力の削減を可能にすることが可能となる。

0122

以上、添付図面を参照して具体的に説明したが、好ましい実施の形態は以上の説明に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。

0123

110・・・機械学習フレームワーク
120・・・機械学習モジュール
121・・・データインターフェース部
122・・・バッファ
125・・・メモリ
126・・・結果
127・・・スピン間の結合係数
128・・・ハイパパラメタ
123・・・データ抽出部
124・・・演算部

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ