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

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

▶ 富士通株式会社の特許一覧

特開2024-61205機械学習支援プログラム、機械学習支援方法、および情報処理装置
<>
  • 特開-機械学習支援プログラム、機械学習支援方法、および情報処理装置 図1
  • 特開-機械学習支援プログラム、機械学習支援方法、および情報処理装置 図2
  • 特開-機械学習支援プログラム、機械学習支援方法、および情報処理装置 図3
  • 特開-機械学習支援プログラム、機械学習支援方法、および情報処理装置 図4
  • 特開-機械学習支援プログラム、機械学習支援方法、および情報処理装置 図5
  • 特開-機械学習支援プログラム、機械学習支援方法、および情報処理装置 図6
  • 特開-機械学習支援プログラム、機械学習支援方法、および情報処理装置 図7
  • 特開-機械学習支援プログラム、機械学習支援方法、および情報処理装置 図8
  • 特開-機械学習支援プログラム、機械学習支援方法、および情報処理装置 図9
  • 特開-機械学習支援プログラム、機械学習支援方法、および情報処理装置 図10
  • 特開-機械学習支援プログラム、機械学習支援方法、および情報処理装置 図11
  • 特開-機械学習支援プログラム、機械学習支援方法、および情報処理装置 図12
  • 特開-機械学習支援プログラム、機械学習支援方法、および情報処理装置 図13
  • 特開-機械学習支援プログラム、機械学習支援方法、および情報処理装置 図14
  • 特開-機械学習支援プログラム、機械学習支援方法、および情報処理装置 図15
  • 特開-機械学習支援プログラム、機械学習支援方法、および情報処理装置 図16
  • 特開-機械学習支援プログラム、機械学習支援方法、および情報処理装置 図17
  • 特開-機械学習支援プログラム、機械学習支援方法、および情報処理装置 図18
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024061205
(43)【公開日】2024-05-07
(54)【発明の名称】機械学習支援プログラム、機械学習支援方法、および情報処理装置
(51)【国際特許分類】
   G06F 8/33 20180101AFI20240425BHJP
   G06F 8/36 20180101ALI20240425BHJP
【FI】
G06F8/33
G06F8/36
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022168993
(22)【出願日】2022-10-21
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】古木 隆裕
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376BC12
5B376BC13
5B376BC14
5B376BC15
5B376BC50
5B376BC80
(57)【要約】
【課題】ユーザが編集しやすいプログラムを提示できるようにする。
【解決手段】情報処理装置は、ユーザの指示に基づくプログラム生成要求に応じて、機械学習モデルの生成に用いられる複数の候補プログラムそれぞれについて、ユーザの習熟度情報に基づいて、候補プログラムに使用している第1のプログラム部品を含む第1のプログラム部品集合に対するユーザの第1の習熟度を特定する。習熟度情報は、複数のプログラム部品集合それぞれの使用に関するユーザの習熟度を示し、ユーザによる候補プログラムの編集処理における複数のプログラム部品集合の使用実績と編集処理による候補プログラムの性能の変化とに基づき決定される情報である。そして情報処理装置は、複数の候補プログラムそれぞれについて、特定した第1の習熟度に基づいて、ユーザに提示する優先度を決定する。
【選択図】図5
【特許請求の範囲】
【請求項1】
ユーザの指示に基づくプログラム生成要求に応じて、複数のプログラム部品集合のいずれかに含まれるプログラム部品を使用して生成された、機械学習モデルの生成に用いられる複数の候補プログラムそれぞれについて、前記複数のプログラム部品集合それぞれの使用に関するユーザの習熟度を示し、前記ユーザによる候補プログラムの編集処理における前記複数のプログラム部品集合の使用実績と前記編集処理による候補プログラムの性能の変化とに基づき決定される習熟度情報に基づいて、候補プログラムに使用している第1のプログラム部品を含む第1のプログラム部品集合に対する前記ユーザの第1の習熟度を特定し、
前記複数の候補プログラムそれぞれについて、特定した前記第1の習熟度に基づいて、前記ユーザに提示する優先度を決定する、
処理をコンピュータに実行させる機械学習支援プログラム。
【請求項2】
前記複数の候補プログラムそれぞれの前記優先度に基づいて、前記複数の候補プログラムのうちの少なくとも1つを、前記プログラム生成要求に応じた生成結果である第1のプログラムとして出力する、
処理をさらにコンピュータに実行させる請求項1記載の機械学習支援プログラム。
【請求項3】
前記ユーザにより前記第1のプログラムが編集され第2のプログラムが生成されると、前記第2のプログラムに追加された第2のプログラム部品を含む第2のプログラム部品集合を特定し、
特定した前記第2のプログラム部品集合に対する前記ユーザの第2の習熟度を更新する、
処理をさらにコンピュータに実行させる請求項2記載の機械学習支援プログラム。
【請求項4】
前記ユーザの前記第2の習熟度を更新する処理では、前記第1のプログラムで生成した第1のモデルの性能の評価結果を示す第1の評価値と前記第2のプログラムで生成した第2のモデルの性能の評価結果を示す第2の評価値との差に基づいて、前記第2のプログラム部品集合に対する前記ユーザの前記第2の習熟度の増加量を算出し、前記習熟度情報における、前記第2のプログラム部品集合に対する前記ユーザの前記第2の習熟度に、算出した前記増加量を加算する、
請求項3記載の機械学習支援プログラム。
【請求項5】
前記ユーザの前記第2の習熟度を更新する処理では、前記第2のプログラムに追加され、かつ前記第2のプログラム部品集合に含まれる前記第2のプログラム部品の個数と、前記第1の評価値と前記第2の評価値との差とに基づいて、前記第2のプログラム部品集合に対する前記ユーザの前記第2の習熟度の前記増加量を算出する、
請求項4記載の機械学習支援プログラム。
【請求項6】
前記複数の候補プログラムそれぞれの前記優先度を決定する処理では、決定対象の第1の候補プログラムにおいて前記第1のプログラム部品集合がどの程度重要なのかを示す特徴量を計算し、前記第1の候補プログラムにおける前記第1のプログラム部品集合の特徴量と前記第1のプログラム部品集合に対する前記ユーザの前記第1の習熟度とに基づいて、前記第1の候補プログラムの第1の優先度を決定する、
請求項1記載の機械学習支援プログラム。
【請求項7】
ユーザの指示に基づくプログラム生成要求に応じて、複数のプログラム部品集合のいずれかに含まれるプログラム部品を使用して生成された、機械学習モデルの生成に用いられる複数の候補プログラムそれぞれについて、前記複数のプログラム部品集合それぞれの使用に関するユーザの習熟度を示し、前記ユーザによる候補プログラムの編集処理における前記複数のプログラム部品集合の使用実績と前記編集処理による候補プログラムの性能の変化とに基づき決定される習熟度情報に基づいて、候補プログラムに使用している第1のプログラム部品を含む第1のプログラム部品集合に対する前記ユーザの第1の習熟度を特定し、
前記複数の候補プログラムそれぞれについて、特定した前記第1の習熟度に基づいて、前記ユーザに提示する優先度を決定する、
処理をコンピュータが実行する機械学習支援方法。
【請求項8】
ユーザの指示に基づくプログラム生成要求に応じて、複数のプログラム部品集合のいずれかに含まれるプログラム部品を使用して生成された、機械学習モデルの生成に用いられる複数の候補プログラムそれぞれについて、前記複数のプログラム部品集合それぞれの使用に関するユーザの習熟度を示し、前記ユーザによる候補プログラムの編集処理における前記複数のプログラム部品集合の使用実績と前記編集処理による候補プログラムの性能の変化とに基づき決定される習熟度情報に基づいて、候補プログラムに使用している第1のプログラム部品を含む第1のプログラム部品集合に対する前記ユーザの第1の習熟度を特定し、前記複数の候補プログラムそれぞれについて、特定した前記第1の習熟度に基づいて、前記ユーザに提示する優先度を決定する処理部、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機械学習支援プログラム、機械学習支援方法、および情報処理装置に関する。
【背景技術】
【0002】
機械学習では、AutoML(Automated Machine Learning)と呼ばれるソフトウェアを用いて、機械学習のための処理の一部を自動化することができる。例えばAutoMLを実行するコンピュータ(AutoMLシステム)は、ユーザからデータセットとタスク設定情報を受け取る。AutoMLシステムは、受け取ったデータセットとタスクを用いて複数のパイプライン(候補パイプライン)を生成する。パイプラインは、ユーザが入力したデータセットを用いて、ユーザによって指定されたタスクに応じた予測モデルを生成するためのプログラムである。
【0003】
AutoMLシステムは、候補パイプラインを生成した後、例えば、生成した候補パイプラインを用いてモデルの生成および生成したモデルの評価を行う。そしてAutoMLシステムは、候補パイプラインの中から、最も精度が高いモデルを生成したパイプラインを選択してユーザに提示する。ユーザは、AutoMLシステムから提示されたパイプラインを編集することで、パイプラインが生成するモデルの精度を改善することができる。
【0004】
機械学習の効率化に関する技術としては、例えば予測精度の高い予測モデルを効率良く構築することができる分析装置が提案されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2018-190126号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、AutoMLから提示されるパイプラインの編集が、ユーザにとって難しい場合がある。例えばパイプラインは、各種のパッケージを利用して生成される。パッケージは、パイプラインで使用可能なプログラム部品の集まりである。ユーザが過去に利用したことのないパッケージを利用して生成されたパイプラインが提示された場合、ユーザは、そのパッケージで提供された関数などの動作を確認した上でなければパイプラインを改善することができず、編集作業に時間がかかる。このような問題は、パイプラインと呼ばれるプログラムに限らず、機械学習用のプログラムを自動生成して、そのプログラムをユーザに編集させるシステムにおいて同様に発生する。
【0007】
1つの側面では、本発明は、ユーザが編集しやすいプログラムを提示できるようにすることを目的とする。
【課題を解決するための手段】
【0008】
1つの案では、以下の処理をコンピュータに実行させる機械学習支援プログラムが提供される。
コンピュータは、ユーザの指示に基づくプログラム生成要求に応じて、複数のプログラム部品集合のいずれかに含まれるプログラム部品を使用して生成された、機械学習モデルの生成に用いられる複数の候補プログラムそれぞれについて、複数のプログラム部品集合それぞれの使用に関するユーザの習熟度を示し、ユーザによる候補プログラムの編集処理における複数のプログラム部品集合の使用実績と編集処理による候補プログラムの性能の変化とに基づき決定される習熟度情報に基づいて、候補プログラムに使用している第1のプログラム部品を含む第1のプログラム部品集合に対するユーザの第1の習熟度を特定する。そしてコンピュータは、複数の候補プログラムそれぞれについて、特定した第1の習熟度に基づいて、ユーザに提示する優先度を決定する。
【発明の効果】
【0009】
1態様によれば、ユーザが編集しやすいプログラムを提示することが可能となる。
【図面の簡単な説明】
【0010】
図1】第1の実施の形態に係る機械学習支援方法の一例を示す図である。
図2】第2の実施の形態のシステム構成の一例を示す図である。
図3】機械学習支援システムのハードウェアの一例を示す図である。
図4】不適切なパイプライン提示の一例を示す図である。
図5】各装置が有する機能の一例を示すブロック図である。
図6】パイプライン生成処理の手順の一例を示す図である。
図7】習熟度更新の一例を示す図である。
図8】習熟度計算処理の手順の一例を示すフローチャートである。
図9】追加されたプログラムコード行の抽出処理の一例を示す図である。
図10】ASTによるプログラムコード行の解析の一例を示す図である。
図11】要素の個数集計処理の手順の一例を示すフローチャートである。
図12】習熟度の更新処理の一例を示す図である。
図13】ユーザの習熟度に基づくパイプライン提示の一例を示す図である。
図14】候補パイプラインごとのパッケージの特徴量の計算結果の一例を示す図である。
図15】優先度計算の一例を示す図である。
図16】習熟度に大きな差がない場合の優先度計算の一例を示す図である。
図17】使用しているパイプラインの特徴量に大きな差がない場合の優先度計算の一例を示す図である。
図18】提示パイプライン選定処理の手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
第1の実施の形態は、機械学習モデルを生成するためのプログラムを自動生成する際に、ユーザが編集しやすいプログラムを優先的にユーザに提示できる機械学習支援方法である。
【0012】
図1は、第1の実施の形態に係る機械学習支援方法の一例を示す図である。図1には、機械学習支援方法を実施する情報処理装置10が示されている。情報処理装置10は、例えば機械学習支援プログラムを実行することにより、機械学習支援方法を実施することができる。
【0013】
情報処理装置10は、ユーザ8が使用する端末9に、例えばネットワークを介して接続されている。情報処理装置10は、端末9からのプログラム生成要求に応じて、機械学習モデルを生成するためのプログラムを自動生成することができる。その際、情報処理装置10は、複数の候補プログラム3a,3b,3cを生成し、そのうちユーザ8が編集しやすいプログラムを処理結果としてユーザ8に提示する。
【0014】
情報処理装置10は、記憶部11と処理部12とを有する。記憶部11は、例えば情報処理装置10が有するメモリまたはストレージ装置である。処理部12は、例えば情報処理装置10が有するプロセッサまたは演算回路である。
【0015】
記憶部11は、複数のプログラム部品集合1a,1b,・・・と習熟度情報2とを記憶する。複数のプログラム部品集合1a,1b,・・・それぞれには、機械学習モデルを生成するプログラムに使用可能な1以上のプログラム部品が含まれている。プログラム部品は、関数、クラス、変数などである。プログラム部品集合1a,1b,・・・は、ライブラリ、パッケージなどと呼ばれることもある。習熟度情報2は、複数のプログラム部品集合1a,1b,・・・それぞれの使用に関するユーザ8の習熟度を示す情報である。習熟度情報2は、ユーザ8が機械学習モデルを生成するプログラムを編集する編集処理を行った場合の複数のプログラム部品集合1a,1b,・・・それぞれの使用実績と、機械学習モデルの性能の変化とに基づき決定される。機械学習モデルの性能の変化は、機械学習モデルを生成するプログラムにより生成される機械学習モデルの、ユーザ8による編集処理の前後での性能の変化(例えば機械学習モデルの予測精度)である。
【0016】
処理部12は、ユーザ8の指示に基づくプログラム生成要求に応じて、複数のプログラム部品集合1a,1b,・・・のいずれかに含まれるプログラム部品を使用して、機械学習モデルを生成するための複数の候補プログラム3a,3b,3cを生成する。次に処理部12は、複数の候補プログラム3a,3b,3cそれぞれについて、使用している第1のプログラム部品を含む第1のプログラム部品集合に対するユーザ8の第1の習熟度を、例えば習熟度情報2に基づいて特定する。
【0017】
そして処理部12は、複数の候補プログラム3a,3b,3cそれぞれについて、特定した第1の習熟度に基づいて、ユーザ8に提示する優先度を決定する。例えば処理部12は、優先度の決定対象の第1の候補プログラムにおいて第1のプログラム部品集合がどの程度重要なのかを示す特徴量を計算する。特徴量は、例えばTF-IDF(Term Frequency-Inverse Document Frequency)である。
【0018】
次に処理部12は、第1の候補プログラムにおける第1のプログラム部品集合の特徴量と第1のプログラム部品集合に対するユーザ8の第1の習熟度とに基づいて第1の候補プログラムの優先度を決定する。例えば処理部12は、特徴量と第1の習熟度との積に基づいて、優先度を決定する。第1の候補プログラムで使用している第1のプログラム部品が複数ある場合には、例えば処理部12は、第1のプログラム部品ごとの特徴量と第1の習熟度の積の合計を、第1の候補プログラムの優先度とする。
【0019】
処理部12は、複数の候補プログラム3a,3b,3cそれぞれの優先度に基づいて、複数の候補プログラムのうちの少なくとも1つを、プログラム生成要求に応じた生成結果の第1のプログラム4として出力する。例えば処理部12は、優先度が最も高い候補プログラム(図1の例では候補プログラム3a)を、第1のプログラム4としてユーザ8が使用する端末9に送信する。
【0020】
ユーザ8は、端末9を用いて第1のプログラム4を編集する。端末9は、第1のプログラム4を編集した後の第2のプログラム5を情報処理装置10に送信する。なお第1のプログラム4の編集を、情報処理装置10内のワークスペース(ワーク用のメモリ領域)で行うことも可能である。その場合、ユーザ8による編集指示が端末9から情報処理装置10に送信され、処理部12によって第1のプログラム4が編集される。ユーザ8が端末9を介して編集終了の指示を情報処理装置10に入力すると、処理部12は、ワークスペースにある編集後のプログラムを第2のプログラム5として取得する。
【0021】
処理部12は、ユーザ8により第1のプログラム4が編集され第2のプログラム5が生成されると、第2のプログラム5に追加された第2のプログラム部品を含む第2のプログラム部品集合を特定する。そして処理部12は、第2のプログラム部品集合に対するユーザ8の第2の習熟度を更新する。
【0022】
例えば処理部12は、第1のプログラム4で生成した第1のモデルの性能の評価結果を示す第1の評価値と第2のプログラム5で生成した第2のモデルの性能の評価結果を示す第2の評価値との差を計算する。処理部12は、第1の評価値と第2の評価値との差に基づいて、第2のプログラム部品集合に対するユーザ8の第2の習熟度の増加量を算出する。そして処理部12は、習熟度情報2における、第2のプログラム部品集合に対するユーザの第2の習熟度に、算出した増加量を加算する。
【0023】
また処理部12は、第2のプログラム5に追加され、かつ第2のプログラム部品集合に含まれる第2のプログラム部品の個数と、第1の評価値と第2の評価値との差とに基づいて、第2のプログラム部品集合に対するユーザの第2の習熟度の増加量を算出してもよい。例えば処理部12は、第1の評価値と第2の評価値との差に第2のプログラム部品の個数を乗算した値を、第2のプログラム部品集合に対するユーザの第2の習熟度の増加量とする。
【0024】
このようにしてユーザ8の複数のプログラム部品集合1a,1b,・・・に対する習熟度に基づいて、複数の候補プログラム3a,3b,3cそれぞれの優先度が決定される。そして、優先度に基づいて少なくとも1つの候補プログラムが、第1のプログラム4として出力される。その結果、情報処理装置10は、ユーザ8が編集しやすいプログラムを第1のプログラム4として出力することができる。すなわちユーザ8の習熟度が高いプログラム部品集合を利用して生成された候補プログラムが第1のプログラム4として出力される。これにより、ユーザ8は、第1のプログラム4の内容の把握が容易となり、第1のプログラム4における改善すべき部分の特定も迅速に行うことができる。その結果、第1のプログラム4の編集作業が容易となる。
【0025】
また、優先度の計算には、習熟度だけではなく、複数の候補プログラム3a,3b,3cそれぞれにおける、プログラム部品集合の特徴量を利用することができる。これにより、複数の候補プログラム3a,3b,3cで使用しているプログラム部品を含むプログラム部品集合の習熟度に差がない場合、特徴量が大きいプログラム部品集合に含まれるプログラム部品を多く使用している候補プログラムほど優先度が高くなる。これにより重要度が高いプログラム部品集合に含まれるプログラム部品を多く使用して生成された候補プログラムが、第1のプログラム4として出力される。その結果、ユーザ8は、例えば特徴量が大きい(例えば多用されている)プログラム部品集合のプログラム部品の適否を優先的に判断することで、第1のプログラム4を改善する編集作業を効率的に進めることができる。
【0026】
また、第2のプログラム5に追加された第2のプログラム部品を含む第2のプログラム部品集合に対するユーザ8の第2の習熟度を更新することにより、処理部12は、習熟度情報2に示される習熟度の精度を向上させることができる。習熟度の精度が高ければ、習熟度を用いた候補プログラム3a,3b,3cの優先度の計算精度も向上する。
【0027】
第2の習熟度の更新には、例えば第1のプログラム4で生成した第1のモデルの性能の評価結果を示す第1の評価値と第2のプログラム5で生成した第2のモデルの性能の評価結果を示す第2の評価値との差が用いられる。例えば第2の評価値が第1の評価値よりも十分に大きい場合、第2のプログラム5に追加されたプログラム部品を含むプログラム部品集合の使い方について、ユーザ8がよく理解しているものと考えられる。そこで第1の評価値と第2の評価値との差に基づいて、第2のプログラム部品集合に対するユーザ8の第2の習熟度の増加量を算出することで、処理部12は、習熟度の精度を向上させることができる。
【0028】
また処理部12は、例えばユーザの第2の習熟度の増加量の算出に、第2のプログラム5に追加され且つ第2のプログラム部品集合に含まれる第2のプログラム部品の個数を利用することができる。これにより、処理部12は、多用されている第2のプログラム部品集合の第2の習熟度の増加量を大きくすることができる。その結果、習熟度の精度が向上する。
【0029】
なお処理部12は、図1に示した第1のプログラム4のユーザ8への提示後、複数の候補プログラム3a,3b,3cそれぞれの性能を求めてもよい。複数の候補プログラム3a,3b,3cそれぞれの性能は、例えば複数の候補プログラム3a,3b,3cそれぞれで生成したモデルの予測精度である。この場合、処理部12は、性能が最も高い候補プログラムを、ユーザ8に提示する。これにより、ユーザ8は、第1のプログラム4の編集において、性能が高い候補プログラムの内容を参考にして、第1のプログラム4の改善作業を効率的に行うことができる。
【0030】
〔第2の実施の形態〕
第2の実施の形態は、AutoMLによって生成した機械学習モデル生成用のプログラム(以下、パイプラインと呼ぶ)のうち、ユーザが編集しやすいパイプラインと、精度の高いモデルを作ることができるパイプラインとをユーザに提示するシステムである。このようにユーザが編集しやすいパイプラインと、精度の高いモデルを作ることができるパイプラインとを提示することで、精度とユーザの編集のしやすさの両方を考慮したパイプライン提示が可能となる。
【0031】
図2は、第2の実施の形態のシステム構成の一例を示す図である。機械学習支援システム100と端末30とがネットワーク20を介して接続されている。機械学習支援システム100は、AutoMLによって機械学習用のパイプラインを自動生成するコンピュータである。端末30は、機械学習のモデル作成を行うユーザが使用するコンピュータである。
【0032】
ユーザは端末30を用いて、機械学習支援システム100に対して、機械学習のタスクと機械学習用のデータセットとを送信し、AutoMLで自動生成されたパイプラインを取得する。ユーザは端末30を操作し、自動生成されたパイプラインを、ユーザの目的に合わせて修正し、最終的なモデル生成用の機械学習プログラムを生成する。
【0033】
機械学習支援システム100は、端末30から取得したタスクとデータセットとに基づいて複数の候補パイプラインを生成する。そして機械学習支援システム100は、ユーザによるパイプラインの編集結果に基づいて、生成した候補パイプラインのなかから、ユーザが編集しやすい候補パイプラインをユーザに提示する。また、機械学習支援システム100は、生成した候補パイプラインのうち、最も精度が高いモデルを生成することができるパイプラインもユーザに提示する。
【0034】
例えばユーザは、編集しやすいパイプラインに対して、最も精度が高いモデルを生成可能なパイプラインの関数などを適用することで、より精度が高いパイプラインを容易に生成することが可能となる。
【0035】
図3は、機械学習支援システムのハードウェアの一例を示す図である。機械学習支援システム100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
【0036】
メモリ102は、機械学習支援システム100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
【0037】
バス109に接続されている周辺機器としては、ストレージ装置103、GPU(Graphics Processing Unit)104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
【0038】
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、機械学習支援システム100の補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
【0039】
GPU104は画像処理を行う演算装置であり、グラフィックコントローラとも呼ばれる。GPU104には、モニタ21が接続されている。GPU104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置などがある。
【0040】
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0041】
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取り、または光ディスク24へのデータの書き込みを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD-RAM、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)などがある。
【0042】
機器接続インタフェース107は、機械学習支援システム100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
【0043】
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。ネットワークインタフェース108は、例えばスイッチやルータなどの有線通信装置にケーブルで接続される有線通信インタフェースである。またネットワークインタフェース108は、基地局やアクセスポイントなどの無線通信装置に電波によって通信接続される無線通信インタフェースであってもよい。
【0044】
機械学習支援システム100は、以上のようなハードウェアによって、第2の実施の形態の処理機能を実現することができる。第1の実施の形態に示した情報処理装置10も、図3に示した機械学習支援システム100と同様のハードウェアにより実現することができる。
【0045】
機械学習支援システム100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。機械学習支援システム100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、機械学習支援システム100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。また機械学習支援システム100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0046】
なおAutoMLでは、複数の候補パイプラインが生成され、各候補パイプラインの評価が行われる。評価が高いパイプラインをユーザに提示することで、ユーザは、精度の高いモデルを作成可能なパイプラインの生成が容易となる。ただし、候補パイプラインの評価には時間がかかる。そこでユーザがパイプラインを編集できるようになるまでの時間の短縮が試みられている。
【0047】
例えば候補パイプラインの評価を並列処理で実行すれば、すべての候補パイプラインの評価に要する時間が短縮される。ただし、例えば計算リソースが十分でない場合、並列処理の活用が難しい。また並列処理が実行可能であったとしても、評価が最高の候補パイプラインを決定するには、すべての候補パイプラインについて、その候補パイプラインによるモデルが生成され、モデルによる予測精度の評価結果が出そろうことが条件となる。そのため1つでもモデル生成および評価に時間がかかる候補パイプラインがあれば、ユーザへのパイプラインの提示までの時間が長くなる。
【0048】
並列処理の活用が難しい場面では、代替としてユーザに提示するパイプラインを投機的に決定する処理(投機的な評価)が考えられる。投機的な評価では、1つの候補パイプラインが評価され、その候補パイプラインがユーザに提示される。すべての候補パイプラインの評価が終わったタイミングで、先に提示したパイプラインより優れた候補パイプラインがあれば、より優れた候補パイプラインが改めてユーザに提示される。最初に渡した候補パイプラインが、最もスコアの高いものであった場合、結果として、ユーザはすべての候補パイプラインの評価を待たなくて済むこととなる。
【0049】
このように投機的な処理を行うことで、機械学習支援システム100は、ユーザがパイプラインの提示を受けるまでの待ち時間を短縮することができる。ユーザは、早期にパイプラインの提示を受けることで、そのパイプラインの編集作業の開始を早めることができる。ただし、早期に提示されたパイプラインに、ユーザの知らないプログラム部品が使われていると、編集作業が困難となる。以下、図4を参照して、AutoMLにより提示されるパイプラインが、ユーザにとって編集しづらいものとなってしまう理由について説明する。
【0050】
図4は、不適切なパイプライン提示の一例を示す図である。例えば機械学習支援システム910に、ユーザが使用する端末920が接続されている。端末920は、ユーザからの指示に従って、タスク設定情報921とデータセット922とを機械学習支援システム910に送信する。機械学習支援システム910は、AutoMLの機能を用いたパイプライン生成処理を行う。生成されたパイプラインを候補パイプライン911a,911b,・・・とする。機械学習支援システム910は、最初に生成された候補パイプライン911aを、編集対象のパイプライン912aとして端末920に送信する。なお候補パイプライン911aには、ユーザが利用したことのないパッケージが用いられているものとする。なお、パッケージは、第1の実施の形態に示したプログラム部品集合の一例である。パッケージは、ライブラリと呼ばれることもある。この場合、提示されたパイプライン912aをユーザが編集するのは容易ではない。
【0051】
その後、機械学習支援システム910は、候補パイプライン911a,911b,・・・を評価する。例えば機械学習支援システム910は、候補パイプライン911a,911b,・・・それぞれについて、データセット922を用いて、タスク設定情報921に示されるタスクに対応する予測などを行うモデルを生成する。そして機械学習支援システム910は、生成したモデルを用いた推論を実行し、予測結果の精度を確認する。機械学習支援システム910は、例えば予測精度が高い候補パイプラインほど高いスコアを設定する。機械学習支援システム910は、すべての候補パイプライン911a,911b,・・・のうち、最もスコアが高い候補パイプライン911nを、編集の参考にするパイプライン912bとして端末920に送信する。
【0052】
ユーザは、評価が高いパイプライン912bの内容を確認し、使えるプログラム部品などを取捨選択し、パイプライン912aに適用する。これにより、パイプライン912aから変更されたパイプライン912cが生成される。
【0053】
図4の例において、候補パイプライン911bは、ユーザが過去に利用したことのあるパッケージを用いて生成されており、そのパッケージの利用に関するユーザの習熟度が高いものとする。使用されているパッケージの習熟度が高い候補パッケージがユーザに提示されれば、ユーザは編集が容易となる。しかし、図4の例では、候補パイプライン911bは、生成順が最初ではなく、評価が最高でもない。そのため、ユーザにとって編集が容易な候補パイプライン911bがユーザに提示されることはない。
【0054】
そこで第2の実施の形態における機械学習支援システム100では、候補パイプラインで使用されているパッケージに対するユーザの習熟度を求め、その習熟度に基づいてユーザに先行して提示するパイプラインを決定する。これによりユーザが編集しやすいパイプラインが早期に提示され、ユーザによる編集を効率的に進めることができる。
【0055】
図5は、各装置が有する機能の一例を示すブロック図である。機械学習支援システム100は、パッケージ記憶部110、習熟度記憶部120、候補パイプライン生成部130、優先度計算部140、評価部150、パイプライン提示部160、および習熟度計算部170を有する。
【0056】
パッケージ記憶部110は、候補パイプラインの生成に使用する複数のパッケージを記憶する。パッケージ記憶部110には、同じ機能を実現するプログラム部品を有するパッケージが複数記憶される場合もある。例えば異なる作成者によって作成された2以上のパッケージにおいて、実現する機能が重複する場合もある。また同一の作成者によって作成された旧版のパッケージと新版のパッケージとの両方がパッケージ記憶部110に格納されている場合もある。
【0057】
習熟度記憶部120は、パッケージに対するユーザの習熟度を記憶する。パッケージに対するユーザの習熟度は、そのパッケージを利用するパイプラインの編集が行われるごとに、習熟度計算部170によって更新される。
【0058】
候補パイプライン生成部130は、パッケージ記憶部110に格納されたパッケージを利用して、ユーザによって指定されたタスクを実現することができるモデルを生成可能な候補パイプラインを複数生成する。
【0059】
優先度計算部140は、候補パイプライン生成部130が生成した候補パイプラインについて、ユーザによる編集のしやすさを考慮した提示の優先度を計算する。例えば優先度計算部140は、候補パイプラインで利用しているパッケージに対するユーザの習熟度に基づいて、その候補パイプラインの優先度を計算する。
【0060】
評価部150は、生成された候補パイプラインそれぞれの精度を評価する。候補パイプラインの精度は、例えば、その候補パイプラインを用いて生成したモデルによる予測精度で表される。候補パイプラインの精度は、例えばスコアとして数値化される。
【0061】
パイプライン提示部160は、ユーザが使用する端末30へのパイプラインを示す情報の送信、および端末30からの入力に応じたパイプラインの編集を行う。例えばパイプライン提示部160は、優先度計算部140によって計算されて優先度が最高となった候補パイプラインを示す情報を、編集対象のパイプラインとして端末30に送信する。またパイプライン提示部160は、評価部150によって精度のスコアが最も高い候補パイプラインを、参考のパイプラインとしてユーザに提示する。
【0062】
習熟度計算部170は、パイプライン提示部160が提示したパイプラインがユーザによって編集されたときに、編集前後のパイプラインに基づいて、そのパイプラインで利用されているパッケージの習熟度を計算する。習熟度計算部170は、計算した習熟度に基づいて、習熟度記憶部120に格納されているパッケージの習熟度を更新する。
【0063】
端末30は、パイプライン生成要求部31とパイプライン編集部32とを有する。パイプライン生成要求部31は、ユーザからの指示に基づいて、パイプラインの生成要求を機械学習支援システム100に送信する。パイプラインの生成要求には、機械学習のタスクを示すタスク設定情報と、機械学習に用いるデータセットとが含まれる。
【0064】
パイプライン編集部32は、ユーザからの入力に応じて、機械学習支援システム100から提示されたパイプラインを編集する。例えばパイプライン編集部32は、機械学習支援システム100が提示したパイプラインを表示する。またパイプライン編集部32は、パイプラインに対する編集内容を機械学習支援システム100に送信する。
【0065】
なお、図5に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図5に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【0066】
以下、図6を参照して、図5に示した構成のシステムによるパイプライン生成処理の手順を説明する。
図6は、パイプライン生成処理の手順の一例を示す図である。以下、図6に示す処理をステップ番号に沿って説明する。
【0067】
[ステップS101]候補パイプライン生成部130は、端末30からタスク設定情報とデータセットとを含むパイプライン生成要求を取得する。
[ステップS102]候補パイプライン生成部130は、候補パイプラインを生成する。例えば候補パイプライン生成部130は、パッケージを利用したAutoMLにより、取得したデータセットを用いて指定されたタスクを実現するためのモデルを生成可能な複数の候補パイプラインを生成する。候補パイプライン生成部130は、生成した候補パイプラインを優先度計算部140と評価部150とに送信する。
【0068】
[ステップS103]優先度計算部140は、生成された候補パイプラインが2以上あるか否かを判断する。優先度計算部140は、候補パイプラインが2以上ある場合、処理をステップS104に進める。また優先度計算部140は、候補パイプラインが1つだけの場合、処理をステップS105に進める。
【0069】
[ステップS104]優先度計算部140と評価部150とパイプライン提示部160が連係し、提示パイプライン選定処理を実行する。この処理の詳細は後述する(図18参照)。その後、優先度計算部140は、処理をステップS106に進める。
【0070】
[ステップS105]パイプライン提示部160は、生成された候補パイプラインを、編集対象のパイプラインとしてユーザに提示する。例えばパイプライン提示部160は、候補パイプラインの内容を示す情報を、ユーザが使用する端末30に送信する。
【0071】
[ステップS106]パイプライン提示部160は、提示したパイプラインが存在するか否かを判断する。提示したパイプラインが存在する場合とは、提示したパイプラインが編集対象として存続しており、編集終了の指示を受け取っていない場合である。パイプライン提示部160は、パイプラインが存在する場合、処理をステップS107に進める。またパイプライン提示部160は、パイプラインの提示が終了している場合、パイプライン生成処理を終了する。
【0072】
[ステップS107]パイプライン提示部160は、提示したパイプラインの内容の変更の有無を監視する。例えばパイプライン提示部160は、提示したパイプラインの内容に対する端末30からの編集指示を受け付ける。パイプライン提示部160は、編集指示に応じてパイプラインの内容を変更する。
【0073】
[ステップS108]パイプライン提示部160は、提示したパイプラインの内容が変更されたか否かを判断する。パイプライン提示部160は、パイプラインの内容が変更された場合、処理をステップS109に進める。またパイプライン提示部160は、パイプラインの内容が変更されていなければ、処理をステップS106に進める。
【0074】
[ステップS109]習熟度計算部170は、提示したパイプラインの生成に利用されたパッケージに対するユーザの習熟度計算処理を行う。習熟度計算処理の詳細は後述する(図8参照)。習熟度計算部170は、習熟度計算処理が終了すると処理をステップS106に進める。
【0075】
このようにして、機械学習支援システム100は、ユーザにパイプラインを提示し、そのパイプラインの編集結果に基づいて、ユーザのパッケージに対する習熟度を計算することができる。習熟度が計算されるごとに、習熟度記憶部120に格納されている習熟度が更新される。
【0076】
図7は、習熟度更新の一例を示す図である。パイプライン提示部160は、編集前のパイプライン161と編集後のパイプライン162とを管理している。パイプライン提示部160は、これらの2つのパイプライン161,162を、習熟度計算部170に送信する。習熟度計算部170は、2つのパイプライン161,162の差分情報を用いて、変更内容を解析して、編集によってユーザに新たに追加した機能を提供しているパッケージを特定する。また習熟度計算部170は、2つのパイプライン161,162それぞれの精度を評価する。精度は、パイプライン161,162それぞれを用いて生成されたモデルの精度で表される。習熟度計算部170は、追加された機能を提供するパッケージと、編集前後のパイプライン161,162それぞれの精度の差に基づいて、そのパッケージに対するユーザの習熟度を計算する。
【0077】
習熟度記憶部120には、ユーザごとの習熟度管理テーブル121,122,・・・が格納されている。各習熟度管理テーブル121,122,・・・には、対応するユーザのユーザ名が設定されている。また各習熟度管理テーブル121,122,・・・には、パッケージ名に対応付けて、ユーザの該当パッケージに対する習熟度が設定されている。
【0078】
習熟度計算部170は、計算したパッケージの習熟度を、パイプライン161,162の編集を行ったユーザに対応する習熟度管理テーブルの該当パッケージの習熟度の値に加算する。このように習熟度を加算していくことで、過去に計算した習熟度も反映させた習熟度となる。例えばユーザが繰り返し利用したパッケージに対する習熟度の値が高くなる。
【0079】
図8は、習熟度計算処理の手順の一例を示すフローチャートである。以下、図8に示す処理をステップ番号に沿って説明する。
[ステップS121]習熟度計算部170は、編集前のパイプライン161と編集後のパイプライン162とを取得する。
【0080】
[ステップS122]習熟度計算部170は、取得した両パイプラインを比較する。
[ステップS123]習熟度計算部170は、編集によって追加されたプログラムコードがあるか否かを判断する。習熟度計算部170は、追加されたプログラムコードがあれば、処理をステップS124に進める。また習熟度計算部170は、追加されたプログラムコードがなければ、習熟度計算処理を終了する。
【0081】
[ステップS124]習熟度計算部170は、追加されたプログラムコード行を取得する。
[ステップS125]習熟度計算部170は、取得したプログラムコード行に含まれる、いずれかのパッケージに属する要素の個数を集計する。要素の個数集計処理の詳細は後述する(図11参照)。
【0082】
[ステップS126]習熟度計算部170は、取得した両パイプラインを実行する。例えば習熟度計算部170は、2つのパイプライン161,162それぞれについて、ユーザから取得したデータセットを用いて、所定の情報を予測するモデルを生成する。習熟度計算部170は、ユーザから取得したデータセットを用いて、生成したモデルによる所定の情報の予測を行い、予測結果が正解と一致する割合を計算する。一致する割合が、対応するパイプラインの精度である。
【0083】
[ステップS127]習熟度計算部170は、両パイプラインの精度が取得できたか否かを判断する。精度が取得できない場合とは、例えばパイプラインの実行時にエラーが発生して、モデルを生成できずに終了した場合である。またユーザが、パイプラインから精度評価に使用する部分を編集によって削除してしまった場合にも、精度の取得に失敗する。習熟度計算部170は、両パイプラインの精度が取得できた場合、処理をステップS128に進める。また習熟度計算部170は、少なくとも一方のパイプラインについて精度が取得できなかった場合、習熟度計算処理を終了する。
【0084】
[ステップS128]習熟度計算部170は、両パイプラインの精度の差を計算する。例えば習熟度計算部170は、「編集後のパイプラインの精度-編集前のパイプラインの精度」を計算し、計算結果を精度の差とする。
【0085】
[ステップS129]習熟度計算部170は、精度の差が0より大きいか否か(精度の差>0)を判断する。習熟度計算部170は、精度の差が0より大きい場合、処理をステップS130に進める。また習熟度計算部170は、精度の差が0以下の場合、習熟度計算処理を終了する。
【0086】
[ステップS130]習熟度計算部170は、パッケージごとに習熟度を計算する。習熟度は、例えばステップS125の集計において、パッケージに属するものとして集計された要素の個数に、精度の差を乗算した値(個数×精度の差)である。
【0087】
[ステップS131]習熟度計算部170は、パッケージごとに計算した習熟度を、そのパッケージに対応付けて既に登録されている元の習熟度に加算する。その後、習熟度計算部170は、習熟度計算処理を終了する。
【0088】
このようにして、ユーザによってパイプラインの編集が行われるごとに、編集で追加された要素を含むパッケージに対するユーザの習熟度が更新される。編集で追加された要素を特定するためには、まず編集で追加されたプログラムコード行の抽出が行われる。
【0089】
図9は、追加されたプログラムコード行の抽出処理の一例を示す図である。例えば編集前のパイプライン161の「from B import CatBoostRegressor」のプログラムコード行が、編集後のパイプライン162では「from A import LGBMRegressor」と書き換えられている。また編集前のパイプライン161の「model = CatBoostRegressor()」のプログラムコード行が、編集後のパイプライン162では「model = LGBMRegressor()」と書き換えられている。
【0090】
この場合、編集前後のパイプライン161,162を比較することで、編集後のパイプライン162に追加された追加プログラムコード行41が抽出される。このような追加プログラムコード行41の抽出処理は、例えばDiffツールと呼ばれる差分抽出用のソフトウェアを用いて実施することができる。
【0091】
抽出した追加プログラムコード行41を解析することで、習熟度計算部170は、そのプロラムコード行によって追加されたパッケージの要素を確認することができる。追加プログラムコード行41の解析は、例えば抽象構文木(AST:Abstract Syntax Tree)を用いることができる。
【0092】
図10は、ASTによるプログラムコード行の解析の一例を示す図である。習熟度計算部170は、例えばPython(登録商標)の標準パッケージを用いて追加プログラムコード行41のAST42を生成する。AST42は、プログラムコード行に含まれる要素に対応するノード42a~42fを有する。各ノード42a~42fは、対応する要素間の関係を示す線で接続されている。
【0093】
習熟度計算部170は、AST42により追加プログラムコード行41の内容を解釈する。そして習熟度計算部170は、追加プログラムコード行41から、パッケージに属するモジュール、関数、またクラスなどの要素の識別子への参照が新たに追加されているなら、その要素の個数を、パッケージごとにカウントする。そして習熟度計算部170は、パッケージごとの要素の個数を変更差分情報43に登録する。
【0094】
変更差分情報43には、パッケージ名に対応付けて、そのパッケージ名に対応するパッケージに属する要素の個数が登録されている。
図11は、要素の個数集計処理の手順の一例を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。
【0095】
[ステップS141]習熟度計算部170は、追加プログラムコード行41のAST42を生成する。
[ステップS142]習熟度計算部170は、追加された関数またはクラスのうち、未評価のものがあるか否かを判断する。習熟度計算部170は、未評価の関数またはクラスがある場合、処理をステップS143に進める。また習熟度計算部170は、追加された関数またはクラスのすべてが評価済みであれば、要素の個数集計処理を終了する。
【0096】
[ステップS143]習熟度計算部170は、AST42を操作し、追加された関数またはクラスのうちの未評価のものを1つ取得する。例えば習熟度計算部170は、AST42のノード42fに示される「LGBMRegressor()」を取得する。
【0097】
[ステップS144]習熟度計算部170は、取得した関数またはクラスをimportしているノードを取得する。例えば「LGBMRegressor()」をimportしているのは、AST42のノード42dである。そこで習熟度計算部170は、ノード42dを取得する。
【0098】
[ステップS145]習熟度計算部170は、取得したノードの親ノードに示されるパッケージ名を取得する。例えば習熟度計算部170は、ノード42dの親のノード42bから、パッケージ名「A」を取得する。
【0099】
[ステップS146]習熟度計算部170は、取得したパッケージ名が変更差分情報43に既に登録されているか否かを判断する。習熟度計算部170は、パッケージ名が登録されていない場合、処理をステップS147に進める。また習熟度計算部170は、パッケージ名が登録されてる場合、処理をステップS148に進める。
【0100】
[ステップS147]習熟度計算部170は、変更差分情報43に、取得したパッケージ名を示すレコード(パッケージ名と個数との組)を追加する。そのレコードの個数の欄には「1」が設定される。その後、習熟度計算部170は、処理をステップS142に進める。
【0101】
[ステップS148]習熟度計算部170は、変更差分情報43における取得したパッケージ名に対応するレコードの個数に「1」を加算する。その後、習熟度計算部170は、処理をステップS142に進める。
【0102】
このようにして、習熟度計算部170は、追加プログラムコード行41に基づいて変更差分情報43を生成する。変更差分情報43は、例えばメモリ102に格納される。生成された変更差分情報43と、編集前後のパイプライン161,162それぞれの精度とに基づいて、ユーザによる今回の編集に基づく、そのユーザの習熟度の増加量が決定される。そして決定した増加量だけ、パッケージに対するユーザの習熟度が増加する。
【0103】
図12は、習熟度の更新処理の一例を示す図である。習熟度計算部170は、パイプライン161,162それぞれを実行し、モデルを生成する。そして習熟度計算部170は、例えばパイプライン161,162それぞれによって生成されたモデルの精度を計算する。精度は、例えば決定係数(coefficient of determination)で表される。決定係数は「R2」とも呼ばれる。以下、決定係数で表される精度を示す値を「R2精度」と呼ぶこととする。
【0104】
編集前のパイプライン161のR2精度を編集前精度44とし、編集後のパイプライン162のR2精度を編集後精度45とする。図12の例では、編集前精度44は「0.87654」であり、編集後精度45は「0.88888」である。
【0105】
習熟度計算部170は、例えばパッケージについての「変更差分情報に示される個数×精度の改善量(改善している場合の精度の差)」を、そのパッケージの習熟度の増加量(増加習熟度)とする。精度の改善量は、「max(0,編集後精度-編集前精度」で与えられる。「max()」は、与えられた値のうちの大きい方の値を返す関数である。精度の改善量を示す式により、編集後に精度が悪化した場合、改善量は「0」となる。
【0106】
例えば変更差分情報43には、パッケージ名「A」に個数「1」が設定されている。すると、増加習熟度は「1×(0.88888-0.87654)=0.01234」となる。そこで、習熟度計算部170は、パッケージ名「A」と増加習熟度「0.01234」との組を増加習熟度情報46に登録する。
【0107】
習熟度計算部170は、増加習熟度情報46に基づいて、習熟度記憶部120内の情報を更新する。例えば習熟度計算部170は、習熟度記憶部120から、編集を行ったユーザの習熟度管理テーブルを読み込む。そして習熟度計算部170は、読み込んだ習熟度管理テーブルにおける、増加習熟度情報46に示されるパッケージ名に対応するレコードの習熟度に、増加習熟度情報46における該当パッケージ名の増加習熟度を加算する。習熟度計算部170は、更新後の習熟度管理テーブルを習熟度記憶部120に格納する。
【0108】
このようにユーザによりパイプラインが編集されるごとに、そのユーザの習熟度管理テーブルが更新される。習熟度には、増加習熟度の値が加算されている。そのため、ユーザの過去の経験を反映したパッケージごとの習熟度が、そのユーザの習熟度管理テーブルに基づいて判断可能となる。そこで機械学習支援システム100では、ユーザの習熟度が高いパッケージで提供されている関数またはクラスを用いた候補パイプラインを優先的に、編集対象のパイプラインとしてユーザに提示する。
【0109】
図13は、ユーザの習熟度に基づくパイプライン提示の一例を示す図である。例えばユーザは、端末30を使用して、機械学習支援システム100に対して、タスク設定情報51とデータセット52とを含むパイプライン生成要求を送信する。機械学習支援システム100では、候補パイプライン生成部130がパイプライン生成要求を取得する。そして候補パイプライン生成部130が、パッケージ記憶部110内のパッケージを利用して、複数の候補パイプライン131~133を生成する。
【0110】
優先度計算部140は、習熟度記憶部120から、パイプライン生成要求を送信した端末30を使用しているユーザの習熟度管理テーブルを参照し、各候補パイプライン131~133の優先度を計算する。優先度は、習熟度が高いパッケージで提供されている関数またはクラスを多く使用している候補パイプラインほど高い値となる。図13の例では、候補パイプライン131の優先度が最も高い。そこで、パイプライン提示部160は、候補パイプライン131の内容を、編集対象のパイプライン161として端末30に送信する。
【0111】
その後、評価部150が、各候補パイプライン131~133の精度を評価し、スコアを計算する。図13の例では候補パイプライン133のスコアが最も高い。そこで、パイプライン提示部160は、候補パイプライン133を、パイプライン161の修正に利用する参考のパイプライン163として送信する。
【0112】
ユーザは端末30がパイプライン161の内容を受信すると、端末30操作し、パイプライン161を編集する。その後、端末30がパイプライン163を受信すると、ユーザは、パイプライン163の内容を確認し、利用できる要素の取捨選択を判断する。利用できる要素があれば、ユーザは、パイプライン161の機能の一部を、パイプライン163に示される関数またはクラスなどの要素に置き換える。そして、最終的に編集後のパイプライン162が生成される。
【0113】
以下、候補パイプライン131~133の優先度の計算方法について詳細に説明する。
優先度計算部140は、候補パイプラインを「a」としたとき、式(1)を用いて、すべての候補パイプラインの優先度「f(a)」を求める。
【0114】
【数1】
【0115】
xは、パイプラインxに含まれるパッケージ名の集合である。「feature(a,p)」は、パイプライン「a」の、パッケージ「p」に関する特徴量である。「weight(p)」は、パッケージ「p」の重みを示す値であり、ユーザのパッケージ「p」に対する習熟度が用いられる。ユーザのパッケージ「p」に対する習熟度が習熟度記憶部120に含まれていない場合は、重みは「0」とされる。
【0116】
優先度計算部140は、例えばTF-IDFを用いて、候補パイプラインごとに、候補パイプラインで使用されるパッケージの特徴量を取得する。TF-IDFは、各文書中に含まれる各単語が「その文書内でどれくらい重要か」を表す尺度である。優先度計算部140は、一般的なTF-IDFの計算における文書を候補パイプラインとし、単語をパッケージ名とする。これにより、候補パイプラインで使用されているパイプラインが、その候補パイプライン内でどのくらい重要なのかを、TF-IDFを用いて数値化することができる。
【0117】
パイプライン「a」におけるパッケージ「p」の特徴量「feature(a,p)」は式(2)で表される。
【0118】
【数2】
【0119】
式(2)では、候補パイプライン「a」がTF-IDFの文書「d」に対応付けられ、候補パイプラインのパッケージ「p」がTF-IDFの語「t」に対応付けられている。ns,dは、文書「d」に含まれる各語「s」の文書「d」内での出現頻度である。nt,dは、語「t」の文書「d」内での出現頻度である。「df(t)」は、語「t」が出現する文書の数である。Nは、文書の総数である。
【0120】
式(2)では、一般的なTF-IDFの式と比べると、すべてのパイプラインに含まれるパッケージ「p」の重みが「f(a)」に反映されなくなるケースを避けるために、idf項に「1」を加算している。idf項に「1」を加算する理由の詳細は以下の通りである。
【0121】
idf項に「1」を加算しないケースを考える。パッケージ「p」がすべてのパイプラインに出現するとき、idf項は「0」になる。このとき、tf項がどのような値をとっても「feature(a,p)」は「0」になってしまう。言い換えれば、すべてのパイプラインに出現するパッケージの出現頻度という特徴量は無視される。パイプラインで使用されたパッケージの特徴量の算出では、あるパッケージが存在する(n≠0)という情報についても常に使用することが望ましい。そのため、式(2)では、パイプラインに出現するパッケージの出現頻度が無視されることを避けるために、idf項に「1」が加算されている。
【0122】
図14は、候補パイプラインごとのパッケージの特徴量の計算結果の一例を示す図である。図14の例では候補パイプライン131の機械学習支援システム100内での識別番号は「#1」、候補パイプライン132の機械学習支援システム100内での識別番号は「#2」、候補パイプライン133の機械学習支援システム100内での識別番号は「#3」である。
【0123】
候補パイプライン131では、パッケージ「A」の要素が4つ使用されており、パッケージ「B」の要素が1つ使用されている。候補パイプライン132では、パッケージ「A」の要素が2つ使用されており、パッケージ「B」の要素が1つ使用されている。候補パイプライン133では、パッケージ「B」、「C」、「D」、「E」、「F」、「G」、「H」それぞれの要素が1つずつ使用されている。
【0124】
候補パイプライン「a」のパッケージ「p」のtf項の値を「TF(a,p)」とする。この場合、各候補パイプラインで使用されているパッケージのtf項の値は、以下の通りとなる。
TF(#1,A)=4/5
TF(#1,B)=1/5
TF(#2,A)=2/3
TF(#2,B)=1/3
TF(#3,C)=1/7
TF(#3,D)=1/7
TF(#3,E)=1/7
TF(#3,F)=1/7
TF(#3,G)=1/7
TF(#3,H)=1/7
TF(#3,B)=1/7
パッケージ「p」のidf項の値を「IDF(A)」とすると、各パッケージのidf項の値は以下の通りとなる。
IDF(A)=log(3/2)+1=1.18
IDF(B)=log(3/3)+1=1
IDF(C)=log(3/1)+1=1.48
IDF(D)=log(3/1)+1=1.48
IDF(E)=log(3/1)+1=1.48
IDF(F)=log(3/1)+1=1.48
IDF(G)=log(3/1)+1=1.48
IDF(H)=log(3/1)+1=1.48
候補パイプライン「a」で使用されているパッケージ「p」の特徴量を「TFIDF(p,a)」と表すものとする。このとき候補パイプライン131で使用されている各パッケージの特徴量は、以下の通りとなる。
TFIDF(A,#1)=0.8×1.18=0.94
TFIDF(B,#1)=0.2×1.00=0.20
候補パイプライン132で使用されている各パッケージの特徴量は、以下の通りとなる。
TFIDF(A,#2)=0.67×1.18=0.79
TFIDF(B,#2)=0.33×1.00=0.33
候補パイプライン133で使用されている各パッケージの特徴量は、以下の通りとなる。
TFIDF(B,#3)=0.14×1.00=0.14
TFIDF(C,#3)=0.14×1.48=0.21
TFIDF(D,#3)=0.14×1.48=0.21
TFIDF(E,#3)=0.14×1.48=0.21
TFIDF(F,#3)=0.14×1.48=0.21
TFIDF(G,#3)=0.14×1.48=0.21
TFIDF(H,#3)=0.14×1.48=0.21
上記の例では、すべての候補パイプラインにパッケージ「B」が使用されているが「IDF(B)」が「0」とはならず「1」となっている。これにより、候補パイプライン131~133において、パッケージ「B」のtf項の値が無視されずに済んでいる。優先度計算部140は、候補パイプラインそれぞれについて、その候補パイプラインで使用しているパッケージごとの特徴量と習熟度とに基づいて、候補パイプラインの編集のしやすさに基づく提示の優先度を計算する。
【0125】
図15は、優先度計算の一例を示す図である。例えばパイプライン生成要求を送信したのがユーザ「x」であるものとする。この場合、優先度計算部140は、ユーザ「x」の習熟度管理テーブル121を参照する。図15の例では、ユーザ「x」のパッケージ「A」に対する習熟度は「2.01」である。またユーザ「x」のパッケージ「B」に対する習熟度は「1.00」である。そこで優先度計算部140は、優先度の計算において、パッケージ「A」の重み「weight(A)=2.01」とし、パッケージ「B」の重み「weight(B)=1.00」とする。
【0126】
この場合、「#1」の候補パイプライン131の優先度は、「(0.94×2.01)+(0.20×1.00)=2.09」となる。「#2」の候補パイプライン132の優先度は、「(0.79×2.01)+(0.33×1.00)=1.92」となる。「#3」の候補パイプライン133の優先度は、「(0.14×1.00)=0.14」となる。
【0127】
このようにして計算された優先度が最も高い候補パイプライン131が、ユーザ「x」が最も編集しやすい候補パイプラインである。図15の例では、「#1」の候補パイプライン131と「#2」の候補パイプライン132とのいずれもパッケージ「A」と「B」が使用されているが、「#1」の候補パイプライン131の方がよりパッケージ「A」を多く使用している。習熟度が高いパッケージが多く含まれる候補パイプライン131の方が、ユーザのもつ知識・興味に引っ掛かりやすいものと考えられる。すなわち、ユーザは、編集に着手しやすい。
【0128】
もしパッケージ「B」の習熟度がパッケージ「A」よりも非常に高い場合、パイプラインの特徴量の違いのために、「#2」の候補パイプライン132が選ばれる可能性がある。その場合でも、ユーザは、パッケージ「B」を起点に候補パイプライン132の編集に容易に着手できる。
【0129】
なお、ユーザに提示するパイプラインは、各候補パイプラインにおけるパッケージの特徴量と、ユーザの各パッケージについての習熟度とに基づいて、判定されている。ここでパッケージに対する習熟度に有意な差異がない場合、使用しているパッケージごとの特徴量が大きい候補パイプラインほど、優先度が高くなる。
【0130】
図16は、習熟度に大きな差がない場合の優先度計算の一例を示す図である。例えばパイプライン生成要求を送信したのがユーザ「y」であるものとする。この場合、優先度計算部140は、ユーザ「y」の習熟度管理テーブル122を参照する。そして図16の例では、ユーザ「y」のパッケージ「A」、「C」、「D」、「E」、「F」、「G」、「H」それぞれに対する習熟度は、いずれも「1.01」である。またユーザ「y」のパッケージ「B」に対する習熟度は「1.00」である。そこで優先度計算部140は、優先度の計算において、パッケージ「A」の重みを「weight(A)=1.01」とする。パッケージ「C」、「D」、「E」、「F」、「G」、「H」の重みも、パッケージ「A」と同じ値である。また優先度計算部140は、パッケージ「B」の重みを「weight(B)=1.00」とする。
【0131】
この場合、「#1」の候補パイプライン131の優先度は、「(0.94×1.01)+(0.20×1.00)=1.15」となる。「#2」の候補パイプライン132の優先度は、「(0.79×1.01)+(0.33×1.00)=1.13」となる。「#3」の候補パイプライン133の優先度は、「(0.14×1.01)+(0.21×1.01)+(0.21×1.01)+(0.21×1.01)+(0.21×1.01)+(0.21×1.01)+(0.21×1.01)=1.414」となる。
【0132】
パッケージの習熟度に差がほとんどない場合、使用しているパッケージの特徴量の合計が大きい候補パイプラインの優先度が高くなり、その候補パイプラインがユーザに提示するパイプラインとして特定される。図16の例では、「#3」の候補パイプライン133の優先度が最大であり、候補パイプライン133がユーザ「y」に提示される。
【0133】
また複数の候補パイプライン131~133が使用しているパッケージごとの特徴量に大きな差異が無い場合、パッケージに対する習熟度が大きい候補パイプラインほど、優先度が高くなる。
【0134】
図17は、使用しているパイプラインの特徴量に大きな差がない場合の優先度計算の一例を示す図である。図17の例では、「#1」の候補パイプライン131ではパッケージ「A」、「D」が使用されている。パッケージ「A」の特徴量は「0.74」であり、パッケージ「D」の特徴量は「0.50」である。「#2」の候補パイプライン132ではパッケージ「B」、「D」が使用されている。パッケージ「B」の特徴量は「0.74」であり、パッケージ「D」の特徴量は「0.50」である。「#3」の候補パイプライン133ではパッケージ「C」、「D」が使用されている。パッケージ「C」の特徴量は「0.74」であり、パッケージ「D」の特徴量は「0.50」である。このように、候補パイプライン131~133それぞれにおいて、使用しているパッケージの特徴量に差がない。
【0135】
また、この例ではパイプライン生成要求を送信したのがユーザ「z」であるものとする。この場合、優先度計算部140は、ユーザ「z」の習熟度管理テーブル123を参照する。そして図17の例では、ユーザ「z」のパッケージ「A」に対する習熟度は「3.01」である。ユーザ「z」のパッケージ「B」に対する習熟度は「1.01」である。ユーザ「z」のパッケージ「C」に対する習熟度は「1.01」である。ユーザ「z」のパッケージ「D」に対する習熟度は「1.00」である。
【0136】
優先度計算部140は、パッケージ「A」の重みを「weight(A)=3.01」とする。優先度計算部140は、パッケージ「B」の重みを「weight(B)=1.01」とする。優先度計算部140は、パッケージ「C」の重みを「weight(C)=1.01」とする。優先度計算部140は、パッケージ「D」の重みを「weight(D)=1.00」とする。
【0137】
この場合、「#1」の候補パイプライン131の優先度は、「(0.74×3.01)+(0.50×1.01)=2.73」となる。「#2」の候補パイプライン132の優先度は、「(0.74×1.01)+(0.50×1.00)=1.25」となる。「#3」の候補パイプライン133の優先度は、「(0.74×1.01)+(0.50×1.00)=1.25」となる。
【0138】
このように各候補パイプラインが使用しているパッケージの特徴量に差がない場合には、習熟度が高いパッケージを使用している候補パイプライン131の優先度が最も高くなる。そして、その候補パイプライン131が、編集対象のパイプライン161としてユーザに提示される。
【0139】
優先度が最も高い候補パイプラインが編集対象のパイプライン161としてユーザに提示された後、各候補パイプライン131~133の精度が評価され、最も精度が高い候補パイプラインについてもユーザに提示される。以下、図18を参照して、ユーザに提示するパイプラインの選定処理について詳細に説明する。
【0140】
図18は、提示パイプライン選定処理の手順の一例を示すフローチャートである。以下、図18に示す処理をステップ番号に沿って説明する。
[ステップS161]優先度計算部140は、候補パイプラインごとに使用パッケージ名を取得する。
【0141】
[ステップS162]優先度計算部140は、候補パイプラインごとに、その候補パイプラインで使用しているパッケージの特徴量を取得する。例えば優先度計算部140は、TF-IDFにより、特徴量を計算する。
【0142】
[ステップS163]優先度計算部140は、すべての候補パイプラインについて優先度が計算済みか否かを判断する。優先度計算部140は、優先度を計算していない候補パイプラインがある場合、処理をステップS164に進める。また優先度計算部140は、すべての候補パイプラインについて優先度の計算が完了していれば、処理をステップS166に進める。
【0143】
[ステップS164]優先度計算部140は、優先度を計算していない候補パイプラインの1つを取得する。
[ステップS165]優先度計算部140は、取得した候補パイプラインの優先度を計算する。優先度は、例えば「パッケージの特徴量×習熟度の総和」である。優先度計算部140は、その後、処理をステップS163に進める。
【0144】
[ステップS166]パイプライン提示部160は、最も優先度の高い候補パイプラインを、編集対象のパイプラインとしてユーザに提示する。
[ステップS167]評価部150は、すべての候補パイプラインを実行し、その候補パイプラインを用いて生成されたモデルの精度を求める。
【0145】
[ステップS168]評価部150は、1つ以上の候補パイプラインについて精度が取得できたか否かを判断する。評価部150は、精度を取得できた候補パイプラインが存在する場合、処理をステップS169に進める。また評価部150は、すべての候補パイプラインについて精度が取得できなかった場合、提示パイプライン選定処理を終了する。
【0146】
[ステップS169]評価部150は、精度が最高の候補パイプラインがユーザに提示済みか否かを判断する。評価部150は、提示済みであれば、提示パイプライン選定処理を終了する。また評価部150は、未提示であれば、処理をステップS170に進める。
【0147】
[ステップS170]パイプライン提示部160は、精度が最高の候補パイプラインを、編集の参考に使用するパイプラインとしてユーザに提示する。
このようにして、ユーザの習熟度を用いて計算された優先度が最も高い候補パイプラインが先にユーザに提示される。その後、すべての候補パイプラインの実行によって最も精度が高い候補パイプラインが判明したら、その候補パイプラインもユーザに提示される。
【0148】
以上に説明したように、第2の実施の形態に係る機械学習支援システム100によれば、ユーザが編集しやすいパイプラインが、編集対象として提示される。そのためユーザは、効率よくパイプラインの編集が可能となる。しかも、すべての候補パイプラインの精度の計算完了を待たずに編集対象のパイプラインが提示されるため、編集作業の着手までの時間が短縮される。
【0149】
またユーザのパッケージの習熟度の計算では、ユーザによる編集前後のパッケージの精度の差分が用いられている。これにより、ユーザの習熟度を正しく算出することができる。習熟度が正確であることにより、その習熟度を用いた優先度の計算の正確性が向上する。その結果、ユーザが編集しやすいパイプラインを正しく提示することができる。
【0150】
〔その他の実施の形態〕
第2の実施の形態において、機械学習支援システム100は、生成されたすべての候補パイプラインの優先度の計算の後に、候補パイプラインの精度を計算しているが、候補パイプラインの優先度の計算と候補パイプラインの精度の計算とを並列で実行してもよい。これにより、精度の高いパイプラインを提示するまでの時間を短縮することができる。
【0151】
第2の実施の形態では、生成されたモデルの精度によって候補パイプラインを評価しているが、モデルの性能の評価指標は精度(正解率)以外にも、適合率、再現率などの指標がある。候補パイプラインの評価として、生成されたモデルについての精度以外の性能の指標を用いてもよく、複数の指標を組み合わせてもよい。
【0152】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
【符号の説明】
【0153】
1a,1b,・・・ プログラム部品集合
2 習熟度情報
3a,3b,3c 候補プログラム
4 第1のプログラム
5 第2のプログラム
8 ユーザ
9 端末
10 情報処理装置
11 記憶部
12 処理部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18