(57)【要約】【課題】クラウドとローカルとに学習モデルを分散させる分散型学習モデルにおいて、ローカル側が主導で学習モデルを軽量化する。【解決手段】軽量化指標取得部１１０は、ニューラルネットワークの学習モデルの軽量化の目標値を取得する。前段指標取得部１１１は、学習モデルの前段部を保持するサーバから、前段部の各エッジに割り当てられた重みの重要性を示す値の集合である前段重み指標群を取得する。後段指標取得部１１２は、学習モデルの後段部の各エッジに割り当てられた重みの重要性を示す値の集合である後段重み指標群を取得する。特定部１１３は、軽量化の目標値、前段重み指標群、及び後段重み指標群に基づいて、前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定する。通知部１１４は、前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値をサーバ通知する。【選択図】図３
2020160764.tif 000002
【特許請求の範囲】
【請求項１】
入力層と出力層とを含む複数の層から構成されるニューラルネットワークの学習モデルを構成する層のうち、少なくとも前記出力層を含む前記学習モデルの後段部を保持する記憶部と、
前記学習モデルの軽量化の目標値を取得する軽量化指標取得部と、
前記学習モデルのうち前記後段部を除いた部分である前段部を保持するサーバから、前記前段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である前段重み指標群を取得する前段指標取得部と、
前記後段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である後段重み指標群を取得する後段指標取得部と、
前記軽量化の目標値、前記前段重み指標群、及び前記後段重み指標群に基づいて、前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定する特定部と、
前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を前記サーバに通知する通知部と、
を備えるクライアント装置。
【請求項２】
前記特定部は、前記後段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値をさらに特定し、
前記クライアント装置は、
前記後段部に含まれるエッジのうちプルーニングの対象とするエッジを刈り取るプルーニング実行部をさらに備える、
請求項１に記載のクライアント装置。
【請求項３】
前記前段重み指標群は、前記前段部を構成する層間を接続する各エッジに割り当てられた重みを所定の基準で量子化して得られる値の集合であり、
前記後段重み指標群は、前記後段部を構成する層間を接続する各エッジに割り当てられた重みを、前記前段重み指標群と同一の基準で量子化して得られる値の集合である、
請求項１又は２に記載のクライアント装置。
【請求項４】
前記記憶部は、前記学習モデルの再学習に用いるための再学習用データをさらに保持しており、
前記前段重み指標群は、前記前段部に前記再学習用データを入力したときに前記前段部を構成する層間を接続する各エッジを通過する値から算出された統計量である、
請求項１又は２に記載のクライアント装置。
【請求項５】
前記統計量は、各エッジを通過する値の最大値である、
請求項４に記載のクライアント装置。
【請求項６】
入力層と出力層とを含む複数の層から構成されるニューラルネットワークの学習モデルを構成する層のうち、少なくとも前記出力層を含む前記学習モデルの後段部を記憶する記憶部と、
前記学習モデルの軽量化の目標値を取得する軽量化指標取得部と、
前記学習モデルを構成する層間を接続する各エッジに割り当てられた重みに関する閾値であって、当該閾値以下の重みを刈り取るための閾値である前記後段部を除いた部分である前段部に適用するための第１プルーニング閾値及び前記後段部に適用するための第２プルーニング閾値を設定する閾値設定部と、
前記前段部を保持するサーバに前記第１プルーニング閾値を通知する閾値通知部と、
前記第１プルーニング閾値を適用した場合に刈り取られる前記前段部に含まれるエッジの数である第１刈り取り数を前記サーバから取得する第１刈り取り数取得部と、
前記第２プルーニング閾値を適用した場合に刈り取られる前記後段部に含まれるエッジの数である第２刈り取り数を取得する第２刈り取り数取得部と、を備え、
前記閾値設定部は、前記軽量化の目標値、前記第１刈り取り数、及び前記第２刈り取り数に基づいて、前記第１プルーニング閾値及び前記第２プルーニング閾値を修正して再設定する、
クライアント装置。
【請求項７】
前記第１プルーニング閾値と前記第２プルーニング閾値とは同一である、
請求項６に記載のクライアント装置。
【請求項８】
プロセッサが、
入力層と出力層とを含む複数の層から構成されるニューラルネットワークの学習モデルを構成する層のうち、少なくとも前記出力層を含む前記学習モデルの後段部を記憶部から読み出すステップと、
前記学習モデルの軽量化の目標値を取得するステップと、
前記学習モデルのうち前記後段部を除いた部分である前段部を保持するサーバから、前記前段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である前段重み指標群を取得するステップと、
前記後段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である後段重み指標群を取得するステップと、
前記軽量化の目標値、前記前段重み指標群、及び前記後段重み指標群に基づいて、前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定するステップと、
前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を前記サーバに通知するステップと、
を実行する情報処理方法。
【請求項９】
コンピュータに、
入力層と出力層とを含む複数の層から構成されるニューラルネットワークの学習モデルを構成する層のうち、少なくとも前記出力層を含む前記学習モデルの後段部を記憶部から読み出す機能と、
前記学習モデルの軽量化の目標値を取得する機能と、
前記学習モデルのうち前記後段部を除いた部分である前段部を保持するサーバから、前記前段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である前段重み指標群を取得する機能と、
前記後段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である後段重み指標群を取得する機能と、
前記軽量化の目標値、前記前段重み指標群、及び前記後段重み指標群に基づいて、前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定する機能と、
前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を前記サーバに通知する機能と、
を実現させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアント装置、情報処理方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、ＣＰＵ（Central Processing Unit）及びＧＰＵ（Graphics Processing Unit）の高速化、メモリの大容量化、及びニューラルネットワークを用いた機械学習技術が急速に進んできている。このため、数十万から百万といったオーダーの学習データを用いる機械学習が可能となり、精度の高い識別技術や分類技術が確立されつつある（非特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Yangqing Jia, Evan Shelhamer, Jeff Donahue, Sergey Karayev, Jonathan Long, Ross Girshick, Sergio Guadarrama, and Trevor Darrell. Caffe: Convolutional architecture for fast feature embedding. In Proceedings of the 22nd ACM international conference on Multimedia (pp. 675-678). ACM.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このような学習モデルを生成したモデル作成者がその学習モデルを第三者に利用させることで利益を得ようとする場合に、モデル作成者は、学習モデルの前段部分をクラウド上においてその内容を秘匿し、学習モデルの後段部分を第三者に公開して利用させるビジネスモデルが考えられる。このとき、モデル作成者は学習モデルの利用者の利用環境に応じて学習モデルを省メモリ・省計算リソースで動作させられるように軽量化できれば、クラウド利用料金の削減や、計算資源の限られるローカル端末での実行に有効である。
【０００５】
学習モデルの軽量化には学習モデル全体の情報が必要であるが、クラウドとローカルとに学習モデルを分散させる分散型学習モデルでは、学習モデルの利用者であるローカル側はクラウドのモデル情報が手に入らず、全体を見通しての軽量化が困難である。
【０００６】
本発明はこれらの点に鑑みてなされたものであり、クラウドとローカルとに学習モデルを分散させる分散型学習モデルにおいて、ローカル側が主導で学習モデルを軽量化するための技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の第１の態様は、クライアント装置である。この装置は、入力層と出力層とを含む複数の層から構成されるニューラルネットワークの学習モデルを構成する層のうち、少なくとも前記出力層を含む前記学習モデルの後段部を保持する記憶部と、前記学習モデルの軽量化の目標値を取得する軽量化指標取得部と、前記学習モデルのうち前記後段部を除いた部分である前段部を保持するサーバから、前記前段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である前段重み指標群を取得する前段指標取得部と、前記後段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である後段重み指標群を取得する後段指標取得部と、前記軽量化の目標値、前記前段重み指標群、及び前記後段重み指標群に基づいて、前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定する特定部と、前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を前記サーバに通知する通知部と、を備える。
【０００８】
前記特定部は、前記後段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値をさらに特定してもよく、前記クライアント装置は、前記後段部に含まれるエッジのうちプルーニングの対象とするエッジを刈り取るプルーニング実行部をさらに備えてもよい。
【０００９】
前記前段重み指標群は、前記前段部を構成する層間を接続する各エッジに割り当てられた重みを所定の基準で量子化して得られる値の集合であってもよく、前記後段重み指標群は、前記後段部を構成する層間を接続する各エッジに割り当てられた重みを、前記前段重み指標群と同一の基準で量子化して得られる値の集合であってもよい。
【００１０】
前記記憶部は、前記学習モデルの再学習に用いるための再学習用データをさらに保持してもよく、前記前段重み指標群は、前記前段部に前記再学習用データを入力したときに前記前段部を構成する層間を接続する各エッジを通過する値から算出された統計量であってもよい。
【００１１】
前記統計量は、各エッジを通過する値の最大値であってもよい。
【００１２】
本発明の第２の態様も、クライアント装置である。この装置は、入力層と出力層とを含む複数の層から構成されるニューラルネットワークの学習モデルを構成する層のうち、少なくとも前記出力層を含む前記学習モデルの後段部を記憶する記憶部と、前記学習モデルの軽量化の目標値を取得する軽量化指標取得部と、前記学習モデルを構成する層間を接続する各エッジに割り当てられた重みに関する閾値であって、当該閾値以下の重みを刈り取るための閾値である前記後段部を除いた部分である前段部に適用するための第１プルーニング閾値及び前記後段部に適用するための第２プルーニング閾値を設定する閾値設定部と、前記前段部を保持するサーバに前記第１プルーニング閾値を通知する閾値通知部と、前記第１プルーニング閾値を適用した場合に刈り取られる前記前段部に含まれるエッジの数である第１刈り取り数を前記サーバから取得する第１刈り取り数取得部と、前記第２プルーニング閾値を適用した場合に刈り取られる前記後段部に含まれるエッジの数である第２刈り取り数を取得する第２刈り取り数取得部と、を備える。ここで、前記閾値設定部は、前記軽量化の目標値、前記第１刈り取り数、及び前記第２刈り取り数に基づいて、前記第１プルーニング閾値及び前記第２プルーニング閾値を修正して再設定する。
【００１３】
前記第１プルーニング閾値と前記第２プルーニング閾値とは同一であってもよい。
【００１４】
本発明の第３の態様は、情報処理方法である。この方法において、プロセッサが、入力層と出力層とを含む複数の層から構成されるニューラルネットワークの学習モデルを構成する層のうち、少なくとも前記出力層を含む前記学習モデルの後段部を記憶部から読み出すステップと、前記学習モデルの軽量化の目標値を取得するステップと、前記学習モデルのうち前記後段部を除いた部分である前段部を保持するサーバから、前記前段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である前段重み指標群を取得するステップと、前記後段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である後段重み指標群を取得するステップと、前記軽量化の目標値、前記前段重み指標群、及び前記後段重み指標群に基づいて、前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定するステップと、前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を前記サーバに通知するステップと、を実行する。
【００１５】
本発明の第４の態様は、プログラムである。このプログラムは、コンピュータに、入力層と出力層とを含む複数の層から構成されるニューラルネットワークの学習モデルを構成する層のうち、少なくとも前記出力層を含む前記学習モデルの後段部を記憶部から読み出す機能と、前記学習モデルの軽量化の目標値を取得する機能と、前記学習モデルのうち前記後段部を除いた部分である前段部を保持するサーバから、前記前段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である前段重み指標群を取得する機能と、前記後段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である後段重み指標群を取得する機能と、前記軽量化の目標値、前記前段重み指標群、及び前記後段重み指標群に基づいて、前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定する機能と、前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を前記サーバに通知する機能と、を実現させる。
【００１６】
このプログラムを提供するため、あるいはプログラムの一部をアップデートするために、このプログラムを記録したコンピュータ読み取り可能な記録媒体が提供されてもよく、また、このプログラムが通信回線で伝送されてもよい。
【００１７】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１８】
本発明によれば、クラウドとローカルとに学習モデルを分散させる分散型学習モデルにおいて、学習モデルの軽量化をローカル側が主導することができる。
【図面の簡単な説明】
【００１９】
【図１】実施の形態に係るニューラルネットワークの構成を模式的に示す図である。
【図２】実施の形態に係る情報処理システムの全体構成を模式的に示す図である。
【図３】実施の形態に係るクライアント装置の機能構成を模式的に示す図である。
【図４】重みの量子化の基準を示す量子化用テーブルを模式的に示す図である。
【図５】あるエッジを通過する値である通過値の分布を示すヒストグラムの模式図である。
【図６】前段部を構成する層間を接続する各エッジを通過する通過値から求めた統計量の分布を示すヒストグラムの模式図である。
【図７】実施の形態に係るクライアント装置が実行する処理の流れを説明するためのフローチャートである。
【図８】実施の形態の第１の変形例に係るクライアント装置の機能構成を模式的に示す図である。
【図９】前段部と後段部との境界面における学習モデルノード及びエッジを示す図である。
【発明を実施するための形態】
【００２０】
＜実施の形態の概要＞
実施の形態に係る情報処理システムは、通信ネットワークを介してクラウド側のサーバと、ローカル側のクライアント装置とが通信可能な態様で接続している。ここで、実施の形態に係る情報処理システムでは、ニューラルネットワークを用いて生成された学習モデルの前段部分をサーバが保持し、後段部分をクライアント装置が保持している。このため、クライアント装置はサーバが保持している学習モデルにアクセスすることができない。
【００２１】
実施の形態に係る情報処理システムにおいては、サーバが、クライアント装置に学習モデルを構成するエッジの重要性に関する指標を提供する。クライアント装置は、サーバから取得した指標に基づいて、サーバが保持する学習モデルを含めた学習モデル全体として、プルーニング（pruning;刈り取り）の対象とするエッジを特定する。
【００２２】
＜情報処理システムの全体構成＞
図１は、実施の形態に係るニューラルネットワークの構成を模式的に示す図である。また、図２は、実施の形態に係る情報処理システムＩの全体構成を模式的に示す図である。
【００２３】
実施の形態に係る情報処理システムＩが利用するニューラルネットワークは、全体としては、入力層、中間層、及び出力層を含む一般的な構成である。図１の上段に示すように、一般的なニューラルネットワークでは、入力層に入力された基本学習用データが中間層を伝搬し、最終的に出力層が出力したデータ列と、基本学習用データに対応する正解ラベルとの誤差が損失関数を用いて算出される。ニューラルネットワークの各層を結ぶエッジに設定された重みは、算出された誤差に基づいて誤差逆伝搬法を用いて更新される。
【００２４】
図１の下段に示すように、実施の形態に係る情報処理システムＩが利用するニューラルネットワークにおいて、中間層は３つの層に大別される。具体的には、入力層と隣接する第１中間層、第１中間層を伝搬したデータを出力するための中間出力層、及び中間出力層の出力を入力とし出力層に至るまでの間の第２中間層の３つである。
【００２５】
図２に示すように、実施の形態に係る情報処理システムＩは、通信ネットワークＮを介して互いに通信可能な態様で接続するサーバＳとクライアント装置１とを含む。ここで、サーバＳは、入力層、第１中間層、及び中間出力層を備える。また、サーバＳは、第２中間層と出力層とから構成される公開用ネットワークのみをニューラルネットワークのユーザのクライアント装置１に提供する。以下、サーバＳが備える入力層、第１中間層、及び中間出力層をニューラルネットワークの「前段層」、クライアント装置１が備える第２中間層及び出力層をニューラルネットワークの「後段層」と記載する。なお、前段層と後段層との間を接続するエッジは後段層に含まれるものとする。
【００２６】
ここで、サーバＳは、前段層のパラメータをクライアント装置１に提供せずに秘匿する。サーバＳは、前段層をクライアント装置１に提供する代わりに、サーバＳとデータの送受信をするためのＡＰＩ（Application Programming Interface）をクライアント装置１のユーザに公開する。
【００２７】
例えば、クライアント装置１のユーザは、サーバＳから提供されたＡＰＩを利用してファインチューニングに利用する再学習用データをサーバＳが備える前段層に入力する。また、ユーザは、ＡＰＩを用いて前段層の出力を取得する。これにより、ユーザは、前段層の出力を後段層に入力することができる。したがって、ユーザは、後段層を再学習用データでファインチューニングすることができるようになる。
【００２８】
また、クライアント装置１のユーザは、ＡＰＩを利用して、前段層を構成するエッジに設定された重みパラメータの大小を示す値の集合である前段重み指標群をサーバＳから取得することができる。ニューラルネットワークを構成する重みパラメータの大小は、そのニューラルネットワークにおける重要性を端的に示す指標である。重要性が相対的に低い重みパラメータをプルーニングすることにより、ニューラルネットワークの性能の低下を抑えつつ、学習モデルを軽量化することができる。
【００２９】
より具体的には、以下の（１）から（６）の手順により、クライアント装置１は学習モデルの軽量化を行う。なお、以下の（１）から（６）は、図２における（１）から（６）と対応する。
【００３０】
（１）クライアント装置１は、ユーザから学習モデルの軽量化の目標値を取得する。目標値とは、例えば、学習モデルのサイズの削減目標や、刈り取るエッジの数である。
（２）クライアント装置１は、サーバＳに、前段層を構成するエッジに設定された重みパラメータの大小を示す値の集合である前段重み指標群の提供を要求する。
【００３１】
（３）クライアント装置１は、サーバＳから、前段重み指標群を取得する。
（４）クライアント装置１は、後段層を構成するエッジに設定された重みパラメータの大小を示す値の集合である後段重み指標群を算出する。ここで、クライアント装置１は、前段重み指標群の算出手法と同一の手法を用いて後段重み指標群を算出する。これにより、クライアント装置１は、前段重み指標群と後段重み指標群とをそのまま比較することができるようになる。
【００３２】
（５）クライアント装置１は、軽量化の目標値、前段重み指標群、及び後段重み指標群に基づいて、前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定する。
【００３３】
（６）クライアント装置１は、プルーニングの対象とするエッジに対応する指標値をサーバＳに通知する。これにより、クライアント装置１は、前段層がサーバＳに秘匿される分散型学習モデルにおいても、プルーニング対象となるエッジをサーバＳに通知することができる。
【００３４】
このように、実施の形態に係る情報処理システムＩは、クラウドとローカルとに学習モデルを分散させる分散型学習モデルにおいて、学習モデルの軽量化をローカル側であるクライアント装置１が主導することができる。
【００３５】
＜クライアント装置１の機能構成＞
図３は、実施の形態に係るクライアント装置１の機能構成を模式的に示す図である。クライアント装置１は、記憶部１０と制御部１１とを備える。図３において、矢印は主なデータの流れを示しており、図３に示していないデータの流れがあってもよい。図３において、各機能ブロックはハードウェア（装置）単位の構成ではなく、機能単位の構成を示している。そのため、図３に示す機能ブロックは単一の装置内に実装されてもよく、あるいは複数の装置内に分かれて実装されてもよい。機能ブロック間のデータの授受は、データバス、ネットワーク、可搬記憶媒体等、任意の手段を介して行われてもよい。
【００３６】
記憶部１０は、クライアント装置１を実現するコンピュータのＢＩＯＳ（Basic Input Output System）等を格納するＲＯＭ（Read Only Memory）やクライアント装置１の作業領域となるＲＡＭ（Random Access Memory）、ＯＳ（Operating System）やアプリケーションプログラム、当該アプリケーションプログラムの実行時に参照される種々の情報を格納するＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）等の大容量記憶装置である。
【００３７】
制御部１１は、クライアント装置１のＣＰＵやＧＰＵ等のプロセッサであり、記憶部１０に記憶されたプログラムを実行することによって、軽量化指標取得部１１０、前段指標取得部１１１、後段指標取得部１１２、特定部１１３、通知部１１４、及びプルーニング実行部１１５として機能する。
【００３８】
記憶部１０は、入力層と出力層とを含む複数の層から構成されるニューラルネットワークの学習モデルを構成する層のうち、少なくとも出力層を含む学習モデルの後段部を保持している。具体的には、記憶部１０が保持する後段部はクラウドとローカルとに学習モデルを分散させる分散型学習モデルにおける後段部であり、ＡＰＩを利用してサーバＳから取得して得られたデータである。
【００３９】
軽量化指標取得部１１０は、学習モデルの軽量化の目標値を取得する。具体的には、例えば、軽量化指標取得部１１０は、クライアント装置１の図示しないユーザインタフェースを介してクライアント装置１のユーザが入力した値を学習モデルの軽量化の目標値として取得してもよい。
【００４０】
サーバＳは、学習モデルのうち後段部を除いた部分である前段部を保持している。前段指標取得部１１１は、サーバＳから、前段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である前段重み指標群を取得する。なお、重み指標の詳細は後述する。
【００４１】
後段指標取得部１１２は、後段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である後段重み指標群を取得する。特定部１１３は、軽量化の目標値、前段重み指標群、及び後段重み指標群に基づいて、サーバＳが備える前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定する。
【００４２】
通知部１１４は、前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値をサーバＳに通知する。サーバＳは、クライアント装置１から取得した指標値に基づいて、前段部を構成する層間を接続するエッジの中からプルーニング対象のエッジを特定できる。このように、クライアント装置１は、前段部にアクセスできない状態であっても、学習モデル全体として軽量化を主導することができる。
【００４３】
ここで、特定部１１３は、後段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値をさらに特定する。プルーニング実行部１１５は、後段部に含まれるエッジのうちプルーニングの対象とするエッジを刈り取る。これにより、クライアント装置１は、後段部を軽量化することができる。
【００４４】
クライアント装置１とサーバＳとは異なる装置であるため、クライアント装置１はサーバＳが保持している前段部のエッジを直接プルーニングすることはできない。しかしながら、クライアント装置１は、前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値をサーバＳに通知することで、サーバＳにプルーニングを実行させることができる。このように、クライアント装置１は、クライアント装置１が直接保持していない前段部におけるプルーニングも管理することができる。
【００４５】
続いて、層間を接続する各エッジに割り当てられた重みの重要性を示す値である重み指標について説明する。
【００４６】
（重みの量子化による指標）
重み指標の第１の態様は、重みを量子化して得られる値である。具体的には、前段重み指標群は、前段部を構成する層間を接続する各エッジに割り当てられた重みを所定の基準で量子化して得られる値の集合である。同様に、後段重み指標群は、後段部を構成する層間を接続する各エッジに割り当てられた重みを、前段重み指標群と同一の基準で量子化して得られる値の集合である。
【００４７】
図４は、重みの量子化の基準を示す量子化用テーブルを模式的に示す図である。量子化用テーブルはサーバＳが管理している。クライアント装置１は、ＡＰＩを利用してサーバＳから量子化用テーブルを取得する。クライアント装置１とサーバＳとが量子化用テーブルを共有することにより、クライアント装置１とサーバＳとは同一の基準でエッジに設定された重みを量子化することができる。
【００４８】
図４に示すように、量子化用テーブルは、重みの絶対値の大きさ毎に、量子化後の値が対応付けられて格納されている。サーバＳは、前段部の各エッジに設定されているすべての重みを求め、量子化用テーブルを参照して各重みを量子化する。また、サーバＳにおいて、前段部の各エッジに設定されているすべての重みについてその絶対値を求めた上で、量子化用テーブルを参照して各重みを量子化するようにしてもよい。図４に示す量子化用テーブルの例では量子化レベルは５段階であり、重みの絶対値が小さいほど量子化後の値が小さくなる。
【００４９】
サーバＳは、前段部のネットワーク構造と共に、前段部の各エッジに設定されているすべての重みの量子化値をクライアント装置へ伝送する。これにより、前段部のネットワーク構造はクライアント装置に開示されるが、前段部の各エッジに設定されているすべての重みの正確な値の秘匿性は保持できる。
【００５０】
サーバＳは、量子化された重みの総数を量子化レベル毎に集計して前段重み指標群を生成してもよい。クライアント装置１は、サーバＳから前段重み指標群を取得することにより、前段部を構成する層間を接続する各エッジの総数と、量子化された重みの大きさの分布とを把握することができる。これにより、前段部のネットワーク構造及び各エッジに設定されている個々の重みの秘匿性が保持できるようになる。
【００５１】
クライアント装置１は、量子化用テーブルを参照して後段部を構成する層間を接続する各エッジに割り当てられた重みを量子化することにより、後段重み指標群を生成する。クライアント装置１は、前段重み指標群と後段重み指標群とを合わせることにより、学習モデル全体のエッジの数と、重みの大きさの分布とを把握することもできる。ゆえに、クライアント装置１は、軽量化の目標値が示す目標を達成するために、どの量子化レベルの重みを刈り取るかを算出することができる。
【００５２】
（エッジを通過する値から算出された統計量による指標）
重み指標の第２の態様は、エッジを通過する値から算出された統計量である。周知のように、ニューラルネットワークでは、各層が複数のノードを備え、各ノードが隣接する層が備えるノードとエッジによって接続されている。このとき、あるノードの出力値がエッジを介して接続する隣接ノードに入力されるとき、出力値にエッジの重みを乗じた値が入力値となる。入力値の大きさが大きいほど、その入力値が入力されるノードは活性化された重要なノードとなる。したがって、あるエッジの重要性は、そのエッジを通過する値の大小によっても推し量ることができる。
【００５３】
図５は、あるエッジを通過する値である通過値の分布を示すヒストグラムの模式図である。記憶部１０は、学習モデルの再学習に用いるための再学習用データを保持しており、図５に示すヒストグラムは、再学習用データを学習モデルに入力したときにあるエッジを通過した通過値の分布を示している。図５に示すヒストグラムにおいて、横軸は通過値の大きさであり、縦軸は通過値の頻度である。なお、図５に示す分布形状は一例であり、学習用データ（学習モデルを新規に生成するための初期学習用データも含む）の種類によって異なる形状となりうる。
【００５４】
第２の態様にかかる前段重み指標群は、前段部に再学習用データを入力したときに前段部を構成する層間を接続する各エッジを通過する値から算出された統計量である。同様に、第２の態様にかかる後段重み指標群は、再学習用データを入力したときに後段部を構成する層間を接続する各エッジを通過する値から算出された統計量である。
【００５５】
ここで、「統計量」は、例えば、各エッジを通過する通過値の最大値、中央値、平均値、又は最頻値のいずれかである。上述したように、あるエッジを大きな値の通過値が通過することは、そのエッジが重要であることの指標となりうる。このため、エッジを通過する通過値の最大値は、そのエッジの重要性を示す指標となりうる。
【００５６】
一方、再学習用データに例外的なデータが含まれることによって偶発的にあるエッジの通過値が大きくなることも起こりうる。統計量として最大値を採用すると、このような例外的なデータの影響を強く受けることになりかねない。
【００５７】
そこで、統計量は、中央値、平均値、又は最頻値であってもよい。中央値、平均値、又は最頻値は、例外的なデータの影響を丸める効果があるため、エッジの重要性を示す指標として有用である。統計量として最大値、中央値、平均値、又は最頻値のいずれを採用しても、その値が大きいほど重要なエッジであることを示している。
【００５８】
図６は、前段部を構成する層間を接続する各エッジを通過する通過値から求めた統計量の分布を示すヒストグラムの模式図である。したがって、図６に示すヒストグラムの頻度の総和は、前段部を構成する層間を接続するエッジの総和と一致する。エッジを通過する値から算出された統計量をそのエッジの重み指標とすると、図６に示す統計量の分布が前段重み指標群となる。図示はしないが、後段部を構成する層間を接続する各エッジを通過する通過値から求めた統計量の分布が、後段重み指標群となる。
【００５９】
上述したように、あるエッジに関する統計量が大きいほど、そのエッジが重要であることを示している。したがって、特定部１１３は、前段層に係る統計量の分布と後段層に係る統計量の分布とから、軽量化の目標値を満たすまでプルーニングすべきエッジ（すなわち、統計量が小さいエッジ）を特定することができる。
【００６０】
なお、エッジを通過する通過値そのものに変えて、エッジに設定された重みと通過値との両方の値を反映する指標値を用いてもよい。具体的には、あるエッジに設定された重みをｗとし、そのエッジを通過する通過値をａとする。このとき、α及びβを正の実数として、指標値ＶをＶ＝αｗ＋βａｗと定義する。ここで、α及びβは調整パラメータであり、情報処理システムＩの設計者が実験によって定めればよい。
【００６１】
指標値Ｖは、エッジに設定された重みの大きさが大きいほど大きな値となり、また、エッジを通過する通過値が大きいほど大きな値となる。つまり、あるエッジに関する指標値Ｖが大きいほど、そのエッジの重要性が高いことを示す。
【００６２】
＜サーバＳが実行する学習処理の処理フロー＞
図７は、実施の形態に係るクライアント装置１が実行する処理の流れを説明するためのフローチャートである。本フローチャートにおける処理は、例えば、クライアント装置１が起動したときに開始する。
【００６３】
軽量化指標取得部１１０は、学習モデルの軽量化の目標値を取得する（Ｓ２）。前段指標取得部１１１は、学習モデルの前段部を保持するサーバＳから、前段重み指標群を取得する（Ｓ４）。後段指標取得部１１２は、後段重み指標群を算出して取得する（Ｓ６）。
【００６４】
特定部１１３は、軽量化の目標値、前段重み指標群、及び後段重み指標群に基づいて、前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定する（Ｓ８）。
【００６５】
通知部１１４は、前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値をサーバＳに通知する（Ｓ１０）。通知部１１４が指標値をサーバＳに通知すると、本フローチャートにおける処理は終了する。
【００６６】
＜実施の形態に係る情報処理システムＩが奏する効果＞
以上説明したように、実施の形態に係る情報処理システムＩによれば、クラウド側のサーバＳとローカル側のクライアント装置１とに学習モデルを分散させる分散型学習モデルにおいて、クライアント装置１が学習モデルの軽量化を主導することができる。
【００６７】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されず、その要旨の範囲内で種々の変形及び変更が可能である。例えば、装置の分散・統合の具体的な実施の形態は、以上の実施の形態に限られず、その全部又は一部について、任意の単位で機能的又は物理的に分散・統合して構成することができる。また、複数の実施の形態の任意の組み合わせによって生じる新たな実施の形態も、本発明の実施の形態に含まれる。組み合わせによって生じる新たな実施の形態の効果は、もとの実施の形態の効果を合わせ持つ。
【００６８】
＜第１の変形例＞
上記では、クライアント装置１がサーバＳから取得した前段重み指標群を参照して、クライアント装置１が前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定する場合について主に説明した。これに替えて、クライアント装置１からの要求に応答して、サーバＳ側でプルーニングの対象とするエッジを決定してクライアント装置１に通知してもよい。以下、第１の変形例として、クライアント装置１からの要求に応答して、サーバＳ側でプルーニングの対象とするエッジを決定する態様について説明する。
【００６９】
図８は、実施の形態の第１の変形例に係るクライアント装置２の機能構成を模式的に示す図である。以下、図８を参照しながら実施の形態の第１の変形例に係るクライアント装置２を説明するが、実施の形態に係るクライアント装置１と重複する内容は適宜省略又は簡略化して説明する。
【００７０】
クライアント装置２は、記憶部２０と制御部２１とを備える。記憶部２０は、クライアント装置２を実現するコンピュータのＢＩＯＳ等を格納するＲＯＭやクライアント装置２の作業領域となるＲＡＭ、ＯＳやアプリケーションプログラム、当該アプリケーションプログラムの実行時に参照される種々の情報を格納するＨＤＤやＳＳＤ等の大容量記憶装置である。
【００７１】
制御部２１は、クライアント装置２のＣＰＵやＧＰＵ等のプロセッサであり、記憶部２０に記憶されたプログラムを実行することによって、軽量化指標取得部２１０、閾値設定部２１１、閾値通知部２１２、刈り取り数取得部２１３、及びプルーニング実行部２１４として機能する。刈り取り数取得部２１３は、第１刈り取り数取得部２１３０と第２刈り取り数取得部２１３１とを備える。
【００７２】
記憶部２０は、入力層と出力層とを含む複数の層から構成されるニューラルネットワークの学習モデルを構成する層のうち、少なくとも出力層を含む学習モデルの後段部を記憶している。
【００７３】
軽量化指標取得部２１０は、学習モデルの軽量化の目標値をクライアント装置２のユーザから取得する。閾値設定部２１１は、学習モデルを構成する層間を接続する各エッジに割り当てられた重みに関する閾値であって、その閾値以下の重みを刈り取るための閾値であるプルーニング閾値を設定する。ここで、閾値設定部２１１は、学習モデルの前段部用の閾値である第１プルーニング閾値と、学習モデルの後段部用の閾値である第２プルーニング閾値とを個別に設定する。
【００７４】
閾値通知部２１２は、後段部を除いた部分である前段部を保持するサーバＳに閾値設定部２１１が設定した第１プルーニング閾値を通知する。その後、第１刈り取り数取得部２１３０は、第１プルーニング閾値を適用した場合に刈り取られる前段部に含まれるエッジの数である第１刈り取り数をサーバＳから取得する。
【００７５】
また、第２刈り取り数取得部２１３１は、閾値設定部２１１が設定した第２プルーニング閾値を適用した場合に刈り取られる後段部に含まれるエッジの数である第２刈り取り数を取得する。
【００７６】
閾値設定部２１１は、軽量化の目標値、第１刈り取り数、及び第２刈り取り数に基づいて、プルーニング閾値を修正して再設定する。より具体的には、閾値設定部２１１は、第１刈り取り数と第２刈り取り数との合計値が、軽量化の目標値を達成する場合に刈り取るべきエッジの数に近づくように、第１プルーニング閾値及び第２プルーニング閾値を修正する。
【００７７】
閾値通知部２１２は、閾値設定部２１１が再設定した第１プルーニング閾値をサーバＳに通知する。第１刈り取り数と第２刈り取り数との合計と軽量化の目標値を達成する場合に刈り取るべきエッジの数との差が所定の数以下となるまで、クライアント装置２は以上の動作を繰り返す。
【００７８】
これにより、クライアント装置２は、サーバＳが保持する前段部にアクセスできなくても、クライアント装置１が学習モデルの軽量化を主導することができる。プルーニング実行部２１４は、後段部のエッジのうち、設定された重みの値が最終的に設定された第２プルーニング閾値未満となるエッジを刈り取る。これにより、クライアント装置２は、後段部の軽量化を実現できる。
【００７９】
閾値設定部２１１は、第１プルーニング閾値と第２プルーニング閾値とを同一の値にしてもよい。この場合、クライアント装置２は、サーバＳが保持する前段部と、クライアント装置２が保持する後段部とを、同一の基準でプルーニングすることができる。
【００８０】
また、閾値設定部２１１は、第１プルーニング閾値の方が第２プルーニング閾値よりも小さい値に設定してもよい。この場合、クライアント装置２は、前段部のエッジを後段部のエッジよりも重点的にプルーニングすることができる。前段部が後段部よりも軽量化されるため、クライアント装置２は、サーバＳの利用料を抑制することができる。
【００８１】
反対に、閾値設定部２１１は、第１プルーニング閾値の方が第２プルーニング閾値よりも大きい値に設定してもよい。この場合、クライアント装置２は、後段部のエッジを前段部のエッジよりも重点的にプルーニングすることができる。後段部が前段部よりも軽量化されるため、クライアント装置２は、クライアント装置２の計算リソースが小さい場合であって学習モデルを実行することができるようになる。
【００８２】
＜第２の変形例＞
上記では、クライアント装置１がサーバＳから取得した前段重み指標群を参照して、クライアント装置１が前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定する場合について主に説明した。これに替えて、サーバＳがクライアント装置１から取得した指標に基づいて、サーバＳが前段部のプルーニング対象のエッジを決定してもよい。
【００８３】
以下、第２の変形例として、サーバＳが前段部のプルーニング対象のエッジを決定するために、クライアント装置１から取得するノードの重み指標について説明する。なお、第２の変形例に係るクライアント装置１において、ノードの重み指標は、後段指標取得部１１２が算出する。
【００８４】
図９は、前段部と後段部との境界面における学習モデルノード及びエッジを示す図であり、第２の変形例に係るノードの重み指標について説明するための図である。説明の便宜のため、図９は、後段部は２層である場合について示している。また、バイアス項及び活性化関数も省略している。
【００８５】
図９において、前段部における境界面の層は、ノードｘ１１とノードｘ２１との２つのノードを含んでいる。また、後段部における境界面の層は、ノードｘ１２とノードｘ２２とノードｘ３２とを含んでいる。同様に、後段部にある出力層は、ノードｘ１３とノードｘ２３とを含んでいる。
【００８６】
図９は、境界面に存在するエッジ、すなわち、前段部と後段部とを接続するエッジに割り当てられた重みは上付き文字の１で示し、後段部における境界面の層と出力とを接続するエッジに割り当てられた重みは上付き文字の２で示している。例えば、前段部における境界面の層に含まれるノードｘ１１と、後段部における境界面の層に含まれるノードｘ３２とを接続するエッジに割り当てられた重みはｗ３１１で示されている。同様に、後段部における境界面の層に含まれるノードｘ２２と出力層に含まれるノードｘ１３とを接続するエッジに割り当てられた重みはｗ１２２で示されている。
【００８７】
図９において、Ｐ、Ｑ、及びＲは、それぞれノードｘ１２、ノードｘ２２、及びノードｘ３２の重み指標である。後段指標取得部１１２は、以下の式（１）にしたがってＰ、Ｑ、及びＲを算出する。
【００８８】
【数１】
2020160764.tif 000003
ここでＣは出力層に含まれる各ノードに割り当てられた重み指標の初期値であり、定数である。限定はしないが、Ｃの値は１であってもよい。
【００８９】
後段指標取得部１１２は、出力層を構成する各ノードの重み指標が定数Ｃであると仮定して、各ノードの重み指標に、そのノードに接続されているエッジに割り当てられた重みの絶対値を乗じた値を、エッジの接続先のノードに伝搬させる。後段指標取得部１１２は、伝搬先の各ノードについて伝搬された重みの絶対値の総和を取ることにより、そのノードの重み指標とする。
【００９０】
出力層と後段部における境界面の層との間に層が存在する場合、後段指標取得部１１２は、後段部における境界面の層に至るまで、ノードの重み指標とエッジに割り当てられた重みの絶対値との積の伝搬及び加算処理を繰り返す。
【００９１】
後段指標取得部１１２は、後段部における境界面の層に含まれる各ノードの重み指標と、前段部と後段部とを接続するエッジに割り当てられた重みとを用いて、以下の式（２）にしたがってサーバＳに送信する指標を算出する。この指標は、第２の変形例における後段重み指標群となる。
【００９２】
【数２】
2020160764.tif 000004
ここで、Ｓ及びＴは、それぞれ前段部における境界面の層は、ノードｘ１１及びノードｘ２１の重み指標である。なお、前段部と後段部とを接続するエッジは後段部に含まれ、後段指標取得部１１２は、前段部と後段部とを接続するエッジに割り当てられた重みにアクセスできるものとする。
【００９３】
以上をまとめると、後段指標取得部１１２は、（１）出力層を構成する各ノードの重み指標に定数を割り当て、（２）各ノードの重み指標にそのノードに接続されているエッジに割り当てられた重みの絶対値を乗じた値をエッジの接続先のノードに伝搬させ、（３）伝搬先の各ノードについて伝搬された重みの絶対値の総和を取った値を各ノードの重み指標とし、（４）前段部における境界面の層に至るまで（２）の処理と（３）の処理とを繰り返すことにより、第２の変形例における後段重み指標群を算出する。なお、後段指標取得部１１２は、式（２）に替えて以下の式（３）にしたがって指標を算出してもよい。
【００９４】
【数３】
2020160764.tif 000005
【００９５】
式（３）は、式（２）と比較すると、エッジに割り当てられた重みの絶対値の総和が１となるように規格化されているといえる。
【００９６】
第２の変形例における後段重み指標群を取得したサーバＳは、後段指標取得部１１２と同様の処理を実行することにより、入力層に至るまでの各層に含まれるノードの重み指標を算出することができる。サーバＳは、あるエッジに割り当てられた重みの絶対値に、そのエッジが接続している出力層側のノードの重み指標を乗じた値を算出することで、そのエッジの重要性を示す指標とする。具体的には、サーバＳは、算出した値が大きいほど、そのエッジの重要性が高いものとする。これにより、サーバＳは、取得した後段重み指標群に基づいて、前段部を構成する各エッジの中からプルーニング対象のエッジを特定することができる。
【００９７】
＜第３の変形例＞
上述した第２の変形例では、クライアント装置１から後段重み指標群を取得したサーバＳが、その後段重み指標群に基づいて前段部を構成する各エッジの中からプルーニング対象のエッジを特定する場合について説明した。第３の変形例は、第２の変形例と異なり、クライアント装置１がサーバＳからエッジに関する重み指標を取得し、取得した重み指標に基づいて後段部を構成するエッジの中からプルーニング対象のエッジを特定する。
【００９８】
具体的には、サーバＳは、学習モデルの生成又は再学習に用いた学習用データを学習モデルに入力したときに、前段部における境界面の層に含まれる各ノードを通過する値の最大値を記録し、その値を第３の変形例における前段重み指標群とする。
【００９９】
例えば、図９において、学習用データを学習モデルに入力したときに、前段部における境界面の層は、ノードｘ１１とノードｘ２１とを通過する値の最大値をそれぞれＳ及びＴとする。このＳ及びＴが、第３の変形例における前段重み指標群となる。
【０１００】
第３の変形例に係る特定部１１３は、まず、前段部と後段部とを接続するエッジの中から１つのエッジを選択する。特定部１１３は、前段部における境界面の層に含まれるノードのうち、選択したエッジに接続されているノードの重み指標を取得する。特定部１１３は、選択したエッジを取得した重み指標が通過し、他のエッジは０が通過すると仮定した場合に、後段部を構成する各エッジを通過する値を記録する。なお、エッジを通過する値とは、ノードを通過する値にエッジに割り当てられた重みの絶対値を乗じた値を意味する。例えば、ノードｘ１１とノードｘ１２とを接続するエッジを通過する値は、Ｓ｜ｗ１１１｜となる。
【０１０１】
特定部１１３は、前段部と後段部とを接続するすべてのエッジが選択されるまで、選択するエッジを変更しながら同様の処理を繰り返す。特定部１１３がすべてのエッジを選択して上記の処理を行った後、後段部を構成する各エッジを通過する値の最大値を、そのエッジの重要性を示す指標とする。これにより、後段部を構成する各エッジに関してエッジの重要性を示す指標を算出できるので、特定部１１３は、後段部を構成するエッジの中からプルーニング対象のエッジを特定することができる。前段部の情報をエッジの重要性を示す指標に反映できるので、後段部を構成するエッジに割り当てられた重みのみに基づいてエッジの重要性を示す指標を算出する場合と比較して重要性の精度の向上が期待できる点で効果がある。
【０１０２】
第３の変形例に係るクライアント装置１は、サーバＳから上述の前段重み指標群を取得し、前段重み指標群に基づいて後段部を構成するエッジの中からプルーニング対象のエッジを特定する。このため、第３の変形例に係るクライアント装置１は、実施の形態に係るクライアント装置１とは異なり、前段部を構成する各エッジのうちプルーニング対象のエッジを特定してサーバＳに通知せずに後段部におけるプルーニング対象のエッジを刈り取る場合もあり得る。
【符号の説明】
【０１０３】
１・・・クライアント装置
１０・・・記憶部
１１・・・制御部
１１０・・・軽量化指標取得部
１１１・・・前段指標取得部
１１２・・・後段指標取得部
１１３・・・特定部
１１４・・・通知部
１１５・・・プルーニング実行部
２・・・クライアント装置
２０・・・記憶部
２１・・・制御部
２１０・・・軽量化指標取得部
２１１・・・閾値設定部
２１２・・・閾値通知部
２１３・・・刈り取り数取得部
２１３０・・・第１刈り取り数取得部
２１３１・・・第２刈り取り数取得部
２１４・・・プルーニング実行部
Ｉ・・・情報処理システム
Ｓ・・・サーバ
【図１】
2020160764.tif 000006
【図２】
2020160764.tif 000007
【図３】
2020160764.tif 000008
【図４】
2020160764.tif 000009
【図５】
2020160764.tif 000010
【図６】
2020160764.tif 000011
【図７】
2020160764.tif 000012
【図８】
2020160764.tif 000013
【図９】
2020160764.tif 000014