実装例の態様は、人工知能モデルを生成し最適化し、同時に手動による介在を最小化することに関連した方法、システム、およびユーザ体験に関する。
実装例の態様によれば、コンピュータ実装方法が人工知能モデルを生成し最適化するのに提供される。この方法には、入力済みデータおよびラベルを受け取るステップ、データ検証を実行して構成ファイルを生成するステップ、データを分割して訓練用と評価用の分割済みデータを生成するステップ、分割済みデータの訓練と評価を実行して誤差レベルを測定するステップ、誤差レベルに基づいてアクションを実行するステップが含まれる。このアクションには、構成ファイルを修正するステップ、人工知能モデルを自動的にチューニングするステップ、訓練と評価とチューニングに基づいて人工知能モデルを生成するステップ、およびモデルを本番にサービングするステップ、のうちの少なくとも1つが含まれる。
他の態様によれば、訓練には、入力済みデータに関連した1つまたは複数の入力済み素性を自動的に最適化するステップ、生成済み人工知能モデルに関連したハイパーパラメータを自動的に最適化するステップ、最適化された1つまたは複数の入力済み素性および最適化されたハイパーパラメータに基づいてアップデートモデルを自動的に生成するステップ、が含まれる。
他の態様によれば、1つまたは複数の入力済み素性は、一般的なアルゴリズムによって最適化され、1つまたは複数の入力済み素性の組合せを最適化し、その最適化された入力済み素性のリストを生成する。
さらに1つの態様によれば、ハイパーパラメータを自動的に最適化するステップは、ハイパーパラメータに基づいて最適化するベイズのアルゴリズムとランダムアルゴリズムのうちの少なくとも一方を適用することを含む。
さらに1つの態様によれば、1つまたは複数の入力済み素性を自動的に最適化するステップは、第1の規定の反復回数が満たされるまで実行される第1の反復ループで実行され、ハイパーパラメータを自動的に最適化するステップおよびアップデートモデルを自動的に生成するステップは、第2の規定の反復回数が満たされるまで実行される第2の反復ループで実行される。
別の態様によれば、第1の反復ループおよび第2の反復ループは、第3の規定の反復回数が満たされるまで反復的に実行される。
別の態様によれば、訓練および評価の実行は、データのデータ型式、データの密度、およびデータの量に基づいて、1つまたは複数の素性関数を実行することを含む。
実装例は、記憶装置を有する非一時的コンピュータ可読媒体、および人工知能モデルを生成し最適化する命令を実行することができるプロセッサを備えることもできる。
以下の詳細な説明により、本出願の図表および実装例の詳細を提示する。図表間の重複要素の参照番号および説明は、説明を明快にするため省略する。説明を通して使用する言葉は例示として提示するものであり、それに限定するものではない。
実装例は、従来技術のアプローチでは必要とされてきた手動による人の介在を最小化すると同時に人工知能モデルを作成する方法およびシステムを対象とする。より詳細には、実装例は、データフレームワーク、ディープフレームワーク、およびチューナフレームワークを有する。データフレームワークには、データ検証、ディープフレームワークに必要となる構成ファイルの生成、および/または訓練と評価とテスト用データの編成が含まれる。ディープフレームワーク(例えば、ディープラーニングフレームワーク)により、別のコードを生成する必要なく、本番用ディープラーニングモデルを構築する。チューナフレームワークにより、データフレームワークについて1つまたは複数のハイパーパラメータおよびそれらの組合せ、および入力済み素性と素性類型とモデル形式の組合せ、を最適化する。例えば、これに限定されないが、本実装例は、Python 2.7またはPython 3.Xを使用し、TensorFlow 1.12.0またはそれ以降を使用することによって実行することができ、他の実装が、当業者には理解されるように、発明の範囲から逸脱することなく、それの代わりに用いることができる。
図1は実装例の概要図100である。概要図100によれば、データ101およびラベル103は入力として提供される。例えば、これに限定されないが、データ101はTSV TFRecordまたはHDFSフォーマットであってもよく、ラベル103は文字列として提供されてもよい。105には、データフレームワーク、ディープフレームワーク、およびチューナフレームワークが表示されている。出力107として、TensorFlowがサービングするモデルなどのモデルが、本番に提供される。単一コマンドとして、本明細書の105で示す実装例が、例えば、ユーザによって実行することができる。
TensorFlow Extendedの文脈において、本実装例は、以下のように、任意で統合することができる。より詳細には、図2の200に示すとおりである。TensorFlow Extendedは、ジョブ管理、監視、デバッグ、およびデータ/モデル/評価の可視化、ならびに203に示す共有構成フレームワーク、およびジョブ編成のために、統合フロントエンド201を提供する。本実装例は、その中にチューナフレームワーク205を統合することができる。さらに、データフレームワーク207はデータ解析、データ変換、およびデータ検証を提供し、ディープフレームワーク209はトレーナ、モデルの評価と検証、およびサービングを提供する。さらに、実装例は、211で示す不要データ収集およびデータアクセス制御の共有ユーティリティ、ならびに213で示すパイプライン記憶などの態様をTensorFlowと統合することができる。したがって、人工知能モデルは、構成ファイルと初期データだけで、本番向けに作成することができる。
本明細書で説明するように、実装例は自動最適化を備える。例えば、これに限定されないが、最適化は、入力済み素性の組合せ、入力済み素性のカラム形式、入力交差素性、および入力埋め込みサイズについて実行することができる。さらに、最適化は、モデル選択、モデルアーキテクチャ、モデルネットワーク/接続、モデルハイパーパラメータ、およびモデルサイズについて実行することもできる。
実装例によるパイプラインについては、人工知能フレームワークは、これはTensorFlow Extendedと統合することができるが、様々な工程を備える。図3は、実装例による人工知能フレームワーク300の工程を示している。例えば、これに限定されないが、工程は、ジョブ/リソース管理301、監視303、可視化305、および実行307を含むことができ(例えば、Kubernetes)、その後にデータフレームワーク309、ディープフレームワーク311、およびチューナフレームワーク313が続き、次に、ロールアウトとサービング、ロギング、訓練ハードウェア、および推論ハードウェアが続く。例えば、これに限定されないが、データフレームワーク309は、(データ取入れ工程の後に)データ解析、データ変換、データ検証、およびデータ分割を含むことができる。ディープフレームワーク311は、例えば、トレーナ、モデルの構築、モデル検証、スケールについての訓練、訓練ハードウェアとのインタフェース、ロールアウト、ロギングおよび干渉ハードウェアとのサービングインタフェースを含むことができる。
アーキテクチャ例によれば、タブ区切り値またはTSVフォーマットのデータ構成ファイルおよび入力済みデータがデータフレームワークに提供される。データフレームワークはデータ検証を実行し、ディープフレームワーク向けに、スキーマ、素性、モデルおよび交差素性ファイル、ならびに検証レポートを含む構成ファイルを生成する。また、データフレームワークは、訓練用、評価用、および任意でテストおよび/または予測用にデータを分割する。
データフレームワークの出力はディープフレームワークに提供される。ディープフレームワークは、本番用モデルへの出力と同時にモデル解析レポートを出力し、訓練、評価とテスト、サービングモデルのエクスポート、モデル解析とサービングを実行する。
構成ファイルはチューナフレームワークにも提供され、チューナフレームワークは、オプティマイザ構成ファイルを使用して、入力済み素性およびハイパーパラメータの最適化、モデルの自動選択と自動機械学習を提供する。
前述のアーキテクチャの実行に関して、次のように作業が行われる。まず、入力済みデータが準備され、この入力済みデータはヘッダ無しのTSVフォーマットまたはヘッダとスキーマ構成ファイル無しのTSVフォーマットで提供される。次に、データ検証が実行され、ディープフレームワーク向け構成ファイルがエクスポートされる。さらに、データは、データフレームワークによって、訓練用、評価とテスト用に分割される。次いで、訓練をディープフレームワークによって実行することができるかどうかについて、確認が提供される。さらに、チューナフレームワークは、ハイパーパラメータの最適化、および入力済み素性、素性類型、およびモデル形式の組合せの最適化を実行することができる。続いて、モデルサービング(例えば、予測を提供すること、またはモデルの適用によって出力の蓋然性を使用すること)および推論を、ディープフレームワークによって実行することができる。
図4は、実装例のアーキテクチャ全体400の図である。前述のように、データ401およびラベル403は入力として提供され、入力済みデータ構成ファイル405は任意で提供されてもよい。データフレームワーク407において、データ検証409およびデータ分割411が実行される。データ検証409の結果として、検証レポート413およびディープフレームワーク向け構成ファイル415が生成される。データ分割411において、データは、417で示すように、訓練用、評価用、および任意でテストと予測用に分割される。
ディープフレームワーク419へのデータフレームワークの出力は、構成ファイル415と分割ファイル417である。ディープフレームワーク419において、訓練と評価とテスト、サービングモデルのエクスポート、モデル解析とサービングが実行される。さらに、チューナフレームワーク421は、以下により詳細に説明するように、ディープフレームワーク419とインタフェースで接続する。チューナフレームワークは入力済み素性およびハイパーパラメータを自動的に最適化し、モデルの自動選択を提供する。任意で、オプティマイザ構成ファイル423を提供することができる。出力として、チューナフレームワーク421は、モデルの最適化のために最も好ましい構成ファイル424を提供し、同時にレポート425も提供する。ディープフレームワーク419は、その出力として、サービングモデル427を本番に提供し、同時に、モデル解析レポート429を提供する。
前述の実装例は、本明細書に記載の方法およびシステムを実行する命令を収納する非一時的コンピュータ可読媒体を通じて実行することができる。例えば、これに限定されないが、命令は、単一マシンの中の単一プロセッサ上で、単一マシンの中の複数プロセッサ上で、および/または複数マシンの中の複数プロセッサ上で実行することができる。例えば、1つのCPUと1つのGPUを有する単一サーバにおいては、実装例はそのGPU上で命令を実行することができ、複数GPUを有する単一サーバにおいては、処理はいくつかのGPUまたはすべてのGPUを使用して並列化形式で実行することができる。複数CPU、複数サーバ環境においては、効率を最適化する方法で負荷分散技術が使用される。1つの実装例によれば、ヤフー株式会社によって開発された、kukaiシステムを採用してもよい。
データフレームワークについては、先に開示したように、データ検証、ディープフレームワーク向け構成ファイルの生成、ならびに訓練用および評価とテスト用データの分割が実行される。これらのスキーム関連した実装例は、以下でより詳細に説明する。
例えば、これに限定されないが、Deep Framework 1.7.1またはそれ以降が、実装例にしたがって、データフレームワークとともに使用することができる。ただし、他のアプローチまたはスキームは、発明の範囲を逸脱することなく、実装例の中でそのためにサブミットすることができる。さらに、データフレームワークへの入力として、データファイルが提供される。本実装例においては、データフォーマットはTSVをサポートすることができ、有利な仕様がデータファイルの第1行目に、またはDeep Framework schema.yamlの中に提供される。さらに、データ構成ファイルはDATA.yamlとして提供される。
フレームワークのデータ検証によれば、データ検証は以下に説明するように実行される。データ検証は、無視するカラムを指定する関数を有している。無視するカラムが指定されると、これらのカラムは構成ファイルにエクスポートされないことになる。任意で、カラムは重み付けすることができる。より詳細には、データの中のラベルクラスそれぞれの番号が一様ではない場合、重みカラムはモデルの性能を改善することができる。より詳細には、重みカラムは、サンプルの損失と掛け合わせることができる。意味的には、重みカラムは、重みを表す文字列型カラムまたは数値カラムであってもよく、この重みカラムを使用して、訓練中に重みを下げたり、サンプルを増加させたりする。カラムの値は、サンプルに関連した損失と掛け合わせることができる。値が文字列型の場合はそれをキーとして使用して、素性から重みテンソルを引き出す。カラムの値が数字の場合は、RAWテンソルを引き出し、続いてノーマライザを適用し、重みテンソルを適用する。さらに、読み込むレコード数の最大数を指定することができる。
さらに、密度比率のしきい値を指定することができ、以下で説明するように密な密度と疎な密度を区別し、この関数を実装する。同じく、密なデータにおける少量と大量を区別するための最大値のしきい値を指定することができ、同様に、疎なデータの少量と大量を区別するための一意の総数のしきい値を提供することができる。また、ユーザIDのカラム名を指定し、再集計とユーザとの関係性をレポートすることができる。
データ検証の一部分として、データの少量と大量を区別するための一意の総数のしきい値を提供し、同様に大きな値と非常に大きな値とを区別する総数のしきい値を提供することができる。任意で、バケットの数も指定してもよい。以下に説明するように、バケット化関数に関連した2タイプの区画による出力がある。第1の区画は、指定数によって最大値と最小値との区別を定義する。第2の区画は、おおよそ同一サイズのバケットに分類するように定義する。計算されるバケットの実際の数はリクエスト数よりも小さい場合も大きい場合もある。これらの区画は、以下に説明するように、モデルオプティマイザの素性関数の最適化に使用することができる。
さらに、データフレームワークは、データを訓練用データ、評価とテスト用データに分割する。例えば、これに限定されないが、各データファイルの比率は、合計値が1.0になるように、指定することができる。あるいは、その比率は、データサイズに基づいて、自動的に計算することができる。さらに、任意で、各データファイルへのレコードのデータエクスポートは、その値が「true」に設定されることに基づいて、実行することができる。さらに、データセットは、ユーザIDのカラム名に基づいて、指定された比率で各ユーザIDに分割することができ、そのデータセットは、タイムスタンプのカラム名を指定することによって、タイムスタンプに基づいて、分類後に分割することができる。
実施例によれば、データフレームワークの作業は以下のように行われる。最初に、データ検証関数についての前述の実装例を参照し、データおよびディープフレームワーク構成ファイルを検証する作業が実行される。データ検証作業が実行されたのちに、レポートおよびヒストグラムファイルが生成され再検討することができる。例えば、これに限定されないが、検証レポートにより、データ誤差、またはデータの問題点に関する警告についての情報を提供することができる。さらに、レポートログを生成することができ、密度などの情報を提供する。
検証レポートおよびヒストグラムファイルを検査したのちに、ディープフレームワーク構成ファイルを検証することができる。さらに、データを分割する作業を実行することができ、続いて、訓練用データと評価用データとの比較を実行する。その比較の結果も検証することができる。
実装例によると、素性関数選択アルゴリズムは以下のように提供される。図5は素性関数選択アルゴリズム500の実装例の図である。整数型のデータについては、501において、最大値+1に対する一意の総数の比率に基づいて密度が判定される。503においてその密度がしきい値以上であると判定されると、505においてデータは密なものとして特徴づけられる。507においてその密度がしきい値未満であると判定されると、509においてデータは疎なものとして特徴づけられる。505において密なものとして特徴づけられるデータについては、最大値が少量定数以上であるかどうかで判定される。少量定数以上である場合は、511において密なデータは大量として特徴づけられ、513において、IDを備えた分類カラムが実行され、同様に、埋め込みが実行される。これに対し、最大値が少量定数未満であると判定されると、515においてデータは密なものかつ少量なものとして特徴づけられ、517においてIDを備えた分類カラムを使用して実行される。
509において判定された疎なデータについて、データの一意の総数がしきい値と比較される。509において一意の総数がしきい値以上であると判定されると、519においてデータは大量かつ疎なものとして特徴づけられ、ハッシュバケットを備えた分類カラムが提供され、521において埋め込みカラムが実行される。これに対し、一意の総数がしきい値未満であると判定されると、523においてデータは少量かつ疎なものとして特徴づけられ、ハッシュバケットを備えた分類カラムが提供され、525において実行される。
527において判定された文字列型データについては、一意の総数は少量定数と比較される。529において一意の総数が少量定数未満であると判定されると、531において文字列データは少量であると判定され、語彙リストを備えた分類カラムが提供され、533において語彙ファイルを備えた分類カラムが実行される。535において一意の総数が大量定数未満である判定されると、537において文字列データは大量であると判定され、語彙ファイルを備えた分類カラムが提供され、539において埋め込みカラムが実行される。541において一意の総数が大量定数以上である場合は、543において文字列データは超大量であると判定され、ハッシュバケットを備えた分類カラムが提供され、545において埋め込みカラムが実行される。
547において判定された浮動小数点型データについては、データは、549において実行されたバケット化カラムまたは551において実行された数値カラムのいずれかとして特徴づけられる。
データフレームワーク向けデータの取得に関して、ユーザは、携帯電話などのユーザ機器に関連した情報から、ID、タイムスタンプ、位置などの情報を提供することができる。同様に、オペレーティングシステム情報は、システムにアクセス可能なユーザ機器に関連した、IPアドレス、MACアドレス、または他の利用可能な情報から取得することができる。性別、年齢、職業などの人口統計学的な情報は、ユーザプロファイルデータからユーザの承諾を得て取得することができる。さらに、ユーザIDおよび追加情報は暗号化され、開発者が、ユーザに関する1つまたは複数のタイプの情報に基づいて、ユーザを識別することはできないことに留意されたい。
データの分割に関して、機械学習方法のために、訓練用データおよび評価用データは別々に準備されなければならず、データは訓練し評価する必要がある。前述のように、データフレームワークにより、訓練用データおよび評価用データが提供される。実装例によれば、訓練用データと評価用データは重複してもよい。さらに、テストは反復的に実施することができ、最適なデータテスト性能を提供するために、反復ごとにデータをシャッフルしてもよい。
以下で説明するように、ディープフレームワークはデータ訓練のために提供し、このデータ訓練は、ユーザまたは開発者がコードを提供する必要なく、自動的に実行される。また本明細書で説明するように、メカニズムまたは方法が、データの文字列型、整数型、および浮動小数点型、少量または大量などのデータの特質、ならびに密度関連情報を検出するのに提供される。
したがって、データフレームワークの出力として、モデル、スキーマ、素性、交差素性、および訓練用と評価テスト用に分割されたデータ自体、ならびに、任意で予測が提供される。この情報に基づいて、ディープフレームワークは以下に説明するように実装される。
図6に示すように、ディープフレームワークアーキテクチャ600は、インタフェース613を有するディープフレームワーク611を経由して、前述のように、構成ファイル(例えば、モデル、スキーマ、素性、および交差素性の各構成ファイル601~607)およびデータ609を受け取ること含む。さらに、ディープフレームワーク611は、エスティメータ615、チューナフレームワーク621とインタフェースで接続されるコア619、以下でもう少し説明するが、本番モデル623およびレポート625を提供する。
より詳細には、図7に示すように、ディープフレームワークに関連する一連の作業700が提供される。データフレームワークは701においてデータを準備し、703において構成ファイルを作成する。ディープフレームワークは、データフレームワークから受け取った構成ファイルに基づいた、訓練705および評価707を有する。訓練誤差率が高いと、データフレームワークへのフィードバックは、より大きなモデル、より長い訓練、および/または新しいモデルアーキテクチャを提供するか、または、709で示すように、チューナフレームワークによって自動チューニングを実行することになる。評価誤差率が高いと、データフレームワークへのフィードバックは、より多くのデータを組み入れた修正済み構成ファイルを提供することになり、正規化、および/または新しいモデルアーキテクチャ、あるいは711で示すようなチューナフレームワークによる自動チューニングの実行を提供することになる。ディープネットワークによる訓練および評価が完了すると、713においてテストフェーズが、715においてモデルエクスポートが、717においてサービングが実行される。
前述のように、入力済みデータファイルは、任意でTSVフォーマット、ヘッダ無し、およびTFRecordで提供される。任意で、実装例は、変換関数を使用することによって、変換するエクスポートレコード数を指定することによって、入力済みTSVファイルがヘッダを含まない場合はスキーマファイルを指定することによって、TSVとTFRecordを変換する方法を含むことができる。
構成ファイルは、カラムIDおよびカラム名を含む、スキーマファイルを有するものとして提供され、その配列は入力済みデータファイルと一致しており、カラム名はsensitiveである。ディープフレームワークは、構成ファイルを、TensorFlow関数などの関数に変換することができる。より詳細には、カラム名をキーとして使用することによって、構成ファイルは関数に変形するが、パラメータ名および関数名は保持することができる。さらに、一部分を省略する、またはデフォルトに設定することができる。
関数は、生成されて数値参照が付与されると、モデルオプティマイザに関連する素性関数の自動最適化に使用することができ、必要なだけ値を指定することができる。このことは、素性関数アルゴリズムおよびデータフレームワークに関するバケットに関連して、前述されている。
1つまたは複数の基本素性関数を提供することができる。これら素性関数は、データフレームワークに関連して前述したように、素性関数アルゴリズムに基づいてその使用を選択することができる。例えば、IDを備えた分類カラムおよびIDと埋め込みカラムを備えた分類カラムの関数は、入力がゼロからバケットの数までの範囲内の整数である場合に使用することができる。ハッシュバケットを備えた分類カラムおよびハッシュバケットと埋め込みカラムを備えた分類カラムの素性関数は、疎な素性であって、ハッシュの使用によってIDが設定される場合に使用することができる。語彙リストを備えた分類カラムおよび語彙リストと埋め込みカラムを備えた分類カラムの素性関数は、入力が文字列または整数フォーマットであって、各値を整数IDにマッピングするメモリ内語彙が提供される場合に使用することができる。
語彙ファイルを備えた分類カラムおよび語彙ファイルと埋め込みカラムを備えた分類カラムの素性関数は、入力が文字列または整数フォーマットであって、各値を整数IDにマッピングする語彙ファイルが提供される場合に使用することができる。数値カラムの素性関数が提供され、そのデータは値を持つ数値素性を示す。また、バケット化カラムの素性関数が離散化済み高密な入力を示すデータに提供される。さらに、前述の1つまたは複数の素性関数に関連して、連続した値を扱うために、連続した素性関数を提供することができる。
図8に示すように、モデルファイルについて、モデル800は、ワイドモデル801、ディープモデル803、またはワイドモデルとディープモデルの組合せなどの線形であってもよい。モデル設定は、1つまたは複数の分類器クラスおよび1つまたは複数の回帰クラスを有することができる。個別化されたレコメンダシステムの文脈において、ユーザID、人口統計、オペレーティングシステム、および/またはユーザデバイスないしはユーザ機器などのユーザ情報805を提供することができる。同様に、商品ID、名称、タグ、カテゴリ、発行日、供給業者などの商品情報807を提供することができる。
素性関数の作業は前述のように実行することができる。疎な素性について、適宜809において作業が実行され、ワイドモデル801またはディープモデル803、あるいはそれらの組合せは、素性関数の作業の結果に基づいて実行することができる。811においては、高密な埋め込みについて、ディープモデル803の実装について前述したような素性関数の決定に基づいて、隠れ層813として示すように別の作業を実行することができる。さらに、出力部815が、サービングモデル向けなどに、提供される。
要約すると、ユーザ情報および商品情報がデータフレームワークに提供され、素性の疎密さについて判定が行われる。素性が十分に高密である場合は、素性関数モデルに関連して前述したように、高密埋め込みが実行され、ディープゼネラリゼーションが実行されて隠れ層を通じて出力を生成する。あるいは、高密な埋め込みがない場合は、ワイドメモライゼーションが実行されて出力を生成する。出力部は、任意のまたはすべての商品についての確率の結果を提供することができる。
ディープフレームワークをサポートするために、1つまたは複数のAPIを提供することができる。図9は、実装例によるAPI900を示す図である。例えば、これに限定されないが、APIは901においてRESTの中で提供することができ、TensorFlowサービングコンテナなどのサービングサーバ907へのクライアント入力905を含み、サービングサーバ907はモデルレプリカを生成し、サービス化モデル911と同期する。さらにAPIは、モデル構築を通じて訓練913を提供し、訓練913は実験、アイデア生成、および生成したアイデアに基づいた構成ファイルの修正を含む。さらに、903においてPython API(例えば、gRPC)を提供することができ、これは要素907、911、および913に関連したREST APIに類似している。また、Python APIは、クライアントからの情報、前処理ロジック回路917と後処理ロジック回路919からなるミドルウェア、およびgRPCクライアント921とのAPIインタフェース915を備えることができる。
図10は、多様なデータ密度判定にマッピングすることが可能な様々なデータ型式を表したマッピング1000、および実装することが可能な関連素性関数を示した実装例の図である。例えば、整数データ型式が1001に示され、これには、ユーザID、商品IDなどの識別子、年齢、年、月、日などの数値、および、デバイス、性別、OSなどのカテゴリなどが含まれる。さらに、ブールデータ型式はクリックなどのフラグ型として1003に示され、タグやクエリなどを含む文字列データは語彙型として1005に示され、浮動小数点データが温度、重量、高さ、価格などの実数値型として1007に示される。
1017においてデータが密で少量のデータを含むと判定されると、IDを備えた分類カラムの素性関数が1027において適用される。1015においてデータが密で大量であると判定されると、IDを備えた分類カラムの素性関数および埋め込みが1029において適用される。1013においてデータが疎で少量であると判定されると、ハッシュバケットを備えた分類カラム素性関数が1031において適用される。データが疎で大量であると判定されると、ハッシュバケットを備えた分類カラムの素性関数および埋め込みが1033において実行される。データが1009においてバケット化済みであると判定されると、1035においてデータは素性関数としてバケット化済みカラムであると評価される。前述のデータ判定のいずれにも適合しない場合は、1037においてデータは数値カラムとして特徴づけられる。
さらに、文字列値のデータ型式については、1019においてデータが少量であると判定されると、1039において語彙リストを備えた分類カラムおよび語彙ファイルを備えた分類カラムの素性関数が適用される。1021においてデータが大量であると判定されると、1041において語彙ファイルを備えた分類カラムの素性関数および埋め込みが適用される。1023においてデータが超大量であると判定されると、1043においてハッシュバケットを備えた分類カラムの素性関数および埋め込みが適用される。
1007において浮動小数点型であると判定されたデータ型式については、1025においてデータはバケット化済みであると判定され、1045においてバケット化済みカラムの素性関数が適用される。もしくは、数値カラム1037の素性関数が浮動小数点型のデータに適用される。
例えば、これに限定されないが、基準分類器を提供することができ、この基準分類器は、素性値を省略し、各ラベルの平均値を予測するのに提供される単純な基準を確立する。単一ラベル問題については、基準分類器がラベルと同様にクラスについての確率の分布を予測することができる。複数ラベル問題については、基準分類器が各クラスに対して正であるサンプルの割合を予測することができる。
さらに、線形分類器を提供することができ、線形モデルを訓練してインスタンスを複数の可能性のあるクラスのうちの1つに分類する。例えば、これに限定されないが、可能性のあるクラスの数が2の場合、これはバイナリ分類である。さらに、DNN分類器を提供することができ、DNNモデルを訓練してインスタンスを複数の可能性のあるクラスのうちの1つに分類し、それによって、可能性のあるクラスの数が2の場合、これはバイナリ分類になる。また、線形分類器とDNN分類器の組合せを提供することができ、これにより、前述の線形分類器モデルとDNN分類器モデルを組み合わせる。さらに、分類器にAdaNetなどのモデルを提供する、または組み合わせることができる。回帰型ニューラルネットワークモデルを訓練してインスタンスを複数のクラスのうちの1つまたは他の分類器(例えば、残差ネットワークを備えたDNN、または自己注意型ニューラルネットワークを使用した自動素性インタラクションラーニング)に分類するTensorFlow RNNモデルが、当業者に理解されよう。
同様に、リグレッサを先述の分類器に提供することができ、素性値を省略して平均値を予測し、見積りを提供するなどが可能である。
モデルは1つまたは複数の関数を有することができる。例えば、これに限定されないが、1つまたは複数の関数は停止関数を有することができ、この停止関数は、メトリックが所定の最大ステップ内で低下しない、所定の最大ステップ内で増加しない、しきい値より高いまたは低いなど、一定の条件下で訓練を停止する。前述の事例に限定されず、当業者に理解されるように、他の関数を含むことができる。
前述のように、データセットおよび構成ファイルを使用して、訓練および評価を実行することができる。この訓練および評価は1つのCPUまたはGPUを有する単一マシン上で作動し、GPUは利用可能な場合に自動的に使用することができる。さらに、プロセスは複数のデバイスに対して並列化することができ、GPUまたはCPUの規定の数を指定することができる。処理はバックグラウンドで実行することができ、コンソールログが表示され、任意で処理を停止することができる。
実装例によれば、テストモデルが作動し、予測モデルが作動し、モデルアナライザが続く。次いで、エクスポートがcervicalモデルに対して実行され、モデルサーバが起動し、前述のように、RESTおよびPython APIを備えたインタフェースの作動が続く。
任意で、TensorBoardを使用してディープフレームワークを可視化することができる。例えば、TensorBoardは、実行すると閲覧することができ、訓練データおよび評価データがグラフィカルに表示され、同様に、作業についてグラフが提供され、さらにデータが表示される。
例えば、図11は、TensorBoardを採用の実装例に関連したユーザ体験例を示す図である。1101においては、ユーザが「scalars」を選択する。1103においては、訓練データと評価データの比較がグラフ形式で表示されている。1105および1107においては、訓練データおよび評価データそれぞれのカーブが、損失を表現するように示されている。
図12は、別のユーザ体験例を示す図である。より詳細には、1200においては、トレース構造の画像が示され、その画像の中で、ユーザは1201で「graphs」を選択している。1203においては、構成要素間の関係性がグラフ表示されている。
図13は、1300で、ユーザ体験の別の実装例を提供する。より詳細には、1301においてユーザは「projector」を選択し、1303においてユーザはカーネルを選択している。その結果、1305においてデータ表示が示されている。
ディープフレームワークはモデルアナライザを有する。より詳細には、モデルアナライザはエクスポート、および入力済みデータに関連した各カラムについての正確なレポートを生成する。例えば、これに限定されないが、入力済みデータがユーザID、オペレーティングシステム、エージェントアドレスを含んでいる場合、これらのカラムそれぞれについて、正確なレポートが生成されることになる。より詳細には、ユーザが所定のモデルに対して高精度を有するか、または低精度を有するかについて、判定を行うことができる。同様に、モデルの精度を改善する必要があり得るデータの類、および不足しているデータについて、判定を行うことができる。
1つの実装例によれば、精度は、2つのモデルについて、androidおよびiOSそれぞれについて判定される。モデルアナライザの出力は、androidおよびiOSそれぞれについて、モデルそれぞれについて、0.0と1.0の間の精度スコアで提供される。見てのとおり、androidは両方のモデルでiOSよりも精度が高かった。さらに、総データ数が、データ量を検証するために、androidおよびiOSの両方について提供される。加えて、出力は、第2のモデルがandroidおよびiOSオペレーティングシステムの両方について高精度を有することを実証した。
例えば、図14に示すように、モデル間の比較1400が、androidとiOSオペレーティングシステムそれぞれについて提供される。1401に示すように、モデルAおよびモデルBの両方について、androidがiOSとの比較においてより高い精度を示している。さらに、モデルAとモデルBの間において、モデルBがモデルAとの比較においてより優れた精度を示している。加えて、1403はオペレーティングシステムについてのデータ数を示している。
ユーザの年齢がモデルアナライザへの入力として提供され、各モデルについて年齢グループそれぞれの精度判定を行った。第2のモデルがほとんどの年齢グループで高い精度を提供することが理解されよう。さらに、データ数は年齢グループにも提供されている。
例えば、図15に示すように、モデルAとモデルBそれぞれについて、年齢グループをまたがって比較1500が提供される。1501に示すように、モデルBは、モデルAとの比較において、ほとんどの年齢グループでより高い精度を有している。さらに、1503は、年齢グループについてのデータ数を示している。
加えて、実装例は「what if」と呼ぶツールを提供し、このツールにより、コーディングすることなく、詳細にモデルを精査することを可能にする。このツールを実行すると、データとモデル情報、およびモデル型式を入力することができる。例えば、図16は、そのようなユーザインタフェース例1600を示す図である。この情報を入力すると、データを視覚的に表示するなど、出力を生成することができる。さらに、データポイントエディタを提供し、素性値を修正して更新済み推論を作動させたり、グランドトルース素性の基準を設定、公正メトリックを比較、あるいは性能を再検討したり、ページ、ユーザID、タイムスタンプなどの様々な入力済み素性について、数値素性の表示を可視化したりすることができる。例えば、そのような出力を図17から20に示す。
チューナフレームワークに関して以下に説明するように、自動チューニングに加えて、手動チューニングオプションを提供することができる。より詳細には、一部の人工知能モデルにおいては、チューナフレームワークの結果が、開発者のカスタマイズ要求に十分に合致しない場合がある。そのような状況、および任意でユーザの同意を必要とする状況においては、チューナフレームワークの出力の後でモデルをカスタマイズすることができる。プロセスを完全自動化するために、任意で、手動チューニングオプションを使用できなくしたり、提供しないようにしたりできる。これにより、潜在的に機微な情報への手動によるアクセスを予防することができる。さらに、実装例における本明細書に記載の自動チューニングのいくつかの態様を組み合わせたハイブリッド型アプローチ、および関連の手動チューニングアプローチを提供することができる。
前述のディープフレームワークの実装例は、サンプルデータセット上で実行することができる。さらに、複数クラス分類、バイナリ分類、および回帰を、1つまたは複数のサンプルデータセット上で実行することができる。図21は、素性関数の取扱いに関連した実装例を示す図である。より詳細には、2100に示すように、素性関数の実行、変換関数および分類の作業に関連した複数のシナリオを示す。2101においては、ハッシュバケットを備えた分類カラム、語彙リストを備えた分類カラム、語彙ファイルを備えた分類カラム、およびIDを備えた分類カラムの素性関数を実行して、出力を提供する。関数が出力上で実行され、データが疎であるとの判定に基づいて、線形分類器および線形リグレッサを実行することができる。これに対して、データが高密であるとの判定の場合は、2101に示すように、さらに分類関数を実行することができる。同様に、埋め込みが実行されると、2103にスキーマが示される。これに対して、素性関数が数値カラムの場合は、2105においてデータが高密であるかどうかの判定が行われ、そこに示すように、分類が実行される。バケット化カラムについては、2107において数値カラムが定義され、データが高密であるとの判定が行われ、様々な分類が実行される。
実装例によれば、評価用データの損失が訓練用データの損失を超過する、過剰適合シナリオを識別することができる。このような状態においては、図22(例えば、評価用データと訓練用データとの間に損失の大きな差があるケース)に示すように、より多くのデータ、正則化を要求することによって構成ファイルを修正する、または新しいモデルアーキテクチャを提供するように、判定が行われる場合がある。
図23に示すように、訓練用データと評価用データの損失が大きい状態では、過小適合の状態にある可能性がある。このような状態においては、より大きなモデルを提供する、より長時間訓練する、または新しいモデルアーキテクチャを採用するように、構成ファイルが修正される場合がある。
実装例によれば、ディープフレームワークは、素性関数の結果およびデータ型に基づいて、データに関連した統計情報をエクスポートして、データを巧みに作業し、最適な選択のための推奨を提供する。
本明細書で提供する、ディープフレームワークを使用した実装例により、範囲に関する密度を使用して素性の自動選択を可能にする。例えば、これに限定されないが、様々なデータ型について、データ密度が疎、密、高密であるかどうかを考慮に入れる。大きなサンプルサイズを有する疎なデータについては、埋め込みを実行することができる。さらに、密な、または非常に高密なデータについては、どれだけ多くのデータが存在するかを確認するように、判定が行われる場合があり、しきい値に合致しているかどうかに基づいて、埋め込みが実行される。このようなしきい値に合致していない、または低いしきい値が提供されている場合は、IDを使用してデータを分類することができる。
データが十分に高密でない場合は、分類できない可能性がある。さらに、データが疎である場合は、ハッシュを実行してIDの表示を回避することができる。この埋め込みモデルを使用して、実装例は、しきい値に合致しているかどうかを判定する。このように、モデルの最適化を提供することができ、チューナフレームワークに関連して説明したように、例えば、ランダムに、またはベイズ最適化に基づくかのどちらかの手法で、モデルの選択を実行することができる。
前述のように、ハイパーパラメータ、入力済みデータの組合せ、およびモデル選択を自動的に最適化するために、チューナフレームワークが提供される。一部の環境では、モデルの最適値を手動で取得することができない。例えば、図24の2400に示すように、第1のハイパーパラメータ2403と第2のハイパーパラメータ2405とオブジェクト2407との間に挟まれた解空間2401において、手動による最適化により特定領域の結果2409を提供することができる。しかし、大域的最大の結果2411は、手動による最適化だけでは取得することはできない。さらに、手動による最適化により、オペレータはプライバシー保護のない形式でユーザおよび/または商品のデータを見ることを可能にする場合がある。
したがって、本実施例は、ランダム検索アルゴリズムおよびベイズ最適化アルゴリズムを提供し、ディープフレームワークおよびデータフレームワークの文脈の中で提供される。より詳細には、図25に示すように、チューナフレームワーク2500はディープフレームワーク構成ファイル2501、ならびにオプティマイザファイル2503、および例えば前述のTSVフォーマットの入力済みデータ2505を含む。
より詳細には、モデルオプティマイザ2507は生成済み構成ファイル2509を受け取り、2511においてオプティマイザを使用して生成済み構成ファイルを備えたモデルの評価を実行し、2513においてその結果を解析し、2515において出力したレポートをディープフレームワーク構成2517に対してレポート形式2519で提供する。
前述のように、構成ファイルがデータフレームワークによって生成され、編集して、または編集せずに、チューナフレームワークに直接提供されてもよい。構成ファイルの中で、リグレッサモデルについてはaverage_loss(MINIMIZE)、分類器モデルについてはaccuracy(MAXIMIZE)のように、メトリックタグを指定する。さらに、ランダム検索またはベイズ最適化のいずれかのアルゴリズム、およびモデルパラメータの許容最大数を指定する必要がある。
実装例によれば、ランダム検索アルゴリズムは、図26の2600に示すように、以下のように実行することができる。第1の作業2601においては、入力済み素性が最適化され、この作業は、その試行の回数が入力済み素性の試行の回数未満である限り、反復して実行される。第2の作業2607においては、ハイパーパラメータ最適化2603およびモデル自動選択2605が実行される。これらの作業は、その試行の回数がモデルの試行の回数未満である限り、実行される。2609において、第1の作業および第2の作業がループで実行され、そのループの回数がランダム検索を実行するのに必要なループ回数未満である限り、実行される。
ランダム検索実行モデルが実行されると、その結果が「false」の場合、2611に示すように、第1の作業が実行され、その後に第2の作業が実行される。これに対し、結果が「true」の場合は、この作業は取り消され、2613に示すように、第2の作業が実行され、その後に第1の作業が実行される。
第1の作業に関連して、これは入力済み素性の作業の設定であるが、入力済み素性の最適構成を自動的に抽出するために、実装例が以下のように実行される。試行回数が立証され、前述のように素性関数を生成するために素性カラム関数型を「true」に設定することによって最適化が可能になると、ランダム検索を実行する関数が最良の結果に基づいて入力済み素性に「true」を設定しているかどうかについて判定を行う。この場合は、一般的なアルゴリズムを使用して入力済み関数の組合せを最適化する。任意で、最適化の処理中に各作業において使用される入力済み素性のリストを提供することができ、同様に、次のハイパーパラメータ最適化プロセスに受け継がれる試行ごとの反復の数および結果の数を提供することができる。結果として、入力済み素性の自動最適化が実行される。
第2の作業に関して、ハイパーパラメータ最適化が提供される。例えば、一定のパラメータの値は、試行回数設定、および「ベイズ最適化」に設定されたアルゴリズムに基づいて、最適化することができる。さらに、試行および反復の回数も設定することができる。次いで、モデルオプティマイザ構成ファイルが検査され、必要に応じて編集される。チューナフレームワークの前回の結果が取り除かれ、続いて、構成ファイルおよびデータフレームワークによって提供されたデータを使用して、データセットを備えたチューナフレームワークが実行される。
チューナフレームワークは、CPUまたはGPUを備えた単一マシンの単一デバイス上で、またはCPUをまたがって自動的に使用されるGPUを備えた単一マシン上の複数デバイス上で、実行することができる。チューナフレームワークの処理はバックグラウンドで実行される。
1つのマシン上の複数デバイスを使用して、いくつかのCPUまたはGPUの並列化を提供することができる。さらに、チューナフレームワークは、複数マシン上の複数デバイスで作動させることができる。任意で、チューナフレームワークは、一般的に、所定の1つのマシンまたは複数のマシン上でCPUをまたがって自動的にGPUを使用するように選択することができる。より詳細には、チューナフレームワークの実行にはサーバリストファイルを修正し、複数マシン上の複数デバイスを使用してチューナフレームワークを実行することになる。
本明細書で説明するように、チューナフレームワークは、人工知能モデルを自動的にチューニングし作成する。ライブラリとしてディープフレームワークを使用し、そのディープフレームワークの実行に基づいて、チューナフレームワークは、更新済みモデル、またはモデルへの推奨される変更を提供する。任意で、ユーザにレポートを提供することができ、そのレポートは、変更する必要のある、間違った、見逃した、あるいは不適当なデータの表示を含み、そのようなデータを変更する機会をユーザに提供する。このオプションを使用して、フィードバックする機会を提供し、モデルをさらに洗練させることができる。また、ディープフレームワークおよびチューナフレームワークに含まれるべきではないデータを除去することによって、性能をさらに改善することができる。
本明細書に記載の実装例は、入力オプティマイザおよびハイパーパラメータオプティマイザを有し、これらはチューナフレームワークに実装して最適モデルの判定を提供する。入力オプティマイザは、ユーザによって提供されたRAWデータに応じて最適化を提供し、提供されたRAWデータの最適な組み合わせを判定する。
実装例によれば、チューナフレームワークのオプティマイザは入力最適化を提供する。対照的に、従来技術の手法は、入力最適化を提供しない。代わりに、従来技術の手法は、すべてのデータを含め、すべての情報をモデルに集約しようと試みるが、データを分割した後に入力最適化を提供しようとしない。その代わりに、従来技術の手法は、入力済みデータを最大化することを追求する。しかし、実装例においては、チューナフレームワークが素性の最適な組み合わせを判定して選択し、これによって、重要な情報およびパラメータを選択し、ノイズを除去する。例えば、本明細書に記載の遺伝的アルゴリズムを採用して入力を最適化することができる。さらに、本明細書でも説明するように、ランダムモデルおよびベイズモデルのうちの片方または両方がハイパーパラメータ最適化に採用されている。
さらに、実装例は反復手法を提供する。本明細書で説明するように、反復手法は入力最適化に関連して提供され、また、他と関係なく、反復手法はハイパーパラメータ最適化にも関連して提供される。さらに、入力最適化およびハイパーパラメータ最適化は反復ループの中に含まれている。発明者は、入力最適化およびハイパーパラメータ最適化を反復ループに追加することによって、重要で望外な結果を提供することができる、と結論づけている。
チューナフレームワークの実行が完了すると、処理結果の確認が行われる。より詳細には、リアルタイムに、または停止点に基づいて、規定の最上位の数値の結果を提供し、それによって、ランク付けされた結果を再検討することができる。それの代わりに、TensorBoardなどの表示ツールを使用してすべての結果を表示し、例えば、正確な損失または平均の損失を表示することができる。
最終結果の確認を行うことができ、その結果のログを入力済み素性情報とともにエクスポートすることができる。最終結果を使用して、最良の結果を使用したモデルの訓練を行うことができ、それによって、構成ファイルを修正して訓練を再度作動させることができる。
実施例によれば、図27に示すように、モデルオプティマイザを、複数分類の問題型の「map life magazine」に関連したデータ上で作動させることができる。2701および2703を見ると分かるが、2つの異なる処理モデルを使用し、precisionおよびrecallそれぞれが最適化の前と後で増加している。さらに、素性およびモデルは、最適化の前後において、最適化されているように理解されよう。
図28に示すように、2801において代替のハードウェア構成を使用し、処理速度が実質的に増大している。これは、精度を計算するのに必要な時間数で示すことができる。この新しいバージョンは、図29に示すように、並行分散処理の性能が処理時間の点で実質的に性能向上を備えていることを示すことができる。
確度または可能性に基づいて、出力を提供することができる。製品またはサービスを購入するために検索するなど、オンライン検索に没頭しているユーザの実装例においては、商品がユーザによって購入される確率に基づいて、検索結果をランク付けまたは整列させることができる。前述の実装例は自動的にサービスを提供するため、オペレータは、ユーザに関連した情報を手動で再検討する必要はなくてよい。したがって、本実装例はプライバシー保護された手法を提供し、人工知能技術を使用して、例えば、オンライン検索におけるランク付け出力を提供することができる。
例えば、1つの電子商取引モデルによれば、入力済みデータは、ユーザID、人口統計情報、オペレーティングシステム、検索に使用されるデバイスなどを含むユーザ情報である。さらに、入力済みデータは、商品ID、名称、型式、メタデータ、カテゴリ、発行日、供給業者、企業名などの商品情報も含み、前述のデータは、データフレームワーク、ディープネットワーク、およびチューナフレームワークへの入力として使用することができる。モデルの出力は、購入などのユーザおよび商品に関連したイベントの発生の確率である。前述のように、埋め込みを使用してデータをベクトル化し、データ間の類似性を評価する。
さらに、前述の実装例は候補素性も提供する。例えば、これに限定されないが、統計および候補素性に加えて、エクスポート候補および関数の型式を自動形式で提供することができる。モデルについての最良の関数からの最良の結果を提供し、使用するパラメータおよび入力を生成する。実装例は、基本モデル、およびモデルサイズ、メトリック、平均損失などのログからの抽出情報を受け取る。結果として、ユーザは、データフレームワーク、ディープフレームワーク、およびチューナフレームワークによって提供された情報に基づいて、最適なモデルを理解することができる。
モデルを使用して、例えば、ユーザが商品を購入する可能性を予測することができ、その可能性のランク付けに基づいて、検索を要求するユーザ向けに優先付けされた領域において商品リストまたは推奨を提供することができる。それの代わりに、所定の商品について、その商品の販売業者向けに、その商品を購入する可能性があり得るユーザについてランク付けを提供することができる。例えば、任意でカテゴリによって分類された、多種の製品を提示するウェブサイトについて、本実装例は、購入の可能性に基づいた商品の分類されたランク付けされたユーザ向け出力、あるいは、ユーザが商品を購入する可能性に基づいたユーザのランク付けされた販売業者向け出力を提供することができる。したがって、推奨は、検索を実行するユーザに対して自動的に個別化される。モデルはユーザの嗜好やユーザの特徴を自動的に学習し、その学習した情報を適用してユーザが1つまたは複数の商品を購入する可能性を計算する。
したがって、実装例は、プライバシー保護に関連した利点について、少なくとも1つまたは複数の利益を提供する。例えば、これに限定されないが、データが提供され、そのデータをアクセス、再検討または解析に人の介在を一切必要とせずに、処理および出力されるように、実装例を実行することができる。さらに、実装例は、何人も処理を通じてデータにアクセスすることができないように、制限を提供することもできる。
任意で、実装例との組合せにおいて、匿名化、疑似匿名化、ハッシュまたは他のプライバシー保護技術によって、セキュリティをさらにユーザデータに提供することができる。モデルへの外部アクセスが必要である限りにおいては、そのようなアクセスは前述のようにAPIを通じてのみ可能である。そのような状況においては、ユーザ、または当該サービスの場合のみ最終結果にアクセスすることができ、データに関連したプライバシー関連情報にアクセスすることはできない。
当業者には理解されるように、データは任意のデータであると考えられるが、ある実装例によれば、データはユーザ行動データを有することができる。例えば、これに限定されないが、ユーザ行動データはユーザの人口統計に関する情報を含む可能性があり、この情報はデータフレームワークに入力される他のデータと組み合わされている場合がある。
より詳細には、人工知能モデル、特にディープフレームワークに関連して、訓練および推論を実行して予測を生成することができる。前述の実装例は、前述の訓練の結果に応じて、製品に関連したユーザ行動の予測を生成するのに使用される推論を対象にしている。
図30は、いくつかの実装例での使用に適したコンピュータデバイス3005を備えたコンピューティング環境例3000を示す図である。コンピューティング環境3000の中のコンピューティングデバイス3005は、1つまたは複数の処理部、コア、またはプロセッサ3010、メモリ3015(例えば、RAM、ROMなど)、内部ストレージ3020(例えば、磁気、光学式、半導体ストレージ、および/または有機体)、および/またはI/Oインタフェース3025を有することができ、これらのいずれもが通信メカニズムまたはバス3030と結合して情報を伝達する、またはコンピューティングデバイス3005の中に組み込むことができる。
コンピューティングデバイス3005は入力/インタフェース3035および出力デバイス/インタフェース3040と通信可能に結合することができる。入力/インタフェース3035および出力デバイス/インタフェース3040のいずれか片方または両方が有線インタフェースまたは無線インタフェースであることができ、取り外し可能であることができる。入力/インタフェース3035は、任意のデバイス、構成部品、センサ、あるいは物理または仮想のインタフェースを含んでもよく、これらは入力を提供するのに使用することができる(例えば、ボタン、タッチスクリーンインタフェース、キーボード、ポインタ/カーソル制御、マイク、カメラ、点字、人感センサ、光学読取機など)。
出力デバイス/インタフェース3040は、ディスプレイ、テレビ、モニタ、プリンタ、スピーカ、点字などを含んでもよい。いくつかの実装例では、入力/インタフェース3035(例えば、ユーザインタフェース)および出力デバイス/インタフェース3040は、コンピューティングデバイス3005に組み込む、または物理的に結合することができる。他の実施例では、他のコンピューティングデバイスが、コンピューティングデバイス3005用の入力/インタフェース3035および出力デバイス/インタフェース3040として機能する、またはそれらの機能を提供することできる。
コンピューティングデバイス3005の実施例は、これに限定されないが、高度なモバイルデバイス(例えば、スマートフォン、車または他のマシンに搭載のデバイス、人または動物が携帯するデバイスなど)、モバイルデバイス(例えば、タブレット、ノートパソコン、ラップトップパソコン、パーソナルコンピュータ、携帯型テレビ、ラジオなど)、および移動性を考慮して設計されていないデバイス(例えば、デスクトップパソコン、サーバデバイス、他のコンピュータ、情報kiosk、1つまたは複数のプロセッサを内蔵または結合したテレビ、ラジオなど)を含んでもよい。
コンピューティングデバイス3005は、同一または異なる構成の1つまたは複数のコンピューティングデバイスを含み、任意の数のネットワーク化された構成部品、デバイス、およびシステムと通信するために、外部ストレージ3045およびネットワーク3050と(例えば、I/Oインタフェース3025を介して)通信可能に結合することができる。コンピューティングデバイス3005または任意の接続されたコンピューティングデバイスは、サーバ、クライアント、シンサーバ、一般的なマシン、特定用途マシン、または別の標識のものとして機能するか、それらのサービスを提供するか、またはそれらと称されることができる。例えば、これに限定されないが、ネットワーク3050はブロックチェーンネットワークおよび/またはクラウドを含むことができる。
I/Oインタフェース3025は、これに限定されないが、任意の通信、I/Oプロトコル、または通信標準(例えば、Ethernet、802.11xs、ユニバーサルシステムバス(USB)、WiMAX、モデム、携帯電話ネットワークプロトコルなど)を使用する有線および/または無線インタフェースを有し、コンピューティング環境3000の中の、少なくともすべての接続された構成部品、デバイス、およびネットワークと情報を伝達することができる。ネットワーク3050は、任意のネットワークまたはネットワークの組合せ(例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、電話ネットワーク、携帯電話ネットワーク、衛星ネットワークなど)であることができる。
コンピューティングデバイス3005は、一時的媒体および非一時的媒体を含み、コンピュータ利用可能媒体およびコンピュータ可読媒体を使用する、および/または、それらを使用して通信することができる。一時的媒体は、伝送媒体(例えば、メタルケーブル、光ファイバ)、信号、搬送波などを含む。非一時的媒体は、磁気媒体(例えば、ディスクおよびテープ)、光学媒体(例えば、CD ROM、デジタルビデオディスク、ブルーレイディスク)、半導体媒体(例えば、RAM、ROM、フラッシュメモリ、半導体ストレージ)、および他の非一時的ストレージまたはメモリを含む。
コンピューティングデバイス3005を使用して、いくつかのコンピューティング環境例において、技術、方法、アプリケーション、プロセス、またはコンピュータ実行可能命令を実装することができる。コンピュータ実行可能命令を一時的媒体から受け取り、非一時的媒体に格納し、その非一時的媒体から検索することができる。実行可能命令は、任意のプログラミング言語、スクリプト言語、およびマシン語(例えば、C、C++、C#、Java、Visual Basic、Python、Perl、JavaScriptなど)のうちの1つまたは複数から作り出すことができる。
プロセッサ(複数可)3010は、ネイティブまたは仮想環境において、任意のオペレーティングシステム(OS)(図示せず)の下で実行することができる。1つまたは複数のアプリケーションを配置することができ、ロジック部3055、アプリケーションプログラミングインタフェース(API)部3060、入力部3065、出力部3070、データ処理部3075、ディープラーニングモデリング部3080、自動チューニング部3085、および様々な部分が、OSを使用し、他のアプリケーション(図示せず)を使用して、相互に通信するための部分間通信メカニズム3095を含む。
例えば、データ処理部3075、ディープラーニングモデリング部3080、および自動チューニング部3085は、前述の構造に関連して前に示した1つまたは複数のプロセスを実装することができる。記載した部分および部品は、デザイン、機能、構成、または実装において一様である必要はなく、記載のものに限定されない。
いくつかの実装例においては、情報または実行命令をAPI部3060から受け取ると、1つまたは複数の他の部分(例えば、ロジック部3055、入力部3065、データ処理部3075、ディープラーニングモデリング部3080、および自動チューニング部3085)と通信することができる。
例えば、データ処理部3075は、入力情報を受け取って処理し、データの解析、変換、および検証を実行し、データを分割することができる。データ処理部3075の出力は構成ファイル、およびテスト用、評価用、訓練用などに分割されたデータを提供することができる。そのデータはディープラーニングモデリング部3080に提供され、ディープラーニングモデリング部3080は訓練を実行して、モデルを構築し、そのモデルおよびスケール訓練の性能、続いて最終的な実際のモデルのサービングを検証する。さらに、自動チューニング部3085は、データ処理部3075およびディープラーニングモデリング部3080から取得した情報に基づき、入力およびハイパーパラメータの自動最適化を提供することができる。
場合によっては、ロジック部3055は、前述のいくつかの実装例において、部分間の情報フローを制御し、API部3060、入力部3065、データ処理部3075、ディープラーニングモデリング部3080、および自動チューニング部3085によって提供されるサービスを管理するように構成することができる。例えば、1つまたは複数のプロセスまたは実装のフローは、ロジック部3055単独またはAPI部3060と連携して制御することができる。
図31は、いくつかの実装例に適した環境例を示す図である。環境3100は、デバイス3105~3145を含み、それぞれは、例えば、ネットワーク3160(例えば、有線および/または無線接続)を介して少なくとも1つの他のデバイスと通信可能に接続される。いくつかのデバイスは、1つまたは複数のストレージデバイス3130および3145と通信可能に接続することができる。
1つまたは複数のデバイス3105~3145の例は、それぞれ図30に記載のコンピューティングデバイス3005であってもよい。デバイス3105~3145は、これに限定されないが、モニタと関連ウェブカメラを有するコンピュータ3105(例えば、ラップトップコンピューティングデバイス)、モバイルデバイス3110(例えば、スマートフォンまたはタブレット)、テレビ3115、車両に関連したデバイス3120、サーバコンピュータ3125、コンピューティングデバイス3135~3140、ストレージデバイス3130および3145を含んでもよい。
いくつかの実装においては、デバイス3105~3120は、ブロードキャストを遠隔で受け取ることができるユーザに関連したユーザデバイスであると考えることができ、そのユーザに設定およびインタフェースを提供することができる。デバイス3125~3145は、サービス提供者に関連したデバイス(例えば、ドキュメントテンプレート、第三者アプリケーションなどと関連した情報を格納し処理するのに使用される)であってもよい。
前述の実装例は、多様な利益および利点を様々な主体に提供することができる。
実装例においては、エンドユーザは情報をサービスに提供することができる。一方、サービスは、推奨をユーザに提供することができる。従来技術においては、コンピュータプログラマ、データアナリストなどの手動の介在があることから、ユーザのプライバシー情報は、モデル最適化を実行するため、それらの主体の目にさらされる可能性がある。しかし、本明細書で説明するように、実装例は、そのような仲介者または主体の介在を必要としない自動化手法を提供する。したがって、ユーザの個人的、プライバシー情報は、他のユーザ、開発者などから制限することができる。したがって、プライバシー保護の利益が実装例にある。
本実装例を採用する販売業者は、人工知能手法の利益を実現するために、顧客の機微なまたは個人の情報をプラットフォームに提供することを要しない可能性がある。その代わりに、本明細書に記載する自動化手法を使用して、サービスプロバイダなどの販売業者は、最適化されたモデル情報を取得すると同時に、ユーザのプライバシーを保護することを可能にすることができる。さらに、より少ないデータを必要とするとの判定が入力最適化で提供されると、エンドユーザのプライバシーはさらに保護される。
同様に、プラットフォームまたは開発者も多様な利益および利点を実現することができる。例えば、これに限定されないが、モデルは追加の手動のコーディングまたは情報の入力を必要とせずに最適化することができる。プラットフォームまたは開発者に課せられた要求事項は、実装するオプションを選択することに限定することができる。開発者が、ユーザの許可を得て、手動によるモデルの再検討や修正を必要とし、パラメータを理解して入力済みデータを変更したい場合は、前述のwhat ifツールにより、ユーザがそのような手法を講じることを可能にする。例えば、ユーザの許可を得て、開発者は入力済みデータを変更し、より容易に結果を取得することを可能にすることができるが、その入力済みデータは、推論および最適化に基づき、モデルに関連したチューナフレームワーク出力に基づいて変更される。
加えて、モバイルデバイスの製造元、サーバの製造元、またはデータストレージおよび処理に関連した主体などのユーザ機器製造業者も、多様な利益および利点を実現することができる。前述のように、エンドユーザデータはプライバシーを保護する方法で扱われ、チューナフレームワークは最適化を提供し、この最適化は、デバイスによって提供される必要のある情報を削減するように、データ入力またはパラメータなどのデータを制限することができる。例えば、ある場合には、GPSに基づいたユーザ位置が非最適な入力またはパラメータであると判定されると、更新されたモデルは、そのようなエンドユーザデバイスからの情報を要求または収集しない場合がある。結果的に、取得され、感知され、収集され、エンドユーザデバイスの中に潜在的に格納されている情報は、モデルによる使用から保護することができる。さらに、データフレームワーク、ディープフレームワーク、およびチューナフレームワークの自動化により、プラットフォームにおける主体、開発者、アナリスト、販売業者または相当する者が、ユーザの潜在的に機微で個人的な情報にアクセスする必要はない。したがって、これら主体に関連したデバイスは、ユーザによってアクセスされることを必要とせず、プライバシー保護をさらに獲得することができる。
1つの実装例においては、オンライン小売業者、製造業者、流通業者などのオンライン小売に関連した主体は、製品および/またはサービスを販売促進する方法を決定するために、実装例を使用することができる。そのような状況においては、実装例は、ツール、技術、システム、および本明細書に記載の手法を使用して、ユーザを動かして製品を購入させる可能性が最も高い広告についての推奨をオンライン小売業者に提供することができる。逆に、ユーザがオンラインウェブサイトにアクセスし、閲覧し、検索し、またはオンラインショッピングを行う場合に、実装例は、ユーザは必要とする可能性が最も高いものに基づいて、ユーザに推奨を提供することができる。さらに、実装例は、金融上の予測に関連するものなどのサービス、様々なサービスや製品の販売の促進、また、買うべきものの推奨、それを買ったかどうか、と関連付けることもできる。
前述の実装例は、様々な利益および利点を有することができる。本明細書に示すように、正確性、および相対的作動特性は、実装例を使用することによって、従来技術の手法以上に、実質的に改善することができる。
図32に示すように、グラフィック表示3200が提供され、金融モデルのバイナリ分類に関連して、従来技術の手法と実装例との相違を示す。より詳細には、3201において従来技術の手法が破線で示され、3203において実装例による手法が示されている。この実装例によれば、正確に同一データについて、従来技術との比較において実装例を使用して、精度について7.62%増加し、相対的作動特性が2.78%増加していることが理解されよう。
さらに、不必要な入力済みデータ/パラメータを削減するために実装例を使用して、計算コストを劇的に低減することができる。処理速度を実質的に高める、最適化によってモデル上でデータを処理する時間を低減することができる、という点で、実装例の手法はさらに利益を提供することができる。したがって、精度を犠牲にすることなく、従来技術の手法と比較して、モデルがより少ない処理を必要とし、ハードウェアシステムについて利益がある。
本実装例の別の利点または利益は、フレームワークにより規模の調整が容易であることがある。例えば、これに限定されないが、チューナフレームワークは、前述のように、データ、入力、パラメータなどの量を低減することができる最適化を提供する。この最適化の結果、従来技術の手法に比較して、計算、格納、通信、または他の必要なリソースの量について増加することなく、規模の追加を行うことができる。
さらに、実装例によれば、前述のように、チューナフームワークは人工知能モデルの最適化を提供する。例えば、これに限定されないが、モデルは、個別の作業タイプついて最適化し、行動タイプ(例えば、商用)に応じてテンプレートとして提供することができる。例えば、これに限定されないが、食料雑貨購入のオンラインと、自動車購入のオンライン、新規住宅ローン周旋のオンラインとの相違はかなり大きく、したがって、事前の最適化に基づいて、様々なモデルをテンプレートとして提供することができる。対照的に、従来技術の手法は、そのようなモデルのテンプレートを提供しない。これは、モデルは作成するが、チューナフレームワークによって提供されるような、実装例の最適化は含まないからである。
さらに別の利益および利点として、開発者は使い易さを体験することができる。例えば、これに限定されないが、これらの実装例に記載されたフレームワークのユーザは、自分の作業によって何らコードを作成する必要がなく、多くても、開発者はフィードバックを再検討し、オプションなどを選択する必要があるだけである。自動チューニングを提供するこの手法の結果として、プライバシーは、前述のように、保護される。
新しい実装例を示し説明してきたが、これらの実装例を提供して本明細書に記載の主題を当領域に精通する人たちに伝達するものである。本明細書に記載の主題はここに記載の実装例に限定することなく様々な形式で実装することができることは理解されよう。本明細書に記載の主題は、具体的に定義または記載した事項を使用せずに、または記載されていない別の部品または事項を使用して実践することができる。付属の請求事項およびその相当物で定義するように、本明細書に記載の主題から逸脱しない限り、これらの実装例の中で変更を行うことができることが、当領域に精通する人たちに理解されよう。
[実施形態の一例]
以下、上述した各種処理を実現する生成装置、生成方法および生成プログラムの一例について説明する。
以下の実施形態に係る情報提供装置は、以下の生成処理を実行する。まず、情報提供装置は、モデルの学習に用いる学習データを取得する。そして、情報提供装置は、学習データが有する特徴に基いて、モデルの生成指標を生成する。例えば、情報提供装置は、学習データが有する統計的な特徴に基づいて、モデルを生成する際の指標、すなわち、生成するモデルのレシピとなる生成指標を生成する。
以下に、本願に係る生成装置、生成方法、および生成プログラムを実施するための形態(以下、「実施形態」と記載する。)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る生成装置、生成方法、および生成プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
〔1.情報提供システムの構成〕
まず、図33を用いて、生成装置の一例である情報提供装置10を有する情報提供システムの構成について説明する。図33は、実施形態に係る情報提供システムの一例を示す図である。図33に示すように、情報提供システム1は、情報提供装置10、モデル生成サーバ2、および端末装置3を有する。なお、配信システム1は、複数のモデル生成サーバ2や複数の端末装置3を有していてもよい。また、情報提供装置10と、モデル生成サーバ2とは、同一のサーバ装置やクラウドシステム等により実現されてもよい。ここで、情報提供装置10、モデル生成サーバ2、および端末装置3は、ネットワークN(例えば、図36参照)を介して有線または無線により通信可能に接続される。
情報提供装置10は、モデルの生成における指標(すなわち、モデルのレシピ)である生成指標を生成する指標生成処理と、生成指標に従ってモデルを生成するモデル生成処理とを実行し、生成した生成指標およびモデルを提供する情報処理装置であり、例えば、サーバ装置やクラウドシステム等により実現される。
モデル生成サーバ2は、学習データが有する特徴を学習させたモデルを生成する生成装置であり、例えば、サーバ装置やクラウドシステム等により実現される。例えば、モデル生成サーバ2は、モデルの生成指標として、生成するモデルの種別や行動、どのように学習データの特徴を学習させるかといったコンフィグファイルを受付けると、受付けたコンフィグファイルに従って、モデルの自動生成を行う。なお、モデル生成サーバ2は、任意のモデル学習手法を用いて、モデルの学習を行ってもよい。また、例えば、モデル生成サーバ2は、AutoMLといった各種既存のサービスであってもよい。
端末装置3は、利用者Uによって利用される端末装置であり、例えば、PC(Personal Computer)やサーバ装置等により実現される。例えば、端末装置3は、情報提供装置10とのやり取りを介して、モデルの生成指標を生成させ、生成させた生成指標に従ってモデル生成サーバ2が生成したモデルを取得する。
〔2.情報提供装置10が実行する処理の概要〕
まず、情報提供装置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に最適な生成指標を試行錯誤させてもよい。
〔3.生成指標の生成について〕
以下、どのような学習データに対して、どのような生成指標を生成するかの一例について説明する。なお、以下の例は、あくまで一例であり、学習データが有する特徴に応じて生成指標を生成するのであれば、任意の処理が採用可能である。
〔3-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は、例えば、モデルの作成に伴ってデータサイエンティスト等が学習データの認識を行う手間を削減するとともに、学習データの認識に伴うプライバシーの毀損を防ぐことができる。
〔3-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_colum」を選択する。すなわち、情報提供装置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におけるモデルの生成を制御するためのコンフィグファイルを生成する。
〔3-3.生成指標を決定する順序について〕
ここで、情報提供装置10は、上述した各種の指標の最適化を同時並行的に行ってもよく、適宜順序だてて実行してもよい。また、情報提供装置10は、各指標を最適化する順序を変更可能としてもよい。すなわち、情報提供装置10は、モデルに学習させる学習データの特徴、生成するモデルの態様、および学習データが有する特徴をモデルに学習させる際の学習態様を決定する順番の指定を利用者から受け付け、受け付けた順序で、各指標を決定してもよい。
例えば、図34は、実施形態に係る情報提供装置が指標を最適化する順序を示す図である。例えば、図34に示す例では、情報提供装置10は、生成指標の生成を開始した場合、入力する学習データの特徴や、どのような態様で学習データを入力するかといった入力素性の最適化を行い、続いて、どの特徴の組み合わせの特徴を学習させるかという入力クロス素性の最適化を行う。続いて、情報提供装置10は、モデルの選択を行うとともに、モデル構造の最適化を行う。その後、情報提供装置10は、ハイパーパラメータの最適化を行い、生成指標の生成を終了する。
ここで、情報提供装置10は、入力素性最適化において、入力する学習データの特徴や入力態様といった各種入力素性の選択や修正、遺伝的アルゴリズムを用いた新たな入力素性の選択を行うことで、入力素性を繰り返し最適化してもよい。同様に、情報提供装置10は、入力クロス素性最適化において、入力クロス素性を繰り返し最適化してもよく、モデル選択およびモデル構造の最適化を繰り返し実行してもよい。また、情報提供装置10は、ハイパーパラメタ―の最適化を繰り返し実行してもよい。また、情報提供装置10は、入力素性最適化、入力クロス素性最適化、モデル選択、モデル構造最適化、およびハイパーパラメータの最適化という一連の処理を繰り返し実行し、各指標の最適化を行ってもよい。
また、情報提供装置10は、例えば、ハイパーパラメータの最適化を行ってから、モデル選択やモデル構造最適化を行ってもよく、モデル選択やモデル構造最適化の後に、入力素性の最適化や入力クロス素性の最適化を行ってもよい。また、情報提供装置10は、例えば、入力素性最適化を繰り返し実行し、その後入力クロス素性最適化を繰り返し行う。その後、情報提供装置10は、入力素性最適化と入力クロス素性最適化を繰り返し実行してもよい。このように、どの指標をどの順番で最適化するか、最適化においてどの最適化処理を繰り返し実行するかについては、任意の設定が採用可能となる。
〔3-4.情報提供装置が実現するモデル生成の流れについて〕
続いて、図35を用いて、情報提供装置10を用いたモデル生成の流れの一例について説明する。図35は、実施形態における情報提供装置を用いたモデル生成の流れの一例を説明する図である。例えば、情報提供装置10は、学習データと各学習データのラベルとを受付ける。なお、情報提供装置10は、学習データの指定と共に、ラベルを受付けてもよい。
このような場合、情報提供装置10は、データの分析を行い、分析結果に応じたデータ分割を行う。例えば、情報提供装置10は、学習データを、モデルの学習に用いるトレーニング用データと、モデルの評価(すなわち、精度の測定)に用いる評価用データとに分割する。なお、情報提供装置10は、各種テスト用のデータをさらに分割してもよい。なお、このような学習データをトレーニング用データと評価用データとに分割する処理は、各種任意の公知技術が採用可能である。
また、情報提供装置10は、学習データを用いて、上述した各種の生成指標を生成する。例えば、情報提供装置10は、AutoMLにおいて生成されるモデルやモデルの学習を定義するコンフィグファイルを生成する。このようなコンフィグファイルにおいては、AutoMLで用いられる各種の関数がそのまま生成指標を示す情報として格納されることとなる。そして、情報提供装置10は、トレーニング用データを生成指標とをモデル生成サーバ2に提供することで、モデルの生成を行う。
ここで、情報提供装置10は、利用者によるモデルの評価と、モデルの自動生成とを繰り返し行うことで、生成指標の最適化、ひいてはモデルの最適化を実現してもよい。例えば、情報提供装置10は、入力する特徴の最適化(入力素性や入力クロス素性の最適化)、ハイパーパラメータの最適化、および生成するモデルの最適化を行い、最適化された生成指標に従って自動でのモデル生成を行う。そして、情報提供装置10は、生成したモデルを利用者に提供する。
一方、利用者は、自動生成されたモデルのトレーニングや評価、テストを行い、モデルの分析や提供を行う。そして、利用者は、生成された生成指標を修正することで、再度新たなモデルを自動生成させ、評価やテスト等を行う。このような処理を繰り返し実行することで、複雑な処理を実行することなく、試行錯誤しながらモデルの精度を向上させる処理を実現することができる。
〔4.情報提供装置の構成〕
次に、図36を用いて、実施形態に係る情報提供装置10の機能構成の一例について説明する。図36は、実施形態に係る情報提供装置の構成例を示す図である。図36に示すように、情報提供装置10は、通信部20と、記憶部30と、制御部40とを有する。
通信部20は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部11は、ネットワークNと有線または無線で接続され、モデル生成サーバ2や端末装置3との間で情報の送受信を行う。
記憶部30は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。また、記憶部30は、学習データデータベース31および生成条件データベース32を有する。
学習データデータベース31には、学習データが登録される。例えば、図37は、実施形態に係る学習データベースに登録される情報の一例を示す図である。図37に示す例では、学習データデータベース31には、学習データID(Identifier)、および学習データが対応付けて登録されている。ここで、学習データIDは、学習データとなる複数のデータ群を識別する識別子である。また、学習データとは、学習に用いられるデータである。
例えば、図37に示す例では、学習データデータベース31には、「学習データ#1」に対し、「ラベル#1-1」と「データ#1-1」との組、および、「ラベル#1-2」と「データ#1-2」との組が対応付けて登録されている。このような情報は、「学習データ#1」が示す学習データとして、「ラベル#1-1」が付与された「データ#1-1」、および、「ラベル#1-2」が付与された「データ#1-2」が登録されている旨を示す。なお、各ラベルには、同一の特徴を示す複数のデータが登録されていてもよい。また、図37に示す例では、「学習データ#1」、「ラベル#1-1」、「データ#1-1」といった概念的な値を記載したが、実際には、学習データを識別するための文字列や数値、ラベルとなる文字列、データとなる各種整数、浮動小数点、もしくは文字列等が登録されることとなる。
図36に戻り、生成条件データベース38には、学習データに関する各種の条件と、学習データが条件を場合に生成指標若しくはその候補として決定される各種の指標とを対応付けた生成条件が登録されている。例えば、図38は、実施形態に係る生成条件データベースに登録される情報の一例を示す図である。図38に示す例では、生成条件データデータベース32には、条件ID、条件内容、および指標候補が対応付けて登録されている。
ここで、条件IDとは、生成条件を識別する識別子である。また、条件内容とは、学習データが満たすか否かの判定対象となる条件であり、例えば、学習データの内容に関する条件である内容条件と、学習データの傾向に関する傾向条件等、各種の条件により構成される。また、指標候補とは、対応付けられた条件内容に含まれる各条件が満たされた場合に、生成指標に含まれる各種の指標である。
例えば、生成条件データベース38には、条件ID「条件ID#1」、内容条件「整数」、傾向条件「密度<閾値」、指標候補「生成指標#1」とが対応付けて登録されている。このような情報は、条件ID「条件ID#1」として、学習データが内容条件「整数」であり、かつ、傾向条件「密度<閾値」を満たす場合に、指標候補「生成指標#1」が生成指標として決定される旨を示す。
なお、図38に示す例では、「生成指標#1」といった概念的な値を記載したが、実際には、各種生成指標として採用される情報が登録される。例えば、生成条件データベース38には、AutoMLにおけるコンフィグファイルに記載される各種の関数が指標候補として登録される。なお、生成条件データベース38には、例えば、1つの条件に対して複数の生成指標が登録されていてもよい。
なお、上述したように、どのような条件が満たされた場合にどのような生成指標を生成するかについては、任意の設定が可能である。例えば、生成条件データベース38には、過去に生成したモデルであって、精度が所定の閾値を超えるモデルについての各種生成指標と、そのモデルの学習に用いた学習データの特徴や傾向とに基づいて生成された生成条件が登録されてればよい。
図36に戻り、説明を続ける。制御部40は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、情報提供装置10内部の記憶装置に記憶されている各種プログラムがRAMを作業領域として実行されることにより実現される。また、制御部40は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。図36に示すように、制御部40は、取得部41、指標生成部42、提示部43、受付部44、モデル生成部45、および提供部46を有する。
取得部41は、モデルの学習に用いる学習データを取得する。例えば、取得部41は、端末装置3から、学習データとして用いる各種のデータと、各種データに付与されるラベルを受付けると、受付けたデータとラベルとを学習データとして学習データデータベース3に登録する。なお、取得部41は、あらかじめ学習データデータベース31に登録されたデータのうち、モデルの学習に用いる学習データの学習データIDやラベルの指摘を受付けてもよい。
指標生成部42は、学習データが有する特徴に基いて、モデルの生成指標を生成する。例えば、指標生成部42は、学習データが有する統計的な特徴に基いて、生成指標を生成する。例えば、指標生成部42は、取得部41から学習データを取得する。そして、指標生成部42は、取得した学習データが生成条件データベース32に登録された生成条件を満たすか否かに応じて、生成指標を生成する。
例えば、指標生成部42は、学習データが整数であるか、浮動小数点であるか、若しくは文字列であるかに基いて、生成指標を生成してもよい。より具体的な例を挙げると、指標生成部42は、学習データが整数である場合、学習データの連続性に基いて、生成指標を生成してもよい。例えば、指標生成部42は、学習データの密度を算出し、算出した密度が所定の第1閾値を超える場合、学習データの最大値が所定の第2閾値を上回るか否かに基いて生成指標を生成してもよい。すなわち、指標生成部42は、最大値が第2閾値を上回るか否かに応じて異なる生成指標を生成してもよい。また、指標生成部42は、学習データの密度が所定の第1閾値を下回る場合、学習データに含まれるユニークな値の数が所定の第3閾値を上回るか否かに基いて生成指標を生成してもよい。
なお、指標生成部42は、学習データの密度や最大値等が各種閾値を超えるか否かといった条件分岐に応じて異なる生成指標を生成してもよく、例えば、学習データの密度や最大値等そのものの値に応じた生成指標を生成してもよい。例えば、指標生成部42は、学習データの数、密度、最大値等といった統計的な値に基づいて、モデルのノード数や中間層の数等といった各種生成指標となるパラメータの値を算出してもよい。すなわち、指標生成部42は、学習データが有する特徴に基づいて異なる生成指標を生成するのであれば、任意の条件に基づいて、生成指標の生成を行ってよい。
また、指標生成部42は、学習データが文字列である場合、学習データに含まれる文字列の種別の数に基いて、生成指標を生成する。すなわち、指標生成部42は、ユニークな文字列の種別の数に応じて異なる生成指標を生成する。また、指標生成部42は、学習データが浮動小数点である場合、モデルの生成指標として、学習データをモデルに入力する入力データへの変換指標を生成する。例えば、指標生成部42は、浮動小数点をバケタイズするか否か、どの範囲の値をどのバケットに分類するか等を学習データの統計的な情報に基づいて決定する。より具体的な例を挙げると、指標生成部42は、浮動小数点である学習データに含まれる値の範囲や、学習データに付されたラベルの内容といった特徴に応じて、バケタイズするか否か、どの範囲の値をどのバケットに分類するか等を決定してもよい。また、指標生成部42は、学習データの特徴に基づいて、各バケットに対応する値の範囲を一定にするか否かや、各バケットに分類する学習データの数を一定(若しくは、所定の分布)にするか否かを決定してもよい。
また、指標生成部42は、モデルの生成指標として、学習データが有する特徴のうちモデルに学習させる特徴を示す生成指標を生成する。例えば、指標生成部42は、学習データの特徴に基づいて、モデルに学習させるデータのラベルを決定する。また、指標生成部42は、モデルの生成指標として、学習データの種別のうちモデルに対して相関を学習させる複数の種別を示す生成指標を生成する。
なお、このような学習対象となる特徴(ラベル)や特徴の関係性の決定は、例えば、モデルが出力するデータのラベル等、どのようなモデルを利用者が所望するかといった目的に応じた決定が行われてもよい。また、どの特徴を採用するか、どの特徴の組み合わせの特徴を学習させるかについては、例えば、上述した遺伝的アルゴリズムにおいて、各特徴や特徴の組み合わせを採用するか否かを示すビットを遺伝子と見做し、新生代の生成指標を生成することで、モデルの精度がより向上する特徴や特徴の組み合わせを発見することで、決定されてもよい。
また、指標生成部42は、モデルの生成指標として、モデルに入力される学習データの次元数を示す生成指標を生成する。また、指標生成部42は、モデルの生成指標として、学習データの特徴を学習させるモデルの種別を示す生成指標を生成する。また、指標生成部42は、モデルの生成指標として、モデルが有する中間層の数若しくは各層に含まれるノードの数を示す生成指標を生成する。また、指標生成部42は、モデルの生成指標として、モデルが有するノード間の接続態様を示す生成指標を生成する。また、指標生成部42は、モデルの生成指標として、モデルの大きさを示す生成指標を生成する。例えば、指標生成部42は、ユニークな学習データの数や採用される特徴あるいはその組み合わせの数、学習データとなる数値や文字列のビット数等に応じて、モデルに入力される学習データの次元数を示す生成指標を生成してもよく、例えば、モデルの各種構造を決定してもよい。
また、指標生成部42は、モデルの生成指標として、学習データが有する特徴をモデルに学習させる際の学習態様を示す生成指標を生成する。例えば、指標生成部42は、学習データの特徴や上述した各種の生成指標に基づいて、ハイパーパラメータの内容を決定してもよい。このように、指標生成部42は、モデルに学習させる学習データの特徴、生成するモデルの態様、および学習データが有する特徴をモデルに学習させる際の学習態様を示す生成指標を生成する。なお、指標生成部42は、上述した全ての生成指標を決定、生成する必要はなく、任意の種別の生成指標のみを決定、生成すればよい。
提示部43は、指標生成部42により生成された指標を利用者に提示する。例えば、提示部43は、生成指標として生成されたAutoMLのコンフィグファイルを端末装置3に送信する。
受付部44は、利用者に対して提示した生成指標の修正を受付ける。また、受付部44は、モデルに学習させる学習データの特徴、生成するモデルの態様、および学習データが有する特徴をモデルに学習させる際の学習態様を決定する順番の指定を利用者から受け付ける。このような場合、指標生成部42は、利用者から指定された順番で、モデルに学習させる学習データの特徴、生成するモデルの態様、および学習データが有する特徴をモデルに学習させる際の学習態様を決定する。すなわち、指標生成部42は、利用者から指定された順番で、各種の生成指標を再度生成しなおす。
モデル生成部45は、生成指標に従って、学習データが有する特徴を学習させたモデルを生成する。例えば、モデル生成部45は、学習データをトレーニング用データと評価用データとに分割するとともに、トレーニング用データと生成指標とをモデル生成サーバ2に送信する。そして、モデル生成部45は、モデル生成サーバ2が生成指標に従ってトレーニング用データから生成したモデルを取得する。このような場合、モデル生成部45は、評価用データを用いて、取得したモデルの精度を算出する。
なお、指標生成部42は、それぞれ異なる複数の生成指標を生成する。このような場合、指標生成部42は、生成指標ごとに異なるモデルを生成させ、各モデルの精度を算出する。なお、指標生成部42は、各モデルごとに異なるトレーニング用データおよび評価用データを生成してもよく、同一のトレーニング用データおよび評価用データを採用してもよい。
このように、複数のモデルが生成された場合、指標生成部42は、生成されたモデルの精度に基いて、モデルの生成指標を新たに生成する。例えば、指標生成部42は、各学習データを利用するか否か、どの生成指標を採用したか否かを遺伝子見做した遺伝的アルゴリズムを用いて、複数の生成指標から新たな生成指標を生成する。そして、モデル生成部45は、新たな生成指標に基づいて、新たなモデルの生成を行う。このような試行錯誤を所定の回数、若しくは、モデルの精度が所定の閾値を超えるまで繰り返し実行することで、情報提供装置10は、モデルの精度を向上させる生成指標の生成を実現できる。
なお、指標生成部42は、生成指標を決定する順序についても、遺伝的アルゴリズムの対象として最適化を行ってもよい。また、提示部43は、生成指標が生成される度に生成指標を利用者に提示してもよく、例えば、精度が所定の閾値を超えたモデルと対応する生成指標のみを利用者に提示してもよい。
提供部46は、生成されたモデルを利用者に提供する。例えば、提供部46は、モデル生成部45により生成されたモデルの精度が所定の閾値を超えた場合は、そのモデルとともに、モデルと対応する生成指標を端末装置3へと送信する。この結果、利用者は、モデルの評価や試用を行うとともに、生成指標の修正を行うことができる。
〔5.情報提供装置10の処理フロー〕
次に、図39を用いて、情報提供装置10が実行する処理の手順について説明する。図39は、実施形態に係る生成処理の流れの一例を示すフローチャートである。
例えば、情報提供装置10は、学習データの指定を受付ける(ステップS101)。このような場合、情報提供装置10は、指定された学習データの統計的な特徴を特定する(ステップS102)。そして、情報提供装置10は、統計的な特徴に基づいて、モデルの生成指標の候補を作成する(ステップS103)。
続いて、情報提供装置10は、作成した生成指標の修正を受付けたか否かを判定し(ステップS104)、受付けた場合は(ステップS104:Yes)、指示に従って修正を行う(ステップS105)。一方、情報提供装置10は、修正を受付けていない場合は、ステップS105の実行をスキップする。そして、情報提供装置10は、生成指標に従ってモデルを生成し(ステップS106)、生成したモデルを提供して(ステップS107)、処理を終了する。
〔6.変形例〕
上記では、生成処理の一例について説明した。しかしながら、実施形態は、これに限定されるものではない。以下、提供処理の変形例について説明する。
〔6-1.装置構成〕
上記実施形態では、配信システム1に、生成指標の生成を行う情報提供装置10、および、生成指標に従ってモデルを生成するモデル生成サーバ2を有する例について説明したが、実施形態は、これに限定されるものではない。例えば、情報提供装置10は、モデル生成サーバ2が有する機能を有していてもよい。また、情報提供装置10が発揮する機能は、端末装置3に内包されていてもよい。このような場合、端末装置3は、生成指標を自動的に生成するとともに、モデル生成サーバ2を用いたモデルの生成を自動的に行うこととなる。
〔6-2.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
また、上記してきた各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
〔6-3.プログラム〕
また、上述してきた実施形態に係る情報提供装置10は、例えば図40に示すような構成のコンピュータ1000によって実現される。図40は、ハードウェア構成の一例を示す図である。コンピュータ1000は、出力装置1010、入力装置1020と接続され、演算装置1030、一次記憶装置1040、二次記憶装置1050、出力IF(Interface)1060、入力IF1070、ネットワークIF1080がバス1090により接続された形態を有する。
演算装置1030は、一次記憶装置1040や二次記憶装置1050に格納されたプログラムや入力装置1020から読み出したプログラム等に基づいて動作し、各種の処理を実行する。一次記憶装置1040は、RAM等、演算装置1030が各種の演算に用いるデータを一次的に記憶するメモリ装置である。また、二次記憶装置1050は、演算装置1030が各種の演算に用いるデータや、各種のデータベースが登録される記憶装置であり、ROM(Read Only Memory)、HDD、フラッシュメモリ等により実現される。
出力IF1060は、モニタやプリンタといった各種の情報を出力する出力装置1010に対し、出力対象となる情報を送信するためのインタフェースであり、例えば、USB(Universal Serial Bus)やDVI(Digital Visual Interface)、HDMI(登録商標)(High Definition Multimedia Interface)といった規格のコネクタにより実現される。また、入力IF1070は、マウス、キーボード、およびスキャナ等といった各種の入力装置1020から情報を受信するためのインタフェースであり、例えば、USB等により実現される。
なお、入力装置1020は、例えば、CD(Compact Disc)、DVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等から情報を読み出す装置であってもよい。また、入力装置1020は、USBメモリ等の外付け記憶媒体であってもよい。
ネットワークIF1080は、ネットワークNを介して他の機器からデータを受信して演算装置1030へ送り、また、ネットワークNを介して演算装置1030が生成したデータを他の機器へ送信する。
演算装置1030は、出力IF1060や入力IF1070を介して、出力装置1010や入力装置1020の制御を行う。例えば、演算装置1030は、入力装置1020や二次記憶装置1050からプログラムを一次記憶装置1040上にロードし、ロードしたプログラムを実行する。
例えば、コンピュータ1000が情報提供装置10として機能する場合、コンピュータ1000の演算装置1030は、一次記憶装置1040上にロードされたプログラムを実行することにより、制御部40の機能を実現する。
〔7.効果〕
上述したように、情報提供装置10は、モデルの学習に用いる学習データを取得し、学習データが有する特徴に基いて、モデルの生成指標を生成する。例えば、情報提供装置10は、学習データが有する統計的な特徴に基いて、生成指標を生成する。このような処理の結果、情報提供装置10は、利用者が複雑な設定を行うことなく、精度が見込まれるモデルを生成するための生成指標を提供することができる。
例えば、情報提供装置10は、学習データが整数であるか、浮動小数点であるか、若しくは文字列であるかに基いて、生成指標を生成する。また、情報提供装置10は、学習データが整数である場合、学習データの連続性に基いて、生成指標を生成する。より具体的な例を挙げると、情報提供装置10は、学習データの密度が所定の第1閾値を超える場合、学習データの最大値が所定の第2閾値を上回るか否かに基いて生成指標を生成する。また、情報提供装置10は、学習データの密度が所定の第1閾値を下回る場合、学習データに含まれるユニークな値の数が所定の第3閾値を上回るか否かに基いて生成指標を生成する。
また、情報提供装置10は、学習データが文字列である場合、学習データに含まれる文字列の種別の数に基いて、生成指標を生成する。また、情報提供装置10は、学習データが浮動小数点である場合、モデルの生成指標として、学習データをモデルに入力する入力データへの変換指標を生成する。また、情報提供装置10は、複数の特徴を示す学習データを取得し、モデルの生成指標として、学習データが有する特徴のうちモデルに学習させる特徴を示す生成指標を生成する。
また、情報提供装置10は、複数種別の特徴を示す学習データを取得し、モデルの生成指標として、学習データの種別のうちモデルに対して相関を学習させる複数の種別を示す生成指標を生成する。また、情報提供装置10は、モデルの生成指標として、モデルに入力される学習データの次元数を示す生成指標を生成する。また、情報提供装置10は、モデルの生成指標として、学習データの特徴を学習させるモデルの種別を示す生成指標を生成する。
また、情報提供装置10は、モデルの生成指標として、モデルが有する中間層の数若しくは各層に含まれるノードの数を示す生成指標を生成する。また、情報提供装置10は、モデルの生成指標として、モデルが有するノード間の接続態様を示す生成指標を生成する。また、情報提供装置10は、モデルの生成指標として、学習データが有する特徴をモデルに学習させる際の学習態様を示す生成指標を生成する。また、情報提供装置10は、モデルの生成指標として、モデルの大きさを示す生成指標を生成する。また、情報提供装置10は、モデルに学習させる学習データの特徴、生成するモデルの態様、および学習データが有する特徴をモデルに学習させる際の学習態様を示す生成指標を生成する。
このように、情報提供装置10は、モデルを生成する際における各種の生成指標を自動的に生成する。この結果、情報提供装置10は、生成指標を利用者が作成する手間を省き、モデルの生成をより容易にすることができる。また、情報提供装置10は、学習データの内容を認識し、認識結果に応じたモデルを生成する手間を省くことができる結果、利用者の各種情報を学習データとする場合に、プライバシーの毀損を防ぐことができる。
また、情報提供装置10は、モデルに学習させる学習データの特徴、生成するモデルの態様、および学習データが有する特徴をモデルに学習させる際の学習態様を決定する順番の指定を利用者から受け付ける。そして、情報提供装置10は、利用者から指定された順番で、モデルに学習させる学習データの特徴、生成するモデルの態様、および学習データが有する特徴をモデルに学習させる際の学習態様を決定する。このような処理の結果、情報提供装置10は、モデルの精度をより向上させることができる。
また、情報提供装置10は、生成指標に従って、学習データが有する特徴を学習させたモデルを生成する。また、情報提供装置10は、モデル生成部が生成したモデルの精度に基いて、モデルの生成指標を新たに生成し、指標生成部が新たに生成した生成指標に従って、モデルを新たに生成する。例えば、情報提供装置10は、遺伝的アルゴリズムを用いて、複数の生成指標から新たな生成指標を生成する。このような処理の結果、情報提供装置10は、より精度の高いモデルを生成するための生成指標を生成することができる。
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
また、上記してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、配信部は、配信手段や配信回路に読み替えることができる。
[付記]
上述した実施形態の説明に加え、さらに以下の付記を開示する。
(付記1)
人工知能モデルを生成し最適化するコンピュータ実装方法であって、前記方法が、
入力済みデータおよびラベルを受け取り、データ検証を実行して構成ファイルを生成し、前記データを分割して訓練および評価向けの分割済みデータを生成するステップと、
前記分割済みデータの訓練および評価を実行して誤差レベルを測定し、前記誤差レベルに基づいてアクションを実行するステップであって、前記アクションは、前記構成ファイルを修正することと、前記人工知能モデルを自動的にチューニングすることの、少なくとも片方を有する、ステップと、
前記訓練、前記評価、および前記チューニングに基づいて、前記人工知能モデルを生成するステップと、
前記モデルを本番にサービングするステップと、
を含む、コンピュータ実装方法。
(付記2)
前記チューニングが、
前記入力済みデータに関連した1つまたは複数の入力済み素性を自動的に最適化するステップと、
前記生成済み人工知能モデルに関連したハイパーパラメータを自動的に最適化するステップと、
最適化済みの1つまたは複数の入力済み素性および前記最適化済みのハイパーパラメータに基づいて、更新済みモデルを自動的に生成するステップと、
を含む、付記1に記載のコンピュータ実装方法。
(付記3)
前記1つまたは複数の入力済み素性が一般的なアルゴリズムによって最適化され、前記1つまたは複数の入力済み素性の組合せを最適化し、前記最適化済みの入力済み素性のリストを生成する、付記2に記載のコンピュータ実装方法。
(付記4)
前記自動的に前記ハイパーパラメータを最適化するステップが、ベイズアルゴリズムおよびランダムアルゴリズムの少なくとも片方を適用して前記ハイパーパラメータに基づき最適化することを有する、付記2に記載のコンピュータ実装方法。
(付記5)
前記自動的に前記1つまたは複数の入力済み素性を最適化するステップが、第1の規定の反復回数が満たされるまで実行される第1の反復ループで実行され、前記自動的に前記ハイパーパラメータを最適化するステップおよび前記自動的に前記更新済みモデルを生成するステップが、第2の規定の反復回数が満たされるまで第2の反復ループで実行される、付記2に記載のコンピュータ実装方法。
(付記6)
前記第1の反復ループおよび前記第2の反復ループが、第3の規定の反復回数が満たされるまで反復的に実行される、付記5に記載のコンピュータ実装方法。
(付記7)
前記訓練および前記評価を実行するステップが、前記データのデータ型式、前記データの密度、および前記データの量に基づいて、1つまたは複数の素性関数を実行することを有する、付記1に記載のコンピュータ実装方法。
(付記8)
人工知能モデルを生成し最適化するために、ストレージに格納されたマシン可読命令を実行するように構成された非一時的コンピュータ可読媒体であって、前記命令が、
入力済みデータおよびラベルを受け取り、データ検証を実行して構成ファイルを生成し、前記データを分割して訓練および評価向けの分割済みデータを生成するステップと、
前記分割済みデータの訓練および評価を実行して誤差レベルを測定し、前記誤差レベルに基づいてアクションを実行するステップであって、前記アクションが、前記構成ファイルを修正することと、前記人工知能モデルを自動的にチューニングすることの、少なくとも片方を有する、ステップと、
前記訓練、前記評価、および前記チューニングに基づいて、前記人工知能モデルを生成するステップと、
前記モデルを本番にサービングするステップと、
を含む、非一時的コンピュータ可読媒体。
(付記9)
前記チューニングが、
前記入力済みデータに関連した1つまたは複数の入力済み素性を自動的に最適化するステップと、
前記生成済み人工知能モデルに関連したハイパーパラメータを自動的に最適化するステップと、
最適化済みの1つまたは複数の入力済み素性および前記最適化済みのハイパーパラメータに基づいて更新済みモデルを自動的に生成するステップと、
を含む、付記8に記載の非一時的コンピュータ可読媒体。
(付記10)
前記1つまたは複数の入力済み素性が一般的なアルゴリズムによって最適化され、前記1つまたは複数の入力済み素性の組合せを最適化し、前記最適化済みの入力済み素性のリストを生成する、付記9に記載の非一時的コンピュータ可読媒体。
(付記11)
前記自動的に前記ハイパーパラメータを最適化するステップが、ベイズアルゴリズムおよびランダムアルゴリズムの少なくとも片方を適用して前記ハイパーパラメータに基づき最適化することを有する、付記9に記載の非一時的コンピュータ可読媒体。
(付記12)
前記自動的に前記1つまたは複数の入力済み素性を最適化するステップが、第1の規定の反復回数が満たされるまで実行される第1の反復ループで実行され、前記自動的に前記ハイパーパラメータを最適化するステップおよび前記自動的に前記更新済みモデルを生成するステップが、第2の規定の反復回数が満たされるまで第2の反復ループで実行される、付記9に記載の非一時的コンピュータ可読媒体。
(付記13)
前記第1の反復ループおよび前記第2の反復ループが、第3の規定の反復回数が満たされるまで反復的に実行される、付記12に記載の非一時的コンピュータ可読媒体。
(付記14)
前記訓練および前記評価を実行するステップが、前記データのデータ型式、前記データの密度、および前記データの量に基づいて、1つまたは複数の素性関数を実行することを有する、付記8に記載の非一時的コンピュータ可読媒体。
(付記15)
人工知能モデルを生成し最適化するシステムであって、前記システムが、
入力済みデータおよびラベルを受け取り、データ検証を実行して構成ファイルを生成し、前記データを分割して訓練および評価向けに分割済みデータを生成するように構成されたデータフレームワークと、
前記分割済みデータの訓練および評価を実行して誤差レベルを測定し、前記誤差レベルに基づいてアクションを実行し、前記訓練、前記評価、および前記チューニングに基づいて前記人工知能モデルを生成し、前記モデルを本番にサービングするように構成されたディープフレームワークと、
前記アクションを実行するように構成されたチューナフレームワークであって、前記アクションが、前記構成ファイルを修正することと、前記人工知能モデルを自動的にチューニングすること、のうち少なくとも片方を含むチューナフレームワークと、
を含む、システム。
(付記16)
前記チューナフレームワークが、前記入力済みデータに関連した1つまたは複数の入力済み素性を自動的に最適化し、前記生成済み人工知能モデルに関連したハイパーパラメータを自動的に最適化し、最適化済みの1つまたは複数の入力済み素性および前記最適化済みのハイパーパラメータに基づいて更新済みモデルを自動的に生成するように構成される、付記15に記載のシステム。
(付記17)
前記チューナフレームワークが、前記1つまたは複数の入力済み素性を一般的なアルゴリズムを適用することによって自動的に最適化し、前記1つまたは複数の入力済み素性の組合せを最適化し、前記最適化済みの入力済み素性のリストを生成する、付記16に記載のシステム。
(付記18)
前記チューナフレームワークが、ベイズアルゴリズムおよびランダムアルゴリズムの少なくとも片方を適用して前記ハイパーパラメータに基づき最適化することによって、前記ハイパーパラメータを自動的に最適化する、付記16に記載のシステム。
(付記19)
チューナフレームワークが、第1の反復ループで前記1つまたは複数の入力済み素性を、第1の規定の反復回数が満たされるまで自動的に最適化するステップを実行し、第2の反復ループで前記ハイパーパラメータを自動的に最適化するステップおよび前記更新済みモデルを自動的に生成するステップを、第2の規定の反復回数が満たされるまで実行する、付記16に記載のシステム。
(付記20)
チューナフレームワークが、前記第1の反復ループおよび前記第2の反復ループを、第3の規定の反復回数が満たされるまで反復的に実行する、付記19に記載のシステム。