【新規性喪失の例外の表示】特許法第30条第2項適用 2016年2月16日九州工業大学大学において開催された修士論文発表会、2016年2月17日九州工業大学において開催された最優秀修士論文決勝大会、2016年5月16日東京大学において開催されたLSIとシステムのワークショップ2016で発表
(58)【調査した分野】(Int.Cl.,DB名)
請求項2記載の乱数生成器が不要なニューラルネットワークのハードウェア実装の方法において、前記固定小数点2進数のビット幅を超過して切り捨てられるビットは、小数部の下位側のビット又は固定小数点2進数の整数部の上位側ビットであることを特徴とする乱数生成器が不要なニューラルネットワークのハードウェア実装の方法。
請求項2又は3記載の乱数生成器が不要なニューラルネットワークのハードウェア実装の方法において、前記乱数hが前記発火確率P(h)以下では前記隠れユニットを発火状態とし、該乱数hが該発火確率P(h)を超えると該隠れユニットを非発火状態とし、前記乱数vが前記発火確率P(v)以下では前記可視ユニットを発火状態とし、該乱数vが該発火確率P(v)を超えると該可視ユニットを非発火状態とすることを特徴とする乱数生成器が不要なニューラルネットワークのハードウェア実装の方法。
請求項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のユニット状態演算器とを有していることを特徴とする乱数生成器が不要なニューラルネットワーク。
【発明を実施するための形態】
【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(i=1、2、・・・、n、状態値Aに相当)が、可視層16と結合する隠れ層18(処理層Aと隣り合う下流側の処理層Bに相当)を形成する複数(m個)の隠れユニット19(ユニットBに相当)にそれぞれ伝達されて決まる隠れユニット19毎の状態値h
j(j=1、2、・・・、m、状態値Bに相当)を固定小数点2進数による演算で求め、状態値h
jを変数とする発火確率関数fを用いて隠れユニット19毎の発火確率P
j(h
j)(発火確率P(B)に相当)を求めて発火又は非発火の状態を決定して出力する順方向学習を行う第1の演算回路部20を隠れユニット19毎に対応させて演算回路部(hwネット)14内に設ける(
図1(B)参照)。
【0016】
隠れユニット19の状態値h
jを固定小数点2進数による演算で求めるので、従来の浮動小数点2進数による演算の場合と比較して、必要な回路資源を削減することができる。
また、隠れユニット19の状態値h
jを求める第1の演算回路部20は隠れユニット19の個数だけ存在するので、順方向学習において、各隠れユニット19の状態値h
jを求める演算を同時にかつ高速で実行することが可能になる。そして、第1の演算回路部20に要する回路資源が削減され、演算に要する時間が短縮されるため、低消費電力の削減が可能になる。
【0017】
ここで、i番目の可視ユニット16が発火の状態であるとき状態値v
iを1とし、非発火の状態であるときの状態値v
iを0とする。
また、
図2(B)に示すように、j番目の隠れユニット19の状態値h
jは、各可視ユニット17の状態値v
i(i=1、2、・・・、n)がj番目の隠れユニット19に伝達される際の結合荷重(重み)w
ij(i=1、2、・・・、n、j=1、2、・・・、m)と、j番目の隠れユニット19のバイアス値b
j(j=1、2、・・・、m)を用いて、b
j+w
1jv
1+w
2jv
2+w
3jv
3+・・・+w
njv
n=b
j+Σ
iw
ijv
iとなる。
そして、例えば、発火確率関数fにシグモイド関数(ロジスティック関数)を用いると、j番目の隠れユニット19の発火確率P
j(h
j)は、P
j(h
j)=1/(1+exp(−h
j/T))となる(Tはパラメータ)。
なお、発火確率関数fには、シグモイド関数の代わりに、tanh関数又はRectifield線形関数を使用することもできる。
【0018】
図1(B)に示すように、第1の演算回路部20には、順方向学習において状態値h
j(j=1、2、・・・、m)を求める際に、固定小数点2進数のビット幅を超過するビット(整数部の上位側ビットと小数部の下位側ビット)は切り捨てられる。そこで、ユニット状態演算器として、切り捨てられるビットの中で、小数部の下位側ビットを用いて形成する数値を乱数hとして用いて(乱数の代わりに用いて)、隠れユニット19毎の発火確率P
j(h
j)から、j番目の隠れユニット19の発火又は非発火の状態を決定する第1のユニット状態演算器21が設けられている。乱数生成器を使用しないため、第1のユニット状態演算器21に要するハードウェア資源を削減することができ、より省資源にRBMをハードウェア実装することが可能になる。
【0019】
ここで、第1のユニット状態演算器21は、
図3に示すように、切り捨てた小数部の下位側ビットから形成する数値が発火確率P
j(h
j)以下の場合では、j番目の隠れユニット19は発火状態であると判定し、隠れユニット19から1を出力する。従って、j番目の隠れユニット19の状態値h
jは1となる。
一方、切り捨てた小数部の下位側ビットから形成する数値が発火確率P
j(h
j)を超える場合では、j番目の隠れユニット19は非発火状態であると判定し、隠れユニット19から0を出力する。従って、j番目の隠れユニット19の状態値h
jは0となる。
【0020】
第1の演算回路部20には、最初の順方向学習における可視ユニット17毎の初期状態値v
i0(i=1、2、・・・、n)を、可視ユニット17にそれぞれ学習値(2進数のため1又は0)を入力することにより求める機能を備えたユニット初期状態演算器22が設けられている。
【0021】
ここで、初期状態値v
i0は1又は0となるため、各初期状態値v
i0が隠れユニット19にそれぞれ伝達された際の隠れユニット19毎の状態値h
j0を求める際に切り捨てビットは発生しない。そこで、ユニット初期状態演算器22は、各初期状態値v
i0が隠れユニット19にそれぞれ伝達されて決まる隠れユニット19毎の発火確率P
j(h
j0)から隠れユニット19毎の発火又は非発火の状態を決定する際に用いる乱数h
0を、各初期状態値v
0が隠れユニット19にそれぞれ伝達されて決まる隠れユニット19毎の状態値h
0を固定小数点2進数による演算で求める際の非切り捨てビット中の小数部の全ビットを用いて形成する数値とする機能を更に備えている。
そして、乱数h
0が発火確率P
j(h
0)以下では隠れユニット19を発火状態とし、乱数h
0が発火確率P
j(h
0)を超えると隠れユニット19を非発火状態とする。
【0022】
また、制限付きボルツマンマシンのハードウェア実装の方法では、
図4(A)に示すように、順方向学習で決定された隠れユニット19毎の状態値h
j(j=1、2、・・・、m)が各可視ユニット17にそれぞれ伝達されて決まる可視ユニット17毎の状態値v
i(i=1、2、・・・、n)を固定小数点2進数による演算で求め、状態値v
iを変数とする発火確率関数fを用いて可視ユニット17毎の発火確率P
i(v
i)を求めて発火又は非発火の状態を決定する逆方向学習を行う第2の演算回路部23を可視ユニット17毎に対応させて演算回路部(hwネット)14内に設ける(
図1(B)参照)。
【0023】
なお、
図4(A)に示すように、逆方向学習では処理の方向が隠れ層18から可視層16に向かうため、隠れ層18が処理層Aに相当し、可視層16が処理層Aと隣り合う下流側の処理層Bに相当する。同様に、隠れユニット19がユニットAに、可視ユニット17がユニットBに相当する。また、発火確率P(v
i)が発火確率P(B)に相当する。
【0024】
可視ユニット17の状態値v
iを固定小数点2進数による演算で求めるので、従来の浮動小数点2進数による演算の場合と比較して、必要な回路資源を削減することができる。
また、可視ユニット17の状態値v
iを求める第2の演算回路部23は可視ユニット17の個数だけ存在するので、逆方向学習において、各可視ユニット17の状態値v
iを求める演算を同時にかつ高速で実行することが可能になる。そして、第2の演算回路部23に要する回路資源が削減され、演算に要する時間が短縮されるため、低消費電力の削減が可能になる。
【0025】
ここで、j番目の隠れユニット19が発火の状態であるとき状態値h
jを1とし、非発火の状態であるときは状態値h
jを0とする。
また、
図4(B)に示すように、i番目の可視ユニット17の状態値v
iは、各隠れユニット19の状態値h
j(j=1、2、・・・、m)がi番目の可視ユニット17に伝達される際の結合荷重(重み)w
ij(i=1、2、・・・、n、j=1、2、・・・、m)と、i番目の可視ユニット17のバイアス値a
i(i=1、2、・・・、n)を用いて、a
i+w
i1h
1+w
i2h
2+w
i3h
3+・・・+w
imh
m=a
i+Σ
jw
ijh
jとなる。
そして、発火確率関数fにシグモイド関数を用いると、i番目の可視ユニット17の発火確率P
i(v
j)は、P
i=1/(1+exp(−v
j/T))となる。
【0026】
図1(B)に示すように、第2の演算回路部23には、逆方向学習において状態値v
i(i=1、2、・・・、n)を求める際に、固定小数点2進数のビット幅を超過するビット(整数部の上位側ビットと小数部の下位側ビット)は切り捨てられる。そこで、ユニット状態演算器として、切り捨てられるビットの中で、小数部の下位側ビットを用いて形成する数値を乱数vとして用いて(乱数の代わりに用いて)、可視ユニット17毎の発火確率P
i(v
i)から、i番目の可視ユニット17の発火又は非発火の状態を決定する第2のユニット状態演算器24が設けられている。乱数生成器を使用しないため、第2のユニット状態演算器24に要するハードウェア資源を削減することができ、より省資源にRBMをハードウェア実装することが可能になる。
【0027】
ここで、第2のユニット状態演算器24には、
図3に示すように、切り捨てた小数部の下位側ビットから形成する数値が発火確率P
i(v
i)以下の場合では、i番目の可視ユニット17は発火状態であると判定し、可視ユニット17から1を出力する。従って、i番目の可視ユニット17の状態値v
iは1となる。
一方、切り捨てた小数部の下位側ビットから形成する数値が発火確率P
i(v
i)を超える場合では、i番目の可視ユニット17は非発火状態であると判定し、可視ユニット17から0を出力する。従って、i番目の可視ユニット17の状態値v
iは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
2 1024=log
2 2
10)となるため、加算後の値のビット幅は、整数部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
0が隠れユニットにそれぞれ伝達されて決まる隠れユニット毎の発火確率P(h
0)から隠れユニット毎の発火又は非発火の状態を決定する際に用いる乱数h
0を、各初期状態値v
0が隠れユニットにそれぞれ伝達されて決まる隠れユニット毎の状態値h
0を固定小数点2進数による演算で求める際の非切り捨てビット中の小数部の全ビットを用いて形成する数値としている。
そこで、隠れユニット毎の状態値h
0を固定小数点2進数による演算で求める際の非切り捨てビット中の小数部の8ビット全てを用いて形成される数値を乱数として用いることの妥当性を検討するため、実施例2で使用したのと同一構成のRBMに、実施例1で用いた学習画像による1回の事前学習によりパラ
メータの初期値を求めた後、800回エポックの全体学習を行い、1エポック毎に交差エントロピー誤差を求めた。その結果を実施例3として
図11に示す。
【0045】
図11には、比較例1として、実施例3と同一構成のRBMに、隠れユニットの発火又は非発火の状態を決定する際に使用する乱数を全てソフト
ウェア上の乱数生成器で求めながら、1回の事前学習によりパラ
メータの初期値を求めた後、800回エポックの全体学習を行い、1エポック毎に交差エントロピー誤差を求めた結果を示す。
更に、
図11には、比較例2として、可視ユニットの初期状態値v
0が伝達された際の隠れユニットの発火又は非発火の状態を決定する際にだけに使用する乱数を、ソフト
ウェア上の乱数生成器で求めながら、1回の事前学習によりパラ
メータの初期値を求めた後、800回エポックの全体学習を行い、1エポック毎に交差エントロピー誤差を求めた結果を、比較例3として、隠れユニット毎の状態値h
0を固定小数点2進数による演算で求める際の非切り捨てビット中の小数部の下位側の4ビットを用いて形成される数値を乱数として用いながら、1回の事前学習によりパラ
メータの初期値を求めた後、800回エポックの全体学習を行い、1エポック毎に交差エントロピー誤差を求めた結果をそれぞれ示す。
【0046】
図11から、実施例3の交差エントロピー誤差の変化は、全ての乱数をソフトウェア上の乱数生成器で求めた比較例1の交差エントロピー誤差の変化と同等の結果を示している。これにより、最初の順方向学習において、隠れユニット毎の発火又は非発火の状態を決定する際に用いる乱数として、可視ユニットの初期状態値v
0が隠れユニット毎に伝達されて決まる隠れユニット毎の状態値h
0を固定小数点2進数による演算で求める際の非切り捨てビット中の小数部の8ビット全てを用いて形成される数値を用いることの妥当性が確認できた。
【0047】
以上、本発明を、実施の形態を参照して説明してきたが、本発明は何ら上記した実施の形態に記載した構成に限定されるものではなく、特許請求の範囲に記載されている事項の範囲内で考えられるその他の実施の形態や変形例も含むものである。
更に、本実施の形態とその他の実施の形態や変形例にそれぞれ含まれる構成要素を組合わせたものも、本発明に含まれる。
例えば、本実施の形態及び実施例では、固定小数点2進数のビット幅を超過して切り捨てられるビットを用いて形成する数値として、固定小数点2進数の小数部の下位側のビットから形成した数値を用いたが、固定小数点2進数の整数部の上位側ビットから形成した数値を用いることもできる。更に、固定小数点2進数の小数部の下位側のビットから形成される数値と整数部の上位側ビットから形成される数値を組合せて用いることもできる。