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

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

▶ キヤノン株式会社の特許一覧

特許7431598演算装置、演算方法、プログラム及びテーブル生成装置
<>
  • 特許-演算装置、演算方法、プログラム及びテーブル生成装置 図1
  • 特許-演算装置、演算方法、プログラム及びテーブル生成装置 図2
  • 特許-演算装置、演算方法、プログラム及びテーブル生成装置 図3
  • 特許-演算装置、演算方法、プログラム及びテーブル生成装置 図4
  • 特許-演算装置、演算方法、プログラム及びテーブル生成装置 図5
  • 特許-演算装置、演算方法、プログラム及びテーブル生成装置 図6
  • 特許-演算装置、演算方法、プログラム及びテーブル生成装置 図7
  • 特許-演算装置、演算方法、プログラム及びテーブル生成装置 図8
  • 特許-演算装置、演算方法、プログラム及びテーブル生成装置 図9
  • 特許-演算装置、演算方法、プログラム及びテーブル生成装置 図10
  • 特許-演算装置、演算方法、プログラム及びテーブル生成装置 図11
  • 特許-演算装置、演算方法、プログラム及びテーブル生成装置 図12
  • 特許-演算装置、演算方法、プログラム及びテーブル生成装置 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-06
(45)【発行日】2024-02-15
(54)【発明の名称】演算装置、演算方法、プログラム及びテーブル生成装置
(51)【国際特許分類】
   G06F 17/17 20060101AFI20240207BHJP
   G06N 3/08 20230101ALI20240207BHJP
【FI】
G06F17/17
G06N3/08
【請求項の数】 14
(21)【出願番号】P 2020018209
(22)【出願日】2020-02-05
(65)【公開番号】P2021124974
(43)【公開日】2021-08-30
【審査請求日】2023-02-02
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】水尾 佳弘
【審査官】坂庭 剛史
(56)【参考文献】
【文献】米国特許出願公開第2019/0147323(US,A1)
【文献】特開平10-252537(JP,A)
【文献】米国特許第05742741(US,A)
【文献】特開平04-362703(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/17
G06N 3/08
(57)【特許請求の範囲】
【請求項1】
ニューラルネットワークの活性化関数を近似的に表現する近似テーブルであって、前記活性化関数の離散的な複数の入力サンプルと前記複数の入力サンプルにそれぞれ対応する出力サンプルとをマッピングする前記近似テーブルを保持する保持部と、
活性化関数演算のために前記活性化関数が選択された場合に、前記保持部により保持されている前記近似テーブルを用いて、前記活性化関数演算の入力値を出力値へ変換する演算部と、
前記ニューラルネットワークを利用した学習処理を行う学習部と、
を備え、
前記近似テーブルの前記複数の入力サンプルは、前記活性化関数の定義域において基準点からより遠い入力サンプルがより大きい隣接サンプル間隔を有するように設定され、
前記学習部は、前記学習処理において前記演算部に前記活性化関数演算を行わせ、
前記学習部は、前記学習処理におけるバックプロパゲーションのために、前記活性化関数の導関数の値の近似値として、前記近似テーブルの隣接サンプル間の出力サンプルの傾きを利用する、
演算装置。
【請求項2】
請求項1に記載の演算装置であって、前記演算部は、前記入力値が前記近似テーブルのいずれの入力サンプルにも等しくない場合に、前記入力値を上回る最小入力サンプル及び前記入力値を下回る最大入力サンプルと、それぞれ対応する出力サンプルとに基づく補間によって、前記入力値を前記出力値へ変換する、演算装置。
【請求項3】
請求項1又は2に記載の演算装置であって、
前記活性化関数は、対称点に関し点対称又は対称軸に関し線対称であり、
前記近似テーブルの前記複数の入力サンプルは、前記定義域において前記対称点又は前記対称軸の一方の側についてのみ定義され、
前記演算部は、前記対称点又は前記対称軸の他方の側についての前記活性化関数のサンプル値を、前記近似テーブルに基づいて生成して、前記活性化関数演算のために使用する、
演算装置。
【請求項4】
請求項1乃至3のいずれか1項に記載の演算装置であって、前記演算部は、前記ニューラルネットワークの中間層で処理される中間データのミニバッチ単位の平均又は分散に基づいて、前記近似テーブルにより示された前記複数の入力サンプルの値を調整して、調整後の前記近似テーブルを前記活性化関数演算のために使用する、演算装置。
【請求項5】
請求項に記載の演算装置であって、前記調整は、前記中間データのミニバッチ単位の前記平均に基づいて前記複数の入力サンプルの値をオフセットすることを含む、演算装置。
【請求項6】
請求項又はに記載の演算装置であって、前記調整は、前記中間データのミニバッチ単位の前記分散に基づいて前記複数の入力サンプルの値をスケーリングすることを含む、演算装置。
【請求項7】
ニューラルネットワークを利用した活性化関数演算を含む学習処理のための演算方法であって、
演算装置により、ニューラルネットワークの活性化関数を近似的に表現する近似テーブルであって、前記活性化関数の離散的な複数の入力サンプルと前記複数の入力サンプルにそれぞれ対応する出力サンプルとをマッピングする前記近似テーブルを保持することと、
前記活性化関数演算のために前記活性化関数が選択された場合に、前記近似テーブルを用いて、前記活性化関数演算の入力値を出力値へ変換することと、
を含み、
前記近似テーブルの前記複数の入力サンプルは、前記活性化関数の定義域において基準点からより遠い入力サンプルがより大きい隣接サンプル間隔を有するように設定され、
前記学習処理におけるバックプロパゲーションのために、前記活性化関数の導関数の値の近似値として、前記近似テーブルの隣接サンプル間の出力サンプルの傾きが利用される、
演算方法。
【請求項8】
ニューラルネットワークを利用した活性化関数演算を含む学習処理を実行する演算装置のプロセッサに、請求項に記載の演算方法を行わせるためのコンピュータプログラム。
【請求項9】
ニューラルネットワークの活性化関数の指定を受付ける受付部と、
前記受付部により受付けられた前記活性化関数を近似的に表現する近似テーブルであって、前記活性化関数の離散的な複数の入力サンプルと前記複数の入力サンプルにそれぞれ対応する出力サンプルとをマッピングする前記近似テーブルを生成する生成部と、
を備え、
前記生成部は、前記近似テーブルの前記複数の入力サンプルを、前記活性化関数の定義域において基準点からより遠い入力サンプルがより大きい隣接サンプル間隔を有するように設定し、
前記生成部は、隣接サンプル間の区間における前記活性化関数の傾きの変化量が閾値を上回らないように、前記隣接サンプル間隔を調整する、
テーブル生成装置。
【請求項10】
請求項に記載のテーブル生成装置であって、前記基準点は、前記定義域における原点である、テーブル生成装置。
【請求項11】
請求項に記載のテーブル生成装置であって、前記基準点は、前記活性化関数の傾きの絶対値が極大となる点である、テーブル生成装置。
【請求項12】
請求項11に記載のテーブル生成装置であって、前記生成部は、前記活性化関数の傾きが極大となる複数の極大点が存在する場合に、当該複数の極大点に対応する複数の基準点を設定する、テーブル生成装置。
【請求項13】
請求項乃至12のいずれか1項に記載のテーブル生成装置であって、前記生成部は、前記活性化関数の二次導関数の値に基づいて、前記隣接サンプル間隔を設定する、テーブル生成装置。
【請求項14】
請求項乃至12のいずれか1項に記載のテーブル生成装置であって、前記生成部は、前記基準点における基本サンプル間隔を基準として、前記基準点から遠くなるにつれて前記隣接サンプル間隔が一定の比率又は一定の差分で増加するように、前記隣接サンプル間隔を設定する、テーブル生成装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、演算装置、演算方法、プログラム及びテーブル生成装置に関する。
【背景技術】
【0002】
ニューラルネットワークにおいて、中間層のノード(ニューロン)は、先行する入力層又は中間層から複数の信号値を受け取る。ノードは、それら信号値の加重和とバイアスとの和を活性化関数へ入力し、活性化関数演算を通じてノードの出力値を導出する。活性化関数は、伝達関数とも呼ばれる。活性化関数として非線形関数を用いることで、複数の層からなるニューラルネットワークが単層ネットワークでは表現できない多彩な数理モデルを表現することが可能となる。活性化関数は、ニューラルネットワークの出力層においても用いられる。
【0003】
活性化関数として使用される非線形関数の種類は様々である。非線形関数は、それぞれ利点及び欠点を有し、例えば扱われる問題の性質、収束の容易さ、勾配消失の可能性の回避、又は計算効率といった要因を考慮して選択される。いくつかの非線形関数(例えば、ステップ関数及びReLU関数)の計算負荷は低いのに対し、いくつかの非線形関数(例えば、シグモイド関数及びtanh関数)の計算負荷は相対的に高い。
【0004】
特許文献1は、ニューロンにおけるシグモイド関数の計算の負荷を軽減するために、シグモイド関数テーブルにより保持される離散的なサンプル値を用いて、シグモイド関数を近似的に実現する手法を開示している。
【先行技術文献】
【特許文献】
【0005】
【文献】特開平6-175999号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1により開示された手法では、シグモイド関数の定義域が均一な区間に区分されるために、サンプル数が少ないと、近似の精度が低下し関数の形状の再現性が損なわれる。サンプル数を多くすれば定義域の全体にわたり十分な近似の精度を確保することはできるが、その場合、関数の傾きの変化が少ない領域に必要以上に多くのサンプルを割当てることになり、メモリリソースの浪費につながる。
【0007】
そこで、本開示は、リソースをより効率的に活用しつつ活性化関数演算を実行することを可能にする仕組みを提供することを目的の1つとする。
【課題を解決するための手段】
【0008】
ある観点によれば、ニューラルネットワークの活性化関数を近似的に表現する近似テーブルであって、前記活性化関数の離散的な複数の入力サンプルと前記複数の入力サンプルにそれぞれ対応する出力サンプルとをマッピングする前記近似テーブルを保持する保持部と、活性化関数演算のために前記活性化関数が選択された場合に、前記保持部により保持されている前記近似テーブルを用いて、前記活性化関数演算の入力値を出力値へ変換する演算部と、前記ニューラルネットワークを利用した学習処理を行う学習部と、を備え、前記近似テーブルの前記複数の入力サンプルは、前記活性化関数の定義域において基準点からより遠い入力サンプルがより大きい隣接サンプル間隔を有するように設定され、前記学習部は、前記学習処理において前記演算部に前記活性化関数演算を行わせ、前記学習部は、前記学習処理におけるバックプロパゲーションのために、前記活性化関数の導関数の値の近似値として、前記近似テーブルの隣接サンプル間の出力サンプルの傾きを利用する、演算装置が提供される。
【0009】
他の観点によれば、ニューラルネットワークの活性化関数の指定を受付ける受付部と、前記受付部により受付けられた前記活性化関数を近似的に表現する近似テーブルであって、前記活性化関数の離散的な複数の入力サンプルと前記複数の入力サンプルにそれぞれ対応する出力サンプルとをマッピングする前記近似テーブルを生成する生成部と、を備え、前記生成部は、前記近似テーブルの前記複数の入力サンプルを、前記活性化関数の定義域において基準点からより遠い入力サンプルがより大きい隣接サンプル間隔を有するように設定し、前記生成部は、隣接サンプル間の区間における前記活性化関数の傾きの変化量が閾値を上回らないように、前記隣接サンプル間隔を調整する、テーブル生成装置が提供される。
【発明の効果】
【0010】
本開示によれば、リソースをより効率的に活用しつつ活性化関数演算を実行することが可能となる。
【図面の簡単な説明】
【0011】
図1】ニューラルネットワークのノードにおいて行われる演算について説明するための説明図。
図2】活性化関数のいくつかの例を示す説明図。
図3】一実施形態に係るコンピュータのハードウェア構成の一例を示すブロック図。
図4】一実施形態に係るテーブル生成装置の機能面の構成の一例を示すブロック図。
図5】一実施形態に係る学習装置の機能面の構成の一例を示すブロック図。
図6】一実施形態に係る推論装置の機能面の構成の一例を示すブロック図。
図7】近似テーブルを生成する手法の一例について説明するための説明図。
図8】活性化関数への基準点の設定の応用例について説明するための説明図。
図9】一実施形態に係る近似テーブル生成処理の流れの一例を示すフローチャート。
図10】一実施形態に係る学習処理の流れの一例を示すフローチャート。
図11】一実施形態に係る推論処理の流れの一例を示すフローチャート。
図12】一変形例に係るミニバッチ単位の入力サンプル値の調整について説明するための説明図。
図13】一変形例に係る活性化関数処理の流れの一例を示すフローチャート。
【発明を実施するための形態】
【0012】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0013】
<<1.概要>>
<1-1.活性化関数>
図1は、機械学習のためのニューラルネットワークのノードにおいて行われる演算について説明するための説明図である。ニューラルネットワークは、概して、入力層、複数の中間層及び出力層からなる。入力層は、学習用データを受付ける層である。k番目の中間層は、N個のノード(Nは層ごとに相違し得る)からなる。k番目の中間層は、先行する入力層又は中間層のNk-1個のノードからNk-1個の信号値X(m=1,…,Nk-1)を受付け、N個の出力値Z(n=1,…,N)を導出して次の層へ受け渡す。図1には、k-1番目の中間層が4個のノードを有し(Nk-1=4)、k番目の中間層が3個のノードを有する(N=3)例が示されている。具体的には、k番目の中間層のノードnは、k-1番目の中間層の4個のノードから、4個の信号値X、X、X、Xを受付ける。そして、ノードnは、重みwn1、wn2、wn3、wn4を用いて信号値の加重和を算出し、さらにバイアスbを加算して中間値Yを導出する。この中間値Yの導出は、ニューロン演算とも呼ばれ、次の式(1)又は式(2)で表現され得る。
【0014】
【数1】
【0015】
次いで、ノードnは、中間値Yを引数として活性化関数h()へ入力し、次の式(3)のように、活性化関数演算を通じて出力値Zを導出する。活性化関数は、典型的には、1入力1出力の関数である。
【0016】
【数2】
【0017】
図2は、活性化関数のいくつかの例を示している。図2(A)に示したステップ関数は、入力値が閾値(図中では0)を上回る場合に1を、入力値が閾値を下回る場合に0を出力する。図2(B)に示したReLU(Rectified Linear Unit)関数は、ランプ関数とも呼ばれ、入力値が閾値(図中では0)を上回る場合に入力値に比例する値を、入力値が閾値を下回る場合に0を出力する。図2(C)に示したシグモイド関数は、入力値が小さくなるにつれて0に漸近し、入力値が大きくなるにつれて1に漸近する値を出力する、1つの変曲点を有する単調増加連続関数である。一例として、標準シグモイド関数の数式表現は、次の式(4)の通りである:
【0018】
【数3】
【0019】
図2(D)に示したtanh(ハイパボリックタンジェント)関数は、シグモイド関数と同様の1つの変曲点を有する単調増加連続関数だが、その出力値は、入力値が小さくなるにつれて0ではなく-1に漸近する。図2(E)に示したソフトプラス関数は、ReLU関数を平滑化した軌跡を描く単調増加連続関数である。図2から理解されるように、活性化関数の多くは、定義域における特定の点(図2(C)のシグモイド関数のケースでは原点)の付近で特徴的な軌跡を描き、無限大及び無限小において直線に漸近し又は一致するという性質を有する。
【0020】
<1-2.基本的なアイディア>
ニューラルネットワークモデルの設計に関連して、非線形関数は、それぞれ利点及び欠点を有し、例えば扱われる問題の性質、収束の容易さ、勾配消失の可能性の回避、又は計算効率といった要因を考慮して選択される。図2に示した非線形関数のうち、ステップ関数及びReLU関数は、区間ごとに見れば線形的であることから、演算のために少ない計算リソースしか消費しない。一方、シグモイド関数、tanh関数及びソフトプラス関数は、曲線的であることから、演算のために相対的に多くの計算リソースを消費する。
【0021】
特に多くの計算リソースを消費しがちな非線形関数を使用する場合に、負荷を軽減するために、非線形関数を近似的に表現するテーブルを予め用意しておき、ルックアップテーブル方式で入力値を演算結果としての出力値へ変換することが考えられる。離散的な入力サンプルに入力値が一致しない場合には、入力値に対応する区間の両端のサンプル値に基づく補間によって出力値を導出することができる。この方式において、非線形関数の定義域が均一な区間に区分される(隣接サンプル間隔が均一である)場合、サンプル数が少ないと、近似の精度が低下し関数の形状の再現性が損なわれる。サンプル数を多くすれば定義域の全体にわたり十分な近似の精度を確保することはできるが、その場合、傾きの変化が少ない領域に必要以上に多くのサンプルを割当てることになり、メモリリソースの浪費につながる。
【0022】
そこで、次節より詳細に説明する本開示の実施形態では、活性化関数の定義域において基準点からより遠い入力サンプルがより大きい隣接サンプル間隔を有するように設定された近似テーブルを取り入れるものとする。それにより、装置のリソースをより効率的に活用しつつ、活性化関数演算を実行することが可能となるものと期待される。
【0023】
<<2.装置の構成例>>
<2-1.ハードウェア構成>
図3は、本開示に係る技術が実装され得るコンピュータのハードウェア構成の一例を示すブロック図である。図3に示したコンピュータ300は、CPU301、メモリ302、ROM303、HDD304、通信I/F305、操作部306、ASIC307及びバス310を備える。
【0024】
CPU(Central Processing Unit)301は、コンピュータ300の機能の全般を制御するプロセッサである。メモリ302は、CPU301のための主記憶デバイスであってよく、CPU301に作業用の一時的な記憶領域を提供する。ROM(Read-Only Memory)303は、不揮発性のメモリであり、CPU301により実行されるコンピュータプログラム及び関連するデータを記憶する。HDD(Hard Disk Drive)304は、二次記憶デバイスであり、コンピュータ300の用途に依存する様々なデータを記憶する。通信インタフェース(I/F)305は、コンピュータ300による他の装置との間の通信のためのインタフェースである。操作部306は、コンピュータ300に対するユーザからの指示及び情報入力を受付ける入力デバイスと、ユーザへ向けて情報を出力する出力デバイスとを含むユニットである。入力デバイスは、例えば、キードード、マウス、タッチセンサ、キーパッド及びボタンのうちの1つ以上を含み得る。出力デバイスは、例えば、ディスプレイ及びスピーカを含み得る。ASIC(Application Specific Integrated Circuit)307は、機械学習関連の処理に専用の処理回路であり、例えば同種の多数の数値演算を並列的に高速に実行可能である。図1を用いて説明したニューロン演算(行列演算)及び活性化関数演算は、CPU301により実行されるソフトウェアとして実装されてもよく、又はASIC307のハードウェアロジックとして実装されてもよい。バス310は、CPU301、メモリ302、ROM303、HDD304、通信I/F305、操作部306及びASIC307を相互に接続する信号線である。
【0025】
ある観点において、コンピュータ300は、本実施形態に係る活性化関数の近似テーブルを生成するためのテーブル生成装置として利用されてもよい。他の観点において、コンピュータ300は、本実施形態に係る活性化関数の近似テーブルを用いて機械学習を遂行する学習装置として利用されてもよい。また別の観点において、コンピュータ300は、学習済みモデルから何らかの推論結果を得る際に本実施形態に係る活性化関数の近似テーブルを用いる推論装置として利用されてもよい。テーブル生成装置、学習装置及び推論装置はそれぞれ別個の装置であってもよく、それら装置のうちの2つ以上が物理的に同一の装置として実装されてもよい。各装置の具体的な構成の例を、以下に順に説明する。
【0026】
<2-2.テーブル生成装置>
図4は、一実施形態に係るテーブル生成装置400の機能面の構成の一例を示すブロック図である。図4を参照すると、テーブル生成装置400は、受付部410、生成部420及びテーブル保持部430を備える。
【0027】
受付部410は、近似テーブルの生成の対象となるニューラルネットワークの活性化関数の指定を受付ける。受付部410は、例えば、既定のいくつかの活性化関数を操作部306の画面上に表示し、それら活性化関数のうちの1つを指定するユーザ入力を入力デバイスを介して受付けてもよい。また、受付部410は、通信I/F305を介して活性化関数の指定を受付けてもよい。また、受付部410は、ユーザが独自に定義した活性化関数の指定を、例えばその活性化関数の数式表現をユーザに入力させることにより受付けてもよい。
【0028】
生成部420は、受付部410により受付けられた活性化関数を近似的に表現する近似テーブルを生成する。ここでの近似テーブルは、指定された活性化関数の離散的な複数の入力サンプルとそれら入力サンプルにそれぞれ対応する出力サンプルとをマッピングするテーブルである。とりわけ、本実施形態において、生成部420は、近似テーブルの複数の入力サンプルを、活性化関数の定義域において基準点からより遠い入力サンプルがより大きい隣接サンプル間隔を有するように設定する。一例として、生成部420は、活性化関数の定義域における原点を基準点として設定してもよい。他の例として、生成部420は、活性化関数の傾きの絶対値が極大となる点を基準点として設定してもよい。
【0029】
図7は、近似テーブルを生成する手法の一例について説明するための説明図である。図7には、一例としてのシグモイド曲線700が示されている。図7の横軸はシグモイド曲線700の定義域に相当し、縦軸は値域に相当する。
【0030】
点P0は、入力値ゼロを示す、定義域における原点である。点P0を入力サンプルとした場合、対応する出力サンプルは0.5となる。シグモイド曲線700は、点P0において最大の傾きを示す。そのため、生成部420は、点P0を基準点として設定し得る。次いで、生成部420は、基本サンプル間隔を設定する。図7の例では、基本サンプル間隔は、基準点P0と基準点P0の右隣りの点P11との間、及び基準点P0と基準点P0の左隣りの点P21との間の間隔に等しい。例えば、基本サンプル間隔は、予め設定される固定的な値(例えば、0.3)であってもよい。その代わりに、生成部420は、基準点における活性化関数の二次導関数の値に基づいて基本サンプル間隔を設定してもよい。活性化関数の二次導関数は、活性化関数の傾きの局所的な変化率を表す。この変化率がゼロに等しければ、活性化関数は局所的に線形であるため、サンプル間隔を大きく設定しても、線形補間を前提とした近似の精度はそれほど低下しない。傾きの変化率の絶対値が大きくなるにつれ、活性化関数は線形から大きく乖離するため、サンプル間隔を狭めなければ近似の精度が低下する。そこで、生成部420は、基準点における活性化関数の二次導関数の値の絶対値が大きいほど基本サンプル間隔をより小さく設定して、基準点近傍における十分な近似精度を確保し得る。
【0031】
次いで、生成部420は、設定した基本サンプル間隔を基準として、他の隣接サンプル間隔を設定する。一例として、生成部420は、基準点から遠くなるにつれて隣接サンプル間隔が一定の比率又は一定の差分で増加するように、隣接サンプル間隔を設定してもよい。隣接サンプル間隔を一定の比率で増加させる場合、生成部420は、基本サンプル間隔に比率r(r>1)をi回乗算することにより、基本サンプル間隔からiサンプル分隣りの隣接サンプル間隔を算出することができる。例えば、基本サンプル間隔をIとすると、図7の点P11と点P12との間の間隔I11=I・r、点P12と点P13との間の間隔I12=I・rとなり、以降も同様である。この場合、基準点から一方の側の隣接サンプル間隔の数列は等比数列となる。隣接サンプル間隔を一定の差分で増加させる場合、生成部420は、基本サンプル間隔に差分d(d>0)をi回加算することにより、基本サンプル間隔からiサンプル分隣りの隣接サンプル間隔を算出することができる。例えば、基本サンプル間隔をIとすると、図7の点P11と点P12との間の間隔I11=I+r、点P12と点P13との間の間隔I12=I+2rとなり、以降も同様である。この場合、基準点から一方の側の隣接サンプル間隔の数列は等差数列となる。傾きが急速に一定値に漸近し又は一致する活性化関数の場合には、等差的ではなく等比的に隣接サンプル間隔を設定することで、サンプル個数を低減してメモリリソースを節約することができる(逆もまた然りである)。
【0032】
生成部420は、等比的に又は等差的に設定した隣接サンプル間隔で活性化関数の定義域に複数の入力サンプルを設定し、設定した隣り合う入力サンプル間の区間における活性化関数の傾きの変化量が閾値を上回らないことを検証してもよい。ある区間において活性化関数の傾きの変化量が閾値を上回る場合、その区間で近似の精度が低下していることになる。この場合、生成部420は、例えば等比数列の比率r又は等差数列の差分dをより小さい値に設定し直して、隣接サンプル間隔を縮小し得る。逆に、生成部420は、いずれの区間においても活性化関数の傾きの変化量が閾値を下回る場合、例えば等比数列の比率r又は等差数列の差分dをより大きい値に設定し直して、隣接サンプル間隔を拡大してもよい。また、生成部420は、隣接サンプル間隔の調整に応じて、入力サンプルの個数を調整してもよい。図7の例では、基準点P0に加えて、正の入力についての8個の入力サンプル点P11~P18及び負の入力についての8個の入力サンプル点P21~P28が設定されている。
【0033】
代替的に、生成部420は、基本サンプル間隔以外の隣接サンプル間隔もまた、活性化関数の二次導関数の値に基づいて設定してもよい。この場合、例えば点P11と点P12との間の間隔I11は、点P11における活性化関数の二次導関数の値の絶対値、点P12と点P13との間の間隔I12は、点P12における活性化関数の二次導関数の値の絶対値に基づいて設定され得る。また別の手法として、生成部420は、基本サンプル間隔及びそれ以外の隣接サンプル間隔の一方又は双方を、ユーザに個別に指定させてもよい。
【0034】
生成部420は、上述した手法で活性化関数の定義域に複数の入力サンプルを設定すると、設定した入力サンプルの各々を活性化関数に代入することにより、対応する出力サンプルの値を算出する。そして、生成部420は、離散的な複数の入力サンプルとそれら入力サンプルにそれぞれ対応する出力サンプルとをマッピングする近似テーブルを生成する。下の表1は、基本サンプル幅を0.3に設定し、隣接サンプル間隔を差分d=0.3で等差的に設定した場合の、図7の入力サンプル点P28~P21、P0、P1~P18における、入出力サンプル値の例を示している。
【0035】
【表1】
【0036】
生成部420は、表1の第3列及び第4列に示したような入力サンプル値及び出力サンプル値の各ペアを近似テーブルのエントリとして順次生成する(第1列及び第2列は、近似テーブルに含まれなくてよい)。ここで、表1の上2つのエントリに着目すると、これらエントリの入力サンプル値は相違するものの、出力サンプル値は互いに等しい。これは、入力サンプル値が-10.8を下回る場合に、近似されたシグモイド関数の傾きが一定となる(表1の例では傾き0)ことを意味する。表1の下2つのエントリも同様に、入力サンプル値が+10.8を上回る場合に、近似されたシグモイド関数の傾きが一定となることを示している。近似テーブルにおける入力サンプルの最も外側のこのようなエントリは、入力値が最も外側の入力サンプルよりも外に位置する際に、外側2エントリに基づく線形外挿によって出力値を導出することを可能にする。近似テーブルは、下の表2のように、各入力サンプルに対応する区間における近似されたシグモイド関数の傾きを示すフィールドを有していてもよい。傾きフィールドは、活性化関数演算での線形補間の際に、2つのエントリのサンプル値から傾きを算出する処理を省略するために利用され得る。
【0037】
【表2】
【0038】
生成部420は、近似テーブルを保持するメモリのリソースをさらに節約するために、活性化関数の対称性を活用して、近似テーブルの一部をデータとして生成すること(又は記憶すること)を省略してもよい。例えば、シグモイド関数は、点(0,0.5)を中心として点対称である。そこで、生成部420は、入力サンプル点P0及びP1~P18のエントリのみからなる近似テーブルを生成し得る。入力サンプル点P28~P21のエントリは、近似テーブルを利用する装置において、入力サンプル点P1~P18についてのエントリから生成可能である。tanh関数もまた、点(0,0)を中心として点対称であるため、その近似テーブルの一部のデータを省略することが可能である。各近似テーブルに関連付けて、活性化関数の対称性に関する情報(例えば、対称点又は対称軸を識別する情報)が保持されてもよい。
【0039】
上では活性化関数としてシグモイド関数が選択されるケースを中心に説明したが、上述した近似テーブルの生成の手法は、他の種類の活性化関数にも等しく適用可能である。図8は、ユーザが独自に定義し得る活性化関数の2つの例を示している。図8(A)に示した活性化関数曲線810は、原点を通る縦軸に関し線対称であり、入力値がゼロであるときに最大の出力値を示す。活性化関数曲線810の傾きの絶対値は、点P30a及び点P30bにおいて極大となる。このように活性化関数の傾きの絶対値が極大となる点が複数存在する場合には、生成部420は、当該複数の極大点に対応する複数の基準点を設定してもよい。即ち、図8(A)のケースでは、2つの基準点が点P30a、P30bにそれぞれ設定され得る。隣接サンプル間隔は、基準点P30a、P30bの近傍で最も小さく、これら基準点からより遠い位置(例えば、原点)においてより大きくてよい。図8(B)に示した活性化関数曲線820は、点対称でも線対称でもなく、入力値がゼロであるときに最小の出力値を示し、無限大において出力値1へ、無限小において出力値0.5へ漸近する。活性化関数曲線820の傾きの絶対値は、点P40a及び点P40bにおいて極大となる。この例においも、生成部420は、複数の極大点に対応する複数の基準点を設定し得る。即ち、図8(B)のケースでは、2つの基準点が点P40a、P40bにそれぞれ設定され得る。隣接サンプル間隔は、これら基準点の近傍で最も小さく、これら基準点からより遠い位置においてより大きくてよい。
【0040】
テーブル保持部430は、生成部420により生成された活性化関数の近似テーブルを、例えばメモリ302又はHDD304といった記憶手段を用いて保持する。テーブル保持部430は、操作部306を介して受付けられ又は通信I/F305を介して受信される要求に応じて、保持している近似テーブルのデータを他の装置へ送信してもよい。
【0041】
<2-3.学習装置>
図5は、一実施形態に係る学習装置500の機能面の構成の一例を示すブロック図である。図5を参照すると、学習装置500は、データ取得部510、学習部520、テーブル保持部530、活性化演算部540、傾き取得部550及びモデル記憶部560を備える。なお、ここでは、ニューラルネットワークの学習が教師あり学習として行われる例を主に説明するが、本開示に係る技術は、自己符号化器のような教師なし学習にも等しく適用可能である。
【0042】
データ取得部510は、学習済みモデルの導出のための学習処理において利用される学習用データセットを取得する。学習用データセットは、ニューラルネットワークの入力層へ入力される学習用データと、出力データの誤差を評価する際に参照される教師データとを含む。データ取得部510は、取得した学習用データセットを学習部520へ出力する。
【0043】
学習部520は、データ取得部510により取得される学習用データセットを用いて学習処理を実行することにより、学習済みモデルを導出する。例えば、学習部520は、モデルを初期化した後、1単位の学習用データをニューラルネットワークの入力層へ入力する。すると、複数の中間層において図1を用いて説明したニューロン演算及び活性化関数演算が実行され、出力層において出力データが導出される。学習部520は、出力データを教師データと比較することにより誤差を評価し、誤差が減少するように重み及びバイアスといったモデルパラメータを更新する。学習部520は、こうした処理を、学習が十分に収束するまで複数の単位データにわたって繰返す。そして、学習部520は、最終的に導出されたモデルパラメータのセットを、学習済みモデルとしてモデル記憶部560へ出力する。
【0044】
テーブル保持部530は、テーブル生成装置400により予め生成された、ニューラルネットワークの活性化関数を近似的に表現する近似テーブルを、例えばメモリ302又はHDD304といった記憶手段を用いて保持する。テーブル保持部530により保持される近似テーブルは、活性化関数の離散的な複数の入力サンプルとそれら入力サンプルにそれぞれ対応する出力サンプルとをマッピングするテーブルである。近似テーブルの複数の入力サンプルは、活性化関数の定義域において基準点からより遠い入力サンプルがより大きい隣接サンプル間隔を有するように設定されている。ニューラルネットワークにおいて複数の種類の活性化関数が利用される場合、テーブル保持部530は、それら活性化関数について別個の近似テーブルを保持していてもよい。但し、テーブル保持部530は、ステップ関数及びReLU関数といった計算負荷の低い活性化関数については、近似テーブルを保持しなくてよい。
【0045】
活性化演算部540は、学習部520により実行される学習処理において、近似テーブルにより近似的に表現されている活性化関数が選択された場合に呼び出され、活性化関数演算を実行する。具体的には、活性化演算部540は、活性化関数演算のために選択された特定の活性化関数についてテーブル保持部530により保持されている近似テーブルを用いて、活性化関数演算の入力値を出力値へ変換する。活性化演算部540は、入力値が近似テーブルのいずれかの入力サンプルに等しい場合には、その入力サンプルにマッピングされている出力サンプルを出力値として出力する。一方、活性化演算部540は、入力値が近似テーブルのいずれの入力サンプルにも等しくない場合には、当該入力値を上回る最小入力サンプル及び当該入力値を下回る最大入力サンプルと、それぞれ対応する出力サンプルとを近似テーブルから取得する。そして、活性化演算部540は、取得した2つの入出力サンプルペアに基づく補間によって、入力値を出力値へ変換する。典型的には、ここでの補間は、単純な線形補間(線形内挿)であってよい。例外的に、活性化演算部540は、近似テーブルにおける最も外側の入力サンプルよりも入力値が定義域において外側に位置する場合には、すぐ内側の2つの入力サンプル及び対応する出力サンプルに基づく線形外挿によって、入力値を出力値へ変換してもよい。また、活性化演算部540は、表2を用いて説明したように、定義域に設定される区間の各々について予め傾きが与えられる場合には、その傾きを用いて出力値を導出してもよい。なお、活性化演算部540は、より多くの入出力サンプルペアに基づいて、スプライン補間などの曲線補間によって出力値を導出してもよい。そして、活性化演算部540は、導出した出力値を、関数呼び出しに対する応答として学習部520へ返却する。
【0046】
選択された活性化関数が対点に関し点対称、又は対称軸に関し線対である場合、テーブル保持部530により保持されている近似テーブルは、定義域における対点又は対称軸の一方の側についてのみサンプル値を定義しているかもしれない。この場合、活性化演算部540は、演算に先立って、対点又は対称軸の他方の側についての活性化関数のサンプル値を、近似テーブルにより定義されているサンプル値に基づいて生成して、活性化関数演算のために使用し得る。
【0047】
学習部520は、出力データの誤差に基づいてモデルパラメータを更新する際に、バックプロパゲーションという手法で、モデルパラメータをどの方向へ修正すれば誤差が減少し得るかを判定する。バックプロパゲーションを有効に機能させるためには、概して、活性化関数の導関数が利用可能であることが必要である。傾き取得部550は、学習部520により実行される学習処理におけるバックプロパゲーションのために学習部520により呼び出され、活性化関数の導関数の値の近似値を取得して学習部520へ返却する。具体的には、傾き取得部550は、入力値を上回る最小入力サンプル及び当該入力値を下回る最大入力サンプルと、それぞれ対応する出力サンプルとをテーブル保持部530により保持されている近似テーブルから取得する。そして、活性化演算部540は、取得した2つの入出力サンプルペアの間の傾きを、その入力値に対応する活性化関数の導関数の値の近似値として導出する。近似テーブルにおける最も外側の入力サンプルよりも入力値が定義域において外側に位置する場合には、すぐ内側の2つの入力サンプル及び対応する出力サンプルに基づいて導出される傾きが、その入力値に対応する導関数の値の近似値として用いられてよい。なお、傾き取得部550は、表2を用いて説明したように、定義域に設定される区間の各々について予め傾きが近似テーブルにおいて与えられる場合には、その傾きをそのまま取得して学習部520へ返却してもよい。
【0048】
モデル記憶部560は、学習部520により上述した学習処理の結果として導出されたモデルパラメータのセットを、学習済みモデルとして、例えばHDD304のような記憶手段を用いて記憶する。学習済みモデルは、ニューラルネットワークの各層において利用される活性化関数の種類を識別するパラメータを含んでもよい。
【0049】
<2-4.推論装置>
図6は、一実施形態に係る推論装置600の機能面の構成の一例を示すブロック図である。図6を参照すると、推論装置600は、入力取得部610、モデル記憶部620、推論部630、テーブル保持部640、活性化演算部650及び結果出力部660を備える。
【0050】
入力取得部610は、推論のために学習済みモデルに適用される入力データを取得する。入力データは、学習処理の際にニューラルネットワークの入力層へ入力された1単位の学習用データと同等の形式のデータであり得る。入力取得部610は、取得した入力データを推論部630へ出力する。
【0051】
モデル記憶部620は、学習装置500により上述した学習処理の結果として導出された学習済みモデルを、例えばHDD304のような記憶手段を用いて記憶している。学習済みモデルは、ニューラルネットワークの各層において利用される活性化関数の種類を識別するパラメータを含み得る。こうした学習済みモデルは、推論処理の実行の際に、モデル記憶部620から推論部630へ読出される。
【0052】
推論部630は、モデル記憶部620から読出される学習済みモデルのパラメータに従って、例えばメモリ302に学習済みモデルを構築する。また、推論部630は、入力取得部610から入力される入力データを学習済みモデルに適用して推論結果を導出する。そして、推論部630は、導出した推論結果を結果出力部660へ出力する。
【0053】
テーブル保持部640は、テーブル生成装置400により予め生成された、ニューラルネットワークの活性化関数を近似的に表現する近似テーブルを記憶手段を用いて保持する。テーブル保持部640により保持される近似テーブルは、活性化関数の離散的な複数の入力サンプルとそれら入力サンプルにそれぞれ対応する出力サンプルとをマッピングするテーブルである。近似テーブルの複数の入力サンプルは、活性化関数の定義域において基準点からより遠い入力サンプルがより大きい隣接サンプル間隔を有するように設定されている。ニューラルネットワークにおいて複数の種類の活性化関数が利用される場合、テーブル保持部640は、それら活性化関数について別個の近似テーブルを保持していてもよい。但し、テーブル保持部640は、ステップ関数及びReLU関数といった計算負荷の低い活性化関数については、近似テーブルを保持しなくてよい。
【0054】
活性化演算部650は、推論部630により実行される推論処理において、近似テーブルにより近似的に表現されている活性化関数が選択された場合に呼び出され、活性化関数演算を実行する。具体的には、活性化演算部650は、活性化関数演算のために選択された特定の活性化関数についてテーブル保持部640により保持されている近似テーブルを用いて、活性化関数演算の入力値を出力値へ変換する。ここでの入力値から出力値への変換の手法は、学習装置500の活性化演算部540に関連して説明した手法と同様であってよい。そして、活性化演算部650は、導出した出力値を、関数呼び出しに対する応答として推論部630へ返却する。活性化演算部650は、学習装置500の活性化演算部540と同様に、対称性を活用して部分的に省略されている近似テーブルのデータから、テーブルの全体を復元して使用してもよい。
【0055】
結果出力部660は、推論部630から入力される推論の結果を、例えば操作部306のディスプレイ等の出力デバイス又は通信I/F305を介して出力(例えば、表示、音声出力又は他の装置へ送信)する。
【0056】
<<3.処理の流れ>>
<3-1.テーブル生成処理>
図9は、本実施形態に係るテーブル生成装置400により実行され得る近似テーブル生成処理の流れの一例を示すフローチャートである。図9に示した処理は、テーブル生成装置400のプロセッサ(例えば、CPU301)がメモリ(例えば、メモリ302)へロードされるコンピュータプログラムを実行することにより実現され得る。なお、以下の説明では、処理ステップをS(ステップ)と略記する。
【0057】
まず、S901で、受付部410は、近似テーブルの生成の対象となるニューラルネットワークの活性化関数の指定を受付ける。次いで、S903で、生成部420は、指定された活性化関数の定義域において、例えば活性化関数の傾きの絶対値が極大となる点を判定することにより(又は、原点に若しくはユーザにより指定される位置に)、近似テーブルの基準点を設定する。次いで、S905で、生成部420は、例えば基準点における活性化関数の二次導関数の値に基づいて(又は、予め定義され若しくはユーザにより指定される値として)、近似テーブルの基本サンプル間隔を設定する。次いで、S907で、生成部420は、基準点からより遠い入力サンプルがより大きい隣接サンプル間隔を有するように、複数の入力サンプルについての隣接サンプル間隔を設定する。生成部420は、例えば、隣接サンプル間隔を等比的に若しくは等差的に設定してもよく、又は活性化関数の二次導関数の値に基づいて設定してもよい。次いで、S909で、生成部420は、S907で設定した隣接サンプル間隔について、隣り合う入力サンプル間の区間における活性化関数の傾きの変化量を検証し、必要に応じて隣接サンプル間隔又は入力サンプルの個数を調整する。次いで、S911で、生成部420は、S907で設定され又はS909で調整された間隔を有する入力サンプルにそれぞれ対応する出力サンプルを、活性化関数演算を通じて取得する。次いで、S913で、生成部420は、複数の入力サンプルと対応する出力サンプルとをマッピングする近似テーブルを生成する。次いで、S915で、生成部420は、定義域において最も外側のサンプルの入出力サンプル値(又は最も外側の区間の傾き)を近似テーブルに追加する。このように生成された近似テーブルが、例えば活性化関数の種類を識別するパラメータに関連付けて、テーブル保持部430により保持される。
【0058】
<3-2.学習処理>
図10(A)は、本実施形態に係る学習装置500により実行され得る学習処理の流れの一例を示すフローチャートである。図10(B)は、図10(A)のS1005の一部として実行され得る活性化関数処理の流れの一例を示すフローチャートである。これら処理は、学習装置500のプロセッサ(例えば、CPU301)がメモリ(例えば、メモリ302)へロードされるコンピュータプログラムを実行することにより実現され得る。処理の一部は、(例えば、ASIC307において実装される)ハードウェアロジックにより実現されてもよい。
【0059】
図10(A)の学習処理において、まず、S1001で、学習部520は、ニューラルネットワークの各層の重み及びバイアスといったパラメータに初期値を与えることにより、ニューラルネットワークモデルを初期化する。その後の処理は、データ取得部510により取得される学習用データセットに含まれる1単位の学習用データごとに繰返される。各繰返しにおいて、S1003で、学習部520は、1単位の学習用データを取得する。次いで、S1005で、学習部520は、取得した学習用データをニューラルネットワークの入力層へ入力し、現行のモデルに従って中間層の様々な演算を経て出力層において出力データを導出する。中間層(及び出力層)での処理には、後述する活性化関数処理が含まれ得る。次いで、S1007で、学習部520は、導出した出力データを教師データと比較することにより、現行のモデルの誤差を評価する。次いで、S1009で、学習部520は、評価した誤差が減少するように、バックプロパゲーションによってモデルパラメータを調整する。ここでのバックプロパゲーションにおいて、傾き取得部550は、活性化関数の入力値に対応する活性化関数の導関数の値の近似値として、テーブル保持部530により保持されている近似テーブルの2つの入出力サンプルペアの間の傾きを取得し得る。次いで、S1011で、学習部520は、学習処理を終了するか否かを判定する。例えば、所定の量の学習用データが処理済みとなった場合、又は学習が十分に収束したと判定される場合に、学習部520は、学習処理を終了すると判定し得る。学習処理を終了しない場合、次の学習用データについてS1003~S1011が繰返される。学習処理を終了する場合、S1013で、学習部520は学習済みモデルをモデル記憶部560へ出力し、モデル記憶部560は学習済みモデルを記憶する。
【0060】
図10(B)の活性化関数処理において、まず、S1021で、学習部520は、ある層における活性化関数演算のための活性化関数を選択する。ここで、近似テーブルで近似的に表現された活性化関数が選択された場合、処理はS1023へ進み、学習部520により活性化演算部540が呼び出される。近似された活性化関数ではない活性化関数が選択された場合、処理はS1031へ進む。
【0061】
S1023で、活性化演算部540は、選択された活性化関数の近似テーブルをテーブル保持部530から取得する。ここで、活性化演算部540は、活性化関数の対称性を活用して近似テーブルの一部が省略されている場合には、例えばエントリをミラーリングすることにより近似テーブルの全体を復元し得る。次いで、S1025で、活性化演算部540は、学習部520から入力される入力値が、近似的な活性化関数を構成する(入力サンプルで区分される)区間のうちのどの区間に属するかを判定する。次いで、S1027で、活性化演算部540は、判定した区間の両端の入力サンプル及びそれらに対応する出力サンプルを、近似テーブルから取得する。次いで、S1029で、活性化演算部540は、取得した入力サンプル及び対応する出力サンプルに基づく線形補間によって、入力値を出力値へ変換する。そして、活性化演算部540は、出力値を学習部520へ返却する。
【0062】
一方、S1031では、学習部520は、選択された活性化関数に入力値を代入して、活性化関数の出力値を算出する。
【0063】
<3-3.推論処理>
図11は、本実施形態に係る推論装置600により実行され得る推論処理の流れの一例を示すフローチャートである。図11に示した処理は、推論装置600のプロセッサ(例えば、CPU301)がメモリ(例えば、メモリ302)へロードされるコンピュータプログラムを実行することにより実現され得る。推論装置600の一部は、(例えば、ASIC307において実装される)ハードウェアロジックにより実現されてもよい。
【0064】
まず、S1101で、推論部630は、モデル記憶部620により記憶されている学習済みモデルを取得し、取得した学習済みモデルのパラメータに従って学習済みモデルをメモリ上に構築する。次いで、S1103で、推論部630は、入力取得部610を通じて、学習済みモデルに適用されるべき入力データを取得する。次いで、S1105で、推論部630は、取得した入力データを学習済みモデルへ適用することにより、推論結果を導出する。ここで実行される中間層(及び出力層)での演算処理は、活性化演算部650により実行される活性化関数処理を含み得る。活性化関数処理の流れは、図10を用いて説明した流れと同様であってよいため、ここでは詳細な説明を省略する。次いで、S1107で、推論部630は、導出した推論結果を結果出力部660へ出力する。
【0065】
<<4.変形例>>
学習処理において、学習用データのデータ値の分布が変動すると、中間層の挙動が不安定化し、学習の収束が妨げられ、望ましい学習結果が得られないことがある。こうした分布の変動を吸収して学習処理を効率的に進めるための手法として、いわゆるバッチ正規化(Batch Normalization)が知られている。バッチ正規化は、通常、ニューロン演算と活性化関数演算との間で行われる。バッチ正規化では、例えば、所定回数の学習処理の繰返しに相当するミニバッチ単位で中間的な信号値の分布の変動が判定され、判定された変動を相殺するように各信号値が調整される。それにより、ミニバッチ単位の分布が正規化されて中間層の挙動の不安定化が回避される。
【0066】
上述した実施形態の一変形例において、活性化関数の近似テーブルを変形することで、バッチ正規化を実質的に活性化関数演算の中に取込むことが可能である。近似テーブルの変形は、活性化関数演算に先立って、ミニバッチ単位の分布の変動を相殺するように近似テーブルの入力サンプルの値を調整することにより行われ得る。具体的には、活性化演算部540は、学習処理の途中で中間層で処理される中間データ(例えば、図1の例における中間値Y1、2、)のミニバッチ単位の平均及び分散を算出する。また、活性化演算部540は、ミニバッチ単位の平均の変動を相殺するためのオフセット値、及びをミニバッチ単位の分散の変動を相殺するための倍率を決定する。そして、活性化演算部540は、活性化関数の近似テーブルにより示される複数の入力サンプルの値をオフセット(オフセット値を加算)し及びスケーリング(倍率を乗算)する。
【0067】
図12は、本変形例に係るミニバッチ単位の入力サンプル値の調整について説明するための説明図である。図12(A)には、図7に示した曲線700と同様のシグモイド曲線1201が、近似テーブルに設定された入力サンプル及び対応する出力サンプルの位置と共に示されている。図12(B)に示した曲線1202は、シグモイド曲線1201の入力サンプル値にオフセット値を加算した結果、近似テーブルが表現することになる、調整後のシグモイド曲線である。曲線1202において、例えば基準点の位置がオフセットによって右方向に移動していることが図から見て取れる。図12(C)に示した曲線1203は、シグモイド曲線1201の入力サンプル値に倍率を乗算した結果、近似テーブルが表現することになる、調整後のシグモイド曲線である。曲線1203において、例えば隣接サンプル間隔が拡大していることが図から見て取れる。このように近似テーブルの隣接サンプル間隔を拡大することは、その近似テーブルを用いた活性化関数演算に、信号値の分散を引下げる効果を付与する。逆に、近似テーブルの隣接サンプル間隔を縮小することで、その近似テーブルを用いた活性化関数演算に、信号値の分散を引上げる効果を付与する。近似テーブルの調整は、1つのミニバッチについて一度行われればよい。このように調整された近似テーブルを活性化関数演算において使用することで、活性化関数演算とは別個に個々の学習用データについてバッチ正規化を実行することが不要となる。
【0068】
図13は、本変形例に係る活性化関数処理の流れの一例を示すフローチャートである。活性化関数処理は、例えば図10(A)を用いて説明した学習処理のS1005の一部として実行され得る。活性化関数処理は、学習装置500のプロセッサ(例えば、CPU301)がメモリ(例えば、メモリ302)へロードされるコンピュータプログラムを実行することにより実現され得る。処理の一部は、(例えば、ASIC307において実装される)ハードウェアロジックにより実現されてもよい。
【0069】
ここでは、ある層における出力値を算出するために、近似テーブルで近似的に表現された活性化関数が選択されたものとする。まず、S1301で、活性化演算部540は、活性化関数の近似テーブルをテーブル保持部530から取得する。活性化関数の対称性を活用して近似テーブルの一部が省略されている場合には、活性化演算部540は、例えばエントリをミラーリングすることにより近似テーブルの全体を復元し得る。次いで、S1303で、活性化演算部540は、バッチ正規化を行うか否かを判定する。例えば、活性化演算部540は、学習処理の繰返しがミニバッチに相当する所定の回数に達したタイミングで、バッチ正規化を行うと判定し得る。バッチ正規化を行うと判定した場合、S1305で、活性化演算部540は、ミニバッチ単位の中間データの平均及び分散を算出する。次いで、S1307で、活性化演算部540は、S1305で算出した平均及び分散の変動を相殺するように、近似テーブルの入力サンプルの値を調整(オフセット/スケーリング)する。なお、活性化演算部540は、ミニバッチ単位の中間データの平均及び分散が所定の条件を満たす場合にのみ、近似テーブルの入力サンプルの値を調整してもよい。ここでの所定の条件とは、例えば、平均の変動が予め設定される第1の閾値を上回ること、又は分散の変動が予め設定される第2の閾値を上回ることなどであり得る。その後のS1309~S1313は、図10を用いて説明したS125~S129と同様のステップであるため、ここでは詳細な説明を省略する。
【0070】
<<5.まとめ>>
ここまで、図1図13を用いて、本開示の実施形態及び変形例について詳細に説明した。上述した実施形態では、ニューラルネットワークの活性化関数の近似テーブルにおいて、複数の入力サンプルが、関数の定義域において基準点からより遠い入力サンプルがより大きい隣接サンプル間隔を有するように設定される。そして、その近似テーブルを用いて、活性化関数演算の入力値が出力値へ変換される。かかる構成によれば、傾きの変化が少ない領域に必要以上に多くのサンプルを割当てることなく、活性化関数の定義域の全体にわたり十分な近似の精度を確保することができる。その結果、メモリリソースの浪費を防ぎながら、低減された計算負荷で活性化関数演算を実行することが可能となる。こうした演算装置のリソースの効率的な活用という利点は、ニューラルネットワークを利用した学習処理を行う学習段階においても、学習済みモデルに基づいて推論処理を行う推論段階においても享受され得る。
【0071】
また、上述した実施形態では、活性化関数演算の入力値を上回る最小入力サンプル及び上記入力値を下回る最大入力サンプルと、それぞれ対応する出力サンプルとに基づく補間によって、上記入力値が上記出力値へ変換され得る。かかる構成によれば、上記近似テーブルからのサンプル値の取得及び取得したサンプル値に基づく補間という簡易な処理で、ニューラルネットワークの各層の出力値を導出することができる。このとき、例えば指数関数演算又は対数演算といった計算負荷の高い演算は必要とされない。
【0072】
また、上述した実施形態では、対称性を有する活性化関数について、上記近似テーブルの上記複数の入力サンプルは定義域の一部においてのみ定義され、残りの入力サンプルは活性化関数演算の際に生成され得る。かかる構成によれば、近似テーブルを保持するメモリのリソースをさらに節約することができる。
【0073】
また、上述した実施形態では、上記近似テーブルを生成する際に、上記基準点は、原点又は活性化関数の傾きの絶対値が極大となる点に自動的に設定され得る。かかる構成によれば、活性化関数の変化の大きい領域において隣接サンプル間隔を小さくして入力サンプルの密度を高め、活性化関数の固有の性質を近似テーブルに十分に反映させることができる。活性化関数の傾きが極大となる複数の極大点が存在する場合には、複数の基準点が設定されてもよい。この場合、例えばユーザ独自の特殊な活性化関数についても適切な近似テーブルを柔軟に生成することができる。
【0074】
また、上述した実施形態では、活性化関数の二次導関数の値に基づいて、隣接サンプル間隔が設定され得る。この場合、隣接サンプル間の区間における出力値の変化量が過度に大きくならないように、かつ隣接サンプル間隔が小さ過ぎないように、適切に隣接サンプル間隔を設定することが可能である。隣接サンプル間隔は、上記基準点における基本サンプル間隔を基準として、上記基準点から遠くなるにつれて間隔が一定の比率又は一定の差分で増加するように設定されてもよい。この場合、入力サンプルの値は単純な等比数列又は等差数列となるため、活性化関数の種類に関わらず上記近似テーブルを容易に生成することが可能である。
【0075】
また、上述した変形例では、ニューラルネットワークの中間層で処理される中間データのミニバッチ単位の平均又は分散に基づいて、上記近似テーブルにより示された入力サンプルの値が調整され、調整後の上記近似テーブルが使用され得る。かかる構成によれば、活性化関数演算とは別個にバッチ正規化を実行することなく、中間層の挙動を安定化させて学習処理を円滑に進めることが可能となる。
【0076】
<<6.その他の実施形態>>
上記実施形態は、1つ以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出して実行する処理の形式でも実現可能である。また、1つ以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0077】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【0078】
500:学習装置(演算装置)、530:テーブル保持部、540:活性化演算部、550:傾き取得部、600:推論装置(演算装置)、640:テーブル保持部、650:活性化演算部、400:テーブル生成装置、410:受付部、420:生成部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13