(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-13
(45)【発行日】2024-08-21
(54)【発明の名称】情報処理装置、及びプログラム
(51)【国際特許分類】
G06N 3/082 20230101AFI20240814BHJP
G06N 3/0495 20230101ALI20240814BHJP
G06N 20/00 20190101ALI20240814BHJP
【FI】
G06N3/082
G06N3/0495
G06N20/00
(21)【出願番号】P 2020140900
(22)【出願日】2020-08-24
【審査請求日】2023-06-01
(73)【特許権者】
【識別番号】520235128
【氏名又は名称】アシオット株式会社
(74)【代理人】
【識別番号】100085316
【氏名又は名称】福島 三雄
(74)【代理人】
【識別番号】100171572
【氏名又は名称】塩田 哲也
(74)【代理人】
【識別番号】100213425
【氏名又は名称】福島 正憲
(74)【代理人】
【識別番号】100221707
【氏名又は名称】宮崎 洋介
(74)【代理人】
【識別番号】100221718
【氏名又は名称】藤原 誠悟
(72)【発明者】
【氏名】三上 楊平
(72)【発明者】
【氏名】武 海栄
【審査官】佐藤 直樹
(56)【参考文献】
【文献】特開2019-160319(JP,A)
【文献】特開2019-128831(JP,A)
【文献】国際公開第2019/210237(WO,A1)
【文献】特開平05-101209(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/082
G06N 3/0495
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
学習済みニューラルネットワークのデータサイズを小さくする情報処理装置であって、
前記学習済みニューラルネットワークにアクセスして、前記学習済みニューラルネットワークのレイヤ情報を含むネットワーク構造と学習済みパラメータとを取得する取得部と、
前記取得部によって取得された前記ネットワーク構造に応じて、前記学習済みニューラルネットワークに含まれる一のレイヤと他のレイヤとが合併可能か否かを判定する合併判定部と、
前記取得部によって取得された前記ネットワーク構造及び前記学習済みパラメータに応じて、前記合併判定部によって合併可能と判定された前記一のレイヤと前記他のレイヤとを合併して合併レイヤを作成する合併部と、
推論処理に不要となるレイヤの種類のパターンが記録された削除可能テーブルを参照することで、前記学習済みニューラルネットワークか
ら前記推論処理に不要なレイヤを検索して削除する削除部と、を備えてなり、
前記削除部は、前記合併部による合併処理の後に、推論処理に不要な前記レイヤを削除する
ことを特徴とする情報処理装置。
【請求項2】
前記合併部は、前記他のレイヤの前記レイヤ情報及び前記学習済みパラメータに応じて前記一のレイヤの前記レイヤ情報若しくは前記学習済みパラメータを変更することで、前記合併レイヤを作成し、
前記削除部は、前記合併部による合併処理の後に、前記他のレイヤを含む推論処理に不要な前記レイヤを削除する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
さらに、前記情報処理装置は、前記学習済みニューラルネットワークに含まれる前記学習済みパラメータの数値表現の形式を変換する数値表現変換部を備え、
変換後における前記数値表現の形式は、前記学習済みニューラルネットワークによる推論処理が行われるハードウェアの性能に応じて決定される
ことを特徴とする請求項1若しくは2のいずれか1つに記載の情報処理装置。
【請求項4】
さらに、前記情報処理装置は、レイヤの計算方法を選択する計算方法選択部を備え、
前記計算方法選択部は、前記レイヤの種類を含むレイヤ情報に応じてレイヤの計算方法を決定する
ことを特徴とする請求項1~3のいずれか1つに記載の情報処理装置。
【請求項5】
さらに、前記情報処理装置は、
前記学習済みニューラルネットワークに含まれるループ処理若しくは再帰処理を検索し、検索された該ループ処理若しくは該再帰処理を展開する展開部を備える
ことを特徴とする請求項1~4のいずれか1つに記載の情報処理装置。
【請求項6】
学習済みニューラルネットワークにアクセス可能な情報処理装置に対して、前記学習済みニューラルネットワークのデータサイズを小さくする処理を行わせるためのプログラムであって、
前記情報処理装置に、
前記学習済みニューラルネットワークにアクセスして、前記学習済みニューラルネットワークのレイヤ情報を含むネットワーク構造と学習済みパラメータとを取得し、
前記ネットワーク構造に応じて、前記学習済みニューラルネットワークに含まれる一のレイヤと他のレイヤとが合併可能か否かを判定し、
前記ネットワーク構造及び前記学習済みパラメータに応じて、合併可能と判定された前記一のレイヤと前記他のレイヤとを合併して合併レイヤを作成し、
推論処理に不要となるレイヤの種類のパターンが記録された削除可能テーブルを参照することで、前記学習済みニューラルネットワークか
ら前記推論処理に不要なレイヤを検索して削除する
処理を行わせるプログラム。
【請求項7】
前記合併レイヤは、前記他のレイヤの前記レイヤ情報及び前記学習済みパラメータに応じて前記一のレイヤの前記レイヤ情報若しくは前記学習済みパラメータを変更することで
作成され、
推論処理に不要な前記レイヤには、合併後の前記他のレイヤが含まれる
ことを特徴とする請求項6に記載のプログラム。
【請求項8】
さらに、前記情報処理装置に、
前記学習済みニューラルネットワークによる推論処理が行われるハードウェアの性能に応じて、前記学習済みニューラルネットワークに含まれる学習済みパラメータの数値表現の形式を変換する処理を行わせる
ことを特徴とする請求項6若しくは7のいずれか1つに記載のプログラム。
【請求項9】
さらに、前記情報処理装置に、
前記レイヤの種類を含むレイヤ情報に応じて、レイヤの計算方法を選択する処理を行わせる
ことを特徴とする請求項6~8のいずれか1つに記載のプログラム。
【請求項10】
さらに、前記情報処理装置に、
前記学習済みニューラルネットワークに含まれるループ処理若しくは再帰処理を検索し、検索された該ループ処理若しくは該再帰処理を展開する処理を行わせる
ことを特徴とする請求項6~9のいずれか1つに記載のプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、学習済みニューラルネットワークのデータサイズを小さくする情報処理装置、及びプログラムに関する。
【背景技術】
【0002】
従来、精度の低下を防ぎつつ、多層ニューラルネットワークにおける層を削除する学習装置として、特許文献1では「多層ニューラルネットワークにおける各層について、該多層ニューラルネットワークの推定結果に対する寄与の度合いを示す寄与度をそれぞれ計算する計算部と、前記計算部によって計算された各層の寄与度に基づいて、削除対象の層を選択する選択部と、前記選択部によって選択された削除対象の層を前記多層ニューラルネットワークから削除する削除部と、前記削除部によって削除対象の層が削除された多層ニューラルネットワークの学習を行う学習部とを有することを特徴とする学習装置」が開示されていた。
【先行技術文献】
【特許文献】
【0003】
【非特許文献】
【0004】
【文献】Benoit Jacob, Skirmantas Kligys, et. al. Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference.arXiv:1712.05877, 2017.
【文献】Dhiraj Kalamkar, Dheevatsa Mudigere, et. al. A Study of BFLOAT16 for Deep Learning Training.arXiv:1905.12322, 2019.
【文献】Adrian Bulat, Georgios Tzimiropoulos. XNOR-Net++: Improved Binary Neural Networks. arXiv:1909.13863, 2019.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、従来技術は削除対象の層を削除することで、多層ニューラルネットワークによる推論の精度が低下し、当該精度低下を補うために再学習を余儀なくされるものであった。
【課題を解決するための手段】
【0006】
そこで、本発明に係る情報処理装置は、学習済みニューラルネットワークのデータサイズを小さくする情報処理装置であって、前記学習済みニューラルネットワークにアクセスして、前記学習済みニューラルネットワークのレイヤ情報を含むネットワーク構造と学習済みパラメータとを取得する取得部と、前記取得部によって取得された前記ネットワーク構造に応じて、前記学習済みニューラルネットワークに含まれる一のレイヤと他のレイヤとが合併可能か否かを判定する合併判定部と、前記取得部によって取得された前記ネットワーク構造及び前記学習済みパラメータに応じて、前記合併判定部によって合併可能と判定された前記一のレイヤと前記他のレイヤとを合併して合併レイヤを作成する合併部と、前記学習済みニューラルネットワークから推論処理に不要なレイヤを検索して削除する削除部と、を備えてなり、前記削除部は、前記合併部による合併処理の後に、推論処理に不要な前記レイヤを削除することを特徴とする。
【0007】
また、前記合併部は、前記他のレイヤの前記レイヤ情報及び前記学習済みパラメータに応じて前記一のレイヤの前記レイヤ情報若しくは前記学習済みパラメータを変更することで、前記合併レイヤを作成し、前記削除部は、前記合併部による合併処理の後に、前記他のレイヤを含む推論処理に不要な前記レイヤを削除することとしてもよい。
【0008】
また、前記情報処理装置は、前記学習済みニューラルネットワークに含まれる前記学習済みパラメータの数値表現の形式を変換する数値表現変換部を備え、変換後における前記数値表現の形式は、前記学習済みニューラルネットワークによる推論処理が行われるハードウェアの性能に応じて決定されることとしてもよい。
【0009】
また、前記情報処理装置は、レイヤの計算方法を選択する計算方法選択部を備え、前記計算方法選択部は、前記レイヤの種類を含むレイヤ情報に応じてレイヤの計算方法を決定することとしてもよい。
【0010】
また、前記情報処理装置は、前記学習済みニューラルネットワークに含まれるループ処理若しくは再帰処理を検索し、検索された該ループ処理若しくは該再帰処理を展開する展開部を備えることとしてもよい。
【0011】
また、本発明に係るプログラムは、学習済みニューラルネットワークにアクセス可能な情報処理装置に対して、前記学習済みニューラルネットワークのデータサイズを小さくする処理を行わせるためのプログラムであって、前記情報処理装置に、前記学習済みニューラルネットワークにアクセスして、前記学習済みニューラルネットワークのレイヤ情報を含むネットワーク構造と学習済みパラメータとを取得し、前記ネットワーク構造に応じて、前記学習済みニューラルネットワークに含まれる一のレイヤと他のレイヤとが合併可能か否かを判定し、前記ネットワーク構造及び前記学習済みパラメータに応じて、合併可能と判定された前記一のレイヤと前記他のレイヤとを合併して合併レイヤを作成し、前記学習済みニューラルネットワークから推論処理に不要なレイヤを検索して削除する処理を行わせることを特徴とする。
【0012】
また、前記合併レイヤは、前記他のレイヤの前記レイヤ情報及び前記学習済みパラメータに応じて前記一のレイヤの前記レイヤ情報若しくは前記学習済みパラメータを変更することで作成され、推論処理に不要な前記レイヤには、合併後の前記他のレイヤが含まれることとしてもよい。
【0013】
また、前記プログラムは、前記情報処理装置に、前記学習済みニューラルネットワークによる推論処理が行われるハードウェアの性能に応じて、前記学習済みニューラルネットワークに含まれる学習済みパラメータの数値表現の形式を変換する処理を行わせることとしてもよい。
【0014】
また、前記プログラムは、前記情報処理装置に、前記レイヤの種類を含むレイヤ情報に応じて、レイヤの計算方法を選択する処理を行わせることとしてもよい。
【0015】
また、前記プログラムは、前記情報処理装置に、前記学習済みニューラルネットワークに含まれるループ処理若しくは再帰処理を検索し、検索された該ループ処理若しくは該再帰処理を展開する処理を行わせることとしてもよい。
【0016】
なお、レイヤ情報とは、学習済みニューラルネットワークに含まれるそれぞれのレイヤ(層)に関する情報であって、例えば、所定のレイヤに含まれるニューロン(オペレータ)の数、所定のレイヤに含まれる各ニューロンに対する入力情報の経路、所定のレイヤに含まれる各ニューロンから出力される出力情報の経路等が含まれる。
【0017】
なお、ネットワーク構造とは、学習済みニューラルネットワークの構造であって、例えば、各レイヤの並び方、各レイヤの種類、各レイヤ間の情報の入出力の経路等が含まれる。なお、各レイヤの種類とは、例えば、畳み込みレイヤ(Convolution layer)、プーリングレイヤ(Pooing layer)、バッチ正則化レイヤ(Batch Normalization layer)等のレイヤの種類をいう。
【0018】
なお、学習済みパラメータとは、学習段階で調整されたパラメータであって、例えば、重み(Weight)、バイアス(Bias)等を含む。
【0019】
なお、推論処理に不要なレイヤとは、学習済みニューラルネットワークを使用して推論処理を行う際に、推論処理の精度を維持するために不要なレイヤをいう。例えば、ドロップアウトレイヤ(Dropout layer)、1×1のプーリングレイヤ(Pooling 1×1 layer)等を含む。また、推論処理に不要なレイヤには、合併処理後の他のレイヤを含むこととしてもよい。推論処理に不要なレイヤに合併処理後の他のレイヤを含める場合、他のレイヤは、合併処理のタイミングでは消滅しないこととなる。
【発明の効果】
【0020】
本発明によれば、合併可能な一のレイヤと他のレイヤとを合併すると共に、学習済みニューラルネットワークによって推論処理を行う際に、推論処理に不要となるレイヤを削除することができる。これにより、学習済みニューラルネットワークの推論精度を維持するとともに、容易に学習済みニューラルネットワークのデータサイズを小さくすることができる。
【図面の簡単な説明】
【0021】
【
図1】実施形態における情報処理装置111の機能ブロック図である。
【
図2】実施形態における情報処理装置111のハードウェア構成図である。
【
図3】実施形態における処理前の学習済みニューラルネットワークを示す図である。
【
図4】実施形態における情報処理装置111のフロー図である。
【
図5】実施形態における合併処理後の学習済みニューラルネットワークを示す図である。
【
図6】実施形態における削除処理後の学習済みニューラルネットワークを示す図である。
【
図7】実施例1における情報処理装置211の機能ブロック図である。
【
図8】実施例1における情報処理装置211のハードウェア構成図である。
【
図9】実施例1における処理前の学習済みニューラルネットワークを示す図である。
【
図10】実施例1における情報処理装置211のフロー図である。
【
図11】実施例1における処理途中の学習済みニューラルネットワークを示す図である。
【
図12】実施例1における処理途中の学習済みニューラルネットワークを示す図である。
【
図13】実施例1における処理途中の学習済みニューラルネットワークを示す図である。
【
図14】実施例1における処理後の学習済みニューラルネットワークを示す図である。
【
図15】実施例2における情報処理装置211の機能ブロック図である。
【
図16】実施例2における情報処理装置211のフロー図である。
【発明を実施するための形態】
【0022】
以下、本発明に係る実施の形態を、図を参照しながら詳しく説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。なお、以下で示す実施形態及び実施例は、いずれも本発明の一例を示したものである。このため、実施形態及び実施例の記載は本発明の技術的範囲を限定するものではない。
【0023】
情報処理装置111は、学習済みニューラルネットワークのデータサイズを小さくする処理を行うものである。
まず初めに、本実施形態の一例である情報処理装置111の構成を、図面を参照しながら詳しく説明する。
【0024】
情報処理装置111は、学習済みニューラルネットワークにアクセスして、学習済みニューラルネットワークのレイヤ情報を含むネットワーク構造と学習済みパラメータとを取得する取得部113と、取得部113によって取得されたネットワーク構造に応じて、学習済みニューラルネットワークに含まれる一のレイヤと他のレイヤとが合併可能か否かを判定する合併判定部115と、取得部113によって取得されたネットワーク構造及び学習済みパラメータに応じて、合併判定部115によって合併可能と判定された一のレイヤと他のレイヤとを合併して合併レイヤを作成する合併部116と、学習済みニューラルネットワークから推論処理に不要なレイヤを検索して削除する削除部117と、を含んでなり、削除部117は、合併部116による合併処理の後に、推論処理に不要なレイヤを削除するものである。
また、合併部116は、他のレイヤのレイヤ情報及び学習済みパラメータに応じて一のレイヤのレイヤ情報若しくは学習済みパラメータを変更することで、前記合併レイヤを作成し、削除部117は、合併部116による合併処理の後に、他のレイヤを含む推論処理に不要なレイヤを削除することができる。
【0025】
図1は実施形態における情報処理装置111の機能ブロック図である。情報処理装置111は、
図1に示すように、制御部112と相互に情報の送受信が可能に構成されてなる取得部113、解析部114、合併判定部115、合併部116、及び削除部117を含む。これらの機能部は、いずれも情報処理装置111のハードウェアとソフトウェアとが協働した具体的手段によって実現されるものである。
【0026】
取得部113は、学習済みニューラルネットワークにアクセスして、学習済みニューラルネットワークのレイヤ情報を含むネットワーク構造と学習済みパラメータとを取得する。例えば、取得部113は、情報処理装置111のハードディスク125若しくはメモリ122に記憶された学習済みニューラルネットワークにアクセスし、学習済みニューラルネットワークが有するレイヤ情報を含むネットワーク構造と学習済みパラメータとを取得することができる。
なお、ここでは情報処理装置111に記憶された学習済みニューラルネットワークにアクセスする例を示したが、学習済みニューラルネットワークは情報処理装置111に記憶されているものに限られず、例えば、情報処理装置111が入力として受け取った学習済みニューラルネットワークにアクセスしてもよく、また、他の情報処理装置に記憶された学習済みニューラルネットワークに通信部126を介してアクセスすることとしてもよい。
【0027】
解析部114は、取得部113が取得したネットワーク構造と学習済みパラメータとを解析する。例えば、この解析処理は学習済みニューラルネットワークを表現するソースコードを解析することにより実現することができる。より具体的には、この解析処理は情報処理装置111のハードディスク125に記憶されているシンボルテーブル128を参照して、ソースコードの字句解析、構文解析等を行うことで実現することができる。また、解析部114は、独立した機能の集合(モジュール)として実現してもよく、取得部113が有する一つの機能として実現してもよい。
【0028】
合併判定部115は、取得部113によって取得されたネットワーク構造に応じて、学習済みニューラルネットワークに含まれる一のレイヤと他のレイヤとが合併可能か否かを判定する。例えば、合併判定部115は、取得部113によって取得された一のレイヤと他のレイヤとが合併可能なレイヤの並び方であるか、合併可能なレイヤの種類であるか、各レイヤ間の情報の入出力の経路が合併可能なものであるか等を判断することで、実現することができる。さらに例えば、合併判定部115は、一のレイヤと他のレイヤとを組み合わせることで、元の二つのレイヤによる演算と同様の結果を出力する一つの写像を作成することができるか否かを判断することで実現することができる。この際、解析部114によって解析されたネットワーク構造の情報を利用することが好ましい。また、合併判定処理を行うために、情報処理装置111は、例えば合併可能な一のレイヤと他のレイヤとのパターンを示すパターン情報をハードディスク125に記憶してなることが好ましい。この場合、合併判定部115は、パターン情報を照会することで学習済みニューラルネットワークにこれらのパターンに一致するレイヤの組み合わせが存在するか否かを判定することができる。
なお、ここではパターン情報がハードディスク125に記憶されてなる例を示したが、情報処理装置111は、合併可能な一のレイヤと他のレイヤとのパターン情報にアクセス可能に構成されていればよい。すなわち、パターン情報は他の情報処理装置に記憶されていてもよい。
【0029】
なお、合併可能なレイヤの種類としては、畳み込みレイヤとバッチ正則化レイヤ、逆畳み込みレイヤ(Deconvolution layer)とバッチ正則化レイヤ、全結合レイヤ(Fully connected layer、Affine layer、若しくはInner product layerと表現される)と畳み込みレイヤ等の組み合わせが存在する。
【0030】
合併部116は、取得部113によって取得されたネットワーク構造及び学習済みパラメータに応じて、合併判定部115によって合併可能と判定された一のレイヤと他のレイヤとを合併して合併レイヤを作成する。また、合併部116は、他のレイヤのレイヤ情報及び学習済みパラメータに応じて一のレイヤのレイヤ情報若しくは学習済みパラメータを変更することで、他のレイヤを一のレイヤに合併してもよい。
【0031】
例えば、一のレイヤである畳み込みレイヤと他のレイヤであるバッチ正則化レイヤは、以下の数式を畳み込みレイヤに適用することで合併することができる。なお、Fi,jは元のバッチ正則化レイヤの出力を表す。また、WBNはバッチ正則化レイヤの重みを、bBNはバッチ正則化レイヤのバイアスを表す。また、Wconvは畳み込みレイヤの重みを、fi,jは畳み込みレイヤへの入力である特徴マップ(Feature map)を、bconvは畳み込みレイヤのバイアスを表す。また、「・」は、内積を表す演算子である。
【0032】
【0033】
上記(数1)の写像を作成することによって、畳み込みレイヤとバッチ正則化レイヤは合併させることができる。なお、この場合の畳み込みレイヤとバッチ正則化レイヤを合併した合併レイヤの重みはWBN・Wconvに、合併レイヤのバイアスはWBN・bconv+bBNになる。また、他のレイヤの組み合わせについても同様に一のレイヤと他のレイヤとを合併することができる。
ここでは二つのレイヤを組み合わせて合併する例を示したが、レイヤの合併は二つのレイヤに限られるものではなく、三つ以上のレイヤを一つに合併することとしてもよい。
【0034】
削除部117は、学習済みニューラルネットワークから推論処理に不要なレイヤを検索して削除する。また、削除部117は、合併部116による合併処理の後に、推論処理に不要なレイヤを削除する。この際、削除部117は、合併処理がなされた前述の他のレイヤを削除することとしてもよい。
【0035】
ここでいう推論処理は、本実施形態に係る情報処理装置111が行う処理ではなく、学習済みニューラルネットワークを利用するコンピュータによる処理である。なお、これは本実施形態に係る情報処理装置111が推論処理を行うことを妨げるものではない。
推論処理に不要なレイヤとしては、例えば、学習済みニューラルネットワークを作成する段階でのみ必要とされるレイヤであるドロップアウトレイヤや、1×1のプーリングレイヤ、入力を平坦化する平坦化レイヤ(Flatten layer)等が存在する。また、合併処理がなされた後の他のレイヤについても、推論処理に不要なレイヤとすることができる。
削除部117は、これらのレイヤを削除して、これらのレイヤに入力されていた情報をこれらのレイヤの次のレイヤに対する入力とすることができる。
【0036】
次に、
図2は実施形態における情報処理装置111のハードウェア構成図である。例えば
図2に示すように、情報処理装置111は、バスに接続されて相互に情報の送受信が可能に構成されてなるプロセッサ121、メモリ122、ディスプレイ123、キーボード124、ハードディスク125、及び通信部126によって実現することができる。
【0037】
プロセッサ121は、実施形態における処理を実現するための各種の演算処理及び制御処理を行う。プロセッサ121としては、例えば、CPU(Central Processing Unit)、MPU(Micro-Processing Unit)、GPU(Graphics Processing Unit)等のチップや、FPGA(Field-Programmable Gate Array)、ASIC(application specific integrated circuit)等を採用することができる。
プロセッサ121は、ハードディスク125に記憶されたプログラム127やOS(Operating System)とデータを読み出して、メモリ122と協働して各種の演算処理及び制御処理を行う。特に、プロセッサ121は、情報取得処理、解析処理、合併判定処理、合併処理、削除判定処理、及び削除処理等を行う。
【0038】
メモリ122は、実施形態における処理を実現するための各種の演算処理や制御処理に供されるプログラム127やデータを一時的に記憶する。
メモリ122としては、例えばRAM(Random Access Memory)やキャッシュメモリなどを採用することができる。メモリ122には、本実施形態に係るプログラム127や学習済みニューラルネットワークが一時的に記憶される。
【0039】
ディスプレイ123は、本実施形態の処理の状態や操作画面を表示する。
【0040】
キーボード124は、ユーザーからの入力操作を受けて、本実施形態の処理に関する命令等をプロセッサ121に送信する。
【0041】
ハードディスク125は、本実施形態の処理を行うためのプログラム127、シンボルテーブル128、データ等を記憶する。また、ハードディスク125には学習済みニューラルネットワークが記憶されてもよい。ここでは、ハードディスク125の語を用いたが、本実施形態に係る情報処理装置111を実現する際には、ハードディスク125に限られず、SSD(Solid State Drive)等を含む記憶装置でこれを実現することもできる。
【0042】
通信部126は、本実施形態の処理を行うために必要な情報の送受信を、情報処理装置111の外部と行う。例えば、情報処理装置111の外部に記憶されている学習済みニューラルネットワークやシンボルテーブル128へのアクセス、学習済みニューラルネットワークに対する変更情報の送信等を行うことができる。なお、通信部126は、有線及び無線のいずれでもよく、また、外部の学習済みニューラルネットワーク等の情報に対して直接にアクセスするものであってもよく、他のコンピュータを介して間接にアクセスするものであってもよい。
【0043】
次に、
図3は実施形態における処理前の学習済みニューラルネットワークを示す図である。
図3に示すように、本実施形態に係る情報処理装置111は、様々な構成の学習済みニューラルネットワークにアクセスして、本実施形態に係る処理を実行することができる。
【0044】
例えば、
図3に一例として示す学習済みニューラルネットワークは、n層のレイヤが連なって構成されてなる。具体的には、第1レイヤが入力レイヤ131に、第2レイヤが畳み込みレイヤ132に、第3レイヤがバッチ正則化レイヤ133に、第4レイヤが1×1プーリングレイヤ134に、第5レイヤがドロップアウトレイヤ135に、第n-1レイヤが全結合レイヤ136に、第nレイヤが出力レイヤ137に構成されてなる。
【0045】
また、各レイヤは、一又は複数のニューロンを有し、各レイヤにおけるニューロンは、そのニューロンが属するレイヤの一つ前のレイヤのニューロン及び一つ後のレイヤのニューロンと情報のやり取りができるように構成されてなる。
【0046】
また、各ニューロン間で情報のやり取りをする経路には、学習済みパラメータとしての重みが設定されてなり、各ニューロンには学習済みパラメータとしてのバイアスが設定されてなる。また、各ニューロンには、次のレイヤに送る情報を変更する所定の活性化関数が設定されてなる。
【0047】
次に、
図4を参照しながら
図3に示した学習済みニューラルネットワークに対して行う、本実施形態に係る情報処理装置111による処理の一例を説明する。
図4は実施形態における情報処理装置111のフロー図である。
【0048】
まず初めにアクセスステップS141では、情報処理装置111は、プロセッサ121を含んで構成される取得部113によって、学習済みニューラルネットワークが保存されている媒体にアクセスする。学習済みニューラルネットワークが情報処理装置111の外部に記憶されている場合には、情報処理装置111は、プロセッサ121と通信部126とを用いて学習済みニューラルネットワークにアクセスする。また、この後の各種処理に供するために、情報処理装置111は、学習済みニューラルネットワークにアクセスした際に、学習済みニューラルネットワークを情報処理装置111のメモリ122若しくはハードディスク125に記憶することが好ましい。
【0049】
なお、
図3に示すように、本実施形態の情報処理装置111による処理が行われる前の学習済みニューラルネットワークは、n層のレイヤが連なって構成されてなる。具体的には、第1レイヤが入力レイヤ131に、第2レイヤが畳み込みレイヤ132に、第3レイヤがバッチ正則化レイヤ133に、第4レイヤが1×1プーリングレイヤ134に、第5レイヤがドロップアウトレイヤ135に、第n-1レイヤが全結合レイヤ136に、第nレイヤが出力レイヤ137に構成されてなる。
【0050】
次に情報取得ステップS142では、情報処理装置111は、プロセッサ121を含んで構成される取得部113によって、学習済みニューラルネットワークのレイヤ情報を含むネットワーク構造と学習済みパラメータとを取得する。このとき、情報処理装置111は、学習済みニューラルネットワークのネットワーク構造と学習済みパラメータとに関する情報のみを選択して取得してもよく、学習済みニューラルネットワークのソースコードの全てを取得することとしてもよい。
【0051】
次に解析ステップS143では、情報処理装置111は、プロセッサ121とメモリ122とを含んで構成される解析部114によって、取得部113により取得されたネットワーク構造と学習済みパラメータとを解析する。前述のとおり、このときにはシンボルテーブル128を用いて字句解析、構文解析等を行うことが好ましい。
【0052】
次に合併判定ステップS144では、情報処理装置111は、プロセッサ121とメモリ122とを含んで構成されてなる合併判定部115によって、学習済みニューラルネットワークのネットワーク構造に応じて、学習済みニューラルネットワークに含まれる一のレイヤと他のレイヤとが合併可能か否かを判定する。例えば、情報処理装置111は、合併可能な一のレイヤと他のレイヤとの組み合わせを記録したパターン情報にアクセスして、学習済みニューラルネットワークに当該組み合わせが存在するか否かを比較することによって一のレイヤと他のレイヤとが合併可能か否かを判定することが好ましい。
このとき、合併可能な一のレイヤと他のレイヤとの組み合わせが存在する場合には、次の合併ステップS145に進み、合併可能な一のレイヤと他のレイヤとの組み合わせが存在しない場合には、合併ステップS145をスキップして削除判定ステップS146に進む。
なお、
図3に示す学習済みニューラルネットワークの場合にあっては、一のレイヤである畳み込みレイヤ132と他のレイヤであるバッチ正則化レイヤ133が合併可能であると判定する。
【0053】
次に合併ステップS145では、情報処理装置111は、プロセッサ121とメモリ122とを含んで構成されてなる合併部116によって、取得部113によって取得されたネットワーク構造及び学習済みパラメータに応じて、合併判定部115によって合併可能と判定された一のレイヤと他のレイヤとを合併して合併レイヤを作成する。合併ステップS145では、他のレイヤのレイヤ情報及び学習済みパラメータに応じて一のレイヤのレイヤ情報若しくは学習済みパラメータを変更することで、他のレイヤを一のレイヤに合併してもよい。
なお、ここでは
図5に示すように、合併ステップS145による処理によって、他のレイヤであるバッチ正則化レイヤ133のレイヤ情報及び学習済みパラメータに応じて一のレイヤである畳み込みレイヤ132のレイヤ情報及び学習済みパラメータが変更されて、合併レイヤである「畳み込み×バッチ正則化レイヤ」が作成される。このとき、学習済みパラメータの変更の例として、バッチ正則化レイヤ133の学習済み重み及び学習済みバイアスに基づいて、畳み込みレイヤ132の学習済み重み及び学習済みバイアスを変更してもよい。
【0054】
次に削除判定ステップS146では、情報処理装置111は、プロセッサ121とメモリ122を含んで構成される削除部117によって、学習済みニューラルネットワークの中に推論処理に不要なレイヤが存在するか否かを検索する。この際、例えば、情報処理装置111が推論処理に不要となるレイヤの種類やパターンが記録された削除可能テーブルを参照することで、推論処理に不要なレイヤが存在するか否かを検索してもよい。また、削除部117は、合併処理がなされた他のレイヤについても、推論処理が不要なレイヤであると判定してもよい。
このとき、推論処理が不要なレイヤが存在すると判定した場合には次の削除ステップS147に進み、推論処理が不要なレイヤが存在しないと判定した場合には削除ステップS147をスキップして、レイヤ間調整ステップS148に進む。
なお、合併処理後の
図5に示す学習済みニューラルネットワークにあっては、例えば、合併処理後の他のレイヤであるバッチ正則化レイヤ133、並びに1×1プーリングレイヤ134及びドロップアウトレイヤ135を推論処理に不要なレイヤであると判定する。
【0055】
次に削除ステップS147では、情報処理装置111は、プロセッサ121とメモリ122によって構成される削除部117によって、削除判定ステップS146で推論処理に不要なレイヤと判定した一又は複数のレイヤを削除する。
なお、合併処理後の
図5に示す学習済みニューラルネットワークにあっては、例えば、推論処理に不要なレイヤであると判定された合併処理後の他のレイヤであるバッチ正則化レイヤ133と1×1プーリングレイヤ134とドロップアウトレイヤ135とを削除する。この処理を行うことで、
図6に示すように、学習済みニューラルネットワークは、バッチ正則化レイヤ133、1×1プーリングレイヤ134、及びドロップアウトレイヤ135が削除されたn-3層の学習済みモデルに変換される。これによって、学習済みニューラルネットワークは、推論処理の精度を維持したままデータサイズが小さくされる。
【0056】
次にレイヤ間調整ステップS148では、プロセッサ121とメモリ122によって構成されるレイヤ間調整部(図示しない。)によって、レイヤ間での情報の受け渡しが可能となるように、ニューロン間の経路を調整する。例えば、レイヤの合併処理若しくは削除処理に伴って情報の受け渡しができなくなったレイヤについて、そのレイヤの出力情報をその次の層に位置するレイヤの入力情報とすることができる。
【0057】
情報処理装置111は、以上の処理を行うことで、処理が行われる前の第一の学習済みニューラルネットワークから、合併処理後の他のレイヤを含む推論処理に不要なレイヤを削除した第二の学習済みニューラルネットワークを作成することができる。これにより、学習済みニューラルネットワークの推論精度を維持したままデータサイズを小さくことができる。
なお、一例としての本実施形態に係る情報処理装置111による処理がなされた結果、処理後の学習済みニューラルネットワークは、
図6に示すように、第1レイヤが入力レイヤ131、第2レイヤが畳み込み×バッチ正則化レイヤ、第n-4レイヤが全結合レイヤ136、第n-3レイヤが出力レイヤ137として構成される、全体としてn-3層の学習済みニューラルネットワークに変換される。
【0058】
本実施形態に係る情報処理装置111によれば、合併可能な一のレイヤと他のレイヤとを合併すると共に、学習済みニューラルネットワークによって推論処理を行う際に、推論処理に不要となるレイヤを削除することができる。これにより、学習済みニューラルネットワークの推論精度を維持したまま、容易に学習済みニューラルネットワークのデータサイズを小さくすることができる。
【0059】
また、本実施形態に係る情報処理装置111は、合併可能な一のレイヤと他のレイヤとを合併した後に、当該他のレイヤも推論処理に不要なレイヤとして削除することができることから、特に、学習済みニューラルネットワークのデータサイズを小さくすることができる。
【0060】
また、本実施形態に係る情報処理装置111は、元の推論精度を維持して学習済みニューラルネットワークのデータサイズを小さくすることができることから、再学習を必要としない。
【0061】
また、本実施形態に係る情報処理装置111は、元の推論精度を維持して学習済みニューラルネットワークのレイヤの数を減少させることでデータサイズを小さくする。これにより、処理後の学習済みニューラルネットワークを利用して推論処理をする際に必要な記憶容量を減少させるとともに、推論処理に必要な処理能力を低くし、かつ、元の推論精度を維持することができる。そのため、本実施形態に係る情報処理装置111は、リアルタイムシステム等の組み込み装置等で学習済みニューラルネットワークを利用した推論を行うことに好適な学習済みニューラルネットワークを作成することができる。
【0062】
また、本実施形態に係る情報処理装置111は、合併部116が、他のレイヤのレイヤ情報及び学習済みパラメータに応じて一のレイヤのレイヤ情報若しくは学習済みパラメータを変更することで、他のレイヤを一のレイヤに合併する。このため、情報処理装置111はレイヤ情報若しくは学習済みパラメータを変更することで、元の推論精度を維持してデータサイズを小さくすることができる。
【0063】
なお、本実施形態に係る情報処理装置111は、その思想を変更しない範囲で適宜設計変更を行うことができる。例えば、本実施形態に係る情報処理装置111の分散・統合の具体的形態は本実施形態に係るものに限られず、情報処理装置111をクライアント・サーバーシステムの形式によって構成してもよく、複数のコンピュータの分散処理により実現することとしてもよい。すなわち、本実施形態に係る情報処理装置111は、一台のコンピュータから構成される装置に限られるものではなく、複数のコンピュータが連携して情報処理装置111を構成することとしてもよい。
【実施例1】
【0064】
以下、一例として本発明に係る実施例を、図を参照しながら詳しく説明する。なお、以下では、既に上述した実施形態と同じ部分については、省略して説明することがある。
本実施例に係る情報処理装置211は、第一の学習済みニューラルネットワークのデータサイズを小さくすることで、特に、記憶容量や処理能力に制限のある組み込み装置での推論に適した第二の学習済みニューラルネットワークを作成するものである。
まず初めに、本実施例の情報処理装置211の構成を、図を参照しながら詳しく説明する。
【0065】
図7は実施例における情報処理装置211の機能ブロック図である。情報処理装置211は、制御部212と相互に情報の送受信が可能に接続された取得部213、解析部214、合併判定部215、合併部216、削除部217、数値表現変換部218、及び言語変換部219を含む。
【0066】
情報処理装置211は、一又は複数のコンピュータの組み合わせから構成される計算装置である。例えば、情報処理装置211は、複数のコンピュータからアクセスを受けることができるサーバによって実現することができる。
【0067】
取得部213は、例えば、他のコンピュータからの処理要求を受けて、当該他のコンピュータから学習済みニューラルネットワークのデータを取得する。特に例えば、取得部213は、学習済みニューラルネットワークのデータに含まれるネットワーク構造及び学習済みパラメータを取得する。
【0068】
解析部214は、例えば、取得部213によって取得された学習済みニューラルネットワークを解析する。この場合例えば、ニューラルネットワークを表現するソースコードを分析することによって、学習済みニューラルネットワークのネットワーク構造及び学習済みパラメータを解析する。例えば、この解析処理は、情報処理装置211が、入力を受けた学習済みニューラルネットワークを表現しているソースコードに対応する第1シンボルテーブル228を参照して、ネットワーク構造及び学習済みパラメータとを明らかにすることができる。なお、第1シンボルテーブル228としては、例えば、プログラミング言語やライブラリの変数名などといった名前(シンボル)とその内容などの中身とを対応付けるテーブルを用いることができる。
【0069】
合併判定部215は、例えば、一のレイヤと他のレイヤとが合併可能なものであるか否かを判定する。例えば、合併判定部215は、一のレイヤと他のレイヤとの組み合わせが、ハードディスク225等に記憶された合併可能パターンのいずれかに一致するか否かを判定することとしてもよい。
【0070】
合併部216は、例えば、合併処理に係る一のレイヤが、合併判定部215により所定の他のレイヤと合併可能であると判定されている場合、一のレイヤと当該他のレイヤとを合併させる。特に例えば、以下で説明するように、畳み込みレイヤとバッチ正則化レイヤとを合併してもよい。また、隣接する畳み込みレイヤとバッチ正則化レイヤとで学習済みパラメータ同士の内積計算が可能な場合にあっては、合わせて3層以上の畳み込みレイヤとバッチ正則化レイヤとを合併することとしてもよい。なお、内積計算が可能な場合としては、例えば、それぞれのレイヤのニューロン数が同じ場合を挙げることができる。
【0071】
削除部217は、例えば、学習済みニューラルネットワークの中に存在するレイヤであって、学習段階で用いられる一方で推論段階では推論の結果に影響しないレイヤ(推論処理に不要なレイヤ)を削除する。また、推論処理に不要なレイヤには、合併部216による合併処理がなされたことにより、推論処理に不要となったレイヤを含むことができる。
【0072】
数値表現変換部218は、例えば、学習済みニューラルネットワークに含まれる学習済みパラメータ等の数値表現の形式を変換する。特に例えば、情報処理装置211による処理が行われる前の元の学習済みニューラルネットワークでは32bitの浮動小数点で表されていた学習済みパラメータを量子化してもよい。なお、量子化とは元の数値の表現形式を変換することで、数値を元よりも短いbit長で表現することをいう。これにより、組み込み装置上で学習済みニューラルネットワークによる推論処理を行うことに適したデータサイズへの縮小化若しくは処理負荷の低減を図ることができる。ここでは、例えば数値の二値化を行うこととしてもよい。また、数値表現を二値化とする場合にあっては、学習済みニューラルネットワークの推論処理を、XNOR-Netにより行うことができる。
【0073】
特に、数値表現変換部218では、学習済みニューラルネットワークによる推論処理が行われるハードウェアの性能、例えばメモリサイズや、処理能力等に応じて、数値表現の変換を行うことが好ましい。より具体的には、メモリサイズが小さい場合には、整数型の8bit表現への変換や二値化を行うことが好ましい。また、処理能力が劣るハードウェアで推論処理を行う場合には、整数型の短いbit長に変換することが好ましい。
また、数値表現の変換にあっては、当該学習済みモデルによる推論によって要求される推論精度、若しくは、要求されるレスポンスタイムの制約等を考慮してもよい。
【0074】
言語変換部219は、例えば、元の学習済みニューラルネットワークを異なるプログラミング言語で表現された学習済みニューラルネットワークに変換することができる。例えば、言語変換部219は、C言語以外の言語で表現された学習済みニューラルネットワークをC言語で表現された学習済みニューラルネットワークに変換することができる。例えば具体的には、解析部214によって第1シンボルテーブル228を用いて解析された学習済みニューラルネットワークを、解析された意味内容に相当するC言語の変数名等を第2シンボルテーブル229から検索して使用することで、C言語による表現に変換することができる(トランスコンパイル)。
【0075】
次に、情報処理装置211のハードウェア構成を説明する。
図8は実施例における情報処理装置211のハードウェア構成図である。情報処理装置211は、バスに接続されて相互に情報の送受信が可能に構成されてなるプロセッサ221、メモリ222、ディスプレイ223、キーボード224、ハードディスク225、及び通信部226を用いて実現することができる。なお、実施例に係る情報処理装置211はハードディスク225以外では実施形態に係る情報処理装置111と同様であるため、ハードディスク225について特に説明する。また、ハードディスク225については、実施形態に係る情報処理装置111と同様に、SSD等の記憶装置を用いて実現することもできる。
【0076】
ハードディスク225は、本実施例の処理を行うためのプログラム227、第1シンボルテーブル228、第2シンボルテーブル229、及びデータ等を記憶する。
第1シンボルテーブル228には、例えば、プログラミング言語やライブラリの変数名などといった名前(シンボル)とその内容などの中身とを対応付けるテーブルを用いることができる。また、第2シンボルテーブル229には、例えば、第1シンボルテーブル228とは異なるプログラミング言語やライブラリの変数名などといった名前(シンボル)とその内容などの中身とを対応付けるテーブルを用いることができる。
【0077】
次に、
図9は実施例における処理前の学習済みニューラルネットワークを示す図である。
図9に示すように、本実施例に係る情報処理装置211は、様々な構成の学習済みニューラルネットワークにアクセスして、本実施例に係る処理を実行することができる。
【0078】
例えば、
図9に一例として示す学習済みニューラルネットワークは、n層のレイヤが連なって構成されてなる。具体的には、第1レイヤが入力レイヤ231、第2レイヤが第1畳み込みレイヤ232、第3レイヤが第1バッチ正則化レイヤ233、第4レイヤが第2畳み込みレイヤ234、第5レイヤが第2バッチ正則化レイヤ235、第6レイヤがドロップアウトレイヤ236、第n-1レイヤが全結合レイヤ237、第nレイヤが出力レイヤ238に構成されてなる。
【0079】
次に、
図10を参照しながら本実施例に係る情報処理装置211による処理の一例を説明する。
図10は実施例における情報処理装置211のフロー図である。
【0080】
まず初めにアクセスステップS251では、情報処理装置211は、取得部213によって、学習済みニューラルネットワークが保存されている媒体にアクセスする。例えば、学習済みニューラルネットワークが記憶された他のコンピュータから処理要求を受けた場合、通信部226を介して当該コンピュータから学習済みニューラルネットワークを受信して、情報処理装置211のハードディスク225に保存し、ハードディスク225に保存された処理対象となる学習済みニューラルネットワークにアクセスすることができる。
【0081】
次に、情報取得ステップS252では、情報処理装置211は、取得部213によって、学習済みニューラルネットワークのレイヤ情報を含むネットワーク構造と学習済みパラメータとを取得する。このとき、情報処理装置211は、学習済みニューラルネットワークのネットワーク構造と学習済みパラメータとに関する情報のみを選択して取得してもよく、学習済みニューラルネットワークのソースコードの全てを取得することとしてもよい。
【0082】
次に解析ステップS253では、情報処理装置211は、解析部214によって、取得部213により取得されたネットワーク構造と学習済みパラメータとを解析する。なお、学習済みパラメータには、例えば、学習済みの重み、若しくは学習済みのバイアスが含まれる。例えば、このときは、ハードディスク225に記憶された第1シンボルテーブル228を用いて、ソースコード等の意味を解析することで、ネットワーク構造と学習済みパラメータとを解析することができる。
【0083】
次に、情報処理装置211は、後述する合併判定ステップS254と、合併ステップS255と、削除判定ステップS256と、削除ステップS257と、数値表現変換ステップS258とをそれぞれのレイヤ毎に第1レイヤから順に最後のレイヤまで一層ずつループして、合併判定処理、合併処理、削除判定処理、削除処理、及び数値表現変換処理を各レイヤに対して行う。
【0084】
次に、合併判定ステップS254では、情報処理装置211は、合併判定部215によって、ループ処理に付されている一のレイヤと他のレイヤとが合併可能であるか否かを判定する。ここで、当該一のレイヤと他のレイヤとが合併可能であると判定された場合、次に合併ステップS255に進む。また、合併できないと判定された場合、合併ステップS255をスキップして、削除判定ステップS256に進む。
【0085】
次に、合併ステップS255では、情報処理装置211は、合併部216によって、ループ処理に付されている当該一のレイヤと他のレイヤとを合併する。特に、他のレイヤのレイヤ情報及び学習済みパラメータに応じて当該一のレイヤのレイヤ情報若しくは学習済みパラメータを変更することで、他のレイヤを一のレイヤに合併する。
【0086】
次に、削除判定ステップS256では、情報処理装置211は、ループ処理に付されている当該一のレイヤが推論処理に不要なレイヤであるか否かを判定する。この際、当該一のレイヤが推論処理に不要であると判定した場合は、削除ステップS257に進む。また、推論処理に必要であると判定した場合は、削除ステップS257をスキップして、数値表現変換ステップS258に進む。
【0087】
次に、削除ステップS257では、情報処理装置211は、削除部217によって、ループ処理に付されている推論処理に不要な当該一のレイヤを削除する。また、ここで削除ステップS257に付された当該一のレイヤが、既に合併処理が行われたレイヤから見た他のレイヤにあたる場合は、当該一のレイヤを削除することができる。
【0088】
次に、数値表現変換ステップS258では、情報処理装置211は、ループ処理に付されている当該一のレイヤが保有する数値の数値表現形式を変換することができる。例えば、数値としては、レイヤの保有する重み、若しくはバイアス等が存在する。例えば、当該レイヤが浮動小数点形式による32bitで表現された数値を保有する場合、情報処理装置211は、当該数値のbit長を短くする、当該数値を固定小数点形式に変換する、又は当該数値を二値化するという処理を行うことができる。
また例えば、数値表現をどのように変換するか否かは、本実施例に係る処理に付される学習済みニューラルネットワークによる推論処理を行わせるハードウェアの性能によって決定してもよい。
【0089】
また、上述した合併判定ステップS254、合併ステップS255、削除判定ステップS256、削除ステップS257、及び、数値表現変換ステップS258を終了した場合、これら各処理の対象とされたレイヤの次の層に存在するレイヤを推論処理に付される一のレイヤとして選択して、当該選択されたレイヤを対象としてこれらの処理を行う。
また、このループ処理は、学習済みニューラルネットワークに含まれる最後のレイヤに対する数値表現変換ステップS258が終了するまで継続され、最後のレイヤに対する数値表現変換ステップS258が終了したら、次の言語変換ステップS259に移る。
【0090】
次に、言語変換ステップS259では、情報処理装置211は、言語変換部219によって、学習済みニューラルネットワークのソースコードを所望のプログラム227言語による表現に変換する。例えば、情報処理装置211は、ハードディスク225に記憶された第2シンボルテーブル229を利用することで、レイヤの合併若しくはレイヤの削除が終了した学習済みニューラルネットワークを、元の言語と異なる言語に変更することができる。この場合、例えばC言語は組み込み装置での処理に適した言語であることから、C言語に変換することで、低処理能力の組み込み環境に好適な学習済みニューラルネットワークを得ることができる。
【0091】
以上の処理を実行することで、元の第一の学習済みニューラルネットワークを、組み込み装置等の低記憶容量かつ低処理能力の実行環境においても、推論処理が可能な第二の学習済みニューラルネットワークに変換することができる。
【0092】
以下では、上述した本実施例に係る処理を
図9に示した学習済みニューラルネットワークに対して行う一例を説明する。なお、処理対象となる学習済みニューラルネットワークは、
図9に示すように、第1レイヤが入力レイヤ231、第2レイヤが第1畳み込みレイヤ232、第3レイヤが第1バッチ正則化レイヤ233、第4レイヤが第2畳み込みレイヤ234、第5レイヤが第2バッチ正則化レイヤ235、第6レイヤがドロップアウトレイヤ236、第n-1レイヤが全結合レイヤ237、第nレイヤが出力レイヤ238に構成された、n層のニューラルネットワークとする。
【0093】
まず初めに、情報処理装置211は、学習済みニューラルネットワークに対してアクセスし、学習済みニューラルネットワークに関する情報を取得する。
【0094】
次に、情報処理装置211は、解析部214によって、学習済みニューラルネットワークのネットワーク構造及び学習済みパラメータを解析する。
【0095】
この後、情報処理装置211は、第1レイヤから順に最後の第nレイヤまでループ処理を行う。
【0096】
ループ処理では、まず初めに、合併判定ステップS254で、第1レイヤについて合併判定を行う。この例においては、入力レイヤ231は他のレイヤと合併することができないことから、合併ステップS255をスキップして、削除判定ステップS256に進む。
【0097】
ループ処理では、次に、削除判定ステップS256で、第1レイヤが推論処理に不要なレイヤであるか否かを判定する。この例においては、入力レイヤ231は推論処理に必要なレイヤであることから、削除ステップS257をスキップして、数値表現変換ステップS258に進む。
【0098】
ループ処理では、次に、数値表現変換ステップS258で、所望によって数値表現を変換する。ここで、入力レイヤ231が学習済み重み若しくは学習済みバイアス等の学習済みパラメータを保有しない場合は、数値表現の変換を行わないこととしてもよい。
【0099】
ここまでの処理を終了した場合、ループ処理では、次に、合併判定ステップS254に戻り、第2レイヤである第1畳み込みレイヤ232に対して合併判定を行う。ここで、第1畳み込みレイヤ232は、第3レイヤである第1バッチ正則化レイヤ233と合併可能であることから、これらのレイヤを合併可能であると判定して、合併ステップS255に進む。
【0100】
ループ処理では、次に、合併ステップS255で、ループ処理に付されている一のレイヤである第1畳み込みレイヤ232と他のレイヤである第1バッチ正則化レイヤ233とを合併する。
【0101】
ループ処理では、次に、削除判定ステップS256で、第1畳み込みレイヤ232に合併された他のレイヤである第1バッチ正則化レイヤ233を、推論処理に不要なレイヤと判断して、削除ステップS257に進む。
【0102】
ループ処理では、次に、削除ステップS257で、推論処理に不要なレイヤと判定された第1バッチ正則化レイヤ233を削除する。これにより、学習済みニューラルネットワークは、第2レイヤに第1畳み込みレイヤ232と第1バッチ正則化レイヤ233との合併レイヤが位置し、第3レイヤには第2畳み込みレイヤ234が位置する
図11に示す学習済みニューラルネットワークに変換される。
【0103】
ここまでの処理を終了した場合、学習済みニューラルネットワークは全体としてn-1層のネットワーク構造に変換される。また、所望により、数値表現変換ステップS258で、合併レイヤの重み若しくはバイアスを量子化若しくは二値化してもよい。
【0104】
ループ処理では、次に、合併判定ステップS254に戻り、第3レイヤである第2畳み込みレイヤ234に対して合併判定を行う。ここで、第2畳み込みレイヤ234は、第2レイヤである第1畳み込みレイヤ232と第1バッチ正則化レイヤ233との合併レイヤと合併可能であることから、これらのレイヤを合併可能であると判定して、合併ステップS255に進む。
【0105】
ループ処理では、次に、合併ステップS255で、第1畳み込みレイヤ232と第1バッチ正則化レイヤ233との合併レイヤと第2畳み込みレイヤ234とを合併する。
【0106】
ループ処理では、次に、削除判定ステップS256で、第1畳み込みレイヤ232と第2畳み込みレイヤ234との合併レイヤに合併された他のレイヤである第2畳み込みレイヤ234を、推論処理に不要なレイヤと判定して、削除ステップS257に進む。
【0107】
ループ処理では、次に、削除ステップS257で、推論処理に不要なレイヤと判定された第2畳み込みレイヤ234を削除する。これにより、学習済みニューラルネットワークは、第2レイヤに第1畳み込みレイヤ232と第1バッチ正則化レイヤ233と第2畳み込みレイヤ234との合併レイヤが位置し、第3レイヤには第2バッチ正則化レイヤ235が位置する
図12に示す学習済みニューラルネットワークに変換される。
【0108】
ここまでの処理を終了した場合、学習済みニューラルネットワークは全体としてn-2層のネットワーク構造に変換される。また、所望により、数値表現変換ステップS258で、合併レイヤの重み若しくはバイアスを量子化若しくは二値化してもよい。
【0109】
ループ処理では、次に、合併判定ステップS254に戻り、第3レイヤである第2バッチ正則化レイヤ235に対して合併判定を行う。ここで、第2バッチ正則化レイヤ235は第2レイヤである第1畳み込みレイヤ232と第1バッチ正則化レイヤ233と第2畳み込みレイヤ234との合併レイヤと合併可能であることから、これらのレイヤを合併可能であると判定して、合併ステップS255に進む。
【0110】
ループ処理では、次に、合併ステップS255で、第1畳み込みレイヤ232と第1バッチ正則化レイヤ233と第2畳み込みレイヤ234との合併レイヤと第2バッチ正則化レイヤ235とを合併する。
【0111】
ループ処理では、次に、削除判定ステップS256で、第1畳み込みレイヤ232と第1バッチ正則化レイヤ233と第2畳み込みレイヤ234との合併レイヤに合併された他のレイヤである第2バッチ正則化レイヤ235を、推論処理に不要なレイヤと判定して、削除ステップS257に進む。
【0112】
ループ処理では、次に、削除ステップS257で、推論処理に不要なレイヤと判定された第2バッチ正則化レイヤ235を削除する。これにより、学習済みニューラルネットワークは、第2レイヤに第1畳み込みレイヤ232と第1バッチ正則化レイヤ233と第2畳み込みレイヤ234と第2バッチ正則化レイヤ235の合併レイヤが位置し、第3レイヤにはドロップアウトレイヤ236が位置する
図13に示す学習済みニューラルネットワークに変換される。
【0113】
ここまでの処理を終了した場合、学習済みニューラルネットワークは全体としてn-3層のネットワーク構造に変換される。また、所望により、数値表現変換ステップS258で、合併レイヤの重み若しくはバイアスを量子化若しくは二値化してもよい。
【0114】
ループ処理では、次に、合併判定ステップS254に戻り、第3レイヤであるドロップアウトレイヤ236に対して合併判定を行う。この例では、ドロップアウトレイヤ236は他のレイヤと合併することができないため、合併ステップS255をスキップして、削除判定ステップS256に進む。
【0115】
ループ処理では、次に、削除判定ステップS256で、ドロップアウトレイヤ236を、推論処理に不要なレイヤと判定して、削除ステップS257に進む。
【0116】
ループ処理では、次に、削除ステップS257で、推論処理に不要なレイヤと判定されたドロップアウトレイヤ236を削除する。これにより、学習済みニューラルネットワークは、第2レイヤに第1畳み込みレイヤ232と第1バッチ正則化レイヤ233と第2畳み込みレイヤ234と第2バッチ正則化レイヤ235の合併レイヤが位置し、第3レイヤのドロップアウトレイヤ236が削除された
図14に示す学習済みニューラルネットワークに変換される。
【0117】
ここまでの処理を終了した場合、学習済みニューラルネットワークは全体としてn-4層のネットワーク構造に変換される。
【0118】
なお、この後、一層ずつループして、最終レイヤである出力レイヤ238に対する数値表現変換ステップS258が終了するまで処理が実行される。
【0119】
次に、言語変換ステップS259に進み、言語変換部219が、学習済みニューラルネットワークを、元の言語とは異なるプログラミング言語で表現された学習済みニューラルネットワークに変換する。特に、組み込み装置においてはC言語が好まれており、C言語に対応した第2シンボルテーブル229を用いてトランスコンパイルすることで、C言語で推論処理をすることができる学習済みニューラルネットワークを作成することができる。
【0120】
なお、本実施例では、第1畳み込みレイヤ232と第1バッチ正則化レイヤ233との合併レイヤに対して、第2畳み込みレイヤ234を合併し、その後第2バッチ正則化レイヤ235を合併する例を説明した。しかしながら、この合併の順序はこれに限られるものではなく、それぞれのレイヤが同じ数のニューロンを保有している場合は、異なる順序で合併することもできる。一例を示すと、第1畳み込みレイヤ232と第1バッチ正則化レイヤ233とを合併した第一の合併レイヤに対して、第2畳み込みレイヤ234と第2バッチ正則化レイヤ235を合併した第二の合併レイヤを合併することもできる。
【実施例2】
【0121】
次に、所望により実施例1に追加することが好ましい要素を付加した他の実施例を、図を参照しながら詳しく説明する。なお、以下では、既に上述した実施例1と同じ部分については、省略して説明する。
【0122】
図15に示すように、本実施例では、情報処理装置211において、計算方法選択部301と、展開部302とを付加した。これらの付加要素は、実施例1における情報処理装置211を用いて、学習済みニューラルネットワークを組み込み装置で推論処理可能に変換するにあたって、情報処理装置211をより有効なものにする。なお、情報処理装置211は、計算方法選択部301と、展開部302とを付加した点以外は、実施例1における構成と同一である。
【0123】
計算方法選択部301は、例えば、各レイヤからの出力(アクティベーション)を計算する際に用いられるレイヤ間での計算の方法を、レイヤの種類を含むレイヤ情報に応じて決定する。計算方法選択部301は、例えば、プロセッサ221とメモリ222とが協働することで実現される。さらに、レイヤの種類に応じた適切な計算方法を記憶したテーブルをハードディスクに記憶し、これを参照することで計算方法を決定してもよい。
【0124】
計算方法としては、レイヤ情報に応じて種々の計算方法を選択して採用することができる。以下では、レイヤの種類が畳み込みレイヤである場合の計算方法を選択する例を示す。
【0125】
【0126】
(表1)では、レイヤ情報として、入力サイズ(Input size)、出力サイズ(Output size)、カーネル(kernel)、ダイレーション(dilation)、及びストライド(stride)を用いた。なお、出力サイズはフィルタサイズによって求めることができる。また、入力サイズを調整するために、畳み込みレイヤの前にパディング(Padding)レイヤを挿入することとしてもよい。
【0127】
なお、(表1)において、計算方法の列にConvolutionと記載されている行は畳み込み計算を、SGEMMと記載されている行はSGEMMによる計算を、Winogradと記載されている行はWinogradによる計算をそれぞれ行う。
【0128】
展開部302は、例えば、学習済みニューラルネットワークのソースコードに存在するループ処理、若しくは、再帰処理(再帰呼び出し)を検索して展開(アンローリング)する。展開部302は、例えば、プロセッサ221とメモリ222とが協働することで実現される。
【0129】
図16は、情報処理装置211の実施例1における処理フローに、実施例2に係る計算方法選択ステップS261及び展開ステップS262を追加したものである。
計算方法選択ステップS261は、情報処理装置211のループ処理の数値表現変換ステップS258の次に追加することが好ましい。また、展開ステップS262は、言語変換ステップS259の前に追加することが好ましい。また、展開ステップS262において行われる展開処理は、言語変換ステップS259で行われる言語変換処理と同時に行うこととしてもよい。
【0130】
実施例2における情報処理装置211によると、レイヤの合併及び削除と併せて、レイヤ毎の最適な計算方法を選択することができる。これにより、ハードウェアの性能上の制約を考慮した上で、レイヤ毎の計算方法を決定することが可能となる。これによって、学習済みニューラルネットワークによる推論処理の処理負荷の低減等を図ることができる。
【0131】
実施例2における情報処理装置211によると、レイヤの合併及び削除と併せて、学習済みニューラルネットワークに含まれるループ処理や再帰処理を展開することができる。これにより、学習済みニューラルネットワークによる推論処理におけるループ処理の終了の判定や再帰呼び出しによるオーバーヘッドを削減することができることとなる。これによって、学習済みニューラルネットワークによる推論処理の処理負荷の低減等を図ることができる。
【0132】
実施例2による情報処理装置211によると、計算方法選択部301と展開部302とが合わさって、組み込み装置のハードウェア上の制約、例えば処理能力や記憶容量に応じて、最適な学習済みニューラルネットワークを得ることができる。
【0133】
以下では、上述した実施形態及び実施例の記載に基づき、追加的に本発明のいくつかの側面を例示する。
【0134】
第一の本発明の側面は、
情報処理装置に、
所定の学習済みニューラルネットワークにアクセスして、前記学習済みニューラルネットワークのレイヤ情報を含むネットワーク構造と学習済みパラメータとを取得し、
前記ネットワーク構造に応じて、前記学習済みニューラルネットワークに含まれる一のレイヤと他のレイヤとが合併可能か否かを判定し、
前記ネットワーク構造及び前記学習済みパラメータに応じて、合併可能と判定された前記一のレイヤと前記他のレイヤとを合併して合併レイヤを作成し、
前記学習済みニューラルネットワークから推論処理に不要なレイヤを検索して削除する
処理を行わせるプログラムが記憶されたコンピュータ読み取り可能な記録媒体である。
【0135】
第一の本発明の側面によると、情報処理装置に対して、前記学習済みニューラルネットワークのデータサイズを小さくする処理を行わせるためのプログラムをコンピュータに読み取らせて、学習済みニューラルネットワークのデータサイズを小さくすることができる。
【0136】
第二の本発明の側面は、前記第一の本発明の側面に追加的に、
前記合併レイヤは、前記他のレイヤの前記レイヤ情報及び前記学習済みパラメータに応じて前記一のレイヤの前記レイヤ情報若しくは前記学習済みパラメータを変更することで作成され、
推論処理に不要な前記レイヤには、合併後の前記他のレイヤが含まれることを特徴とする。
【0137】
第二の本発明の側面によると、前記他のレイヤのレイヤ情報及び学習済みパラメータに応じて前記一のレイヤのレイヤ情報若しくは学習済みパラメータを変更することで、前記他のレイヤを前記一のレイヤに合併する。このため、第二の本発明の側面によるコンピュータ読み取り可能な記録媒体を読み取った情報処理装置は、レイヤ情報若しくは学習済みパラメータを変更するだけで、元の推論精度を維持して学習済みニューラルネットワークのデータサイズを小さくすることができる。
【0138】
第三の本発明の側面としては、
情報処理装置、プログラム、若しくはコンピュータ読み取り可能な記録媒体は、
前記学習済みニューラルネットワークによる推論処理が行われる情報処理装置の記憶容量若しくは処理能力に応じて、前記学習済みニューラルネットワークに含まれる学習済みパラメータの数値表現の形式を変換する数値表現変換部(数値表現変換手段)を備えてなり、
前記数値表現変換部(数値表現変換手段)は、合併処理により変更された学習済みパラメータの数値表現を変換する
こととしてもよい。
【0139】
第三の本発明の側面によると、さらに、学習済みニューラルネットワークによる推論処理が行われる情報処理装置のハードウェアの能力に応じた学習済みニューラルネットワークを得ることができる。
【0140】
第四の本発明の側面としては、
情報処理装置、プログラム、若しくはコンピュータ読み取り可能な記録媒体は、
前記学習済みニューラルネットワークを表現するソースコードを他の言語に変換する言語変換部を備えてなることとしてもよい。
第四の本発明の側面によると、学習済みニューラルネットワークによる推論処理が行われる情報処理装置のハードウェアに適したプログラム言語に学習済みニューラルネットワークのソースコードを変換することができる。
【符号の説明】
【0141】
111 情報処理装置
112 制御部
113 取得部
114 解析部
115 合併判定部
116 合併部
117 削除部
121 プロセッサ
122 メモリ
123 ディスプレイ
124 キーボード
125 ハードディスク
126 通信部
127 プログラム
128 シンボルテーブル
S141 アクセスステップ
S142 情報取得ステップ
S143 解析ステップ
S144 合併判定ステップ
S145 合併ステップ
S146 削除判定ステップ
S147 削除ステップ
S148 レイヤ間調整ステップ