IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ TDK株式会社の特許一覧

特許7548710ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法
<>
  • 特許-ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法 図1
  • 特許-ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法 図2
  • 特許-ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法 図3
  • 特許-ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法 図4
  • 特許-ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法 図5
  • 特許-ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法 図6
  • 特許-ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法 図7
  • 特許-ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法 図8
  • 特許-ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法 図9
  • 特許-ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法 図10
  • 特許-ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法 図11
  • 特許-ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法 図12
  • 特許-ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法 図13
  • 特許-ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-02
(45)【発行日】2024-09-11
(54)【発明の名称】ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法
(51)【国際特許分類】
   G06N 3/063 20230101AFI20240903BHJP
   G06F 17/16 20060101ALI20240903BHJP
【FI】
G06N3/063
G06F17/16 M
【請求項の数】 11
(21)【出願番号】P 2020036080
(22)【出願日】2020-03-03
(65)【公開番号】P2021060955
(43)【公開日】2021-04-15
【審査請求日】2023-03-01
(31)【優先権主張番号】 JP2019/013327
(32)【優先日】2019-03-27
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000003067
【氏名又は名称】TDK株式会社
(74)【代理人】
【識別番号】100106909
【弁理士】
【氏名又は名称】棚井 澄雄
(74)【代理人】
【識別番号】100163496
【弁理士】
【氏名又は名称】荒 則彦
(74)【代理人】
【識別番号】100188558
【弁理士】
【氏名又は名称】飯田 雅人
(74)【代理人】
【識別番号】100169694
【弁理士】
【氏名又は名称】荻野 彰広
(72)【発明者】
【氏名】須田 慶太
【審査官】北川 純次
(56)【参考文献】
【文献】特開平05-307624(JP,A)
【文献】特開平11-185033(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/02-3/10
G06F 17/16
(57)【特許請求の範囲】
【請求項1】
1以上の第1積和演算器と、
前記1以上の第1積和演算器に接続された1以上のレジスタと、
前記1以上のレジスタに接続された1以上の第2積和演算器と、を備え、
前記第1積和演算器は、
複数の第1入力変数を格納した第1メモリと、
複数の第1重みデータを格納した第2メモリと、
前記第1入力変数と前記第1重みデータとの積の複数を演算する1以上の第1乗算器と、
前記1以上の第1乗算器で乗算された前記積の複数の和を演算する1以上の第1加算器と、
前記1以上の第1加算器で加算された前記和の複数を、複数の第2入力変数として前記レジスタに出力する1以上の第1出力部と、を有し、
前記第2積和演算器は、
複数の第2重みデータを格納した第3メモリと、
前記第2重みデータと前記レジスタに保持された前記第2入力変数との積の複数を演算する1以上の第2乗算器と、
前記1以上の第2乗算器で乗算された前記積の複数の和を演算する1以上の第2加算器と、
前記1以上の第2加算器で加算された前記和の複数を、複数の出力値として出力する1以上の第2出力部と、を有し
前記第2積和演算器で実行される演算処理の少なくとも一部を、前記第1積和演算器で実行される演算処理と並列に実行し、
前記第1積和演算器10で実行される演算処理P1を構成する演算数が(n+1)(nは0以上の整数)であり、前記第2積和演算器で実行される演算処理P2を構成する演算数が(q+1)(qは0以上の整数)である場合、
前記第1積和演算器で実行される前記演算処理P1の並列数L1は、演算数(n+1)の約数であり、前記第2積和演算器で実行される前記演算処理P2の並列数L2は、演算数(q+1)の約数である、
ニューラルネットワーク演算処理装置。
【請求項2】
前記演算処理P1を構成するパイプライン数C1及び前記演算処理P2を構成するパイプライン数C2の双方が、前記演算数(n+1)と前記演算数(q+1)の公約数である、請求項に記載のニューラルネットワーク演算処理装置。
【請求項3】
前記演算処理P1を構成するパイプライン数C1及び前記演算処理P2を構成するパイプライン数C2の双方が、前記演算数(n+1)と前記演算数(q+1)の最大公約数である、請求項に記載のニューラルネットワーク演算処理装置。
【請求項4】
前記第2積和演算器で実行される演算処理が終了するタイミングが、前記第1積和演算器の演算処理が終了するタイミングと同じである、請求項のいずれか1項に記載のニューラルネットワーク演算処理装置。
【請求項5】
前記第2メモリ及び前記第3メモリの各々が、リングバッファメモリである、請求項1に記載のニューラルネットワーク演算処理装置。
【請求項6】
前記第1積和演算器と前記レジスタとの間と、前記レジスタと前記第2積和演算器との間の少なくとも一方に、活性化関数を用いて演算する1以上の活性化関数演算処理部を更に備える、請求項1に記載のニューラルネットワーク演算処理装置。
【請求項7】
前記1以上の第1乗算器は、複数の第1乗算器であり、
前記1以上の第1加算器は、複数の第1加算器である、請求項のいずれか1項に記載のニューラルネットワーク演算処理装置。
【請求項8】
前記1以上の第2積和演算器は、複数の前記第2積和演算器であり、
前記複数の前記第2積和演算器が、前記1以上の第1積和演算器と並列に動作する、請求項のいずれか1項に記載のニューラルネットワーク演算処理装置。
【請求項9】
前記1以上の第1積和演算器は、複数の前記第1積和演算器であり、
前記複数の前記第1積和演算器が、前記1以上の第2積和演算器と並列に動作する、請求項のいずれか1項に記載のニューラルネットワーク演算処理装置。
【請求項10】
前記1以上の第1積和演算器は、複数の前記第1積和演算器であり、
前記1以上の第2積和演算器は、複数の前記第2積和演算器であり、
前記複数の前記第1積和演算器が、前記複数の第2積和演算器と並列に動作する、請求項のいずれか1項に記載のニューラルネットワーク演算処理装置。
【請求項11】
第1入力変数と第1重みデータとの積の複数を演算すると共に、前記積の複数の和を演算する第1演算工程と、
前記第1演算工程で演算された前記和の複数を、複数の第2入力変数として保持する保持工程と、
第2重みデータと前記第2入力変数との積の複数を演算すると共に、前記積の複数の和を演算する第2演算工程と、
前記第2演算工程で演算された前記和の複数を、複数の出力値として出力する第2出力工程と、を有し、
前記第2演算工程で実行される演算処理の少なくとも一部を、前記第1演算工程で実行される演算処理と並列して実行し、
前記第1演算工程で実行される演算処理P1を構成する演算数が(n+1)(nは0以上の整数)であり、前記第2演算工程で実行される演算処理P2を構成する演算数が(q+1)(qは0以上の整数)である場合、
前記第1演算工程で実行される前記演算処理P1の並列数L1は、演算数(n+1)の約数であり、前記第2演算工程で実行される前記演算処理P2の並列数L2は、演算数(q+1)の約数である、ニューラルネットワーク演算処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法に関し、特に、ニューラルネットワークの積和演算をデジタルで行うニューラルネットワーク演算処理装置に関する。
【背景技術】
【0002】
ニューラルネットワークは、金融、マーケティング、認証、セキュリティなどの広い分野で、深層学習をはじめ、高度な情報の識別技術、分類技術に実用化されている。上記のような技術では、高機能化等に伴い、膨大な量の積和演算が必要であることから、積和演算の高速化、効率化が重要となっている。
【0003】
ニューラルネットワークは、一般的にニューラルネットの層数が多くなるほど高性能になる。しかし、層数が多くなると、回路規模が増大するほか、演算量も増大し、多くの演算時間が必要になる。よって、演算機能の向上と性能の双方を考慮しながらデバイスを構成する必要がある。
【0004】
従来、乗算器、加算器、メモリ、レジスタなどの相互の結合の切り換えをセレクタによって実行し、かつ複数のプロセッサエレメント(PE)を2次元的に配列してその各列と各行にメモリと加算器を付加した行列演算装置と、該行列演算装置とは並列に動作可能であり、行列計算以外の計算を行う補助演算装置とを備えたニューロプロセッサが提案されている(特許文献1)。本構成では、各プロセッサエレメントに割り当てられた行列計算を効率良く柔軟に行うことができ、また、行列計算以外の計算を別に備えた補助演算装置によって並列に行うことにより、膨大な演算を高速に処理できるとされている。
【先行技術文献】
【特許文献】
【0005】
【文献】特開平05-346914号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上記のような技術では、一つの層内では演算処理を並列化することで高速な演算が可能であるものの、演算機能を次段でも適用すると、ニューラルネットワーク全体としては非効率であり、積和演算の高速化、効率化が十分とは言えない。
【0007】
一般に、積和演算の高速化、効率化を実現するための方法として、一つの層内で演算処理を並列化したり、パイプライン化する方法がある。また、層数が何層になるかはどのようなものを処理対象とするかに因って変化するため、汎用性等の観点から、演算機能は1層で完結し、当該演算機能を次段でも適用する方法が多い。
【0008】
例えば、簡易的な演算処理として、2つの変数の読み出し、該2つの変数の和算、及び和算の値のメモリへの書き込みの一連の動作を、3回繰り返して行うことを想定する。通常の演算の場合、関数の入力が3クロック毎に読み出され、和算の値がその2サイクル後に出力されるため、演算処理全体に掛かる時間は、3クロック×3(回)=9クロックとなる。
【0009】
この演算処理を並列化した場合、9クロックより短い3クロックで演算処理を完了することができるが、複数のデータを同時に読み出し及び書き込みできる回路としなければならず、また、並列化した数と同じ数の演算器が必要になるため、回路規模が増大する。
【0010】
また、上記演算処理をパイプライン化した場合、層間のレジスタを用いて3クロック遅れたタイミングで順次上記一連の動作を行うため、9クロックよりも短い時間で演算処理を完了することができ、また、1つの演算器で実行できるので回路規模の増大を抑制できる。しかし、更なる高速化を実現するためには時間的な綿密な設計が必要となり、煩雑である。また、実際のニューラルネットワークの演算では、膨大な演算を行うため、並列化やパイプライン化を効率よく組み合わせ、回路規模を抑えつつ、高速な演算を実現するように回路を設計する必要があるが、層内での効率化だけに留まっており、十分とは言えない。
【0011】
本発明の目的は、積和演算の更なる高速化、効率化を実現することができ、且つ回路規模の増大を抑制し、更には簡便な設計で積和演算を行うことができるニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法を提供することにある。
【課題を解決するための手段】
【0012】
上記目的を達成するために、本発明は以下の手段を提供する。
【0013】
[1]1以上の第1積和演算器と、
前記1以上の第1積和演算器に接続された1以上のレジスタと、
前記1以上のレジスタに接続された1以上の第2積和演算器と、を備え、
前記第1積和演算器は、
複数の第1入力変数を格納した第1メモリと、
複数の第1重みデータを格納した第2メモリと、
前記第1入力変数と前記第1重みデータとの積の複数を演算する1以上の第1乗算器と、
前記1以上の第1乗算器で乗算された前記積の複数の和を演算する1以上の第1加算器と、
前記1以上の第1加算器で加算された前記和の複数を、複数の第2入力変数として前記レジスタに出力する1以上の第1出力部と、を有し、
前記第2積和演算器は、
複数の第2重みデータを格納した第3メモリと、
前記第2重みデータと前記レジスタに保持された前記第2入力変数との積の複数を演算する1以上の第2乗算器と、
前記1以上の第2乗算器で乗算された前記積の複数の和を演算する1以上の第2加算器と、
前記1以上の第2加算器で加算された前記和の複数を、複数の出力値として出力する1以上の第2出力部と、を有する、
ニューラルネットワーク演算処理装置。
【0014】
[2]前記第2積和演算器で実行される演算処理の少なくとも一部を、前記第1積和演算器で実行される演算処理と並列に実行する、上記[1]に記載のニューラルネットワーク演算処理装置。
【0015】
[3]前記第1積和演算器10で実行される演算処理P1を構成する演算数が(n+1)(nは0以上の整数)であり、前記第2積和演算器で実行される演算処理P2を構成する演算数が(q+1)(qは0以上の整数)である場合、
前記第1積和演算器で実行される前記演算処理P1の並列数L1は、演算数(n+1)の約数であり、前記第2積和演算器で実行される前記演算処理P2の並列数L2は、演算数(q+1)の約数である、上記[2]に記載のニューラルネットワーク演算処理装置。
【0016】
[4]前記演算処理P1を構成するパイプライン数C1及び前記演算処理P2を構成するパイプライン数C2の双方が、前記演算数(n+1)と前記演算数(q+1)の公約数である、上記[3]に記載のニューラルネットワーク演算処理装置。
【0017】
[5]前記演算処理P1を構成するパイプライン数C1及び前記演算処理P2を構成するパイプライン数C2の双方が、前記演算数(n+1)と前記演算数(q+1)の最大公約数である、上記[4]に記載のニューラルネットワーク演算処理装置。
【0018】
[6]前記第2積和演算器で実行される演算処理が終了するタイミングが、前記第1積和演算器の演算処理が終了するタイミングと同じである、上記[3]~[5]のいずれかに記載のニューラルネットワーク演算処理装置。
【0019】
[7]前記第2メモリ及び前記第3メモリの各々が、リングバッファメモリである、上記[1]に記載のニューラルネットワーク演算処理装置。
【0020】
[8]前記第1積和演算器と前記レジスタとの間と、前記レジスタと前記第2積和演算器との間の少なくとも一方に、活性化関数を用いて演算する1以上の活性化関数演算処理部を更に備える、上記[1]に記載のニューラルネットワーク演算処理装置。
【0021】
[9]前記1以上の第1乗算器は、複数の第1乗算器であり、
前記1以上の第1加算器は、複数の第1加算器である、上記[2]~[8]のいずれかに記載のニューラルネットワーク演算処理装置。
【0022】
[10]前記1以上の第2積和演算器は、複数の前記第2積和演算器であり、
前記複数の前記第2積和演算器が、前記1以上の第1積和演算器と並列に動作する、上記[2]~[9]のいずれかに記載のニューラルネットワーク演算処理装置。
【0023】
[11]前記1以上の第1積和演算器は、複数の前記第1積和演算器であり、
前記複数の前記第1積和演算器が、前記1以上の第2積和演算器と並列に動作する、上記[2]~[9]のいずれかに記載のニューラルネットワーク演算処理装置。
【0024】
[12]前記1以上の第1積和演算器は、複数の前記第1積和演算器であり、
前記1以上の第2積和演算器は、複数の前記第2積和演算器であり、
前記複数の前記第1積和演算器が、前記複数の第2積和演算器と並列に動作する、上記[2]~[9]のいずれかに記載のニューラルネットワーク演算処理装置。
【0025】
[13]第1入力変数と第1重みデータとの積の複数を演算すると共に、前記積の複数の和を演算する第1演算工程と、
前記第1演算工程で演算された前記和の複数を、複数の第2入力変数として保持する保持工程と、
第2重みデータと前記第2入力変数との積の複数を演算すると共に、前記積の複数の和を演算する第2演算工程と、
前記第2演算工程で演算された前記和の複数を、複数の出力値として出力する第2出力工程と、を有し、
前記第2演算工程で実行される演算処理の少なくとも一部を、前記第1演算工程で実行される演算処理と並列して実行する、ニューラルネットワーク演算処理方法。
【発明の効果】
【0026】
本発明によれば、積和演算の更なる高速化、効率化を実現することができ、且つ回路規模の増大を抑制し、更には簡便な設計で積和演算を行うことができるニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法を提供することができる。
【図面の簡単な説明】
【0027】
図1図1は、本発明の実施形態に係るニューラルネットワーク演算処理装置の構成の一例を概略的に示す模式図である。
図2図2(a)は、図1のニューラルネットワーク演算処理装置が適用されるニューラルネットワークの構成の一例を示す模式図であり、図2(b)は、図2(a)の第1積和演算器の演算を示す図、図2(c)は、図2(a)の第2積和演算器の演算を示す図である。
図3図3(a)は、図2のニューラルネットワークにおける第一段階での信号のフローを示す図であり、図3(b)は、図3(a)のフローにおける第1積和演算器の演算を示す図、図3(c)は、図3(a)のフローにおける第2積和演算器の演算を示す図である。
図4図4(a)は、図2のニューラルネットワークにおける第二段階での信号のフローを示す図であり、図4(b)は、図4(a)のフローにおける第1積和演算器の演算を示す図、図4(c)は、図4(a)のフローにおける第2積和演算器の演算を示す図である。
図5図5(a)は、図2のニューラルネットワークにおける第三段階での信号のフローを示す図であり、図3(b)は、図3(a)のフローにおける第1積和演算器の演算を示す図、図3(c)は、図3(a)のフローにおける第2積和演算器の演算を示す図である。
図6図6(a)は、図2のニューラルネットワークにおける第四段階での信号のフローを示す図であり、図6(b)は、図6(a)のフローにおける第1積和演算器の演算を示す図、図6(c)は、図6(a)のフローにおける第2積和演算器の演算を示す図である。
図7図7(a)は、図2のニューラルネットワークにおける第五段階での信号のフローを示す図であり、図7(b)は、図7(a)のフローにおける第1積和演算器の演算を示す図、図7(c)は、図7(a)のフローにおける第2積和演算器の演算を示す図である。
図8図8は、図2における第1積和演算器で実行される演算処理と、第2積和演算器で実行される演算処理のタイムチャートの一例を示す図である。
図9図9は、図2における第1積和演算器で実行される演算処理の並列数及びパイプライン数と、第2積和演算器で実行される演算処理の並列数及びパイプライン数の一例を示す模式図であり、図9(b)は、図9(a)における第1積和演算器の演算処理と、第2積和演算器の演算処理のタイムチャートの変形例を示す図である。
図10図10は、図1のニューラルネットワーク演算処理装置の構成の変形例を概略的に示す模式図である。
図11図11は、図10のニューラルネットワーク演算処理装置で実行されるニューラルネットワーク演算処理方法の一例を示すフローチャートである。
図12図12は、図1のニューラルネットワーク演算処理装置の構成の他の変形例を概略的に示す模式図である。
図13図13は、図10における第1積和演算器及び第2積和演算器の構成の変形例を概略的に示す模式図である。
図14図14は、図10のニューラルネットワーク演算処理装置の構成の変形例を概略的に示す模式図である。
【発明を実施するための形態】
【0028】
以下、本発明の実施形態について、図面を参照して詳細に説明する。
【0029】
[ニューラルネットワーク演算処理装置の構成]
図1は、本発明の実施形態に係るニューラルネットワーク演算処理装置の構成の一例を概略的に示す模式図である。
図1に示すように、ニューラルネットワーク演算処理装置1は、第1積和演算器10と、第1積和演算器10に接続されたレジスタ20と、レジスタ20に接続された第2積和演算器30とを備える。
【0030】
第1積和演算器10は、複数の第1入力変数を格納した第1メモリ11と、複数の第1重みデータを格納した第2メモリ12と、上記第1入力変数と上記第1重みデータとの積の複数を演算する第1乗算器13と、第1乗算器13で乗算された積の複数の和を演算する第1加算器14と、第1加算器14で加算された上記和の複数を、複数の第2入力変数としてレジスタ20に出力する第1出力部15とを有する。本実施形態では、第1積和演算器10は、デジタル積和演算回路を構成している。
【0031】
第1メモリ11は、複数の第1入力変数x,x,x,…x(nは0以上の整数)を格納しており、第1積和演算器10によって複数の第1入力変数x,x,x,…xが読み出される。第1メモリ11は、例えば、複数の第1入力変数x,x,x,…xを(n+1)行1列の行列A(n次元の列ベクトル)として格納している。第1メモリ11は、リングバッファメモリで構成されてもよい。第1入力変数を格納するメモリはランダムアクセス性を要しないため、第1メモリ11をリングバッファメモリで構成することで、第1積和演算器10を簡便な構成とすることができる。また、第1メモリ11は、第1入力変数以外の他のデータを書き込んで格納するように構成することができる。
【0032】
第2メモリ12は、複数の第1重みデータω00,ω01,ω02,…ωmn(mは0以上の整数)を格納しており、第1積和演算器10によって複数の第1重みデータω00,ω01,ω02,…ωmnが読み出される。第2メモリ12は、例えば複数の第1重みデータを(m+1)行(n+1)列の行列Bとして格納している。また、第2メモリ12は、第1重みデータ以外の他のデータを書き込んで格納するように構成することができる。
【0033】
第2メモリ12は、リングバッファメモリで構成されてもよい。第1重みデータを格納するメモリはランダムアクセス性を要しないため、第2メモリ12をリングバッファメモリで構成することで、第1積和演算器10を簡便な構成とすることができる。
【0034】
本実施形態では、第1積和演算器10は、第1メモリ11及び第2メモリ12を備えているが、これに限られず、第1メモリ11及び第2メモリ12に代えて、上記複数の第1入力変数及び上記複数の第1重みデータを格納する一のメモリを備えてもよい。一のメモリを共有化することで、回路規模の増大を抑制できる。
【0035】
第1乗算器13は、第1入力変数x,x,x,…xのうちのxと、第1重みデータω00,ω01,ω02,…ωmnのうちのωjkを入力として、これらの積ωjkを出力する。第1乗算器13は、デジタル乗算器で構成されている。
【0036】
第1加算器14は、第1乗算器13で乗算された積ωjkの複数を入力として、複数の積ωjkの和Σωjkを第2入力変数i,i,i,…i(mは0以上の整数)として出力する。第1加算器14は、デジタル加算器で構成されている。
【0037】
上記第1乗算器13及び第1加算器14の演算は、例えば(m+1)行(n+1)列の行列Bと、(n+1)行1列の行列Aとの積BAで表すことができる。この場合、第1加算器14から出力される複数の第2入力変数i,i,i,…iは、(m+1)行1列の行列Cとして表される。
【0038】
レジスタ20は、第1積和演算器10の第1出力部15から出力された上記和の複数を、複数の第2入力変数として保持する。また、レジスタ20は、上記複数の第2入力変数を、第2積和演算器30に出力する。
【0039】
第2積和演算器30は、レジスタ20から出力された上記複数の第2入力変数が入力される入力部31と、複数の第2重みデータを格納した第3メモリ32と、第2重みデータとレジスタ20に保持された上記第2入力変数との積の複数を演算する第2乗算器33-1,33-2と、第2乗算器33-1,33-2でそれぞれ乗算された積の複数の和を演算する第2加算器34-1,34-2と、第2加算器34-1,34-2でそれぞれ加算された前記和の複数を、複数の出力値として出力する第2出力部35-1,35-2とを有する。本実施形態では、第2積和演算器30は、第1積和演算器10と同様、デジタル積和演算回路を構成している。
【0040】
第3メモリ32は、複数の第2重みデータw00,w01,w02,…wpq(p、qは共に0以上の整数)を格納しており、第2積和演算器30によって複数の第2重みデータw00,w01,w02,…wpqが読み出される。第3メモリ32は、例えば複数の第2重みデータを(p+1)行(q+1)列の行列Dとして格納している。一例としては、p=m-1、q+1=m+1、すなわちq=mとして、複数の第2重みデータが(p+1)行(m+1)列の行列Dとして格納される。
【0041】
第3メモリ32は、リングバッファメモリで構成されてもよい。第2重みデータを格納するメモリはランダムアクセス性を要しないため、第3メモリ32をリングバッファメモリで構成することで、第2積和演算器30を簡便な構成とすることができる。
【0042】
第2乗算器33-1は、複数の第2入力変数i,i,i,…iのうちのiと、第2重みデータw00,w01,w02,…wpqのうちのwjkを入力として、これらの積wjkを出力する。第2乗算器33-1は、デジタル乗算器で構成されている。第2乗算器33-2も、第2乗算器33-1と同様の構成であるので、その説明を省略する。本実施形態では、第2積和演算器30は、2つの第2乗算器33-1,33-2を有しているが、これに限られず、一の第2乗算器を有していてもよい。
【0043】
第2加算器34-1は、第2乗算器33-1で乗算された積wjkの複数を入力として、複数の積wjkの和Σwjkを複数の出力値y,y,y,…yとして出力する。一例としては、p=m-1、q=mとして、複数の積wjkの和Σwjkが複数の出力値y,y,y,…ym-1(mは0以上の整数)として出力される。第2加算器34-1は、デジタル加算器で構成されている。第2加算器34-2も、第2加算器34-1と同様の構成であるので、その説明を省略する。本実施形態では、第2積和演算器30は、2つの第2加算器34-1,34-2を有しているが、これに限られず、一の第2加算器を有していてもよい。
【0044】
第2出力部35-1は、複数の出力値y,y,y,…yを外部に出力する。第2出力部35-2は、第2出力部35-1と同様の構成であるので、その説明を省略する。本実施形態では、第2積和演算器30は、2つの第2出力部35-1,35-2を有しているが、これに限られず、一の第2出力部を有していてもよい。
【0045】
第2乗算器33-1,33-2及び第2加算器34-1,34-2の演算は、例えば(p+1)行(q+1)列の行列Dと、(m+1)行1列の行列Cとの積DCで表すことができる。一例としては、p+1=m、q+1=m+1として、m行(m+1)列の行列Dと、(m+1)行1列の行列Cとの積DCで表され、この場合、第2加算器34-1,34-2から出力される複数の出力値y,y,y,…ym-1は、m行1列の行列Eとして表される。
【0046】
本実施形態では、第2積和演算器30は、2つの第2乗算器33-1,33-2、第2加算器34-1,34-2及び2つの第2出力部35-1,35-2を有しているが、これに限られず、一の第2乗算器、一の第2加算器及び一の第2出力部を有していてもよい。
【0047】
図2(a)は、図1のニューラルネットワーク演算処理装置1が適用されるニューラルネットワーク40の構成の一例を示す模式図である。
図2に示すように、ニューラルネットワーク40は、入力層41と、隠れ層42(中間層ともいう)と、出力層43と、入力層41と隠れ層42との間の演算を行う第1積和演算器10と、隠れ層42と出力層43との間の演算を行なう第2積和演算器30とを備えている。
【0048】
入力層41は、例えば5つのノード41A,41B,41C,41D,41Eを備えている。入力層41の5つのノード41A,41B,41C,41D,41Eに、それぞれ5個の第1入力変数x,x,x,x,xが与えられる。
【0049】
隠れ層42は、例えば4つのノード42A,42B,42C,42Dを備えている。図2の例では、隠れ層42の4つのノード42A,42B,42C,42Dに、それぞれ4個の第2入力変数i,i,i,iが与えられる。4個の第2入力変数i,i,i,iは、図2(b)に示すように、4行1列の行列Cで表され、20個の第1重みデータω00~ω34を表す4行5列の行列Bと、5個の第1入力変数x~xを表す5行1列の行列Aとの積BAによって算出される。本実施形態では、隠れ層42は単層で構成されるが、これに限られず、複数層で構成されてもよい。
【0050】
出力層43は、例えば3つのノード43A,43B,43Cを備えている。
図2の例では、出力層43の3つのノード43A,43B,43Cに、それぞれ3個の出力値y,y,yが与えられる。3個の出力値y,y,yは、図2(c)に示すように、3行1列の行列Eで表され、12個の第2重みデータw00~w23を表す3行4列の行列Dと、4個の第2入力変数i~iを表す4行1列の行列Cとの積DCによって算出される。
【0051】
図2のニューラルネットワーク40において、第2積和演算器30は、第2乗算器33-1,33-2及び第2加算器34-1,34-2で実行される演算処理の少なくとも一部を、第1積和演算器10の第1乗算器13及び第1加算器14で実行される演算処理と並列に実行する。
【0052】
具体的には、先ず、図3(a)及び図3(b)に示すように、第1積和演算器10が、隠れ層42において5個の第1重みデータω00~ω04と5個の第1入力変数x~xから第2入力変数iを算出する。
次に、図4(a)及び図4(b)に示すように、第1積和演算器10が隠れ層42において5個の第1重みデータω10~ω14と5個の第1入力変数x~xから第2入力変数iを算出すると共に、図4(c)に示すように、第2積和演算器30が、4個の第2重みデータw00,w10,w20と第2入力変数iから、これらの積w000、10、w20を算出する。
【0053】
次いで、図5(a)及び図5(b)に示すように、第1積和演算器10が隠れ層42において5個の第1重みデータω20~ω24と5個の第1入力変数x~xから第2入力変数iを算出すると共に、図5(c)に示すように、第2積和演算器30が、4個の第2重みデータw01,w11,w21と第2入力変数iから、これらの積w011、11、w21を算出する。
【0054】
同様にして、図6(a)及び図6(b)に示すように、第1積和演算器10が隠れ層42において5個の第1重みデータω30~ω34と5個の第1入力変数x~xから第2入力変数iを算出すると共に、図6(c)に示すように、第2積和演算器30が、4個の第2重みデータw02,w12,w22と第2入力変数iから、これらの積w022、12、w22を算出する。
【0055】
そして、図7(a)及び図7(b)に示すように、第2積和演算器30は、4個の第2重みデータw03,w13,w23と第2入力変数iから、これらの積w033、13、w23を算出する。これにより、3個の出力値y,y,yが得られる。このように第1積和演算器10の演算処理と、第2積和演算器30の演算処理とが同時期に進行することで、第1積和演算器10における第2入力変数i~iの演算処理が開始してから出力値y~yが得られるまでの時間が短縮される。特に、第1積和演算器10において第2入力変数i~iの演算処理が終了した後に第2積和演算器30において出力値y~yの演算処理を実行する場合と比較して、演算処理に掛かる時間が大幅に短縮される。
【0056】
図8は、図2における第1積和演算器10で実行される演算処理と、第2積和演算器30で実行される演算処理のタイムチャートの一例を示す図である。
図8において、第1積和演算器10で実行される演算処理を、第一段階から第(m+1)段階に分け、各段階で複数の演算処理P1A(1)、P1A(2),…P1A(n+1)(nは0以上の整数)が実行される場合を想定する。また、第2積和演算器30で実行される演算処理を第一段階から第(p+1)段階に分け、各段階で複数の演算処理P2A(1)、P2A(2),…P2A(q+1)(qは0以上の整数)が実行されることを想定する。このとき、第2積和演算器30で実行される演算処理P2A(1)は、第1積和演算器10で実行される演算処理P1A(2)の処理時間T1A(2)と並列して実行される。また、第2積和演算器30で実行される演算処理P2A(2)は、第1積和演算器10で実行される演算処理P1A(3)と並列して実行される。以後同様にして、第2積和演算器30で実行される演算処理P2A(i)は、第1積和演算器10で実行される演算処理P1A(i+1)と並行して実行される。
【0057】
本実施形態では、第2積和演算器30で実行される演算処理P2A(i)は、第1積和演算器10で実行される演算処理P1A(i+1)と同時に開始される。また、第2積和演算器30で実行される演算処理P2Aに掛かる時間T2A(i)が、第1積和演算器10で実行される演算処理P1Aに掛かる時間T1A(i+1)よりも短い。よって、第2積和演算器30で実行される演算処理P2A(i)は、第1積和演算器10で実行される演算処理P1A(i+1)が終了する前に終了する。
【0058】
また、本実施形態では、第2積和演算器30で実行される演算処理P2A(i)の処理時間T2A(i)の全体が、第1積和演算器10で実行される演算処理P1A(i+1)の処理時間T1A(i+1)の一部と重複する。これにより、第1積和演算器10における演算処理P1A(1),P1A(2),…P1A(n+1)の全てが終了した後に第2積和演算器30における演算処理P2A(1),P2A(2),…P2A(q+1)を実行する場合と比較して、演算処理P2A(1),P2A(2),…P2A(q+1)に掛かる総処理時間の総和ΣT2A(i)の分、処理時間が短縮される。
【0059】
第2積和演算器30で実行される演算処理P2A(i)は、第1積和演算器10で実行される演算処理P1A(i+1)の少なくとも一部と重複していればよい。また、第2積和演算器30で実行される演算処理P2A(i)は、第1積和演算器10で実行される演算処理P1A(i+1)と同時に開始されなくてもよく、演算処理P1A(i+1)が開始する前に開始してもよいし、演算処理P1A(i+1)が開始した後に開始してもよい。
【0060】
図9(a)は、図2における第1積和演算器10で実行される演算処理P1の並列数及びパイプライン数の一例と、第2積和演算器30で実行される演算処理P2の並列数及びパイプライン数の一例を示す模式図である。図9(b)は、図9(a)における第1積和演算器10の演算処理P1と、第2積和演算器30の演算処理P2のタイムチャートの変形例を示す図である。
【0061】
図9(a)に示すように、第1積和演算器10で実行される演算処理P1Bを構成する演算数が(n+1)(nは0以上の整数)であり、第2積和演算器30で実行される演算処理P2Bを構成する演算数が(q+1)(qは0以上の整数)である場合、第1積和演算器10で実行される演算処理P1Bの並列数L1は、演算数(n+1)の約数であり、第2積和演算器30で実行される演算処理P2Bの並列数L2は、演算数(q+1)の約数であるのが好ましい。例えば、演算処理P1Bの演算数が(n+1)=784、演算処理P2Bの演算数(q+1)=256の場合、演算処理P1Bの並列数L1を49、演算処理P2Bの並列数L2を16に設定することができる。
【0062】
また、演算処理P1Bの演算数が(n+1)、演算処理P2Bの演算数(q+1)の場合、演算処理P1Bを構成するパイプライン数C1及び演算処理P2Bを構成するパイプライン数C2の双方が、演算数(n+1)と演算数(q+1)の公約数であることが好ましい。一例として、演算処理P1Bの演算数が(n+1)=784、演算処理P2Bの演算数(q+1)=256の場合、演算処理P1Bのパイプライン数C1及び演算処理P2Bのパイプライン数C2の双方を、784と256の公約数である2、4、8又は16に設定することができる。
パイプライン数(パイプラインの長さ)は、演算器のそれぞれの演算数と、演算器の数で決定される。このとき、演算器の数は、演算数の約数であると効率良く計算できる。効率良く計算するとは、演算器が止まることなく演算していることを意味している。よって、パイプライン数C1,C2を、演算数(n+1)と演算数(q+1)の公約数とすることにより、パイプライン数C1,C2の長さを揃えることができるので、第1積和演算器10で実行される演算処理P1B及び第2積和演算器30で実行される演算処理P2Bの効率を良くすることができる。
【0063】
更に、演算処理P1Bの演算数が(n+1)、演算処理P2Bの演算数(q+1)の場合、演算処理P1Bを構成するパイプライン数C1及び演算処理P2Bを構成するパイプライン数C2の双方が、演算数(n+1)と演算数(q+1)の最大公約数であることがより好ましい。一例として、演算処理P1Bの演算数が(n+1)=784、演算処理P2Bの演算数(q+1)=256の場合、演算処理P1Bのパイプライン数C1及び演算処理P2Bのパイプライン数C2の双方を、784と256の最大公約数である16に設定することができる。
これにより、第1積和演算器10で実行される演算処理P1B及び第2積和演算器30で実行される演算処理P2Bの効率が良くなると共に、回路規模を最小にすることができる。
【0064】
また、第2積和演算器30で実行される演算処理P2B(i)が終了するタイミングが、第1積和演算器10で実行される演算処理P1B(i+1)が終了するタイミングと同じであるように調節することが好ましい。例えば、図9(b)に示すように、演算処理P2B(1)の処理時間T2B(1)を、演算処理P1B(2)の処理時間T1B(2)と同じに設定することができる。同様にして、演算処理P2B(i)の処理時間T2B(i)を、演算処理P1B(i+1)の処理時間T1B(i+1)と同じに設定することができる。これにより、第1積和演算器10で実行される演算処理P1B及び第2積和演算器30で実行される演算処理P2Bの効率を最も良くすることができ、回路規模の増大が更に抑制される。
【0065】
上述したように、本実施形態によれば、ニューラルネットワーク演算処理装置1が、第1入力変数xと第1重みデータωjkとの積ωjkの複数を演算すると共に、積ωjkの複数の和Σωjkを演算し(第1演算工程)、上記第1演算工程で演算された上記和Σωjkの複数を、複数の第2入力変数i,i,i,…iとして保持する(保持工程)。また、第2重みデータωjkと第2入力変数iとの積wjkの複数を演算すると共に、積wjkの複数の和Σwjkを演算し(第2演算工程)、上記第2演算工程で演算された和Σwjkの複数を、複数の出力値y,y,y,…yとして出力する(第2出力工程)。そして、上記第2演算工程で実行される演算処理の少なくとも一部を、上記第1演算工程で実行される演算処理と並列して実行する。このように、第1積和演算器10及び第2積和演算器30の双方を用いて、隠れ層42と出力層43の2層に亘る並列計算を行うことで、積和演算の更なる高速化、効率化を実現することができ、且つ回路規模の増大を抑制し、更には簡便な設計で積和演算を行うことができる。
【0066】
図10は、図1のニューラルネットワーク演算処理装置1の構成の変形例を概略的に示す模式図である。本変形例では、第1積和演算器及び第2積和演算器の双方に制御信号送信部が設けられている点で、上記実施形態と異なる。上記実施形態と同様の構成については、上記実施形態と同一の符号を付してその説明を省略し、異なる部分を以下に説明する。
【0067】
図10に示すように、第1積和演算器10は、第1制御信号S1を第2積和演算器30に送信すると共に、第2積和演算器30からの第2制御信号S2を受信する第1信号送受信部16と、第3制御信号S3をレジスタ20に送信する信号送信部17とを更に備えている。第2積和演算器30は、第2制御信号S2を第2積和演算器30に送信すると共に、第1積和演算器10からの第1制御信号S1を受信する第2信号送受信部36を更に備えている。
【0068】
第1信号送受信部16は、第1積和演算器10の演算処理が終了したときに、第1積和演算器10の演算処理が終了したことを通知する第1制御信号S1を、第2積和演算器30に送信する。信号送信部17は、第1積和演算器10の演算処理が終了したときに、第1積和演算器10の演算処理が終了したことを通知する第1制御信号S3を、レジスタ20に送信する。本変形例では、第1積和演算器10は、第1信号送受信部16及び信号送信部17を有しているが、これに限られず、第1制御信号S1を第2積和演算器30に送信すると共に、第2積和演算器30からの第2制御信号S2を受信し、且つ第3制御信号S3をレジスタ20に送信する一の信号送受信部を有していてもよい。
【0069】
第2信号送受信部36は、第2積和演算器30の演算処理が終了したときに、第2積和演算器30の演算処理が終了したことを通知する第2制御信号S2を、第1積和演算器10に送信する。
【0070】
図11は、図10のニューラルネットワーク演算処理装置1で実行されるニューラルネットワーク演算処理方法の一例を示すフローチャートである。
図11おいて、先ず、ニューラルネットワーク演算処理装置1は、第2制御信号S2を1に設定し、第2積和演算器30は、第2制御信号S2を第1積和演算器10に送信する(ステップS1)。次に、ニューラルネットワーク演算処理装置1は、第1制御信号S1を0に設定すると共に、第3制御信号S3を0に設定する(ステップS2)。次いで、第1積和演算器10は、上述した演算処理P1A(1)を実行して(ステップS3)、複数の積ω0kの和Σω0kを第2入力変数iとして算出し、演算処理P1A(1)が終了する(ステップS4)。
【0071】
その後、ニューラルネットワーク演算処理装置1は、第3制御信号S3を1に設定し、第1積和演算器10は、第3制御信号S3を第2積和演算器30に送信する(ステップS5)。その後、第1積和演算器10は、演算処理P1A(1)によって得られた第2入力変数iを、第1出力部15を介してレジスタ20に送信する。ニューラルネットワーク演算処理装置1は、第1積和演算器10の第1出力部15から出力された演算結果(第2入力変数i)を、レジスタ20に保持する(ステップS6)。
【0072】
次に、ニューラルネットワーク演算処理装置1は、第1制御信号S1を1に設定し、第1積和演算器10は、第1制御信号S1を第2積和演算器30に送信する(ステップS7)。その後、ニューラルネットワーク演算処理装置1は、第2制御信号S2が1に設定されているか否かを判定し(ステップS8)、第2制御信号S2が1に設定されているときに、ステップS2及びステップS9に進む。
【0073】
次いで、ニューラルネットワーク演算処理装置1は、第1制御信号S1を0に設定すると共に、第3制御信号S3を0に設定し(ステップS2)、更に、第2制御信号S2を0に設定する(ステップS9)。このとき、第1積和演算器10は、上述した演算処理P1A(2)を実行し(ステップS3)、複数の積xω1kの和Σω1kを第2入力変数iとして算出する。また、第2積和演算器30は、第1積和演算器10の上記演算処理と並列に、上述した演算処理P2A(1)を実行して(ステップS10)、積wj0、wj0、wj0、…wp0の複数を算出し、演算処理P2A(1)が終了する(ステップS11)。その後、ニューラルネットワーク演算処理装置1は、第2制御信号S2を1に設定し、第2積和演算器30は、第2制御信号S2を第1積和演算器10に送信する(ステップS12)。
【0074】
以後、ニューラルネットワーク演算処理装置1は上記の処理を繰り返し、第1積和演算器10は、順次、第2入力変数i,i,i,…iを算出すると共に、第2積和演算器30も、第1積和演算器10の上記演算処理と並列に、順次積wj1、wj2、wj3、…wpqの複数を算出する。そして、第2入力変数iの算出が完了すると、複数の積w0kの和Σw0kを、出力値yとして第2出力部35-1及び/又は第2出力部35-2を介して外部に出力する。また、同様にして、複数の積i1kの和Σw1k、複数の積w2kの和Σw2k、…複数の積wpkの和Σwpkを、それぞれ出力値y,y,…yとして、第2出力部35-1及び/又は第2出力部35-2を介して外部に出力する。
【0075】
本変形例によっても、第1制御信号S1、第2制御信号S2及び第3制御信号を用いて、隠れ層42と出力層43の2層に亘る並列計算を行うことで、積和演算の更なる高速化、効率化を実現することができ、且つ回路規模の増大を抑制し、更には簡便な設計で積和演算を行うことができる。
【0076】
図12は、図1のニューラルネットワーク演算処理装置1の構成の他の変形例を概略的に示す模式図である。
図12に示すように、ニューラルネットワーク演算処理装置1は、レジスタ20と第2積和演算器30との間に、活性化関数を用いて演算する活性化関数演算処理部50を更に備えていてもよい。活性化関数演算処理部50は、例えば、第2入力変数i,i,i,…iを入力として、活性化関数f(i)の算出結果を、第2積和演算器30に出力する。本実施形態では、活性化関数f(i)は、例えば、ロジスティック・シグモイド関数、双曲線正接関数、ReLU関数あるいは恒等関数である。
【0077】
ニューラルネットワーク演算処理装置1は、第1積和演算器10とレジスタ20との間に活性化関数演算処理部を備えていてもよい。あるいは、第1積和演算器10とレジスタとの間と、レジスタ20と第2積和演算器30との間の両方に、活性化関数演算処理部を備えていてもよい。
【0078】
このように、活性化関数演算処理部50によって、第2入力変数iを用いて活性化関数f(i)を算出することで、高精度な演算処理を実行することができる。
【0079】
図13は、図10における第1積和演算器10及び第2積和演算器30の構成の変形例を概略的に示す模式図である。上記実施形態と同様の構成については、上記実施形態と同一の符号を付してその説明を省略し、異なる部分を以下に説明する。
図13に示すように、第1積和演算器10は、上記第1入力変数と第1重みデータとの積の複数を演算する第1乗算器13-1,13-2と、2つの第1乗算器13-1,13-2で乗算された積の複数の和を演算する第1加算器14-1,14-2を備えていてもよい。
【0080】
本変形例によれば、第1積和演算器10が複数の第1乗算器を備えるので、第1メモリ11や第2メモリ12と第1乗算器とが接続される経路数を増やすことができる。また、第1メモリ11から上記第1入力変数を一度に読み出すデータ量を増大させることができると共に、第2メモリ12から上記第1重みデータを一度に読み出すデータ量を増大させることができる。したがって、演算処理を更に効率良く実行することができる。
【0081】
図14は、図10のニューラルネットワーク演算処理装置1の構成の変形例を概略的に示す模式図である。上記実施形態と同様の構成については、上記実施形態と同一の符号を付してその説明を省略し、異なる部分を以下に説明する。
図14に示すように、ニューラルネットワーク演算処理装置1は、第1積和演算器10-1,10-2と、第1積和演算器10-1,10-2にそれぞれ接続されたレジスタ20-1,20-2と、レジスタ20-1,20-2に接続された第2積和演算器30-1,30-2とを備えていてもよい。
【0082】
第1積和演算器10-1は、第1メモリ11-1、第2メモリ12-1、第1乗算器13-1,13-2、第1加算器14-1,14-2、第1出力部15-1、第1信号送受信部16-1及び信号送信部17-1を備える。また、第1積和演算器10-2は、第1メモリ11-2、第2メモリ12-2、第1乗算器13-3,13-4、第1加算器14-3,14-4、第1出力部15-2、第1信号送受信部16-2及び信号送信部17-2を備える。
【0083】
第2積和演算器30-1は、入力部31-1、第3メモリ32-1、第2乗算器33-1,33-2、第2加算器34-1,34-2、第2出力部35-1,35-2及び第2信号送受信部36-1を備える。また、第2積和演算器30-2は、入力部31-2、第3メモリ32-2、第2乗算器33-3,33-4、第2加算器34-3,34-4、第2出力部35-3,35-4及び第2信号送受信部36-2を備える。
【0084】
また、ニューラルネットワーク演算処理装置1は、第1積和演算器10-1とレジスタ20-1との間、及び第1積和演算器10-2とレジスタ20-2との間に、制御信号中継器60を更に備えることができる。制御信号中継器60は、例えば、第1積和演算器10-1から送信された第1制御信号S1を受信すると共に、当該第1制御信号S1を、第2積和演算器30-1,30-2のいずれか又は双方に送信する。更に、制御信号中継器60は、第1積和演算器10-2から送信された第1制御信号S1を受信すると共に、当該第1制御信号S1を、第2積和演算器30-1,30-2のいずれか又は双方に送信する。
【0085】
また、制御信号中継器60は、例えば、第2積和演算器30-1から送信された第2制御信号S2を受信すると共に、当該第2制御信号S2を、第1積和演算器10-1,10-2のいずれか又は双方に送信する。更に、制御信号中継器60は、第2積和演算器30-2から送信された第2制御信号S2を受信すると共に、当該第2制御信号S2を、第1積和演算器10-1,10-2のいずれか又は双方に送信する。
【0086】
更に、制御信号中継器60は、例えば、第1積和演算器10-1及び/又は第1積和演算器10-2から送信された第3制御信号S3を受信すると共に、当該第3制御信号S3を、レジスタ20-1及び/又はレジスタ20-2に送信する。
【0087】
本変形例によれば、ニューラルネットワーク演算処理装置1が、複数の第1積和演算器と、複数のレジスタ及び複数の第2積和演算器を備えるので、演算処理を更に効率良く実行することができる。
【0088】
以上、本発明の実施形態について詳述したが、本発明は上記実施形態に限定されるものではなく、特許請求の範囲内に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【0089】
例えば、以上に示した実施形態に係る各装置(例えば、ニューラルネットワーク演算処理装置1)の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体(記憶媒体)に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、処理を行ってもよい。
なお、ここでいう「コンピュータシステム」とは、オペレーティング・システム(OS:Operating System)あるいは周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM(Read Only Memory)、フラッシュメモリ等の書き込み可能な不揮発性メモリ、DVD(Digital Versatile Disc)等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また、記録媒体としては、例えば、一時的にデータを記録する記録媒体であってもよい。
【0090】
さらに、「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークあるいは電話回線等の通信回線を介してプログラムが送信された場合のサーバあるいはクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)あるいは電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
コンピュータでは、例えば、CPU(Central Processing Unit)などのプロセッサがメモリに記憶されたプログラムを読み出して実行する。
【符号の説明】
【0091】
1 ニューラルネットワーク演算処理装置
10 第1積和演算器
10-1 第1積和演算器
10-2 第1積和演算器
11 第1メモリ
11-1 第1メモリ
11-2 第1メモリ
12 第2メモリ
12-1 第2メモリ
12-2 第2メモリ
13 第1乗算器
13-1 第1乗算器
13-2 第1乗算器
13-3 第1乗算器
13-4 第1乗算器
14 第1加算器
14-1 第1加算器
14-2 第1加算器
14-3 第1加算器
14-4 第1加算器
15 第1出力部
15-1 第1出力部
15-2 第1出力部
16 第1信号送受信部
16-1 第1信号送受信部
16-2 第1信号送受信部
17 信号送信部
17-1 信号送信部
17-2 信号送信部
20 レジスタ
20-1 レジスタ
20-2 レジスタ
30 第2積和演算器
30-1 第2積和演算器
30-2 第2積和演算器
31 入力部
31-1 入力部
31-2 入力部
32 第3メモリ
32-1 第3メモリ
32-2 第3メモリ
33-1 第2乗算器
33-2 第2乗算器
33-3 第2乗算器
33-4 第2乗算器
34-1 第2加算器
34-2 第2加算器
34-3 第2加算器
34-4 第2加算器
35-1 第2出力部
35-2 第2出力部
35-3 第2出力部
35-4 第2出力部
36 第2信号送受信部
36-1 第2信号送受信部
36-2 第2信号送受信部
40 ニューラルネットワーク
41 入力層
41A ノード
41B ノード
41C ノード
41D ノード
41E ノード
42 隠れ層
42A ノード
42B ノード
42C ノード
42D ノード
43 出力層
43A ノード
43B ノード
43C ノード
50 活性化関数演算処理部
60 制御信号中継器
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14