(57)【要約】【課題】入力データが複数のコンテクストを持つ場合であっても、複数のコンテクストに対応したコンテクスト変数を用いることで、適切な学習を行うこと。【解決手段】学習装置は、複数の入力データと、複数の入力データに対応するラベルとを入力し、多次元のコンテクスト変数を出力するエンコーダ１０１を実行する。学習装置は、複数の入力データと、多次元のコンテクスト変数とを入力し、複数の判定ラベルを出力するデコーダ１０２を実行する。学習装置は、複数の判定ラベルと、複数の判定ラベルに対応する複数のラベルとを一致させるように、エンコーダ１０１のパラメータおよびデコーダ１０２のパラメータを学習する。【選択図】図１
2020098501.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
複数の入力データと、前記複数の入力データに対応するラベルとを入力し、多次元のコンテクスト変数を出力するエンコーダを実行し、
前記複数の入力データと、前記多次元のコンテクスト変数とを入力し、複数の判定ラベルを出力するデコーダを実行し、
前記複数の判定ラベルと、前記複数の判定ラベルに対応する複数のラベルとを一致させるように、前記エンコーダのパラメータおよび前記デコーダのパラメータを学習する
処理を実行させることを特徴とする学習プログラム。
【請求項２】
前記エンコーダは、前記多次元のコンテクスト変数を出力するための複数のノードを含む出力層を有し、所定の制御命令を受け付けた場合に、前記出力層に含まれるノードの数を増加させることで、前記エンコーダから出力されるコンテクスト変数の次元の数を増加させる処理を更にコンピュータに実行させることを特徴とする請求項１に記載の学習プログラム。
【請求項３】
前記複数の入力データと前記ラベルとの組が複数存在する場合に、複数の入力データと、前記複数の入力データに対応するラベルとを前記エンコーダに入力して、前記多次元のコンテクスト変数を出力する処理を組毎に実行し、各組に対応する前記多次元のコンテクスト変数を基にして、前記多次元のコンテクスト変数の代表値を算出する処理を更にコンピュータに実行させることを特徴とする請求項１または２に記載の学習プログラム。
【請求項４】
前記算出する処理は、各組に対応する前記多次元のコンテクスト変数の平均値を、前記代表値として算出することを特徴とする請求項３に記載の学習プログラム。
【請求項５】
コンピュータが実行する学習方法であって、
複数の入力データと、前記複数の入力データに対応するラベルとを入力し、複数のコンテクスト変数を出力するエンコーダを実行し、
前記複数の入力データと、前記複数のコンテクスト変数とを入力し、複数の判定ラベルを出力するデコーダを実行し、
前記複数の判定ラベルと、前記複数の判定ラベルに対応する複数のラベルとを一致させるように、前記エンコーダのパラメータおよび前記デコーダのパラメータを学習する
処理を実行することを特徴とする学習方法。
【請求項６】
複数の入力データと、前記複数の入力データに対応するラベルとを入力し、複数のコンテクスト変数を出力するエンコーダを実行するエンコーダ実行部と、
前記複数の入力データと、前記複数のコンテクスト変数とを入力し、複数の判定ラベルを出力するデコーダを実行するデコーダ実行部と、
前記複数の判定ラベルと、前記複数の判定ラベルに対応する複数のラベルとを一致させるように、前記エンコーダのパラメータおよび前記デコーダのパラメータを学習する学習部と
を有することを特徴とする学習装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習プログラム等に関する。
【背景技術】
【０００２】
機械学習において、学習対象のデータが複数のコンテクストを持つ場合がある。たとえば、マーケティングオートメーション（ＭＡ）で用いるデータ、手書き文字列を認識する場合に用いるデータは、複数のコンテクストを持つ。
【０００３】
ＭＡでは、欲しい商品の一般名称を受け付けると、過去の購入履歴を基にして、ユーザの嗜好にあった商品をレコメンドする。たとえば、ユーザが「黒のボールペン」を探していることが分かった場合には、過去の購入履歴から「値段が安いことを重視した黒いボールペン」、「有名なメーカであることを重視する黒いボールペン」、「高級感を重視する黒いボールペン」をレコメンドする。
【０００４】
手書き文字列を認識する場合に用いるデータは、ユーザの癖によって、複数のコンテクストが含まれる場合がある。図２２は、手書き文字列のデータの一例を示す図である。図２２に示すデータ６の文字は、Ａさんが書いた文字「ラ」、および、Ｂさんが書いた「う」に非常に似ている。すなわち、データ６は、複数のコンテクストを持つ。
【０００５】
ここで、質問を特徴量、回答をラベルとした教師あり機械学習では、上記のように複数のコンテクストが含まれていると、同じ特徴量に異なる複数のラベルが紐付いている状態をうまく学習することができず、精度が劣化する。
【０００６】
たとえば、複数のコンテクストを持つデータを用いて機械学習を行う場合には、各コンテクストに対応する複数の学習モデルを用いて、学習を行うという対応策がある。図２２で説明した「手書き文字」を例に説明すると、データ６を質問、「ラ」を回答とする学習データを用いて、第１学習モデルを学習する。また、データ６を質問、「う」を回答とする学習データを用いて、第２学習モデルを学習する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１３−１０９４７１号公報
【特許文献２】特開２００９−１５７９５１号公報
【特許文献３】特開２０１７−３７５８８号公報
【特許文献４】特開２０１５−２６３５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した従来技術では、入力データに複数のコンテクストが含まれていると、適切な学習を行うことができないという問題がある。
【０００９】
たとえば、上記の対応策を用いると、新しい学習データを用いて学習を行う場合、複数の学習モデルのうち、新しい学習データがどの学習モデルに属するのかを判定することになるが、かかる判定を行うことが難しく、適切な学習を行うことができない。
【００１０】
１つの側面では、本発明は、入力データが複数のコンテクストを持つ場合であっても、複数のコンテクストに対応したコンテクスト変数を用いることで、適切な学習を行うことができる学習プログラム、学習方法および学習装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
第１の案では、コンピュータに次の処理を実行させる。コンピュータは、複数の入力データと、複数の入力データに対応するラベルとを入力し、多次元のコンテクスト変数を出力するエンコーダを実行する。コンピュータは、複数の入力データと、多次元のコンテクスト変数とを入力し、複数の判定ラベルを出力するデコーダを実行する。コンピュータは、複数の判定ラベルと、複数の判定ラベルに対応する複数のラベルとを一致させるように、エンコーダのパラメータおよびデコーダのパラメータを学習する。
【発明の効果】
【００１２】
入力データが複数のコンテクストを持つ場合であっても、複数のコンテクストに対応したコンテクスト変数を用いることで、適切な学習を行うことができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、本実施例１に係る学習フェーズの処理を説明するための図（１）である。
【図２】図２は、本実施例１に係る学習フェーズの処理を説明するための図（２）である。
【図３】図３は、本実施例１に係る認識フェーズの処理を説明するための図（１）である。
【図４】図４は、本実施例１に係る認識フェーズの処理を説明するための図（２）である。
【図５】図５は、本実施例１に係るシステムを示す図である。
【図６】図６は、本実施例１に係る学習装置の構成を示す機能ブロック図である。
【図７】図７は、本実施例１に係る入力データテーブルのデータ構造の一例を示す図である。
【図８】図８は、本実施例１に係るラベルテーブルのデータ構造の一例を示す図である。
【図９】図９は、本実施例１に係る対応テーブルのデータ構造の一例を示す図である。
【図１０】図１０は、本実施例１に係る潜在変数テーブルのデータ構造の一例を示す図である。
【図１１】図１１は、本実施例１に係る認識装置の構成を示す機能ブロック図である。
【図１２】図１２は、本実施例１に係る潜在変数算出テーブルのデータ構造の一例を示す図である。
【図１３】図１３は、潜在変数特定部の処理を説明するための図（１）である。
【図１４】図１４は、潜在変数特定部の処理を説明するための図（２）である。
【図１５】図１５は、本実施例１に係る学習装置の処理手順を示すフローチャートである。
【図１６】図１６は、本実施例１に係る認識装置の処理手順を示すフローチャートである。
【図１７】図１７は、本実施例２に係る学習装置の構成を示す機能ブロック図である。
【図１８】図１８は、本実施例２に係る学習部の処理を説明するための図である。
【図１９】図１９は、本実施例２に係る学習装置の処理手順を示すフローチャートである。
【図２０】図２０は、本実施例に係る学習装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【図２１】図２１は、本実施例に係る認識装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【図２２】図２２は、手書き文字列のデータの一例を示す図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示する学習プログラム、学習方法および学習装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１５】
本実施例１に係る学習装置が行う学習フェーズの処理について説明する。図１、図２は、本実施例１に係る学習フェーズの処理を説明するための図である。学習装置は、エンコーダ１０１およびデコーダ１０２を実行する。図１では、複数のユーザのうち、ユーザＡの手書き文字の入力データ１０Ａを用いて、エンコーダ１０１およびデコーダ１０２のパラメータを学習する場合について説明する。
【００１６】
エンコーダ１０１は、ニューラルネットワークのデータ構造を有し、入力層１０１ａ、隠れ層１０１ｂ、出力層１０１ｃを持つ。入力層１０１ａ、隠れ層１０１ｂは、複数のノードがエッジで結ばれる構造となっている。隠れ層１０１ｂ、出力層１０１ｃは、活性化関数と呼ばれる関数とバイアス値とを持ち、エッジは、重みを持つ。
【００１７】
デコーダ１０２は、ニューラルネットワークのデータ構造を有し、入力層２０１ａ、隠れ層２０１ｂ、出力層２０１ｃを持つ。入力層２０１ａ、隠れ層２０１ｂは、複数のノードがエッジで結ばれる構造となっている。隠れ層２０１ｂ、出力層２０１ｃは、活性化関数と呼ばれる関数とバイアス値とを持ち、エッジは、重みを持つ。
【００１８】
以下の説明では、適宜、エンコーダ１０１およびデコーダ１０２に設定されるバイアス値、重み等をまとめて「パラメータ」と表記する。
【００１９】
学習装置は、エンコーダ１０１の入力層１０１ａに、入力データ１０Ａと、ラベル１１Ａを入力する。入力データ１０Ａは、ユーザＡの手書き文字の画像データである。ラベル１１Ａは、入力データ１０Ａの正解ラベルを示すものである。図１に示す例では、ラベル１１Ａは、入力データ１０Ａの手書き文字が「う」であることを示している。
【００２０】
学習装置が、エンコーダ１０１の入力層１０１ａに、入力データ１０Ａと、ラベル１１Ａとを入力すると、エンコーダ１０１の出力層１０１ｃから、多次元の潜在変数１５Ａが出力される。この潜在変数１５Ａは、ユーザＡが文字を手書きする場合のくせ（特徴）を示すものである。潜在変数１５Ａの次元の数は、出力層１０１ｃのノードの数に一致する。たとえば、出力層１０１ｃのノードの数が「２」であれば、潜在変数１５Ａの次元の数は「２」となる。潜在変数は、コンテクスト変数の一例である。
【００２１】
学習装置は、デコーダ１０２の入力層１０２ａに、入力データ１０Ａを入力し、潜在変数１５Ａを、デコーダの隠れ層１０２ｂに入力する。そうすると、デコーダ１０２の出力層１０１ｃから、判定ラベル１２Ａが出力される。判定ラベル１２Ａは、入力データ１０Ａに手書きされた文字の予測結果（文字認識結果）を示すものである。
【００２２】
学習装置は、ラベル１１Ａと判定ラベル１２Ａとを一致させるように、エンコーダ１０１のパラメータおよびデコーダ１０２のパラメータを学習する。たとえば、学習装置は、ラベル１１Ａと判定ラベル１２Ａとの差分を示す評価関数の値が最小となるように、勾配法等を用いて、パラメータの学習を行う。
【００２３】
図２の説明に移行する。図２では、複数のユーザのうち、ユーザＢの手書き文字の入力データ１０Ｂを用いて、エンコーダ１０１およびデコーダ１０２のパラメータを学習する場合について説明する。
【００２４】
学習装置は、エンコーダ１０１の入力層１０１ａに、入力データ１０Ｂと、ラベル１１Ｂを入力する。入力データ１０Ｂは、ユーザＢの手書き文字の画像データである。ラベル１１Ｂは、入力データ１０Ｂの正解ラベルを示すものである。図２に示す例では、ラベル１１Ｂは、入力データ１０Ｂの手書き文字が「ラ」であることを示している。
【００２５】
学習装置が、エンコーダ１０１の入力層１０１ａに、入力データ１０Ｂと、ラベル１１Ｂとを入力すると、エンコーダ１０１の出力層１０１ｃから、多次元の潜在変数１５Ｂが出力される。この潜在変数１５Ｂは、ユーザＢが文字を手書きする場合のくせ（特徴）を示すものである。
【００２６】
学習装置は、デコーダ１０２の入力層１０２ａに、入力データ１０Ｂを入力し、潜在変数１５Ｂを、デコーダの隠れ層１０２ｂに入力する。そうすると、デコーダ１０２の出力層１０１ｃから、判定ラベル１２Ｂが出力される。判定ラベル１２Ｂは、入力データ１０Ｂに手書きされた文字の予測結果（文字認識結果）を示すものである。
【００２７】
学習装置は、ラベル１１Ｂと判定ラベル１２Ｂとを一致させるように、エンコーダ１０１のパラメータおよびデコーダ１０２のパラメータを学習する。たとえば、学習装置は、ラベル１１Ｂと判定ラベル１２Ｂとの差分を示す評価関数の値が最小となるように、勾配法等を用いて、パラメータの学習を行う。
【００２８】
学習装置は、図１、図２に示した処理を繰り返し実行することで、エンコーダ１０１およびデコーダ１０２のパラメータを学習する。学習装置が、エンコーダ１０１およびデコーダ１０２に入力する入力データは、どのユーザの入力データでもよいが、ラベルは、入力データに対応したものとなる。すなわち、図１に示したように、入力データ１０Ａを用いて学習する場合には、入力データ１０Ａに対応するラベル１１Ａを、エンコーダ１０１に入力して、ユーザＡの潜在変数１５Ａを算出し、デコーダ１０２に入力して学習を行う。図２に示したように、入力データ１０Ｂを用いて学習する場合には、入力データ１０Ｂに対応するラベル１１Ｂを、エンコーダ１０１に入力して、ユーザＢの潜在変数１５Ｂを算出し、デコーダ１０２に入力して学習を行う。
【００２９】
続いて、本実施例１に係る認識装置が行う認識フェーズの処理について説明する。図３、４は、本実施例１に係る認識フェーズの処理を説明するための図である。図３では一例として、ユーザＡが手書きした文字の入力データ２０Ａを認識する場合の処理について説明する。
【００３０】
認識装置は、エンコーダ１０１およびデコーダ１０２を実行する。エンコーダ１０１およびデコーダ１０２に設定されるパラメータは、図１、図２で説明した学習フェーズにおいて、学習装置により学習されたパラメータを用いる。
【００３１】
認識装置は、認識フェーズの処理を行う場合に、ユーザＡの潜在変数を求める処理を行う。認識装置は、入力データ１０Ａとラベル１１Ａをエンコーダ１０１の入力層１０１ａに入力することで、潜在変数１５Ａを算出する。潜在変数１５Ａは、ユーザＡが文字を手書きする場合のくせ（特徴）を示すものである。
【００３２】
認識装置は、潜在変数１５Ａを求めると、認識処理に移行する。認識装置は、認識対象となる入力データ２０Ａを、デコーダ１０２の入力層１０２ａに入力し、潜在変数１５Ａを、デコーダ１０２の隠れ層１０２ｂに入力する。そうすると、デコーダ１０２の出力層１０２ｃから、判定ラベル２１Ａが出力される。デコーダ１０２は、入力データ２０Ａを認識する場合に、ユーザＡの手書きの癖を示す潜在変数１５Ａを加味して判定ラベル２１Ａを出力するため、ユーザＡの手書きの癖に合わせた判定ラベル２１Ａを出力することができる。
【００３３】
図４の説明に移行する。図４では一例として、ユーザＢが手書きした文字の入力データ２０Ｂを認識する場合の処理について説明する。
【００３４】
認識装置は、エンコーダ１０１およびデコーダ１０２を実行する。エンコーダ１０１およびデコーダ１０２に設定されるパラメータは、図１、図２で説明した学習フェーズにおいて、学習装置により学習されたパラメータを用いる。
【００３５】
認識装置は、認識フェーズの処理を行う場合に、ユーザＡの潜在変数を求める処理を行う。認識装置は、入力データ１０Ｂとラベル１１Ｂをエンコーダ１０１の入力層１０１ａに入力することで、潜在変数１５Ｂを算出する。潜在変数１５Ｂは、ユーザＢが文字を手書きする場合のくせ（特徴）を示すものである。
【００３６】
認識装置は、潜在変数１５Ｂを求めると、認識処理に移行する。認識装置は、認識対象となる入力データ２０Ｂを、デコーダ１０２の入力層１０２ａに入力し、潜在変数１５Ｂを、デコーダ１０２の隠れ層１０２ｂに入力する。そうすると、デコーダ１０２の出力層１０２ｃから、判定ラベル２１Ｂが出力される。デコーダ１０２は、入力データ２０Ｂを認識する場合に、ユーザＢの手書きの癖を示す潜在変数１５Ｂを加味して判定ラベル２１Ａを出力するため、ユーザＢの手書きの癖に合わせた判定ラベル２１Ｂを出力することができる。
【００３７】
上記のように、本実施例１に係る学習装置は、入力データとこの入力データに対応するラベルとをエンコーダ１０１に入力して、潜在変数を算出する。学習装置は、算出した潜在変数と、入力データとをデコーダ１０２に入力した場合の判定ラベルが、ラベルと一致するように、エンコーダ１０１およびデコーダ１０２のパラメータを学習する。このため、入力データが複数のコンテクストを持つ場合であっても、複数のコンテクストに対応した潜在変数を用いることで、適切な学習を行うことができる。
【００３８】
次に、本実施例１に係るシステムの一例について説明する。図５は、本実施例１に係るシステムを示す図である。図５に示すように、このシステムは、学習装置１００と、認識装置２００とを有する。学習装置１００と、認識装置２００とはネットワーク５０を介して相互に接続される。
【００３９】
ここでは一例として、学習装置１００が、ネットワーク５０を介して認識装置２００と接続される場合について説明したが、これに限定されるものではない。学習装置１００は、無線通信または有線通信によって、認識装置２００に直接接続されてもよい。
【００４０】
学習装置１００は、図１、図２等で説明したように、入力データおよびラベルを基にして、エンコーダ１０１およびデコーダ１０２のパラメータを学習する装置である。学習装置１００は、学習したパラメータの情報を、認識装置２００に通知する。
【００４１】
認識装置２００は、図３、図４等で説明したように、学習装置１００から通知されるパラメータを用いて、エンコーダ１０１およびデコーダ１０２を実行し、潜在変数を用いて、認識対象の入力データに対応する判定ラベルを算出する装置である。
【００４２】
図６は、本実施例１に係る学習装置の構成を示す機能ブロック図である。図６に示すように、この学習装置１００は、通信部１１０、入力部１２０、表示部１３０、記憶部１４０、制御部１５０を有する。
【００４３】
通信部１１０は、ネットワーク５０を介して、認識装置２００とデータ通信を実行する処理部である。通信部１１０は、通信装置の一例である。後述する制御部１５０は、通信部１１０を用いて、認識装置２００とデータをやり取りする。
【００４４】
入力部１２０は、学習装置１００に各種のデータを入力するための入力装置である。入力部１２０は、キーボードやマウス、タッチパネル等に対応する。また、入力部１２０は、手書き入力装置（pen-input  device）であってもよい。ユーザは専用ペンを用いて、手書き入力を行うと、手書き入力装置は、手書き入力の軌跡の入力データ（画像データ）を生成し、入力データを学習装置１００に入力する。
【００４５】
表示部１３０は、制御部１５０から出力されるイベントの情報、映像データを表示する装置である。表示部１３０は、液晶ディスプレイやタッチパネル等に対応する。
【００４６】
記憶部１４０は、学習データ１４０ａ、潜在変数テーブル１４４、パラメータテーブル１４５を有する。学習データ１４０ａには、入力データテーブル１４１、ラベルテーブル１４２、対応テーブル１４３が含まれる。記憶部１４０は、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子や、ＨＤＤ（Hard  Disk  Drive）などの記憶装置に対応する。
【００４７】
入力データテーブル１４１は、各種の入力データを保持するテーブルである。図７は、本実施例１に係る入力データテーブルのデータ構造の一例を示す図である。図７に示すように、入力データテーブル１４１は、データ識別番号と、入力データとを対応付ける。データ識別番号は、入力データを一意に識別する情報である。入力データは、ユーザが手書き入力した文字の画像データである。たとえば、入力データテーブル１４１に格納される入力データは、図１、図２で示した入力データ１０Ａ、１０Ｂ等に対応する。
【００４８】
ラベルテーブル１４２は、入力データテーブル１４１に格納された各入力データのラベル（正解ラベル）を保持するテーブルである。図８は、本実施例１に係るラベルテーブルのデータ構造の一例を示す図である。図８に示すように、ラベルテーブル１４２は、ラベル識別番号と、ラベルとを対応付ける。ラベル識別番号は、ラベルを一意に識別する情報である。ラベルは、図１、図２で示したラベル１１Ａ、１１Ｂ等に対応する。
【００４９】
対応テーブル１４３は、入力データと、ラベルとの対応関係を定義するテーブルである。図９は、本実施例１に係る対応テーブルのデータ構造の一例を示す図である。図９に示すように、この対応テーブル１４３は、データ識別番号と、ラベル識別番号とを対応付ける。たとえば、図９の行目では、データ識別番号「Ｄ００１」と、ラベル識別番号「Ｌ００１」とが対応付けられている。このため、入力データテーブル１４１のデータ識別番号「Ｄ００１」の入力データに対応する正解ラベルが、ラベルテーブル１４２のラベル識別番号「Ｌ００１」のラベルであることが示される。
【００５０】
潜在変数テーブル１４４は、エンコーダ１０１によって算出される各ユーザの潜在変数を保持するテーブルである。図１０は、本実施例１に係る潜在変数ＤＢのデータ構造の一例を示す図である。図１０に示すように、潜在変数テーブル１４４は、ユーザ識別番号と、潜在変数とを対応付ける。ユーザ識別番号は、ユーザを一意に識別する情報である。潜在変数は、ユーザ識別番号に識別されるユーザのくせを表す数値である。たとえば、ユーザ識別番号「Ｕ１０１」に識別されるユーザの潜在変数は「Ｐ１＝０．７、Ｐ２＝０．５」である。
【００５１】
パラメータテーブル１４５は、エンコーダ１０１およびデコーダ１０２のパラメータを保持するテーブルである。たとえば、エンコーダ１０１のパラメータは、入力層１０１ａ、隠れ層１０１ｂ、出力層１０１ｃの各ノードを結ぶエッジの重み、各ノードの活性化関数に設定されるバイアス値に対応する。
【００５２】
たとえば、デコーダ１０２のパラメータは、入力層１０２ａ、隠れ層１０２ｂ、出力層１０２ｃの各ノードを結ぶエッジの重み、各ノードの活性化関数に設定されるバイアス値に対応する。
【００５３】
図６の説明に戻る。制御部１５０は、受付部１５１、対応付け部１５２、エンコーダ実行部１５３、デコーダ実行部１５４、学習部１５５、通知部１５６を有する。制御部１５０は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などによって実現できる。また、制御部１５０は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などのハードワイヤードロジックによっても実現できる。
【００５４】
受付部１５１は、外部装置（図示略）または入力部１２０等から、入力データテーブル１４１の情報、ラベルテーブル１４２の情報を受け付ける処理部である。受付部１５１は、入力データテーブル１４１の情報を受け付けると、受け付けた情報を、入力データテーブル１４１に格納する。また、受付部１５１は、ラベルテーブル１４２の情報を受け付けると、受け付けた情報を、ラベルテーブル１４２に格納する。
【００５５】
対応付け部１５２は、入力データテーブル１４１の各入力データと、ラベルテーブル１４２の各ラベルとを対応付けることで、対応テーブル１４３を生成する処理部である。たとえば、対応付け部１５２は、入力データテーブル１４１に格納された各入力データと、ラベルテーブル１４２に格納された各ラベルとを、表示部１３０に出力して表示させる。管理者は、表示部１３０に表示された各入力データと、各ラベルとを参照し、入力部１２０を操作して、対応関係にある、入力データとラベルとの組を指定する。対応付け部１５２は、入力部１２０を介して入力データとラベルとの組の指定を受け付けると、指定された組に対応するデータ識別番号とラベル識別番号とを対応付けて、対応テーブル１４３に登録する。
【００５６】
対応付け部１５２は、上記以外の処理によって、対応テーブル１４３を生成してもよい。また、対応付け部１５２は、対応テーブル１４３の情報を、外部装置（図示略）または入力部１２０等から受付、受け付けた対応テーブル１４３の情報を、対応テーブル１４３に格納してもよい。
【００５７】
エンコーダ実行部１５３は、図１、２等に示したエンコーダ１０１を実行する処理部である。たとえば、エンコーダ実行部１５３は、入力層１０１ａ、隠れ層１０１ｂ、出力層１０１ｃを生成し、各層１０１ａ〜１０１ｃに含まれる複数のノードをエッジで接続する。エンコーダ実行部１５３は、学習フェーズの開始時において、エンコーダ１０１のパラメータを初期値に設定する。エンコーダ１０１のパラメータの初期値は、パラメータテーブル１４５に格納されている。
【００５８】
エンコーダ実行部１５３は、学習部１５５から、入力データとラベルとの組を取得すると、入力データおよびラベルを、エンコーダ１０１の入力層１０１ａの各ノードに入力する。たとえば、エンコーダ実行部１５３は、入力データを複数の部分領域に分割し、部分領域毎に特徴量を抽出し、部分領域毎の特徴量を、入力層１０１ａの各ノードに入力する。
【００５９】
エンコーダ実行部１５３は、ラベルに対応する情報を、入力層１０１ａのノードに入力する。たとえば、ラベルが、入力データの手書き文字が「う」であることを示す情報である場合、エンコーダ実行部１５３は、「う」に対応する次元の要素が「１」となり、他の文字に対応する次元の要素が「０」となる情報を、入力層１０１ａのノードに入力する。
【００６０】
エンコーダ実行部１５３は、入力データおよびラベルを、エンコーダ１０１の入力層１０１ａの各ノードに入力し、エンコーダ１０１の出力層１０１ｃから出力される潜在変数を算出する。エンコーダ実行部１５３は、算出した潜在変数と、この潜在変数を算出する場合に入力層１０１ａに入力した入力データとの組を、デコーダ実行部１５４に出力する。
【００６１】
デコーダ実行部１５４は、図１、２等に示したデコーダ１０２を実行する処理部である。たとえば、デコーダ実行部１５４は、入力層１０２ａ、隠れ層１０２ｂ、出力層１０２ｃを生成し、各層１０２ａ〜１０２ｃに含まれる複数のノードをエッジで接続する。デコーダ実行部１５４は、学習フェーズの開始時において、デコーダ１０２のパラメータを初期値に設定する。デコーダ１０２のパラメータの初期値は、パラメータテーブル１４５に格納されている。
【００６２】
デコーダ実行部１５４は、エンコーダ実行部１５３から、入力データと潜在変数との組を取得すると、入力データを、デコーダ１０２の入力層１０１ａの各ノードに入力し、潜在変数を、隠れ層１０２ｂの各ノードに入力する。たとえば、デコーダ実行部１５４は、入力データを複数の部分領域に分割し、部分領域毎に特徴量を抽出し、部分領域毎の特徴量を、入力層１０２ａの各ノードに入力する。
【００６３】
デコーダ実行部１５４は、潜在変数を隠れ層１０２ｂの各ノードに入力する場合には、潜在変数の各次元に対応する数値を、各ノードに入力する。たとえば、潜在変数の次元数が２次元であり、「Ｐ１＝０．７、Ｐ２＝０．５」であるとする。この場合には、デコーダ実行部１５４は「Ｐ１＝０．７」を、隠れ層１０２ｂの一つのノードに入力し、「Ｐ２＝０．５」を、隠れ層１０２ｂの他の一つのノードに入力する。
【００６４】
デコーダ実行部１５４は、入力データを入力層１０２ａの各ノードに入力し、隠れ層１０２ｂに潜在変数を入力し、デコーダ１０２の出力層１０２ｃから出力される判定ラベルを算出する。ここで、デコーダ１０２の出力層１０２ｃの各ノードは、各文字が割り当てられる。たとえば、出力層１０２ｃの各ノードは「あ」、「い」、「う」、・・・・、「ア」、「イ」、「ウ」、・・・「ラ」、「リ」、・・・等の文字が割り当てられる。出力層１０２ｃの各ノードから出力される数値は、ノードに割り当てられた文字の確率を示す。
【００６５】
たとえば、図１において、入力データ１０Ａと、潜在変数１５Ａを、デコーダ１０２に入力し、出力層１０２ｃの「う」に対応するノードから出力される数値が「９０」である場合には、入力データ１０Ａの手書き文字が、「う」となる確率が「９０％」であることを示す。ここでは、各ノードから出力される数値が確率である場合について説明したが、管理者が適宜変更してもよい。
【００６６】
デコーダ実行部１５４は、出力層１０２ｃから出力される判定ラベルの情報を、学習部１５５に出力する。たとえば、判定ラベルの情報は、デコーダ１０２の出力層１０２ｃの各ノードから出力される確率の値に対応する。
【００６７】
学習部１５５は、図１、図２等で説明したように、エンコーダ１０１に入力したラベルと、デコーダ１０２から出力される判定ラベルとを一致させるように、エンコーダ１０１およびデコーダ１０２のパラメータを学習する処理部である。学習部１５５は、学習したパラメータの情報をパラメータテーブル１４５に格納する。
【００６８】
以下において、学習部１５５の処理の一例について説明する。学習部１５５は、対応テーブル１４３を参照して、データ識別番号とラベル識別番号との関係から、入力データと、入力データに対応するラベルとの組を特定する。学習部１５５は、特定した入力データを入力データテーブル１４１から取得し、特定したラベルをラベルテーブル１４２から取得する。学習部１５５は、入力データとラベルとの組を、エンコーダ実行部１５３に出力することで、エンコーダ実行部１５３に潜在変数を算出させる。また、エンコーダ実行部１５３から入力データと潜在変数との組が、デコーダ実行部１５４に出力され、デコーダ実行部１５４によって、判定ラベルの情報が算出される。
【００６９】
学習部１５５は、エンコーダ実行部１５３に出力したラベルの情報と、デコーダ実行部１５４から出力される判定ラベルの情報とが一致するように、エンコーダ１０１およびデコーダ１０２のパラメータを学習する。学習部１５５は、学習したパラメータによって、パラメータテーブル１４５を更新する。
【００７０】
学習部１５５は、デコーダ１０２の出力層１０２ｃから出力される判定ラベルの情報と、ラベルの情報との差分を示す評価関数の値が最小となるように、エンコーダ１０１およびデコーダ１０２のパラメータを更新する。ラベルの情報が「う」である場合には、判定ラベルの情報において、文字「う」の確率が「１００％」に近づくように、エンコーダ１０１およびデコーダ１０２のパラメータを更新する。
【００７１】
学習部１５５は、対応テーブル１４３を参照して、入力データと、入力データに対応するラベルとの組を取得し、上記処理を繰り返し実行することで、エンコーダ１０１およびデコーダ１０２のパラメータを学習し、パラメータテーブル１４５を更新する。
【００７２】
学習部１５５は、上記処理を行うことで、エンコーダ１０１およびデコーダ１０２のパラメータの学習が完了した後に、潜在変数テーブル１４４の情報を生成する処理を行ってもよい。
【００７３】
学習部１５５は、潜在変数の算出対象となるユーザの入力データと、ラベルとを入力データテーブル１４１、ラベルテーブル１４２から取得する。図示を省略するが、学習部１５５は、ユーザを識別するユーザ識別番号と、かかるユーザが手書きを行った入力データを識別するデータ識別番号とを対応付けたテーブルを参照して、ユーザと入力データとの関係を判定する。
【００７４】
学習部１５５は、取得した入力データと、ラベルとのエンコーダ実行部１５３に出力して、エンコーダ実行部１５３に潜在変数を算出させる。学習部１５５は、入力データに対応するユーザ識別番号と、算出させた潜在変数とを対応付けて、潜在変数テーブル１４４に格納する。
【００７５】
学習部１５５は、他のユーザについても、上記処理を実行することで、ユーザ識別番号と、潜在変数との関係を特定し、潜在変数テーブル１４４に格納する。
【００７６】
通知部１５６は、潜在変数テーブル１４４の情報およびパラメータテーブル１４５の情報を、認識装置２００に通知する処理部である。
【００７７】
図１１は、本実施例１に係る認識装置の構成を示す機能ブロック図である。図１１に示すように、この認識装置２００は、通信部２１０、入力部２２０、表示部２３０、記憶部２４０、制御部２５０を有する。
【００７８】
通信部２１０は、ネットワーク５０を介して、学習装置１００とデータ通信を実行する処理部である。通信部２１０は、通信装置の一例である。後述する制御部２５０は、通信部２１０を用いて、学習装置１００とデータをやり取りする。
【００７９】
入力部２２０は、認識装置２００に各種のデータを入力するための入力装置である。入力部２２０は、キーボードやマウス、タッチパネル等に対応する。また、入力部２２０は、手書き入力装置であってもよい。ユーザは専用ペンを用いて、手書き入力を行うと、手書き入力装置は、手書き入力の軌跡の入力データ（画像データ）を生成し、入力データを認識装置２００に出力する。
【００８０】
ユーザは、入力部２２０を操作して、入力データを認識装置２００に入力して、認識処理を実行させる場合には、ユーザ識別番号を、入力する。
【００８１】
表示部２３０は、制御部２５０から出力されるイベントの情報、映像データを表示する装置である。表示部２３０は、液晶ディスプレイやタッチパネル等に対応する。
【００８２】
記憶部２４０は、入力データ２４１、潜在変数テーブル２４２、潜在変数算出テーブル２４３、パラメータテーブル２４４を有する。記憶部２４０は、ＲＡＭ、ＲＯＭ、フラッシュメモリなどの半導体メモリ素子や、ＨＤＤなどの記憶装置に対応する。
【００８３】
入力データ２４１は、認識対象となる入力データである。本実施例１では一例として、入力データ２４１を、手書き文字の画像データとする。入力データ２４１は、図３に示した入力データ２０Ａ、図４に示した入力データ２０Ｂに対応する。入力データ２４１には、入力データの手書き文字を書いたユーザを識別するユーザ識別番号が対応付けられていてもよい。
【００８４】
潜在変数テーブル２４２は、ユーザ毎の潜在変数を保持するテーブルである。潜在変数テーブル２４２は、ユーザ識別番号と、潜在変数とを対応付ける。潜在変数テーブル２４２のデータ構造は、図１０に示した潜在変数テーブル１４４のデータ構造と同様である。
【００８５】
潜在変数算出テーブル２４３は、ユーザの潜在変数を導出する場合に利用するデータを保持するテーブルである。図１２は、本実施例１に係る潜在変数算出テーブルのデータ構造の一例を示す図である。図１２に示すように、この潜在変数算出テーブル２４３は、ユーザ識別番号、入力データ、ラベルを対応付ける。ユーザ識別番号は、ユーザを一意に識別する情報である。入力データは、ユーザ識別番号に対応するユーザが手書き入力した文字の画像データである。ラベルは、入力データの正解ラベルである。
【００８６】
パラメータテーブル２４４は、エンコーダ１０１およびデコーダ１０２の学習済みのパラメータを保持するテーブルである。
【００８７】
図１１の説明に戻る。制御部２５０は、受付部２５１、潜在変数特定部２５２、エンコーダ実行部２５３、デコーダ実行部２５４、認識部２５５、通知部２５６を有する。制御部２５０は、ＣＰＵやＭＰＵなどによって実現できる。また、制御部２５０は、ＡＳＩＣやＦＰＧＡなどのハードワイヤードロジックによっても実現できる。
【００８８】
受付部２５１は、各種のデータを受け付ける処理部である。受付部２５１は、入力部２２０から認識対象となる入力データ２４１を受け付けると、入力データ２４１を記憶部２４０に格納する。受付部２５１は、入力部２２０から、ユーザ識別番号を受け付け、入力データ２４１に対応付ける。
【００８９】
受付部２５１は、学習装置１００から、潜在変数テーブル１４４の情報を受信した場合、潜在変数テーブル１４４の情報を、潜在変数テーブル２４２に格納する。受付部２５１は、学習装置１００から、学習済みのパラメータを受信した場合、学習済みのパラメータを、パラメータテーブル２４４に格納する。
【００９０】
潜在変数特定部２５２は、ユーザ識別番号に対応する潜在変数を特定する処理部である。潜在変数特定部２５２は、特定した潜在変数の情報を、認識部２５５に出力する。以下において、潜在変数特定部２５２の処理の一例について説明する。
【００９１】
潜在変数特定部２５２は、入力データ２４１に対応するユーザ識別番号に対応する潜在変数を、潜在変数テーブル２４２から検出する。潜在変数特定部２５２は、潜在変数テーブル２４２に、ユーザ識別番号に対応する潜在変数が存在する場合、検出した潜在変数を、認識部２５５に出力する。
【００９２】
一方、潜在変数特定部２５２は、ユーザ識別番号に対応する潜在変数が、潜在変数テーブル２４２に存在しない場合、次の処理を実行する。潜在変数特定部２５２は、ユーザ識別番号に対応する入力データおよびラベルを、潜在変数算出テーブル２４３から検出する。
【００９３】
潜在変数特定部２５２は、潜在変数算出テーブル２４３に、ユーザ識別番号に対応する入力データおよびラベルが存在する場合、入力データおよびラベルを、エンコーダ実行部２５３に出力し、エンコーダ１０１を実行させることで、潜在変数を算出させる。潜在変数特定部２５２は、上記処理を実行することで、ユーザ識別番号に対応する潜在変数を、エンコーダ実行部２５３から取得する。潜在変数特定部２５２は、ユーザ識別番号と、潜在変数とを対応付けて、潜在変数テーブル２４２に格納する。また、潜在変数特定部２５２は、ユーザ識別番号に対応する潜在変数を、認識部２５５に出力する。
【００９４】
一方、潜在変数特定部２５２は、ユーザ識別番号に対応する入力データおよびラベルが、潜在変数算出テーブル２４３に存在しない場合、次の処理を実行する。潜在変数特定部２５２は、潜在変数設定画面の情報を、表示部２３０に出力して表示させる。
【００９５】
図１３および図１４は、潜在変数特定部の処理を説明するための図である。図１３に示すように、この潜在変数設定画面３０は、領域３０ａ，３０ｂ，３０ｃを有する。領域３０ａは、ユーザが手書き文字を書く領域である。ユーザは、入力部２２０を操作して、領域３０ａに文字を書く。潜在変数特定部２５２は、領域３０ａの手書き文字の画像データを、入力データとして取得する。
【００９６】
領域３０ｂは、現在設定中の潜在変数を表示する領域である。潜在変数の初期値を（Ｐ１＝０．０、Ｐ２＝０．０）とする。まず、潜在変数特定部２５２は、領域３０ａの入力データと、潜在変数の初期値とを認識部２５５に出力することで、判定ラベルの情報を取得する。領域３０ｃは、判定ラベルの情報を表示する領域である。判定ラベルの情報には、領域３０ａに手書きされた文字の認識結果が含まれ、たとえば、文字毎の確率が表示させる。
【００９７】
ユーザは、図１３の領域３０ｃを参照し、入力部２２０を操作して、領域３０ｃの各文字から自身の意図した文字を選択する。潜在変数特定部２５２は、選択された文字が、領域３０ｃの中で確率が最大の文字である場合には、現在の潜在変数（初期値）と、ユーザ識別番号とを対応付けて、潜在変数テーブル２４２に格納する。たとえば、潜在変数特定部２５２は、領域３０ｃの各文字うち、文字「う」が選択された場合には、ユーザのユーザ識別番号と、潜在変数（Ｐ１＝０．０、Ｐ２＝０．０）とを対応付けて、潜在変数テーブル２４２に格納する。
【００９８】
一方、潜在変数特定部２５２は、選択された文字が、領域３０ｃの中で確率が最大の文字以外である場合には次の処理を行う。潜在変数特定部２５２は、選択された文字を正解とするラベルと、領域３０ａの手書き文字に対応する入力データとの組を、エンコーダ実行部２５３に出力して、エンコーダ１０１を実行させることで、潜在変数を算出させる。たとえば、領域３０ｃの各文字のうち、文字「ラ」が選択された場合には、「ラ」を正解とするラベルと、領域３０ａの入力データとを、エンコーダ実行部２５３に出力して、エンコーダ１０１を実行させることで、潜在変数を算出させる。
【００９９】
図１４の説明に移行する。潜在変数特定部２５２は、エンコーダ実行部２５３から取得した潜在変数を、領域３０ｂに表示する。図１４に示す例では、潜在変数が（Ｐ１＝０．０３８、Ｐ２＝０．７５６）となっている。潜在変数特定部２５２は、エンコーダ実行部２５３に算出された潜在変数と、領域３０ａの入力データとを認識部２５５に出力することで、判定ラベルの情報を取得する。潜在変数特定部２５２は、認識部２５５から新たに取得した判定ラベルの情報によって、領域３０ｃを更新する。
【０１００】
ユーザは、図１４の領域３０ｃを参照し、入力部２２０を操作して、領域３０ｃの各文字から自身の意図した文字を選択する。潜在変数特定部２５２は、選択された文字が、領域３０ｃの中で確率が最大の文字である場合には、現在の潜在変数と、ユーザ識別番号とを対応付けて、潜在変数テーブル２４２に格納する。一方、潜在変数特定部２５２は、選択された文字が、領域３０ｃの中で確率が最大の文字以外である場合には、上記処理を繰り返し実行する。
【０１０１】
潜在変数特定部２５２は、上記処理を実行することで、ユーザ識別番号に対応するユーザの癖をより適切に示す潜在変数を特定する。
【０１０２】
図１１の説明に戻る。エンコーダ実行部２５３は、図１、２等に示したエンコーダ１０１を実行する処理部である。たとえば、エンコーダ実行部２５３は、入力層１０１ａ、隠れ層１０１ｂ、出力層１０１ｃを生成し、各層１０１ａ〜１０１ｃに含まれる複数のノードをエッジで接続する。エンコーダ実行部２５３は、パラメータテーブル２４４に格納された学習済みのパラメータを、エンコーダ１０１に設定する。
【０１０３】
エンコーダ実行部２５３は、潜在変数特定部２５２から、入力データおよびラベルを取得した場合、入力データおよびラベルを、エンコーダ１０１の入力層１０１ａの各ノードに入力することで、潜在変数を算出する。エンコーダ実行部２５３は、算出した潜在変数を、潜在変数特定部２５２に出力する。
【０１０４】
デコーダ実行部２５４は、図１、２等にしましたデコーダ１０２を実行する処理部である。たとえば、デコーダ実行部２５４は、入力層１０２ａ、隠れ層１０２ｂ、出力層１０２ｃを生成し、各層１０２ａ〜１０２ｃに含まれる複数のノードをエッジで接続する。デコーダ実行部２５４は、パラメータテーブル２４４に格納された学習済みのパラメータを、デコーダ１０２に設定する。
【０１０５】
デコーダ実行部２５４は、認識部２５５から、入力データと潜在変数との組を取得すると、入力データを、デコーダ１０２の入力層１０１ａの各ノードに入力し、潜在変数を、隠れ層１０２ｂの各ノードに入力する。そうすることで、デコーダ実行部２５４は、デコーダ１０２の出力層１０２ｃから出力される判定ラベルを算出する。デコーダ実行部２５４は、判定ラベルの情報を、認識部２５５に出力する。
【０１０６】
認識部２５５は、潜在変数特定部２５２から、ユーザ識別番号に対応する潜在変数と、認証対象の入力データとを受け付けると、潜在変数と入力データとの組を、デコーダ実行部２５４に出力することで、判定ラベルの情報をえる。認識部２５５は、判定ラベルの情報を、通知部２５６に出力する。
【０１０７】
一方、認識部２５５は、潜在変数特定部２５２から、図１３および図１４で説明した処理に関して、領域３０ｂに対応する潜在変数と、領域３０ａに対応する入力データを受け付けると、潜在変数と入力データとの組を、デコーダ実行部２５４に出力することで、判定ラベルの情報をえる。認識部２５５は、判定ラベルの情報を、潜在変数特定部２５２に出力する。
【０１０８】
通知部２５６は、認識部２５５から取得した判定ラベルの情報を通知する処理部である。通知部２５６は、判定ラベルの情報を、表示部２３０に出力して表示させてもよいし、ネットワーク５０を介して接続された外部装置（図示略）に、判定ラベルの情報を通知してもよい。
【０１０９】
次に、本実施例１に係る学習装置１００の処理手順の一例について説明する。図１５は、本実施例１に係る学習装置の処理手順を示すフローチャートである。図１５に示すように、学習装置１００の受付部１５１は、入力データを受け付け、入力データテーブル１４１に格納する（ステップＳ１０１）。受付部１５１は、入力データを受け付け、ラベルテーブル１４２に格納する（ステップＳ１０２）。
【０１１０】
学習装置１００の対応付け部１５２は、入力データとラベルとを対応付けた情報を、対応テーブル１４３に格納する（ステップＳ１０３）。学習装置１００のエンコーダ実行部１５３は、入力データと、入力データに対応するラベルとをエンコーダ１０１に入力し、潜在変数を算出する（ステップＳ１０４）。
【０１１１】
学習装置１００のデコーダ実行部１５４は、入力データと、潜在変数とをデコーダ１０２に入力し、判定ラベルを算出する（ステップＳ１０５）。学習装置１００の学習部１５５は、ラベル（正解ラベル）と、判定ラベルとを比較し、ラベルと判定ラベルとが一致するように、エンコーダ１０１およびデコーダ１０２のパラメータを更新する（ステップＳ１０６）。
【０１１２】
学習装置１００は、学習を継続する場合には（ステップＳ１０７，Ｙｅｓ）、ステップＳ１０４に移行する。一方、学習装置１００は、学習を継続しない場合には（ステップＳ１０７，Ｎｏ）、ステップＳ１０８に移行する。
【０１１３】
学習装置１００の通知部１５６は、潜在変数テーブル１４４の情報およびパラメータテーブル１４５の情報を、認識装置２００に通知する（ステップＳ１０８）。
【０１１４】
次に、本実施例１に係る認識装置２００の処理手順の一例について説明する。図１６は、本実施例１に係る認識装置の処理手順を示すフローチャートである。図１６に示すように、認識装置２００の受付部２５１は、入力データを受け付け、記憶部２４０に格納する（ステップＳ２０１）。
【０１１５】
認識装置２００の潜在変数特定部２５２は、ユーザ識別番号に対応する潜在変数が潜在変数テーブル２４２に存在するか否かを判定する（ステップＳ２０２）。潜在変数特定部２５２は、ユーザ識別番号に対応する潜在変数が潜在変数テーブル２４２に存在する場合には（ステップＳ２０２，Ｙｅｓ）、ステップＳ２１０に移行する。
【０１１６】
一方、潜在変数特定部２５２は、ユーザ識別番号に対応する潜在変数が潜在変数テーブル２４２に存在しない場合には（ステップＳ２０２，Ｎｏ）、ステップＳ２０３に移行する。
【０１１７】
潜在変数特定部２５２は、ユーザ識別番号に対応する入力データおよびラベルの組が潜在変数算出テーブル２４３に存在するか否かを判定する（ステップＳ２０３）。潜在変数特定部２５２は、ユーザ識別番号に対応する入力データおよびラベルの組が潜在変数算出テーブル２４３に存在する場合には（ステップＳ２０３，Ｙｅｓ）、ステップＳ２０４に移行する。
【０１１８】
潜在変数特定部２５２は、入力データおよびラベルをエンコーダ実行部２５３に出力して、エンコーダ１０１を実行させることで、潜在変数を算出し（ステップＳ２０４）、ステップＳ２０９に移行する。
【０１１９】
一方、潜在変数特定部２５２は、ユーザ識別番号に対応する入力データおよびラベルの組が潜在変数算出テーブル２４３に存在しない場合には（ステップＳ２０３，Ｎｏ）、ステップＳ２０５に移行する。
【０１２０】
潜在変数特定部２５２は、入力データと潜在変数の初期値とデコーダ実行部２５４に出力してデコーダ１０２を実行させ、判定ラベルの情報を取得する（ステップＳ２０５）。潜在変数特定部２５２は、潜在変数設定画面３０に、判定ラベルの情報を表示する（ステップＳ２０６）。
【０１２１】
潜在変数特定部２５２は、判定ラベルの情報に含まれる各文字のうち、確率が最大となる文字（ラベル）が選択された場合には（ステップＳ２０７，Ｙｅｓ）、ステップＳ２０９に移行する。
【０１２２】
一方、潜在変数特定部２５２は、判定ラベルの情報に含まれる各文字のうち、確率が最大となる文字（ラベル）が選択されていない場合には（ステップＳ２０７，Ｎｏ）、選択されたラベルと入力データとをデコーダ実行部２５４に出力してデコードを実行させ、判定ラベルの情報を取得し（ステップＳ２０８）、ステップＳ２０６に移行する。
【０１２３】
潜在変数特定部２５２は、潜在変数を潜在変数テーブルに格納する（ステップＳ２０９）。認識装置２００の認識部２５５は、潜在変数と入力データとをデコーダ実行部２５４に入力してデコーダ１０２を実行させ、判定ラベルの情報を取得する（ステップＳ２１０）。認識装置２００の通知部２５６は、判定ラベルの情報を外部装置に通知する（ステップＳ２１１）。
【０１２４】
次に、本実施例１に係る学習装置１００の効果について説明する。学習装置１００は、入力データとこの入力データに対応するラベルとをエンコーダ１０１に入力して、潜在変数を算出する。学習装置１００は、算出した潜在変数と、入力データとをデコーダ１０２に入力した場合の判定ラベルが、ラベル（正解ラベル）と一致するように、エンコーダ１０１およびデコーダ１０２のパラメータを学習する。このため、学習装置１００によれば、入力データが複数のコンテクストを持つ場合であっても、複数のコンテクストに対応した潜在変数を用いることで、適切な学習を行うことができる。
【０１２５】
ところで、図１３および図１４で説明した、潜在変数特定部２５２が実行する処理は、学習装置１００側で実行してもよい。すなわち、学習装置１００は、潜在変数特定部２５２と同様の機能を有していてもよい。
【０１２６】
また、本実施例１では一例として、学習装置１００と認識装置２００とが別々の装置に実装される場合について説明したが、これに限定されるものではない。たとえば、学習装置１００に、図１１で説明した認識装置２００の各機能を持たせ、一つの装置が、学習装置１００および認識装置２００の処理を実行してもよい。
【実施例２】
【０１２７】
次に、本実施例２に係る学習装置について説明する。図示を省略するが、本実施例２に係る学習装置は、実施例１で説明した認識装置２００にネットワーク５０を介して接続される。
【０１２８】
図１７は、本実施例２に係る学習装置の構成を示す機能ブロック図である。図１７に示すように、この学習装置３００は、通信部３１０、入力部３２０、表示部３３０、記憶部３４０、制御部３５０を有する。
【０１２９】
通信部３１０、入力部３２０、表示部３３０に関する説明は、図６で説明した、通信部１１０、入力部１２０、表示部１３０に関する説明と同様である。
【０１３０】
記憶部３４０は、学習データ３４０ａ、潜在変数テーブル３４４、パラメータテーブル３４５を有する。学習データ３４０ａには、入力データテーブル３４１、ラベルテーブル３４２、対応テーブル３４３が含まれる。記憶部３４０は、ＲＡＭ、ＲＯＭ、フラッシュメモリなどの半導体メモリ素子や、ＨＤＤなどの記憶装置に対応する。
【０１３１】
入力データテーブル３４１は、各種の入力データを保持するテーブルである。入力データテーブル３４１のデータ構造は、図７で説明した入力データテーブル１４１のデータ構造に関する説明と同様である。
【０１３２】
ラベルテーブル３４２は、入力データテーブル３４１に格納された各入力データのラベル（正解ラベル）を保持するテーブルである。ラベルテーブル３４２のデータ構造は、図８で説明したラベルテーブル１４２のデータ構造に関する説明と同様である。
【０１３３】
対応テーブル３４３は、入力データと、ラベルとの対応関係を定義するテーブルである。対応テーブル３４３のデータ構造は、図９で説明した対応テーブル１４３のデータ構造に関する説明と同様である。
【０１３４】
潜在変数テーブル３４４は、エンコーダ１０１によって算出される各ユーザの潜在変数を保持するテーブルである。本実施例２に係る潜在変数テーブル３４４のデータ構造は、図１０に示した潜在変数テーブル１４４のデータ構造に関する説明と同様である。ただし、潜在変数テーブル３４４に格納される潜在変数の次元は「ｎ次元」となる。ｎは、２以上の自然数である。潜在変数テーブル３４４の潜在変数の次元は、冗長な特徴が表れるまで、拡張される。
【０１３５】
パラメータテーブル３４５は、エンコーダ１０１およびデコーダ１０２のパラメータを保持するテーブルである。たとえば、エンコーダ１０１のパラメータは、入力層１０１ａ、隠れ層１０１ｂ、出力層１０１ｃの各ノードを結ぶエッジの重み、各ノードの活性化関数に設定されるバイアス値に対応する。
【０１３６】
たとえば、デコーダ１０２のパラメータは、入力層１０２ａ、隠れ層１０２ｂ、出力層１０２ｃの各ノードを結ぶエッジの重み、各ノードの活性化関数に設定されるバイアス値に対応する。
【０１３７】
制御部３５０は、受付部３５１、対応付け部３５２、エンコーダ実行部３５３、デコーダ実行部３５４、学習部３５５、通知部３５６を有する。制御部３５０は、ＣＰＵやＭＰＵなどによって実現できる。また、制御部３５０は、ＡＳＩＣやＦＰＧＡなどのハードワイヤードロジックによっても実現できる。
【０１３８】
受付部３５１は、外部装置（図示略）または入力部３２０等から、入力データテーブル３４１の情報、ラベルテーブル３４２の情報を受け付ける処理部である。受付部３５１は、入力データテーブル３４１の情報を受け付けると、受け付けた情報を、入力データテーブル３４１に格納する。また、受付部３５１は、ラベルテーブル３４２の情報を受け付けると、受け付けた情報を、ラベルテーブル３４２に格納する。
【０１３９】
対応付け部３５２は、入力データテーブル３４１の各入力データと、ラベルテーブル３４２の各ラベルとを対応付けることで、対応テーブル３４３を生成する処理部である。対応付け部３５２に関する他の説明は、実施例１で説明した対応付け部１５２に関する説明と同様である。
【０１４０】
エンコーダ実行部３５３は、図１、２等に示したエンコーダ１０１を実行する処理部である。たとえば、エンコーダ実行部３５３は、入力層１０１ａ、隠れ層１０１ｂ、出力層１０１ｃを生成し、各層１０１ａ〜１０１ｃに含まれる複数のノードをエッジで接続する。エンコーダ実行部３５３は、実施例１で説明したエンコーダ実行部１５３と同様にして、学習フェーズの処理を実行する。
【０１４１】
ここで、エンコーダ実行部３５３は、エンコーダ１０１を実行する場合に、出力層１０１ｃのノードを２個とし、２次元の潜在変数を算出する。エンコーダ実行部３５３は、潜在変数の次元を増加される制御信号を受け付けると、出力層１０１ｃのノードの数を１つ増加させ（潜在変数の次元を拡張し）、エンコーダ１０１の各層のエッジを接続しなおし、再度、学習フェーズの処理を実行した上で、潜在変数を算出する。エンコーダ実行部３５３は、制御信号を受け付ける度に、上記処理を繰り返し実行する。
【０１４２】
デコーダ実行部３５４は、図１、２等に示したデコーダ１０２を実行する処理部である。たとえば、デコーダ実行部３５４は、入力層１０２ａ、隠れ層１０２ｂ、出力層１０２ｃを生成し、各層１０２ａ〜１０２ｃに含まれる複数のノードをエッジで接続する。デコーダ実行部３５４は、実施例１で説明したデコーダ実行部１５４と同様にして、学習フェーズの処理を実行する。
【０１４３】
なお、デコーダ実行部３５４は、エンコーダ実行部３５３により、潜在変数の次元が拡張された場合には、潜在変数の入力先の隠れ層１０２ｂのノードの数を増やし、デコーダ１０２の各層のエッジを接続しなおし、再度、学習フェーズの処理を実行する。
【０１４４】
学習部３５５は、図１、図２等で説明したように、エンコーダ１０１に入力したラベルと、デコーダ１０２から出力される判定ラベルとを一致させるように、エンコーダ１０１およびデコーダ１０２のパラメータを学習する処理部である。学習部３５５は、学習したパラメータの情報をパラメータテーブル３４５に格納する。学習フェーズにおける学習部３５５の処理は、実施例１で説明した学習部１５５の処理と同様である。
【０１４５】
ここで、学習部３５５は、学習フェーズが終了した段階で、エンコーダ１０１に算出された潜在変数の情報を、表示部または外部装置（図示略）に通知して、潜在変数の次元を増加するか否かの問合せを行う。学習部３５５は、入力部１２０または外部装置から、潜在変数の次元を増加する旨の情報を受け付けた場合には、制御信号を、エンコーダ実行部３５３に出力して、次元を増加させた潜在変数を再度算出させる。なお、学習部３５５は、潜在変数の次元を増加するか否かの問合せを行う代わりに、所定の判定ポリシーに従って、現在の潜在変数の次元を増加するか否かを判定し、次元を増加すると判定した場合に、制御信号を、エンコーダ実行部３５３に出力してもよい。
【０１４６】
更に、学習部３５５は、一つのユーザ識別番号に対応する入力データとラベルとの組が複数存在する場合には、次の処理を実行して、ユーザ識別番号に対応する潜在変数を算出してもよい。
【０１４７】
図１８は、本実施例２に係る学習部の処理を説明するための図である。たとえば、ユーザ識別番号「Ｕ１０１」に対応する入力データとラベルとの組４０ａ〜４５ａ存在するものとする。図示を省略するが、組４０ａ〜４５ａ以外の入力データとラベルとの組が存在していてもよい。学習部３５５は、各組４０ａ〜４５ａをそれぞれエンコーダ実行部３５３に出力し、各組に対応する各潜在変数５１ａをそれぞれ算出する。学習部３５５は、各潜在変数５１ａの平均値５２ａを、ユーザ識別番号「Ｕ１０１」に対応する潜在変数として算出し、潜在変数テーブル３４４に格納する。
【０１４８】
たとえば、ユーザ識別番号「Ｕ１０２」に対応する入力データとラベルとの組４０ｂ〜４３ｂ存在するものとする。図示を省略するが、組４０ｂ〜４３ｂ以外の入力データとラベルとの組が存在していてもよい。学習部３５５は、各組４０ｂ〜４３ｂをそれぞれエンコーダ実行部３５３に出力し、各組に対応する各潜在変数５１ｂをそれぞれ算出する。学習部３５５は、各潜在変数５１ｂの平均値５２ｂを、ユーザ識別番号「Ｕ１０２」に対応する潜在変数として算出し、潜在変数テーブル３４４に格納する。
【０１４９】
通知部３５６は、潜在変数テーブル３４４の情報およびパラメータテーブル３４５の情報を、認識装置２００に通知する処理部である。
【０１５０】
次に、本実施例２に係る学習装置３００の処理手順の一例について説明する。図１９は、本実施例２に係る学習装置の処理手順を示すフローチャートである。図１９に示すように、学習装置３００の受付部３５１は、入力データを受け付け、入力データテーブル３４１に格納する（ステップＳ３０１）。受付部３５１は、入力データを受け付け、ラベルテーブル３４２に格納する（ステップＳ３０２）。
【０１５１】
学習装置３００の対応付け部３５２は、入力データとラベルとを対応付けた情報を、対応テーブル３４３に格納する（ステップＳ３０３）。学習装置３００のエンコーダ実行部３５３は、入力データと、入力データに対応するラベルとをエンコーダ１０１に入力し、潜在変数を算出する（ステップＳ３０４）。
【０１５２】
学習装置３００のデコーダ実行部３５４は、入力データと、潜在変数とをデコーダ１０２に入力し、判定ラベルを算出する（ステップＳ３０５）。学習装置３００の学習部３５５は、ラベル（正解ラベル）と、判定ラベルとを比較し、ラベルと判定ラベルとが一致するように、エンコーダ１０１およびデコーダ１０２のパラメータを更新する（ステップＳ３０６）。
【０１５３】
学習装置３００は、学習を継続する場合には（ステップＳ３０７，Ｙｅｓ）、ステップＳ３０４に移行する。一方、学習装置３００は、学習を継続しない場合には（ステップＳ３０７，Ｎｏ）、ステップＳ３０８に移行する。
【０１５４】
学習部３５５は、潜在変数の次元数を増加させるか否かを判定する（ステップＳ３０８）。学習部３５５は、潜在変数の次元数を増加させる場合には（ステップＳ３０８，Ｙｅｓ）、ステップＳ３０９に移行する。エンコーダ実行部３５３は、エンコーダ１０１の出力層１０１ｃにノードを追加し、再構成する（ステップＳ３０９）。デコーダ実行部１５４は、デコーダ１０２の隠れ層１０２ｂにノードを追加し、再構成する（ステップＳ３１０）。その後、学習装置３００は、ステップＳ３０４に移行する。
【０１５５】
一方、学習部３５５は、潜在変数の次元を増加させない場合には（ステップＳ３０８，Ｎｏ）、ユーザ識別番号に対応する各潜在変数の平均値を算出し、潜在変数テーブル３４４に格納する（ステップＳ３１１）。学習装置３００の通知部３５６は、潜在変数テーブル３４４の情報およびパラメータテーブル３４５の情報を、認識装置２００に通知する（ステップＳ３１２）。
【０１５６】
次に、本実施例２に係る学習装置３００の効果について説明する。学習装置３００のエンコーダ実行部３５３は、学習部３５５から制御命令を受け付けた場合に、エンコーダ１０１の出力層１０１ｃにノードを追加し、潜在変数の次元を増加させる処理を実行する。これによって、ユーザの癖を示す潜在変数をより細かく設定することができ、かかる潜在変数を用いた認証処理の精度を向上させることができる。
【０１５７】
また、学習装置３００の学習部３５５は、一つのユーザ識別番号に対応する入力データとラベルとの組が複数存在する場合には、入力データおよびラベルとの各組をエンコーダ１０１に入力することで得られる潜在変数をそれぞれ算出する。学習部３５５は、一つのユーザ識別番号に対応する複数の潜在変数の平均値を、ユーザ識別番号の潜在変数として、潜在変数テーブル３４４に格納する。かかる処理を実行することで、ユーザの癖を示す潜在変数をより精度よく設定することができる。
【０１５８】
本実施例２では一例として、学習装置３００と認識装置２００とが別々の装置に実装される場合について説明したが、これに限定されるものではない。たとえば、学習装置３００に、図１１で説明した認識装置２００の各機能を持たせ、一つの装置が、学習装置３００および認識装置２００の処理を実行してもよい。
【０１５９】
なお、本実施例１、２で説明した学習装置１００、３００は、手書き文字の入力データ、ラベルの組を用いて学習を行う場合について説明したがこれに限定されるものでは無い。たとえば、複数のコンテクストを含む質問（入力データ）と回答（ラベル）との組を用いて、学習を行ってもよい。
【０１６０】
次に、実施例に示した学習装置１００（３００）、認識装置２００と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。図２０は、本実施例に係る学習装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【０１６１】
図２０に示すように、コンピュータ５００は、各種演算処理を実行するＣＰＵ５０１と、ユーザからのデータの入力を受け付ける入力装置５０２と、ディスプレイ５０３とを有する。また、コンピュータ５００は、記憶媒体からプログラム等を読み取る読み取り装置５０４と、有線または無線ネットワークを介して、外部装置、認識装置２００等との間でデータの授受を行うインタフェース装置５０５とを有する。コンピュータ５００は、各種情報を一時記憶するＲＡＭ５０６と、ハードディスク装置５０７とを有する。そして、各装置５０１〜５０７は、バス５０８に接続される。
【０１６２】
ハードディスク装置５０７は、受付プログラム５０７ａ、対応付けプログラム５０７ｂ、エンコーダ実行プログラム５０７ｃ、デコーダ実行プログラム５０７ｄ、学習プログラム５０７ｅ、通知プログラム５０７ｅを有する。ＣＰＵ５０１は、受付プログラム５０７ａ、対応付けプログラム５０７ｂ、エンコーダ実行プログラム５０７ｃ、デコーダ実行プログラム５０７ｄ、学習プログラム５０７ｅ、通知プログラム５０７ｅを読み出してＲＡＭ５０６に展開する。
【０１６３】
受付プログラム５０７ａは、受付プロセス５０６ａとして機能する。対応付けプログラム５０７ｂは、対応付けプロセス５０６ｂとして機能する。エンコーダ実行プログラム５０７ｃは、エンコーダ実行プロセス５０６ｃとして機能する。デコーダ実行プログラム５０７ｄは、デコーダ実行プロセス５０６ｄとして機能する。学習プログラム５０７ｅは、学習プロセス５０６ｅとして機能する。通知プログラム５０７ｆは、通知プロセス５０６ｆとして機能する。
【０１６４】
受付プロセス５０６ａの処理は、受付部１５１，３５１の処理に対応する。対応付けプロセス５０６ｂの処理は、対応付け部１５２，３５２の処理に対応する。エンコーダ実行プロセス５０６ｃの処理は、エンコーダ実行部１５３，３５３の処理に対応する。デコーダ実行プロセス５０６ｄの処理は、デコーダ実行部１５４，３５４の処理に対応する。学習プロセス５０６ｅの処理は、学習部１５５，３５５の処理に対応する。通知プロセス５０６ｆの処理は、通知部１５６，３５６の処理に対応する。
【０１６５】
なお、各プログラム５０７ａ〜５０７ｆについては、必ずしも最初からハードディスク装置５０７に記憶させておかなくてもよい。例えば、コンピュータ５００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ５００が各プログラム５０７ａ〜５０７ｆを読み出して実行するようにしてもよい。
【０１６６】
図２１は、本実施例に係る認識装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【０１６７】
図２１に示すように、コンピュータ６００は、各種演算処理を実行するＣＰＵ６０１と、ユーザからのデータの入力を受け付ける入力装置６０２と、ディスプレイ６０３とを有する。また、コンピュータ６００は、記憶媒体からプログラム等を読み取る読み取り装置６０４と、有線または無線ネットワークを介して、外部装置等との間でデータの授受を行うインタフェース装置６０５とを有する。コンピュータ６００は、各種情報を一時記憶するＲＡＭ６０６と、ハードディスク装置６０７とを有する。そして、各装置６０１〜６０７は、バス６０８に接続される。
【０１６８】
ハードディスク装置６０７は、受付プログラム６０７ａ、潜在変数特定プログラム６０７ｂ、エンコーダ実行プログラム６０７ｃ、デコーダ実行プログラム６０７ｄ、認識プログラム６０７ｅ、通知プログラム６０７ｆを有する。ＣＰＵ６０１は、受付プログラム６０７ａ、潜在変数特定プログラム６０７ｂ、エンコーダ実行プログラム６０７ｃ、デコーダ実行プログラム６０７ｄ、認識プログラム６０７ｅ、通知プログラム６０７ｆを読み出してＲＡＭ６０６に展開する。
【０１６９】
受付プログラム６０７ａは、受付プロセス６０６ａとして機能する。潜在変数特定プログラム６０７ｂは、潜在変数特定プロセス６０６ｂとして機能する。エンコーダ実行プログラム６０７ｃは、エンコーダ実行プロセス６０６ｃとして機能する。デコーダ実行プログラム６０７ｄは、エンコーダ実行プロセス６０６ｄとして機能する。認識プログラム６０７ｅは、認識プロセス６０６ｅとして機能する。通知プログラム６０７ｆは、通知プロセス６０６ｆとして機能する。
【０１７０】
受付プロセス６０６ａの処理は、受付部２５１の処理に対応する。潜在変数特定プロセス６０６ｂの処理は、潜在変数特定部２５２の処理に対応する。エンコーダ実行プロセス６０６ｃの処理は、エンコーダ実行部２５３の処理に対応する。デコーダ実行プロセス６０６ｄの処理は、デコーダ実行部２５４の処理に対応する。認識プロセス６０６ｅの処理は、認識部２５５の処理に対応する。通知プロセス６０６ｆの処理は、通知部２５６の処理に対応する。
【０１７１】
なお、各プログラム６０７ａ〜６０７ｆについては、必ずしも最初からハードディスク装置６０７に記憶させておかなくてもよい。例えば、コンピュータ６００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ６００が各プログラム６０７ａ〜６０７ｆを読み出して実行するようにしてもよい。
【０１７２】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１７３】
（付記１）コンピュータに、
複数の入力データと、前記複数の入力データに対応するラベルとを入力し、多次元のコンテクスト変数を出力するエンコーダを実行し、
前記複数の入力データと、前記多次元のコンテクスト変数とを入力し、複数の判定ラベルを出力するデコーダを実行し、
前記複数の判定ラベルと、前記複数の判定ラベルに対応する複数のラベルとを一致させるように、前記エンコーダのパラメータおよび前記デコーダのパラメータを学習する
処理を実行させることを特徴とする学習プログラム。
【０１７４】
（付記２）前記エンコーダは、前記多次元のコンテクスト変数を出力するための複数のノードを含む出力層を有し、所定の制御命令を受け付けた場合に、前記出力層に含まれるノードの数を増加させることで、前記エンコーダから出力されるコンテクスト変数の次元の数を増加させる処理を更にコンピュータに実行させることを特徴とする付記１に記載の学習プログラム。
【０１７５】
（付記３）前記複数の入力データと前記ラベルとの組が複数存在する場合に、複数の入力データと、前記複数の入力データに対応するラベルとを前記エンコーダに入力して、前記多次元のコンテクスト変数を出力する処理を組毎に実行し、各組に対応する前記多次元のコンテクスト変数を基にして、前記多次元のコンテクスト変数の代表値を算出する処理を更にコンピュータに実行させることを特徴とする付記１または２に記載の学習プログラム。
【０１７６】
（付記４）前記算出する処理は、各組に対応する前記多次元のコンテクスト変数の平均値を、前記代表値として算出することを特徴とする付記３に記載の学習プログラム。
【０１７７】
（付記５）コンピュータが実行する学習方法であって、
複数の入力データと、前記複数の入力データに対応するラベルとを入力し、複数のコンテクスト変数を出力するエンコーダを実行し、
前記複数の入力データと、前記複数のコンテクスト変数とを入力し、複数の判定ラベルを出力するデコーダを実行し、
前記複数の判定ラベルと、前記複数の判定ラベルに対応する複数のラベルとを一致させるように、前記エンコーダのパラメータおよび前記デコーダのパラメータを学習する
処理を実行することを特徴とする学習方法。
【０１７８】
（付記６）前記エンコーダは、前記多次元のコンテクスト変数を出力するための複数のノードを含む出力層を有し、所定の制御命令を受け付けた場合に、前記出力層に含まれるノードの数を増加させることで、前記エンコーダから出力されるコンテクスト変数の次元の数を増加させる処理を更にコンピュータに実行させることを特徴とする付記５に記載の学習方法。
【０１７９】
（付記７）前記複数の入力データと前記ラベルとの組が複数存在する場合に、複数の入力データと、前記複数の入力データに対応するラベルとを前記エンコーダに入力して、前記多次元のコンテクスト変数を出力する処理を組毎に実行し、各組に対応する前記多次元のコンテクスト変数を基にして、前記多次元のコンテクスト変数の代表値を算出する処理を更に実行することを特徴とする付記５または６に記載の学習方法。
【０１８０】
（付記８）前記算出する処理は、各組に対応する前記多次元のコンテクスト変数の平均値を、前記代表値として算出することを特徴とする付記７に記載の学習方法。
【０１８１】
（付記９）複数の入力データと、前記複数の入力データに対応するラベルとを入力し、複数のコンテクスト変数を出力するエンコーダを実行するエンコーダ実行部と、
前記複数の入力データと、前記複数のコンテクスト変数とを入力し、複数の判定ラベルを出力するデコーダを実行するデコーダ実行部と、
前記複数の判定ラベルと、前記複数の判定ラベルに対応する複数のラベルとを一致させるように、前記エンコーダのパラメータおよび前記デコーダのパラメータを学習する学習部と
を有することを特徴とする学習装置。
【０１８２】
（付記１０）前記エンコーダは、前記多次元のコンテクスト変数を出力するための複数のノードを含む出力層を有し、前記エンコーダ実行部は、所定の制御命令を受け付けた場合に、前記出力層に含まれるノードの数を増加させることで、前記エンコーダから出力されるコンテクスト変数の次元の数を増加させる処理を更にコンピュータに実行させることを特徴とする付記９に記載の学習装置。
【０１８３】
（付記１１）前記エンコーダ実行部は、前記複数の入力データと前記ラベルとの組が複数存在する場合に、複数の入力データと、前記複数の入力データに対応するラベルとを前記エンコーダに入力して、前記多次元のコンテクスト変数を出力する処理を組毎に実行し、各組に対応する前記多次元のコンテクスト変数を基にして、前記多次元のコンテクスト変数の代表値を算出する処理を更に実行することを特徴とする付記９または１０に記載の学習装置。
【０１８４】
（付記１２）前記エンコーダ実行部は、各組に対応する前記多次元のコンテクスト変数の平均値を、前記代表値として算出することを特徴とする付記１１に記載の学習装置。
【符号の説明】
【０１８５】
１００    学習装置
１１０，２１０，３１０    通信部
１２０，２２０，３２０    入力部
１３０，２３０，３３０    表示部
１４０，２４０，３４０    記憶部
１４０ａ，３４０ａ  学習データ
１４１，３４１    入力データテーブル
１４２，３４２    ラベルテーブル
１４３，３４３    対応テーブル
１４４，２４２，３４４    潜在変数テーブル
１４５，２４４，３４５    パラメータテーブル
１５０，２５０，３５０    制御部
１５１，２５１，３５１    受付部
１５２，３５２    対応付け部
１５３，２５３，３５３    エンコーダ実行部
１５４，２５４，３５４    デコーダ実行部
１５５，３５５    学習部
１５６，２５６，３５６    通知部
２００    認識装置
２４１    入力データ
２４３    潜在変数算出テーブル
２５２    潜在変数特定部
２５５    認識部
【図１】
2020098501.tif 000003
【図２】
2020098501.tif 000004
【図３】
2020098501.tif 000005
【図４】
2020098501.tif 000006
【図５】
2020098501.tif 000007
【図６】
2020098501.tif 000008
【図７】
2020098501.tif 000009
【図８】
2020098501.tif 000010
【図９】
2020098501.tif 000011
【図１０】
2020098501.tif 000012
【図１１】
2020098501.tif 000013
【図１２】
2020098501.tif 000014
【図１３】
2020098501.tif 000015
【図１４】
2020098501.tif 000016
【図１５】
2020098501.tif 000017
【図１６】
2020098501.tif 000018
【図１７】
2020098501.tif 000019
【図１８】
2020098501.tif 000020
【図１９】
2020098501.tif 000021
【図２０】
2020098501.tif 000022
【図２１】
2020098501.tif 000023
【図２２】
2020098501.tif 000024