TOP > 国内特許検索 > 乱数生成器が不要なニューラルネットワークのハードウェア実装の方法及び乱数生成器が不要なニューラルネットワーク > 明細書

明細書 :乱数生成器が不要なニューラルネットワークのハードウェア実装の方法及び乱数生成器が不要なニューラルネットワーク

発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2018-025920 (P2018-025920A)
公開日 平成30年2月15日(2018.2.15)
発明の名称または考案の名称 乱数生成器が不要なニューラルネットワークのハードウェア実装の方法及び乱数生成器が不要なニューラルネットワーク
国際特許分類 G06N   3/063       (2006.01)
G06N   3/08        (2006.01)
FI G06N 3/063
G06N 3/08
請求項の数または発明の数 8
出願形態 OL
全頁数 17
出願番号 特願2016-156471 (P2016-156471)
出願日 平成28年8月9日(2016.8.9)
新規性喪失の例外の表示 申請有り
公序良俗違反の表示 1.ETHERNET
発明者または考案者 【氏名】堀 三晟
【氏名】田向 権
【氏名】森江 隆
出願人 【識別番号】504174135
【氏名又は名称】国立大学法人九州工業大学
個別代理人の代理人 【識別番号】100090697、【弁理士】、【氏名又は名称】中前 富士男
【識別番号】100176142、【弁理士】、【氏名又は名称】清井 洋平
【識別番号】100127155、【弁理士】、【氏名又は名称】来田 義弘
審査請求 未請求
要約 【課題】乱数生成器が不要なニューラルネットワークのハードウェア実装の方法及び乱数生成器が不要なニューラルネットワークを提供する。
【解決手段】処理層Aを形成する複数のユニットAのそれぞれの発火又は非発火の状態を示す状態値Aが、処理層Aと隣り合う下流側の処理層Bを形成する複数のユニットBにそれぞれ伝達されて決まるユニットB毎の状態値Bを固定小数点2進数による演算で求め、ユニットB毎の発火確率P(B)から発火又は非発火の状態を決定して出力する演算回路部14を設け、演算回路部14には、状態値Bを求める際に固定小数点2進数のビット幅を超過して切り捨てられるビットを用いて形成する数値を乱数として用いて、ユニットB毎の発火確率P(B)からユニットBの発火又は非発火の状態を決定するユニット状態演算器21、24を設ける。
【選択図】図1
特許請求の範囲 【請求項1】
深層学習に用いる乱数生成器が不要な処理層を備えたニューラルネットワークのハードウェア実装の方法であって、
最下流の前記処理層を除いた任意の処理層Aを形成する複数のユニットAのそれぞれの発火又は非発火の状態を示す状態値Aが、該処理層Aと隣り合う下流側の処理層Bを形成する複数のユニットBにそれぞれ伝達されて決まる該ユニットB毎の状態値Bを固定小数点2進数による演算で求め、該状態値Bを変数とする発火確率関数を用いて前記ユニットB毎の発火確率P(B)を求めて発火又は非発火の状態を決定して出力する演算回路部を設け、前記演算回路部には、前記状態値Bを求める際に前記固定小数点2進数のビット幅を超過して切り捨てられるビットを用いて形成する数値を乱数として用いて、前記ユニットB毎の発火確率P(B)から該ユニットBの発火又は非発火の状態を決定するユニット状態演算器を設けることを特徴とする乱数生成器が不要なニューラルネットワークのハードウェア実装の方法。
【請求項2】
請求項1記載の乱数生成器が不要なニューラルネットワークのハードウェア実装の方法において、前記ニューラルネットワークは制限付きボルツマンマシンであって、
前記制限付きボルツマンマシンの可視層を形成する複数の可視ユニットのそれぞれの発火又は非発火の状態を示す状態値vが、該可視層と結合する隠れ層を形成する複数の隠れユニットにそれぞれ伝達されて決まる該隠れユニット毎の状態値hを固定小数点2進数による演算から求め、該状態値hを変数とする発火確率関数を用いて前記隠れユニット毎の発火確率P(h)を求めて発火又は非発火の状態を決定して出力する順方向学習を行う第1の演算回路部を前記隠れユニット毎に対応させて設け、前記順方向学習で決定された前記隠れユニット毎の状態値hが複数の前記可視ユニットにそれぞれ伝達されて決まる該可視ユニット毎の状態値vを固定小数点2進数による演算から求め、該状態値vを変数とする前記発火確率関数を用いて前記可視ユニット毎の発火確率P(v)を求めて発火又は非発火の状態を決定する逆方向学習を行う第2の演算回路部を前記可視ユニット毎に対応させて設けて、前記第1の演算回路部と前記第2の演算回路部で前記演算回路部を構成し、
前記第1の演算回路部には、前記順方向学習において前記状態値hを求める際に前記固定小数点2進数のビット幅を超過して切り捨てられるビットを用いて形成する数値を乱数hとして用いて、前記隠れユニット毎の発火確率P(h)から前記隠れユニットの発火又は非発火の状態を決定する第1のユニット状態演算器を設け、前記第2の演算回路部には、前記逆方向学習において前記状態値vを求める際に前記固定小数点2進数のビット幅を超過して切り捨てられるビットを用いて形成する数値を乱数vとして用いて、前記可視ユニット毎の発火確率P(v)から前記可視ユニットの発火又は非発火の状態を決定する第2のユニット状態演算器を設けて、前記第1のユニット状態演算器と前記第2のユニット状態演算器でユニット状態演算器を構成することを特徴とする乱数生成器が不要なニューラルネットワークのハードウェア実装の方法。
【請求項3】
請求項2記載の乱数生成器が不要なニューラルネットワークのハードウェア実装の方法において、前記固定小数点2進数のビット幅を超過して切り捨てられるビットは、小数部の下位側のビット又は固定小数点2進数の整数部の上位側ビットであることを特徴とする乱数生成器が不要なニューラルネットワークのハードウェア実装の方法。
【請求項4】
請求項2又は3記載の乱数生成器が不要なニューラルネットワークのハードウェア実装の方法において、前記乱数hが前記発火確率P(h)以下では前記隠れユニットを発火状態とし、該乱数hが該発火確率P(h)を超えると該隠れユニットを非発火状態とし、前記乱数vが前記発火確率P(v)以下では前記可視ユニットを発火状態とし、該乱数vが該発火確率P(v)を超えると該可視ユニットを非発火状態とすることを特徴とする乱数生成器が不要なニューラルネットワークのハードウェア実装の方法。
【請求項5】
請求項2記載の乱数生成器が不要なニューラルネットワークのハードウェア実装の方法において、最初の前記順方向学習における前記可視ユニット毎の初期状態値vを該可視ユニットにそれぞれ学習値を入力して求め、前記各初期状態値vが前記隠れユニットにそれぞれ伝達されて決まる該隠れユニット毎の発火確率P(h)から該隠れユニット毎の発火又は非発火の状態を決定する際に用いる乱数hを、前記各初期状態値vが前記隠れユニットにそれぞれ伝達されて決まる該隠れユニット毎の状態値hを前記固定小数点2進数による演算で求める際の非切り捨てビット中の小数部の全ビットを用いて形成することを特徴とする乱数生成器が不要なニューラルネットワークのハードウェア実装の方法。
【請求項6】
請求項5記載の乱数生成器が不要なニューラルネットワークのハードウェア実装の方法において、前記乱数hが前記発火確率P(h)以下では前記隠れユニットを発火状態とし、該乱数hが該発火確率P(h)を超えると該隠れユニットを非発火状態とすることを特徴とする乱数生成器が不要なニューラルネットワークのハードウェア実装の方法。
【請求項7】
深層学習に用いる乱数生成器が不要な処理層を備えたニューラルネットワークであって、
最下流の前記処理層を除いた任意の処理層Aを形成する複数のユニットAのそれぞれの発火又は非発火の状態を示す状態値Aが、該処理層Aと隣り合う下流側の処理層Bを形成する複数のユニットBにそれぞれ伝達されて決まる該ユニットB毎の状態値Bを固定小数点2進数による演算で求め、該状態値Bを変数とする発火確率関数を用いて前記ユニットB毎の発火確率P(B)を求めて発火又は非発火の状態を決定して出力する演算回路部を有し、
前記演算回路部には、前記状態値Bを求める際に前記固定小数点2進数のビット幅を超過して切り捨てられるビットを用いて形成する数値を乱数として用いて、前記ユニットB毎の発火確率P(B)から該ユニットBの発火又は非発火の状態を決定するユニット状態演算器が設けられていることを特徴とする乱数生成器が不要なニューラルネットワーク。
【請求項8】
請求項7記載の乱数生成器が不要なニューラルネットワークにおいて、前記処理層Aは制限付きボルツマンマシンの可視層、前記処理層Bは該制限付きボルツマンマシンの隠れ層であって、
前記演算回路部は、可視層を形成する複数の可視ユニットのそれぞれの発火又は非発火の状態を示す状態値vが、該可視層と結合する隠れ層を形成する複数の隠れユニットにそれぞれ伝達されて決まる該隠れユニット毎の状態値hを固定小数点2進数による演算から求め、該状態値hを変数とする発火確率関数を用いて前記隠れユニット毎の発火確率P(h)を求めて発火又は非発火の状態を決定して出力する順方向学習を行う第1の演算回路部と、前記順方向学習で決定された前記隠れユニット毎の状態値hが複数の前記可視ユニットにそれぞれ伝達されて決まる該可視ユニット毎の状態値vを固定小数点2進数による演算から求め、該状態値vを変数とする前記発火確率関数を用いて前記可視ユニット毎の発火確率P(v)を求めて発火又は非発火の状態を決定する逆方向学習を行う第2の演算回路部とを有し、
前記ユニット状態演算器は、前記第1の演算回路部に設けられ、前記順方向学習において前記状態値hを求める際に前記固定小数点2進数のビット幅を超過して切り捨てられるビットを用いて形成する数値を乱数hとして用いて、前記隠れユニット毎の発火確率P(h)から前記隠れユニットの発火又は非発火の状態を決定する第1のユニット状態演算器と、前記第2の演算回路部に設けられ、前記逆方向学習において前記状態値vを求める際に前記固定小数点2進数のビット幅を超過して切り捨てられるビットを用いて形成する数値を乱数vとして用いて、前記可視ユニット毎の発火確率P(v)から前記可視ユニットの発火又は非発火の状態を決定する第2のユニット状態演算器とを有していることを特徴とする乱数生成器が不要なニューラルネットワーク。
発明の詳細な説明 【技術分野】
【0001】
本発明は、深層学習(Deep Learning)に用いる乱数生成器が不要なニューラルネットワークのハードウェア実装の方法及び乱数生成器が不要なニューラルネットワークに関する。
【背景技術】
【0002】
制限付きボルツマンマシン(例えば、非特許文献1参照)は、近年、AI(人工知能)の分野で盛んに研究が行なわれている深層学習に用いられるニューラルネットワークの一つである。
制限付きボルツマンマシンによる学習では、学習データが可視層を構成する複数の可視ユニットに入力されて隠れ層を構成している隠れユニットに伝搬する順方向学習と、隠れ層の隠れユニットで形成される出力データが隠れ層から可視層の可視ユニットに伝搬する逆方向学習を繰り返すことにより、各可視ユニット(隠れユニット)から各隠れユニット(可視ユニット)にデータがそれぞれ伝搬する際の結合荷重(重み)を調整して、可視層に学習データが入力された際の隠れ層からの出力データを、一定誤差の範囲内で目的出力データに一致させることを目的としている。
【0003】
ここで、制限付きボルツマンマシンで構成された多層のニューラルネットワークの学習をソフトウェア上で行なう場合、順方向学習と逆方向学習の繰り返し学習を膨大な回数実行するため、大規模な計算資源と非常に長い演算時間を要することになり、消費電力量も増大するという問題がある。
そこで、制限付きボルツマンマシンによる多層のニューラルネットワークの学習を、より高速かつ低消費電力で行うことを可能にするために、制限付きボルツマンマシンのハードウェア化(チップ化)の研究が行なわれている(例えば、非特許文献2参照)。
【先行技術文献】
【0004】

【非特許文献1】Asja Fischer, Christian Igel,"An Introduction to Restricted Boltzmann Machines",Lecture Notes in Computer Science,Vol.7441,pp.14-36,2012.
【非特許文献2】Seongwook Park,Kyeongryeol Bong,Dongjoo Shin,Jinmook Lee,Sungpill Choi,Hoi-Jun Yoo,"A 1.93TOPS/W Scalable Deep Learning/Inference Processor with Tetra-Parallel MIMD Architecture for Big-Data Applications",47th Annual IEEE/ACM International Symposium on Microarchitecture,2015.
【発明の概要】
【発明が解決しようとする課題】
【0005】
制限付きボルツマンマシンをハードウェア化する場合、可視ユニットで行われる処理を実行する可視ユニット用の演算回路を可視ユニットの個数だけ、隠れユニットで行われる処理を実行する隠れユニット用の演算回路を隠れユニットの個数だけそれぞれチップ内に設ける必要がある。更に、制限付きボルツマンマシンでは、各ユニットが持つ発火確率によってランダム(乱数による)にそのユニットの発火又は非発火の状態が決定されるため、可視ユニット用の演算回路と隠れユニット用の演算回路にそれぞれ乱数生成器を設ける必要がある。
ここで、乱数生成器を形成する場合、ビット長の長いシフトレジスタと複数の論理ゲートが必要となるので、乱数生成器を備えた可視ユニット用と隠れユニット用の演算回路をそれぞれ必要個数だけチップ内に形成すると、チップ内で多量の回路資源(ハードウェア資源)が消費されることになる。このため、チップ内で形成できる制限付きボルツマンマシンの規模に制約が生じることになり、大規模な多層のニューラルネットワークを制限付きボルツマンマシンを用いて実現するためには、膨大なハードウェア資源を有するチップを準備しなければならないという問題が生じる。
【0006】
本発明はかかる事情に鑑みてなされたもので、限られたハードウェア資源の中で、ニューラルネットワークのハードウェア実装に必要なハードウェア資源を削減してハードウェア化を実現することが可能な乱数生成器が不要なニューラルネットワークのハードウェア実装の方法及び乱数生成器が不要なニューラルネットワークを提供することを目的とする。
【課題を解決するための手段】
【0007】
前記目的に沿う第1の発明に係る乱数生成器が不要なニューラルネットワークのハードウェア実装の方法は、深層学習に用いる乱数生成器が不要な処理層を備えたニューラルネットワークのハードウェア実装の方法であって、
最下流の前記処理層を除いた任意の処理層Aを形成する複数のユニットAのそれぞれの発火又は非発火の状態を示す状態値Aが、該処理層Aと隣り合う下流側の処理層Bを形成する複数のユニットBにそれぞれ伝達されて決まる該ユニットB毎の状態値Bを固定小数点2進数による演算で求め、該状態値Bを変数とする発火確率関数を用いて前記ユニットB毎の発火確率P(B)を求めて発火又は非発火の状態を決定して出力する演算回路部を設け、前記演算回路部には、前記状態値Bを求める際に前記固定小数点2進数のビット幅を超過して切り捨てられるビットを用いて形成する数値を乱数として用いて、前記ユニットB毎の発火確率P(B)から該ユニットBの発火又は非発火の状態を決定するユニット状態演算器を設ける。
【0008】
前記目的に沿う第2の発明に係る乱数生成器が不要なニューラルネットワークは、深層学習に用いる乱数生成器が不要な処理層を備えたニューラルネットワークであって、
最下流の前記処理層を除いた任意の処理層Aを形成する複数のユニットAのそれぞれの発火又は非発火の状態を示す状態値Aが、該処理層Aと隣り合う下流側の処理層Bを形成する複数のユニットBにそれぞれ伝達されて決まる該ユニットB毎の状態値Bを固定小数点2進数による演算で求め、該状態値Bを変数とする発火確率関数を用いて前記ユニットB毎の発火確率P(B)を求めて発火又は非発火の状態を決定して出力する演算回路部を有し、
前記演算回路部には、前記状態値Bを求める際に前記固定小数点2進数のビット幅を超過して切り捨てられるビットを用いて形成する数値を乱数として用いて、前記ユニットB毎の発火確率P(B)から該ユニットBの発火又は非発火の状態を決定するユニット状態演算器が設けられている。
【発明の効果】
【0009】
第1の発明に係る乱数生成器が不要なニューラルネットワークのハードウェア実装の方法及び第2の発明に係る乱数生成器が不要なニューラルネットワークにおいては、ニューラルネットワークの処理層Aを形成する複数のユニットAの状態を示す状態値Aから、処理層Aと隣り合う下流側の処理層Bを形成する複数のユニットBの状態を決定して出力する演算回路部をユニットB毎にに対応させて設けるので、複数のユニットBの発火又は非発火の状態を、同時にかつ高速で演算して決定することができる。これにより、深層学習を短時間で行うことができ、消費電力の削減を達成することが可能になる。
【0010】
更に、ユニットBの状態値Bを固定小数点2進数による演算で求めるので、従来の浮動小数点2進数による演算の場合と比較して、必要な回路資源を削減することができる。また、ユニットBの発火確率P(B)からユニットBの状態を決定する場合に必要な乱数として、ユニットBの状態値Bを求める際に切り捨てるビットを用いて形成する数値を用いるので、従来必要であった乱数生成器が不要となり、回路資源の節約が可能になる。
その結果、乱数生成器が不要なニューラルネットワークでは、深層学習を行う多層のニューラルネットワークシステムのハードウェア実装をより省資源に実現することが可能になる。更に、乱数生成器が不要なニューラルネットワークでは、ハードウェア化する際の回路資源が従来の手法と比較して削減されるため、稼働時の消費電力の削減を行うことも可能になる。
【図面の簡単な説明】
【0011】
【図1】(A)は本発明の一実施の形態に係る乱数生成器が不要なニューラルネットワークのハードウェア実装の方法が適用されたハードウェアとソフトウェアの複合システムの説明図、(B)はハードウェアの演算回路部の説明図である。
【図2】(A)は順方向学習時の可視層と隠れ層の関係を示す説明図、(B)は順方向学習時の隠れユニットの処理内容を示す説明図である。
【図3】乱数を用いて隠れユニットの発火確率から隠れユニットの発火又は非発火の状態を決定する方法の説明図である。
【図4】(A)は逆方向学習時の隠れ層と可視層の関係を示す説明図、(B)は逆方向学習時の可視ユニットの処理内容を示す説明図である。
【図5】実施例1における制限付きボルツマンマシンの学習の流れ図である。
【図6】実施例1におけるエポック回数と交差エントロピー誤差の関係を示すグラフである。
【図7】実施例1における交差エントロピー誤差の最大値と固定小数点2進数の小数部のビット幅との関係を示すグラフである。
【図8】実施例2における固定小数点2進数の演算により発生する切り捨てビットの説明図である。
【図9】実施例2において、(A)は小数部の全ての切り捨てビットを用いて形成した数値のヒストグラム、(B)は整数部の全ての切り捨てビットを用いて形成した数値のヒストグラムである。
【図10】実施例2において、(A)は学習データ入力時のデータを省いて作成した小数部の切り捨てビットを用いて形成した数値のヒストグラム、(B)は学習データ入力時のデータを省いて作成した整数部の切り捨てビットを用いて形成した数値のヒストグラムである。
【図11】実施例3におけるエポック回数と交差エントロピー誤差の関係を示すグラフである。
【発明を実施するための形態】
【0012】
続いて、添付した図面を参照しつつ、本発明を具体化した実施の形態につき説明し、本発明の理解に供する。
本発明の一実施の形態に係る乱数生成器が不要なニューラルネットワークのハードウェア実装の方法は、深層学習に用いる乱数生成器が不要な処理層を備えたニューラルネットワークのハードウェア実装の方法であって、最下流の前記処理層を除いた任意の処理層Aを形成する複数のユニットAのそれぞれの発火又は非発火の状態を示す状態値Aが、処理層Aと隣り合う下流側の処理層Bを形成する複数のユニットBにそれぞれ伝達されて決まるユニットB毎の状態値Bを固定小数点2進数による演算で求め、状態値Bを変数とする発火確率関数を用いてユニットB毎の発火確率P(B)を求めて発火又は非発火の状態を決定して出力する演算回路部を設けている。更に、演算回路部には、ユニットBの状態値Bを求める際に固定小数点2進数のビット幅を超過して切り捨てられるビットを用いて形成する数値を乱数として用いて、ユニットB毎の発火確率P(B)からユニットBの発火又は非発火の状態を決定するユニット状態演算器を設けている。
以下、乱数生成器が不要な処理層を備えたニューラルネットワークの一例として乱数生成器が不要な制限付きボルツマンマシンのハードウェア実装の方法について具体的に説明する。

【0013】
図1(A)に示すように、制限付きボルツマンマシンのハードウェア実装の方法では、制限付きボルツマンマシン(以下、RBMともいう)のソフトウェアが搭載される主計算機10にハードウェアモジュール11を接続し、RBMのソフトウェアが実行する各種処理の中で、複雑な条件分離等のハードウェア化に向かない処理はソフトウェア(主計算機10のCPU)に担当させ、ビット処理や信号処理等のハードウェア化に適する処理はハードウエアモジュール11内に形成する専用の演算回路に担当させるといったハードウェアとソフトウェアの複合システム12としたハードウェアの構成となっている。

【0014】
ここで、ハードウエアモジュール11には、例えば、FPGA(Field Programmable Gate Array)ボードを使用する。これにより、主計算機10とハードウェアモジュール11を、何らかのインターフェイス(例えば、PCIインターフェイス、PCIeインターフェイス、Ethernetインターフェイス)を用いてバス13を介して接続することができ、主計算機10のCPU上で、ソフトウェアによる処理をソフトウェアオブジェクトとして利用するのと同じように、演算回路をハードウェアオブジェクトとして利用することが可能になる。なお、ハードウェアオブジェクトは、ハードウェアモジュール11上で実現されるハードウェアである演算回路部(hwネット)14及びデータ記憶部15(深層学習時に使用する学習値や学習結果を保存する部分)と、主計算機10のCPU上で実現されるソフトウェアである入出力関数から構成される。

【0015】
本実施の形態に係る制限付きボルツマンマシンのハードウェア実装の方法では、図2(A)に示すように、RBMの可視層16(処理層Aに相当)を形成する複数(n個)の可視ユニット17(ユニットAに相当)のそれぞれの発火又は非発火の状態を示す状態値v(i=1、2、・・・、n、状態値Aに相当)が、可視層16と結合する隠れ層18(処理層Aと隣り合う下流側の処理層Bに相当)を形成する複数(m個)の隠れユニット19(ユニットBに相当)にそれぞれ伝達されて決まる隠れユニット19毎の状態値h(j=1、2、・・・、m、状態値Bに相当)を固定小数点2進数による演算で求め、状態値hを変数とする発火確率関数fを用いて隠れユニット19毎の発火確率P(h)(発火確率P(B)に相当)を求めて発火又は非発火の状態を決定して出力する順方向学習を行う第1の演算回路部20を隠れユニット19毎に対応させて演算回路部(hwネット)14内に設ける(図1(B)参照)。

【0016】
隠れユニット19の状態値hを固定小数点2進数による演算で求めるので、従来の浮動小数点2進数による演算の場合と比較して、必要な回路資源を削減することができる。
また、隠れユニット19の状態値hを求める第1の演算回路部20は隠れユニット19の個数だけ存在するので、順方向学習において、各隠れユニット19の状態値hを求める演算を同時にかつ高速で実行することが可能になる。そして、第1の演算回路部20に要する回路資源が削減され、演算に要する時間が短縮されるため、低消費電力の削減が可能になる。

【0017】
ここで、i番目の可視ユニット16が発火の状態であるとき状態値vを1とし、非発火の状態であるときの状態値vを0とする。
また、図2(B)に示すように、j番目の隠れユニット19の状態値hは、各可視ユニット17の状態値v(i=1、2、・・・、n)がj番目の隠れユニット19に伝達される際の結合荷重(重み)wij(i=1、2、・・・、n、j=1、2、・・・、m)と、j番目の隠れユニット19のバイアス値b(j=1、2、・・・、m)を用いて、b+w1j+w2j+w3j+・・・+wnj=b+Σijとなる。
そして、例えば、発火確率関数fにシグモイド関数(ロジスティック関数)を用いると、j番目の隠れユニット19の発火確率P(h)は、P(h)=1/(1+exp(-h/T))となる(Tはパラメータ)。
なお、発火確率関数fには、シグモイド関数の代わりに、tanh関数又はRectifield線形関数を使用することもできる。

【0018】
図1(B)に示すように、第1の演算回路部20には、順方向学習において状態値h(j=1、2、・・・、m)を求める際に、固定小数点2進数のビット幅を超過するビット(整数部の上位側ビットと小数部の下位側ビット)は切り捨てられる。そこで、ユニット状態演算器として、切り捨てられるビットの中で、小数部の下位側ビットを用いて形成する数値を乱数hとして用いて(乱数の代わりに用いて)、隠れユニット19毎の発火確率P(h)から、j番目の隠れユニット19の発火又は非発火の状態を決定する第1のユニット状態演算器21が設けられている。乱数生成器を使用しないため、第1のユニット状態演算器21に要するハードウェア資源を削減することができ、より省資源にRBMをハードウェア実装することが可能になる。

【0019】
ここで、第1のユニット状態演算器21は、図3に示すように、切り捨てた小数部の下位側ビットから形成する数値が発火確率P(h)以下の場合では、j番目の隠れユニット19は発火状態であると判定し、隠れユニット19から1を出力する。従って、j番目の隠れユニット19の状態値hは1となる。
一方、切り捨てた小数部の下位側ビットから形成する数値が発火確率P(h)を超える場合では、j番目の隠れユニット19は非発火状態であると判定し、隠れユニット19から0を出力する。従って、j番目の隠れユニット19の状態値hは0となる。

【0020】
第1の演算回路部20には、最初の順方向学習における可視ユニット17毎の初期状態値vi0(i=1、2、・・・、n)を、可視ユニット17にそれぞれ学習値(2進数のため1又は0)を入力することにより求める機能を備えたユニット初期状態演算器22が設けられている。

【0021】
ここで、初期状態値vi0は1又は0となるため、各初期状態値vi0が隠れユニット19にそれぞれ伝達された際の隠れユニット19毎の状態値hj0を求める際に切り捨てビットは発生しない。そこで、ユニット初期状態演算器22は、各初期状態値vi0が隠れユニット19にそれぞれ伝達されて決まる隠れユニット19毎の発火確率P(hj0)から隠れユニット19毎の発火又は非発火の状態を決定する際に用いる乱数hを、各初期状態値vが隠れユニット19にそれぞれ伝達されて決まる隠れユニット19毎の状態値hを固定小数点2進数による演算で求める際の非切り捨てビット中の小数部の全ビットを用いて形成する数値とする機能を更に備えている。
そして、乱数hが発火確率P(h)以下では隠れユニット19を発火状態とし、乱数hが発火確率P(h)を超えると隠れユニット19を非発火状態とする。

【0022】
また、制限付きボルツマンマシンのハードウェア実装の方法では、図4(A)に示すように、順方向学習で決定された隠れユニット19毎の状態値h(j=1、2、・・・、m)が各可視ユニット17にそれぞれ伝達されて決まる可視ユニット17毎の状態値v(i=1、2、・・・、n)を固定小数点2進数による演算で求め、状態値vを変数とする発火確率関数fを用いて可視ユニット17毎の発火確率P(v)を求めて発火又は非発火の状態を決定する逆方向学習を行う第2の演算回路部23を可視ユニット17毎に対応させて演算回路部(hwネット)14内に設ける(図1(B)参照)。

【0023】
なお、図4(A)に示すように、逆方向学習では処理の方向が隠れ層18から可視層16に向かうため、隠れ層18が処理層Aに相当し、可視層16が処理層Aと隣り合う下流側の処理層Bに相当する。同様に、隠れユニット19がユニットAに、可視ユニット17がユニットBに相当する。また、発火確率P(v)が発火確率P(B)に相当する。

【0024】
可視ユニット17の状態値vを固定小数点2進数による演算で求めるので、従来の浮動小数点2進数による演算の場合と比較して、必要な回路資源を削減することができる。
また、可視ユニット17の状態値vを求める第2の演算回路部23は可視ユニット17の個数だけ存在するので、逆方向学習において、各可視ユニット17の状態値vを求める演算を同時にかつ高速で実行することが可能になる。そして、第2の演算回路部23に要する回路資源が削減され、演算に要する時間が短縮されるため、低消費電力の削減が可能になる。

【0025】
ここで、j番目の隠れユニット19が発火の状態であるとき状態値hを1とし、非発火の状態であるときは状態値hを0とする。
また、図4(B)に示すように、i番目の可視ユニット17の状態値vは、各隠れユニット19の状態値h(j=1、2、・・・、m)がi番目の可視ユニット17に伝達される際の結合荷重(重み)wij(i=1、2、・・・、n、j=1、2、・・・、m)と、i番目の可視ユニット17のバイアス値a(i=1、2、・・・、n)を用いて、a+wi1+wi2+wi3+・・・+wim=a+Σijとなる。
そして、発火確率関数fにシグモイド関数を用いると、i番目の可視ユニット17の発火確率P(v)は、P=1/(1+exp(-v/T))となる。

【0026】
図1(B)に示すように、第2の演算回路部23には、逆方向学習において状態値v(i=1、2、・・・、n)を求める際に、固定小数点2進数のビット幅を超過するビット(整数部の上位側ビットと小数部の下位側ビット)は切り捨てられる。そこで、ユニット状態演算器として、切り捨てられるビットの中で、小数部の下位側ビットを用いて形成する数値を乱数vとして用いて(乱数の代わりに用いて)、可視ユニット17毎の発火確率P(v)から、i番目の可視ユニット17の発火又は非発火の状態を決定する第2のユニット状態演算器24が設けられている。乱数生成器を使用しないため、第2のユニット状態演算器24に要するハードウェア資源を削減することができ、より省資源にRBMをハードウェア実装することが可能になる。

【0027】
ここで、第2のユニット状態演算器24には、図3に示すように、切り捨てた小数部の下位側ビットから形成する数値が発火確率P(v)以下の場合では、i番目の可視ユニット17は発火状態であると判定し、可視ユニット17から1を出力する。従って、i番目の可視ユニット17の状態値vは1となる。
一方、切り捨てた小数部の下位側ビットから形成する数値が発火確率P(v)を超える場合では、i番目の可視ユニット17は非発火状態であると判定し、可視ユニット17から0を出力する。従って、i番目の可視ユニット17の状態値vは0となる。

【0028】
本発明の一実施の形態に係る乱数生成器が不要なニューラルネットワークは、深層学習に用いる乱数生成器が不要な処理層を備えたニューラルネットワークの一例である制限付きボルツマンマシン(図2、図4参照)であって、図1(B)に示すように、順方向学習を行う、即ち、上流側の可視層16(処理層Aに相当)を形成する複数の可視ユニット17(ユニットAに相当)のそれぞれの発火又は非発火の状態を示す状態値v(状態値Aに相当)が、可視層16と結合する隠れ層18(処理層Aと隣り合う下流側の処理層Bに相当)を形成する複数の隠れユニット19(ユニットBに相当)にそれぞれ伝達されて決まる隠れユニット19毎の状態値h(状態値Bに相当)を固定小数点2進数による演算から求め、状態値hを変数とする発火確率関数fを用いて隠れユニット19毎の発火確率P(h)(発火確率P(B)に相当)を求めて発火又は非発火の状態を決定して出力する第1の演算回路部20を演算回路部14に有している。

【0029】
更に、制限付きボルツマンマシンは、図1(B)に示すように、逆方向学習を行う、即ち、順方向学習で決定された隠れ層18(データの処理方向が逆転するため処理層Aに相当、以下同様)の隠れユニット19(ユニットAに相当)毎の状態値h(状態値Aに相当)が、可視層16(処理層Bに相当)を形成する複数の可視ユニット17(ユニットBに相当)にそれぞれ伝達されて決まる可視ユニット毎の状態値v(状態値Bに相当)を固定小数点2進数による演算から求め、状態値vを変数とする発火確率関数fを用いて可視ユニット17毎の発火確率P(v)(発火確率P(B)に相当)を求めて発火又は非発火の状態を決定する第2の演算回路部23を演算回路部14に有している。

【0030】
第1の演算回路部20を設けることにより、順方向学習において、各隠れユニット19の状態値hを求める演算を同時にかつ高速で実行することが可能になる。そして、第1の演算回路部20では固定小数点2進数による演算が実行されるため、第1の演算回路部20に要する回路資源が削減され、演算に要する時間が短縮されるため、消費電力の削減が可能になる。
また、第2の演算回路部23を設けることにより、逆方向学習において、各可視ユニット17の状態値vを求める演算を同時にかつ高速で実行することが可能になる。そして、第2の演算回路部23では固定小数点2進数による演算が実行されるため、第2の演算回路部23に要する回路資源が削減され、演算に要する時間が短縮されるため、低消費電力の削減が可能になる。

【0031】
そして、第1の演算回路部20には、順方向学習において、複数の可視ユニット17の各状態値vが隠れ層18の複数の隠れユニット19にそれぞれ伝達されて決まる隠れユニット19毎の状態値hを求める際に固定小数点2進数のビット幅を超過して切り捨てられるビットを用いて形成する数値を乱数hとして用いて、隠れユニット19毎の発火確率P(h)から可視ユニット19の発火又は非発火の状態を決定する第1のユニット状態演算器21が設けられている。

【0032】
また、第2の演算回路部23には、逆方向学習において、複数の隠れユニット19の各状態値hが可視層16の複数の可視ユニット17にそれぞれ伝達されて決まる可視ユニット17毎の状態値vを求める際に固定小数点2進数のビット幅を超過して切り捨てられるビットを用いて形成する数値を乱数vとして用いて、可視ユニット17毎の発火確率P(v)から可視ユニット17の発火又は非発火の状態を決定する第2のユニット状態演算器24が設けられている。

【0033】
従来の乱数生成器を使用しないため、第1、第2のユニット状態演算器21、24に要するハードウェア資源を削減することができ、より省資源に制限付きボルツマンマシンをハードウェア実装することが可能になる。

【0034】
ここで、順方向学習を開始した際、可視ユニット17毎の初期状態値は1又は0となるため、各初期状態値が隠れユニット19にそれぞれ伝達された際の隠れユニット19毎の状態値を求める際に切り捨てビットは発生しない。このため、図1(B)に示すように、第1の演算回路部20には、可視ユニット17にそれぞれ学習値(2進数のため1又は0)を入力することにより最初の順方向学習における可視ユニット17毎の初期状態値を求めるユニット初期状態演算器22が設けられている。ユニット初期状態演算器22では、可視ユニット17の各初期状態値が隠れユニット19にそれぞれ伝達されて決まる隠れユニット19毎の発火確率から隠れユニット19毎の発火又は非発火の状態を決定する際に乱数として用いる数値を、各初期状態値が隠れユニット19にそれぞれ伝達されて決まる隠れユニット19毎の状態値を固定小数点2進数による演算で求める際の非切り捨てビット中の小数部の全ビットを用いて形成している。
【実施例】
【0035】
(実施例1)
固定小数点2進数による演算において、整数部のビット幅を8ビット、小数部のビット幅を4ビット、6ビット、8ビット、10ビット、及び12ビットの5段階に設定して、小数部のビット幅の影響を検討した。
RBM(可視層ノード数が1024、隠れ層ノード数が16)に、SIDBA(Standard Image Data-BAse) から選んだ数枚の画像(画像サイズは、縦32ピクセル×横32ピクセルの1024ピクセル)を学習画像に用いて学習させた。学習の流れを図5に示す。
【実施例】
【0036】
図5に示すように、RBMは全ての学習画像を取り込み二値画像に変換する。そして、学習画像毎に、二値画像の各ピクセルの1又は0の値を可視層の各可視ユニットに入力し(可視層の各可視ユニットは、学習画像の各ピクセルの値にそれぞれ対応した状態となる)、可視層から隠れ層へ向かう順方向学習と、隠れ層から可視層へ向かう逆方向学習を1回繰り返す事前学習を行ってパラメタの初期値を求めた。次いで、全ての学習画像を用いて、可視層から隠れ層へ向かう順方向学習と隠れ層から可視層へ向かう逆方向学習の連携学習(1エポックという)を800回繰り返す全体学習を行ってパラメタを最適値に収束させた。
【実施例】
【0037】
ここで、事前学習と全体学習では、最初の順方向学習において、複数の可視ユニットのそれぞれの状態を示す状態値を、可視ユニットにそれぞれ学習画像の各ピクセルの値(学習値)を入力して得られる初期状態値とした。また、隠れユニット毎の発火又は非発火の状態を決定する際に用いる乱数を、可視ユニット毎の初期状態値が複数の隠れユニットにそれぞれ伝達されて決まる隠れユニット毎の状態値を用いて形成した数値とした。
【実施例】
【0038】
学習中に学習画像を想起した結果の画像と学習画像との間の交差エントロピー誤差の値を観測した。なお、計算時の値が2進数で表現できる値の最大値もしくは最小値を超過した場合は、表現可能な一定の値に固定した。また,小数点以下の数値でビット精度上表現できない値は0とした。交差エントロピー誤差のエポック毎の変化を図6に示す。なお,小数部のビット幅が4ビットの場合、途中から交差エントロピー誤差の値が発散したので、発散したエポック数の範囲以降では交差エントロピー誤差の値を記載していない。
【実施例】
【0039】
図6から求めた交差エントロピー誤差の最大値と小数部のビット幅との関係を図7に示す。図7から、小数部のビット幅が大きくなるほど、交差エントロピー誤差の値が大きくなって(最大値0に近づき)、結果が良くなる傾向を示すことが分かる。その結果、小数部のビット幅は少なくとも8に設定することが好ましいと考えられる。
【実施例】
【0040】
(実施例2)
固定小数点2進数のビット幅を超過して切り捨てられるビットを用いて形成する数値を乱数として用いることの妥当性について検討した。
SIDBAから選んだ3枚の学習画像(画像サイズは、縦32ピクセル×横32ピクセルの1024ピクセル)を用いて、RBM(可視層ノード数を1024、隠れ層ノード数を16、結合荷重と状態値の固定小数点2進数による整数部のビット幅を8ビット、小数部のビット幅を8ビットに設定)に、順方向学習と逆方向学習の2つの学習フェーズを5回繰り返しながらパラメタの更新を行う事前学習を行った。
【実施例】
【0041】
結合荷重と状態値の固定小数点2進数では、整数部と小数部がともに8ビットであるため、図8に示すように、結合荷重と状態値との積は、整数部と小数部がそれぞれ8ビットの値の乗算となるから、その結果は整数部16ビット、小数部16ビットとなる。続いて、状態値と重みの積の値をすべての可視ユニット数だけ加算する演算では、可視ノード数は1024個であるから,その加算後のビットの増分は10ビット(log 1024=log10)となるため、加算後の値のビット幅は、整数部26ビット、小数部16ビットとなる。ここで,増加したビット幅を、元の整数部8ビットと小数部8ビットに戻すためには、整数部26ビットの中で上位側の18ビットと、小数部16ビットの中で下位側の8ビットをそれぞれ切り捨てることになる。
【実施例】
【0042】
5回目の事前学習を行った時に切り捨てた小数部の下位側の8ビット分から形成される数値(10進数表示)のヒストグラムを図9(A)に、整数部の上位側の18ビット分から形成される数値(10進数表示)のヒストグラムを図9(B)に示す。なお,データ数はどちらも153600個である.
図9(A)に示すように、小数部の下位側の8ビット分から形成される数値は0が極めて多く出ていることが分かる。これは、最初の順方向学習では、学習データ入力時だけ可視ユニットの状態値が入力された学習画像のピクセル値である1又は0の二値のいずれかに固定されて、切り捨てビットとなる小数点9ビット以下の値が出現しないからである。また、図9(B)に示すように、整数部の上位側の18ビット分から形成される数値は最大値もしくは最小値のみ出現している。
【実施例】
【0043】
そこで、学習データ入力時のデータ(初期値)を省いて作成した小数部の下位側の8ビット分から形成される数値のヒストグラムを図10(A)に、整数部の上位側の18ビット分から形成される数値のヒストグラムを図10(B)に示す。図10(A)に示すように、小数部の切り捨てビットから形成される数値に関しては、各数値が略同等の頻度で出現しており、ある程度の白色性を有していることが確認できた。一方、整数部の切り捨てビットから形成される数値に関しては最小値又は最大値のみであった。
その結果、隠れユニット毎の状態値hを固定小数点2進数の演算で求める際に、固定小数点2進数のビット幅を超過して切り捨てられる小数部の下位側のビットから形成される数値を乱数として用いることが可能であることが確認できた。
【実施例】
【0044】
(実施例3)
学習を開始した最初のステップ、即ち、最初の順方向学習においては、各初期状態値vが隠れユニットにそれぞれ伝達されて決まる隠れユニット毎の発火確率P(h)から隠れユニット毎の発火又は非発火の状態を決定する際に用いる乱数hを、各初期状態値vが隠れユニットにそれぞれ伝達されて決まる隠れユニット毎の状態値hを固定小数点2進数による演算で求める際の非切り捨てビット中の小数部の全ビットを用いて形成する数値としている。
そこで、隠れユニット毎の状態値hを固定小数点2進数による演算で求める際の非切り捨てビット中の小数部の8ビット全てを用いて形成される数値を乱数として用いることの妥当性を検討するため、実施例2で使用したのと同一構成のRBMに、実施例1で用いた学習画像による1回の事前学習によりパラメタの初期値を求めた後、800回エポックの全体学習を行い、1エポック毎に交差エントロピー誤差を求めた。その結果を実施例3として図11に示す。
【実施例】
【0045】
図11には、比較例1として、実施例3と同一構成のRBMに、隠れユニットの発火又は非発火の状態を決定する際に使用する乱数を全てソフトウエア上の乱数生成器で求めながら、1回の事前学習によりパラメタの初期値を求めた後、800回エポックの全体学習を行い、1エポック毎に交差エントロピー誤差を求めた結果を示す。
更に、図11には、比較例2として、可視ユニットの初期状態値vが伝達された際の隠れユニットの発火又は非発火の状態を決定する際にだけに使用する乱数を、ソフトウエア上の乱数生成器で求めながら、1回の事前学習によりパラメタの初期値を求めた後、800回エポックの全体学習を行い、1エポック毎に交差エントロピー誤差を求めた結果を、比較例3として、隠れユニット毎の状態値hを固定小数点2進数による演算で求める際の非切り捨てビット中の小数部の下位側の4ビットを用いて形成される数値を乱数として用いながら、1回の事前学習によりパラメタの初期値を求めた後、800回エポックの全体学習を行い、1エポック毎に交差エントロピー誤差を求めた結果をそれぞれ示す。
【実施例】
【0046】
図11から、実施例3の交差エントロピー誤差の変化は、全ての乱数をソフトウェア上の乱数生成器で求めた比較例1の交差エントロピー誤差の変化と同等の結果を示している。これにより、最初の順方向学習において、隠れユニット毎の発火又は非発火の状態を決定する際に用いる乱数として、可視ユニットの初期状態値vが隠れユニット毎に伝達されて決まる隠れユニット毎の状態値hを固定小数点2進数による演算で求める際の非切り捨てビット中の小数部の8ビット全てを用いて形成される数値を用いることの妥当性が確認できた。
【実施例】
【0047】
以上、本発明を、実施の形態を参照して説明してきたが、本発明は何ら上記した実施の形態に記載した構成に限定されるものではなく、特許請求の範囲に記載されている事項の範囲内で考えられるその他の実施の形態や変形例も含むものである。
更に、本実施の形態とその他の実施の形態や変形例にそれぞれ含まれる構成要素を組合わせたものも、本発明に含まれる。
例えば、本実施の形態及び実施例では、固定小数点2進数のビット幅を超過して切り捨てられるビットを用いて形成する数値として、固定小数点2進数の小数部の下位側のビットから形成した数値を用いたが、固定小数点2進数の整数部の上位側ビットから形成した数値を用いることもできる。更に、固定小数点2進数の小数部の下位側のビットから形成される数値と整数部の上位側ビットから形成される数値を組合せて用いることもできる。
【符号の説明】
【0048】
10:主計算機、11:ハードウエアモジュール、12:ハードウェアとソフトウェアの複合システム、13:バス、14:演算回路部(hwネット)、15:データ記憶部、16:可視層、17:可視ユニット、18:隠れ層、19:隠れユニット、20:第1の演算回路部、21:第1のユニット状態演算器、22:ユニット初期状態演算器、23:第2の演算回路部、24:第2のユニット状態演算器
図面
【図1】
0
【図2】
1
【図3】
2
【図4】
3
【図5】
4
【図6】
5
【図7】
6
【図8】
7
【図9】
8
【図10】
9
【図11】
10