以下に、本願に係る装置、方法およびプログラム(具体的には、学習装置、学習方法、学習プログラム/分類装置、分類方法、分類プログラム/実行制御装置、実行制御方法、実行制御プログラム)を実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る学習装置、学習方法および学習プログラムが限定されるものではない。また、各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
〔1.実施形態について〕
以下の実施形態では、学習装置および分類装置の一例である情報処理装置100が実行する情報処理、および、実行制御装置200が実行する情報処理、それぞれについて主に焦点を当てて説明する。一方で、情報処理装置100および実行制御装置200を有するシステムに含まれる情報提供装置10が実行する処理を、実施形態に係る情報処理の前提としてまずは説明することにする。
〔2.情報提供システムの構成〕
図1は、実施形態に係る情報提供装置10が実行する処理の一例を示す図である。図1の例では、情報処理装置100および実行制御装置200は不図示であるが、これらを有するシステムの一例として情報提供システム1が示される。
図1に示すように、情報提供システム1は、情報提供装置10、モデル生成サーバ2、および端末装置3を有する。なお、情報提供システム1は、複数のモデル生成サーバ2や複数の端末装置3を有していてもよい。また、情報提供装置10と、モデル生成サーバ2とは、同一のサーバ装置やクラウドシステム等により実現されてもよい。ここで、情報提供装置10、モデル生成サーバ2、および端末装置3は、ネットワークNを介して有線または無線により通信可能に接続される。
情報提供装置10は、モデルの生成における指標(すなわち、モデルのレシピ)である生成指標を生成する指標生成処理と、生成指標に従ってモデルを生成するモデル生成処理とを実行し、生成した生成指標およびモデルを提供する情報処理装置であり、例えば、サーバ装置やクラウドシステム等により実現される。
モデル生成サーバ2は、学習データが有する特徴を学習させたモデルを生成する生成装置であり、例えば、サーバ装置やクラウドシステム等により実現される。例えば、モデル生成サーバ2は、モデルの生成指標として、生成するモデルの種別や行動、どのように学習データの特徴を学習させるかといったコンフィグファイルを受付けると、受付けたコンフィグファイルに従って、モデルの自動生成を行う。なお、モデル生成サーバ2は、任意のモデル学習手法を用いて、モデルの学習を行ってもよい。また、例えば、モデル生成サーバ2は、AutoMLといった各種既存のサービスであってもよい。
端末装置3は、利用者Uによって利用される端末装置であり、例えば、PC(Personal Computer)やサーバ装置等により実現される。例えば、端末装置3は、情報提供装置10とのやり取りを介して、モデルの生成指標を生成させ、生成させた生成指標に従ってモデル生成サーバ2が生成したモデルを取得する。
〔3.情報提供装置が実行する処理の概要〕
次に、情報提供装置10が実行する処理の概要について説明する。まず、情報提供装置10は、端末装置3からモデルに特徴を学習させる学習データの指摘を受付ける(ステップS1)。例えば、情報提供装置10は、学習に用いる各種の学習データを所定の記憶装置に記憶させており、利用者Uが学習データに指定する学習データの指摘を受付ける。なお、情報提供装置10は、例えば、端末装置3や各種外部のサーバから、学習に用いる学習データを取得してもよい。
ここで、学習データとは、任意のデータが採用可能である。例えば、情報提供装置10は、各利用者の位置の履歴や各利用者が閲覧したウェブコンテンツの履歴、各利用者による購買履歴や検索クエリの履歴等、利用者に関する各種の情報を学習データとしてもよい。また、情報提供装置10は、利用者のデモグラフィック属性やサイコグラフィック属性等を学習データとしてもよい。また、情報提供装置10は、配信対象となる各種ウェブコンテンツの種別や内容、作成者等のメタデータ等を学習データとしてもよい。
このような場合、情報提供装置10は、学習に用いる学習データの統計的な情報に基づいて、生成指標の候補を生成する(ステップS2)。例えば、情報提供装置10は、学習データに含まれる値の特徴等に基づいて、どのようなモデルに対し、どのような学習手法により学習を行えばよいかを示す生成指標の候補を生成する。換言すると、情報提供装置10は、学習データの特徴を精度よく学習可能なモデルやモデルに精度よく特徴を学習させるための学習手法を生成指標として生成する。すなわち、情報提供装置10は、学習手法の最適化を行う。なお、どのような学習データが選択された場合に、どのような内容の生成指標を生成するかについては、後述する。
続いて、情報提供装置10は、生成指標の候補を端末装置3に対して提供する(ステップS3)。このような場合、利用者Uは、生成指標の候補を嗜好や経験則等に応じて修正する(ステップS4)。そして、情報提供装置10は、各生成指標の候補と学習データとをモデル生成サーバ2に提供する(ステップS5)。
一方、モデル生成サーバ2は、生成指標ごとに、モデルの生成を行う(ステップS6)。例えば、モデル生成サーバ2は、生成指標が示す構造を有するモデルに対し、生成指標が示す学習手法により学習データが有する特徴を学習させる。そして、モデル生成サーバ2は、生成したモデルを情報提供装置10に提供する(ステップS7)。
ここで、モデル生成サーバ2によって生成された各モデルは、それぞれ生成指標の違いに由来する精度の違いが生じると考えられる。そこで、情報提供装置10は、各モデルの精度に基づいて、遺伝的アルゴリズムにより新たな生成指標を生成し(ステップS8)、新たに生成した生成指標を用いたモデルの生成を繰り返し実行する(ステップS9)。
例えば、情報提供装置10は、学習データを評価用データと学習用データとに分割し、学習用データが有する特徴を学習させたモデルであって、それぞれ異なる生成指標に従って生成された複数のモデルを取得する。例えば、情報提供装置10は、10個の生成指標を生成し、生成した10個の生成指標と、学習用データとを用いて、10個のモデルを生成する。このような場合、情報提供装置10は、評価用データを用いて、10個のモデルそれぞれの精度を測定する。
続いて、情報提供装置10は、10個のモデルのうち、精度が高い方から順に所定の数のモデル(例えば、5個)のモデルを選択する。そして、情報提供装置10は、選択した5個のモデルを生成した際に採用された生成指標から、新たな生成指標を生成する。例えば、情報提供装置10は、各生成指標を遺伝的アルゴリズムの個体と見做し、各生成指標が示すモデルの種別、モデルの構造、各種の学習手法(すなわち、生成指標が示す各種の指標)を遺伝的アルゴリズムにおける遺伝子と見做す。そして、情報提供装置10は、遺伝子の交叉を行う個体の選択および遺伝子の交叉を行うことで、次世代の生成指標を10個新たに生成する。なお、情報提供装置10は、遺伝子の交叉を行う際に、突然変異を考慮してもよい。また、情報提供装置10は、二点交叉、多点交叉、一様交叉、交叉対象となる遺伝子のランダムな選択を行ってもよい。また、情報提供装置10は、例えば、モデルの精度が高い個体の遺伝子程、次世代の個体に引き継がれるように、交叉を行う際の交叉率を調整してもよい。
また、情報提供装置10は、次世代の生成指標を用いて、再度新たな10個のモデルを生成する。そして、情報提供装置10は、新たな10個のモデルの精度に基づいて、上述した遺伝的アルゴリズムによる新たな生成指標の生成を行う。このような処理を繰り返し実行することで、情報提供装置10は、生成指標を学習データの特徴に応じた生成指標、すなわち、最適化された生成指標へと近づけることができる。
また、情報提供装置10は、所定の回数新たな生成指標を生成した場合や、モデルの精度の最大値、平均値、若しくは最低値が所定の閾値を超えた場合等、所定の条件が満たされた場合は、最も精度が高いモデルを提供対象として選択する。そして、情報提供装置10は、選択したモデルと共に、対応する生成指標を端末装置3に提供する(ステップS10)。このような処理の結果、情報提供装置10は、利用者から学習データを選択するだけで、適切なモデルの生成指標を生成するとともに、生成した生成指標に従うモデルを提供することができる。
なお、上述した例では、情報提供装置10は、遺伝的アルゴリズムを用いて生成指標の段階的な最適化を実現したが、実施形態は、これに限定されるものではない。後述する説明で明らかとなるように、モデルの精度は、モデルの種別や構造といったモデルそのものの特徴のみならず、どのような学習データをどのようにモデルに入力するのか、どのようなハイパーパラメータを用いてモデルの学習を行うのかというように、モデルを生成する際(すなわち、学習データの特徴を学習させる際)の指標に応じて大きく変化する。
そこで、情報提供装置10は、学習データに応じて、最適と推定される生成指標を生成するのであれば、遺伝的アルゴリズムを用いた最適化を行わずともよい。例えば、情報提供装置10は、学習データが、経験則に応じて生成された各種の条件を満たすか否かに応じて生成した生成指標を利用者に提示するとともに、提示した生成指標に従ったモデルの生成を行ってもよい。また、情報提供装置10は、提示した生成指標の修正を受付けると、受付けた修正後の生成指標に従ってモデルの生成を行い、生成したモデルの精度等を利用者に対して提示し、再度生成指標の修正を受付けてもよい。すなわち、情報提供装置10は、利用者Uに最適な生成指標を試行錯誤させてもよい。
〔4.生成指標の生成について〕
以下、どのような学習データに対して、どのような生成指標を生成するかの一例について説明する。なお、以下の例は、あくまで一例であり、学習データが有する特徴に応じて生成指標を生成するのであれば、任意の処理が採用可能である。
〔4-1.生成指標について〕
まず、生成指標が示す情報の一例について説明する。例えば、学習データが有する特徴をモデルに学習させる場合、学習データをモデルに入力する際の態様、モデルの態様、およびモデルの学習態様(すなわち、ハイパーパラメータが示す特徴)が最終的に得られるモデルの精度に寄与すると考えられる。そこで、情報提供装置10は、学習データの特徴に応じて、各態様を最適化した生成指標を生成することで、モデルの精度を向上させる。
例えば、学習データには、様々なラベルが付与されたデータ、すなわち、様々な特徴を示すデータが存在すると考えられる。しかしながら、データを分類する際に有用ではない特徴を示すデータを学習データとした場合、最終的に得られるモデルの精度は、悪化する恐れがある。そこで、情報提供装置10は、学習データをモデルに入力する際の態様として、入力する学習データが有する特徴を決定する。例えば、情報提供装置10は、学習データのうち、どのラベルが付与されたデータ(すなわち、どの特徴を示すデータ)を入力するかを決定する。換言すると、情報提供装置10は、入力する特徴の組み合わせを最適化する。
また、学習データには、数値のみのデータや文字列が含まれるデータ等、各種形式のカラムが含まれていると考えられる。このような学習データをモデルに入力する際に、そのまま入力した場合と、他の形式のデータに変換した場合とで、モデルの精度が変化するとも考えられる。例えば、複数種別の学習データ(それぞれ異なる特徴を示す学習データ)であって、文字列の学習データと数値の学習データとを入力する際に、文字列と数値とをそのまま入力した場合と、文字列を数値に変換して数値のみを入力した場合と、数値を文字列と見做して入力した場合とでは、それぞれモデルの精度が変化すると考えられる。そこで、情報提供装置10は、モデルに入力する学習データの形式を決定する。例えば、情報提供装置10は、モデルに入力する学習データを数値とするか、文字列とするかを決定する。換言すると、情報提供装置10は、入力する特徴のカラムタイプを最適化する。
また、それぞれ異なる特徴を示す学習データが存在する場合、どの特徴の組み合わせを同時に入力するかによって、モデルの精度が変化すると考えられる。すなわち、それぞれ異なる特徴を示す学習データが存在する場合、どの特徴の組み合わせの特徴(すなわち、複数の特徴の組み合わせの関係性)を学習させるかにより、モデルの精度が変化すると考えられる。例えば、第1特徴(例えば、性別)を示す学習データと、第2特徴(例えば、住所)を示す学習データと、第3特徴(例えば、購買履歴)を示す学習データとが存在する場合、第1特徴を示す学習データと第2特徴を示す学習データとを同時に入力した場合と、第1特徴を示す学習データと第3特徴を示す学習データとを同時に入力した場合とでは、モデルの精度が変化すると考えられる。そこで、情報提供装置10は、モデルに関係性を学習させる特徴の組み合わせ(クロスフィーチャー)を最適化する。
ここで、各種のモデルは、入力データを所定の超平面により分割された所定次元の空間内に投影し、投影した位置が分割された空間のうちいずれの空間に属するかに応じて、入力データの分類を行うこととなる。このため、入力データを投影する空間の次元数が最適な次元数よりも低い場合は、入力データの分類能力が劣化する結果、モデルの精度が悪化する。また、入力データを投影する空間の次元数が最適な次元数よりも高い場合は、超平面との内積値が変化する結果、学習時に用いたデータとは異なるデータを適切に分類することができなくなる恐れがある。そこで、情報提供装置10は、モデルに入力する入力データの次元数を最適化する。例えば、情報提供装置10は、モデルが有する入力層のノードの数を制御することで、入力データの次元数を最適化する。換言すると、情報提供装置10は、入力データの埋め込みを行う空間の次元数を最適化する。
また、モデルには、SVMに加え、複数の中間層(隠れ層)を有するニューラルネットワーク等が存在する。また、このようなニューラルネットワークには、入力層から出力層まで一方方向に情報が伝達されるフィードフォワード型のDNN、中間層で情報の畳み込みを行う畳み込みニューラルネットワーク(CNN:Convolutional Neural Networks)、有向閉路を有する回帰型ニューラルネットワーク(RNN:Recurrent Neural Network)、ボルツマンマシン等、各種のニューラルネットワークが知られている。また、このような各種ニューラルネットワークには、LSTM(Long short-term memory)やその他各種のニューラルネットワークが含まれている。
このように、学習データの各種特徴を学習するモデルの種別が異なる場合、モデルの精度は変化すると考えられる。そこで、情報提供装置10は、学習データの特徴を精度良く学習すると推定されるモデルの種別を選択する。例えば、情報提供装置10は、学習データのラベルとしてどのようなラベルが付与されているかに応じて、モデルの種別を選択する。より具体的な例を挙げると、情報提供装置10は、ラベルとして「履歴」に関連する用語が付されたデータが存在する場合は、履歴の特徴をより良く学習することができると考えられるRNNを選択し、ラベルとして「画像」に関連する用語が付されたデータが存在する場合は、画像の特徴をより良く学習することができると考えられるCNNを選択する。これら以外にも、情報提供装置10は、ラベルがあらかじめ指定された用語若しくは用語と類似する用語であるか否かを判定し、同一若しくは類似すると判定された用語と予め対応付けられた種別のモデルを選択すればよい。
また、モデルの中間層の数や1つの中間層に含まれるノードの数が変化した場合、モデルの学習精度が変化すると考えられる。例えば、モデルの中間層の数が多い場合(モデルが深い場合)、より抽象的な特徴に応じた分類を実現することができると考えられる一方で、バックプロパゲーションにおける局所誤差が入力層まで伝播しづらくなる結果、学習が適切に行えなくなる恐れがある。また、中間層に含まれるノードの数が少ない場合は、より高度な抽象化を行うことができるものの、ノードの数が少なすぎる場合は、分類に必要な情報が欠損する可能性が高い。そこで、情報提供装置10は、中間層の数や中間層に含まれるノードの数の最適化を行う。すなわち、情報提供装置10は、モデルのアーキテクチャの最適化を行う。
また、アテンションの有無やモデルに含まれるノードに自己回帰がある場合とない場合、どのノード間を接続するのかに応じて、ノードの精度が変化すると考えられる。そこで、情報提供装置10は、自己回帰を有するか否か、どのノード間を接続するのかといったネットワークの最適化を行う。
また、モデルの学習を行う場合、モデルの最適化手法(学習時に用いるアルゴリズム)やドロップアウト率、ノードの活性化関数やユニット数等がハイパーパラメータとして設定される。このようなハイパーパラメータが変化した場合にも、モデルの精度が変化すると考えられる。そこで、情報提供装置10は、モデルを学習する際の学習態様、すなわち、ハイパーパラメータの最適化を行う。
また、モデルのサイズ(入力層、中間層、出力層の数やノード数)が変化した場合も、モデルの精度が変化する。そこで、情報提供装置10は、モデルのサイズの最適化についても行う。
このように、情報提供装置10は、上述した各種モデルを生成する際の指標について最適化を行う。例えば、情報提供装置10は、各指標に対応する条件を予め保持しておく。なお、このような条件は、例えば、過去の学習モデルから生成された各種モデルの精度等の経験則により設定される。そして、情報提供装置10は、学習データが各条件を満たすか否かを判定し、学習データが満たす若しくは満たさない条件に予め対応付けられた指標を生成指標(若しくはその候補)として採用する。この結果、情報提供装置10は、学習データが有する特徴を精度良く学習可能な生成指標を生成することができる。
なお、上述したように、学習データから自動的に生成指標を生成し、生成指標に従ってモデルを作成する処理を自動的に行った場合、利用者は、学習データの内部を参照し、どのような分布のデータが存在するかといった判断を行わずともよい。この結果、情報提供装置10は、例えば、モデルの作成に伴ってデータサイエンティスト等が学習データの認識を行う手間を削減するとともに、学習データの認識に伴うプライバシーの毀損を防ぐことができる。
〔4-2.データ種別に応じた生成指標〕
以下、生成指標を生成するための条件の一例について説明する。まず、学習データとしてどのようなデータが採用されているかに応じた条件の一例について説明する。
例えば、学習に用いられる学習データには、整数、浮動小数点、若しくは文字列等がデータとして含まれている。このため、入力されるデータの形式に対して適切なモデルを選択した場合は、モデルの学習精度がより高くなると推定される。そこで、情報提供装置10は、学習データが整数であるか、浮動小数点であるか、若しくは文字列であるかに基づいて、生成指標を生成する。
例えば、学習データが整数である場合、情報提供装置10は、学習データの連続性に基づいて、生成指標を生成する。例えば、情報提供装置10は、学習データの密度が所定の第1閾値を超える場合、当該学習データが連続性を有するデータであると見做し、学習データの最大値が所定の第2閾値を上回るか否かに基づいて生成指標を生成する。また、情報提供装置10は、学習データの密度が所定の第1閾値を下回る場合、当該学習データがスパースな学習データであると見做し、学習データに含まれるユニークな値の数が所定の第3閾値を上回るか否かに基づいて生成指標を生成する。
より具体的な例を説明する。なお、以下の例においては、生成指標として、AutoMLによりモデルを自動的に生成するモデル生成サーバ2に対して送信するコンフィグファイルのうち、特徴関数(feature function)を選択する処理の一例について説明する。例えば、情報提供装置10は、学習データが整数である場合、その密度が所定の第1閾値を超えるか否かを判定する。例えば、情報提供装置10は、学習データに含まれる値のうちユニークな値の数を、学習データの最大値に1を加算した値で除算した値を密度として算出する。
続いて、情報提供装置10は、密度が所定の第1閾値を超える場合は、学習データが連続性を有する学習データであると判定し、学習データの最大値に1を加算した値が第2閾値を上回るか否かを判定する。そして、情報提供装置10は、学習データの最大値に1を加算した値が第2閾値を上回る場合は、特徴関数として「Categorical_colum_with_identity & embedding_column」を選択する。一方、情報提供装置10は、学習データの最大値に1を加算した値が第2閾値を下回る場合は、特徴関数として「Categorical_column_with_identity」を選択する。
一方、情報提供装置10は、密度が所定の第1閾値を下回る場合は、学習データがスパースであると判定し、学習データに含まれるユニークな値の数が所定の第3閾値を超えるか否かを判定する。そして、情報提供装置10は、学習データに含まれるユニークな値の数が所定の第3閾値を超える場合は、特徴関数として「Categorical_column_with_hash_bucket & embedding_column」を選択し、学習データに含まれるユニークな値の数が所定の第3閾値を下回る場合は、特徴関数として「Categorical_column_with_hash_bucket」を選択する。
また、情報提供装置10は、学習データが文字列である場合、学習データに含まれる文字列の種別の数に基づいて、生成指標を生成する。例えば、情報提供装置10は、学習データに含まれるユニークな文字列の数(ユニークなデータの数)を計数し、計数した数が所定の第4閾値を下回る場合は、特徴関数として「categorical_column_with_vocabulary_list」若しくは/および「categorical_column_with_vocabulary_file」を選択する。また、情報提供装置10は、計数した数が所定の第4閾値よりも大きい第5閾値を下回る場合は、特徴関数として「categorical_column_with_vocabulary_file & embedding_column」を選択する。また、情報提供装置10は、計数した数が所定の第4閾値よりも大きい第5閾値を上回る場合は、特徴関数として「categorical_column_with_hash_bucket & embedding_column」を選択する。
また、情報提供装置10は、学習データが浮動小数点である場合、モデルの生成指標として、学習データをモデルに入力する入力データへの変換指標を生成する。例えば、情報提供装置10は、特徴関数として「bucketized_column」もしくは「numeric_column」を選択する。すなわち、情報提供装置10は、学習データをバケタイズ(グルーピング)し、バケットの番号を入力とするか、数値をそのまま入力するかを選択する。なお、情報提供装置10は、例えば、各バケットに対して対応付けられる数値の範囲が同程度となるように、学習データのバケタイズを行ってもよく、例えば、各バケットに分類される学習データの数が同程度となるように、各バケットに対して数値の範囲を対応付けてもよい。また、情報提供装置10は、バケットの数やバケットに対して対応付けられる数値の範囲を生成指標として選択してもよい。
また、情報提供装置10は、複数の特徴を示す学習データを取得し、モデルの生成指標として、学習データが有する特徴のうちモデルに学習させる特徴を示す生成指標を生成する。例えば、情報提供装置10は、どのラベルの学習データをモデルに入力するかを決定し、決定したラベルを示す生成指標を生成する。また、情報提供装置10は、モデルの生成指標として、学習データの種別のうちモデルに対して相関を学習させる複数の種別を示す生成指標を生成する。例えば、情報提供装置10は、モデルに対して同時に入力するラベルの組み合わせを決定し、決定した組み合わせを示す生成指標を生成する。
また、情報提供装置10は、モデルの生成指標として、モデルに入力される学習データの次元数を示す生成指標を生成する。例えば、情報提供装置10は、学習データに含まれるユニークなデータの数やモデルに入力するラベルの数、モデルに入力するラベルの数の組み合わせ、バケットの数等に応じて、モデルの入力層におけるノードの数を決定してもよい。
また、情報提供装置10は、モデルの生成指標として、学習データの特徴を学習させるモデルの種別を示す生成指標を生成する。例えば、情報提供装置10は、過去に学習対象とした学習データの密度やスパース具合、ラベルの内容、ラベルの数、ラベルの組み合わせの数等に応じて、生成するモデルの種別を決定し、決定した種別を示す生成指標を生成する。例えば、情報提供装置10は、AutoMLにおけるモデルのクラスとして「BaselineClassifier」、「LinearClassifier」、「DNNClassifier」、「DNNLinearCombinedClassifier」、「BoostedTreesClassifier」、「AdaNetClassifier」、「RNNClassifier」、「DNNResNetClassifier」、「AutoIntClassifier」等を示す生成指標を生成する。
なお、情報提供装置10は、これら各クラスのモデルの各種独立変数を示す生成指標を生成してもよい。例えば、情報提供装置10は、モデルの生成指標として、モデルが有する中間層の数若しくは各層に含まれるノードの数を示す生成指標を生成してもよい。また、情報提供装置10は、モデルの生成指標として、モデルが有するノード間の接続態様を示す生成指標やモデルの大きさを示す生成指標を生成してもよい。これらの独立変数は、学習データが有する各種の統計的な特徴が所定の条件を満たすか否かに応じて、適宜選択されることとなる。
また、情報提供装置10は、モデルの生成指標として、学習データが有する特徴をモデルに学習させる際の学習態様、すなわち、ハイパーパラメータを示す生成指標を生成してもよい。例えば、情報提供装置10は、AutoMLにおける学習態様の設定において、「stop_if_no_decrease_hook」、「stop_if_no_increase_hook」、「stop_if_higher_hook」、もしくは「stop_if_lower_hook」を示す生成指標を生成してもよい。
すなわち、情報提供装置10は、学習に用いる学習データのラベルやデータそのものの特徴に基づいて、モデルに学習させる学習データの特徴、生成するモデルの態様、および学習データが有する特徴をモデルに学習させる際の学習態様を示す生成指標を生成する。より具体的には、情報提供装置10は、AutoMLにおけるモデルの生成を制御するためのコンフィグファイルを生成する。
〔4-3.生成指標を決定する順序について〕
ここで、情報提供装置10は、上述した各種の指標の最適化を同時並行的に行ってもよく、適宜順序だてて実行してもよい。また、情報提供装置10は、各指標を最適化する順序を変更可能としてもよい。すなわち、情報提供装置10は、モデルに学習させる学習データの特徴、生成するモデルの態様、および学習データが有する特徴をモデルに学習させる際の学習態様を決定する順番の指定を利用者から受け付け、受け付けた順序で、各指標を決定してもよい。
例えば、情報提供装置10は、生成指標の生成を開始した場合、入力する学習データの特徴や、どのような態様で学習データを入力するかといった入力素性の最適化を行い、続いて、どの特徴の組み合わせの特徴を学習させるかという入力クロス素性の最適化を行う。続いて、情報提供装置10は、モデルの選択を行うとともに、モデル構造の最適化を行う。その後、情報提供装置10は、ハイパーパラメータの最適化を行い、生成指標の生成を終了する。
ここで、情報提供装置10は、入力素性最適化において、入力する学習データの特徴や入力態様といった各種入力素性の選択や修正、遺伝的アルゴリズムを用いた新たな入力素性の選択を行うことで、入力素性を繰り返し最適化してもよい。同様に、情報提供装置10は、入力クロス素性最適化において、入力クロス素性を繰り返し最適化してもよく、モデル選択およびモデル構造の最適化を繰り返し実行してもよい。また、情報提供装置10は、ハイパーパラメータの最適化を繰り返し実行してもよい。また、情報提供装置10は、入力素性最適化、入力クロス素性最適化、モデル選択、モデル構造最適化、およびハイパーパラメータの最適化という一連の処理を繰り返し実行し、各指標の最適化を行ってもよい。
また、情報提供装置10は、例えば、ハイパーパラメータの最適化を行ってから、モデル選択やモデル構造最適化を行ってもよく、モデル選択やモデル構造最適化の後に、入力素性の最適化や入力クロス素性の最適化を行ってもよい。また、情報提供装置10は、例えば、入力素性最適化を繰り返し実行し、その後入力クロス素性最適化を繰り返し行う。その後、情報提供装置10は、入力素性最適化と入力クロス素性最適化を繰り返し実行してもよい。このように、どの指標をどの順番で最適化するか、最適化においてどの最適化処理を繰り返し実行するかについては、任意の設定が採用可能となる。
〔5.実施形態に係る情報処理について〕
これまで、図1を用いて情報提供装置10が実行する各種処理について説明した。ここからは、情報処理装置100が実行する情報処理、および、実行制御装置200が実行する情報処理について説明する。
〔5-1、情報処理システムの構成〕
まず、実施形態に係る情報処理の説明に先立って、図2を用いて、情報提供システム1に含まれる一部のシステムである情報処理システムSyについて説明する。図2は、実施形態に係る情報処理システムSyの一例を示す図である。情報処理システムSyは、情報提供システム1のうち、情報処理装置100および実行制御装置200のみを含む部分的なシステムに対応する。
図2に示すように、情報処理システムSyは、情報処理装置100および実行制御装置200を有する。本実施形態では、情報処理装置100は、サーバ装置であるものとして説明するが、クラウドシステム等によって実現されてもよい。また、本実施形態では、実行制御装置200は、サーバ装置であるものとして説明するが、クラウドシステム等によって実現されてもよい。
ここで、図1で説明した通り、情報提供装置10は、モデルの作成を容易にするために、データの特徴に応じて、モデルのアーキテクチャを最適化し、自動的にモデルを生成するものである。
これに対して、情報処理装置100は、モデルをどのように学習もしくは生成するかといった学習・生成手法を最適化する処理をメインの情報処理とする。なお、情報処理装置100は、情報提供装置10が有する機能の一部または全てを有することで、情報提供装置10としても動作可能である。また、情報処理装置100は、モデル生成サーバ2が有する機能の一部または全てを有することもできる。また、情報処理装置100は、情報提供装置10が行うものとして図1で説明した処理に加えて、以下の実施形態に示す各種処理を実行するものとする。
また、実行制御装置200は、モデルを用いた処理(例えば、特定の対象を予測する処理)を実行する実行主体を最適化する処理をメインの情報処理とする。
なお、情報処理装置100が実行する最適化処理は、モデルをどのように学習もしくは生成するのか学習手法を最適化する最適化処理と、学習済のモデルを実際に利用する場面において学習済のモデルに入力するデータを最適化する最適化処理とに大別される。したがって、以下の実施形態では、まず、情報処理装置100を対象に、学習手法を最適化する最適化処理、学習済のモデルに入力するデータを最適化する最適化処理の順に説明した後に、実行制御装置200による実行主体の最適化処理について説明する。
また、学習手法を最適化する最適化処理は、後述する第1の最適化~第5の最適化といった5つの最適化処理にさらに分類することができる。よって、学習手法を最適化する最適化処理については、まず、以下の図3を用いて、第1の最適化~第5の最適化それぞれの概要、および、第1の最適化~第5の最適化が実行される実行順序の一例を説明する。その後に、図5に示す機能構成図に基づいて、第1の最適化~第5の最適化それぞれの詳細な一例を説明する。
〔5-2.情報処理装置が実行する処理の一例〕
ここからは、図3を用いて、情報処理装置100が実行する処理の一例について説明する。図3は、実施形態に係る情報処理装置100が実行する処理の全体像を示す図である。例えば、モデルの実運用に際しては、なるべくモデルサイズを小さくしたい、無駄な計算を減らし推論速度を上げたい等といったモチベーションがある。よって、図3では、モデルによる推論をAPIとして提供(サービング)するにあたって、計算グラフの最適化を行い、モデルのサイズやサービング環境におけるパフォーマンス向上を目指すための一場面が示される。計算グラフとは、有向グラフによって演算処理を表現したものであり、グラフの頂点(ノード)が実行する演算内容、辺(エッジ)が各ノードの入出力を表す。このようなことから、モデルは、例えばテンソル計算のグラフとして定義される。
また、上記によれば、情報処理装置100は、学習手法を最適化することにより、より高性能なモデルをサービングできるようモデルをチューニングする。このため、図3は、実施形態に係る各種の最適化を含む一連のチューニング(実施形態に係るファインチューニング)のアルゴリズムを説明するものである。
また、実施形態に係るファインチューニングは、図3に示すように、学習手法を最適化する最適化処理、および、最適化処理により得られた学習済のモデルの一部を変更して再学習することでよりサービス向けに微調整するチューニング処理に分けられる。最適化処理は、例えば、情報処理装置100が有するオプティマイズ機能(「オプティマイザーOP」とする)により実行される。また、チューニング処理は、情報処理装置100が有するデータセレクト機能(「セレクターSE」とする)により実行される。
まず、情報処理装置100は、乱数(擬似乱数)に基づいて、モデルパラメータ(例えば、重みやバイアス)の初期値を複数生成する(ステップS11)。この際、情報処理装置100は、乱数を得るためのシード(すなわち乱数シード)を最適化する第1の最適化を実行することにより、モデルパラメータがより適切に初期化されるよう制御する。また、このようなことから、第1の最適化とは、計算グラフにおける乱数シードの最適化を行うものである。
ディープラーニングでは、疑似乱数に基づいて、モデルパラメータの初期値を決定し、学習データが有する特徴をモデルに学習させる。このような処理の結果、モデルパラメータの値は、学習データが有する特徴に応じた値へと徐々に変化(収束)していくこととなる。このため、モデルパラメータの初期値が学習データの特徴に応じた値から大きく外れている場合、学習に要する時間がかかってしまい、学習速度が遅くなってしまう。このような観点から、それぞれ異なる初期値を有するモデルを複数生成し、生成したモデルのうち最も精度が向上するモデルを学習結果として採用するといった処理が考えられる。
一方で、モデルパラメータと、そのモデルパラメータの組が実現する精度との関係性を考えると、モデルの構造上、モデルパラメータごとに精度が断続的に変化する関係性というよりは、最適値に近いモデルパラメータ程、精度が高いといった略連続的な関係性を有するものと推定される。また、モデルパラメータの初期値が、学習データに応じた最適値ではなく、極小値に近い場合、モデルパラメータが極小値でとどまってしまい、精度の向上が図れなくなる恐れがある。このため、初期値が異なるモデルを複数生成する場合、ある程度の広がり(すなわち、分布)を有するモデルパラメータの初期値群を生成するのが望ましいと考えられる。
そこで、情報処理装置100は、モデルパラメータの組が所定の分布を有する複数のモデルを生成できるよう第1の最適化を実行する。例えば、情報処理装置100は、各モデルのモデルパラメータを生成する場合、所定の初期値から所定のランダム関数を用いて、モデルパラメータを生成する。このようなランダム関数は、一様分布を有する乱数や正規分布を有する乱数等、どのような分布を有する乱数を生成するか、入力されたシード値から、どのような平均値を有する乱数を生成するか、どの範囲の乱数を生成するかといった各種の設定が可能である。そこで、情報処理装置100は、ランダム関数に入力するシード値や各種の設定といった乱数シードの値を最適化する。
より具体的には、情報処理装置100は、第1の最適化により、所定の分布を満たすような複数の乱数シードを設定する。そして、情報処理装置100は、設定した乱数シードそれぞれをランダム関数に入力することで、乱数シードごとに、当該乱数シードに応じた乱数を生成する。また、これにより生成される乱数は、所定の分布を示すことになる。したがって、情報処理装置100は、係る乱数を用いることで、ステップS11では、所定の分布を有するモデルパラメータの初期値群を生成することができるようになる。
次に、情報処理装置100は、ステップS11で生成したモデルパラメータの初期値ごとに、モデルを生成する(ステップS12)。具体的には、情報処理装置100は、所定の分布に収まっているモデルパラメータの初期値群のうち、組合せの異なるモデルパラメータの組ごとに、当該モデルパラメータの組を有するモデルを生成する。
次に、情報処理装置100は、学習用データから、今回の繰り返し学習用のデータ(すなわち、学習対象の学習用データ)をランダムに抽出し、抽出したデータをバッファに格納する。そして、情報提供装置10は、バッファに格納したデータが有する特徴の学習が完了した場合、新たなデータを抽出してバッファに格納し、バッファに格納したデータの学習を実行させることで、シャッフルに応じて繰り返し学習が行われるよう制御する(ステップS13)。
ここで、学習データセットがいくつかのサブセットに分割された場合、全てのサブセットをモデルの学習に用いる場合において最も性能のよいモデルが学習されるとは限らない。また、一方で、上述した繰り返し学習によってモデルの学習を行った場合、1つのサブセットに含まれるデータの組合せが最適化されることで、よりモデルの精度を向上させることができると考えられる。したがって、情報処理装置100は、ステップS13を行う際に、データセットのうち実際に学習に用いる学習用データをどれにするか学習用データを最適化する第2の最適化、および、シャッフルが行われる上記バッファのサイズを最適化する第3の最適化を実行する。このように、第2の最適化とは、学習に用いられるデータの最適化を行うものである。また、第3の最適化とは、シャッフルバッファサイズの最適化を行うものである。
例えば、情報処理装置100は、ステップS13では第2の最適化および第3の最適化を行うことで、今回の繰り返し学習で用いられる学習用データである学習対象の学習用データ(最適化されたバッファサイズに応じた学習用データ)を生成しこれをバッファに格納する。
また、情報処理装置100は、ステップS12で生成した各モデルに対し、ステップS13でバッファに格納された学習用データの特徴を学習させる(ステップS14)。
例えば、情報処理装置100は、バッファに格納した学習対象の学習用データを、1つ1つ順番にその特徴を学習させて行くが、この際、学習順(学習用データの順番)をバッファ内でシャッフルする。具体的には、情報処理装置100は、エポックごとに毎回学習順をランダムな順序にシャッフルする。
ここで、モデルの学習を行うには、データがよくシャッフルされることが重要であると考えられるが、単にシャッフルされるだけでは、例えば学習順やバッチ毎のデータ分布に偏りが生じてしまい上手く学習されない恐れがある。例えば、モデルの学習を行う場合、ある学習用データを用いてモデルの学習(モデルパラメータの修正)を行った後で、異なる学習用データを用いてモデルの学習を行うといったように、学習用データの特徴を順次学習させることとなる。このため、学習用データが時系列を有する場合、学習用データを有する特徴を広く一般的に学習させるには、学習用データの時系列をある程度分散させた方がよいと考えられる。一方、連続してモデルに入力する学習用データの時系列に大きな隔たりが存在する場合、モデルパラメータの修正幅が大きくなってしまい、適切な学習を行えなく恐れがある。換言すると、時系列を有する学習用データの特徴をモデルに学習させる場合、時系列に囚われない特徴を学習させるためにも、ある程度時系列がばらつくように学習データを順に用いる必要があるものの、時系列のばらつきが大きすぎる場合、適切なモデルの学習を行えなくなる恐れがある。このような場合、モデルの精度を改善することができない。
このため、情報処理装置100は、ステップS14を行う際に、エポック間でのランダムな順序に偏りが生じないよう(一様な分布となるよう)、ランダム順序を生成する際に用いるシード値の最適化を行う。具体的には、情報処理装置100は、ランダム順序生成のシード(すなわち乱数シード)を最適化する第4の最適化を実行することにより、特定の学習用データが毎回同じ順番で学習されるということがないよう最適なランダム順序を生成する。このことから、第4の最適化とは、データシャッフルにおける乱数シードの最適化を行うものである。
例えば、情報処理装置100は、第4の最適化として、エポック間での各学習用データに対応付けるランダム順序に偏りが生じないよう今回の学習での乱数シードを生成する。そして、情報処理装置100は、生成した各乱数シードをランダム関数に入力することで、ランダム順序を生成する。また、情報処理装置100は、生成したランダム順序を各学習対象の学習用データに対応付けることで、最終的な学習対象の学習データをバッファ内で生成する。この結果、実際の学習においては、第1の最適化により所定の分布を示すよう生成された各モデルパラメータを有するモデルと、第4の最適化によりランダムに順序を決定された学習用データとを掛け合わせて得られる、モデルと学習用データとの組ごとに、学習が行われることとなる。
そして、情報処理装置100は、生成したランダム順序で、この最終的な学習対象の学習データの特徴を順に各モデルに学習させる。具体的には、情報処理装置100は、生成したランダム順序で学習対象の学習用データの特徴の学習が終了すれば(1エポック終了すれば)、再度、ランダム順序を生成し、生成したランダム順序で再び学習用データの特徴を各モデルに学習させるという次のエポックに移行する。このようにして、情報処理装置100は、指定されエポック数だけ繰り返し学習させるというLoopを繰り返す。
指定されたエポック数だけ繰り返し学習させるというLoopが終了すれば、バッファは空になる。よって、情報処理装置100は、ステップS13で得られた学習対象の学習データのうち、未処理の学習データを空になったバッファに格納し、この格納した学習対象の学習データを対象にステップS14をさらに繰り返し、ステップS13で得られた学習対象の学習用データの全てを学習させる。
第2~第4の最適化の詳細な一例や、ステップS13およびS14での繰り返し学習の詳細な一例については後述する。
また、ここで、ステップS14における実際の学習の中では、ハイパーパラメータを探索する試行が繰り返されるが効率の良い探索を実現できるよう、情報処理装置100は、枝刈りによる試行の最適化として第5の最適化を実行する。このようなことから、第5の最適化とは、よい結果を残すことが見込まれない試行については、最後まで行うことなく早期に終了させるというearly stoppingに関する最適化である。
例えば、情報処理装置100は、利用者に対して、early stoppingの対象(早期に終了させる対象)となる試行を条件付ける制約条件をモデルの精度を評価する評価値の観点から指定させる。そして、情報処理装置100は、試行ごとに制約条件を満たしたか否かを監視し、制約条件を満たしたと判定した時点でその試行を終了させ、残りの試行のみ継続させる。この点換言すると、情報処理装置100は、モデルの精度を評価する評価値が所定の条件(例えば、制約条件の逆)を満たす試行のみ選択し(選択されなかった試行は枝刈り対象)、選択した試行について引き続き学習を継続させる。第5の最適化の詳細な一例については後述する。
また、情報処理装置100は、最適化処理が適用された学習処理による学習済の各モデルの精度に基づき、生成したモデルの中からベストモデルを選択する(ステップS15)。例えば、情報処理装置100は、評価用データを用いて、各モデルの精度を算出し、精度の変動(精度の改善量)が高い程、より高い評価値を算出する。そして、情報処理装置100は、最も高い評価値が算出されたモデルをベストモデルとして選択する。
ここまで、オプティマイザーOPにより最適化処理が適用された学習手法について説明してきたが、以降は、セレクターSEによるチューニング処理について説明する。
例えば、情報処理装置100は、セレクターSEを実行することにより、ベストモデルの一部を変更して再学習させることでベストモデルを微調整するチューニング処理を行う。情報処理装置100は、最適化処理が適用された学習処理で用いた学習用データを、1まとまりのデータセットとして係るチューニング処理でも使用することができる。
ここで、上記データセットのうち、それぞれ範囲(時系列に応じた時間範囲)が異なる学習用データを用いた場合での各チューニング処理を1つの試行(トライアル)として、各チューニング結果(ベストモデルの精度)を効果的に評価できるよう、上記データセットは用途に合わせて図4のように分けられた。図4は、データセットが用途に合わせて分割された際におけるトライアルごとの分割例を示す図である。
データセットに含まれるデータは、所定のサービス(例えば、所定のショッピングサービス)を利用して商品購入されたことによる購入履歴に対応し、時系列の概念を有する。したがって、データセットに含まれるデータは、それぞれ時系列順に並べられている。図4の例によれば、データセットは、「6月11日 0時00分」~「6月19日 0時00分」までの時間範囲を有し、この中で最も古いデータ(6月11日 0時00分での購入履歴)から、最も新しいデータ(6月19日 0時00分での購入履歴)までが時系列順に並べられている。
そして、このようなデータセットについて、図4の例では、トライアルAに対して、「6月11日 0時00分」~「6月16日 17時32分」までのデータがチューニングのための学習用データとして割り当てられている。係る例は、「6月11日 0時00分」~「6月16日 17時32分」までのデータを学習用データとして用いてベストモデルをチューニングする処理を、トライアルAとすることが決められたことを意味する。
また、図4の例では、トライアルAに対して、「6月16日 17時32分」~「6月17日 7時26分」までのデータが評価用データとして割り当てられている。係る例は、「6月16日 17時32分」~「6月17日 7時26分」までのデータを用いて、トライアルAによりチューニングされた後のベストモデルを評価することが決められた例を示す。
また、図4の例では、トライアルAに対して、「6月17日 7時26分」~「6月19日 0時00分」までのデータがテストデータとして割り当てられている。係る例は、「6月17日 7時26分」~「6月19日 0時00分」までのデータをラベルが未知のテスト用データとして用いることで、トライアルAによりチューニングされた後のベストモデルを評価することが決められた例を示す。
また、図4の例では、トライアルBに対して、「6月11日 0時00分」~「6月17日 7時26分」までのデータがチューニングのための学習用データとして割り当てられている。係る例は、「6月11日 0時00分」~「6月17日 7時26分」までのデータを学習用データとして用いてベストモデルをチューニングする処理を、トライアルBとすることが決められたことを意味する。
また、図4の例では、トライアルBに対して、「6月17日 7時26分」~「6月17日12時00分」までのデータが評価用データとして割り当てられている。係る例は、「6月17日 7時26分」~「6月17日12時00分」までのデータを用いて、トライアルBによりチューニングされた後のベストモデルを評価することが決められた例を示す。
また、図4の例では、トライアルBに対して、「6月17日12時00分」~「6月19日 0時00分」までのデータがテストデータとして割り当てられている。係る例は、「6月17日12時00分」~「6月19日 0時00分」までのデータをラベルが未知のテスト用データとして用いることで、トライアルBによりチューニングされた後のベストモデルを評価することが決められた例を示す。
また、図4の例では、トライアルCに対して、「6月11日 0時00分」~「6月17日12時00分」までのデータがチューニングのための学習用データとして割り当てられている。係る例は、「6月11日 0時00分」~「6月17日12時00分」までのデータを学習用データとして用いてベストモデルをチューニングする処理を、トライアルCとすることが決められたことを意味する。
また、図4の例では、トライアルCに対して、「6月17日12時00分」~「6月19日 0時00分」までのデータが評価用データとして割り当てられている。係る例は、「6月17日12時00分」~「6月19日 0時00分」までのデータを用いて、トライアルCによりチューニングされた後のベストモデルを評価することが決められた例を示す。
なお、図4に示す割り当ては一例であり、例えば、チューニング処理に応じて、データセットのうち、どのようなデータを学習用データとし、どのようなデータを評価用データとし、どのようなデータをテスト用データとして定めるかは、モデルを管理する管理者の都合に合わせて適宜変更されてよいものである。
図3に戻り、情報処理装置100は、図4に示す学習用データを用いて、以下に示す繰り返し学習によるチューニング処理をベストモデルに対して行うとともに、図4に示す評価用データおよびテスト用データを用いて評価することを繰り返す。また、情報処理装置100は、このような一連の処理をトライアルごとに行う。また、係る一連の処理内容はトライアルに関わらず同一であるため、以下では係る一連の処理内容の一例についてトライアルAを対象に説明する。
例えば、情報処理装置100は、学習用データを所定数のデータで構成される組に分割する(ステップS21)。組ごとの学習データは、例えば、当該組に対応するファイル内で管理される。例えば、情報処理装置100は、学習用データを数百組(例えば、500組)に分割することができるが、図3では説明を簡単にするために、学習用データが10組に分割された例を示す。具体的には、図3では、この10組の一例として、File「1」~File「10」が示される。また、各ファイル内には、所定数の学習用データが格納される。
このような状態において、情報処理装置100は、分割して得られた各組からランダムに1組選択し学習データリストに追加する(ステップS22)。そして、情報処理装置100は、追加するたびに今回追加した組での学習用データの特徴をベストモデルに学習させる(ステップS23)。例えば、情報処理装置100は、今回追加した組での学習用データを1エポックだけ学習させる。そして、情報処理装置100は、学習済のベストモデルを対象に評価用データおよびテスト用データを用いて精度を評価する(ステップS24)、という一連の処理を繰り返す。
この点、図3の例では、情報処理装置100が、1回目のステップS22では、File「6」を選択し、選択したFile「6」を学習データリストに追加した例が示される。また、情報処理装置100が、1回目のステップS23では、今回追加した組であるFile「6」に含まれる学習用データの特徴をベストモデルに学習させた例が示される。また、情報処理装置100が、1回目のステップS24ではFile「6」に含まれる学習用データの特徴を学習したベストモデルが、評価用データおよびテスト用データを用いて評価された例を示す。
また、図3の例では、情報処理装置100が、2回目のステップS22では、File「9」をさらに選択し、選択したFile「9」を学習データリストに追加した例が示される。また、情報処理装置100が、2回目のステップS23では、今回追加した組であるFile「9」に含まれる学習用データの特徴をベストモデルに学習させた例が示される。また、情報処理装置100が、2回目のステップS24ではこれまでにFile「6」および「9」に含まれる学習用データの特徴を学習したベストモデルが、評価用データおよびテスト用データを用いて評価された例を示す。
また、図3の例では、情報処理装置100が、3回目のステップS22では、File「3」をさらに選択し、選択したFile「3」を学習データリストに追加した例が示される。また、情報処理装置100が、3回目のステップS23では、今回追加した組であるFile「3」に含まれる学習用データの特徴をベストモデルに学習させた例が示される。また、情報処理装置100が、3回目のステップS24ではこれまでにFile「6」、「9」および「3」に含まれる学習用データの特徴学習したベストモデルが、評価用データおよびテスト用データを用いて評価された例を示す。
なお、ステップS22~S24にかけてのLoopについて、より詳細には、情報処理装置100は、学習用データからランダムにデータファイルを1つ選択し、選択したデータファイルをModel Configの学習データリストに追加し、そして、追加したデータファイルに含まれる学習用データを1エポックだけベストモデルに学習させる。
また、情報処理装置100は、これまでの評価結果に基づき上位5以内と判断されたModel Configを対象に、それぞれに新たにデータファイルをランダムに1つ選択し、選択したデータファイルをModel Configの学習データリストに追加する。そして、情報処理装置100は、データファイルが1つ増えた学習データリストに含まれる学習用データを1エポックだけベストモデルに学習させる。
また、情報処理装置100は、評価結果に基づき、ベストモデルの性能(精度)がこれ以上向上しないと判定できるまでステップS22~S24にかけてのLoopを継続する。
また、情報処理装置100は、性能を最大限まで向上させたベストモデルをサービング対象として処理することができる。例えば、情報処理装置100は、利用者からのアクセスに応じて、実施形態に係るファインチューニングにより性能が向上したベストモデルを提供する。このような情報処理装置100によれば、利用者はモデルの改良に手間をかける必要がなくなるため、モデルに入力するデータの調整に注力することができるようになる。
〔6.情報処理装置の構成〕
次に、図5を用いて、実施形態に係る情報処理装置100について説明する。図5は、実施形態に係る情報処理装置100の構成例を示す図である。図5に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。
(通信部110について)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワークNと有線または無線で接続され、例えば、モデル生成サーバ2、端末装置3、情報提供装置10、実行制御装置200との間で情報の送受信を行う。
(記憶部120について)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ等の半導体メモリ素子またはハードディスク、光ディスク等の記憶装置によって実現される。記憶部120は、学習データ記憶部121と、モデル記憶部122とを有する。
(学習データ記憶部121について)
学習データ記憶部121は、学習に関する各種のデータを記憶する。例えば、学習データ記憶部121は、学習用データ、評価用データ、テスト用データに分割された状態の学習データを記憶する。
例えば、情報処理装置100は、全学習データを、学習用データ、評価用データ、テスト用データに分割し、分割によって得られたこれらデータを学習データ記憶部121に登録する。例えば、情報処理装置100は、任意の手法を用いて全学習データを分割することができる。例えば、情報処理装置100は、ホールドアウト(Hold-out)法、クロスバリデーション(Cross Validation)法、あるいはリーブワンアウト(Leave One Out)法等を用いて全学習用データを分割することができる。
ここで、図6を用いて、学習データの分割例を示す。図6は、データセットの分割を概念的に説明する説明図である。図6に示すように、情報処理装置100は、generate_data()関数を用いて、データセット(データ)から、N個のデータ群で構成される学習データと、N個のデータ群で構成されるテストデータとを生成する。
また、このような状態において、情報処理装置100は、split_data()関数を用いて、N個のデータ群で構成される学習データを、学習用データと評価用データとに分割する。例えば、情報処理装置100は、「N1:N2」(実際には、7:3等)の割合で学習用データと評価用データとを得られるよう、学習データを分割する。また、情報処理装置100は、N個のデータ群で構成されるテストデータについては、その全てをテスト用データとして定める。
また、情報処理装置100は、このようにして得られた学習用データ、評価用データ、テスト用データを学習データ記憶部121に登録する。
(モデル記憶部122について)
モデル記憶部122は、モデルに関する情報を記憶する。例えば、モデル記憶部122は、エポックごとに更新されるモデルをチェックポイントファイル形式で保存する。例えば、情報処理装置100は、モデル記憶部122において、一定間隔ごとに学習途中のパラメータを保存しチェックポイントを生成する。
(制御部130について)
制御部130は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、情報処理装置100内部の記憶装置に記憶されている各種プログラムがRAMを作業領域として実行されることにより実現される。また、制御部130は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
図3に示すように、制御部130は、生成部131と、取得部132と、第1データ制御部133と、第2データ制御部134と、第1学習部135と、モデル選択部136と、第2学習部137と、提供部138と、属性選択部139とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図5に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。また、制御部130が有する各処理部の接続関係は、図5に示した接続関係に限られず、他の接続関係であってもよい。
(生成部131について)
生成部131は、図3で説明したステップS11およびS12の処理を行う処理部である。このようなことから、生成部131は、第1の最適化アルゴリズムを用いて、ステップS11およびS12の処理を行う。
具体的には、生成部131は、それぞれパラメータが異なるモデルを複数生成する。例えば、生成部131は、入力値に基づいて乱数値を算出する所定の第1関数に対して入力する入力値(乱数シード)を複数生成し、生成した入力値ごとに、当該入力値を入力した際に所定の第1関数が出力する乱数値(擬似乱数)に応じたパラメータ(例えば、重みやバイアス)を有する複数のモデルを生成する。
この点について、生成部131は、所定の第1関数に対して入力する入力値として、所定の第1関数が出力する乱数値が所定の条件を満たす値となるような入力値を複数生成する。例えば、生成部131は、乱数値が所定範囲内の値となるような入力値を複数生成する。また、例えば、生成部131は、乱数値の分布が所定の確率分布を示すような入力値を複数生成する。また、例えば、生成部131は、乱数値の平均値が所定値となるような入力値を複数生成する。なお、ここでいう入力値とは、ランダム関数(所定の第1関数の一例)に入力されるパラメータであり、乱数シードに対応する。
例えば、生成部131は、所定の第1関数として、入力値を入力した際に出力される乱数値の分布が所定の確率分布(例えば、一様分布)を示すような関数を選択し、選択した関数が出力する乱数値に応じたパラメータを有する複数のモデルを生成する。
また、生成部131は、生成した各モデルをモデル記憶部122に登録することができる。
(取得部132について)
取得部132は、各種の情報を取得し、取得した情報を最適な処理部へと渡す。例えば、取得部132は、学習用データを用いた最適化や学習が行われる際に、学習データ記憶部121から学習用データを取得する。そして、取得部132は、取得した学習用データを最適化や学習を行う処理部に出力する。
(第1データ制御部133について)
第1データ制御部133は、図3で説明したステップS13の処理が行われる際に、第2の最適化アルゴリズムを用いて、学習に用いられるデータの最適化を行う。
具体的には、第1データ制御部133は、モデルに特徴を学習させる所定の学習データ(学習用データ)を、時系列順に複数の組に分割する。例えば、第1データ制御部133は、学習用データを所定数のデータを有する組に分割する。
また、第1データ制御部133は、学習用データを時系列順に複数の組に分割することにより得られた組のうち、実際にモデルの学習に用いられる組を選択する。例えば、第1データ制御部133は、学習用データを時系列順に複数の組に分割することにより得られた組のうち、含まれている学習用データの時系列がより新しい組を選択する。
なお、第1データ制御部133は、学習用データを時系列順に複数の組に分割することにより得られた組のうち、モデルの学習に用いられる組をランダムに選択してもよい。
また、第1データ制御部133は、学習用データを時系列順に複数の組に分割することにより得られた組のうち、利用者により指定された数の組を選択してもよい。例えば、第1データ制御部133は、選択した組の数が利用者により指定された数になるまで、学習用データを時系列順に複数の組に分割することにより得られた組のうち、含まれている学習用データの時系列がより新しい組を時系列順に選択してゆく。
また、第1データ制御部133は、選択した組をつなげることで1つのデータ群を生成する。例えば、第1データ制御部133は、選択順につなげることで1つのデータ群を生成する。また、第1データ制御部133は、生成したデータ群がモデルの学習に用いられるよう例えばこれを第2データ制御部134へと渡すことができる。
(第2データ制御部134について)
第2データ制御部134は、図3で説明したステップS13の処理が行われる際に、第3の最適化アルゴリズムを用いて、シャッフルバッファサイズの最適化を行う。例えば、第2データ制御部134は、シャッフルバッファサイズの最適化として、シャッフルバッファのサイズに等しいサイズの学習用データを生成し、このデータを今回の繰り返し学習で用いられる学習用データである学習対象の学習用データとしてシャッフルバッファに格納する。
例えば、第2データ制御部134は、第1データ制御部133により生成されたデータ群について、シャッフルバッファのサイズに等しいサイズの学習用データをそれぞれ含む複数の組へと分割する。
例えば、第2データ制御部134は、第1データ制御部133により生成されたデータ群を、時系列順に複数の組に分割する。例えば、第2データ制御部134は、第1データ制御部133により生成されたデータ群を、利用者により指定された数の学習用データを有する組に分割する。また、例えば、第2データ制御部134は、第1データ制御部133により生成された学習データ群を、含まれる学習用データの数が、利用者により指定された範囲内に収まるように、複数の組に分割してもよい。
また、第2データ制御部134は、分割により得られた組のうち、含まれている学習用データの時系列に応じた1組を、今回の繰り返し学習で用いられる学習用データである学習対象の学習用データとしてシャッフルバッファに格納する。具体的には、第2データ制御部134は、分割により得られた組のうち、含まれている学習用データの時系列が最も古い組を、学習対象の学習用データとしてシャッフルバッファに格納する。
(第1学習部135について)
第1学習部135は、生成部131により生成された複数のモデルのそれぞれに対し、所定の学習データの一部が有する特徴を学習させる。
例えば、第1学習部135は、生成部131により生成された複数のモデルのそれぞれに対し、第2データ制御部134によりバッファ(シャッフルバッファ)に格納された学習用データ(学習対象の学習用データ)の特徴を学習させる。このようなことから、例えば、第1学習部135は、第1データ制御部133により選択された組のうち、含まれている学習データの時系列が古い組から順に用いて、各組に含まれる学習用データが有する特徴をモデルに学習させる。
また、例えば、第1学習部135は、第2データ制御部134により分割された組ごとに、当該組に含まれる学習用データ(学習対象の学習用データ)が有する特徴を、所定の順序でモデルに学習させる。例えば、第1学習部135は、第2データ制御部134により分割された組のうち、時系列に応じた組から順に、当該組に含まれる学習用データが有する特徴をモデルに学習させる。一例として、第1学習部135は、第2データ制御部134により分割された組のうち、含まれている学習用データの時系列が最も古い組から順に、当該組に含まれる学習用データが有する特徴をモデルに学習させる。
また、第1学習部135は、第2データ制御部134により分割された組ごとに、当該組に含まれる学習用データが有する特徴を、ランダムな順序でモデルに学習させてもよい。
ここで、第1学習部135は、上記のようにして各モデルに対して学習用データの特徴を学習させる際に、現時点でシャッフルバッファ内に格納されている学習用データそれぞれについて、学習順をシャッフルする。そして、第1学習部135は、シャッフルにより得られた学習順を学習用データに対応付けることで、最終的な学習対象の学習用データを生成する。そして、第1学習部135は、シャッフルにより得られた学習順に、学習対象の学習用データ1つ1つ順に学習させてゆく。また、第1学習部135は、シャッフルに係るこの一連の処理を1エポックとして、例えば、指定された数のエポック数だけこの一連の処理を繰り返す。なお、第1学習部135は、エポックを更新する度に、学習順をシャッフルすることで、その都度、最終的な学習対象の学習用データを生成することができる。
例えば、第1学習部135は、第4の最適化アルゴリズムを用いて、シャフルバッファ内の学習用データをシャッフルするデータシャッフルの最適化を行う。
例えば、第1学習部135は、第4の最適化アルゴリズムを用いて、繰り返し学習のためのエポックごとに、エポック間での各学習用データに対応付けるランダム順序に偏りが生じないよう今回のエポックでの乱数シードを生成する。そして、第1学習部135は、生成した各乱数シードをランダム関数に入力することで、ランダム順序を生成する。また、第1学習部135は、生成したランダム順序を各学習対象の学習用データに対応付けることで、最終的な学習対象の学習データをシャッフルバッファ内で生成する。
そして、第1学習部135は、生成したランダム順序で、この最終的な学習対象の学習用データの特徴を順に各モデルに学習させる。具体的には、第1学習部135は、生成したランダム順序で学習対象の学習用データの特徴の学習が終了すれば(1エポック終了すれば)、再度、ランダム順序を生成し、生成したランダム順序で再び学習用データの特徴を各モデルに学習させるという次のエポックに移行する。
また、各モデルが、シャフルバッファサイズ内の学習用データの特徴を学習する実際の学習処理の中では、ハイパーパラメータを探索する試行が繰り返される。このとき、第1学習部135は、効率の良い探索を実現できるよう、よい結果を残すことが見込まれない試行については、最後まで試行を行うことなく早期に終了させる(枝狩りする)というearly stoppingに関する第5の最適化を行う。
第5の最適化によれば、第1学習部135は、生成部131により生成された複数のモデルそれぞれを対象に以下の処理を行う。例えば、試行とは、ハイパーパラメータの組合せごとに、当該ハイパーパラメータの組合せをモデルに適用し学習を繰り返すことで、ハイパーパラメータの組合せの中から最適な組合せを探索するものである。すなわち、試行とは、ハイパーパラメータの組についての最適化を行うものである。
このようなことから、第1学習部135は、各試行(ハイパーパラメータの組合せが異なる試行)のうち、当該試行に対応するハイパーパラメータの組合せでのモデルの精度を評価する評価値が所定の条件を満たす複数の試行を選択する。そして、第1学習部135は、選択した試行でのモデルについて、学習対象の学習用データが有する特徴を学習させることを継続する。
例えば、第1学習部135は、評価値の変化に基づく態様が所定の態様を満たすような複数の試行を選択する。例えば、第1学習部135は、学習対象の学習用データが有する特徴を所定の回数繰り返し学習させる間での評価値の変化に基づく態様が、所定の態様を満たすような複数の試行を選択する。例えば、第1学習部135は、利用者により指定された複数の条件を満たす試行を選択する。
一方で、第1学習部135は、各試行(ハイパーパラメータの組合せが異なる試行)のうち、当該試行に対応するハイパーパラメータの組合せでのモデルの精度を評価する評価値が所定の条件を満たさない試行については停止し(枝刈りし)、これ以上の試行を行わないようにする。
また、例えば、第1学習部135は、それぞれパラメータの組合せが異なる各試行と、学習対象の学習用データとの組合せごとに、学習が行われたモデルの精度に応じて、いずれかのモデルを選択することができる。
(モデル選択部136について)
モデル選択部136は、生成部131により生成された複数のモデルそれぞれの精度に基づいて、複数のモデルの中から最も精度が高いと評価されたモデル(ベストモデル)を選択する。例えば、モデル選択部136は、生成部131により生成された複数のモデルであって、最適化処理が適用された学習処理による学習済の各モデルの精度に基づき、生成された複数のモデルの中からベストモデルを選択する。例えば、モデル選択部136は、評価用データを用いて、各モデルの精度を算出し、精度の変動(精度の改善量)が高い程、より高い評価値を算出する。そして、モデル選択部136は、最も高い評価値が算出されたモデルをベストモデルとして選択する。
なお、モデル選択部136は、それぞれパラメータが異なるモデルと、学習用データとの組合せごとに、第1学習部135により学習が行われたモデルの精度に応じて、いずれかのモデルを選択してもよい。また、上記例では、第1学習部135が第5の最適化アルゴリズムを用いて試行の選択を行う例を示したが、モデル選択部136によって第5の最適化アルゴリズムを用いた試行の選択が行われてもよい。
(第2学習部137について)
第2学習部137は、例えば、図3のステップS21~S24で説明したチューニング処理を行う。具体的には、第2学習部137は、モデル選択部136により選択されたモデル(ベストモデル)に対して、最適化処理で用いられた学習用データを学習させる。このようなことから、第2学習部137は、最適化処理で用いられた学習用データを用いて、モデル選択部136により選択されたモデル(ベストモデル)の一部を変更して再学習させることで、係るモデルをよりサービス向けに微調整するチューニング処理を行う。
(提供部138について)
提供部138は、第2学習部137により性能を最大限まで向上されたベストモデルをサービング対象として処理する。具体的には、提供部138は、利用者からのアクセスに応じて、実施形態に係るファインチューニングにより性能が向上されたベストモデルを提供する。
(属性選択部139について)
学習済のモデルを利用してある対象(例えば、広告コンテンツに対するクリック率)を予測するといった場合、予測のために入力するデータのうち、特定の属性(例えば、カテゴリ)を有するデータについては入力せず(すなわちマスクし)、残りのデータのみを入力した方が全てのデータを入力する場合と比較してより正しい結果が得られることがある。
このため、入力候補のデータのうち、いずれの属性を有するデータを学習済のモデルに入力しないようにするかこの属性を決めることで学習済のモデルに入力すべきデータを最適化すれば、モデルの精度を高めることができると考えられる。よって、属性選択部139は、学習部(例えば、第1学習部135)により学習されたモデル(例えば、ベストモデル)に入力する入力候補のデータのうち、いずれの属性を有するデータをモデルに入力しないか非入力対象のデータで対象となる当該属性である対象属性を選択する。例えば、属性選択部139は、対象属性の組合せを選択する。
例えば、属性選択部139は、対象属性の組合せの候補ごとに、当該候補での対象属性を除く属性を有する学習用データをモデルに入力した際のモデルの精度を測定し、測定結果に応じて、当該候補の中から対象属性の組合せを選択する。
なお、提供部138は、属性選択部139により選択された対象属性以外の属性を示す情報も利用者に提供してもよい。例えば、提供部138は、属性選択部139により選択された対象属性以外の属性を示す情報として、属性選択部139により選択された対象属性を除く属性を有する学習用データをモデルに入力した際のモデルの精度に関する情報を提供する。
〔7.実施形態に係る最適化処理の一例〕
ここからは、実施形態に係る最適化アルゴリズムである、第1の最適化アルゴリズム、第2の最適化アルゴリズム、第3の最適化アルゴリズム、第4の最適化アルゴリズム、第5の最適化アルゴリズムそれぞれの一例を示す。
なお、図3の例では、第1の最適化アルゴリズム~第5の最適化アルゴリズムが一連の学習処理の中で連続して実行される例を示したが、第1の最適化アルゴリズム~第5の最適化アルゴリズムそれぞれは独立して実行されてもよいし、任意に組み合わされて実行されてもよい。例えば、図3に示したような学習処理の中において、第1の最適化アルゴリズムのみ実行されるような構成が採用されてもよいし、第2および第3のアルゴリズムのみが実行されるような構成が採用されてもよい。
〔7-1-1.第1の最適化アルゴリズムについて〕
ディープラーニングでは、モデルパラメータ(例えば、重みやバイアス)の更新を繰り返すことで最適なモデルパラメータが求められる。よって、モデルパラメータの更新が行われるよう予めモデルパラメータの初期値が設定されるが、この設定されるモデルパラメータの初期値によってニューラルネットワークの学習結果が変化してしまう。このため、適切な初期値が設定されるよう最適化を行う必要があると考えられる。
例えば、ディープラーニングでは、多くの場合はモデルパラメータの初期化等に疑似乱数を用いるが、初期値のばらつきが大きすぎても、小さすぎても学習速度は遅くなるし、モデルの精度は改善されない場合がある。このことから、モデルパラメータの初期値をより適切に設定することが重要となる。第1の最適化アルゴリズムは、モデルパラメータの初期値として、より適切な初期値を生成できるよう、擬似乱数の元となる乱数シード自体の最適化を行うためのアルゴリズムである。
このようなことから、生成部131は、第1の最適化アルゴリズムを用いて、モデルパタメータの初期値が完全にランダムであることにより各モデルパラメータの初期値にばらつきが生じることのないよう、モデルパラメータの初期値を生成する元となる乱数シードを最適化する。換言すると、生成部131は、生成されたモデルパラメータの分布が所定の分布に収まるよう乱数シードを最適化する。
例えば、生成部131は、モデルパラメータの初期値が所定範囲内の値となるような乱数シードを複数生成する。また、例えば、生成部131は、モデルパラメータの初期値の分布が所定の確率分布(例えば、一様分布や正規分布)を示すような乱数シードを複数生成する。また、例えば、生成部131は、各モデルパラメータの初期値を平均した平均値が所定値となるような乱数シードを複数生成する。
そして、生成部131は、生成した乱数シードごとに、当該乱数シードをランダム関数に入力することで、出力された乱数から各乱数シードに応じたモデルパラメータの初期値を生成する。
例えば、生成部131は、利用者からの指示に応じて、分布が一様分布を示すようなモデルパラメータを生成する場合、ランダム関数(初期化関数)として、Glorotの一様分布(Xavierの一様分布とも呼ばれる)による初期化のための初期化関数「glorot_uniform」を選択することができる。Glorotの一様分布とは、limitをsqrt(6 / (fan_in + fan_out))としたとき、[limit, -limit]を範囲とする一様分布に対応する。
また、例えば、生成部131は、利用者からの指示に応じて、分布が一様分布を示すようなモデルパラメータを生成する場合、ランダム関数(初期化関数)として、Heの一様分布による初期化のために初期化関数「he_uniform」を選択することもできる。Heの一様分布とは、limitをsqrt(6 / fan_in)としたとき、[limit, -limit]を範囲とする一様分布に対応する。
そして、生成部131は、選択した初期化関数に、上記生成した乱数シードを入力することにより出力された乱数(擬似乱数)から、モデルパラメータの初期値を生成する。また、ここで得られた乱数やモデルパラメータの分布は一様分布を示す。
また、生成部131は、モデルパタメータの初期値をそれぞれ有するモデルを生成する。具体的には、生成部131は、モデルパタメータの初期値ごとに、モデルを生成する。例えば、生成部131は、所定の分布(例えば、一様分布、正規分布、平均値)に収まっているモデルパラメータの初期値群のうち、組合せの異なるモデルパラメータの組ごとに、当該モデルパラメータの組を有するモデルを生成する。
〔7-1-2.第4の最適化アルゴリズムについて〕
モデルの学習を行うには、シャッフルバッファ内でデータがよくシャッフルされることが重要であると考えられるが、単にシャッフルされるだけでは、例えば学習順やバッチ毎のデータ分布に偏りが生じてしまい上手く学習されない場合がある。このような場合、モデルの精度を改善することができない。
このため、第1学習部135は、第4の最適化アルゴリズムを用いて、シャフルバッファ内の学習用データをシャッフルするデータシャッフルの最適化を行う。
具体的には、第1学習部135は、ランダム順序を生成する際に用いるシード値の最適化を行う。例えば、第1学習部135は、第4の最適化アルゴリズムを用いて、繰り返し学習のためのエポックごとに、エポック間での各学習用データに対応付けるランダム順序に偏りが生じないよう今回の学習での乱数シードを生成する。そして、第1学習部135は、生成した各乱数シードをランダム関数に入力することで、ランダム順序を生成する。また、第1学習部135は、生成したランダム順序を各学習対象の学習用データに対応付けることで、最終的な学習対象の学習データをシャッフルバッファ内で生成する。
この点について、例えば、第1学習部135は、繰り返し学習のためのエポックごとに、エポック間での各学習用データに対応付けるランダム順序に偏りが生じないよう、ランダム順序が所定の確率分布(例えば、一様分布や正規分布)を示すような乱数シードを複数生成する。
なお、第1学習部135は、例えば、dataset = dataset.shuffle(buffer_size, seed = seed, reshuffle_each_iteration = True)、といったデータシャッフルに関する最適化関数を用いて、現在のシャッフルバッファサイズに応じたデータシャッフルの最適化を行うことができる。
〔7-1-3.第1および第4の最適化アルゴリズムを用いた場合の実験結果の一例〕
続いて、図7~図9を用いて、第1および第4の最適化アルゴリズムを実行した場合における効果の一例について説明する。
図7は、第1および第4の最適化アルゴリズムを実行した場合におけるモデルの性能の変化を示す図(1)である。具体的には、図7では、同一のモデルに対して第1および第4の最適化アルゴリズムを実行した場合と実行しなかった場合とにおいてモデルの精度分布を比較した比較結果がヒストグラムで示される。
図7の例では、第1および第4の最適化アルゴリズムを実行した場合と実行しなかった場合とで、用いられる学習用データは統一されており、また、試行回数も同一回数(例えば、1000回)で統一されている。また、図7に示すヒストグラムは、横軸を再現率、縦軸を試行回数としてプロットして得られたものである。
図7に示されるヒストグラムでは、第1および第4の最適化アルゴリズムを実行しなかった場合、最もよい試行であっても再現率が「0.1793」であったことに対して、第1および第4の最適化アルゴリズムを実行した場合には、最もよい試行では再現率が「0.1840」まで向上したことが示されている。このようなことから、実験結果によれば、第1および第4のアルゴリズムを実行することによりモデルの精度が改善されることが解った。すなわち、実験結果から計算グラフとデータシャッフルの乱数シードを最適化すればモデルの性能が向上することが解った。
また、図8は、第1および第4の最適化アルゴリズムを実行した場合におけるモデルの性能の変化を示す図(2)である。具体的には、図8では、同一のモデルに対して第1および第4の最適化アルゴリズムを実行した場合と実行しなかった場合とにおいてモデルの精度がどのように推移してゆくかを比較したグラフが示される。また、図8に示すグラフは、横軸をエポック数、縦軸をアベレージロスとしてプロットして得られたものである。
図8に示されるグラフでは、第1および第4の最適化アルゴリズムを実行しなかった場合、学習が繰り返されることでアベレージロスが「0.008213」まで抑えられたことに対して、第1および第4の最適化アルゴリズムを実行した場合には、学習が繰り返されることでアベレージロスがさらに「0.008208」まで抑えられたことが示されている。このようなことから、実験結果によれば、第1および第4のアルゴリズムを実行することによりモデルの精度が改善されることが解った。すなわち、実験結果から計算グラフとデータシャッフルの乱数シードを最適化すればモデルの性能が向上することが解った。
また、第1の最適化アルゴリズム、および、第4の最適化アルゴリズムのうち、いずれか一方のみを実行する場合や、第1および第4の最適化アルゴリズム組合せて実行する場合で、モデルの性能が変化するかが検証された。図9は、第1および第4の最適化アルゴリズムの組合せに応じたモデルの性能を比較した比較例を示す図である。
図9では、横軸を再現率、縦軸を試行回数としてプロットして得られた3つのグラフ(グラフG91、グラフG92、グラフG93)が示されている。グラフG91、グラフG92、グラフG93では、いずれも、実験に用いられたモデル、学習用データ、試行回数は統一されている。
また、グラフG91は、第1の最適化アルゴリズムのみを実行した場合でのモデルの精度分布を示すヒストグラムである。グラフG92は、第4の最適化アルゴリズムのみを実行した場合でのモデルの精度分布を示すヒストグラムである。グラフG93は、第1および第4の最適化アルゴリズムを実行した場合でのモデルの精度分布を示すヒストグラムである。
そして、グラフG91~G93を比較すると、いずれもほぼ同様の精度分布であることがわかる。このようなことから、実験結果によれば、第1の最適化アルゴリズムのみを実行した場合と、第4の最適化アルゴリズムのみを実行した場合と、第1および第4の最適化アルゴリズムを実行した場合とで、モデルの性能に顕著な差はなく、いずれの場合であってもモデルの性能が維持されることが解った。
〔7-2.第2の最適化アルゴリズムについて〕
ディープラーニングでは、学習データセットがいくつかのサブセットに分割され、そして各サブセットがエポックの進行に応じて全て学習に回される。しかしながら、全てのサブセットをモデルの学習に用いる場合において最も性能のよいモデルが学習されるとは限らない。また、学習データが多い程、学習に費やされる時間やコンピュータリソース占有が問題となるため、学習に用いるべき効果的なサブセットを絞り込んで学習を効率化することが求められる。このような前提に基づき、実現されるに至った最適化処理が、第2の最適化アルゴリズムである。以下では、これまでに説明した第2の最適化アルゴリズムについて、より詳細な一例を図10で説明する。
図10は、第2の最適化アルゴリズムの一例を示す図である。なお、図10に示す一連の処理は、図3に示すステップS13での処理に対応する。
まず、取得部132は、学習データ記憶部121から学習用データを取得し、取得した学習用データを第1データ制御部133に出力する。第1データ制御部133は、取得部132から学習用データを受け付けると、第2の最適化アルゴリズムを用いて、以下の処理を実行する。
ここで、図6で説明した通り、学習用データは、時系列の概念を有する。より詳細には、学習用データ群は、所定数の学習用データで構成されるため、個々の学習用データには例えば履歴としての時間情報が対応付けられている。
したがって、まず、第1データ制御部133は、含まれる学習用データが時系列順に並ぶようソートする(S131)。次に、第1データ制御部133は、含まれる学習用データがソートされた状態の学習用データ群を所定数の組に分割する(ステップS132)。例えば、第1データ制御部133は、1組につき予め決められた数(例えば、利用者により指定された数)の学習用データが等しく含まれるよう、学習用データ群を所定数の組に分割することができる。また、第1データ制御部133は、1組につき予め決められた範囲内の数の学習用データが含まれるよう、学習用データ群を所定数の組に分割してもよい。
図10では、第1データ制御部133が、学習用データ群を分割することにより、各組に対応するデータファイルとして、「ファイル♯1」、「ファイル♯2」、「ファイル♯3」、「ファイル♯4」、「ファイル♯5」、「ファイル♯6」、「ファイル♯7」、「ファイル♯8」、「ファイル♯9」、「ファイル♯10」、「ファイル♯11」が得られた例が示される。
また、これら各データファイルには、学習用データが時系列順に並べられた状態で含まれている。このようなことから、図10の例によれば、データファイルのファイル番号が大きくなる程、含まれている学習用データの時系列がより新しくなる。例えば、1つの組である「ファイル♯2」と、他の1組である「ファイル♯3」とを比較した場合、「ファイル♯3」の方が、含まれている学習用データの時系列がより新しい組といえる。
次に、第1データ制御部133は、ステップS132での分割により得られた全ての組の中から、モデルの学習に用いる組を所定数選択する(ステップS133)。例えば、第1データ制御部133は、選択した組の数が所定数に達するまで、ステップS132での分割により得られた全ての組の中から、モデルの学習に用いる組をランダムに選択する。一例を示すと、第1データ制御部133は、予め決められた数(例えば、利用者により指定された数)になるまで、ステップS132での分割により得られた全ての組の中からランダムに組を選択する。あるいは、第1データ制御部133は、含まれている学習用データの時系列がより新しい組(図10の例では、ファイル♯11)から順に、予め決められた数(例えば、利用者により指定された数)になるまでランダムに組を選択する。図10には、初回のLoopにおいて、第1データ制御部133が、含まれる学習用データの時系列がより新しい組から順にランダムに選択するという選択順(時系列に応じた選択順)で、「ファイル♯11」、「ファイル♯9」、「ファイル♯8」、「ファイル♯6」といった4組を選択した例が示される。
また、後述するが、指定されたLoop回数に到達するまで、ステップS133からの処理が繰り返される。具体的には、ステップS132での分割により得られた組であって、現時点で未選択の組の中から、所定数に達するまでランダムに組を選択する、あるいは、ステップS132での分割により得られた組であって、現時点で未選択の組のうち、含まれている学習データの時系列がより新しい組から順に所定数に達するまでランダムに組を選択するという動作が、指定されたLoop回数に到達するまでLoopごとに繰り返される。したがって、例えば、2回目のLoopでは、「ファイル♯10」をはじめとしてランダムに例えば「ファイル♯7」、「ファイル♯5」、「ファイル♯4」が選択される可能性がある。
また、次に、第1データ制御部133は、ステップS133で選択した組をつなげることで1つのデータ群を生成する(ステップS134)。例えば、第1データ制御部133は、ステップS133で選択した組を選択順につなげることで1つのデータ群を生成する。また、ここでいう選択順とは、ステップS133での選択順に対応し、具体的には、含まれる学習用データの時系列が新しい順にモデルの学習に用いる組を選択するという選択順である。
また、第1データ制御部133は、生成したデータ群に含まれる学習用データが学習に用いられるよう、このデータ群を第2データ制御部134へと渡すことができる。図10の例では、第1データ制御部133が、生成したデータ群を格納した状態のデータファイルである「ファイル♯X」を第2データ制御部134へと渡した例が示される。図10に示すように、「ファイル♯X」の中では、「ファイル♯6」「ファイル♯8」、「ファイル♯9」、「ファイル♯11」という選択された順にこれら各ファイルが並べられる。すなわち、「ファイル♯X」の中では、学習用データは選択された順に並べられる。
〔7-3-1.第3の最適化アルゴリズムについて〕
ディープラーニングでは、モデルの学習を行う場合、データセットが適切にバッチ化され、繰り返し学習される、ということがモデルの精度を改善するうえで重要であると考えられる。また、学習データセットのバッチ化による各サブセットをどのような順で学習させるかこの順序もモデルの性能に寄与すると考えられる。このような前提に基づき、実現されるに至った最適化処理が、第3の最適化アルゴリズムである。以下では、これまでに説明した第3の最適化アルゴリズムについて、より詳細な一例を図11で説明する。
図11は、第3の最適化アルゴリズムの一例を示す図である。なお、図11では、第4の最適化アルゴリズムについても示す。また、図11に示す一連の処理は、図3に示すステップS13~S14にかけての処理に対応する。
例えば、第2データ制御部134は、第3の最適化アルゴリズムを用いて、シャフルバッファサイズの最適化を行う。例えば、第2データ制御部134は、シャフルバッファサイズの最適化として、シャッフルバッファのサイズに等しいサイズの学習用データを生成し、このデータを今回の繰り返し学習で用いられる学習用データである学習対象の学習用データとしてシャッフルバッファに格納する。例えば、第2データ制御部134は、係る処理の一例として、以下に示すような処理を図10のステップS134に引き続き実行する。
例えば、第2データ制御部134は、「ファイル♯X」として1まとまりにされている学習用データ群(ここでは、各学習用データは選択された順に並べられている)を所定数の組に分割する(ステップS135)。例えば、第2データ制御部134は、1組につき予め決められた数(例えば、利用者により指定された数)の学習用データが等しく含まれるよう、学習用データ群を所定数の組に分割することができる。また、第2データ制御部134は、1組につき予め決められた範囲内の数の学習用データが含まれるよう、学習用データ群を所定数の組に分割してもよい。
例えば、利用者は、上限(maxValue)、下限(minValue)、minimumUnit、等の各種のハイパーパラメータを用いて、「ファイル♯X」に含まれる学習用データ群をどのように分割するかその分割内容を指定することができる。換言すると、利用者は、上記のハイパーパラメータ等を用いてシャフルバッファサイズを指定することができる。したがって、第2データ制御部134は、利用者により指定された分割内容に基づき、シャッフルバッファサイズを最適化することができる。例えば、第2データ制御部134は、利用者により指定された分割内容に応じたシャッフルバッファサイズを選択し、選択したシャッフルバッファサイズに合わせて、「ファイル♯X」に含まれる学習用データ群を分割する。
例えば、上記のハイパーパラメータ等を用いて、「10,000」レコード分を格納可能なシャッフルバッファサイズを、「2,500」レコード分に対応するシャッフルバッファサイズへと最適化するよう規定されているとする。係る場合、第2データ制御部134は、10,000の学習用データ群を、2,500ずつの学習用データ群に分割する。
ここで、1組につきどれだけの数の学習用データが含まれるように分割するか、すなわちシャッフルバッファサイズをどのように設定するかによってモデルの精度が変化することが実験によって明らかになった。この実験による実験結果については図12で説明するが、例えば、第3の最適化アルゴリズムには、この実験結果が反映されてもよい。具体的には、第2データ制御部134は、図12に示す実験結果が反映された第3の最適化アルゴリズムを用いて、シャッフルバッファサイズ(1組に含める学習用データの数)を最適化してもよい。
また、図11では、第2データ制御部134が、「ファイル♯X」に含まれる学習用データ群を分割することにより、学習用データ群♯1(Data♯1)、学習用データ群♯2(Data♯2)、学習用データ群♯3(Data♯3)、学習用データ群♯4(Data♯4)、という4組の学習用データ群を得た例が示される。また、図11の例によれば、第2データ制御部134によって、学習用データ群♯1は「ファイル♯X1」に格納され、学習用データ群♯2は「ファイル♯X2」に格納され、学習用データ群♯3は「ファイル♯X3」に格納され、学習用データ群♯4は「ファイル♯X4」に格納されている。
また、図11の例によれば、ステップS135での分割により学習用データ群の組が得られた順(分割順)に、上から各学習用データ群が並べられている例が示される。
次に、第2データ制御部134は、ステップS135での分割により得られた組であって、現時点で学習に用いられていない未処理の組のうち、分割順に応じた1組を抽出し、抽出した1組を、今回の繰り返し学習で用いられる学習用データである学習対象の学習用データとしてシャッフルバッファに格納する(ステップS136)。
図11の例によれば、第2データ制御部134は、分割により最初に得られた組である「ファイル♯X1」を抽出する。そして、第2データ制御部134は、抽出した「ファイル♯X1」に含まれる学習用データを学習対象の学習用データとしてシャッフルバッファに格納する。
また、ステップS136のようにして、第3の最適化アルゴリズムにより最適化されたシャッフルバッファサイズに応じたサイズ(数)の学習用データがシャッフルバッファに格納されたことに応じて、第1学習部135は、ステップS136に引き続き以下のような処理を実行する。
具体的には、第1学習部135は、第4の最適化アルゴリズムを用いて、シャッフルバッファ内に格納されている学習対象の学習用データをシャッフルするデータシャッフルの最適化を行う。そして、第1学習部135は、最適化により生成した最終的な学習対象の学習用データを各モデルに学習させる。
例えば、第1学習部135は、第4の最適化アルゴリズムを用いて、学習順をランダムに決定することで最終的な学習対象の学習データを生成する(ステップS141)。つまり、第1学習部135は、第4の最適化アルゴリズムを用いて、ランダム順序を決定することで最終的な学習対象の学習データを生成する。
具体的には、第1学習部135は、第4の最適化アルゴリズムを用いて、繰り返し学習のためのエポックごとに、エポック間での各学習用データに対応付けるランダム順序に偏りが生じないよう今回の学習での乱数シード(ランダム順序の元となるシード)を生成する。そして、第1学習部135は、生成した各乱数シードをランダム関数に入力することで、ランダム順序を生成する。また、第1学習部135は、生成したランダム順序を各学習対象の学習用データに対応付けることで、最終的な学習対象の学習データをシャッフルバッファ内で生成する。
次に、第1学習部135は、ステップS141で生成した学習順(ランダム順序)で、学習対象の学習用データ(シャッフルバッファに格納されている、「ファイル♯X1」に含まれる学習用データ)の特徴を順に各モデルに学習させる(ステップS142)。
ここで、第1学習部135は、ステップS136からS142を1エポックとして、ステップS135での分割により得られた組を対象として、予め決められた数のエポック数繰り返し学習を行う。具体的には、第1学習部135は、ステップS136からS142を1エポックとして、ステップS135での分割により得られた組を用いて、利用者により指定されたエポック数だけ繰り返し学習を行う。
このため、第1学習部135は、まず、ステップS135での分割により得られた組の全てを1エポック分処理できたか否かを判定している(ステップS143)。具体的には、第1学習部135は、ステップS135での分割により得られた組(図11の例では、「ファイル♯X1」~「ファイル♯X4」)の全てが、ステップS136からS142を1エポックとする学習に用いられたか否かを判定している。
第1学習部135は、ステップS135での分割により得られた組の全てを1エポック分処理できていないと判定している間は(ステップS143;No)、ステップS136からステップS142にかけての一連の処理を繰り返えさせる。
また、第1学習部135は、ステップS135での分割により得られた組の全てを1エポック分処理できたと判定すると(ステップS143;Yes)、次に、ステップS135での分割により得られた組を対象として、指定されたエポック数に到達したか否かを判定する(ステップS144)。具体的には、第1学習部135は、ステップS135での分割により得られた組を用いて、指定(例えば、利用者指定)されたエポック数だけ繰り返し学習が行われたか否かを判定する。
第1学習部135は、指定されたエポック数に到達していないと判定している間は(ステップS144;No)、ステップS136からステップS142にかけての一連の処理を繰り返させる。
一方、モデル選択部136は、指定されたエポック数に到達したと判定された場合には(ステップS144;Yes)、現時点での学習済の各モデルの精度に基づき、現時点でのベストモデルを選択する(ステップS145)。例えば、モデル選択部136は、評価用データを用いて、各モデルの精度を算出し、精度の変動(精度の改善量)が高い程、より高い評価値を算出する。そして、モデル選択部136は、最も高い評価値が算出されたモデルをベストモデルとして選択する。なお、ベストモデルを選択するための手法は、係る手法に限定されない。また、より精度の高いモデルが得られるよう、指定されたLoop回数に到達するまで、ステップS133からの一連の処理が繰り返される。
このため、第1学習部135は、次に、ステップS133から処理を繰り返させる(Loopさせる)回数であるLoop回数に到達したか否かを判定する(ステップS146)。Loop回数は、利用者によって指定可能なハイパーパラメータである。
よって、第1学習部135は、指定されたLoop回数に到達していないと判定している間は(ステップS146;No)、ステップS136からの一連の処理を繰り返させる。この点について、図10の例を用いてより詳細に説明する。
例えば、指定されたLoop回数に到達していないと判定された場合、第1データ制御部133は、ステップS132での分割により得られた組であって、指定されたLoop回数に到達するまでの現時点で未選択の組をランダムに順に選択するというステップS133の処理を行う。ここで、例えば、2回目以降のLoopで実行されるステップS133以降の処理では、ベストモデルが学習に用いた組が保持される。具体的には、2回目以降のLoopで実行されるステップS133以降の処理では、ベストモデルが学習に用いた組に対して、新たに学習に用いるデータの組が追加される形となる。このようなことから、第1データ制御部133は、2回目以降のLoopでは、ベストモデルが学習に用いた組に対して追加される学習用データの組を選択する。
また、上記例の通り、例えば、2回目のLoopでは、「ファイル♯10」をはじめとして、ランダムに「ファイル♯7」、「ファイル♯5」、「ファイル♯4」が選択される可能性がある。
また、これまでの例によれば、モデル選択部136は、指定されたLoop回数に到達した場合には、この時点で最も精度が高くなっているモデルを選択することができるようになる。
〔7-3-2.第3の最適化アルゴリズムに関する実験結果の一例〕
また、第3の最適化アルゴリズムを適用するにあたって、1組につきどれだけの数の学習用データが含まれるように分割するか、すなわちシャッフルバッファサイズをどのように最適化することがモデルの精度向上に効果的であるかが実験により検証された。図12は、シャッフルバッファサイズごとにモデルの性能を比較した比較例を示す図である。
図12では、横軸を再現率、縦軸を試行回数としてプロットして得られた5つのグラフ(グラフG121、グラフG122、グラフG123、グラフG124、グラフG125)が示されている。グラフG121~G125では、いずれも、実験に用いられたモデル、学習用データ、試行回数は統一されている。
また、グラフG121は、学習用データを含むある1組を対象にシャッフルバッファサイズを「1,000K」に設定した場合でのモデルの精度分布を示すヒストグラムである。グラフG122は、同様のある1組を対象にシャッフルバッファサイズを「2,000K」に設定した場合でのモデルの精度分布を示すヒストグラムである。グラフG123は、同様のある1組を対象にシャッフルバッファサイズを「3,000K」に設定した場合でのモデルの精度分布を示すヒストグラムである。グラフG124は、同様のある1組を対象にシャッフルバッファサイズを「4,000K」に設定した場合でのモデルの精度分布を示すヒストグラムである。グラフG125は、同様のある1組を対象にシャッフルバッファサイズを「6,000K」に設定した場合でのモデルの精度分布を示すヒストグラムである。
そして、グラフG121~G125を比較すると、それぞれでモデルの精度が異なることが解る。このことは、シャッフルバッファサイズを最適化することによりモデルの性能が向上することを示唆している。したがって、第3の最適化アルゴリズムを実行することでシャッフルバッファサイズを最適化すればモデルの性能が改善される可能性があることが解った。また、第3の最適化アルゴリズムは、図12に示すような実験結果が得られたことから想起された着想ともいえる。
また、第3の最適化アルゴリズムは、図12に示す実験結果が反映されたものであってもよい。具体的には、第2データ制御部134は、図12に示す実験結果が反映された第3の最適化アルゴリズムを用いて、シャッフルバッファサイズ(1組に含める学習用データの数)を最適化してもよい。
この点について、図12の例では、データレコードの数が「5,518K」であるため、この全てのデータを格納可能なシャッフルバッファサイズである「6,000K」の場合が最もモデルの性能が良くなると予想された。しかしながら、図12に示すように、実際には、シャッフルバッファサイズ「2,000K」の場合が最もモデルの性能が向上する可能性があることが今回の実験により判明した。よって、このような実験結果に基づき、例えば、第3の最適化アルゴリズムは、シャッフルバッファサイズを「2,000K」に最適化するアルゴリズムであってもよい。また、第3の最適化アルゴリズムは、学習用データのトータルサイズ(総数)に対する1/3のサイズをシャッフルバッファサイズとして最適化するアルゴリズムであってもよい。
また、図11の例を用いると、利用者は、このような実験結果に基づき、「ファイル♯X」に含まれる学習用データ群をどのように分割するか分割内容を適切に検討することができるようになる。例えば、利用者は、上限(maxValue)、下限(minValue)、minimumUnit、等の各種のハイパーパラメータとしてより最適な値を検討することができるようになる。
〔7-4-1.第5の最適化アルゴリズムについて〕
また、ディープラーニングでは、目的の精度や汎化性能をもとめて、モデルの学習を繰り返し最適なハイパーパラメータが探索されるが、用いられるアルゴリズムやデータ量、計算環境によっては一回の試行が数時間に及ぶこともある。例えば、グリッドサーチでは、取りうる範囲のハイパーパラメータが全て探索されることで、最適なパラメータが選出される。係る場合、ハイパーパラメータの種類が増えると組合せ数が増大してしまい、時間やコンピュータリソース占有などが問題となる。このような前提に基づき、実現されるに至った最適化処理が、第5の最適化アルゴリズムである。以下では、これまでに説明した第5の最適化アルゴリズムについて、より詳細な一例を図13で説明する。
図13は、第5の最適化アルゴリズムに関する条件情報一例を示す図である。学習処理の中では、ハイパーパラメータを探索する試行が繰り返されるが効率の良い探索を実現できるよう、枝刈りによる試行の最適化として第5の最適化アルゴリズムを実行される。具体的には、第1学習部135は、第5の最適化アルゴリズムを用いて、よい結果を残すことが見込まれない試行については、最後まで行うことなく早期に終了させる(early stopping)という試行の最適化を行う。
そして、例えば、情報処理装置100は、利用者に対して、early stoppingの対象(早期に終了させる対象)となる試行を条件付ける制約条件をモデルの精度を評価する評価値の観点から設定させることができる。例えば、情報処理装置100は、係る制約条件を複数組み合わせるように設定させることができる。図13には、利用者が設定可能な制約条件の一例が示される。なお、図13に示す制約条件は一例に過ぎず、利用者は任意の制約条件を任意の数組合わせて情報処理装置100に設定することができる。また、図5では不図示であるが、情報処理装置100は、制約条件の設定を受け付ける受付部をさらに有してもよい。
また、第1学習部135は、各試行(ハイパーパラメータの組合せが異なる試行)ごとに、当該試行に対応するハイパーパラメータの組合せでの評価値(モデルの精度を評価する評価値)が制約条件を満たしたか否かを判定し、制約条件を満たしたと判定した時点で判定対象となった試行を停止する。そして、第1学習部135は、停止しなかった残りの試行のみ継続させる。
ここからは、図13に示す制約条件について説明する。図13には、学習処理が全エポックに到達するよりも早期に停止する(枝刈りする)試行を条件付ける停止条件(制約条件)の一例が示される。具体的には、図13には、停止条件C1~C5の5つが示されている。
停止条件C1によれば、「function : stop_if_no_decrease_hook」、「mtric_name : avarage_loss」、「max_epochs_without_decrease : 3」、「min_epochs : 1」といった内容で条件設定されている。係る例は、停止条件C1が、「最大3エポックの間で、average lossが減少しなかった(精度が改善しなかった)試行を停止するよう条件付ける」ものであることを示す。
また、停止条件C2によれば、「function : stop_if_no_decrease_hook」、「mtric_name : auc」、「max_epochs_without_increase : 3」、「min_epochs : 1」といった内容で条件設定されている。係る例は、停止条件C2が、「最大3エポックの間で、aucが増加しなかった(精度が改善しなかった)試行を停止するよう条件付ける」ものであることを示す。
また、停止条件C3によれば、「function : stop_if_lower_hook」、「mtric_name : accuracy」、「threshold : 0.8」、「min_epochs : 3」といった内容で条件設定されている。係る例は、停止条件C3が、「3エポック以降で、accuracyが閾値0.8を超えていない試行を停止するよう条件付ける」ものであることを示す。
また、停止条件C4によれば、「function : stop_if_higher_hook」、「mtric_name : loss」、「threshold : 300」、「min_epochs : 5」といった内容で条件設定されている。係る例は、停止条件C4が、「5エポック以降で、lossが閾値300を超えている試行を停止するよう条件付ける」ものであることを示す。
また、停止条件C5によれば、「function : stop_if_not_in_top_k_hook」、「mtric_name : auc」、「top_k : 10」、「epochs : 3」といった内容で条件設定されている。係る例は、停止条件C5が、「3エポックの時点で、aucが上位10位内に入っていない試行を停止するよう条件付ける」ものであることを示す。
〔7-4-2.第5の最適化を用いた場合の実験結果の一例〕
続いて、図14を用いて、第5の最適化アルゴリズムを用いて、試行の停止が行われる処理の一例について説明する。図14は、第5の最適化アルゴリズムの一例を示す図である。また、図14の例では、停止条件C6およびC7を組み合わされた状態で第5の最適化アルゴリズムが適用される場面が示される。
停止条件C6によれば、「function : stop_if_not_in_top_k_hook」、「mtric_name : recall」、「top_k : 8」、「epochs : 3」といった内容で条件設定されている。係る例は、停止条件C6が、「3エポックの時点で、recallが上位8位内に入っていない試行を停止するよう条件付ける」ものであることを示す。
停止条件C7によれば、「function : stop_if_not_in_top_k_hook」、「mtric_name : recall」、「top_k : 4」、「epochs : 6」といった内容で条件設定されている。係る例は、停止条件C7が、「6エポックの時点で、recallが上位4位内に入っていない試行を停止するよう条件付ける」ものであることを示す。
また、図14には、所定数(例えば16)のデバイスを用いて、ハイパーパラメータの組合せが異なる個々の試行が並行処理されている状態で、第1学習部135が、試行ごとに、当該試行に対応するハイパーパラメータの組合せでの評価値(モデルの精度を評価する評価値)である再現率の変動を監視し、再現率の変動に基づく態様(図14の例では、試行の順位)が停止条件C6およびC7を満たすか否かを判定している例が示される。
このような状態において、第1学習部135は、停止条件C6に基づき、3エポックの時点で、recallが上位8位内に入っていない試行を停止させる。また、第1学習部135は、6エポックの時点で、recallが上位4位内に入っていない試行を停止させる。
このように、第5の最適化アルゴリズムを用いて、モデルの性能向上が見込めないような試行を早期に停止させるという試行の最適化を行った場合、処理時間が45%改善することが実験結果から解った。具体的には、モデルの性能向上が見込めないような試行を条件付ける複数の停止条件を組合せて当該試行を早期に停止させるという第5の最適化アルゴリズムにより、処理時間が45%改善することが実験結果から解った。また、このようなことから、第5の最適化アルゴリズムによれば、時間やコンピュータリソース占有などいった課題を解決することができる。
また、利用者は、効率的にコンピュータリソースを使用できるよう効果的な停止条件を設定することが求められる場合がある。このようなことから、情報処理装置100は、どのような停止条件を設定すべきか利用者が検討できるよう支援する情報提供を行ってもよい。例えば、情報処理装置100は、最適化の状況を利用者が視認できるよう、試行ごとの現在の最適化状況が表示された画面を提供する。例えば、情報処理装置100は、利用者が有する端末装置3からのアクセスに応じて、試行ごとの現在の最適化状況が表示された画面を端末装置3に配信することができる。
このような情報処理装置100によれば、モデルの性能向上が見込めないような試行を視覚的に容易に認識することができるようになるため、モデルの性能向上が見込めないような試行を早期に停止させるにはどのような停止条件を設定すべきか効果的な停止条件を検討することができるようになる。
なお、最適化状況が表示された画面の提供は、例えば提供部138によって行われてもよいし、その他の処理部によって行われてもよい。
〔7-5-1.マスク対象の最適化について〕
これまで、学習手法を最適化するアルゴリズムとして、第1の最適化アルゴリズム~第5の最適化アルゴリズムを示した。情報処理装置100は、これらの最適化以外にも、学習済のモデルに入力する入力候補のデータのうち、どのデータをモデルに入力しないようにするかマスク対象のデータを最適化してもよい。具体的には、情報処理装置100は、マスク対象を最適化するアルゴリズムを用いて、学習済のモデルに入力する入力候補のデータの中から、モデルに入力しない非入力対象のデータを選択する。
例えば、学習済のモデルを利用してある対象を予測するといった場合、予測のために入力するデータのうち、特定の属性(例えば、カテゴリ)を有するデータについては入力せず(すなわちマスクし)、残りのデータのみを入力した方が全てのデータを入力する場合と比較してより正しい結果が得られることがある。換言すると、学習済のモデルの精度は、全てのデータが入力されるより、特定の属性(例えば、カテゴリ)を有するデータについては入力せず(すなわちマスクし)、残りのデータのみを入力した方が精度を向上させられる場合がある。
これによれば、入力候補のデータのうち、いずれの属性を有するデータを学習済のモデルに入力しないようにするかこの属性を決めることで学習済のモデルに入力すべきデータを最適化する必要があると考えられる。このような前提に基づき、実現されるに至った最適化処理が、マスク対象の最適化アルゴリズムである。
例えば、属性選択部139は、マスク対象の最適化アルゴリズムを用いて、学習済のモデルに入力する入力候補のデータのうち、いずれの属性を有するデータを係るモデルに入力しないか非入力対象のデータで対象となる当該属性である対象属性を選択する。例えば、属性選択部139は、対象属性の組合せの候補ごとに、当該候補での対象属性を除く属性を有する学習用データをモデルに入力した際のモデルの精度を測定し、測定結果に応じて、当該候補の中から対象属性の組合せを選択する。
ここで、例えば、モデル選択部136により選択されたベストモデルを用いて、ある対象(例えば、広告のクリック率)を予測する場合について、予測に用いるテスト用データのうち、特定の属性を有するデータについては非入力対象のデータとし、非入力対象のデータを除く残りのテスト用データのみをベストモデルに入力した方が、全てのテスト用データを入力するよりも良い予測結果が得られるとの仮説が立てられた。
図15では、係る仮説に基づきマスク対象の最適化アルゴリズムの効果が検証された実験結果を用いて、マスク対象の最適化が行われる一例について説明する。図15は、マスク対象を最適化する最適化アルゴリズムの一例を示す図である。
ここで、これまでの最適化処理で用いられた学習用データ(評価用データでもよい)は、複数の属性を有する。例えば、学習用データには、「ビジネス」に関する学習用データ、「経済」に関する学習用データ、「ジェンダー」に関する学習用データ、「利用者の興味関心」に関する学習用データ等の各種のカテゴリに分類される。よって、学習用データは、例えば、このようなカテゴリとしての属性を有する。
そこで、属性選択部139は、例えば、学習用データが有するカテゴリについて成立する、カテゴリの組合せごとに、当該組合せでのカテゴリを除くその他のカテゴリに含まれる学習用データをベストモデルに入力した際のモデルの精度(再現率)を測定する。そして、属性選択部139は、測定結果に応じて、例えば、最も高い精度が得られたとき、カテゴリの組合せのうち、どの組合せを除いていたかに基づいて、この学習用データと対になるテスト用データ(図6より)のうち、いずれのカテゴリ(属性)に含まれるデータをベストモデルに入力しないか非入力対象のデータで対象となるこのカテゴリである対象カテゴリ(対象属性)を選択する。
また、このようなことから、属性選択部139は、マスクするとモデルの性能が向上するカテゴリ(属性)の組合せを自動探索するものである。例えば、属性選択部139は、遺伝的アルゴリズムを用いて、マスクするとモデルの性能が向上するカテゴリ(属性)の組合せを探索することができる。
図15では、属性選択部139による探索(試行)ごとに、当該試行での再現率がプロットされた。また、図15には、最も高い精度が得られた際の、属性の組合せ例が示される。説明の便宜上、係るカテゴリの組合せを「組合せCB」と定める。
そうすると、属性選択部139は、最も高い精度が得られたとき、カテゴリの組合せのうち、組合せCBを除いていたことから、組合せCBでのカテゴリに含まれるデータをベストモデルに入力しない非入力対象のデータと定める。すなわち、属性選択部139は、カテゴリの組合せのうち、組合せCBを対象属性として選択することで、ベストモデルにテスト用データを入力する際には、組合せCBでのカテゴリに含まれるデータをマスクすることを決定する。
また、提供部138は、属性選択部139により選択されたカテゴリ以外のカテゴリを示す情報と、ベストモデルとを提供することができる。属性選択部139により選択されたカテゴリ以外のカテゴリを示す情報とは、例えば、属性選択部139により選択されたカテゴリ以外のカテゴリに含まれる学習用データをベストモデルに入力した際のベストモデルの精度に関する情報であり、例えば、図15に示される再現率であってよい。
また、マスク対象の最適化に応じて係る情報提供が行われることによれば、例えば、利用者はベストモデルを用いて対象を予測したい場合に、自身が用意したテスト用のデータの全てのデータを入力するのではなく、特定の属性を有するデータについてはマスクし、残りのデータのみ入力すればよいことを知ることができる。また、この結果、利用者は、テスト用のデータの全てを用いる場合よりもより正当な予測結果を得ることができるようになる。また、このようなことから、マスク対象を最適化する最適化機能を有する情報処理装置100により、学習済のモデルを用いて利用者がより正当な結果を得られるよう支援することができる。
〔7-5-2.マスク対象の最適化を用いた場合の実験結果の一例〕
上記説明したように、マスク対象の最適化が実行される場合、テスト用データの一部が入力されないことになるため、実際に入力されるテスト用データの数が、マスク対象の最適化を行わない当初より少なくなる。そこで、マスク対象の最適化により、入力されるテスト用データの数が少なくなることで、モデルの精度に影響が出てしまわないか検証する実験が行われた。図16は、マスク対象の最適化を実行した場合と、マスク対象の最適化を実行しない場合とで、モデルの精度を比較した比較例を示す図である。
図16では、学習の際に用いられた評価用データを用いてモデルが評価された評価結果(再現率)と、評価用データに対してマスク対象の最適化が行われたことで選択された属性を有するデータが除外された残りのデータをテスト用データとして用いてモデルが評価された評価結果(再現率)とが比較された。そして、図16に示す比較例によれば、マスク対象の最適化を実行してもモデルの汎用性が維持されることが実験から解った。
なお、上記例では、情報処理装置100が、学習済のモデルに入力する入力候補のデータのうち、いずれの属性を有するデータを学習済のモデルに入力しないかこの属性を決定することで、決定した属性を有するデータについてはマスクし、決定した属性以外の属性を有するデータのみが利用されるよう制御する例を示した。しかしながら、情報処理装置100は、このように学習済のモデルに入力する入力候補のデータのいくつかがマスクされるよう制御するのではなく、例えば、上記説明した第5の最適化アルゴリズムを用いた学習が行われる中でマスク対象の最適化を利用した学習が行われるよう制御してもよい。
具体的には、情報処理装置100は、精度が所定の条件を満たす複数のモデルでの対象属性の組合せに基づいて、対象属性の新たな組合せを複数決定し、決定した組合せでの対象属性を除く属性を有する学習データを複数のモデルに入力した際の各モデルの精度がこの所定の条件を満たすか否か判定する判定部をさらに有する。そして、第1学習部135は、判定部により所定の条件を満たすと判定されたモデルに対して、学習データを学習させる。なお、第1学習部135はこの判定部の処理を行ってもよい。
〔8.実行制御装置の構成〕
これまで、第1の最適化アルゴリズム~第5の最適化アルゴリズム、および、マスク対象の最適化アルゴリズムを行う機能であるオプティマイザーOP機能を有する情報処理装置100に焦点を当てて説明してきた。ここからは、実行制御装置200について説明する。まず、実行制御装置200が実現されるに至った背景として以下のようなものがある。
例えば、学習済のモデルを用いてある対象が予測される場合を例に挙げると、学習済のモデルを用いて任意の画像データが正解画像データと同じであるか否かがコンピュータによって予測処理される。係る予測処理には、例えば、画像すなわちピクセルの二次元配列から特徴を抽出する処理、別の画像から特徴が一致する部分を検出する処理等といった複数の処理が含まれる。
予測処理に含まれる各処理は、コンピュータが有するプロセッサによって実行されるが、プロセッサを構成するデバイスのうちどのデバイスがどの処理を行うかによって予測処理の全体に費やされる処理時間は変化する。
このため、予測処理の全体に費やされる処理時間をより短縮させるためには、予測処理に含まれる処理ごとに当該処理を実行するに最適なデバイス(演算装置)が割り当てられるよう処理の実行主体を最適化することが重要となる。しかしながら、コンピュータが最適な実行主体を動的に判断することは不可能である。
このような前提に基づき、実行制御装置200は、モデルを用いた処理(例えば、特定の対象を予測する処理)を実行させる実行主体を最適化する処理を行う。具体的には、実行制御装置200は、学習済のモデルの特徴に基づいて、係るモデルを用いた処理(例えば、特定の対象を予測する処理)を実行させる実行主体を決定することで実行主体を最適化する。したがって、実行制御装置200は、実行主体の最適化アルゴリズムを有する。
まず、図17を用いて、実施形態に係る実行制御装置200について説明する。図17は、実施形態に係る実行制御装置200の構成例を示す図である。図17に示すように、実行制御装置200は、通信部210と、記憶部220と、制御部230とを有する。
(記憶部220について)
記憶部220は、例えば、RAM、フラッシュメモリ等の半導体メモリ素子またはハードディスク、光ディスク等の記憶装置によって実現される。記憶部120は、モデルアーキテクチャ記憶部221を有する。
(モデルアーキテクチャ記憶部221について)
モデルアーキテクチャ記憶部221は、ニューラルネットワークのアーキテクチャを記憶する。ここで、図18に実施形態に係るモデルアーキテクチャ記憶部221の一例を示す。図18の例では、モデルアーキテクチャ記憶部221は、「モデルID」、「アーキテクチャ情報」といった項目を有する。
「モデルID」は、モデルを識別する識別情報を示す。「アーキテクチャ情報」は、「モデルID」により識別されるモデルの特徴を示す情報である。具体的には、「アーキテクチャ情報」は、「モデルID」により識別されるモデルによる学習の仕組みを含む全体的な構造を示す情報である。
図18の例では、モデルID「MD♯1」と、アーキテクチャ情報「アーキテクチャ♯1」が対応付けられた例が示されている。係る例は、モデルID「MD♯1」で識別されるモデルのアーキテクチャが「アーキテクチャ♯1」である例を示す。なお、図18では、ニューラルネットワークのアーキテクチャを「アーキテクチャ♯1」にように概念的に示しているが、実際には、ニューラルネットワークのアーキテクチャを示す正当な情報が登録される。
(制御部230について)
制御部230は、CPUやMPU等によって、実行制御装置200内部の記憶装置に記憶されている各種プログラムがRAMを作業領域として実行されることにより実現される。また、制御部130は、例えば、ASICやFPGA等の集積回路により実現される。
図17に示すように、制御部230は、特定部231と、決定部232と、実行制御部233とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部230の内部構成は、図17に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。また、制御部230が有する各処理部の接続関係は、図17に示した接続関係に限られず、他の接続関係であってもよい。
(特定部231について)
特定部231は、それぞれアーキテクチャが異なる複数の演算装置が所定の処理(例えば、モデルを用いた推定等の処理)を実行する際に用いるモデル(学習済のモデル)の特徴を特定する。例えば、特定部231は、モデルの特徴として、モデルとして実行される複数の処理の特徴を特定する。
(決定部232について)
決定部232は、特定部231により特定されたモデルの特徴に基づいて、モデルを用いた処理を複数の演算装置のうちのいずれに実行させるか実行対象の演算装置を決定する。例えば、決定部232は、特定部231により特定された複数の処理の特徴に基づいて、複数の処理ごとに、当該処理を実行させる実行対象の演算装置を複数の演算装置のうちのいずれから決定する。
例えば、決定部232は、複数の演算装置として、同一のデータを用いて同一の処理を実行した際に同一の値の出力が保証された第1の演算装置、および、同一のデータを用いて同一の処理を実行した際に同一の値の出力が保証されない第2の演算装置のいずれから、実行対象の演算装置を決定する。
また、例えば、決定部232は、複数の演算装置として、スカラー演算を行う第1の演算装置、および、ベクトル演算を行う第2の演算装置のいずれから、実行対象の演算装置を決定する。
また、例えば、決定部232は、複数の演算装置として、アウトオブオーダー方式が採用された第1の演算装置、および、アウトオブオーダー方式が採用されていない第2の演算装置のいずれから、実行対象の演算装置を決定する。
すなわち、決定部232は、第1の演算装置としてブランチプレディクション機能を有する中央演算装置(CPU)、および、第2の演算装置としてブランチプレディクション機能を有しない画像演算装置(GPU)のいずれから、実行対象の演算装置を決定する。例えば、決定部232は、モデルが多クラス分類用のモデルである場合には、画像演算装置を実行対象の演算装置として決定する。一方、決定部232は、モデルが2クラス分類用のモデルである場合には、中央演算装置を実行対象の演算装置として決定する。
(実行制御部233について)
実行制御部233は、決定部232により決定された演算装置にモデルを用いた処理を実行させる。
〔9-1.実行制御装置の動作の一例〕
ここからは、実行主体の最適化アルゴリズムを用いて実行制御装置200が行う処理の一例について説明する。
例えば、利用者は、これまで説明してきた情報処理装置100によるファインチューニングによって性能を高められたモデルを本番環境(例えば、サーバやエッジデバイス)で運用したいとする。具体的には、利用者は、情報処理装置100によるファインチューニングによって性能を高められたモデルを所定のサービスに対応するサーバで運用したいとする。
以下では、係るモデル(例えば、ベストモデル)が、多クラス分類用のモデルであるモデルMD1(モデルID「MD♯1」により識別されるモデル)である場合(パターンPT1)と、2クラス分類用のモデルであるモデルMD2(モデルID「MD♯2」により識別されるモデル)である場合(パターンPT2)とに分けて説明する。
なお、モデルMD1を用いた処理、モデルMD2を用いた処理の双方とも、所定の対象を予測する予測処理であるものとする。また、上記例によれば、モデルMD1を用いた予測処理、および、モデルMD2を用いた予測処理は、利用者の本番環境に対応するサーバ(例えば、APIサーバ)によって行われる。
(パターンPT1について)
特定部231は、モデルID「MD♯1」を用いてモデルアーキテクチャ記憶部221を参照し、モデルMD1に対応するニューラルネットワークのアーキテクチャを特定する。係るアーキテクチャには、モデルとして実行される複数の処理(例えば、画像から特徴を抽出する処理と、別の画像から特徴が一致する部分を検出する処理)ごとに、当該処理を実行させる実行対象の演算装置が規定されている。例えば、係るアーキテクチャには、モデルとして実行される複数の処理ごとに、当該処理を実行させる実行対象の演算装置として、GPUまたはCPUのいずれか一方だけか規定されている。このようなことから、特定部231は、モデルMD1に対応するニューラルネットワークのアーキテクチャのうち、例えば予測処理に含まれる各処理を示すアーキテクチャを特定する。
また、決定部232は、特定部231により特定された、処理ごとのアーキテクチャに基づいて、当該処理をGPUまたはCPUのうちのいずれの演算装置に実行させるか、実行対象の演算装置を決定する。例えば、特定部231により特定されたある1つ処理である処理A1に対応するアーキテクチャには、処理A1をGPUに実行させるよう規定されていたとすると、決定部232は、処理A1を実行させる実行対象の演算装置としてGPUを決定する。また、例えば、特定部231により特定された他の処理である処理A2に対応するアーキテクチャには、処理A2をCPUに実行させるよう規定されていたとすると、決定部232は、処理A2を実行させる実行対象の演算装置としてCPUを決定する。
このような状態において、例えば、実行制御部233は、利用者のAPIサーバに対して、処理A1についてはGPUに実行させるよう制御し、処理A2についてはCPUに実行させるよう制御する。
(パターンPT2について)
特定部231は、モデルID「MD♯2」を用いてモデルアーキテクチャ記憶部221を参照し、モデルMD2に対応するニューラルネットワークのアーキテクチャを特定する。係るアーキテクチャについても同様に、モデルとして実行される複数の処理(例えば、画像から特徴を抽出する処理と、別の画像から特徴が一致する部分を検出する処理)ごとに、当該処理を実行させる実行対象の演算装置が規定されている。すなわち、係るアーキテクチャには、モデルとして実行される複数の処理ごとに、当該処理を実行させる実行対象の演算装置として、GPUまたはCPUのいずれか一方だけか規定されている。このようなことから、特定部231は、モデルMD2に対応するニューラルネットワークのアーキテクチャのうち、例えば予測処理に含まれる各処理を示すアーキテクチャを特定する。
また、決定部232は、特定部231により特定された、処理ごとのアーキテクチャに基づいて、当該処理をGPUまたはCPUのうちのいずれの演算装置に実行させるか、実行対象の演算装置を決定する。例えば、特定部231により特定されたある1つ処理である処理B1に対応するアーキテクチャには、当該処理をCPUに実行させるよう規定されていたとすると、決定部232は、処理B1を実行させる実行対象の演算装置としてCPUを決定する。また、例えば、特定部231により特定された他の処理である処理B2に対応するアーキテクチャには、処理B2をGPUに実行させるよう規定されていたとすると、決定部232は、処理B2を実行させる実行対象の演算装置としてGPUを決定する。
また、決定部232の処理について図19を用いてより詳細に説明する。図19は、実行対象の演算装置を示す情報が対応付けられたモデルアーキテクチャの一例を示す図である。図19には、モデルMD1に対応するニューラルネットワークのアーキテクチャのうち、処理A1に対応するアーキテクチャが示されているものとする。図19に示すように、モデルMD1に対応するニューラルネットワークのアーキテクチャのうち、処理A1に対応するアーキテクチャには、処理A1を実行させる実行対象の演算装置を示す情報が予め組み込まれている。具体的には、図19の例では、処理A1に対応するアーキテクチャには、処理A1をGPUに実行させるよう規定する記述が予め対応付けられている。よって、決定部232は、このような記述に基づいて、処理A1を実行させる実行対象の演算装置としてGPUを決定することができる。
なお、実行制御装置200が、実行主体の最適化アルゴリズムを用いて上記のように動作するには、学習済のモデルに対応するニューラルネットワークのアーキテクチャのうち、当該モデルを用いた各処理に紐付くアーキテクチャごとに、当該処理を実行させる実行対象の演算装置を示す情報が予め組み込まれている必要がある。すなわち、処理ごとに、当該処理を実行させる実行対象の演算装置がルールベースで与えられている必要がある。
よって、このようなルールベースを実現するために、多クラス分類用のモデルを用いた処理をGPU、CPUそれぞれに実行させた場合で、処理時間にどれだけの違いが生じるか検証するための実験が行われた。また、2クラス分類用のモデルを用いた処理をGPU、CPUそれぞれに実行させた場合で、処理時間にどれだけの違いが生じるか検証するための実験が行われた。
〔9-2.実行主体の最適化アルゴリズムに関する実験結果の一例〕
ここからは、図20~図24を用いて、モデルを用いた処理をGPU、CPUそれぞれに実行させた場合における効果の一例について説明する。
(多クラス分類用のモデル)
まず、図20および図21を用いて、多クラス分類用のモデルを用いた処理をGPU、CPUそれぞれに実行させた場合における効果の一例について説明する。ここでは、所定のサービスごとの多クラス分類用のモデルそれぞれについて、当初はCPU側で行われていた処理を任意に組み合わせた組合せごとに当該組合せでの処理をGPU側に実行させることで、どれだけパフォーマンス(処理時間)が改善されるか実験された。図20には、このときの実験結果が示される。
図20は、多クラス分類用のモデルを対象とした実験によるパフォーマンスの改善状況を示す図である。例えば、図20には、上記実験による実験結果のうち、ベストな結果が得られた際の各要素が示される。
図20の例では、サービスSV1に対応するモデル(モデル「1」)について、当初はCPU側で行われていた処理を任意に組み合わせた組合せごとに当該組合せでの処理をGPU側に実行させることで、どれだけパフォーマンス(処理時間)が改善されるか実験された。そして、図20に示すように、当初はCPU側で行われていた処理のいくつかをGPU側で実行させることで、最適化前と後とでは、パフォーマンスが最大で「30.8%」向上する(処理速度が「30.8%」短縮される)ことが解った。また、最適化前と後とでは、GPU使用率が「28%」から「38%」に変化していたことが示される。
また、図20の例では、サービスSV2に対応するモデル(モデル「2」)について、当初はCPU側で行われていた処理を任意に組み合わせた組合せごとに当該組合せでの処理をGPU側に実行させることで、どれだけパフォーマンス(処理時間)が改善されるか実験された。そして、図20に示すように、当初はCPU側で行われていた処理のいくつかをGPU側で実行させることで、最適化前と後とでは、パフォーマンスが最大で「44.2%」向上する(処理速度が「44.2%」短縮される)ことが解った。また、最適化前と後とでは、GPU使用率が「15%」から「42%」に変化していたことが示される。
また、図20の例では、サービスSV3に対応するモデル(モデル「3」)について、当初はCPU側で行われていた処理を任意に組み合わせた組合せごとに当該組合せでの処理をGPU側に実行させることで、どれだけパフォーマンス(処理時間)が改善されるか実験された。そして、図20に示すように、当初はCPU側で行われていた処理のいくつかをGPU側で実行させることで、最適化前と後とでは、パフォーマンスが最大で「12.3%」向上する(処理速度が「12.3%」短縮される)ことが解った。また、最適化前と後とでは、GPU使用率が「15%」から「18%」に変化していたことが示される。
また、図20の例では、サービスSV4に対応するモデル(モデル「4」)について、当初はCPU側で行われていた処理を任意に組み合わせた組合せごとに当該組合せでの処理をGPU側に実行させることで、どれだけパフォーマンス(処理時間)が改善されるか実験された。そして、図20に示すように、当初はCPU側で行われていた処理のいくつかをGPU側で実行させることで、最適化前と後とでは、パフォーマンスが最大で「65.1%」向上する(処理速度が「65.1%」短縮される)ことが解った。また、最適化前と後とでは、GPU使用率が「54%」から「56%」に変化していたことが示される。
また、図20に示すように、サービスSV5に対応するモデル(モデル「5」)について、当初はCPU側で行われていた処理を任意に組み合わせた組合せごとに当該組合せでの処理をGPU側に実行させることで、どれだけパフォーマンス(処理時間)が改善されるか実験された。そして、図20に示すように、当初はCPU側で行われていた処理のいくつかをGPU側で実行させることで、最適化前と後とでは、パフォーマンスが最大で「39.1%」向上する(処理速度が「39.1%」短縮される)ことが解った。また、最適化前と後とでは、GPU使用率が「39%」から「45%」に変化していたことが示される。
また、上記の実験結果によれば、サービスによって異なるモデルであっても多クラス分類用のモデルについては、当初はCPU側で行われていた処理のいくつかをGPU側で実行させることで、必ずパフォーマンスを向上させることができ、平均でも「38.8%」パフォーマンスを向上させることができることが解った。
また、図20に示す実験結果によれば、多クラス分類用のモデルに対応するニューラルネットワークのアーキテクチャのうち、最大のパフォーマンスが得られた際においてGPUに実行させていた処理に紐付くアーキテクチャに対して演算装置「GPU」を示す情報を組み込むことでルールベース化しておけば、最も優れた最適化を実現できると考えられる。
次に、図20に示す各サービスに対応するモデルごとに行われた実験のうち、サービスSV1に対応するモデル(モデル「1」)を対象に行われた実験に焦点を当てて、その実験内容の一例を示す。図21は、サービスSV1に対応するモデルを対象として行われた実験の実験内容の一例を示す図である。図21には、パフォーマンスが最大で「30.8%」向上された際での実験内容が示される。
図21の例によれば、当初はCPU側で行われていた処理を任意に組み合わせた組合せのうち、処理A11、処理A12および処理A13が、GPU側で行われるよう、これらの処理をGPU側に強制的に移動させるという実験が行われた例が示される。
このように、多クラス分類用のモデルである、サービスSV1に対応するモデルでは、処理A11、処理A12および処理A13に紐付くアーキテクチャに対して演算装置「GPU」を示す情報を組み込めば、実行制御装置200が、より高性能な最適化アルゴリズムを有することができるようになる。したがって、この結果、例えば、サービスSV1に対応するモデルを本番環境で運用するために用いられる利用者側のコンピュータ(例えば、サーバやエッジデバイス)のパフォーマンスを効果的に向上させることができるようになる。
(2クラス分類用のモデル)
次に、図22および図23を用いて、2クラス分類用のモデルを用いた処理をCPU、GPUそれぞれに実行させた場合における効果の一例について説明する。ここでは、所定のサービスごとの2クラス分類用のモデルそれぞれについて、当初はGPU側で行われていた特定の処理をCPU側に実行させることで、どれだけパフォーマンス(処理時間)が改善されるか実験された。図22には、このときの実験結果が示される。
図22は、2クラス分類用のモデルを対象とした実験によるパフォーマンスの改善状況を示す図である。例えば、図22には、上記実験による実験結果のうち、ベストな結果が得られた際の各要素が示される。
図22の例では、サービスSV6に対応するモデル(モデル「6」)について、当初はGPU側で行われていた特定の処理をCPU側に実行させることで、どれだけパフォーマンス(処理時間)が改善されるか実験された。そして、図22に示すように、当初はGPU側で行われていた特定の処理をCPU側で実行させることで、最適化前と後とでは、パフォーマンスが最大で「50.3%」向上する(処理速度が「50.3%」短縮される)ことが解った。
また、図22の例では、サービスSV7に対応するモデル(モデル「7」)について、当初はGPU側で行われていた特定の処理をCPU側に実行させることで、どれだけパフォーマンス(処理時間)が改善されるか実験された。そして、図22に示すように、当初はGPU側で行われていた特定の処理をCPU側で実行させることで、最適化前と後とでは、パフォーマンスが最大で「30.2%」向上する(処理速度が「30.2%」短縮される)ことが解った。
また、上記の実験結果によれば、サービスによって異なるモデルであっても2クラス分類用のモデルについては、当初はGPU側で行われていた特定の処理をCPU側で実行させることで、必ずパフォーマンスを向上させることが解った。また、2クラス分類用のモデルを用いた処理の多くは、CPUによる並列計算が効果的であることが解った。
また、図22に示す実験結果によれば、2クラス分類用のモデルに対応するニューラルネットワークのアーキテクチャのうち、最大のパフォーマンスが得られた際においてCPUに実行させていた処理に紐付くアーキテクチャに対して演算装置「CPU」を示す情報を組み込むことでルールベース化しておけば、最も優れた最適化を実現できると考えられる。
次に、図22に示す各サービスに対応するモデルごとに行われた実験のうち、サービスSV6に対応するモデル(モデル「6」)を対象に行われた実験に焦点を当てて、その実験内容の一例を示す。図23は、サービスSV6に対応するモデルを対象として行われた実験の実験内容の一例を示す図である。図23には、パフォーマンスが最大で「50.3%」向上された際での実験内容が示される。
図23の例によれば、当初はGPU側で行われていた処理のうち、MATMUL演算を必要とする処理を、CPU側で実行させるという実験が行われた例が示される。
このように、2クラス分類用のモデルである、サービスSV6に対応するモデルでは、MATMUL演算を必要とする処理に紐付くアーキテクチャに対して演算装置「CPU」を示す情報を組み込めば、実行制御装置200が、より高性能な最適化アルゴリズムを有することができるようになる。したがって、この結果、例えば、サービスSV6に対応するモデルを本番環境で運用するために用いられる利用者側のコンピュータ(例えば、サーバやエッジデバイス)のパフォーマンスを効果的に向上させることができるようになる。
また、サービスSV6に対応するモデルに拘わらず、2クラス分類用のモデルのアーキテクチャのうち、MATMUL演算を必要とする処理に紐付くアーキテクチャに対して演算装置「CPU」を示す情報を組み込むことでルールベース化しておけば、利用者側のコンピュータ(例えば、サーバやエッジデバイス)のパフォーマンスを効果的に向上させることができるといえる。
〔10.情報処理装置の処理フロー〕
これまで、情報処理装置100および実行制御装置200それぞれによって行われる最適化処理のアルゴリズムについて説明してきた。次に、情報処理装置100が実行する処理の手順について説明する。具体的には、情報処理装置100が、第1の最適化処理~第5の最適化処理を含む一連のチューニング(実施形態に係るファインチューニング)処理を行う手順について説明する。
図24は、実施形態に係るファインチューニングの流れの一例を示すフローチャートである。なお、図24では、実施形態に係るファインチューニングのうち、情報処理装置100が有するオプティマイズ機能(オプティマイザーOP)により実行される処理の部分を示す。
まず、生成部131は、モデル(計算グラフ)の生成に用いる乱数シードを最適化するアルゴリズム(第1の最適化アルゴリズム)により、ステップS2401およびS2402を行う。
具体的には、生成部131は、計算グラフの乱数シードを複数生成する(ステップS2401)。例えば、生成部131は、重みの初期値が一様な分布を示すよう最適化された乱数シードを複数生成する。また、生成部131は、生成した乱数シードそれぞれに応じた、重みの初期値を生成する(ステップS2402)。例えば、生成部131は、生成した乱数シードをランダム関数に入力することで、出力として得られた擬似乱数であって、一様な分布に収まっている複数の擬似乱数から、当該擬似乱数それぞれに応じた重みを生成する。また、このようにして得られた重みの初期値も、一様な分布も示すものとなる。
そして、生成部131は、ステップS2402で生成した各初期値に応じた複数のモデルを生成する(ステップS2403)。なお、図24の例では、モデルパラメータの一例として重みを示しているが、モデルパラメータは、例えば、重みまたはバイアスであってよく、係る場合には、生成部131は、ステップS2402で生成したモデルパラメータの初期値群のうち、組合せの異なるモデルパラメータの組(例えば、重みとバイアスの組)ごとに、当該組を有するモデルを生成してもよい。
次に、第1データ制御部133は、モデルの学習に用いる学習用データを最適化するアルゴリズム(第2の最適化アルゴリズム)により、以下のステップS2404~S2406を行う。
具体的には、第1データ制御部133は、含まれる学習用データが時系列順に並ぶようソートされた学習用データ群を所定数の組に分割する(ステップS2404)。そして、第1データ制御部133は、ステップS2404での分割により得られた組から、ステップS2403で生成された各モデルの学習に用いる学習用データの組を選択する(ステップS2405)。例えば、第1データ制御部133は、選択した組の数が所定数に達するまで、ステップS2404での分割により得られた全ての組の中から、モデルの学習に用いる組をランダムに選択する。例えば、第1データ制御部133は、ステップS2404での分割により得られた組であって、指定されたLoop回数に到達するまでの現時点で未選択の組の中から、ランダムに組を選択する。また、第1データ制御部133は、ステップS2404での分割により得られた組であって、指定されたLoop回数に到達するまでの現時点で未選択の組のうち、含まれている学習データの時系列がより新しい組から順に、予め決められた数(例えば、利用者により指定された数)になるまでランダムに組を選択してもよい。
そして、第1データ制御部133は、ステップS2405で選択した学習用データの組をつなげることで1つの学習用データ群を生成する(ステップS2406)。例えば、第1データ制御部133は、ステップS2405で選択した組をこのときの選択順につなげることで1つの学習用データ群を生成する。
次に、第2データ制御部134は、シャッフルバッファサイズを最適化するアルゴリズム(第3の最適化アルゴリズム)により、以下のステップS2407およびS2408を行う。
具体的には、第2データ制御部134は、ステップS2406において第1データ制御部133により生成された学習用データ群を分割する(ステップS2407)。例えば、第2データ制御部134は、シャッフルバッファのサイズに等しいサイズの学習用データを生成する処理として、第1データ制御部133により生成された学習用データ群を分割する。例えば、第2データ制御部134は、分割後の各組につき予め決められた数(例えば、利用者により指定された数)の学習用データが等しく含まれるよう、第1データ制御部133により生成された学習用データ群を所定数の組に分割することができる。
そして、第2データ制御部134は、ステップS2407での分割により得られた組のうち、このときの分割により得られた順(分割順)に応じた1組を抽出し、抽出した1組に含まれる学習用データを、学習対象の学習用データとしてシャッフルバッファに格納する(ステップS2408)。例えば、第2データ制御部134は、ステップS2407での分割により得られた組であって、現時点で学習に用いられていない未処理の組のうち、分割順に応じた1組を抽出する。そして、第2データ制御部134は、抽出した1組を今回の繰り返し学習で用いられる学習用データである学習対象の学習用データとしてシャッフルバッファに格納する。
次に、第1学習部135は、シャッフルバッファ内の学習用データを順に学習させる際の学習順をシャッフルして決める際の乱数シード(データシャッフルの乱数シード)を最適化するアルゴリズム(第4の最適化アルゴリズム)により、以下のステップS2409~S2411を行う。
具体的には、第1学習部135は、シャッフルバッファ内の学習用データの学習順であるランダム順序の乱数シードを生成する(ステップS2409)。例えば、第1学習部135は、繰り返し学習のためのエポックごとに、エポック間での各学習用データに対応付けるランダム順序に偏りが生じないよう今回の学習での乱数シード(ランダム順序の元となるシード)を生成する。
また、第1学習部135は、ステップS2409で生成した乱数シードそれぞれに応じた、ランダム順序を生成する(ステップS2410)。例えば、第1学習部135は、各乱数シードをランダム関数に入力することで、ランダム順序を生成する。そして、第1学習部135は、この生成したランダム順序をシャッフルバッファ内の学習用データに対応付けることで、最終的な学習対象の学習用データをシャッフルバッファ内で生成する(ステップS2411)。
また、第1学習部135は、ステップS2410で決定したランダム順序が示す学習順で、最終的な学習対象の学習用データの特徴を各モデルに学習させる(ステップS2412)。また、ここでの学習の中では、ハイパーパラメータを探索する試行が繰り返されるが、効率の良い探索を実現できるよう、第1学習部135は、枝刈りによる試行の最適化として第5の最適化を実行することで、よい結果を残すことが見込まれない試行については、最後まで継続することなく早期に終了させる。
また、第1学習部135は、ステップS2408~S2412を1エポックとして、ステップS2407での分割により得られた組を対象に、指定されたエポック数だけ繰り返し学習を行う。具体的には、第1学習部135は、ステップS2408からS2412を1エポックとして、ステップS2407での分割により得られた組を用いて、利用者指定のエポック数だけ繰り返し学習を行う。
このため、次に、第1学習部135は、上記第3の最適化により得られた組(具体的には、ステップS2407での分割により得られた組)の全てを1エポック分処理できたか否かを判定する(ステップS2413)。具体的には、第1学習部135は、ステップS2407での分割により得られた組の全てが、ステップS2408からS2412を1エポックとする学習に用いられたか否かを判定する。第1学習部135は、ステップS2407での分割により得られた組の全てを1エポック分処理できていないと判定している間は(ステップS2413;No)、組の全てを1エポック分処理できたと判定できるまでステップS2408~ステップS2412にかけての一連の処理を繰り返させる。
一方、第1学習部135は、ステップS2407での分割により得られた組の全てを1エポック分処理できたと判定した場合には(ステップS2413;Yes)、次に、ステップS2407での分割により得られた組を対象として、指定されたエポック数に到達したか否かを判定する(ステップS2414)。具体的には、第1学習部135は、ステップS2407での分割により得られた組を用いて、指定されたエポック数だけ繰り返し学習が行われたか否かを判定する。
第1学習部135は、指定されたエポック数に到達していないと判定している間は(ステップS2414;No)、指定されたエポック数に到達したと判定できるまでステップS2408以降の一連の処理を繰り返させる。
一方、モデル選択部136は、指定されたエポック数に到達したと判定された場合には(ステップS2414;Yes)、現時点での学習済の各モデルの精度に基づき、現時点でのベストモデルを選択する(ステップS2415)。ここで、図11でも説明した通り、より精度の高いモデルが得られるよう、指定されたLoop回数に到達するまで、ステップS2408以降の一連の処理が繰り返される。
このため、次に、第1学習部135は、ステップS2408以降の一連の処理を繰り返させる(Loopさせる)よう指定された回数であるLoop回数に到達したか否かを判定する(ステップS2416)。第1学習部135は、指定されたLoop回数に到達していないと判定している間は(ステップS2416;No)、ステップS2408以降の一連の処理を繰り返させる。一方、第1学習部135は、指定されたLoop回数に到達したと判定した場合には(ステップS2416;Yes)、この時点で処理を終了する。
また、処理が終了されたこの時点で、モデル選択部136により選択されているベストモデルは、Loopごとに選択されたモデルの中で最も精度が高いものとなり得る。
また、第2学習部137は、実施形態に係るファインチューニングのうち、情報処理装置100が有するセレクター機能(セレクターSE)に対応しており、図24では不図示であるが、例えば図3のステップS21~S24で説明したチューニング処理を続いて行う。具体的には、第2学習部137は、モデル選択部136により選択されたベストモデルを対象に、係るチューニング処理を行う。
〔11.ファインチューニングに関する実験結果の一例について〕
続いて、図25A~図25Cを用いて、実施形態に係るファインチューニングを実行した場合における効果の一例について説明する。
図25Aは、実施形態に係るファインチューニングを実行した場合と、実施形態に係るファインチューニングを実行しなかった場合とにおいてモデルの精度が比較された比較例(1)を示す図である。具体的には、図25Aには、ファインチューニングを実行した場合でのトライアルAに対応する評価結果と、ファインチューニングを実行しなかった場合でのトライアルAに対応する評価結果とが比較された比較例が示される。
図4の例と対応付けて、図25Aの例では、データセットのうち、「6月16日 17時32分」~「6月17日 7時26分」までのデータが評価用データとして用いられて、ベストモデルの精度が評価された。また、図25Aの例では、データセットのうち、「6月17日 7時26分」~「6月19日 0時00分」までのデータがラベル未知のテスト用データとして用いられて、ベストモデルの精度が評価された。そして、図25Aの例によれば、係る評価による評価結果から、実施形態に係るファインチューニングを実行することにより、ベストモデルの精度が「4.5%」向上することが解った。
また、図25Bは、実施形態に係るファインチューニングを実行した場合と、実施形態に係るファインチューニングを実行しなかった場合とにおいてモデルの精度が比較された比較例(2)を示す図である。具体的には、図25Bには、ファインチューニングを実行した場合でのトライアルBに対応する評価結果と、ファインチューニングを実行しなかった場合でのトライアルBに対応する評価結果とが比較された比較例が示される。
図4の例と対応付けて、図25Bの例では、データセットのうち、「6月17日 7時26分」~「6月17日12時00分」までのデータが評価用データとして用いられて、ベストモデルの精度が評価された。また、図25Bの例では、データセットのうち、「6月17日12時00分」~「6月19日 0時00分」までのデータがラベル未知のテスト用データとして用いられて、ベストモデルの精度が評価された。そして、図25Bの例によれば、係る評価による評価結果から、実施形態に係るファインチューニングを実行することにより、ベストモデルの精度が「9.0%」向上することが解った。
また、図25Cは、実施形態に係るファインチューニングを実行した場合と、実施形態に係るファインチューニングを実行しなかった場合とにおいてモデルの精度が比較された比較例(3)を示す図である。具体的には、図25Cには、ファインチューニングを実行した場合でのトライアルCに対応する評価結果と、ファインチューニングを実行しなかった場合でのトライアルCに対応する評価結果とが比較された比較例が示される。
図4の例と対応付けて、図25Cの例では、データセットのうち、「6月17日12時00分」~「6月19日 0時00分」までのデータが評価用データとして用いられて、ベストモデルの精度が評価された。そして、図25Cの例によれば、係る評価による評価結果から、実施形態に係るファインチューニングを実行することにより、ベストモデルの精度が「10.2%」向上することが解った。
また、図25A~図25Cの例によれば、時系列に応じたデータセットのうち、どこからどこまでの時間範囲を学習用データして定め、どこからどこまでの時間範囲を評価用データして定め、また、どこからどこまでの時間範囲をラベル未知の評価用データして定めるかこれら時間範囲が適宜変更されることで、多方面からファインチューニングによる効果が検証された。
そして、図25A~図25Bに示す評価結果から、データセットが用途に合わせてどのように用いられようとも、実施形態に係るファインチューニングを実行することで、実施形態に係るファインチューニングを実行しない場合と比較して性能が向上することが維持されることが解った。また、このようなことから実施形態に係る情報処理装置100によれば、モデルの精度を改善することができることが実証された。
〔12.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
また、上記してきた各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
〔13.プログラム〕
また、上記実施形態にかかる情報処理装置100および実行制御装置200は、例えば図26に示すような構成のコンピュータ1000によって実現される。図26は、コンピュータ1000の一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM1300、HDD1400、通信インターフェイス(I/F)1500、入出力インターフェイス(I/F)1600、及びメディアインターフェイス(I/F)1700を有する。
CPU1100は、ROM1300又はHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。
HDD1400は、CPU1100によって実行されるプログラム、および、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス1500は、通信網50を介して他の機器からデータを受信してCPU1100へ送り、CPU1100が生成したデータを、通信網50を介して他の機器へ送信する。
CPU1100は、入出力インターフェイス1600を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。CPU1100は、入出力インターフェイス1600を介して、入力装置からデータを取得する。また、CPU1100は、生成したデータを、入出力インターフェイス1600を介して出力装置へ出力する。
メディアインターフェイス1700は、記録媒体1800に格納されたプログラム又はデータを読み取り、RAM1200を介してCPU1100に提供する。CPU1100は、かかるプログラムを、メディアインターフェイス1700を介して記録媒体1800からRAM1200上にロードし、ロードしたプログラムを実行する。記録媒体1800は、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
例えば、コンピュータ1000が実施形態にかかる情報処理装置100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムを実行することにより、制御部130の機能を実現する。また、HDD1400には、記憶部120内のデータが格納される。
また、例えば、コンピュータ1000が実施形態にかかる実行制御装置200として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムを実行することにより、制御部230の機能を実現する。また、HDD1400には、記憶部220内のデータが格納される。
コンピュータ1000のCPU1100は、これらのプログラムを、記録媒体1800から読み取って実行するが、他の例として、他の装置から、通信網50を介してこれらのプログラムを取得してもよい。
〔14.効果〕
(実施形態に係る情報処理装置100の一態様による効果(1))
上述してきたように、実施形態に係る情報処理装置100(学習装置の一例)は、生成部131と、第1学習部135と、モデル選択部136と、第2学習部137とを有する。生成部131は、それぞれパラメータが異なるモデルを複数生成する。第1学習部135は、生成部131により生成された複数のモデルのそれぞれに対し、所定の学習データの一部が有する特徴を学習させる。モデル選択部136は、第1学習部135により学習が行われたモデルの精度に応じて、いずれかのモデルを選択する。第2学習部137は、モデル選択部136により選択されたモデルに対して所定の学習データが有する特徴を学習させる。
このような情報処理装置100によれば、精度が改善され、より性能が向上したモデルを利用者に提供することができるため、利用者が特定のサービスにモデルを実運用できるよう効果的に支援することができるようになる。
また、生成部131は、入力値に基づいて乱数値を算出する所定の第1関数に対して入力する入力値を複数生成し、生成した入力値ごとに、当該入力値を入力した際に所定の第1関数が出力する乱数値に応じたパラメータを有する複数のモデルを生成する。
このような情報処理装置100によれば、モデルの精度を改善することができる。
また、生成部131は、所定の第1関数に対して入力する入力値として、所定の第1関数が出力する乱数値が所定の条件を満たす値となるような入力値を複数生成する。
このような情報処理装置100によれば、モデルパラメータの初期値のばらつきを制御することができるため、モデルの精度を改善することができるようになる。
また、生成部131は、乱数値が所定範囲内の値となるような入力値を複数生成する。
このような情報処理装置100によれば、モデルパラメータの初期値のばらつきが一様な分布を示すよう制御することができるため、モデルの精度を改善することができるようになる。
また、生成部131は、乱数値の分布が所定の確率分布を示すような入力値を複数生成する。
このような情報処理装置100によれば、モデルパラメータの初期値のばらつきが一様な分布を示すよう制御することができるため、モデルの精度を改善することができるようになる。
また、生成部131は、乱数値の平均値が所定値となるような入力値を複数生成する。
このような情報処理装置100によれば、モデルパラメータの初期値のばらつきが一様な分布を示すよう制御することができるため、モデルの精度を改善することができるようになる。
また、生成部131は、所定の第1関数として、入力値を入力した際に出力される乱数値の分布が所定の確率分布を示すような関数を選択し、選択した関数が出力する乱数値に応じたパラメータを有する複数のモデルを生成する。
このような情報処理装置100によれば、モデルパラメータの初期値のばらつきが一様な分布を示すよう制御することができるため、モデルの精度を改善することができるようになる。
また、第1学習部135(選択部の一例)は、学習が行われたモデルのうち、精度を評価する評価値が所定の条件を満たす複数のモデルを選択し、選択した複数のモデルについて、所定の学習データの一部が有する特徴を学習させる。
このような情報処理装置100によれば、ハイパーパラメータを探索する試行のうち、モデルの評価値を用いて規定される停止条件を満たす試行については早期終了させ、係る停止条件を満たさない試行(精度を評価する評価値が所定の条件を満たす複数のモデル)については継続させることができるため、時間やコンピュータリソース占有に関する問題を解決することができ、また、よい結果を残すことが見込まれない試行が早期に枝刈りさせることからモデルの精度を向上させることができるようになる。
また、第1学習部135は、所定の学習データの一部が有する特徴を所定の回数繰り返し学習させる間での評価値の変化に基づく態様が、所定の態様を満たす複数のモデルを選択する。
このような情報処理装置100によれば、ハイパーパラメータの組合せがそれぞれ異なる各試行をモデルに適用し学習を繰り返す中で、停止条件を満たす試行については早期終了させ、係る停止条件を満たさない試行(精度を評価する評価値が所定の条件を満たす複数のモデル)については継続させることができるため、時間やコンピュータリソース占有に関する問題を解決することができ、また、よい結果を残すことが見込まれない試行が早期に枝刈りさせることからモデルの精度を向上させることができるようになる。
また、第1学習部135は、所定の条件として、利用者により指定された複数の条件を満たすモデルを選択する。
このような情報処理装置100によれば、モデルの性能向上が見込めないような試行を早期に停止させるよう条件付ける複数の停止条件であって、モデルの評価値を用いて規定される停止条件を組合せることにより、一般的なearly stoppingアルゴリズムを用いた場合よりもモデルの精度を向上させることができる。
また、第1学習部135は、入力値に基づいて乱数値を算出する所定の第2関数に対して入力する入力値を複数生成し、生成した入力値ごとに当該入力値を入力した際に所定の第2関数が出力する乱数値に基づいて、所定の学習データの一部を生成してもよい。このようなことから、第1学習部135は、学習データ生成部の一例でもあってもよい。
そして、このような情報処理装置100によれば、学習用データをモデルに学習させる学習順に偏りが生じてしまい上手く学習されないといった問題を解決することができるため、モデルの精度を改善することができるようになる。
また、第1学習部135は、所定の第2関数に対して入力する入力値を、繰り返し行われる学習ごとに複数生成することで、当該学習で学習対象となる学習データを生成し、繰り返し行われる学習ごとに当該学習のために生成したこの学習データを用いて、モデルを学習する。
このような情報処理装置100によれば、繰り返し学習のためのエポックごとに、エポック間での各学習用データに対応付ける学習順に偏りが生じないよう今回のエポックでの学習順を決定することができる。
また、第1学習部135は、所定の学習データの一部として、乱数値が学習順として対応付けられた学習データを生成する。
このような情報処理装置100によれば、例えば、シャッフルバッファ内の学習用データそれぞれに対して最適化された学習順を対応付けることができるため、学習用データをモデルに学習させる学習順に偏りが生じてしまい上手く学習されないといった問題を解決することができる。
また、モデル選択部136は、それぞれパラメータが異なるモデルと、所定の学習データとの組み合わせごとに、第1学習部135により学習が行われたモデルの精度に応じて、いずれかのモデルを選択する。
このような情報処理装置100によれば、それぞれパラメータが異なるモデルの中から、より性能が向上したモデルをベストモデルとして選択し利用者に提供することができるようになる。
(実施形態に係る情報処理装置100の一態様による効果(2))
上述してきたように、実施形態に係る情報処理装置100(学習装置の一例)は、第2データ制御部134を有する。第2データ制御部134は、モデルに特徴を学習させる所定の学習データを、時系列順に複数の組に分割し、分割された組ごとに、当該組に含まれる学習データが有する特徴が所定の順序で第1学習部135によりモデルに学習されるよう制御する。このようなことから、第2データ制御部134は、分割部および学習部の一例に対応する処理部である。
そして、このような情報処理装置100によれば、シャッフルバッファサイズに応じてモデルの精度が変化することに基づいて、シャッフルバッファサイズを最適化し、最適化したシャッフルバッファサイズに合わせて学習用データを分割することができるため、モデルの精度を改善することができる。
また、第2データ制御部134は、分割された組ごとに、当該組に含まれる学習データが有する特徴が、ランダムな順序でモデルに学習されるよう制御する。
このような情報処理装置100によれば、モデルの精度を改善することができる。
また、第2データ制御部134は、分割された組のうち、時系列に応じた組から順に、当該組に含まれる学習データが有する特徴がモデルに学習されるよう制御する。
このような情報処理装置100によれば、時系列の古い学習用データから時系列の新しい学習用データへと順に学習されることで、学習用データの特徴の傾向が高精度に算出されるようになるため、モデルの精度を改善することができるようになる。
また、第2データ制御部134は、所定の学習データを、利用者により指定された数の学習データを有する組に分割する。
このような情報処理装置100によれば、シャッフルバッファサイズに応じてモデルの精度がどのように変化するか検証を行った利用者が、この検証から得られた結果に基づき学習用データを分割させることができるようになるため、シャッフルバッファサイズ最適化におけるユーザビリティを高めることができる。
また、第2データ制御部134は、所定の学習データが分割された各組に含まれる学習データの数が、利用者により指定された範囲内に収まるように、所定の学習データを複数の組に分割する。
このような情報処理装置100によれば、利用者は、例えば、適切な数を指定することが困難な場合には、目処をつけた範囲を指定することもできるようになるため、シャッフルバッファサイズ最適化におけるユーザビリティを高められる。
(実施形態に係る情報処理装置100の一態様による効果(3))
上述してきたように、実施形態に係る情報処理装置100(学習装置の一例)は、第1データ制御部133を有する。第1データ制御部133は、モデルに特徴を学習させる所定の学習データを、時系列順に複数の組に分割し、分割された組のうち、モデルの学習に用いる組を選択する。また、第1データ制御部133は、選択した組のうち、含まれている学習データの時系列が古い組から順に用いて、各組に含まれる学習データが有する特徴が、第1学習部135によりモデルに学習されるよう制御する。このようなことから、第1データ制御部133は、分割部、選択部および学習部の一例に対応する処理部である。
そして、このような情報処理装置100によれば、データセットのうち、実際に学習に用いる学習用データを最適化することができるため、モデルの精度を改善することができる。
また、第1データ制御部133は、所定の学習データを、所定数の学習データを有する組に分割する。
このような情報処理装置100によれば、分割により得られた各組に所定数の学習用データが含まれるようデータセットを分割することができるため、実際に学習に用いる学習用データを含む各組を最適化することができるようになる。
また、第1データ制御部133は、分割された組のうち、モデルの学習に用いる組をランダムに選択する。
このような情報処理装置100によれば、分割により得られた組のうち、実際に学習に用いる学習用データを含む組をどの組にするか公平に選択することができる。
また、第1データ制御部133は、分割された組のうち、含まれている学習データの時系列がより新しい組を選択する。
このような情報処理装置100によれば、より最近の学習用データの特徴が学習されるよう制御することができるため、モデルの精度を改善することができる。
また、第1データ制御部133は、分割された組のうち、利用者により指定された数の組を選択する。
このような情報処理装置100によれば、データセットを分割させる際のユーザビリティを高めることができる。
また、第1データ制御部133は、選択した組の数が利用者により指定された数になるまで、分割された組のうち、含まれている学習データの時系列がより新しい組を時系列順に選択してゆく。
このような情報処理装置100によれば、利用者により指定された学習用データの中で、最大限モデルの精度を改善することができるよう、この学習用データの特徴を学習させることができる。
(実施形態に係る情報処理装置100の一態様による効果(4))
上述してきたように、実施形態に係る情報処理装置100(分類装置の一例)は、第1学習部135(第2学習部137でもよい)と、属性選択部139と、提供部138とを有する。第1学習部135は、複数の属性を有する学習データの特徴をモデルに学習させる。属性選択部139は、第1学習部135により学習されたモデルに入力する入力候補のデータのうち、いずれの属性を有するデータをモデルに入力しないか非入力対象のデータで対象となる当該属性である対象属性を選択する。提供部138は、属性選択部139により選択された対象属性以外の属性を示す情報とモデルとを提供する。
このような情報処理装置100によれば、利用者は学習済のモデルを利用したい場合に、自身が用意したテスト用のデータの全てのデータを入力するのではなく、特定の属性を有するデータについてはマスクし、残りのデータのみ入力すればよいことを知ることができる。また、この結果、利用者は、テスト用のデータの全てを用いる場合よりもより正当な出力結果を得ることができるようになる。また、このようなことから、情報処理装置100によれば、学習済のモデルを用いて利用者がより正当な結果を得られるよう支援することができる。
また、属性選択部139は、対象属性の組合せを選択する。
このような情報処理装置100によれば、成立し得る対象属性の組合せ全てを対象にモデルの精度を測定し、そして、組合せ間でモデルの精度を比較することができるようになるため、最も高い精度が得られるようにするには、どのような組合せに対応する学習用データをモデルに入力しないようにすべきか高精度に判断することができるようになる。
また、属性選択部139は、対象属性の組合せの候補ごとに、当該候補での対象属性を除く属性を有する学習データをモデルに入力した際のモデルの精度を測定し、測定結果に応じて、当該候補の中から対象属性の組合せを選択する。
このような情報処理装置100によれば、成立し得る対象属性の組合せ間でモデルの精度を比較することができるようになるため、最も高い精度が得られるようにするには、どのような組合せに対応する学習用データをモデルに入力しないようにすべきか高精度に判断することができるようになる。
また、第1学習部135は、モデルの精度が所定の条件を満たす複数のモデルでの対象属性の組合せに基づいて、対象属性の新たな組合せを複数決定し、決定した組合せでの対象属性を除く属性を有する学習データを複数のモデルに入力した際の各モデルの精度が所定の条件を満たすか否か判定する。そして、第1学習部135は、所定の条件を満たすと判定されたモデルに対して、学習データを学習させる。
このような情報処理装置100によれば、精度を評価する評価値が所定の条件を満たす複数のモデルを選択し、選択した複数のモデルについて、学習用データの一部が有する特徴を学習させる際に、モデルの性能を下げてしまう可能性がある学習用データが学習されないよう制御することができるため、モデルの精度を改善することができる。
また、提供部138は、属性選択部139により選択された対象属性以外の属性を示す情報として、属性選択部139により選択された対象属性を除く属性を有する学習データをモデルに入力した際のモデルの精度に関する情報を提供する。
このような情報処理装置100によれば、学習済のモデルを用いて利用者がより正当な結果を得られるよう支援することができる。
(実施形態に係る情報処理装置100の一態様による効果(5))
上述してきたように、実施形態に係る実行制御装置200は、特定部231と、決定部232と、実行制御部233とを有する。特定部231は、それぞれアーキテクチャが異なる複数の演算装置が所定の処理を実行する際に用いるモデルの特徴を特定する。決定部232は、特定部231により特定されたモデルの特徴に基づいて、モデルを用いた処理を複数の演算装置のうちのいずれに実行させるか実行対象の演算装置を決定する。実行制御部233は、決定部232により決定された演算装置にモデルを用いた処理を実行させる。
このような情報処理装置100によれば、モデルを用いた処理それぞれが適切な演算装置によって実行されるよう実行対象の演算装置をモデルの特徴に基づき最適化することができる。また、このような情報処理装置100によれば、モデルを用いた処理に費やされる処理時間をより短縮させることができる。また、このような情報処理装置100によれば、利用者がモデルを用いた処理を行わそうとするコンピュータの観点から間接的にモデルの精度を改善させることができる。
また、特定部231は、モデルの特徴として、モデルとして実行される複数の処理の特徴を特定し、決定部232は、特定部231により特定された複数の処理の特徴に基づいて、複数の処理ごとに、当該処理を実行させる実行対象の演算装置を複数の演算装置のうちのいずれから決定する。
このような情報処理装置100によれば、モデルとして実行される複数の処理ごとに、当該処理をより得意とする演算装置に実行させることができるため、モデルを用いた処理に費やされる処理時間をより短縮させることができる。
また、決定部232は、複数の演算装置として、同一のデータを用いて同一の処理を実行した際に同一の値の出力が保証された第1の演算装置、および、同一のデータを用いて同一の処理を実行した際に同一の値の出力が保証されない第2の演算装置のいずれから、実行対象の演算装置を決定する。
このような情報処理装置100によれば、モデルの精度を改善させることができる。
また、決定部232は、複数の演算装置として、スカラー演算を行う第1の演算装置、および、ベクトル演算を行う第2の演算装置のいずれから、実行対象の演算装置を決定する。
このような情報処理装置100によれば、モデルとして実行される複数の処理のうち、スカラー演算を必要とする処理については第1の演算装置に実行させ、ベクトル演算を必要とする処理については第2の演算装置に実行させることができるため、モデルを用いた処理に費やされる処理時間をより短縮させることができる。
また、決定部232は、複数の演算装置として、アウトオブオーダー方式が採用された第1の演算装置、および、アウトオブオーダー方式が採用されていない第2の演算装置のいずれから、実行対象の演算装置を決定する。
このような情報処理装置100によれば、モデルの精度を改善させることができる。
決定部232は、第1の演算装置としてブランチプレディクション機能を有する中央演算装置、および、第2の演算装置としてブランチプレディクション機能を有しない画像演算装置のいずれから、実行対象の演算装置を決定する。
このような情報処理装置100によれば、モデルとして実行される複数の処理のうち、CPUが得意とする処理にはCPUを割り当て、GPUが得意とする処理にはGPUを割り当てることができるため、モデルを用いた処理に費やされる処理時間をより短縮させることができる。
また、決定部232は、モデルが多クラス分類用のモデルである場合には、画像演算装置を実行対象の演算装置として決定する。
このような情報処理装置100によれば、モデルを用いた処理に費やされる処理時間をより短縮させることができる。
また、決定部232は、モデルが2クラス分類用のモデルである場合には、中央演算装置を実行対象の演算装置として決定する。
このような情報処理装置100によれば、モデルを用いた処理に費やされる処理時間をより短縮させることができる。
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
また、上記してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、生成部は、生成手段や生成回路に読み替えることができる。