(57)【要約】【課題】様々な機械学習方式及びモデルに適用可能であり、成功確率が向上し効率的な計算が可能な、機械学習の制御を実現する。【解決手段】機械学習はモデルを定義するパラメータを更新する学習処理を複数回実行する処理であって、計算機システムは、判定タイミングを規定するトリガ回数、及びモデルを生成するための機械学習の失敗予兆を検出するために用いる評価値により定義される検出条件を含む検出条件データを格納する学習判定情報を取得し、パラメータの初期値を設定して、機械学習を開始し、学習処理を実行した後、学習処理の実行回数を表すカウンタを更新し、トリガ回数がカウンタの値に一致する検出条件データを特定し、検出条件データに含まれる検出条件に基づいて、機械学習の失敗予兆が検出されたか否かを判定し、機械学習の失敗予兆が検出された場合、パラメータを初期化した後、機械学習を継続する。【選択図】図５
2020161031.tif 000002
【特許請求の範囲】
【請求項１】
入力データに対して予測値を出力するモデルを生成するための機械学習を実行する計算機システムであって、
プロセッサ及び前記プロセッサに接続される記憶装置を備え、
前記機械学習は、前記モデルを定義するパラメータを更新する学習処理を複数回実行する処理であって、
前記プロセッサは、
判定タイミングを規定するトリガ回数、及び前記モデルを生成するための機械学習の失敗予兆を検出するために用いる少なくとも一つの評価値により定義される検出条件を含む検出条件データを格納する学習判定情報を取得し、
前記パラメータの初期値を設定して、前記機械学習を開始し、
前記学習処理を実行した後、前記パラメータの初期値が設定された後の前記学習処理の実行回数を表すカウンタを更新し、
前記トリガ回数が前記カウンタの値に一致する前記検出条件データを特定し、
前記特定された検出条件データに含まれる検出条件に基づいて、前記機械学習の失敗予兆が検出されたか否かを判定し、
前記機械学習の失敗予兆が検出された場合、前記パラメータ及び前記カウンタを初期化した後、前記機械学習を継続することを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記プロセッサは、
前記機械学習における前記学習処理の実行回数の上限値を管理し、
前記カウンタの値が前記上限値以上である場合、前記機械学習を終了し、
前記機械学習の失敗予兆が検出された場合、前記上限値を前記カウンタの値で減算した値を新たな前記上限値として設定し、その後、前記カウンタを初期化することを特徴とする計算機システム。
【請求項３】
請求項２に記載の計算機システムであって、
前記検出条件データは、前記上限値を用いて定義される、当該検出条件データを適用するか否かを判定するための適用条件を含み、
前記プロセッサは、
前記上限値に基づいて、前記適用条件を満たす前記検出条件データを選択し、
前記選択された検出条件データの中から、前記トリガ回数が前記カウンタの値に一致する前記検出条件データを特定することを特徴とする計算機システム。
【請求項４】
請求項１に記載の計算機システムであって、
前記検出条件は、前記評価値及び閾値を用いた条件式であることを特徴とする計算機システム。
【請求項５】
計算機システムが実行する、入力データに対して予測値を出力するモデルを生成するための機械学習の制御方法であって、
前記計算機システムは、プロセッサ及び前記プロセッサに接続される記憶装置を有する計算機を有し、
前記機械学習は、前記モデルを定義するパラメータを更新する学習処理を複数回実行する処理であって、
前記機械学習の制御方法は、
前記計算機が、判定タイミングを規定するトリガ回数、及び前記モデルを生成するための機械学習の失敗予兆を検出するために用いる少なくとも一つの評価値により定義される検出条件を含む検出条件データを格納する学習判定情報を取得する第１のステップと、
前記計算機が、前記パラメータの初期値を設定して、前記機械学習を開始する第２のステップと、
前記計算機が、前記学習処理を実行した後、前記パラメータの初期値が設定された後の前記学習処理の実行回数を表すカウンタを更新する第３のステップと、
前記計算機が、前記トリガ回数が前記カウンタの値に一致する前記検出条件データを特定する第４のステップと、
前記計算機が、前記特定された検出条件データに含まれる検出条件に基づいて、前記機械学習の失敗予兆が検出されたか否かを判定する第５のステップと、
前記計算機が、前記機械学習の失敗予兆が検出された場合、前記パラメータ及び前記カウンタを初期化した後、前記機械学習を継続する第６のステップと、を含むことを特徴とする機械学習の制御方法。
【請求項６】
請求項５に記載の機械学習の制御方法であって、
前記計算機システムは、前記機械学習における前記学習処理の実行回数の上限値を管理し、
前記機械学習の制御方法は、前記計算機が、前記カウンタの値が前記上限値以上である場合、前記機械学習を終了するステップと、を含み、
前記第６のステップは、
前記計算機が、前記機械学習の失敗予兆が検出された場合、前記上限値を前記カウンタの値で減算した値を新たな前記上限値として設定するステップと、
前記計算機が、前記カウンタを初期化するステップと、を含むことを特徴とする機械学習の制御方法。
【請求項７】
請求項６に記載の機械学習の制御方法であって、
前記検出条件データは、前記上限値を用いて定義される、当該検出条件データを適用するか否かを判定するための適用条件を含み、
前記第４のステップは、
前記計算機が、前記上限値に基づいて、前記適用条件を満たす前記検出条件データを選択するステップと、
前記計算機が、前記選択された検出条件データの中から、前記トリガ回数が前記カウンタの値に一致する前記検出条件データを特定するステップと、を含むことを特徴とする機械学習の制御方法。
【請求項８】
請求項５に記載の機械学習の制御方法であって、
前記検出条件は、前記評価値及び閾値を用いた条件式であることを特徴とする機械学習の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械学習の制御に関する。
【背景技術】
【０００２】
与えられたデータに対して人間が識別基準を書き下すことが困難な問題であっても、機械学習の技術により、データの特徴を自動的に学習し、未知データに対して予測値を得ることが可能となった。
【０００３】
機械学習では、近年注目を集めているディープラーニングにおけるニューラルネットワーク等のモデルを構築し、学習データを用いてモデルを特徴づけるパラメータが決定される。従来の機械学習では、乱数等に基づいてパラメータの初期値が設定され、学習処理（反復計算）を実行してパラメータが逐次更新される。このとき、パラメータにより決まる目的関数を定義し、学習データに対し目的関数の値が最小となるように学習が行われる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０５−１９７８２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
図９は、パラメータの初期値とモデルの出力の精度との関係性の一例を示すグラフである。ここでは、横軸はパラメータを表し、縦軸は目的関数の値を表すものとする。また、目的関数は、モデルの出力値と理想的な値との乖離の度合いを出力する関数であるものとする。なお、図９の値Ｆは、所望の精度が実現できる目的関数の値を表す。
【０００６】
パラメータの初期値が適切でない場合、良いモデルを生成することができない。例えば、パラメータの初期値として図９に示すＰ’０が設定された場合、学習結果は必ずしも最適ではないモデル（局所的最適解）に収束する。しかし、パラメータに初期値Ｐ’１が設定された場合、最適なモデル（大域的最適解）に収束する。また、モデルの複雑化に伴って目的関数も複雑になるため、複雑なモデルでは最適なパラメータ、すなわち、大域的最適解を導出することは困難になる。そのため多くの場合、局所的最適解が学習結果（最終的なモデル）として出力される。
【０００７】
局所的最適解に対応するモデルが、十分な精度を実現できる場合には問題がない。しかし、学習前後のモデルの精度に差がない場合、又は、所望の精度が得られない場合、機械学習は失敗であるため、パラメータに異なる初期値を与えて再度、機械学習を実行する必要がある。前述のような機械学習の失敗はモデルが複雑になるほど発生しやすい。
【０００８】
前述のような問題に対して、特許文献１に記載の技術が知られている。特許文献１には、「所定回数学習を行ったニューラルネットに対し誤差２乗和の変化量、正答率並びにその変化量を検出することにより、学習状況（最適解に収束しているか否か、局所解に陥っていないか、並びにニューロン数は適切か）を判断し、必要に応じて中間層にニューロンを追加したり、不良ニューロンを削除したり或いはその不良ニューロンの重みを初期化し直した後、再度学習を行う。」ことが記載されている。
【０００９】
特許文献１に記載の技術は、ニューラルネットワーク以外のモデルには適用できない。また、学習データ及びモデルが異なると、学習状況、すなわち、学習の失敗を判定するための指標も異なる。
【００１０】
本発明は、様々な機械学習方式及びモデルに適用でき、かつ、効率的な機械学習を実現するシステム及び方法を提供する。
【課題を解決するための手段】
【００１１】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、入力データに対して予測値を出力するモデルを生成するための機械学習を実行する計算機システムであって、プロセッサ及び前記プロセッサに接続される記憶装置を備え、前記機械学習は、前記モデルを定義するパラメータを更新する学習処理を複数回実行する処理であって、前記プロセッサは、判定タイミングを規定するトリガ回数、及び前記モデルを生成するための機械学習の失敗予兆を検出するために用いる少なくとも一つの評価値により定義される検出条件を含む検出条件データを格納する学習判定情報を取得し、前記パラメータの初期値を設定して、前記機械学習を開始し、前記学習処理を実行した後、前記パラメータの初期値が設定された後の前記学習処理の実行回数を表すカウンタを更新し、前記トリガ回数が前記カウンタの値に一致する前記検出条件データを特定し、前記特定された検出条件データに含まれる検出条件に基づいて、前記機械学習の失敗予兆が検出されたか否かを判定し、前記機械学習の失敗予兆が検出された場合、前記パラメータ及び前記カウンタを初期化した後、前記機械学習を継続する。
【発明の効果】
【００１２】
本発明の一形態によれば、様々な機械学習方式及びモデルに適用でき、かつ、効率的な機械学習を実現できる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１３】
【図１】実施例１の計算機システムの構成の一例を示す図である。
【図２】実施例１の学習部が表示する設定画面の一例を示す図である。
【図３】実施例１の学習部が表示する設定画面の一例を示す図である。
【図４】目的関数及びパラメータの関係性の一例を示すグラフである。
【図５】実施例１の計算機システムが実行する機械学習を説明するフローチャートである。
【図６】実施例２の学習部が表示する設定画面の一例を示す図である。
【図７】実施例２の学習部が表示する設定画面の一例を示す図である。
【図８】実施例２の計算機システムが実行する機械学習を説明するフローチャートである。
【図９】パラメータの初期値とモデルの出力の精度との関係性の一例を示すグラフである。
【発明を実施するための形態】
【００１４】
以下、本発明の実施例を、図面を用いて説明する。ただし、本発明は以下に示す実施例の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【００１５】
以下に説明する発明の構成において、同一又は類似する構成又は機能には同一の符号を付し、重複する説明は省略する。
【００１６】
本明細書において、機械学習とは、入力データに対して予測値を出力するモデルを生成するための処理を意味する。
【００１７】
また、機械学習では、学習データを用いて、モデルを定義するパラメータを更新する学習処理が複数回実行される。なお、学習処理の回数は、ディープラーニングにおけるエポック数に相当する。
【実施例１】
【００１８】
実施例１では、機械学習の失敗予兆を検出するための検出条件が複数設定され、機械学習を行う計算機システムは、複数の検出条件に基づいて機械学習の失敗予兆を検出する。計算機システムは、機械学習の失敗予兆が検出された場合、パラメータを初期化し、機械学習をやり直す。これによって、学習の成功率を効率的かつ迅速に向上できる。また、計算機システムは、機械学習のやり直しに伴う計算時間の増加を防止するために、学習処理の回数（上限値）を調整して総計算時間を一定に保つ手段も提供する。
【００１９】
（１）システム構成
まず、実施例１の計算機システムの構成について説明する。図１は、実施例１の計算機システムの構成の一例を示す図である。
【００２０】
計算機システムは、一つ以上の計算機１００から構成される。図１では、説明を簡単にするために、一つの計算機１００から構成される計算機システムを示す。
【００２１】
計算機１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１０、主記憶装置１１１、副記憶装置１１２、及びインタフェース１１３を有する。各ハードウェアは内部バスを介して接続される。
【００２２】
ＣＰＵ１１０は、主記憶装置１１１に格納されるプログラムを実行する。ＣＰＵ１１０がプログラムにしたがって処理を実行することによって、特定の機能を実現する機能部（モジュール）として動作する。以下の説明では、機能部を主語に処理を説明する場合、ＣＰＵ１１０が当該モジュールを実現するプログラムを実行していることを示す。
【００２３】
主記憶装置１１１は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリであり、ＣＰＵ１１０が実行するプログラム及びプログラムの実行に必要なデータを格納する。
【００２４】
実施例１の主記憶装置１１１は、学習部１２０を実現するプログラムを格納し、また、学習データ情報１３０及びパラメータ情報１４０を格納する。
【００２５】
学習部１２０は、モデルを生成するための機械学習を実行する。学習部１２０は、学習失敗検出部１２１、パラメータ初期化部１２２、及び計算時間抑制部１２３を含む。
【００２６】
学習失敗検出部１２１は、機械学習の失敗予兆を検出するために用いる評価値により定義された検出条件に基づいて、機械学習の失敗予兆を検出する。パラメータ初期化部１２２は、モデルを定義するパラメータの初期値を設定する。計算時間抑制部１２３は、機械学習に要する計算時間を抑制する。
【００２７】
なお、学習部１２０に含まれる各機能部は、複数の機能部を一つの機能部にまとめてもよいし、一つの機能部を機能毎に複数の機能部に分けてもよい。
【００２８】
学習データは、機械学習に用いられるデータであり、モデルに入力する入力データと、正解データとから構成される。学習データ情報１３０は、学習データに含まれる入力データと正解データを結び付け、かつ必要があればミニバッチを構築する等により管理し学習部１２０において利用できるようにするための情報である。パラメータ情報１４０は、モデルを定義するパラメータである。なお、パラメータ情報１４０には、モデルの構造等を定義するデータが格納されてもよい。
【００２９】
副記憶装置１１２は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶装置であり、データを永続的に格納する。
【００３０】
インタフェース１１３は、外部装置と接続し、又は通信するためのインタフェースである。インタフェース１１３は、例えば、Ｉ／Ｏインタフェース及びネットワークインタフェース等である。計算機１００は、ネットワーク１０５を介して外部記憶装置１０１と接続するインタフェース１１３、入出力装置１０２と接続するインタフェース１１３、及びリムーバブルメディア１０３と接続するインタフェース１１３を有する。なお、計算機１００には、ネットワーク１０５を介して、入出力装置１０２を有する端末が接続されてもよい。
【００３１】
外部記憶装置１０１は、計算機１００が扱うデータを格納する記憶領域を提供する装置である。外部記憶装置１０１と接続するネットワーク１０５は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）及びインターネット等である。なお、本発明はネットワーク１０５の種別に限定されない。また、ネットワーク１０５の接続方式は有線又は無線のいずれでもよい。
【００３２】
入出力装置１０２は、ユーザが計算機１００を操作するために使用する装置である。入出力装置１０２は、キーボード、マウス、タッチパネル、及びディスプレイ等から構成される。なお、計算機１００は入出力装置を内蔵してもよい。
【００３３】
リムーバブルメディア１０３は、計算機１００に着脱可能なＣＤ及びＤＶＤ等の記憶媒体である。なお、リムーバブルメディア１０３は、学習データ情報１３０及びパラメータ情報１４０を取得する手段の一例を示すものであって、必須の構成ではない。
【００３４】
主記憶装置１１１に格納される学習データ情報１３０及びパラメータ情報１４０は、副記憶装置１１２、外部記憶装置１０１、及びリムーバブルメディア１０３のいずれかに格納されてもよい。なお、図１の記号（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）は、格納先が異なる情報を区別するためのものである。
【００３５】
この場合、ＣＰＵ１１０は、計算機１００の起動時又は機械学習の実行時に、副記憶装置１１２、外部記憶装置１０１、及びリムーバブルメディア１０３のいずれかに格納される学習データ情報１３０及びパラメータ情報１４０を読み出し、主記憶装置１１１にロードする。また、計算機１００の電源を切る場合、又は、主記憶装置１１１の空き容量が不足した場合、計算機１００は、主記憶装置１１１から他の記憶装置に情報を移動又はコピーしてもよい。
【００３６】
（２）検出条件の設定
次に、実施例１の計算機システムに設定される検出条件の設定方法について説明する。
【００３７】
学習部１２０は、機械学習の失敗予兆を検出するための条件（検出条件）を設定するための画面を入出力装置１０２に表示する。図２及び図３は、実施例１の学習部１２０が表示する設定画面の一例を示す図である。
【００３８】
図２に示す設定画面２００は、予め規定された１つ以上の評価値毎の検出条件を設定するための画面である。本発明が提供する評価値の詳細は、後述する。設定画面２００は、目的関数欄２０１、正解率欄２０２、パラメータ変化率欄２０３、及び操作ボタン欄２０４を含む。
【００３９】
目的関数欄２０１は、評価値の一つである目的関数の値に関する検出条件を設定するための欄である。目的関数欄２０１に設定された値は検出条件データとして出力される。
【００４０】
目的関数欄２０１は、トリガ回数設定欄２１１、検出条件設定欄２１２、及びグラフ表示欄２１３を含む。
【００４１】
グラフ表示欄２１３は、目標関数の値及び学習回数の関係を示すグラフを表示する欄である。グラフ表示欄２１３に表示されるグラフは、過去に実行された機械学習の履歴又は現在実行中の機械学習の結果に基づいて表示される。
【００４２】
トリガ回数設定欄２１１は、目的関数欄２０１に設定された検出条件に基づいて後述の失敗判定処理（図５参照）を実行するタイミングを規定する学習回数（トリガ回数）を設定するための欄である。
【００４３】
検出条件設定欄２１２は、目的関数を用いて定義される検出条件を設定するための欄である。検出条件設定欄２１２には、例えば、目的関数及び閾値を用いた条件式が設定される。
【００４４】
検出条件設定欄２１２に設定される検出条件を満たす場合、学習失敗検出部１２１は、機械学習の失敗予兆が検出されたと判定する。
【００４５】
なお、ユーザは、トリガ回数設定欄２１１及び検出条件設定欄２１２に、直接、値を設定せずに、グラフ表示欄２１３に表示されるカーソルを操作して、トリガ回数及び閾値を設定してもよい。
【００４６】
正解率欄２０２は、評価値の一つであり、機械学習のうち分類問題の正解率に関する検出条件を設定するための欄である。ここで正解率は、モデルが予測した分類結果が正解と一致する割合を表す。正解率欄２０２に設定された値は、検出条件データとして出力される。
【００４７】
正解率欄２０２は、トリガ回数設定欄２２１、検出条件設定欄２２２、及びグラフ表示欄２２３を含む。
【００４８】
グラフ表示欄２２３は、正解率及び学習回数の関係を示すグラフを表示する欄である。グラフ表示欄２２３に表示されるグラフは、過去に実行された機械学習の履歴又は現在実行中の機械学習の結果に基づいて表示される。
【００４９】
トリガ回数設定欄２２１は、正解率欄２０２に設定された検出条件に基づいて後述の失敗判定処理（図５参照）を実行するタイミングを規定する学習回数（トリガ回数）を設定するための欄である。
【００５０】
検出条件設定欄２２２は、正解率を用いて定義される検出条件を設定するための欄である。検出条件設定欄２２２には、例えば、正解率及び閾値を用いた条件式が設定される。
【００５１】
検出条件設定欄２２２に設定される検出条件を満たす場合、学習失敗検出部１２１は、機械学習の失敗予兆が検出されたと判定する。
【００５２】
なお、ユーザは、トリガ回数設定欄２２１及び検出条件設定欄２２２に、直接、値を設定せずに、グラフ表示欄２２３に表示されるカーソルを操作して、トリガ回数及び閾値を設定してもよい。
【００５３】
パラメータ変化率欄２０３は、評価値の一つであるパラメータ変化率に関する検出条件を設定するための欄である。ここで、パラメータ変化率は、モデルを定義するパラメータの学習前後の変化の程度を表す。パラメータ変化率欄２０３に設定された値は、検出条件データとして出力される。
【００５４】
パラメータ変化率欄２０３は、トリガ回数設定欄２３１、検出条件設定欄２３２、及びグラフ表示欄２３３を含む。
【００５５】
グラフ表示欄２３３は、パラメータ変化率及び学習回数の関係を示すグラフを表示する欄である。グラフ表示欄２３３に表示されるグラフは、過去に実行された機械学習の履歴又は現在実行中の機械学習の結果に基づいて表示される。
【００５６】
トリガ回数設定欄２３１は、パラメータ変化率欄２０３に設定された検出条件に基づいて後述の失敗判定処理（図５参照）を実行するタイミングを規定する学習回数（トリガ回数）を設定するための欄である。
【００５７】
検出条件設定欄２３２は、パラメータ変化率を用いて定義される検出条件を設定するための欄である。検出条件設定欄２３２には、例えば、パラメータ変化率及び閾値を用いた条件式が設定される。
【００５８】
検出条件設定欄２３２に設定される検出条件を満たす場合、学習失敗検出部１２１は、機械学習の失敗予兆が検出されたと判定する。
【００５９】
なお、ユーザは、トリガ回数設定欄２３１及び検出条件設定欄２３２に、直接、値を設定せずに、グラフ表示欄２３３に表示されるカーソルを操作して、トリガ回数及び閾値を設定してもよい。
【００６０】
操作ボタン欄２０４は、各種操作を行うためのボタンを表示する欄である。操作ボタン欄２０４は、設定ボタン２４１及び開始ボタン２４２を含む。
【００６１】
設定ボタン２４１は、目的関数欄２０１、正解率欄２０２、及びパラメータ変化率欄２０３に設定した検出条件データを含む学習判定情報を計算機１００に設定するためのボタンである。設定ボタン２４１が操作された場合、学習判定情報を含む設定要求が計算機１００に出力される。この場合、計算機１００は、学習判定情報を主記憶装置１１１に格納する。
【００６２】
開始ボタン２４２は、機械学習の開始を指示するためのボタンである。開始ボタン２４２が操作された場合、開始要求が計算機１００に出力される。
【００６３】
図３に示す設定画面３００は、一つ以上の評価値から構成される評価値群毎の検出条件を設定するための画面である。設定画面３００は、検出条件欄３０１及び操作ボタン欄３０２を含む。
【００６４】
操作ボタン欄３０２は、各種操作を行うためのボタンを表示する欄である。操作ボタン欄３０２は、追加ボタン３３１、設定ボタン３３２、及び開始ボタン３３３を含む。
【００６５】
追加ボタン３３１は、検出条件欄３０１を追加するための操作ボタンである。追加ボタン３３１が追加された場合、設定画面３００に検出条件欄３０１が追加される。
【００６６】
設定ボタン３３２及び開始ボタン３３３は、設定ボタン２４１及び開始ボタン２４２と同一のものである。
【００６７】
検出条件欄３０１は、トリガ回数設定欄３１１、追加ボタン３１２、及び検出条件設定欄３１３を含む。検出条件欄３０１に設定された値は、検出条件データとして出力される。
【００６８】
トリガ回数設定欄３１１は、検出条件欄３０１に設定された検出条件に基づいて後述の失敗判定処理（図５参照）を実行するタイミングを規定する学習回数（トリガ回数）を設定するための欄である。
【００６９】
追加ボタン３１２は、検出条件設定欄３１３に条件式設定欄３２１を追加するためのボタンである。検出条件設定欄３１３に条件式設定欄３２１が存在しない状態で追加ボタン３１２が操作された場合、検出条件設定欄３１３に条件式設定欄３２１が追加される。検出条件設定欄３１３に条件式設定欄３２１が一つ以上存在する状態で追加ボタン３１２が操作された場合、検出条件設定欄３１３に条件式設定欄３２１及び論理演算子設定欄３２２が追加される。
【００７０】
条件式設定欄３２１は、機械学習の失敗予兆の現れを判定するための評価値の条件式を設定するための欄である。論理演算子設定欄３２２は、複数の条件式の適用方法を設定するための欄である。図３の論理演算子設定欄３２２は、「ＡＮＤ」及び「ＯＲ」等を選択するプルダウンが表示される。条件式設定欄３２１に値を設定することによって、少なくとも一つの評価値を用いて定義される検出条件を設定することができる。なお、ＡＮＤ指定された条件は必須、ＯＲ指定された条件はどれか１つが満たされればよいものとする。
【００７１】
検出条件設定欄３１３に設定された検出条件を満たす場合、学習失敗検出部１２１は、機械学習の失敗予兆が検出されたと判定する。
【００７２】
設定画面２００、３００のどちらの設定ボタンを用いた場合であっても、トリガ回数及び検出条件から構成される検出条件データを含む学習判定情報が計算機１００に設定される。
【００７３】
（３）評価値
実施例１の計算機１００は、モデルに適した評価値の振る舞いを監視することによって機械学習の失敗予兆を検出する。実施例１では、目的関数、正解率、及びパラメータ変化率を評価値として採用する。これらの評価値を採用する理由は次の通りである。
【００７４】
従来技術では、目的関数の変化が十分小さくなった時点で機械学習を終了したと見なされる。すなわち、目的関数は、学習が停滞しているか否かを判定するための評価値として最も基本的なものと考えられる。なお、判定方法は、目的関数の値そのものではなく、パラメータの初期値が設定されたときの目的関数の値、又は、１回若しくは少数回、学習処理が実行された後の目的関数の値と、現在の目的関数の値との比に基づいて設定されてもよい。
【００７５】
クラスの分類するためのモデルの場合、機械学習の失敗予兆を検出するために分類結果の正解率を監視することも有効である。図４に示すように、初期値Ｐ０は、実用的な精度を有さないモデルＰ２が生成されてしまう初期値であり、初期値Ｐ１は、実用的な精度を有するモデルＰ３が生成される初期値である。なお、図４における値Ｆは、所望の精度が実現できる損失関数の値を表す。いずれの初期値が設定された場合でも、目的関数の値は学習処理を実行することによって改善されるため、目的関数の監視だけでは、機械学習の失敗予兆を検出することが難しい。一方、正解率の違いは顕著に表れる。したがって、正解率を評価値に採用するのは有効であると考えられる。
【００７６】
モデルを表現する関数ｆ（ｘ）の最終的な出力が、ディープラーニングで広く用いられるＲｅＬＵ関数を介して出力される場合を考える。なお、ＲｅＬＵ関数は式（１）で与えられる。
【００７７】
【数１】
2020161031.tif 000003
【００７８】
このとき、学習処理によって関数ｆ（ｘ）の出力が改善されても関数ｆ（ｘ）の値が０以下の場合、出力ｒ（ｆ（ｘ））は０のままである。そのため、関数ｆ（ｘ）の値が０より大きくなって初めて、目的関数及び正解率が変化する。つまり、目的関数及び正解率を監視しても学習の進み具合を見落とす可能性がある。そこで、パラメータの変化率を評価値として用いる。パラメータの変化率は様々考えられるが、その一例として以下の二つを示す。
【００７９】
（例１）学習処理の前後のパラメータの値の合計値を算出し、これらの合計値の比をパラメータの変化率とする。なお、パラメータの値が負である可能性もあるため、パラメータの値の絶対値の合計値を算出することが望ましい。
【００８０】
（例２）学習処理の前後のパラメータの値の変化量の合計値と、前回の学習処理の前後のパラメータの値の変化率の合計値との比をパラメータの変化率とする。なお、パラメータの値の変化量が負である可能性もあるため、変化量の絶対値の合計値を算出することが望ましい。
【００８１】
（４）処理の詳細
次に、機械学習開始要求を受信した場合に実行する処理について説明する。図５は、実施例１の計算機システムが実行する機械学習を説明するフローチャートである。
【００８２】
以下の説明では、機械学習における学習処理の実行回数の上限値Ｎｍａｘは予め設定されているものとする。
【００８３】
まず、学習部１２０は、変数Ｎ、ｎ、ｃ＿ｉを初期化する（ステップＳ１０１）。
【００８４】
具体的には、学習部１２０は初期値として、変数ＮをＮｍａｘ、ｎを０にそれぞれ設定する。また、学習部１２０は、変数ｃ＿ｉに、ｉ番目の評価値に対応するトリガ回数設定欄７１２に設定された値を設定する。ここで、変数Ｎはその時点で進行している学習処理を実行すべき回数の上限を表す変数であり、変数ｎはパラメータの初期化後に学習処理を実行した回数を表す変数である。変数ｃ＿ｉは、ｉ番目の評価値に対応するトリガ回数を表す変数である。
【００８５】
次に、学習部１２０のパラメータ初期化部１２２はパラメータの初期値を設定する（ステップＳ１０２）。
【００８６】
このとき、学習部１２０のパラメータ初期化部１２２は、パラメータ情報１４０にパラメータの初期値を格納する。なお、パラメータの初期値はランダムに設定されるものとする。
【００８７】
次に、学習部１２０は、学習データを用いて学習処理を実行し、パラメータを更新する（ステップＳ１０３）。
【００８８】
このとき、学習部１２０は、パラメータの更新結果をパラメータ情報１４０に格納する。
【００８９】
次に、学習部１２０は、変数ｎを更新する（ステップＳ１０４）。
【００９０】
具体的には、学習部１２０は、変数ｎに１を加算した値を変数ｎに設定する。
【００９１】
次に、学習部１２０は、終了条件を満たすか否かを判定する（ステップＳ１０５）。
【００９２】
具体的には、学習部１２０は、変数ｎがＮ以上となった場合、終了条件を満たすと判定する。
【００９３】
終了条件を満たすと判定された場合、学習部１２０は機械学習を終了する。
【００９４】
終了条件を満たさないと判定された場合、学習部１２０は各検出条件について、検出条件データに含まれるトリガ回数ｃ＿ｉが変数ｎに一致する検出条件データが存在するか否かを判定する（ステップＳ１０６）。なお、ｉは検出条件データを識別する添字である。
【００９５】
検出条件データに含まれるトリガ回数ｃ＿ｉが変数ｎに一致する検出条件データが存在しないと判定された場合、学習部１２０は、ステップＳ１０３に戻り、同様の処理を実行する。
【００９６】
検出条件データに含まれるトリガ回数ｃ＿ｉが変数ｎに一致する検出条件データが存在すると判定された場合、学習部１２０の学習失敗検出部１２１は、当該検出条件データに基づいて失敗判定処理を実行する（ステップＳ１０７）。
【００９７】
具体的には、学習失敗検出部１２１は、検出条件データに含まれる検索条件に用いられる評価値を算出する。学習失敗検出部１２１は、算出された評価値に基づいて、検出条件データに設定された検出条件を満たすか否かを判定する。
【００９８】
設定画面２００を用いて設定された検出条件データの場合、学習失敗検出部１２１は、例えば、目的関数の値が閾値より小さいか否か、正解率が閾値より小さいか否か、又は変化率が小さいか否かを判定する。学習失敗検出部１２１は、目的関数の値が閾値より小さい場合、正解率が閾値より小さい場合、又は変化率が小さい場合、検出条件を満たすと判定する。
【００９９】
設定画面３００を用いて設定された検出条件データの場合、学習失敗検出部１２１は、各評価値の条件式の判定結果の組合せに基づいて、検出条件を満たすか否かを判定する。例えば、「検出条件２」に対応する検出条件データの場合、学習失敗検出部１２１は、正解率が閾値より小さい、又は、変化率が閾値より小さい場合、検出条件を満たすと判定する。
【０１００】
次に、学習部１２０の学習失敗検出部１２１は、失敗判定処理の結果に基づいて、機械学習の失敗予兆が検出されたか否かを判定する（ステップＳ１０８）。
【０１０１】
具体的には、学習失敗検出部１２１は、検出条件を満たす場合、機械学習の失敗予兆が検出されたと判定する。
【０１０２】
機械学習の失敗予兆が検出されていないと判定された場合、学習部１２０は、ステップＳ１０３に戻り、同様の処理を実行する。
【０１０３】
機械学習の失敗予兆が検出されたと判定された場合、学習部１２０のパラメータ初期化部１２２は、パラメータに新たな初期値を設定する（ステップＳ１０９）。
【０１０４】
このとき、学習部１２０のパラメータ初期化部１２２は、パラメータ情報１４０にパラメータの初期値を格納する。なお、パラメータの初期値はランダムに設定されるものとする。
【０１０５】
次に、学習部１２０の計算時間抑制部１２３は、上限値ＮをＮ−ｎに更新する（ステップＳ１１０）。また、学習部１２０の計算時間抑制部１２３は、変数ｎに０を設定し（ステップＳ１１１）、その後、ステップＳ１０３に戻り、同様の処理を実行する。
【０１０６】
以上の処理により、機械学習における学習処理の総実行回数が元々の上限値Ｎｍａｘを超えないように制御される。これによって、機械学習に要する計算時間を抑制することができる。
【０１０７】
（５）適用例
次に、実施例１の適用例について説明する。
【０１０８】
（適用例１）機械学習のアルゴリズムとしてディープラーニングを採用する。なお、目的関数として損失関数が用いられる。
【０１０９】
（適用例２）機械学習のアルゴリズムとしてＥＭアルゴリズムを採用する。例えば、ＥＭアルゴリズムを用いて正規混合分布を学習する場合、実施例１に示すようにＥＭアルゴリズムを変更することによって、効率的な機械学習を実現できる。なお、目的関数としては通常、対数尤度が用いられる。
【０１１０】
（適用例３）学習データをＤＮＡ配列に由来する数値ベクトルとする。ＤＮＡ配列を数値ベクトルに変換する方法は様々な方法が考えられる。ここでは、ｏｎｅ  ｈｏｔ  ｅｎｃｏｄｉｎｇと呼ばれる例について述べる。ｏｎｅ  ｈｏｔ  ｅｎｃｏｄｉｎｇでは、各塩基を３つの０及び１つの１の並びで表現する。１の位置は塩基種により異なる。０と１の並べ方を、例えばＡ＝１０００、Ｔ＝０１００、Ｇ＝００１０、Ｃ＝０００１とする場合、配列ＡＴＧＣは１００００１００００１００００１と表現できる。ＤＮＡ配列を数値から成るベクトルとして入力することで、ゲノム上で特定の機能を持つ配列、例えばプロモータ領域を認識するモデルを生成できる。
【０１１１】
（６）実施例１の特徴及び効果
次に、実施例１で説明した計算機システムが実行する機械学習の特徴及び効果について説明する。
【０１１２】
実施例１の計算機システムは、少なくとも一つの評価値により定義される複数の検出条件に基づいて、機械学習の失敗予兆を検出する。複数の検出条件を用いることによって、様々なモデルを生成する機械学習の失敗予兆を精度よく検出できる。
【０１１３】
また、機械学習の失敗予兆の発生を判定するタイミングを検出条件毎に設定できる。タイミングを小さくすることによって、早期に機械学習の失敗予兆を検出できる。また、検出条件毎に失敗判定処理のタイミングを変えることによって、失敗予兆の検出精度の向上、及び処理負荷を低減による処理の高速化が可能となる。
【０１１４】
また、再学習は数値パラメータの初期化のみにより行われるため、ニューラルネットワーク以外の機械学習方式やモデルにも適用することができる。
【０１１５】
また、これまでの学習処理の実行回数を加味して、学習処理の反復回数の上限値（変数Ｎ）を調整することで、機械学習に要する計算時間の増大を抑制することができる。
【実施例２】
【０１１６】
実施例２では、学習回数の上限値Ｎを考慮した検出条件を設定する点が異なる。例えば、上限値が一定値より大きい場合、判定タイミングを長くすることによって、機械学習の失敗予兆の検出精度を高めることができる。また、上限値が一定値より小さい場合、判定タイミングを短くすることによって、早期に機械学習の失敗予兆を検出しつつ、学習回数を確保することができる。以下、実施例１との差異を中心に実施例２について説明する。
【０１１７】
実施例２の計算機システムの構成は実施例１と同一である。実施例２の計算機１００のハードウェア構成及びソフトウェア構成は実施例１と同一である。実施例２では、設定する検出条件データが異なる。
【０１１８】
図６及び図７は、実施例２の学習部１２０が表示する設定画面の一例を示す図である。
【０１１９】
図６に示す設定画面６００は、予め規定された評価値毎の検出条件を設定するための画面である。設定画面６００は、目的関数欄６０１、正解率欄６０２、パラメータ変化率欄６０３、及び操作ボタン欄６０４を含む。
【０１２０】
目的関数欄６０１は、評価値の一つである目的関数の値に関する検出条件を設定するための欄である。
【０１２１】
目的関数欄６０１は、追加ボタン６１１及び検出条件設定テーブル６１２を含む。なお、目的関数欄６０１は、実施例１のようにグラフを表示する欄を設けてもよい。
【０１２２】
追加ボタン６１１は、検出条件設定テーブル６１２にエントリを追加するためのボタンである。
【０１２３】
検出条件設定テーブル６１２は、検出条件を設定するためのテーブルである。検出条件設定テーブル６１２は、適用条件６２１、トリガ回数６２２、及び検出条件６２３から構成されるエントリを含む。一つのエントリが一つの検出条件データに対応する。
【０１２４】
適用条件６２１は、適用する検索条件を選択するために、上限値Ｎに対する条件を格納するフィールドである。後述するように、実施例２では、適用条件６２１を満たす検出条件を用いて失敗判定処理が実行される。
【０１２５】
トリガ回数６２２は、目的関数欄６０１に設定された検出条件に基づいて失敗判定処理を実行するタイミングを規定する学習回数（トリガ回数）を格納するフィールドである。
【０１２６】
検出条件６２３は、目的関数を用いて定義される検出条件を格納するフィールドである。検出条件６２３には、例えば、目的関数及び閾値を用いた条件式が格納される。
【０１２７】
実施例２では、上限値の範囲毎に、目的関数を用いて定義される検出条件が設定される。
【０１２８】
正解率欄６０２は、評価値の一つである正解率に関する検出条件を設定するための欄である。
【０１２９】
正解率欄６０２は、追加ボタン６３１及び検出条件設定テーブル６３２を含む。なお、正解率欄６０２は、実施例１のようにグラフを表示する欄を設けてもよい。
【０１３０】
追加ボタン６３１は、検出条件設定テーブル６３２にエントリを追加するためのボタンである。
【０１３１】
検出条件設定テーブル６３２は、検出条件データを設定するためのテーブルである。検出条件設定テーブル６３２は、適用条件６４１、トリガ回数６４２、及び検出条件６４３から構成されるエントリを含む。一つのエントリが一つの検出条件データに対応する。
【０１３２】
適用条件６４１は、適用する検出条件を選択するために、上限値Ｎに対する条件を格納するフィールドである。後述するように、実施例２では、適用条件６４１を満たす検出条件を用いて失敗判定処理が実行される。
【０１３３】
トリガ回数６４２は、正解率欄６０２に設定された検出条件に基づいて失敗判定処理を実行するタイミングを規定する学習回数（トリガ回数）を格納するフィールドである。
【０１３４】
検出条件６４３は、正解率を用いて定義される検出条件を格納するフィールドである。検出条件６４３には、例えば、正解率及び閾値を用いた条件式が格納される。
【０１３５】
実施例２では、上限値の範囲毎に、正解率を用いて定義される検出条件が設定される。
【０１３６】
パラメータ変化率欄６０３は、評価値の一つであるパラメータ変化率に関する検出条件を設定するための欄である。
【０１３７】
パラメータ変化率欄６０３は、追加ボタン６５１及び検出条件設定テーブル６５２を含む。なお、パラメータ変化率欄６０３は、実施例１のようにグラフを表示する欄を設けてもよい。
【０１３８】
追加ボタン６５１は、検出条件設定テーブル６５２にエントリを追加するためのボタンである。
【０１３９】
検出条件設定テーブル６５２は、検出条件データを設定するためのテーブルである。検出条件設定テーブル６５２は、適用条件６６１、トリガ回数６６２、及び検出条件６６３から構成されるエントリを含む。一つのエントリが一つの検出条件データに対応する。
【０１４０】
適用条件６６１は、適用する検出条件を選択するために、上限値Ｎに対する条件を格納するフィールドである。後述するように、実施例２では、適用条件６６１を満たす検出条件を用いて失敗判定処理が実行される。
【０１４１】
トリガ回数６６２は、パラメータ変化率欄６０３に設定された検出条件に基づいて失敗判定処理を実行するタイミングを規定する学習回数（トリガ回数）を格納するフィールドである。
【０１４２】
検出条件６６３は、パラメータ変化率を用いて定義される検出条件を格納するフィールドである。検出条件６４３には、例えば、パラメータ変化率及び閾値を用いた条件式が格納される。
【０１４３】
実施例２では、上限値の範囲毎に、パラメータ変化率を用いて定義される検出条件が設定される。
【０１４４】
操作ボタン欄６０４は、操作ボタン欄２０４と同一の欄であるため、説明を省略する。
【０１４５】
図７に示す設定画面７００は、評価値群毎の検出条件を設定するための画面である。設定画面７００は、検出条件欄７０１及び操作ボタン欄７０２を含む。
【０１４６】
操作ボタン欄７０２の追加ボタン７３１、設定ボタン７３２、及び開始ボタン７３３は、操作ボタン欄３０２の追加ボタン３３１、設定ボタン３３２、及び開始ボタン３３３と同一のものである。
【０１４７】
検出条件欄７０１は、適用条件設定欄７１１、トリガ回数設定欄７１２、追加ボタン７１３、及び検出条件設定欄７１４を含む。検出条件欄７０１に設定された値は、検出条件データとして出力される。
【０１４８】
適用条件設定欄７１１は、検出条件を選択するために、上限値に対する条件を設定するための欄である。後述するように、実施例２では、適用条件設定欄７１１を満たす検出条件を用いて失敗判定処理が実行される。
【０１４９】
トリガ回数設定欄７１２及び追加ボタン７１３は、トリガ回数設定欄３１１及び追加ボタン３１２と同一のものであるため、説明を省略する。また、検出条件設定欄７１４の条件式設定欄７２１及び論理演算子設定欄７２２は、検出条件設定欄３１３の条件式設定欄３２１及び論理演算子設定欄３２２と同一のものであるため、説明を省略する。
【０１５０】
設定画面２００、３００のどちらを用いた場合であっても、適用条件、トリガ回数、及び検出条件から構成される検出条件データを含む学習判定情報が計算機１００に設定される。
【０１５１】
図８は、実施例２の計算機システムが実行する機械学習を説明するフローチャートである。
【０１５２】
以下の説明では、機械学習における学習処理の実行回数の上限値Ｎｍａｘは予め設定されているものとする。
【０１５３】
ステップＳ１０１及びステップＳ１０２の処理が実行された後、学習部１２０は、学習判定情報から適用する検出条件データを選択する（ステップＳ１５１）。
【０１５４】
具体的には、学習部１２０は、現在の上限値Ｎに基づいて、適用条件を満たす検出条件データを選択する。
【０１５５】
ステップＳ１０１、ステップＳ１０２、ステップＳ１０３からステップＳ１０６、ステップＳ１０８からステップＳ１１１の処理は、実施例１と同一である。ただし、ステップＳ１０６で参照するｃ＿ｉの値は、設定画面６００又は７００での設定及びパラメータ初期化時のＮの値に基づき、ステップＳ１０１及びステップＳ１１０で設定するものとする。
【０１５６】
実施例２のステップＳ１０７では、学習失敗検出部１２１は、ステップＳ１５１で選択された検出条件データを用いて失敗判定処理を実行する。具体的な処理は実施例１と同一であるため説明を省略する。
【０１５７】
実施例２の計算機システムは、上限値に応じて、学習の失敗予兆の判定タイミングを調整できる。
【０１５８】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【０１５９】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＣＤ−Ｒ、ＤＶＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【０１６０】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、Ｃ／Ｃ＋＋、Ｐｅｒｌ、Ｐｙｔｈｏｎ、Ｊａｖａ（登録商標）等の広範囲のプログラム又はスクリプト言語で実装できる。
【０１６１】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【０１６２】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【０１６３】
１００  計算機
１０１  外部記憶装置
１０２  入出力装置
１０３  リムーバブルメディア
１０５  ネットワーク
１１０  ＣＰＵ
１１１  主記憶装置
１１２  副記憶装置
１１３  インタフェース
１２０  学習部
１２１  学習失敗検出部
１２２  パラメータ初期化部
１２３  計算時間抑制部
１３０  学習データ情報
１４０  パラメータ情報
２００、３００、６００、７００  設定画面
【図１】
2020161031.tif 000004
【図２】
2020161031.tif 000005
【図３】
2020161031.tif 000006
【図４】
2020161031.tif 000007
【図５】
2020161031.tif 000008
【図６】
2020161031.tif 000009
【図７】
2020161031.tif 000010
【図８】
2020161031.tif 000011
【図９】
2020161031.tif 000012