(57)【特許請求の範囲】
【請求項１】
ディープラーニングを実行するためのニューラルネットワークを構築し、学習の動作を規定するパラメータを探索する第１のサーバと、第２のサーバと、第３のサーバとを備えるシステムの前記第１のサーバであって、
前記パラメータの探索範囲から前記パラメータの組み合わせの初期候補を一様分布に基づく探索方式で前記パラメータの第１の組み合わせと前記パラメータの第２の組み合わせを生成し、
前記パラメータの第１の組み合わせを前記第２のサーバへ送信し、
前記パラメータの第２の組み合わせを前記第３のサーバへ送信し、
前記パラメータの第１の組み合わせを用いた第１学習結果を前記第２のサーバから受信し、
前記パラメータの第２の組み合わせを用いた第２学習結果を前記第３のサーバから受信し、
前記第１学習結果と前記第２学習結果とに基づいて、確率分布に基づく探索方式で前記パラメータの第３の組み合わせを生成し、
前記パラメータの第３の組み合わせを前記第２のサーバまたは前記第３のサーバへ送信し、
前記パラメータの第３の組み合わせを用いた第３学習結果を前記第２のサーバまたは前記第３のサーバから受信するサーバ。
【請求項２】
前記一様分布に基づく探索方式とは、ランダム方式であって、
前記確率分布に基づく探索方式とは、ベイジアン方式である請求項１に記載のサーバ。
【請求項３】
前記第１のサーバは、
前記パラメータの第４の組み合わせに加えて、前記ニューラルネットワークの第１層数を前記第２のサーバへ送信し、
前記パラメータの第５の組み合わせに加えて、前記ニューラルネットワークの前記第１層数とは異なる第２層数を前記第２のサーバへ送信し、
前記パラメータの第４の組み合わせと、前記ニューラルネットワークの第１層数とを用いた第４学習結果を前記第２のサーバから受信し、
前記パラメータの第５の組み合わせと、前記ニューラルネットワークの第２層数とを用いた第５学習結果を前記第３のサーバから受信する請求項１に記載のサーバ。
【請求項４】
請求項１記載の前記第１のサーバと、前記第２のサーバと、前記第３のサーバとを備えるシステムであって、
前記第２のサーバは、前記パラメータの第６の組み合わせを用いた学習の回数が第１閾値より大きいにもかかわらず、学習結果の指標が第２閾値に満たない場合に、前記パラメータの第６の組み合わせを用いた学習を中断してその中断結果を第６学習結果として前記第１のサーバへ送信するシステム。
【請求項５】
請求項１記載の前記第１のサーバと、前記第２のサーバと、前記第３のサーバとを備えるシステムであって、
前記第２のサーバは、学習結果の指標が第３閾値以上のモデルを保存するシステム。
【請求項６】
ディープラーニングを実行するためのニューラルネットワークを構築し、学習の動作を規定するパラメータを探索する第１のサーバと、第２のサーバと、第３のサーバとを備えるシステムの前記第１のサーバに用いられる探索方法であって、
前記パラメータの探索範囲から前記パラメータの組み合わせの初期候補を一様分布に基づく探索方式で前記パラメータの第１の組み合わせと前記パラメータの第２の組み合わせを生成し、
前記パラメータの第１の組み合わせを前記第２のサーバへ送信し、
前記パラメータの第２の組み合わせを前記第３のサーバへ送信し、
前記パラメータの第１の組み合わせを用いた第１学習結果を前記第２のサーバから受信し、
前記パラメータの第２の組み合わせを用いた第２学習結果を前記第３のサーバから受信し、
前記第１学習結果と前記第２学習結果とに基づいて、確率分布に基づく探索方式で前記パラメータの第３の組み合わせを生成し、
前記パラメータの第３の組み合わせを前記第２のサーバまたは前記第３のサーバへ送信し、
前記パラメータの第３の組み合わせを用いた第３学習結果を前記第２のサーバまたは前記第３のサーバから受信する探索方法。
【請求項７】
前記一様分布に基づく探索方式とは、ランダム方式であって、
前記確率分布に基づく探索方式とは、ベイジアン方式である請求項６に記載の探索方法。
【請求項８】
前記パラメータの第４の組み合わせに加えて、ニューラルネットワークの第１層数を前記第２のサーバへ送信し、
前記パラメータの第５の組み合わせに加えて、ニューラルネットワークの前記第１層数とは異なる第２層数を前記第２のサーバへ送信し、
前記パラメータの第４の組み合わせと、前記ニューラルネットワークの第１層数とを用いた第４学習結果を前記第２のサーバから受信し、
前記パラメータの第５の組み合わせと、前記ニューラルネットワークの第２層数とを用いた第５学習結果を前記第３のサーバから受信する請求項６に記載の探索方法。
【請求項９】
請求項１記載の前記第１のサーバと、前記第２のサーバと、前記第３のサーバとを備えるシステムに用いられる探索方法であって、
前記第２のサーバにて、前記パラメータの第６の組み合わせを用いた学習の回数が第１閾値より大きいにもかかわらず、学習結果の指標が第２閾値に満たない場合に、前記パラメータの第６の組み合わせを用いた学習を中断してその中断結果を第６学習結果として前記第１のサーバへ送信する探索方法。
【請求項１０】
請求項１記載の前記第１のサーバと、前記第２のサーバと、前記第３のサーバとを備えるシステムに用いられる探索方法であって、
前記第２のサーバにて、学習結果の指標が第３閾値以上のモデルを保存する探索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ、システム及び探索方法に関する。
【背景技術】
【０００２】
画像認識や音声認識を行う分野では、従来からＳＶＭ（Support Vector Machine）などの機械学習を採用することによって徐々に認識性能が向上してきた。近年では、機械学習に多層構造のニューラルネットワークが用いられるようになり、これによって認識性能が大幅に向上するようになった。特に、その多層構造のニューラルネットワークによるディープラーニング手法は注目を浴びており、画像認識や音声認識以外に、自然言語解析などの分野にも用途が広がりつつある。
【０００３】
ただし、上記ディープラーニング手法は、その学習に膨大な計算が必要で、処理に多くの時間を要する。また、ディープラーニングでは、各層のノード数、層数、学習率をどう設定するかなど非常に多くのハイパーパラメータ（学習の動作を規定するパラメータ）が用いられる。さらに、ハイパーパラメータに設定する値によって認識性能が大きく異なる。このことから、認識性能が最も良いハイパーパラメータの組み合わせを探索する必要がある。このハイパーパラメータの組み合わせ探索では、ハイパーパラメータの組み合わせを変えながら学習を行い、個々の組み合わせの学習結果から最も認識性能が良い組み合わせを選択する手法がとられている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５８１６７７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、上記ディープラーニングにおいて、認識性能がよいハイパーパラメータの組み合わせを探索するように、多数のパラメータから最適な組み合わせを探索する従来の手法では、パラメータの組み合わせの総数が膨大であるため、探索に時間がかかるという課題があった。
【０００６】
本発明の目的は、認識性能の指標が基準より高いパラメータの組み合わせの探索処理の効率化を図り、探索時間を短縮することのできるサーバ、システム及び探索方法を提供することにある。
【課題を解決するための手段】
【０００７】
実施形態によれば、ディープラーニングを実行するためのニューラルネットワークを構築し、学習の動作を規定するパラメータを探索するシステムに適用される。このシステムの第１のサーバは、前記パラメータの探索範囲から前記パラメータの組み合わせの初期候補を一様分布に基づく探索方式で前記パラメータの第１の組み合わせと前記パラメータの第２の組み合わせを生成し、前記パラメータの第１の組み合わせを第２のサーバへ送信し学習させて第１学習結果を取得し、前記パラメータの第２の組み合わせを前記第３のサーバに送信し学習させて第２学習結果を取得し、前記第１学習結果と前記第２学習結果とに基づいて、確率分布に基づく探索方式で前記パラメータの第３の組み合わせを生成し、前記パラメータの第３の組み合わせを前記第２のサーバまたは前記第３のサーバへ送信し学習させて第３学習結果を取得する。
【図面の簡単な説明】
【０００８】
【図１】実施形態に係るハイパーパラメータ探索システムの具体的な構成を示すブロック図。
【図２】図１に示すシステムに用いられるサーバの具体的な構成を示すブロック図。
【図３】図１に示すシステムにおいて、マネージャーの具体的な構成を示すブロック図。
【図４】図１に示すシステムの階層構造とハイパーパラメータの例を示す図。
【図５】図１に示すシステムのマネージャーの処理の流れを示すフローチャート。
【図６】図１に示すシステムのワーカーの処理の流れを示すフローチャート。
【図７】図１に示すシステムのワーカーにおいて、中断機能を含む場合の処理の流れを示すフローチャート。
【発明を実施するための形態】
【０００９】
以下、図面を参照して実施形態を説明する。
【００１０】
図１は実施形態に係るハイパーパラメータ探索システムの具体的な構成を示すブロック図である。このシステムは、マネージャー（Manager）と称されるサーバ（以下、マネージャー）１１とワーカー（Worker）と称される複数個（本実施形態では４個とする）のサーバ（以下、Worker）１２−ｉ（ｉは１〜４のいずれか）をネットワーク１３に接続したクラスタ構成のサーバシステムであり、ディープラーニング処理を実行するための多層構造のニューラルネットワークを構築している。
【００１１】
上記マネージャー１１及びウォーカー１２−ｉに用いられるサーバは、図２に示すように、プログラムを実行して制御を行うためのＣＰＵ（Central Processing Unit）１０１、プログラムを格納するＲＯＭ（Read Only Memory）１０２、作業空間を提供するＲＡＭ（Random Access Memory）１０３、ネットワークとの間でデータを入出力するＩ／Ｏ（Input-Output）１０４、種々の情報データを格納するＨＤＤ（Hard Disk Drive）１０５をバス１０６に接続して構成される。
【００１２】
上記マネージャー１１は、ハイパーパラメータ探索処理を管理するサーバであり、具体的には図３に示すように、ハイパーパラメータ探索範囲格納部１１１及びハイパーパラメータ候補生成部１１２及びタスク発送部１１３を備える。ハイパーパラメータ探索範囲格納部１１１には、予めディープラーニングで使用されるハイパーパラメータの探索範囲が格納される。ハイパーパラメータ候補生成部１１２は、ハイパーパラメータ探索範囲格納部１１１から探索範囲を順次読み出し、読み出された探索範囲において、探索するハイパーパラメータについてどのハイパーパラメータをどの値にするかの組み合わせの候補を生成する。このとき、各ワーカー１２−ｉから学習結果を受け取った場合には、その学習結果をハイパーパラメータの組み合わせの候補生成に反映させる。候補生成の手法として、ここではランダム方式（Random）（１１２−１）、ベイジアン方式（Bayesian）（１１２−２）が用意されているものとする。
【００１３】
ここで、ランダム方式は、一様分布に基づく探索方式であり、離散パラメータ探索と初期値非依存な探索を得意とする。ベイジアン方式は勾配法の一種で、確率分布に基づく探索方式であり、過去の探索で得られた値の近傍で最適解を探索し、連続パラメータの探索を得意とする。ベイジアン方式については、  
論文：Practical Bayesian Optimization of Machine Learning Algorithms  
http://papers.nips.cc/paper/4522-practical-bayesian-optimization  
-of-machine-learning-algorithms.pdf  
にその詳細が示されており、  
オープンソース環境：Spearmint（https://github.com/JasperSnoek/spearmint）  
Latest commit 0544113 on Oct 31 2014  
に、ベイジアン探索を実装したオープンソースのハイパーパラメータ探索環境、複数のサーバにタスクを分散する処理を実装した処理が示されている。
【００１４】
上記タスク発送部１１３は、ハイパーパラメータ候補生成部１１２で生成された各候補の学習処理を、それぞれタスクとしてワーカー１２−ｉに振り分けて発送し、学習を指示する。
【００１５】
一方、上記ワーカー１２−ｉは、それぞれマネージャー１１からハイパーパラメータの組み合わせの候補を受け取り、受け取った候補について学習を行い、認識率やエラー率や交差エントロピーなどの学習結果をマネージャー１１のハイパーパラメータ候補生成部１１２に返す。
【００１６】
上記構成において、以下にハイパーパラメータの組み合わせ探索処理について説明する。
【００１７】
まず、図４（ａ）はディープニューラルネットワークの構成を示し、図４（ｂ）はディープニューラルネットワークの各層で処理されるハイパーパラメータの種類を例示している。ディープニューラルネットワークでは、ネットワーク層数が少なく、ハイパーパラメータの種類が３種類でそれぞれのハイパーパラメータの取り得る値が３個ある場合、ハイパーパラメータの組み合わせは３3＝２７通りとなる。しかしながら、ディープニューラルネットワークの層数が図４（ａ）のように７層で、それぞれのハイパーパラメータの取り得る値が３個ある場合、ハイパーパラメータの組み合わせは３7＝２，１８７通りとなる。もし、このディープニューラルネットワークの１回の学習に１時間かかるとしたら、２，１８７時間（約９１日）もかかるため、最適な組み合わせを求めることは非常に困難な問題である。
【００１８】
そこで、実施形態のシステムでは、マネージャーと呼ばれる１台のサーバ１１と、ワーカーと呼ばれる複数のサーバ１２−ｉにより構築したクラスタ構成のサーバシステムで、ハイパーパラメータの組み合わせを効率良く高速に探索する。
【００１９】
図５は上記マネージャー１１の処理の流れを示すフローチャートである。まず、図５（ａ）に示す探索の開始が指示されると、ハイパーパラメータ探索範囲格納部１１１から探索範囲を読み込み（ステップＳ１１）、その探索範囲内で初期ハイパーパラメータの候補を複数個生成する（ステップＳ１２）。この候補生成には、初期値探索となるので、ランダム方式を採用する。生成された候補をタスクとして発行し、任意のワーカー１２−ｉに発送して学習を指示し（ステップＳ１３）、タスク終了を待機する（ステップＳ１４）。ワーカー１２−ｉからタスク終了の応答があった場合には、そのワーカー１２−ｉから送信する学習結果を受信する（ステップＳ１５）。探索の残りがある場合には、ステップＳ１３に戻ってタスク発行から処理を進める（ステップＳ１６）。探索の残りがない場合には、図５（ｂ）に示すＡの処理へ進む。
【００２０】
Ａの処理ではステップＳ１６までの処理で集まった学習結果を反映させて次のハイパーパラメータの候補を生成する（ステップＳ１７）。このときの候補生成には、過去の探索結果があるので、ベイジアン方式を採用する。生成された候補をタスクとして発行し、任意のワーカー１２−ｉに発送して学習を指示し（ステップＳ１８）、タスク終了を待機する（ステップＳ１９）。ワーカー１２−ｉからタスク終了の応答があった場合には、そのワーカー１２−ｉから送信する学習結果を受信する（ステップＳ２０）。探索の残りがある場合には、ステップＳ１７に戻ってタスク発行から処理を進める（ステップＳ２１）。探索の残りがない場合には、終了する。
【００２１】
このようにベイジアン方式は初期値依存により性能が良いハイパーパラメータが見つからない場合もあるため、最初にランダム方式で探索し、その後ベイジアン方式により探索を継続して行うことで、それぞれの長所を生かして効率よく探索することができる。
【００２２】
図６は上記ワーカー１２−ｉの処理の流れを示すフローチャートである。まず、マネージャー１１から送信されたハイパーパラメータ候補のタスクを受信し（ステップＳ２２）、受信したハイパーパラメータ候補のタスクについて学習処理を実行し（ステップＳ２３）、その学習結果をマネージャー１１に送信する（ステップＳ２４）。学習結果は性能を示す指標であり、例として認識率、エラー率、交差エントロピーが想定される。
【００２３】
上記の手順により、ディープラーニングのハイパーパラメータを効率的に探索することができる。
【００２４】
以下、上記実施形態において、さらなる効率化を実現する実施例を説明する。
【００２５】
（実施例１）  
まず、ニューラルネットワークによるディープラーニングのハイパーパラメータ探索では、固定したニューラルネットワークのハイパーパラメータの値のみを変更して探索するのが一般的である。しかしながら、ハイパーパラメータの値のみの変更ではなく、ニューラルネットワークの層数を変更して探索した方が性能が良い場合がある。
【００２６】
この層数を探索のため、マネージャー１１において、ハイパーパラメータ候補生成部１１２にて層数を変更したパラメータを生成する。ニューラルネットワークのある層のノード数が“0”の場合には、その層はないものとして取り扱う。ワーカー１２−ｉ側では、ある層のノード数が“0”の場合には、その層がないニューラルネットワーク構造として学習を行い、その結果をマネージャー１１に返す。このようにして層数を変更した探索を行うことができる。
【００２７】
（実施例２）  
ニューラルネットワークによるディープラーニングでの学習は、同じデータを数十回以上繰り返し入力して学習を行うことで性能を向上させるため、学習時間が長いことが知られている。素性の良いハイパーパラメータであれば、数十回データを繰り返し入力して性能を上げることに意味がある。しかしながら、素性が悪いハイパーパラメータを数十回もデータを入力して学習しても、性能が悪いハイパーパラメータは使用されないので処理時間が無駄になってしまう。このため、ワーカー１２−ｉにおいて、学習中に認識率などの指標を監視し、学習の途中で素性が悪いと判定したものは学習を中断し、中断した時の学習結果をマネージャー１１に送信する。学習中に監視する指標とマネージャー１１に返す指標は、前述のように例えば認識率、エラー率、交差エントロピーが想定される。
【００２８】
具体例を図７に示す。図７は、ワーカー１２−ｉにおいて、中断処理機能を備える場合の処理の流れを示すフローチャートである。まず、マネージャー１１から送信されたハイパーパラメータ候補のタスクを受信し（ステップＳ３１）、受信したハイパーパラメータ候補のタスクについて学習処理を実行する（ステップＳ３２）。ここで、学習中の処理結果を示す指標を監視して（ステップＳ３３）、その指標が閾値以下か判断する（ステップＳ３４）。この判断で、指標が閾値以下の状態では、学習が完了するまで指標の監視を継続する（ステップＳ３５）。ステップＳ３４で学習の指標が閾値を上回った場合には、直ちに学習を中断する（ステップＳ３６）。ステップＳ３５で学習完了と判定された場合またはステップＳ３６で学習の中断が行われた場合には、学習結果（学習中断の場合は中断情報と中断したときの学習結果）をマネージャー１１に送信する（ステップＳ３７）。前述のように、学習結果は性能を示す指標であり、例として認識率、エラー率、交差エントロピーが想定される。
【００２９】
例えばワーカー１２−ｉでの繰り返し学習の回数を１００回とするとき、５０回学習したときの認識率が９０％以下となる場合は中断し、９０％以上となる場合には学習を１００回まで行うとする。この場合素性の良いハイパーパラメータで５０回での認識率が９３％となった場合には、１００回まで学習を行う。しかし素性が悪いハイパーパラメータで学習を行い、５０回での認識率が８５％となった場合には、１００回まで学習をしないで５０回で学習を中断し、中断した時点での学習結果の指標をマネージャー１１に送信する。これにより、無駄になる学習時間を削減することができ、全体の効率を向上させることができる。
【００３０】
尚、上記の例では認識率を一定のしきい値９０％で判定したが、繰り返し学習を１０回行っても認識率が改善しない場合に学習を中断するようにしたり、学習曲線の傾きが一定値以下になったら学習を中断するなど、他の方式でもよい。
【００３１】
上記の処理により、素性の悪いハイパーパラメータの場合には、学習を中断して無駄な学習時間を省き、効率よくハイパーパラメータ探索を行うことができる。
【００３２】
（実施例３）  
ニューラルネットワークによるディープラーニングは、学習時間が長いことが知られている。学習時間を短縮するために、ワーカー１２−ｉ側での学習時に学習データを１／２に減らして学習を行うようにしてもよい。
【００３３】
（実施例４）  
ニューラルネットワークによるディープラーニングは、重みの初期値をランダムに生成しているが、その初期値により学習後の性能が若干異なる。このため、ワーカー１２−ｉ側で学習を行うときに、１回学習を行うだけではなく、重みの初期値を複数回変更して学習を行い、平均してマネージャー１１に学習結果の指標を送信する。このことにより、安定してハイパーパラメータ探索を行うことができる。
【００３４】
（実施例５）  
ニューラルネットワークによるディープラーニングの初期の重みはランダムで生成している。このため、場合によってはランダムで生成した値により若干の性能差が生じることがある。後で同じハイパーパラメータで学習を再び行っても、同じ性能が出ないこともある。このため、ワーカー１２−ｉにおいて、学習を終えた時に、今までで一番性能が良かったモデル（ディープラーニングの学習結果）を保存しておき、学習結果と共にマネージャー１１に通知するとよい。
【００３５】
（実施例６）  
ニューラルネットワークによるディープラーニングでの学習は、同じデータを数十回以上繰り返し入力して学習を行うことで性能を上げている。しかしながら、一定以上繰り返しても過学習をしてしまい、かえって認識性能などの学習結果の指標が悪化する場合もある。このため、ワーカー１２−ｉにおいて、データを１回入力して学習を行う毎に、認識性能などの学習結果の指標を監視し、最も性能が良いときのモデル（ディープラーニングの学習結果）を保存しておくとよい。
【００３６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００３７】
１１…マネージャー（Manager）、１２−ｉ…ワーカー（Worker）、１３…ネットワーク、１０１…ＣＰＵ（Central Processing Unit）、１０２…ＲＯＭ（Read Only Memory）、１０３…ＲＡＭ（Random Access Memory）、１０４…Ｉ／Ｏ（Input-Output）、１０５…ＨＤＤ（Hard Disk Drive）、１０６…バス、１１１…ハイパーパラメータ探索範囲格納部、１１２…ハイパーパラメータ候補生成部、１１３…タスク発送部、１１２−１…ランダム方式（Random）、１１２−２…ベイジアン方式（Bayesian）。
【図１】
0006470165.tif 000002
【図２】
0006470165.tif 000003
【図３】
0006470165.tif 000004
【図４】
0006470165.tif 000005
【図５】
0006470165.tif 000006
【図６】
0006470165.tif 000007
【図７】
0006470165.tif 000008