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

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

▶ KDDI株式会社の特許一覧

特許7022714クライアント装置、情報処理方法、及びプログラム
<>
  • 特許-クライアント装置、情報処理方法、及びプログラム 図1
  • 特許-クライアント装置、情報処理方法、及びプログラム 図2
  • 特許-クライアント装置、情報処理方法、及びプログラム 図3
  • 特許-クライアント装置、情報処理方法、及びプログラム 図4
  • 特許-クライアント装置、情報処理方法、及びプログラム 図5
  • 特許-クライアント装置、情報処理方法、及びプログラム 図6
  • 特許-クライアント装置、情報処理方法、及びプログラム 図7
  • 特許-クライアント装置、情報処理方法、及びプログラム 図8
  • 特許-クライアント装置、情報処理方法、及びプログラム 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-02-09
(45)【発行日】2022-02-18
(54)【発明の名称】クライアント装置、情報処理方法、及びプログラム
(51)【国際特許分類】
   G06N 3/08 20060101AFI20220210BHJP
【FI】
G06N3/08 120
【請求項の数】 9
(21)【出願番号】P 2019059142
(22)【出願日】2019-03-26
(65)【公開番号】P2020160764
(43)【公開日】2020-10-01
【審査請求日】2021-01-20
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100166006
【弁理士】
【氏名又は名称】泉 通博
(74)【代理人】
【識別番号】100124084
【弁理士】
【氏名又は名称】黒岩 久人
(74)【代理人】
【識別番号】100153280
【弁理士】
【氏名又は名称】寺川 賢祐
(72)【発明者】
【氏名】酒澤 茂之
(72)【発明者】
【氏名】明堂 絵美
(72)【発明者】
【氏名】田坂 和之
【審査官】北川 純次
(56)【参考文献】
【文献】特表2017-530435(JP,A)
【文献】米国特許第10127495(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/08
(57)【特許請求の範囲】
【請求項1】
入力層と出力層とを含む複数の層から構成されるニューラルネットワークの学習モデルを構成する層のうち、少なくとも前記出力層を含む前記学習モデルの後段部を保持する記憶部と、
前記学習モデルの軽量化の目標値を取得する軽量化指標取得部と、
前記学習モデルのうち前記後段部を除いた部分である前段部を保持するサーバから、前記前段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である前段重み指標群を取得する前段指標取得部と、
前記後段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である後段重み指標群を取得する後段指標取得部と、
前記軽量化の目標値、前記前段重み指標群、及び前記後段重み指標群に基づいて、前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定する特定部と、
前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を前記サーバに通知する通知部と、
を備えるクライアント装置。
【請求項2】
前記特定部は、前記後段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値をさらに特定し、
前記クライアント装置は、
前記後段部に含まれるエッジのうちプルーニングの対象とするエッジを刈り取るプルーニング実行部をさらに備える、
請求項1に記載のクライアント装置。
【請求項3】
前記前段重み指標群は、前記前段部を構成する層間を接続する各エッジに割り当てられた重みを所定の基準で量子化して得られる値の集合であり、
前記後段重み指標群は、前記後段部を構成する層間を接続する各エッジに割り当てられた重みを、前記前段重み指標群と同一の基準で量子化して得られる値の集合である、
請求項1又は2に記載のクライアント装置。
【請求項4】
前記記憶部は、前記学習モデルの再学習に用いるための再学習用データをさらに保持しており、
前記前段重み指標群は、前記前段部に前記再学習用データを入力したときに前記前段部を構成する層間を接続する各エッジを通過する値から算出された統計量である、
請求項1又は2に記載のクライアント装置。
【請求項5】
前記統計量は、各エッジを通過する値の最大値である、
請求項4に記載のクライアント装置。
【請求項6】
入力層と出力層とを含む複数の層から構成されるニューラルネットワークの学習モデルを構成する層のうち、少なくとも前記出力層を含む前記学習モデルの後段部を記憶する記憶部と、
前記学習モデルの軽量化の目標値を取得する軽量化指標取得部と、
前記学習モデルを構成する層間を接続する各エッジに割り当てられた重みに関する閾値であって、当該閾値以下の重みを刈り取るための閾値である前記後段部を除いた部分である前段部に適用するための第1プルーニング閾値及び前記後段部に適用するための第2プルーニング閾値を設定する閾値設定部と、
前記前段部を保持するサーバに前記第1プルーニング閾値を通知する閾値通知部と、
前記第1プルーニング閾値を適用した場合に刈り取られる前記前段部に含まれるエッジの数である第1刈り取り数を前記サーバから取得する第1刈り取り数取得部と、
前記第2プルーニング閾値を適用した場合に刈り取られる前記後段部に含まれるエッジの数である第2刈り取り数を取得する第2刈り取り数取得部と、を備え、
前記閾値設定部は、前記軽量化の目標値、前記第1刈り取り数、及び前記第2刈り取り数に基づいて、前記第1プルーニング閾値及び前記第2プルーニング閾値を修正して再設定する、
クライアント装置。
【請求項7】
前記第1プルーニング閾値と前記第2プルーニング閾値とは同一である、
請求項6に記載のクライアント装置。
【請求項8】
プロセッサが、
入力層と出力層とを含む複数の層から構成されるニューラルネットワークの学習モデルを構成する層のうち、少なくとも前記出力層を含む前記学習モデルの後段部を記憶部から読み出すステップと、
前記学習モデルの軽量化の目標値を取得するステップと、
前記学習モデルのうち前記後段部を除いた部分である前段部を保持するサーバから、前記前段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である前段重み指標群を取得するステップと、
前記後段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である後段重み指標群を取得するステップと、
前記軽量化の目標値、前記前段重み指標群、及び前記後段重み指標群に基づいて、前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定するステップと、
前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を前記サーバに通知するステップと、
を実行する情報処理方法。
【請求項9】
コンピュータに、
入力層と出力層とを含む複数の層から構成されるニューラルネットワークの学習モデルを構成する層のうち、少なくとも前記出力層を含む前記学習モデルの後段部を記憶部から読み出す機能と、
前記学習モデルの軽量化の目標値を取得する機能と、
前記学習モデルのうち前記後段部を除いた部分である前段部を保持するサーバから、前記前段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である前段重み指標群を取得する機能と、
前記後段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である後段重み指標群を取得する機能と、
前記軽量化の目標値、前記前段重み指標群、及び前記後段重み指標群に基づいて、前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定する機能と、
前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を前記サーバに通知する機能と、
を実現させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、クライアント装置、情報処理方法、及びプログラムに関する。
【背景技術】
【0002】
近年、CPU(Central Processing Unit)及びGPU(Graphics Processing Unit)の高速化、メモリの大容量化、及びニューラルネットワークを用いた機械学習技術が急速に進んできている。このため、数十万から百万といったオーダーの学習データを用いる機械学習が可能となり、精度の高い識別技術や分類技術が確立されつつある(非特許文献1参照)。
【先行技術文献】
【非特許文献】
【0003】
【文献】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.
【発明の概要】
【発明が解決しようとする課題】
【0004】
このような学習モデルを生成したモデル作成者がその学習モデルを第三者に利用させることで利益を得ようとする場合に、モデル作成者は、学習モデルの前段部分をクラウド上においてその内容を秘匿し、学習モデルの後段部分を第三者に公開して利用させるビジネスモデルが考えられる。このとき、モデル作成者は学習モデルの利用者の利用環境に応じて学習モデルを省メモリ・省計算リソースで動作させられるように軽量化できれば、クラウド利用料金の削減や、計算資源の限られるローカル端末での実行に有効である。
【0005】
学習モデルの軽量化には学習モデル全体の情報が必要であるが、クラウドとローカルとに学習モデルを分散させる分散型学習モデルでは、学習モデルの利用者であるローカル側はクラウドのモデル情報が手に入らず、全体を見通しての軽量化が困難である。
【0006】
本発明はこれらの点に鑑みてなされたものであり、クラウドとローカルとに学習モデルを分散させる分散型学習モデルにおいて、ローカル側が主導で学習モデルを軽量化するための技術を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の第1の態様は、クライアント装置である。この装置は、入力層と出力層とを含む複数の層から構成されるニューラルネットワークの学習モデルを構成する層のうち、少なくとも前記出力層を含む前記学習モデルの後段部を保持する記憶部と、前記学習モデルの軽量化の目標値を取得する軽量化指標取得部と、前記学習モデルのうち前記後段部を除いた部分である前段部を保持するサーバから、前記前段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である前段重み指標群を取得する前段指標取得部と、前記後段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である後段重み指標群を取得する後段指標取得部と、前記軽量化の目標値、前記前段重み指標群、及び前記後段重み指標群に基づいて、前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定する特定部と、前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を前記サーバに通知する通知部と、を備える。
【0008】
前記特定部は、前記後段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値をさらに特定してもよく、前記クライアント装置は、前記後段部に含まれるエッジのうちプルーニングの対象とするエッジを刈り取るプルーニング実行部をさらに備えてもよい。
【0009】
前記前段重み指標群は、前記前段部を構成する層間を接続する各エッジに割り当てられた重みを所定の基準で量子化して得られる値の集合であってもよく、前記後段重み指標群は、前記後段部を構成する層間を接続する各エッジに割り当てられた重みを、前記前段重み指標群と同一の基準で量子化して得られる値の集合であってもよい。
【0010】
前記記憶部は、前記学習モデルの再学習に用いるための再学習用データをさらに保持してもよく、前記前段重み指標群は、前記前段部に前記再学習用データを入力したときに前記前段部を構成する層間を接続する各エッジを通過する値から算出された統計量であってもよい。
【0011】
前記統計量は、各エッジを通過する値の最大値であってもよい。
【0012】
本発明の第2の態様も、クライアント装置である。この装置は、入力層と出力層とを含む複数の層から構成されるニューラルネットワークの学習モデルを構成する層のうち、少なくとも前記出力層を含む前記学習モデルの後段部を記憶する記憶部と、前記学習モデルの軽量化の目標値を取得する軽量化指標取得部と、前記学習モデルを構成する層間を接続する各エッジに割り当てられた重みに関する閾値であって、当該閾値以下の重みを刈り取るための閾値である前記後段部を除いた部分である前段部に適用するための第1プルーニング閾値及び前記後段部に適用するための第2プルーニング閾値を設定する閾値設定部と、前記前段部を保持するサーバに前記第1プルーニング閾値を通知する閾値通知部と、前記第1プルーニング閾値を適用した場合に刈り取られる前記前段部に含まれるエッジの数である第1刈り取り数を前記サーバから取得する第1刈り取り数取得部と、前記第2プルーニング閾値を適用した場合に刈り取られる前記後段部に含まれるエッジの数である第2刈り取り数を取得する第2刈り取り数取得部と、を備える。ここで、前記閾値設定部は、前記軽量化の目標値、前記第1刈り取り数、及び前記第2刈り取り数に基づいて、前記第1プルーニング閾値及び前記第2プルーニング閾値を修正して再設定する。
【0013】
前記第1プルーニング閾値と前記第2プルーニング閾値とは同一であってもよい。
【0014】
本発明の第3の態様は、情報処理方法である。この方法において、プロセッサが、入力層と出力層とを含む複数の層から構成されるニューラルネットワークの学習モデルを構成する層のうち、少なくとも前記出力層を含む前記学習モデルの後段部を記憶部から読み出すステップと、前記学習モデルの軽量化の目標値を取得するステップと、前記学習モデルのうち前記後段部を除いた部分である前段部を保持するサーバから、前記前段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である前段重み指標群を取得するステップと、前記後段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である後段重み指標群を取得するステップと、前記軽量化の目標値、前記前段重み指標群、及び前記後段重み指標群に基づいて、前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定するステップと、前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を前記サーバに通知するステップと、を実行する。
【0015】
本発明の第4の態様は、プログラムである。このプログラムは、コンピュータに、入力層と出力層とを含む複数の層から構成されるニューラルネットワークの学習モデルを構成する層のうち、少なくとも前記出力層を含む前記学習モデルの後段部を記憶部から読み出す機能と、前記学習モデルの軽量化の目標値を取得する機能と、前記学習モデルのうち前記後段部を除いた部分である前段部を保持するサーバから、前記前段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である前段重み指標群を取得する機能と、前記後段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である後段重み指標群を取得する機能と、前記軽量化の目標値、前記前段重み指標群、及び前記後段重み指標群に基づいて、前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定する機能と、前記前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を前記サーバに通知する機能と、を実現させる。
【0016】
このプログラムを提供するため、あるいはプログラムの一部をアップデートするために、このプログラムを記録したコンピュータ読み取り可能な記録媒体が提供されてもよく、また、このプログラムが通信回線で伝送されてもよい。
【0017】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0018】
本発明によれば、クラウドとローカルとに学習モデルを分散させる分散型学習モデルにおいて、学習モデルの軽量化をローカル側が主導することができる。
【図面の簡単な説明】
【0019】
図1】実施の形態に係るニューラルネットワークの構成を模式的に示す図である。
図2】実施の形態に係る情報処理システムの全体構成を模式的に示す図である。
図3】実施の形態に係るクライアント装置の機能構成を模式的に示す図である。
図4】重みの量子化の基準を示す量子化用テーブルを模式的に示す図である。
図5】あるエッジを通過する値である通過値の分布を示すヒストグラムの模式図である。
図6】前段部を構成する層間を接続する各エッジを通過する通過値から求めた統計量の分布を示すヒストグラムの模式図である。
図7】実施の形態に係るクライアント装置が実行する処理の流れを説明するためのフローチャートである。
図8】実施の形態の第1の変形例に係るクライアント装置の機能構成を模式的に示す図である。
図9】前段部と後段部との境界面における学習モデルノード及びエッジを示す図である。
【発明を実施するための形態】
【0020】
<実施の形態の概要>
実施の形態に係る情報処理システムは、通信ネットワークを介してクラウド側のサーバと、ローカル側のクライアント装置とが通信可能な態様で接続している。ここで、実施の形態に係る情報処理システムでは、ニューラルネットワークを用いて生成された学習モデルの前段部分をサーバが保持し、後段部分をクライアント装置が保持している。このため、クライアント装置はサーバが保持している学習モデルにアクセスすることができない。
【0021】
実施の形態に係る情報処理システムにおいては、サーバが、クライアント装置に学習モデルを構成するエッジの重要性に関する指標を提供する。クライアント装置は、サーバから取得した指標に基づいて、サーバが保持する学習モデルを含めた学習モデル全体として、プルーニング(pruning;刈り取り)の対象とするエッジを特定する。
【0022】
<情報処理システムの全体構成>
図1は、実施の形態に係るニューラルネットワークの構成を模式的に示す図である。また、図2は、実施の形態に係る情報処理システムIの全体構成を模式的に示す図である。
【0023】
実施の形態に係る情報処理システムIが利用するニューラルネットワークは、全体としては、入力層、中間層、及び出力層を含む一般的な構成である。図1の上段に示すように、一般的なニューラルネットワークでは、入力層に入力された基本学習用データが中間層を伝搬し、最終的に出力層が出力したデータ列と、基本学習用データに対応する正解ラベルとの誤差が損失関数を用いて算出される。ニューラルネットワークの各層を結ぶエッジに設定された重みは、算出された誤差に基づいて誤差逆伝搬法を用いて更新される。
【0024】
図1の下段に示すように、実施の形態に係る情報処理システムIが利用するニューラルネットワークにおいて、中間層は3つの層に大別される。具体的には、入力層と隣接する第1中間層、第1中間層を伝搬したデータを出力するための中間出力層、及び中間出力層の出力を入力とし出力層に至るまでの間の第2中間層の3つである。
【0025】
図2に示すように、実施の形態に係る情報処理システムIは、通信ネットワークNを介して互いに通信可能な態様で接続するサーバSとクライアント装置1とを含む。ここで、サーバSは、入力層、第1中間層、及び中間出力層を備える。また、サーバSは、第2中間層と出力層とから構成される公開用ネットワークのみをニューラルネットワークのユーザのクライアント装置1に提供する。以下、サーバSが備える入力層、第1中間層、及び中間出力層をニューラルネットワークの「前段層」、クライアント装置1が備える第2中間層及び出力層をニューラルネットワークの「後段層」と記載する。なお、前段層と後段層との間を接続するエッジは後段層に含まれるものとする。
【0026】
ここで、サーバSは、前段層のパラメータをクライアント装置1に提供せずに秘匿する。サーバSは、前段層をクライアント装置1に提供する代わりに、サーバSとデータの送受信をするためのAPI(Application Programming Interface)をクライアント装置1のユーザに公開する。
【0027】
例えば、クライアント装置1のユーザは、サーバSから提供されたAPIを利用してファインチューニングに利用する再学習用データをサーバSが備える前段層に入力する。また、ユーザは、APIを用いて前段層の出力を取得する。これにより、ユーザは、前段層の出力を後段層に入力することができる。したがって、ユーザは、後段層を再学習用データでファインチューニングすることができるようになる。
【0028】
また、クライアント装置1のユーザは、APIを利用して、前段層を構成するエッジに設定された重みパラメータの大小を示す値の集合である前段重み指標群をサーバSから取得することができる。ニューラルネットワークを構成する重みパラメータの大小は、そのニューラルネットワークにおける重要性を端的に示す指標である。重要性が相対的に低い重みパラメータをプルーニングすることにより、ニューラルネットワークの性能の低下を抑えつつ、学習モデルを軽量化することができる。
【0029】
より具体的には、以下の(1)から(6)の手順により、クライアント装置1は学習モデルの軽量化を行う。なお、以下の(1)から(6)は、図2における(1)から(6)と対応する。
【0030】
(1)クライアント装置1は、ユーザから学習モデルの軽量化の目標値を取得する。目標値とは、例えば、学習モデルのサイズの削減目標や、刈り取るエッジの数である。
(2)クライアント装置1は、サーバSに、前段層を構成するエッジに設定された重みパラメータの大小を示す値の集合である前段重み指標群の提供を要求する。
【0031】
(3)クライアント装置1は、サーバSから、前段重み指標群を取得する。
(4)クライアント装置1は、後段層を構成するエッジに設定された重みパラメータの大小を示す値の集合である後段重み指標群を算出する。ここで、クライアント装置1は、前段重み指標群の算出手法と同一の手法を用いて後段重み指標群を算出する。これにより、クライアント装置1は、前段重み指標群と後段重み指標群とをそのまま比較することができるようになる。
【0032】
(5)クライアント装置1は、軽量化の目標値、前段重み指標群、及び後段重み指標群に基づいて、前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定する。
【0033】
(6)クライアント装置1は、プルーニングの対象とするエッジに対応する指標値をサーバSに通知する。これにより、クライアント装置1は、前段層がサーバSに秘匿される分散型学習モデルにおいても、プルーニング対象となるエッジをサーバSに通知することができる。
【0034】
このように、実施の形態に係る情報処理システムIは、クラウドとローカルとに学習モデルを分散させる分散型学習モデルにおいて、学習モデルの軽量化をローカル側であるクライアント装置1が主導することができる。
【0035】
<クライアント装置1の機能構成>
図3は、実施の形態に係るクライアント装置1の機能構成を模式的に示す図である。クライアント装置1は、記憶部10と制御部11とを備える。図3において、矢印は主なデータの流れを示しており、図3に示していないデータの流れがあってもよい。図3において、各機能ブロックはハードウェア(装置)単位の構成ではなく、機能単位の構成を示している。そのため、図3に示す機能ブロックは単一の装置内に実装されてもよく、あるいは複数の装置内に分かれて実装されてもよい。機能ブロック間のデータの授受は、データバス、ネットワーク、可搬記憶媒体等、任意の手段を介して行われてもよい。
【0036】
記憶部10は、クライアント装置1を実現するコンピュータのBIOS(Basic Input Output System)等を格納するROM(Read Only Memory)やクライアント装置1の作業領域となるRAM(Random Access Memory)、OS(Operating System)やアプリケーションプログラム、当該アプリケーションプログラムの実行時に参照される種々の情報を格納するHDD(Hard Disk Drive)やSSD(Solid State Drive)等の大容量記憶装置である。
【0037】
制御部11は、クライアント装置1のCPUやGPU等のプロセッサであり、記憶部10に記憶されたプログラムを実行することによって、軽量化指標取得部110、前段指標取得部111、後段指標取得部112、特定部113、通知部114、及びプルーニング実行部115として機能する。
【0038】
記憶部10は、入力層と出力層とを含む複数の層から構成されるニューラルネットワークの学習モデルを構成する層のうち、少なくとも出力層を含む学習モデルの後段部を保持している。具体的には、記憶部10が保持する後段部はクラウドとローカルとに学習モデルを分散させる分散型学習モデルにおける後段部であり、APIを利用してサーバSから取得して得られたデータである。
【0039】
軽量化指標取得部110は、学習モデルの軽量化の目標値を取得する。具体的には、例えば、軽量化指標取得部110は、クライアント装置1の図示しないユーザインタフェースを介してクライアント装置1のユーザが入力した値を学習モデルの軽量化の目標値として取得してもよい。
【0040】
サーバSは、学習モデルのうち後段部を除いた部分である前段部を保持している。前段指標取得部111は、サーバSから、前段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である前段重み指標群を取得する。なお、重み指標の詳細は後述する。
【0041】
後段指標取得部112は、後段部を構成する層間を接続する各エッジに割り当てられた重みの重要性を示す値の集合である後段重み指標群を取得する。特定部113は、軽量化の目標値、前段重み指標群、及び後段重み指標群に基づいて、サーバSが備える前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定する。
【0042】
通知部114は、前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値をサーバSに通知する。サーバSは、クライアント装置1から取得した指標値に基づいて、前段部を構成する層間を接続するエッジの中からプルーニング対象のエッジを特定できる。このように、クライアント装置1は、前段部にアクセスできない状態であっても、学習モデル全体として軽量化を主導することができる。
【0043】
ここで、特定部113は、後段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値をさらに特定する。プルーニング実行部115は、後段部に含まれるエッジのうちプルーニングの対象とするエッジを刈り取る。これにより、クライアント装置1は、後段部を軽量化することができる。
【0044】
クライアント装置1とサーバSとは異なる装置であるため、クライアント装置1はサーバSが保持している前段部のエッジを直接プルーニングすることはできない。しかしながら、クライアント装置1は、前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値をサーバSに通知することで、サーバSにプルーニングを実行させることができる。このように、クライアント装置1は、クライアント装置1が直接保持していない前段部におけるプルーニングも管理することができる。
【0045】
続いて、層間を接続する各エッジに割り当てられた重みの重要性を示す値である重み指標について説明する。
【0046】
(重みの量子化による指標)
重み指標の第1の態様は、重みを量子化して得られる値である。具体的には、前段重み指標群は、前段部を構成する層間を接続する各エッジに割り当てられた重みを所定の基準で量子化して得られる値の集合である。同様に、後段重み指標群は、後段部を構成する層間を接続する各エッジに割り当てられた重みを、前段重み指標群と同一の基準で量子化して得られる値の集合である。
【0047】
図4は、重みの量子化の基準を示す量子化用テーブルを模式的に示す図である。量子化用テーブルはサーバSが管理している。クライアント装置1は、APIを利用してサーバSから量子化用テーブルを取得する。クライアント装置1とサーバSとが量子化用テーブルを共有することにより、クライアント装置1とサーバSとは同一の基準でエッジに設定された重みを量子化することができる。
【0048】
図4に示すように、量子化用テーブルは、重みの絶対値の大きさ毎に、量子化後の値が対応付けられて格納されている。サーバSは、前段部の各エッジに設定されているすべての重みを求め、量子化用テーブルを参照して各重みを量子化する。また、サーバSにおいて、前段部の各エッジに設定されているすべての重みについてその絶対値を求めた上で、量子化用テーブルを参照して各重みを量子化するようにしてもよい。図4に示す量子化用テーブルの例では量子化レベルは5段階であり、重みの絶対値が小さいほど量子化後の値が小さくなる。
【0049】
サーバSは、前段部のネットワーク構造と共に、前段部の各エッジに設定されているすべての重みの量子化値をクライアント装置へ伝送する。これにより、前段部のネットワーク構造はクライアント装置に開示されるが、前段部の各エッジに設定されているすべての重みの正確な値の秘匿性は保持できる。
【0050】
サーバSは、量子化された重みの総数を量子化レベル毎に集計して前段重み指標群を生成してもよい。クライアント装置1は、サーバSから前段重み指標群を取得することにより、前段部を構成する層間を接続する各エッジの総数と、量子化された重みの大きさの分布とを把握することができる。これにより、前段部のネットワーク構造及び各エッジに設定されている個々の重みの秘匿性が保持できるようになる。
【0051】
クライアント装置1は、量子化用テーブルを参照して後段部を構成する層間を接続する各エッジに割り当てられた重みを量子化することにより、後段重み指標群を生成する。クライアント装置1は、前段重み指標群と後段重み指標群とを合わせることにより、学習モデル全体のエッジの数と、重みの大きさの分布とを把握することもできる。ゆえに、クライアント装置1は、軽量化の目標値が示す目標を達成するために、どの量子化レベルの重みを刈り取るかを算出することができる。
【0052】
(エッジを通過する値から算出された統計量による指標)
重み指標の第2の態様は、エッジを通過する値から算出された統計量である。周知のように、ニューラルネットワークでは、各層が複数のノードを備え、各ノードが隣接する層が備えるノードとエッジによって接続されている。このとき、あるノードの出力値がエッジを介して接続する隣接ノードに入力されるとき、出力値にエッジの重みを乗じた値が入力値となる。入力値の大きさが大きいほど、その入力値が入力されるノードは活性化された重要なノードとなる。したがって、あるエッジの重要性は、そのエッジを通過する値の大小によっても推し量ることができる。
【0053】
図5は、あるエッジを通過する値である通過値の分布を示すヒストグラムの模式図である。記憶部10は、学習モデルの再学習に用いるための再学習用データを保持しており、図5に示すヒストグラムは、再学習用データを学習モデルに入力したときにあるエッジを通過した通過値の分布を示している。図5に示すヒストグラムにおいて、横軸は通過値の大きさであり、縦軸は通過値の頻度である。なお、図5に示す分布形状は一例であり、学習用データ(学習モデルを新規に生成するための初期学習用データも含む)の種類によって異なる形状となりうる。
【0054】
第2の態様にかかる前段重み指標群は、前段部に再学習用データを入力したときに前段部を構成する層間を接続する各エッジを通過する値から算出された統計量である。同様に、第2の態様にかかる後段重み指標群は、再学習用データを入力したときに後段部を構成する層間を接続する各エッジを通過する値から算出された統計量である。
【0055】
ここで、「統計量」は、例えば、各エッジを通過する通過値の最大値、中央値、平均値、又は最頻値のいずれかである。上述したように、あるエッジを大きな値の通過値が通過することは、そのエッジが重要であることの指標となりうる。このため、エッジを通過する通過値の最大値は、そのエッジの重要性を示す指標となりうる。
【0056】
一方、再学習用データに例外的なデータが含まれることによって偶発的にあるエッジの通過値が大きくなることも起こりうる。統計量として最大値を採用すると、このような例外的なデータの影響を強く受けることになりかねない。
【0057】
そこで、統計量は、中央値、平均値、又は最頻値であってもよい。中央値、平均値、又は最頻値は、例外的なデータの影響を丸める効果があるため、エッジの重要性を示す指標として有用である。統計量として最大値、中央値、平均値、又は最頻値のいずれを採用しても、その値が大きいほど重要なエッジであることを示している。
【0058】
図6は、前段部を構成する層間を接続する各エッジを通過する通過値から求めた統計量の分布を示すヒストグラムの模式図である。したがって、図6に示すヒストグラムの頻度の総和は、前段部を構成する層間を接続するエッジの総和と一致する。エッジを通過する値から算出された統計量をそのエッジの重み指標とすると、図6に示す統計量の分布が前段重み指標群となる。図示はしないが、後段部を構成する層間を接続する各エッジを通過する通過値から求めた統計量の分布が、後段重み指標群となる。
【0059】
上述したように、あるエッジに関する統計量が大きいほど、そのエッジが重要であることを示している。したがって、特定部113は、前段層に係る統計量の分布と後段層に係る統計量の分布とから、軽量化の目標値を満たすまでプルーニングすべきエッジ(すなわち、統計量が小さいエッジ)を特定することができる。
【0060】
なお、エッジを通過する通過値そのものに変えて、エッジに設定された重みと通過値との両方の値を反映する指標値を用いてもよい。具体的には、あるエッジに設定された重みをwとし、そのエッジを通過する通過値をaとする。このとき、α及びβを正の実数として、指標値VをV=αw+βawと定義する。ここで、α及びβは調整パラメータであり、情報処理システムIの設計者が実験によって定めればよい。
【0061】
指標値Vは、エッジに設定された重みの大きさが大きいほど大きな値となり、また、エッジを通過する通過値が大きいほど大きな値となる。つまり、あるエッジに関する指標値Vが大きいほど、そのエッジの重要性が高いことを示す。
【0062】
<サーバSが実行する学習処理の処理フロー>
図7は、実施の形態に係るクライアント装置1が実行する処理の流れを説明するためのフローチャートである。本フローチャートにおける処理は、例えば、クライアント装置1が起動したときに開始する。
【0063】
軽量化指標取得部110は、学習モデルの軽量化の目標値を取得する(S2)。前段指標取得部111は、学習モデルの前段部を保持するサーバSから、前段重み指標群を取得する(S4)。後段指標取得部112は、後段重み指標群を算出して取得する(S6)。
【0064】
特定部113は、軽量化の目標値、前段重み指標群、及び後段重み指標群に基づいて、前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定する(S8)。
【0065】
通知部114は、前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値をサーバSに通知する(S10)。通知部114が指標値をサーバSに通知すると、本フローチャートにおける処理は終了する。
【0066】
<実施の形態に係る情報処理システムIが奏する効果>
以上説明したように、実施の形態に係る情報処理システムIによれば、クラウド側のサーバSとローカル側のクライアント装置1とに学習モデルを分散させる分散型学習モデルにおいて、クライアント装置1が学習モデルの軽量化を主導することができる。
【0067】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されず、その要旨の範囲内で種々の変形及び変更が可能である。例えば、装置の分散・統合の具体的な実施の形態は、以上の実施の形態に限られず、その全部又は一部について、任意の単位で機能的又は物理的に分散・統合して構成することができる。また、複数の実施の形態の任意の組み合わせによって生じる新たな実施の形態も、本発明の実施の形態に含まれる。組み合わせによって生じる新たな実施の形態の効果は、もとの実施の形態の効果を合わせ持つ。
【0068】
<第1の変形例>
上記では、クライアント装置1がサーバSから取得した前段重み指標群を参照して、クライアント装置1が前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定する場合について主に説明した。これに替えて、クライアント装置1からの要求に応答して、サーバS側でプルーニングの対象とするエッジを決定してクライアント装置1に通知してもよい。以下、第1の変形例として、クライアント装置1からの要求に応答して、サーバS側でプルーニングの対象とするエッジを決定する態様について説明する。
【0069】
図8は、実施の形態の第1の変形例に係るクライアント装置2の機能構成を模式的に示す図である。以下、図8を参照しながら実施の形態の第1の変形例に係るクライアント装置2を説明するが、実施の形態に係るクライアント装置1と重複する内容は適宜省略又は簡略化して説明する。
【0070】
クライアント装置2は、記憶部20と制御部21とを備える。記憶部20は、クライアント装置2を実現するコンピュータのBIOS等を格納するROMやクライアント装置2の作業領域となるRAM、OSやアプリケーションプログラム、当該アプリケーションプログラムの実行時に参照される種々の情報を格納するHDDやSSD等の大容量記憶装置である。
【0071】
制御部21は、クライアント装置2のCPUやGPU等のプロセッサであり、記憶部20に記憶されたプログラムを実行することによって、軽量化指標取得部210、閾値設定部211、閾値通知部212、刈り取り数取得部213、及びプルーニング実行部214として機能する。刈り取り数取得部213は、第1刈り取り数取得部2130と第2刈り取り数取得部2131とを備える。
【0072】
記憶部20は、入力層と出力層とを含む複数の層から構成されるニューラルネットワークの学習モデルを構成する層のうち、少なくとも出力層を含む学習モデルの後段部を記憶している。
【0073】
軽量化指標取得部210は、学習モデルの軽量化の目標値をクライアント装置2のユーザから取得する。閾値設定部211は、学習モデルを構成する層間を接続する各エッジに割り当てられた重みに関する閾値であって、その閾値以下の重みを刈り取るための閾値であるプルーニング閾値を設定する。ここで、閾値設定部211は、学習モデルの前段部用の閾値である第1プルーニング閾値と、学習モデルの後段部用の閾値である第2プルーニング閾値とを個別に設定する。
【0074】
閾値通知部212は、後段部を除いた部分である前段部を保持するサーバSに閾値設定部211が設定した第1プルーニング閾値を通知する。その後、第1刈り取り数取得部2130は、第1プルーニング閾値を適用した場合に刈り取られる前段部に含まれるエッジの数である第1刈り取り数をサーバSから取得する。
【0075】
また、第2刈り取り数取得部2131は、閾値設定部211が設定した第2プルーニング閾値を適用した場合に刈り取られる後段部に含まれるエッジの数である第2刈り取り数を取得する。
【0076】
閾値設定部211は、軽量化の目標値、第1刈り取り数、及び第2刈り取り数に基づいて、プルーニング閾値を修正して再設定する。より具体的には、閾値設定部211は、第1刈り取り数と第2刈り取り数との合計値が、軽量化の目標値を達成する場合に刈り取るべきエッジの数に近づくように、第1プルーニング閾値及び第2プルーニング閾値を修正する。
【0077】
閾値通知部212は、閾値設定部211が再設定した第1プルーニング閾値をサーバSに通知する。第1刈り取り数と第2刈り取り数との合計と軽量化の目標値を達成する場合に刈り取るべきエッジの数との差が所定の数以下となるまで、クライアント装置2は以上の動作を繰り返す。
【0078】
これにより、クライアント装置2は、サーバSが保持する前段部にアクセスできなくても、クライアント装置1が学習モデルの軽量化を主導することができる。プルーニング実行部214は、後段部のエッジのうち、設定された重みの値が最終的に設定された第2プルーニング閾値未満となるエッジを刈り取る。これにより、クライアント装置2は、後段部の軽量化を実現できる。
【0079】
閾値設定部211は、第1プルーニング閾値と第2プルーニング閾値とを同一の値にしてもよい。この場合、クライアント装置2は、サーバSが保持する前段部と、クライアント装置2が保持する後段部とを、同一の基準でプルーニングすることができる。
【0080】
また、閾値設定部211は、第1プルーニング閾値の方が第2プルーニング閾値よりも小さい値に設定してもよい。この場合、クライアント装置2は、前段部のエッジを後段部のエッジよりも重点的にプルーニングすることができる。前段部が後段部よりも軽量化されるため、クライアント装置2は、サーバSの利用料を抑制することができる。
【0081】
反対に、閾値設定部211は、第1プルーニング閾値の方が第2プルーニング閾値よりも大きい値に設定してもよい。この場合、クライアント装置2は、後段部のエッジを前段部のエッジよりも重点的にプルーニングすることができる。後段部が前段部よりも軽量化されるため、クライアント装置2は、クライアント装置2の計算リソースが小さい場合であって学習モデルを実行することができるようになる。
【0082】
<第2の変形例>
上記では、クライアント装置1がサーバSから取得した前段重み指標群を参照して、クライアント装置1が前段部に含まれるエッジのうちプルーニングの対象とするエッジに対応する指標値を特定する場合について主に説明した。これに替えて、サーバSがクライアント装置1から取得した指標に基づいて、サーバSが前段部のプルーニング対象のエッジを決定してもよい。
【0083】
以下、第2の変形例として、サーバSが前段部のプルーニング対象のエッジを決定するために、クライアント装置1から取得するノードの重み指標について説明する。なお、第2の変形例に係るクライアント装置1において、ノードの重み指標は、後段指標取得部112が算出する。
【0084】
図9は、前段部と後段部との境界面における学習モデルノード及びエッジを示す図であり、第2の変形例に係るノードの重み指標について説明するための図である。説明の便宜のため、図9は、後段部は2層である場合について示している。また、バイアス項及び活性化関数も省略している。
【0085】
図9において、前段部における境界面の層は、ノードx とノードx との2つのノードを含んでいる。また、後段部における境界面の層は、ノードx とノードx とノードx とを含んでいる。同様に、後段部にある出力層は、ノードx とノードx とを含んでいる。
【0086】
図9は、境界面に存在するエッジ、すなわち、前段部と後段部とを接続するエッジに割り当てられた重みは上付き文字の1で示し、後段部における境界面の層と出力とを接続するエッジに割り当てられた重みは上付き文字の2で示している。例えば、前段部における境界面の層に含まれるノードx と、後段部における境界面の層に含まれるノードx とを接続するエッジに割り当てられた重みはw31 で示されている。同様に、後段部における境界面の層に含まれるノードx と出力層に含まれるノードx とを接続するエッジに割り当てられた重みはw12 で示されている。
【0087】
図9において、P、Q、及びRは、それぞれノードx 、ノードx 、及びノードx の重み指標である。後段指標取得部112は、以下の式(1)にしたがってP、Q、及びRを算出する。
【0088】
【数1】
ここでCは出力層に含まれる各ノードに割り当てられた重み指標の初期値であり、定数である。限定はしないが、Cの値は1であってもよい。
【0089】
後段指標取得部112は、出力層を構成する各ノードの重み指標が定数Cであると仮定して、各ノードの重み指標に、そのノードに接続されているエッジに割り当てられた重みの絶対値を乗じた値を、エッジの接続先のノードに伝搬させる。後段指標取得部112は、伝搬先の各ノードについて伝搬された重みの絶対値の総和を取ることにより、そのノードの重み指標とする。
【0090】
出力層と後段部における境界面の層との間に層が存在する場合、後段指標取得部112は、後段部における境界面の層に至るまで、ノードの重み指標とエッジに割り当てられた重みの絶対値との積の伝搬及び加算処理を繰り返す。
【0091】
後段指標取得部112は、後段部における境界面の層に含まれる各ノードの重み指標と、前段部と後段部とを接続するエッジに割り当てられた重みとを用いて、以下の式(2)にしたがってサーバSに送信する指標を算出する。この指標は、第2の変形例における後段重み指標群となる。
【0092】
【数2】
ここで、S及びTは、それぞれ前段部における境界面の層は、ノードx 及びノードx の重み指標である。なお、前段部と後段部とを接続するエッジは後段部に含まれ、後段指標取得部112は、前段部と後段部とを接続するエッジに割り当てられた重みにアクセスできるものとする。
【0093】
以上をまとめると、後段指標取得部112は、(1)出力層を構成する各ノードの重み指標に定数を割り当て、(2)各ノードの重み指標にそのノードに接続されているエッジに割り当てられた重みの絶対値を乗じた値をエッジの接続先のノードに伝搬させ、(3)伝搬先の各ノードについて伝搬された重みの絶対値の総和を取った値を各ノードの重み指標とし、(4)前段部における境界面の層に至るまで(2)の処理と(3)の処理とを繰り返すことにより、第2の変形例における後段重み指標群を算出する。なお、後段指標取得部112は、式(2)に替えて以下の式(3)にしたがって指標を算出してもよい。
【0094】
【数3】
【0095】
式(3)は、式(2)と比較すると、エッジに割り当てられた重みの絶対値の総和が1となるように規格化されているといえる。
【0096】
第2の変形例における後段重み指標群を取得したサーバSは、後段指標取得部112と同様の処理を実行することにより、入力層に至るまでの各層に含まれるノードの重み指標を算出することができる。サーバSは、あるエッジに割り当てられた重みの絶対値に、そのエッジが接続している出力層側のノードの重み指標を乗じた値を算出することで、そのエッジの重要性を示す指標とする。具体的には、サーバSは、算出した値が大きいほど、そのエッジの重要性が高いものとする。これにより、サーバSは、取得した後段重み指標群に基づいて、前段部を構成する各エッジの中からプルーニング対象のエッジを特定することができる。
【0097】
<第3の変形例>
上述した第2の変形例では、クライアント装置1から後段重み指標群を取得したサーバSが、その後段重み指標群に基づいて前段部を構成する各エッジの中からプルーニング対象のエッジを特定する場合について説明した。第3の変形例は、第2の変形例と異なり、クライアント装置1がサーバSからエッジに関する重み指標を取得し、取得した重み指標に基づいて後段部を構成するエッジの中からプルーニング対象のエッジを特定する。
【0098】
具体的には、サーバSは、学習モデルの生成又は再学習に用いた学習用データを学習モデルに入力したときに、前段部における境界面の層に含まれる各ノードを通過する値の最大値を記録し、その値を第3の変形例における前段重み指標群とする。
【0099】
例えば、図9において、学習用データを学習モデルに入力したときに、前段部における境界面の層は、ノードx とノードx とを通過する値の最大値をそれぞれS及びTとする。このS及びTが、第3の変形例における前段重み指標群となる。
【0100】
第3の変形例に係る特定部113は、まず、前段部と後段部とを接続するエッジの中から1つのエッジを選択する。特定部113は、前段部における境界面の層に含まれるノードのうち、選択したエッジに接続されているノードの重み指標を取得する。特定部113は、選択したエッジを取得した重み指標が通過し、他のエッジは0が通過すると仮定した場合に、後段部を構成する各エッジを通過する値を記録する。なお、エッジを通過する値とは、ノードを通過する値にエッジに割り当てられた重みの絶対値を乗じた値を意味する。例えば、ノードx とノードx とを接続するエッジを通過する値は、S|w11 |となる。
【0101】
特定部113は、前段部と後段部とを接続するすべてのエッジが選択されるまで、選択するエッジを変更しながら同様の処理を繰り返す。特定部113がすべてのエッジを選択して上記の処理を行った後、後段部を構成する各エッジを通過する値の最大値を、そのエッジの重要性を示す指標とする。これにより、後段部を構成する各エッジに関してエッジの重要性を示す指標を算出できるので、特定部113は、後段部を構成するエッジの中からプルーニング対象のエッジを特定することができる。前段部の情報をエッジの重要性を示す指標に反映できるので、後段部を構成するエッジに割り当てられた重みのみに基づいてエッジの重要性を示す指標を算出する場合と比較して重要性の精度の向上が期待できる点で効果がある。
【0102】
第3の変形例に係るクライアント装置1は、サーバSから上述の前段重み指標群を取得し、前段重み指標群に基づいて後段部を構成するエッジの中からプルーニング対象のエッジを特定する。このため、第3の変形例に係るクライアント装置1は、実施の形態に係るクライアント装置1とは異なり、前段部を構成する各エッジのうちプルーニング対象のエッジを特定してサーバSに通知せずに後段部におけるプルーニング対象のエッジを刈り取る場合もあり得る。
【符号の説明】
【0103】
1・・・クライアント装置
10・・・記憶部
11・・・制御部
110・・・軽量化指標取得部
111・・・前段指標取得部
112・・・後段指標取得部
113・・・特定部
114・・・通知部
115・・・プルーニング実行部
2・・・クライアント装置
20・・・記憶部
21・・・制御部
210・・・軽量化指標取得部
211・・・閾値設定部
212・・・閾値通知部
213・・・刈り取り数取得部
2130・・・第1刈り取り数取得部
2131・・・第2刈り取り数取得部
214・・・プルーニング実行部
I・・・情報処理システム
S・・・サーバ
図1
図2
図3
図4
図5
図6
図7
図8
図9