以下、添付図面を参照して実施形態にかかる学習モデル作成装置、判定システムおよび学習モデル作成方法を詳細に説明する。なお、以下の説明において、同様の構成要素には共通の符号を付与するとともに、重複する説明を省略する。
(第1の実施形態)
図1は、第1の実施形態にかかる判定システムの構成の一例を示すブロック図である。図1に示すように、判定システム1は、複数のユーザの学習データD1を受け付けて学習モデルM1を作成する学習モデル作成装置10と、ラベルが未知であるデータD2の入力を受け付け、学習モデル作成装置10が作成した学習モデルM1に基づいてデータD2のラベルを判定する判定装置20とを有する。
学習モデル作成装置10は、学習データ変換部101と、学習データ格納部102と、ユーザモデル作成部103と、異常度算出部104と、学習モデル作成部105とを有する。
学習データ変換部101は、学習データD1の入力を受け付ける。学習データD1は、複数のユーザから与えられ、教師つき学習における教師データに相当するデータである。具体的には、学習データD1は、ユーザの入力情報であるテキスト、画像、音声等のデータと、そのデータの内容の種別であるラベルとを少なくとも組としたデータである。
図2は、学習データD1を説明する説明図である。図2に示すように、学習データD1は、ユーザの入力情報がテキストである場合、「野球をしたい」などのテキストと、そのテキスト内容の種別を示す「スポーツ」等のラベルと、ユーザを識別するためのユーザIDとを有する。この学習データD1は、例えばコンソールからの入力の他、インターネット上の掲示板、ブログ、SNS(ソーシャル・ネットワーキング・サービス)などへのユーザの書き込みを収集したものであってもよい。
学習データ変換部101は、入力された学習データD1について、データの特徴をn次元のベクトルで表記した特徴ベクトルと、ラベルの内容を数値化した数値ラベルの組に変換する。特徴ベクトルへの変換は、機械学習で一般的に用いられている公知の手法を利用する。例えば、データがテキストの場合には、形態素解析、n−gramまたは区切り文字により特徴ベクトルへ変換する手法がある。一般に、形態素解析は日本語のテキストに、空白区切りは英語のテキストに適用されることが多く、テキストの種別(日本語/英語)によって手法を変更してもよい。
形態素解析の場合は、予め設定された辞書データをもとに、データを品詞に分割し、分割された要素をもとに特徴ベクトルへ変換する。例えば、「今日は、サッカーを、する」というテキストは、「今日/は/、/サッカー/を/、/する」と分割され、分割された要素をもとに特徴ベクトルに変換する。
また、n−gramの場合は、データを先頭から1文字ずつずらしながらn文字の組をつくり、それらを特徴ベクトルに変換する。例えば、「今日は、サッカーを、する」というテキストは、n−gram(n=6)の場合、「今日は、サッ/日は、サッカ/…/カーを、する」という要素が作られ、これらの要素をもとに特徴ベクトルに変換する。
また、区切り文字の場合は、データを予め定めた区切り文字(空白、句読点、カンマ等)によって分割し、分割された要素をもとに特徴ベクトルへ変換する。例えば、「今日は、サッカーを、する」というテキストは、区切り文字(”、”)の場合、「今日は/サッカーを/する」と分割され、分割された要素をもとに特徴ベクトルへ変換する。
特徴ベクトルへの変換には、各要素の出現回数をそのまま特徴ベクトルとする方式、出現回数によらず、ある要素が出現する(1)/出現しない(0)で数値化する方式等がある。ラベルに関しても所定の規則に従って数値化する。例えば、「スポーツ」/「非スポーツ」のラベルがある場合は、「スポーツ」を「1」、「非スポーツ」を「0」のように数値化する。
学習データ格納部102は、学習データ変換部101による変換済の学習データD1と、ユーザIDの組を格納する。学習データ格納部102は、一般のデータベース(MySQLやPostgreSQL等)を用いてもよいし、表形式やテキスト形式での格納などであってもよい。学習データ格納部102における、格納方法の種類は問わない。また、学習データ格納部102は、RAM(Random Access Memory)上に確保された作業領域で代用してもよい。
ユーザモデル作成部103は、学習データ格納部102から変換済の学習データD1とユーザIDの組を取り出し、ユーザID(ユーザ)ごとに固有の学習モデルであるユーザモデルを作成する。
図3は、ユーザモデル作成部103を説明する説明図である。図3に示すように、ユーザモデル作成部103は、ユーザIDごとの学習データD11、D12に対応したユーザモデルU1、U2を作成する。ユーザモデルU1、U2は、ユーザIDが「1」、「2」におけるユーザの特徴ベクトルと数値化ラベルとの組をもとに作成される、ユーザごとの学習モデルである。ユーザモデルU1、U2の作成には、一般の機械学習手法である、ロジスティック回帰、サポートベクターマシン、パーセプトロン等を用いてもよい。作成されたユーザモデルU1、U2は、n次元のベクトルで表記される。
異常度算出部104は、ユーザごとの学習データD1が示す各ユーザの特徴に基づいて、ユーザごとに、ユーザの特徴と、他のユーザの特徴とが、どの程度相違するかを示す指標値である異常度を算出する。具体的には、各ユーザの学習データD1や、ユーザモデルU1、U2を互いに比較することで、あるユーザが他のユーザとどの程度相違するかを示す異常度を算出する。この異常度の算出方法には、大きく分けて、各ユーザの学習データD1の違いにより算出する第1の算出方法、ユーザモデルU1、U2の違いにより算出する第2の算出方法、第1の算出方法と第2の算出方法を組み合わせた第3の算出方法がある。
第1の算出方法では、各ユーザの学習データD1の要素の違いを基に、各ユーザの異常度を算出する。例えば、他のユーザと比べて学習データの要素が極端に少ない、もしくは多いユーザの異常度を高く算出する。
図4は、異常度の算出を説明する説明図であり、より具体的には、第1の算出方法による異常度の算出を説明する図である。図4に示すように、第1の算出方法の具体例としては、全てのユーザの学習データ数の平均(図示例では「40」)を算出し、算出した平均と各ユーザの学習データ数との差を、各ユーザの異常度と定義する方法がある。また、全てのユーザの学習データ数の中央値(図示例では「30」)と、各ユーザの学習データ数の差を、各ユーザの異常度と定義する方法がある。なお、第1の算出方法は、図4の例に限定するものではなく、各ユーザの学習データD1の要素を互いに比較する方法であれば他の方法を用いてもよい。
第2の算出方法では、ユーザモデルU1、U2を表すベクトルの大きさや方向の違いを基に、各ユーザの異常度を算出する。例えば、ユーザモデルU1、U2を表すベクトルの大きさや方向が、他とは異なるユーザの異常度を高く算出する。
図5、図6は、異常度の算出を説明する説明図であり、より具体的には、第2の算出方法による異常度の算出を説明する図である。ここで、図5、図6におけるV1、V2およびV3はユーザIDが「1」、「2」、「3」のユーザモデルを2次元のベクトルとして表記したものである。また、図5におけるVaは、V1、V2およびV3の平均のベクトルである。また、図6におけるV1n、V2nおよびV3nは、V1、V2およびV3を正規化したベクトルである。また、図6におけるVanは、V1n、V2nおよびV3nの平均のベクトルである。
図5に示すように、第2の算出方法としては、各ユーザのユーザモデルであるV1、V2およびV3の平均をとり、平均とV1、V2およびV3との距離D1、D2、D3をユーザごとの異常度と定義する方法がある。この場合、Vaと、V1、V2およびV3との距離D1、D2、D3が大きくなるほど、異常度は高くなる。
また、図6に示すように、第2の算出方法としては、各ユーザのユーザモデルであるV1、V2およびV3について正規化し、正規化したV1n、V2nおよびV3nの平均をとる。そして、平均したVanと、V1、V2およびV3とのなす角度をユーザごとの異常度と定義する方法がある。この場合、Vanと、V1、V2およびV3とのなす角度が大きくなるほど、異常度は高くなる。なお、第2の算出方法は、図5、6の例に限定するものではなく、各ユーザのユーザモデルU1、U2をもとに比較を行う方法であれば他の方法を用いてもよい。
第3の算出方法としては、例えば、(第1の算出方法で算出された異常度)+(第2の算出方法で算出された異常度)と算出する方法がある。なお、第1の算出方法および第2の算出方法の組み合わせは、上述した単純加算以外に乗算を用いてもよく、特に限定しない。
学習モデル作成部105は、入力された学習データD1に基づいて、判定装置20がデータD2に対応したラベルを判定するための学習モデルM1を作成する。具体的には、学習モデル作成部105は、ユーザモデル作成部103が作成した各ユーザのユーザモデルを統合した学習モデルM1を作成し、判定装置20へ出力する。この学習モデルM1の作成に際し、学習モデル作成部105は、異常度算出部104が算出した各ユーザの異常度に基づいて、他のユーザと特徴の相違が大きい、すなわち異常度の大きいユーザのユーザモデルが学習モデルM1に寄与する度合いを小さくして、学習モデルM1を作成する。異常度に応じてユーザの学習データD1の寄与を変更する方法としては、異常度から各ユーザモデルの重みを定義し、その重み付き平均により学習モデルを作成する方法、所定の閾値未満の重みに対応するユーザモデルを排除した上で学習モデルを作成する方法などがある。
重み付き平均により学習モデルを作成する方法において、ユーザモデルの重みの定め方としては、例えば異常度の逆数を重みとする方法がある。異常度の逆数を重みとする場合、異常度が0の時には、逆数の計算ができないため、予め設定しておいた数値を重みとする等の例外処理を行う。なお、重要度から重みを定める方法は上記に限定しない。
例えば、wiをユーザID=iのユーザモデルとし、λiをユーザモデルwiの重み、Kをユーザの総数としたとき、学習モデルw0は以下の式(1)で算出してもよい。
式(1)を用いる方法では、異常度の高いユーザモデルwiは、学習モデルw0への寄与が小さくなる。
所定の閾値未満の重みに対応するユーザモデルを排除した上で学習モデルを作成する方法としては、重みλiがある所定の閾値を下回っているユーザモデルwiは用いずに学習モデルw0を作成する方法がある。この閾値の設定方法は、ユーザがコンソール等より予め定める方法、重みλiの平均を閾値とする方法があるが、それらに限定しない。
例えば、所定の閾値をaとした場合の学習モデルw0は、以下の式(2)で算出してもよい。
また、重みが閾値a以上となるユーザモデルwiは、すべて均等に扱って学習モデルw0を算出してもよい。この場合、学習モデルw0は、以下の式(3)で与えられる。
なお、すべてのユーザモデルの重みλiが閾値aを下回った場合は、学習モデルw0は0ベクトルとしてもよい。
判定装置20は、データ変換部201と、判定部202と、学習モデル格納部203と、判定結果出力部204とを有する。
データ変換部201は、ラベルが未知であるデータD2を入力として受け付ける。このデータD2は、例えばコンソールからの入力の他、例えば、入力がテキストの場合には、インターネット上の掲示板、ブログ、SNSなどへの任意の書き込みを収集したものであってもよい。データ変換部201は、学習データ変換部101と同様、受け付けたデータD2を特徴ベクトルに変換する。特徴ベクトルに変換されたデータD2は判定部202へ出力される。
判定部202は、特徴ベクトルに変換されたデータD2を受け取ると、学習モデル格納部203に格納されている学習モデルM1を参照し、データD2に対応するラベルを判定する。具体的には、特徴ベクトルと学習モデルM1との内積が0より大きければ数値化ラベル=1、0より小さければ数値化ラベル=0、0であれば数値化ラベル=−1(「−1」は「判定不能」を示す)のように、判定部202は、特徴ベクトルと学習モデルM1との内積の値をもとにラベル判定を行う。
学習モデル格納部203は、学習モデル作成装置10にて作成された学習モデルM1を格納する。学習モデル格納部203は、一般のデータベース(MySQLやPostgreSQL等)を用いてもよいし、表形式やテキスト形式での格納などであってもよい。学習モデル格納部203における、格納方法の種類は問わない。
判定結果出力部204は、判定部202で得られた判定結果(数値化ラベル)を、数値化ラベルとラベル表記との対応テーブルなどを参照し、数値化する前のラベルに変換する。そして、判定結果出力部204は、変換したラベルをユーザに識別可能な判定結果R1として出力する。ただし、判定部202で得られた判定結果が「−1」の場合には、「判定不能」などの文字列を判定結果R1として出力する。ここで、判定結果出力部204が行う判定結果R1の出力は、ディスプレイへの表示出力、HDD(Hard Disk Drive)等の記憶媒体へ書き込み、ネットワーク上の他の情報処理装置(例えばPC(Personal Computer)等)への送信などであってよい。
図7は、第1の実施形態にかかる判定システム1の処理フローを説明する説明図である。図7に示すように、学習モデル作成装置10は、複数のユーザについて、入力情報と、その入力情報に対応したラベルとを少なくとも組とする学習データD11、D12、D13…を受け付ける。そして、学習モデル作成装置10は、学習データ変換部101において、ユーザごとの学習データD11、D12、D13が示す特徴ベクトルへの変換等の学習データ変換の処理を行う(S1)。
次いで、学習モデル作成装置10は、ユーザモデル作成部103において、変換後のデータをもとにユーザモデルを作成し、異常度算出部104において、ユーザごとに、このユーザの特徴と、他のユーザの特徴との相違を示す異常度を算出する。そして、学習モデル作成装置10は、学習モデル作成部105において、算出した異常度と、ユーザモデルとに基づいて学習モデルM1を作成する処理(S2)を行う。このS2では、ユーザごとに算出された異常度に基づいて、他のユーザと特徴の相違が大きいユーザのユーザモデルが学習モデルM1に寄与する度合いを小さくする。
判定装置20は、ラベルが未知のデータD2の入力を受け付ける。そして、判定装置20は、データ変換部201において、受け付けたデータD2の特徴ベクトルへの変換等のデータ変換の処理を行う(S3)。次いで、判定装置20は、判定部202において、データ変換後のデータD2を受け取り、S2で作成された学習モデルM1を参照し、データD2に対応するラベルを判定する(S4)。そして、判定装置20は、判定したラベル(図示例では「スポーツ」)を判定結果R1として出力する。
以上のように、学習モデル作成装置10は、複数のユーザについて、入力情報と、その入力情報に対応したラベルとを少なくとも組とする学習データD1を受け付ける。そして、学習モデル作成装置10は、ユーザごとの学習データD1が示す特徴に基づいて、ユーザごとに、このユーザの特徴と、他のユーザの特徴との相違を示す異常度を算出する。そして、学習モデル作成装置10は、判定装置20がデータD2に対応したラベルを判定するための学習モデルM1を学習データD1に基づいて作成する際に、ユーザごとに算出された異常度に基づいて、他のユーザと特徴の相違が大きいユーザの学習データD1が学習モデルM1に寄与する度合いを小さくする。
このため、学習モデル作成装置10は、誤った学習データD1を与えるユーザが存在した場合であっても、そのユーザの学習データD1が学習モデルM1に寄与する度合いを小さくすることができ、判定精度の高い学習モデルM1を作成することができる。例えば、誤った学習データD1を与えるユーザが少数の場合には、それらのユーザが与える学習データD1やユーザモデルは多数のユーザのものと大きく異なるものとなる。したがって、誤った学習データD1を与えるユーザは異常度が高くなる。異常度の高いユーザの学習データD1は学習モデルM1へ寄与する度合いが小さくなるため、エキスパードデータなどで信頼度を加味することなく、判定精度の高い学習モデルM1の作成が可能となる。また、判定装置20では、学習モデル作成装置10で作成された学習モデルM1を参照してデータD2のラベル判定を行うことから、誤った学習データD1を与えるユーザの影響を抑えた、精度の高い判定を行うことが可能となる。
(第2の実施形態)
次に、第2の実施形態について説明する。上述した第1の実施形態では、各ユーザのユーザモデルを作成した後、ユーザごとの異常度を求め、求めた異常度を重みに変換する。そして、ユーザモデルと重みを用いて学習モデルM1を作成する。すなわち、第1の実施形態では、上述した処理を順次行って学習モデルM1を作成する順次法を例示した。第2の実施形態では、学習モデル(ユーザごとのユーザモデルおよびそれらを統合した学習モデル)と、ユーザごとの重みの更新を繰り返し、所定の収束条件を満たしたところで学習モデルとして出力する繰り返し法を例示する。
図8は、第2の実施形態にかかる判定システム1aの構成の一例を示すブロック図である。図8に示すように、判定システム1aの学習モデル作成装置10aは、初期化部111、学習モデル更新部112及びパラメータ更新部113を有する学習モデル作成部110としているところが判定システム1と異なっている。
初期化部111は、学習データ格納部102から学習データD1を受け取ると、各ユーザ(任意のユーザID=kをユーザkとする)のユーザモデルwk、学習モデルw0、重みλk、正則化パラメータη(実数)を予め定めておいた値で初期化する。次いで、初期化部111は、ユーザモデルwk、学習モデルw0および学習データD1を学習モデル更新部112に出力し、重みλk、正則化パラメータηをパラメータ更新部113へ出力する。
学習モデル更新部112は、各ユーザのユーザモデルwkと学習モデルw0を更新する。ここで、学習モデル更新部112における更新処理の詳細について説明する。先ず、ユーザID=kのユーザkが与えたi番目の学習データD1を(xki,yki)で表す。ここで、xkiはn次元の特徴ベクトル、ykiはラベルを表し、このラベルは0または1の値をとるものとする。なお、特徴ベクトルxkiは列ベクトルである。
また、ユーザkの与えた学習データD1の要素の総数をIkとしたとき、Ik個の特徴ベクトルの転置を縦に並べて作ったIk×n行列を次の式(4)のXkで表す。
ここで、xT kiはxkiの転置を表す。また、行列Aの逆行列はA−1と表記する。
学習モデル更新部112は、各ユーザのユーザモデルwkと学習モデルw0を次の式(5)に従って更新する。なお、式(5)におけるwkは更新前のユーザモデル、wnew kは更新後のユーザモデルを示す。また、w0は更新前の学習モデル、wnew 0は更新後の学習モデルを示す。
ここで、βは予め定めておく必要がある正の実数であり、Hとgは次の式(6)で与えられる。
Bkは、(i,i)成分が(1−σ(wT kxki))σ(wT kxki)のIk次対角行列である。また、Dkは、i成分がyki−σ(wT kxki)のIk次列ベクトルである。また、Iはn次単位行列である。ここで、σは次の式(7)で与えられる関数(シグモイド関数)である。
学習モデル更新部112における更新は、所定の終了条件(収束条件)が満たされるまで実施される。ここで、終了条件としては、更新の回数が予定の数を超えた場合、更新の前後における学習モデルの変化が所定の値以下である場合などがある。
パラメータ更新部113は、各ユーザのユーザモデルにおける重みλkと、正則化パラメータηを次の式(8)に従って更新する。この重みλkは、他のユーザとの相違を示す指標値である。
ここで、Tr[A]は行列Aのトレースを示す。なお、異常度の定め方としては、例えば重みの逆数を異常度とする方法が考えられるが、この方法以外であってもよく、特に限定しない。
上述した、学習モデル更新部112による学習モデル(ユーザごとのユーザモデルおよびそれらを統合した学習モデル)の更新と、パラメータ更新部113によるユーザごとの重みの更新を繰り返すことで得られる学習モデルw0は、式(5)より以下の式(9)となる。
上記の式(9)より、学習モデルw0は、各ユーザモデルwkの重み付き平均の定数倍で与えられることがわかる。なお、第1の実施形態における、所定の閾値未満を切り捨てる場合と同様、ある閾値aを定め、重みが閾値aを下回っているユーザモデルは上記の式で用いずに学習モデルw0を作成してもよい。
図9は、第2の実施形態にかかる学習モデル作成の処理を示すフローチャートである。図9に示すように、学習モデル作成部110における処理が開始されると、初期化部111は、ユーザモデルwk、学習モデルw0、重みλk、正則化パラメータη(実数)を初期化する(S11)。次いで、学習モデル更新部112は、初期化されたユーザモデルwkと学習モデルw0を更新する(S12)。
次いで、パラメータ更新部113は、ユーザモデルにおける重みλkと、正則化パラメータηを更新する(S13)。次いで、学習モデル更新部112は、S13で更新された重みλkと、正則化パラメータηをもとに、ユーザモデルwkと学習モデルw0を更新する(S14)。次いで、学習モデル作成部110は、更新の回数が予定の数を超えたか否か、更新の前後における学習モデルの変化が所定の値以下であるか否かなど、所定の収束条件を満たすか否かを判定する(S15)。
所定の収束条件を満たさない場合(S15:NO)、学習モデル作成部110はS13へ処理を戻す。これにより、所定の収束条件を満たさない間は、ユーザモデルにおける重みλkおよび正則化パラメータηの更新と、ユーザモデルwkおよび学習モデルw0の更新とが交互に繰り返し実施されることとなる。
所定の収束条件を満たす場合(S15:YES)、学習モデル作成部110は処理を終了し、収束条件を満たすまでに演算された学習モデルw0を判定装置20へ出力する。
また、上述した実施形態において説明した学習モデル作成装置10および判定装置20が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。この場合、コンピュータがプログラムを実行することにより、上述した実施形態にかかる学習モデル作成装置10および判定装置20における処理と同様の効果を得ることができる。さらに、かかるプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませて実行することにより上述した実施形態と同様の処理を実現してもよい。以下に、上述したプログラムを実行するコンピュータの一例を説明する。
図10は、実施形態にかかる判定システム1の学習モデル作成装置10および判定装置20における処理がコンピュータを用いて具体的に実現されることを示す図である。図10に例示するように、コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有し、これらの各部はバス1080によって接続される。
メモリ1010は、ROM(Read Only Memory)1011及びRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1031に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1041に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブに挿入される。シリアルポートインタフェース1050は、例えばマウス1051、キーボード1052に接続される。ビデオアダプタ1060は、例えばディスプレイ1061に接続される。
ハードディスクドライブ1031は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、上記のプログラムは、コンピュータ1000によって実行される指令が記述されたプログラムモジュール1093として、例えばハードディスクドライブ1031に記憶される。例えば、図1に例示した学習モデル作成装置10の機能構成(学習データ変換部101、学習データ格納部102、ユーザモデル作成部103、異常度算出部104、学習モデル作成部105)や判定装置20の機能構成(データ変換部201、判定部202、判定結果出力部204、学習モデル格納部203)と同様の情報処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1031に記憶される。
また、上述したプログラムを実行する際の作業領域などは、RAM1012に確保される。処理に必要な設定データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1031に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1031に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して実行する。
なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1031に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093やプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。また、学習モデル作成装置10および判定装置20を備える判定システム1は、上述した一つのコンピュータで実現されるものであってよいことは言うまでもないことである。