(58)【調査した分野】(Int.Cl.,DB名)
前記学習部は、第1ラベルベクトルに対応する第1特徴ベクトルと、前記第1ラベルベクトルとの内積の値が上位の第2ラベルベクトルに対応する第2特徴ベクトルとを取得し、前記第1特徴ベクトルと前記第2特徴ベクトルとを前記学習データとして用いて、前記複数の分類ベクトルを学習する
請求項1記載の情報処理装置。
【発明を実施するための形態】
【0010】
以下、図面を参照して、情報処理装置、情報処理方法、およびプログラムの実施形態について説明する。本実施形態においては、情報処理装置の一例として、ラベル付与装置について説明する。ラベル付与装置は、対象データの内容に応じて、「政治」、「経済」、「スポーツ」といったラベルを対象データに付与する装置である。ラベル付与装置は、ウェブページなどを管理するサーバ装置に対してクラウドサービスによってラベルを提供する装置であってもよいし、上記サーバ装置に内蔵されるものであってもよい。対象データに付与されたラベルは、ニュースサイトにおけるニュースレコメンドに使用されてもよいし、ユーザ端末に表示される広告の選択に使用されてもよい。
【0011】
<1.ラベル付与装置の使用環境>
図1は、実施形態に係るラベル付与装置100の使用環境を示す図である。実施形態のラベル付与装置100は、ネットワークNWを介してデータサーバ200と通信する。ネットワークNWは、例えば、WAN(Wide Area Network)、LAN(Local Area Network)、インターネット、プロバイダ装置、無線基地局、専用回線などのうちの一部または全部を含む。
【0012】
ラベル付与装置100は、特徴ベクトル変換部110と、分類部120と、ラベル取得部130と、学習部140と、通信部150と、第1記憶部160と、第2記憶部170とを備える。
【0013】
特徴ベクトル変換部110、分類部120、ラベル取得部130、および学習部140は、例えば、ラベル付与装置100のプロセッサがプログラムを実行することで実現されてもよいし、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)などのハードウェアによって実現されてもよいし、ソフトウェアとハードウェアが協働することで実現されてもよい。
【0014】
通信部150は、例えばNIC(Network Interface Card)を備える。ラベル付与装置100は通信部150を用いて、ネットワークNWを介してデータサーバ200と通信する。第1記憶部160および第2記憶部170は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)、フラッシュメモリ、またはこれらのうち複数が組み合わされたハイブリッド型記憶装置などにより実現される。また、第1記憶部160および第2記憶部170の一部または全部は、NAS(Network Attached Storage)や外部のストレージサーバなど、ラベル付与装置100がアクセス可能な外部装置であってもよい。
【0015】
データサーバ200は、制御部210と、通信部220とを備える。制御部210は、例えば、データサーバ200のプロセッサがプログラムを実行することで実現されてもよいし、LSI、ASIC、FPGAなどのハードウェアによって実現されてもよいし、ソフトウェアとハードウェアが協働することで実現されてもよい。
【0016】
通信部220は、例えばNICを備える。制御部210は、通信部220を用いて、ネットワークNWを介してラベル付与装置100に対象データを送信する。対象データは、例えば、検索サイトにおいてユーザによって入力された検索クエリであるが、これに限られない。例えば、対象データは、ユーザが閲覧したページのページデータ、ユーザが閲覧したページのURL(Uniform Resource Locator)、ブログ(ウェブログ)サービスにおいて投稿された記事、またはソーシャルネットワーキングサービス(SNS)において投稿された記事等であってもよい。ここで、ページデータは、ウェブ上にあり、ブラウザで閲覧可能なページ単位のデータである。例えば、ページデータは、画像データおよびHTML(HyperText Markup Language)データを含む。なお、ページデータは、ブラウザに限らず、アプリケーションプログラムによって再生されるデータであってもよい。
【0017】
<2.ラベル付与装置によるラベル付与処理>
図2は、実施形態に係るラベル付与装置100の詳細構成を示すブロック図である。ラベル付与装置100は、データサーバ200から対象データTDを受信し、受信した対象データTDにラベルを付与する。ラベルは、対象データTDを分類するためのデータであり、例えば、「政治」、「経済」、「スポーツ」などの対象データTDが属するジャンルを示すデータである。詳細は後述するが、ラベルは対象データTDに付与される。以下、ラベル付与装置100のラベル付与動作について詳細に説明する。
【0018】
通信部150は、データサーバ200から対象データTDを受信し、受信した対象データTDを特徴ベクトル変換部110に出力する。特徴ベクトル変換部110は、通信部150から入力された対象データTDを特徴ベクトルxに変換する。例えば、対象データTDが検索クエリである場合には、特徴ベクトルxは検索クエリに含まれる単語の集合を示すベクトルであってよい。また、対象データTDがページデータである場合には、特徴ベクトルxはページデータに含まれる単語の集合を示すベクトルであってよい。特徴ベクトル変換部110は、特徴ベクトルxを、分類部120に出力する。
【0019】
第1記憶部160には、学習部140によって学習された複数の分類ベクトル(ベクトルテーブルT1)が記憶されている。特徴ベクトルxが特徴ベクトル変換部110から分類部120に入力されると、分類部120は、第1記憶部160に記憶されたベクトルテーブルT1を参照し、分類ベクトルwを読み出す。また、分類部120は、読み出した分類ベクトルwを用いて、入力された特徴ベクトルxを複数のクラスタC
1からC
nのいずれかに分類する。ここで、nはクラスタの総数を示す。分類部120は、特徴ベクトルxが分類されたクラスタのクラスタ番号mを、ラベル取得部130に出力する。ここで、1≦m≦nである。以下、分類部120による分類処理を具体的に説明する。
【0020】
図3は、実施形態に係るベクトルテーブルT1の一例を示す図である。
図3に示されるように、ベクトルテーブルT1は、ノード番号と分類ベクトルとが関連付けられたデータである。ノード番号は、後述する分類木のノードに付与された番号を示す。分類ベクトルは、対象データTDの分類に用いられるベクトルである。
図3に示される例においては、ノード番号1からsのそれぞれに、分類ベクトルw
1からw
sが関連付けられている。
【0021】
図4は、実施形態に係る分類木の一例を示す図である。分類木には、複数のノードが含まれる。分類木のルートノードは、ノードN1である。分類木の複数のリーフノードは、複数のクラスタC
1からC
nに対応する。
【0022】
分類部120は、第1記憶部160から分類ベクトルwを読み出し、読み出した分類ベクトルwと特徴ベクトルxとの内積を算出し、算出した内積に基づいて特徴ベクトルxを分類する。例えば、分類部120は、ルートノードN1において、第1記憶部160に記憶されたベクトルテーブルT1を参照して、分類ベクトルw
1を取得する。次に、分類部120は、取得した分類ベクトルw
1と特徴ベクトルxとの内積を算出する。分類部120は、算出した内積が0以上の場合はノードN2に移行し、算出した内積が0未満の場合はノードN3に移行する。
【0023】
また、分類部120は、ノードN2において、第1記憶部160に記憶されたベクトルテーブルT1を参照して、分類ベクトルw
2を取得する。次に、分類部120は、取得した分類ベクトルw
2と特徴ベクトルxとの内積を算出する。分類部120は、算出した内積が0以上の場合はノードN4に移行し、算出した内積が0未満の場合はノードN5に移行する。
【0024】
一方、分類部120は、ノードN3において、第1記憶部160に記憶されたベクトルテーブルT1を参照して、分類ベクトルw
3を取得する。次に、分類部120は、取得した分類ベクトルw
3と特徴ベクトルxとの内積を算出する。分類部120は、算出した内積が0以上の場合はノードN6に移行し、算出した内積が0未満の場合はノードN7に移行する。
【0025】
分類部120は、以上の処理を各ノードにおいて行うことで、特徴ベクトルxをいずれかのリーフノード(クラスタC
1からC
n)に分類する。分類部120は、特徴ベクトルxが分類されたリーフノード(クラスタ)に対応するクラスタ番号mを、ラベル取得部130に出力する。
【0026】
クラスタ番号mが分類部120からラベル取得部130に入力されると、ラベル取得部130は、クラスタ番号mに対応するラベルLを第2記憶部170から読み出す。具体的には、複数のクラスタのそれぞれにラベルが対応付けられたラベルテーブルT2が、第2記憶部170に記憶されている。詳細は後述するが、ラベルテーブルT2は、学習部140によって生成される。ラベル取得部130は、第2記憶部170に記憶されたラベルテーブルT2を参照して、クラスタ番号mに対応するラベルLを取得する。
【0027】
図5は、実施形態に係るラベルテーブルT2の一例を示す図である。
図5に示されるように、ラベルテーブルT2は、クラスタ番号と、ラベルとが関連付けられたデータである。
図5に示される例においては、クラスタ番号1にラベルL
1−1、ラベルL
1−2、・・・が対応付けられ、クラスタ番号2にラベルL
2−1、ラベルL
2−2、・・・が対応付けられ、・・・、クラスタ番号nにラベルL
n−1、ラベルL
n−2、・・・が対応付けられている。なお、各クラスタ番号には、複数のラベルが関連付けられてもよいし、一つのラベルが関連付けられてもよい。
【0028】
ラベル取得部130は、対象データTDに付与するラベルLとして、分類部120によって特徴ベクトルxが分類されたクラスタに対応付けられたラベルを、第2記憶部170に記憶されたラベルテーブルT2から取得する。具体的には、ラベル取得部130は、クラスタ番号mに関連付けられたラベルLをラベルテーブルT2から取得する。
【0029】
その後、ラベル取得部130は、取得したラベルLを通信部150に出力する。通信部150は、ラベル取得部130から入力されたラベルLを、データサーバ200に送信する。以上の処理によって、ラベル付与装置100は、対象データTDにラベルLを付与することができる。
【0030】
データサーバ200は、ラベル付与装置100から受信したラベルLに基づき、ニュースサイトにおけるニュースレコメンドを行う。例えば、データサーバ200は、対象データTDに付与されたラベルL(「政治」や「経済」等)に基づいて、ラベルLに対応するニュースをユーザにレコメンドする。
【0031】
また、データサーバ200は、ラベル付与装置100から受信したラベルLに基づき、ユーザが所有するユーザ端末に配信する広告を選択してもよい。例えば、データサーバ200は、対象データTDに付与されたラベルL(「時計」や「指輪」等)に基づいて、ラベルLに対応する広告をユーザ端末に配信してもよい。
【0032】
<3.学習部による分類ベクトルの学習処理>
次に、学習部140による、第1記憶部160に記憶された分類ベクトルw
1からw
s(
図3参照)の学習処理の詳細を説明する。学習部140が分類ベクトルw
1からw
sの学習処理を行うことで、分類部120による特徴ベクトルxの分類処理を高精度に行うことができる。
【0033】
図6は、実施形態に係る学習データDの一例を示す図である。学習部140は、学習データDを用いて、ベクトルテーブルT1に含まれる分類ベクトルw
1からw
Sを学習する。学習データDは、特徴ベクトルとラベルベクトルとが関連付けられたt個のデータを含む。具体的に、学習データDは、特徴ベクトルx
1からx
tが、それぞれラベルベクトルy
1からy
tに関連付けられたデータである。
図6に示される例において、特徴ベクトルx
1からx
tおよびラベルベクトルy
1からy
tは、p次元のベクトルである。
【0034】
例えば、
図6に示されるように、特徴ベクトルx
1はラベルベクトルy
1に関連付けられ、特徴ベクトルx
2はラベルベクトルy
2に関連付けられ、特徴ベクトルx
3はラベルベクトルy
3に関連付けられ、・・・、特徴ベクトルx
tはラベルベクトルy
tに関連付けられる。
【0035】
学習部140は、第1ラベルベクトルy
iに対応する第1特徴ベクトルx
iと、第1ラベルベクトルy
iとの内積の値が大きい上位所定数の第2ラベルベクトルy
jに対応する第2特徴ベクトルx
jとを取得し、第1特徴ベクトルx
iと第2特徴ベクトルx
jとを学習データとして用いて、複数の分類ベクトルw
1からw
Sを学習する。
【0036】
具体的に、学習部140は、以下の式(1)に示される値が最大となるように、分類ベクトルwを求める。式(1)において、i、j、およびkは、インデックス(添え字)を示す。N
iは、特徴ベクトルx
iに対応するラベルベクトルy
iとの内積の値が大きい上位N個のラベルベクトルのインデックスの集合(N−近傍点)を示す。式(1)においては、計算を簡略化して求めたN
iの近似値を使用している。C
iは、+1または−1のいずれかである。具体的には、w
Tx
i≧0の場合はC
i=+1であり、それ以外の場合はC
i=−1である。S
−は、ランダムにサンプリングされたインデックスの集合を示す。S
−は、分布が一様になるように調整されてサンプリングされたインデックスの集合であってもよい。λは、任意に設定されたパラメータである。
【0038】
式(1)に示されるように、学習部140は、分類ベクトルwと、第2特徴ベクトルx
jとの内積が大きくなるように、分類ベクトルwを調整する。また、学習部140は、分類ベクトルwと、ランダムに取得された第3特徴ベクトルx
kとの内積が小さくなるように、分類ベクトルwを調整する。
【0039】
図7は、実施形態に係る式(1)を概念的に説明するための図である。
図7において、x
jはN
iに含まれる特徴ベクトルであり、x
kはランダムにサンプリングされた特徴ベクトルである。
図7に示されるように、x
iとx
jとを同じクラスタに分類するように分類ベクトルwを調整することで、式(1)の第1項の値は大きくなる。また、x
iとx
kとを異なるクラスタに分類するように分類ベクトルwを調整することで、式(1)の第2項の値は大きくなる。このように、学習部140は、式(1)に示される値が最大となるように、分類ベクトルwを求める。
【0040】
図8は、実施形態に係る学習データDの分割処理を説明するための図である。
図8に示されるように、学習データDはグラフGとして表される。グラフGにおいて、互いに類似するラベルベクトル同士がエッジによって接続されている。
【0041】
前述したように、学習部140は、式(1)に示される値が最大となるように、分類ベクトルw
1を求める。グラフGとして表された学習データDは、分類ベクトルw
1によって2つに分割される。具体的には、学習データDは、分類ベクトルw
1との内積が0以上の学習データの集合と、分類ベクトルw
1との内積が0未満の学習データの集合とに分割される。
【0042】
学習部140は、分割されたそれぞれの学習データの集合に対して、式(1)を用いて同様に分割処理を行う。これによって、学習部140は、分類ベクトルw
2および分類ベクトルw
3を算出することができる。学習部140は、学習データDを繰り返し(一回以上)分割することで分類木(
図4)を生成する。この点について、以下詳細に説明する。
【0043】
例えば、学習データDに含まれるデータの個数t=1000の場合、
図4におけるルートノードN1には1000個の学習データが存在する。学習部140は、式(1)を用いて算出された分類ベクトルw
1を用いて、1000個の学習データを2つに分割する。分割された学習データは、ノードN2とノードN3のいずれかに分類される。
【0044】
例えば、ノードN2に450個の学習データが分類され、ノードN3に550個の学習データが分類されたとする。この場合、学習部140は、ノードN2に分類された450個の学習データを用いて、式(1)に示される値が最大となるように、分類ベクトルw
2を求める。学習部140は、式(1)を用いて算出された分類ベクトルw
2を用いて、450個の学習データを2つに分割する。分割された学習データは、ノードN4とノードN5のいずれかに分類される。
【0045】
学習部140は、以上の分割処理を、リーフノードに至るまで繰り返し実行する。これによって、学習部140は、各ノードにおいて使用される分類ベクトルw
1からw
Sを算出することができる。したがって、学習部140は、
図3に示されるベクトルテーブルT1と、
図4に示される分類木とを生成することができる。
【0046】
このように、学習部140は、複数の特徴ベクトルxのそれぞれに、ラベルを示すラベルベクトルyが対応付けられた学習データDを取得する。学習部140は、類似するラベルベクトルが同じリーフノード(クラスタ)に分類されるように学習データDを繰り返し(一回以上)分割することで、複数の分類ベクトルwを学習する。これによって、ラベル付与装置100は、特徴ベクトルxを正確に分類することができる。
【0047】
学習部140は、リーフノード(クラスタ)毎に、分類された学習データに対応するラベルを取得する。また、学習部140は、取得したリーフノード(クラスタ)毎のラベルを用いて、ラベルテーブルT2を生成する。
【0048】
分類部120は、対象データTDから変換された特徴ベクトルxを、複数の分類ベクトルwを用いて分類木におけるいずれかのリーフノードに分類する。ラベル取得部130は、ラベルテーブルT2を参照して、分類部120によって分類された特徴ベクトルxが属するリーフノード(クラスタ)に対応するラベルを、対象データTDに付与するラベルLとして取得する。これによって、ラベル付与装置100は、高速に対象データにラベルを付与することができる。
【0049】
<4.ラベル付与処理のフローチャート>
図9は、実施形態に係るラベル付与処理を示すフローチャートである。本フローチャートによる処理は、ラベル付与装置100によって実行される。
【0050】
まず、ラベル付与装置100は、通信部150がデータサーバ200から対象データTDを受信したか否かを判定する(S100)。通信部150がデータサーバ200から対象データTDを受信した場合、特徴ベクトル変換部110は、通信部150によって受信された対象データTDを、特徴ベクトルxに変換する(S102)。特徴ベクトル変換部110は、特徴ベクトルxを分類部120に出力する。
【0051】
分類部120は、特徴ベクトル変換部110によって変換された特徴ベクトルxを、複数の分類ベクトルwを用いて分類する(S104)。また、分類部120は、特徴ベクトルxが分類されたクラスタのクラスタ番号mを、ラベル取得部130に出力する。
【0052】
ラベル取得部130は、第2記憶部170に記憶されたラベルテーブルT2を参照し、分類部120から入力されたクラスタ番号mに対応するラベルLを取得する(S106)。その後、ラベル取得部130は、取得したラベルLを通信部150に出力する。
【0053】
通信部150は、ラベル取得部130によって取得されたラベルLを、データサーバ200に送信し(S108)、前述のS100に処理を戻す。以上が、ラベル付与処理の一連の流れである。
【0054】
<5.分類ベクトルの学習処理のフローチャート>
図10は、実施形態に係る分類ベクトルwの学習処理を示すフローチャートである。本フローチャートによる処理は、学習部140によって実行される。
【0055】
まず、学習部140は、学習データDを取得する(S202)。例えば、学習部140は、ネットワークNWを介して外部装置から学習データDを受信するが、これに限られない。例えば、学習部140は、ラベル付与装置100に装着されたUSB(Universal Serial Bus)メモリやフラッシュメモリから学習データDを読み出してもよい。
【0056】
学習部140は、ノード番号iに1を代入する(S204)。これによって、学習部140は、ルートノードN1から分類ベクトルwの算出を開始する。学習部140は、前述の式(1)に示される値が最大となるように、分類ベクトルw
i(ここではw
1)を算出する(S206)。
【0057】
学習部140は、算出した分類ベクトルw
iを用いて、学習データを2つの集合に分割する(S208)。具体的に、学習部140は、学習データを、分類ベクトルw
iとの内積が0以上である学習データの集合と、分類ベクトルw
iとの内積が0未満である学習データの集合とに分割する。
【0058】
学習部140は、S208における分割処理によって、分類木(
図4)における最終のリーフノードが生成されたか否かを判定する(S210)。学習部140は、最終のリーフノードが生成されていないと判定した場合、ノード番号iに1を加算し(S212)、前述のS206に処理を戻す。これによって、学習部140は、分割された各集合に対して、S206からS210に示される処理を行うこととなる。
【0059】
一方、学習部140は、最終のリーフノードが生成されたと判定した場合、算出した分類ベクトルw
1からw
Sを用いて、ベクトルテーブルT1(
図3)を生成する(S214)。
【0060】
また、学習部140は、リーフノード(クラスタ)毎に、分類された学習データに対応するラベルを取得する。その後、学習部140は、取得したリーフノード(クラスタ)毎のラベルを用いて、ラベルテーブルT2を生成し(S216)、本フローチャートによる処理を終了する。
【0061】
<6.ハードウェア構成>
図11は、実施形態に係るラベル付与装置100のハードウェア構成の一例を示す図である。ラベル付与装置100は、例えば、CPU180、RAM181、ROM182、フラッシュメモリやHDDなどの二次記憶装置183、NIC184、ドライブ装置185、キーボード186、およびマウス187が、内部バスあるいは専用通信線によって相互に接続された構成となっている。ドライブ装置185には、光ディスクなどの可搬型記憶媒体が装着される。二次記憶装置183、またはドライブ装置185に装着された可搬型記憶媒体に記憶されたプログラムがDMA(Direct Memory Access)コントローラ(不図示)などによってRAM181に展開され、CPU180によって実行されることで、ラベル付与装置100の機能部が実現される。
【0062】
以上説明したように、実施形態のラベル付与装置100は、分類部120と、ラベル取得部130と、学習部140を備える。分類部120は、対象データTDから変換された特徴ベクトルxを、複数の分類ベクトルwを用いて分類する。ラベル取得部130は、分類部120による分類結果に基づいて、対象データTDに付与するラベルLを取得する。学習部140は、複数の特徴ベクトルxのそれぞれに、ラベルを示すラベルベクトルyが対応付けられた学習データDを取得し、類似するラベルベクトルが同じクラスタに分類されるように学習データDを分割することを一回以上実行することで、複数の分類ベクトルwを学習する。これによって、ラベル付与装置100は、より正確かつ高速に対象データにラベルを付与することができる。
【0063】
なお、上記実施形態において、特徴ベクトル変換部110はラベル付与装置100に設けられることとしたが、ラベル付与装置とは異なる特徴ベクトル変換装置に設けられていてもよい。この場合、特徴ベクトル変換装置は、対象データTDを特徴ベクトルxに変換し、変換した特徴ベクトルxをラベル付与装置100に送信してもよい。ラベル付与装置100は、特徴ベクトル変換装置から受信した特徴ベクトルxに基づいて、対象データTDにラベルLを付与してもよい。
【0064】
以上、本発明を実施するための形態について実施形態を用いて説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。