以下に、本願の開示する学習装置、学習方法および学習プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1は、本実施例1に係る学習装置の処理を説明するための図(1)である。本実施例1に係る学習装置では、時系列方向に分割した所定単位の下層のRNN20と、それらを時系列方向に集約する上層のRNN30とからなる階層型のリカレント型ネットワーク15を用いて学習を行う。
まず、階層型のリカレント型ネットワーク15に時系列データを入力した場合の処理の一例について説明する。RNN20は、RNN30に接続され、時系列データに含まれるデータ(たとえば、各単語x)が入力されると、RNN20のパラメータθ20に基づく計算を行って、隠れ状態ベクトルhを算出し、RNN20,30に出力する。RNN20は、次のデータが入力されると、前のデータで算出した隠れ状態ベクトルhと、次のデータと用いて、パラメータθ20に基づく計算を行い、隠れ状態ベクトルhを算出する処理を繰り返し実行する。
たとえば、本実施例1に係るRNN20を、時系列方向に4つ単位のRNNとする。時系列データには、データx(0)、x(1)、x(2)、x(3)、x(4)、・・・、x(n)が含まれているものとする。
RNN20-0は、データx(0)を取得すると、データx(0)とパラメータθ20とに基づく計算を行って、隠れ状態ベクトルh0を算出し、RNN30-0に出力する。RNN20-1は、データx(1)を取得すると、データx(1)と、隠れ状態ベクトルh0と、パラメータθ20とに基づく計算を行って、隠れ状態ベクトルh1を算出し、RNN30-0に出力する。
RNN20-2は、データx(2)を取得すると、データx(2)と、隠れ状態ベクトルh1と、パラメータθ20とに基づく計算を行って、隠れ状態ベクトルh2を算出し、RNN30-0に出力する。RNN20-3は、データx(3)を取得すると、データx(3)と、隠れ状態ベクトルh2と、パラメータθ20とに基づく計算を行って、隠れ状態ベクトルh3を算出し、RNN30-0に出力する。
RNN20-4~20-7は、RNN20-0~20-3と同様にして、データx(4)~x(7)を取得すると、前のデータで算出された隠れ状態ベクトルhと、取得したデータとを用いて、パラメータθ20に基づく計算を行い、隠れ状態ベクトルhを算出する。RNN20-4~20-7は、隠れ状態ベクトルh4~h7を、RNN30-1に出力する。
RNN20-n-3~20-nは、RNN20-0~20-3と同様にして、データx(n-3)~x(n)を取得すると、前のデータで算出された隠れ状態ベクトルhと、取得したデータとを用いて、パラメータθ20に基づく計算を行い、隠れ状態ベクトルhを算出する。RNN20-n-3~20-nは、隠れ状態ベクトルhn-3~hnを、RNN30-mに出力する。
RNN30は、RNN20から入力される複数の隠れ状態ベクトルh0~hnを集約し、RNN30のパラメータθ30に基づく計算を行って、隠れ状態ベクトルYを出力する。たとえば、RNN30は、RNN20から4つの隠れ状態ベクトルhが入力されると、RNN30のパラメータθ30に基づく計算を行って、隠れ状態ベクトルYを算出する。RNN30は、続く4つの隠れ状態ベクトルhが入力されると、一つ前に算出した隠れ状態ベクトルYと、4つの隠れ状態ベクトルhと、パラメータθ30とを基にして、隠れ状態ベクトルYを算出する処理を繰り返し実行する。
RNN30-0は、隠れ状態ベクトルh0~h3と、パラメータθ30に基づく計算を行って、隠れ状態ベクトルY0を算出する。RNN30-1は、隠れ状態ベクトルY0と、隠れ状態ベクトルh4~h7と、パラメータθ30に基づく計算を行って、隠れ状態ベクトルY1を算出する。RNN30-mは、一つ前に算出された隠れ状態ベクトルYm-1と、隠れ状態ベクトルhn-3~hnと、パラメータθ30に基づく計算を行って、Yを算出する。Yは、時系列データに対する推定結果のベクトルとなる。
次に、本実施例1に係る学習装置が、リカレント型ネットワーク15を学習する処理について説明する。学習装置は、第1学習処理を行った後に、第2学習処理を行う。第1学習処理において、学習装置は、下層の時系列方向に分割した各RNN20-0~20-nに与える教師データを、全体の教師データと見なして、パラメータθ20を学習する。第2学習処理において、学習装置は、下層のパラメータθ20を更新しないで、RNN30-0~30-nのパラメータθ30の学習を、全体の教師データを用いて行う。
図2を用いて、第1学習処理を説明する。学習データには、時系列データと、教師データとが含まれる。時系列データには、「データx(0)、x(1)、x(2)、x(3)、x(4)、・・・、x(n)」が含まれているものとする。教師データを「Y」とする。
学習装置は、RNN20-0に対して、データx(0)を入力し、データx(0)とパラメータθ20とに基づく計算を行って、隠れ状態ベクトルh0を算出し、ノード35-0に出力する。学習装置は、RNN20-1に対して、隠れ状態ベクトルh0と、データx(1)を入力し、隠れ状態ベクトルh0と、データx(1)とパラメータθ20とに基づく計算を行って、隠れ状態ベクトルh1を算出し、ノード35-0に出力する。学習装置は、RNN20-2に対して、隠れ状態ベクトルh1と、データx(2)を入力し、隠れ状態ベクトルh1と、データx(2)とパラメータθ20とに基づく計算を行って、隠れ状態ベクトルh2を算出し、ノード35-0に出力する。学習装置は、RNN20-3に対して、隠れ状態ベクトルh2と、データx(3)を入力し、隠れ状態ベクトルh2と、データx(3)とパラメータθ20とに基づく計算を行って、隠れ状態ベクトルh3を算出し、ノード35-0に出力する。
学習装置は、ノード35-0に入力される各隠れ状態ベクトルh0~h3を集約したベクトルが、教師データ「Y」に近づくように、RNN20のパラメータθ20を更新する。
同様にして、学習装置は、時系列データx(4)~x(7)を、RNN20-4~20-7に入力し、各隠れ状態ベクトルh4~h7を算出する。学習装置は、ノード35-1に入力される各隠れ状態ベクトルh4~h7を集約したベクトルが、教師データ「Y」に近づくように、RNN20のパラメータθ20を更新する。
学習装置は、時系列データx(n-3)~x(n)を、RNN20-n-3~20-nに入力し、各隠れ状態ベクトルhn-3~hnを算出する。学習装置は、ノード35-mに入力される各隠れ状態ベクトルhn-3~hnを集約したベクトルが、教師データ「Y」に近づくように、RNN20のパラメータθ20を更新する。学習装置は、複数の時系列データの組(x(0)~x(3))、(x(4)~x(7))、(x(n-3)~x(n))を用いて、上記処理を繰り返し実行する。
図3を用いて、第2学習処理を説明する。学習装置は、第2学習処理を行う場合に、第2学習処理を行うための時系列データの各データhm(0)、hm(4)、・・、hm(t1)を生成する。データhm(0)は、隠れ状態ベクトルh0~h3を集約したベクトルである。データhm(4)は、隠れ状態ベクトルh4~h7を集約したベクトルである。データhm(t1)は、隠れ状態ベクトルhn-3~hnを集約したベクトルである。
学習装置は、データhm(0)を、RNN30-0に入力し、データhm(0)と、パラメータθ30とに基づく計算を行って、隠れ状態ベクトルY0を算出し、RNN30-1に出力する。学習装置は、データhm(4)と、隠れ状態ベクトルY0とをRNN30-1に入力し、データhm(0)と、隠れ状態ベクトルY0とパラメータθ30とに基づく計算を行って、隠れ状態ベクトルY1を算出し、次の時系列のRNN30-2(図示略)に出力する。学習装置は、データhm(t1)と、一つ前に算出された隠れ状態ベクトルYm-1と、パラメータθ30とに基づく計算を行って、隠れ状態ベクトルYmを算出する。
学習装置は、RNN30-mから出力されるYmが、教師データの「Y」に近づくように、RNN30のパラメータθ30を更新する。学習装置は、複数の時系列データの組(hm(0)~hm(t1))を用いて、上記処理を繰り返し実行する。第2学習処理では、RNN20のパラメータθ20の更新は行わない。
上記のように、本実施例1に係る学習装置は、下層の時系列方向に分割した各RNN20-0~20-nに与える教師データを、全体の教師データと見なして、パラメータθ20を学習する。また、学習装置は、下層のパラメータθ20を更新しないで、RNN30-0~30-nのパラメータθ30の学習を、全体の教師データを用いて行う。このように、下層のパラメータθ20をまとめて学習し、上層のパラメータθ30をまとめて学習するため、安定した学習を行うことができる。
また、本実施例1に係る学習装置は、上層、下層に分けて所定範囲内で学習を行うため、学習効率を向上させることができる。たとえば、上層の計算コストを、1/下層区間長(たとえば、4)に削減することができる。下層については、従来技術と同一の演算回数で、「時系列データ長/下層区間長」倍の学習(パラメータθ20を更新する学習)を行うことができる。
次に、本実施例1に係る学習装置の構成の一例について説明する。図4は、本実施例1に係る学習装置の構成を示す機能ブロック図である。図4に示すように、この学習装置100は、通信部110、入力部120、表示部130、記憶部140、制御部150を有する。なお、本実施例1に係る学習装置100は、RNNの一例として、LSTM(Long Short Term Memory)を用いる。
通信部110は、ネットワーク等を介して、外部装置(図示略)と通信を実行する処理部である。たとえば、通信部110は、後述する学習データテーブル141の情報を外部装置から受信する。通信部110は、通信装置の一例である。後述する制御部150は、通信部110を介して、外部装置とデータをやり取りする。
入力部120は、各種の情報を、学習装置100に入力するための入力装置である。たとえば、入力部120は、キーボードやタッチパネル等に対応する。
表示部130は、制御部150から出力される各種の情報を表示する表示装置である。表示部130は、液晶ディスプレイやタッチパネル等に対応する。
記憶部140は、学習データテーブル141、第1学習データテーブル142、第2学習データテーブル143、パラメータテーブル144を有する。記憶部140は、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子や、HDD(Hard Disk Drive)などの記憶装置に対応する。
学習データテーブル141は、学習データを格納するテーブルである。図5は、本実施例1に係る学習データテーブルのデータ構造の一例を示す図である。図5に示すように、学習データテーブル141は、教師ラベルと、時系列データとを対応付ける。たとえば、時系列データ「x1(0)、x1(1)、・・・、x1(n)」に対応する教師ラベル(教師データ)は、「Y」となる。
第1学習データテーブル142は、学習データテーブル141に格納される時系列データを分割した、第1部分時系列データを格納するテーブルである。図6は、本実施例1に係る第1学習データテーブルのデータ構造の一例を示す図である。図6に示すように、第1学習データテーブル142は、教師ラベルと、第1部分時系列データとを対応付ける。各第1部分時系列データは、時系列データを4つ毎に分割したデータである。各第1部分時系列データを生成する処理は後述する。
第2学習データテーブル143は、第1学習データテーブル142の各第1部分時系列データを、下層のLSTMに入力して得られる第2部分時系列データを格納するテーブルである。図7は、本実施例1に係る第2学習データテーブルのデータ構造の一例を示す図である。図7に示すように、第2学習データテーブル143は、教師ラベルと、第2部分時系列データとを対応付ける。各第2部分時系列データは、第1学習データテーブル142の各第1部分時系列データを、下層のLSTMに入力して得られる。各第2部分時系列データを生成する処理は後述する。
パラメータテーブル144は、下層のLSTMのパラメータ、上層のLSTMのパラメータ、Affine変換部のパラメータを格納するテーブルである。
制御部150は、図8に示す階層型のRNNを実行して、パラメータの学習処理を行う。図8は、本実施例1の階層型のRNNの一例を示す図である。図8に示すように、この階層型のRNNは、LSTM50,60と、Mean Pooling部55、Affine変換部65aと、Softmax部65bとを有する。
LSTM50は、図1で説明した下層のRNN20に対応するRNNである。LSTM50は、Mean Pooling部55に接続される。LSTM50は、時系列データに含まれるデータが入力されると、LSTM50のパラメータθ50に基づく計算を行って、隠れ状態ベクトルhを算出し、Mean Pooling部55に出力する。LSTM50は、次のデータが入力されると、前のデータで算出した隠れ状態ベクトルhと、次のデータと用いて、パラメータθ50に基づく計算を行い、隠れ状態ベクトルhを算出する処理を繰り返し実行する。
LSTM50-0は、データx(0)を取得すると、データx(0)とパラメータθ50とに基づく計算を行って、隠れ状態ベクトルh0を算出し、Mean Pooling部55-0に出力する。LSTM50-1は、データx(1)を取得すると、データx(1)と、隠れ状態ベクトルh0と、パラメータθ50とに基づく計算を行って、隠れ状態ベクトルh1を算出し、Mean Pooling部55-0に出力する。
LSTM50-2は、データx(2)を取得すると、データx(2)と、隠れ状態ベクトルh1と、パラメータθ50とに基づく計算を行って、隠れ状態ベクトルh2を算出し、Mean Pooling部55-0に出力する。LSTM50-3は、データx(3)を取得すると、データx(3)と、隠れ状態ベクトルh2と、パラメータθ50とに基づく計算を行って、隠れ状態ベクトルh3を算出し、Mean Pooling部55-0に出力する。
LSTM50-4~50-7は、LSTM50-0~50-3と同様にして、データx(4)~x(7)を取得すると、前のデータで算出された隠れ状態ベクトルhと、取得したデータとを用いて、パラメータθ50に基づく計算を行い、隠れ状態ベクトルhを算出する。LSTM50-4~50-7は、隠れ状態ベクトルh4~h7を、Mean Pooling部55-1に出力する。
LSTM50-n-3~50-nは、LSTM50-0~50-3と同様にして、データx(n-3)~x(n)を取得すると、前のデータで算出された隠れ状態ベクトルhと、取得したデータとを用いて、パラメータθ50に基づく計算を行い、隠れ状態ベクトルhを算出する。LSTM50-n-3~50-nは、隠れ状態ベクトルhn-3~hnを、Mean Pooling部55-mに出力する。
Mean Pooling部55は、下層のLSTM50から入力される各隠れ状態ベクトルhを集約し、集約したベクトルhmを、上層のLSTM60に出力する。たとえば、Mean Pooling部55-0は、隠れ状態ベクトルh0~h3を、平均化したベクトルhm(0)を、LSTM60-0に入力する。Mean Pooling部55-1は、隠れ状態ベクトルh4~h7を、平均化したベクトルhm(4)を、LSTM60-1に入力する。Mean Pooling部55-mは、隠れ状態ベクトルhn-3~hnを、平均化したベクトルhm(n-3)を、LSTM60-mに入力する。
LSTM60は、図1で説明した上層のRNN30に対応するRNNである。LSTM60は、Mean Pooling部55から入力される複数の隠れ状態ベクトルhmと、LSTM60のパラメータθ60に基づく計算を行って、隠れ状態ベクトルYを出力する。LSTM60は、Mean Pooling部55から、続く隠れ状態ベクトルhmが入力されると、一つ前に算出した隠れ状態ベクトルYと、隠れ状態ベクトルhmと、パラメータθ60とを基にして、隠れ状態ベクトルYを算出する処理を繰り返し実行する。
LSTM60-0は、隠れ状態ベクトルhm(0)と、パラメータθ60に基づく計算を行って、隠れ状態ベクトルY0を算出する。LSTM60-1は、隠れ状態ベクトルY0と、隠れ状態ベクトルhm(4)と、パラメータθ60に基づく計算を行って、隠れ状態ベクトルY1を算出する。LSTM60-mは、一つ前に算出された隠れ状態ベクトルYm-1と、隠れ状態ベクトルhm(n-3)と、パラメータθ60に基づく計算を行って、隠れ状態ベクトルYmを算出する。LSTM60-mは、YmをAffine変換部65aに出力する。
Affine変換部65aは、LSTM60から出力される隠れ状態ベクトルYmに対して、アフィン変換を実行する処理部ある。たとえば、Affine変換部65aは、式(1)に基づいて、アフィン変換を実行し、ベクトルYAを算出する。式(1)に含まれるAは、行列であり、bは、ベクトルである。行列Aの各要素、ベクトルbの各要素には、学習される重みが設定される。
YA=AYm+b・・・(1)
Softmax部65bは、アフィン変換されたベクトルYAをソフトマック関数に入力して、値「Y」を算出する処理部である。Yは、時系列データに対する推定結果のベクトルとなる。
図4の説明に戻る。制御部150は、取得部151と、第1生成部152と、第1学習部153と、第2生成部154と、第2学習部155とを有する。制御部150は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などによって実現できる。また、制御部150は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのハードワイヤードロジックによっても実現できる。第2生成部154および第2学習部155は、学習処理部の一例である。
取得部151は、外部装置(図示略)からネットワークを介して、学習データテーブル141の情報を取得する処理部である。取得部151は、取得した学習データテーブル141の情報を、学習データテーブル141に格納する。
第1生成部152は、学習データテーブル141を基にして、第1学習データテーブル142の情報を生成する処理部である。図9は、本実施例1に係る第1生成部の処理を説明するための図である。第1生成部152は、学習データテーブル141のレコードを選択し、選択したレコードの時系列データを所定区間である4つ単位に分割する。第1生成部152は、分割した4つのデータの組(第1部分時系列データ)それぞれと、分割前の時系列データに対応する教師ラベルとを対応付けて、第1学習データテーブル142に格納する。
たとえば、第1生成部152は、時系列データ「x1(0)、x1(1)、・・・、x(n1)」を、第1部分時系列データ「x1(0)、x1(1)、x1(2)、x1(3)」、「x1(4)、x1(5)、x1(6)、x1(7)」、・・・、「x1(n1-3)、x1(n1-2)、x1(n1-1)、x1(n1)」に分割する。第1生成部152は、各第1部分時系列データに、分割前の時系列データ「x1(0)、x1(1)、・・・、x(n1)」に対応する教師ラベル「Y」を対応付けて、第1学習データテーブル142に格納する。
第1生成部152は、学習データテーブル141の他のレコードについても、上記処理を繰り返し実行することで、第1学習データテーブル142の情報を生成する。第1生成部152は、第1学習データテーブル142の情報を、第1学習データテーブル142に格納する。
第1学習部153は、第1学習データテーブル142を基にして、階層型のRNNのLSTM50のパラメータθ50を学習する処理部である。第1学習部153は、学習したパラメータθ50をパラメータテーブル144に格納する。第1学習部153の処理は、上述した、第1学習処理に対応する。
図10は、本実施例1に係る第1学習部の処理を説明するための図である。第1学習部153は、LSTM50、Mean Pooling部55、Affine変換部65a、Softmax部65bを実行する。第1学習部153は、LSTM50をMean Pooling部55に接続し、Mean Pooling部55をAffine変換部65aに接続し、Affine変換部65aをSoftmax部65bに接続する。第1学習部153は、LSTM50のパラメータθ50を初期値に設定する。
第1学習部153は、第1学習データテーブル142の第1部分時系列データに格納された各データを、LSTM50-0~50-3に順に入力し、Softmax部65bから出力される推測ラベルが、教師ラベルに近づくように、LSTM50のパラメータθ50およびAffine変換部65aのパラメータを学習する。第1学習部153は、第1学習データテーブル142に格納された各第1部分時系列データについて、上記処理を繰り返し実行する。たとえば、第1学習部153は、勾配降下法等を用いて、LSTM50のパラメータθ50およびAffine変換部65aのパラメータを学習する。
第2生成部154は、第1学習データテーブル142を基にして、第2学習データテーブル143の情報を生成する処理部である。図11は、本実施例1に係る第2生成部の処理を説明するための図である。
第2生成部154は、LSTM50と、Mean Pooling部55とを実行し、第1学習部153によって学習済みのパラメータθ50を、LSTM50に設定する。第2生成部154は、各第1部分時系列データを、LSTM50-1~50-3に順に入力し、Mean Pooling部55から出力されるデータhmを算出する処理を繰り返し実行する。第2生成部154は、学習データテーブル141の1つのレコードの時系列データから分割された各第1部分時系列データをLSTM50に入力することで、一組の第2部分時系列データを算出する。かかる一組の第2部分時系列データに対応する教師ラベルは、分割元の時系列データに対応する教師ラベルとなる。
たとえば、第2生成部154は、各第1部分時系列データ「x1(0)、x1(1)、x1(2)、x1(3)」、「x1(4)、x1(5)、x1(6)、x1(7)」、・・・、「x1(n1-3)、x1(n1-2)、x1(n1-1)、x1(n1)」をLSTM50にそれぞれ入力することで、第2部分時系列データ「hm1(0)、hm1(4)、・・・、hm1(t1)」を算出する。かかる第2部分時系列データ「hm1(0)、hm1(4)、・・・、hm1(t1)」に対応する教師ラベルは、時系列データ「x1(0)、x1(1)、・・・、x(n1)」の教師ラベル「Y」となる。
第2生成部154は、第1学習データテーブル142の他のレコードについても、上記処理を繰り返し実行することで、第2学習データテーブル143の情報を生成する。第2生成部154は、第2学習データテーブル143の情報を、第2学習データテーブル143に格納する。
第2学習部155は、第2学習データテーブル143を基にして、階層型のRNNのLSTM60のパラメータθ60を学習する処理部である。第2学習部155は、学習したパラメータθ60をパラメータテーブル144に格納する。第2学習部155の処理は、上述した第2学習処理に対応する。また、第2学習部155は、Affine変換部65aのパラメータを、パラメータテーブル144に格納する。
図12は、本実施例1に係る第2学習部の処理を説明するための図である。第2学習部155は、LSTM60、Affine変換部65a、Softmax部65bを実行する。第2学習部155は、LSTM60をAffine変換部65aに接続し、Affine変換部65aをSoftmax部65bに接続する。第2学習部155は、LSTM60のパラメータθ60を初期値に設定する。
第2学習部155は、第2学習データテーブル143の第2部分時系列データに格納された各データを、LSTM60-0~60-mに順に入力し、Softmax部65bから出力される推測ラベルが、教師ラベルに近づくように、LSTM60のパラメータθ60およびAffine変換部65aのパラメータを学習する。第2学習部155は、第2学習データテーブル143に格納された各第2部分時系列データについて、上記処理を繰り返し実行する。たとえば、第2学習部155は、勾配降下法等を用いて、LSTM60のパラメータθ60およびAffine変換部65aのパラメータを学習する。
次に、本実施例1に係る学習装置100の処理手順の一例について説明する。図13は、本実施例1に係る学習装置の処理手順を示すフローチャートである。図13に示すように、学習装置100の第1生成部152は、学習データテーブル141に含まれる時系列データを所定区間に分割して、第1部分時系列データを生成し、第1学習データテーブル142の情報を生成する(ステップS101)。
学習装置100の第1学習部153は、第1学習データテーブル142を基にして、下層のLSTM50のパラメータθ50を学習する(ステップS102)。第1学習部153は、学習済みの下層のLSTM50のパラメータθ50をパラメータテーブル144に格納する(ステップS103)。
学習装置100の第2生成部154は、第1学習データテーブルと、学習済みの下層のLSTMのパラメータθ50を用いて、第2学習データテーブル143の情報を生成する(ステップS104)。
学習装置100の第2学習部155は、第2学習データテーブル143を基にして、上層のLSTM60のパラメータθ60をおよびAffine変換部のパラメータを学習する(ステップS105)。第2学習部155は、学習済みの上層のLSTM60のパラメータθ60をおよびAffine変換部のパラメータをパラメータテーブル144に格納する(ステップS106)。なお、パラメータテーブル144の情報は、外部装置に通知されてもよいし、管理者端末に出力して表示されてもよい。
次に、本実施例1に係る学習装置100の効果について説明する。学習装置100は、時系列データを所定区間に分割した第1部分時系列データと生成し、下層の時系列方向に分割した各LSTM50-0~50-nに与える教師データを、全体の教師データと見なして、パラメータθ50を学習する。また、学習装置100は、学習済みのパラメータθ60を更新しないで、上層のLSTM60-0~60-mのパラメータθ60の学習を、全体の教師データを用いて行う。このように、下層のパラメータθ50をまとめて学習した後に、上層のパラメータθ60をまとめて学習するため、安定した学習を行うことができる。
また、本実施例1に係る学習装置100は、上層、下層に分けて所定範囲内で学習を行うため、学習効率を向上させることができる。たとえば、上層の計算コストを、1/下層区間長(たとえば、4)に削減することができる。下層については、従来技術と同一の演算回数で、「時系列データ長/下層区間長」倍の学習を行うことができる。
図14は、本実施例2の階層型のRNNの一例を示す図である。図14に示すように、この階層型のRNNは、RNN70と、GRU(Gated Recurrent Unit)71と、LSTM72と、Affine変換部75aと、Softmax部75bとを有する。図14では一例として、下層のRNNとして、GRU71、RNN70を用いて説明するが、下層のRNNに他のRNNが更に接続されていてもよい。
RNN70は、GRU71に接続され、時系列データに含まれるデータ(たとえば、単語x)が入力されると、RNN70のパラメータθ70に基づく計算を行って、隠れ状態ベクトルhを算出し、RNN70に入力する。RNN70は、次のデータが入力されると、前のデータで計算した隠れ状態ベクトルhと、次のデータとを用いて、パラメータθ70に基づく計算を行い、隠れ状態ベクトルrを算出し、GRU71に入力する。RNN70は、2つのデータが入力された際に算出された隠れ状態ベクトルrを、GRU71に入力する処理を繰り返し実行する。
たとえば、本実施例2に係るRNN70に入力する時系列データには、データx(0)、x(1)、x(2)、x(3)、x(4)、・・・、x(n)が含まれているものとする。
RNN70-0は、データx(0)を取得すると、データx(0)とパラメータθ70とに基づく計算を行って、隠れ状態ベクトルh0を算出し、RNN70-1に出力する。RNN70-1は、データx(1)を取得すると、データx(1)と、隠れ状態ベクトルh0と、パラメータθ70とに基づく計算を行って、隠れ状態ベクトルr(1)を算出し、GRU71-0に出力する。
RNN70-2は、データx(2)を取得すると、データx(2)とパラメータθ70とに基づく計算を行って、隠れ状態ベクトルh2を算出し、RNN70-3に出力する。RNN70-3は、データx(3)を取得すると、データx(3)と、隠れ状態ベクトルh2と、パラメータθ70とに基づく計算を行って、隠れ状態ベクトルr(3)を算出し、GRU71-1に出力する。
RNN70-4,70-5は、RNN70-0,70-1と同様にして、データx(4)、x(5)が入力されると、パラメータθ70に基づく計算を行って、隠れ状態ベクトルh4、r(5)を算出し、隠れ状態ベクトルr(5)を、GRU71-2に出力する。
RNN70-6,70-7は、RNN70-2,70-3と同様にして、データx(6)、x(7)が入力されると、パラメータθ70に基づく計算を行って、隠れ状態ベクトルh6、r(7)を算出し、隠れ状態ベクトルr(7)を、GRU71-3に出力する。
RNN70-n-3,70-n-2は、RNN70-0,70-1と同様にして、データx(n-3)、x(n-2)が入力されると、パラメータθ70に基づく計算を行って、隠れ状態ベクトルhn-3、r(n-2)を算出し、隠れ状態ベクトルr(n-2)を、GRU71-m-1に出力する。
RNN70-n-1,70-nは、RNN70-2,70-3と同様にして、データx(n-1)、x(n)が入力されると、パラメータθ70に基づく計算を行って、隠れ状態ベクトルhn-1、r(n)を算出し、隠れ状態ベクトルr(n)を、GRU71-mに出力する。
GRU71は、RNN70から入力される複数の隠れ状態ベクトルrに対して、GRU71のパラメータθ71に基づく計算を行い、隠れ状態ベクトルhgを算出し、GRU71に入力する。GRU71は、次の隠れ状態ベクトルrが入力されると、隠れ状態ベクトルhgと、次の隠れ状態ベクトルrと用いて、パラメータθ71に基づく計算を行い、隠れ状態ベクトルgを算出する。GRU71は、隠れ状態ベクトルgを、LSTM72に出力する。GRU71は、2つの隠れ状態ベクトルrが入力された際に算出された隠れ状態ベクトルgを、LSTM72に入力する処理を繰り返し実行する。
GRU71-0は、隠れ状態ベクトルr(1)を取得すると、隠れ状態ベクトルr(1)とパラメータθ71とに基づく計算を行って、隠れ状態ベクトルhg0を算出し、GRU71-1に出力する。GRU71-1は、隠れ状態ベクトルr(3)を取得すると、隠れ状態ベクトルr(3)と、隠れ状態ベクトルhg0と、パラメータθ71とに基づく計算を行って、隠れ状態ベクトルg(1)を算出し、LSTM72-0に出力する。
GRU71-2,71-3は、GRU71-0,71-1と同様にして、隠れ状態ベクトルr(5)、r(7)が入力されると、パラメータθ71に基づく計算を行って、隠れ状態ベクトルhg2、g(7)を算出し、隠れ状態ベクトルg(7)を、LSTM72-1に出力する。
GRU71-m-1,71-mは、GRU71-0,71-1と同様にして、隠れ状態ベクトルr(n-2)、r(n)が入力されると、パラメータθ71に基づく計算を行って、隠れ状態ベクトルhgm-1、g(n)を算出し、隠れ状態ベクトルg(n)を、LSTM72-lに出力する。
LSTM72は、GRU71から隠れ状態ベクトルgが入力されると、隠れ状態ベクトルgとLSTM72のパラメータθ72とに基づく計算を行い、隠れ状態ベクトルhlを算出する。LSTM72は、次の隠れ状態ベクトルgが入力されると、隠れ状態ベクトルhl、gと、パラメータθ72に基づく計算を行い、隠れ状態ベクトルhlを算出する。LSTM72は、隠れ状態ベクトルgが入力されるたびに、上記処理を繰り返し実行する。そして、LSTM72は、隠れ状態ベクトルh1を、Affine変換部65aに出力する。
LSTM72-0は、GRU71-1から隠れ状態ベクトルg(3)が入力されると、隠れ状態ベクトルg(3)とLSTM72のパラメータθ72とに基づく計算を行い、隠れ状態ベクトルhl0を算出する。LSTM72-0は、隠れ状態ベクトルhl0を、LSTM72-1に出力する。
LSTM72-1は、GRU71-3から隠れ状態ベクトルg(7)が入力されると、隠れ状態ベクトルg(7)とLSTM72のパラメータθ72とに基づく計算を行い、隠れ状態ベクトルhl1を算出する。LSTM72-1は、隠れ状態ベクトルhl1を、LSTM72-2(図示略)に出力する。
LSTM72-lは、GRU71-mから隠れ状態ベクトルg(n)が入力されると、隠れ状態ベクトルg(n)とLSTM72のパラメータθ72とに基づく計算を行い、隠れ状態ベクトルhllを算出する。LSTM72-lは、隠れ状態ベクトルhllを、Affine変換部65aに出力する。
Affine変換部75aは、LSTM72から出力される隠れ状態ベクトルhllに対して、アフィン変換を実行する処理部ある。たとえば、Affine変換部75aは、式(2)に基づいて、アフィン変換を実行し、ベクトルYAを算出する。式(2)に含まれるA、bに関する説明は、式(1)に含まれるA、bに関する説明と同様である。
YA=Ahll+b・・・(2)
Softmax部75bは、アフィン変換されたベクトルYAをソフトマック関数に入力して、値「Y」を算出する処理部である。Yは、時系列データに対する推定結果のベクトルとなる。
次に、本実施例2に係る学習装置の構成の一例について説明する。図15は、本実施例2に係る学習装置の構成を示す機能ブロック図である。図15に示すように、この学習装置200は、通信部210、入力部220、表示部230、記憶部240、制御部250を有する。
通信部210は、ネットワーク等を介して、外部装置(図示略)と通信を実行する処理部である。たとえば、通信部210は、後述する学習データテーブル241の情報を外部装置から受信する。通信部210は、通信装置の一例である。後述する制御部250は、通信部210を介して、外部装置とデータをやり取りする。
入力部220は、各種の情報を、学習装置200に入力するための入力装置である。たとえば、入力部220は、キーボードやタッチパネル等に対応する。
表示部230は、制御部250から出力される各種の情報を表示する表示装置である。表示部230は、液晶ディスプレイやタッチパネル等に対応する。
記憶部240は、学習データテーブル241、第1学習データテーブル242、第2学習データテーブル243、第3学習データテーブル244、パラメータテーブル245を有する。記憶部240は、RAM、ROM、フラッシュメモリなどの半導体メモリ素子や、HDDなどの記憶装置に対応する。
学習データテーブル241は、学習データを格納するテーブルである。学習データテーブル241のデータ構造は、図5に示した学習データテーブル141のデータ構造と同様であるため、説明を省略する。
第1学習データテーブル242は、学習データテーブル241に格納される時系列データを分割した、第1部分時系列データを格納するテーブルである。図16は、本実施例2に係る第1学習データテーブルのデータ構造の一例を示す図である。図16に示すように、第1学習データテーブル242は、教師ラベルと、第1部分時系列データとを対応付ける。本実施例2の各第1部分時系列データは、時系列データを2つ毎に分割したデータである。各第1部分時系列データを生成する処理は後述する。
第2学習データテーブル243は、第1学習データテーブル242の各第1部分時系列データを、下層のRNN70に入力して得られる第2部分時系列データを格納するテーブルである。図17は、本実施例2に係る第2学習データテーブルのデータ構造の一例を示す図である。図17に示すように、第2学習データテーブル243は、教師ラベルと、第2部分時系列データとを対応付ける。各第2部分時系列データを生成する処理は後述する。
第3学習データテーブル244は、学習データテーブル241の時系列データを、下層のRNN70に入力した場合に、上層のGRU71から出力される第3部分時系列データを格納するテーブルである。図18は、本実施例2に係る第3学習データテーブルのデータ構造の一例を示す図である。図18に示すように、第3学習データテーブル244は、教師ラベルと、第3部分時系列データとを対応付ける。各第3部分時系列データを生成する処理は後述する。
パラメータテーブル245は、下層のRNN70のパラメータθ70、GRUのパラメータθ71、上層のLSTM72のパラメータθ72、Affine変換部75aのパラメータを格納するテーブルである。
制御部250は、図14で説明した階層型のRNNを実行して、パラメータの学習を行う処理部である。制御部250は、取得部251、第1生成部252、第1学習部253、第2生成部254、第2学習部255、第3生成部256、第3学習部257を有する。制御部250は、CPUやMPUなどによって実現できる。また、制御部250は、ASICやFPGAなどのハードワイヤードロジックによっても実現できる。
取得部251は、外部装置(図示略)からネットワークを介して、学習データテーブル241の情報を取得する処理部である。取得部251は、取得した学習データテーブル241の情報を、学習データテーブル241に格納する。
第1生成部252は、学習データテーブル241を基にして、第1学習データテーブル242の情報を生成する処理部である。図19は、本実施例2に係る第1生成部の処理を説明するための図である。第1生成部252は、学習データテーブル241のレコードを選択し、選択したレコードの時系列データを所定区間である2つ単位に分割する。第1生成部252は、分割した2つのデータの組(第1部分時系列データ)それぞれと、分割前の時系列データに対応する教師ラベルとを対応付けて、第1学習データテーブル242に格納する。
たとえば、第1生成部252は、時系列データ「x1(0)、x1(1)、・・・、x(n1)」を、第1部分時系列データ「x1(0)、x1(1)」、「x1(2)、x1(3)」、・・・、「x1(n1-1)、x1(n1)」に分割する。第1生成部252は、各第1部分時系列データに、分割前の時系列データ「x1(0)、x1(1)、・・・、x(n1)」に対応する教師ラベル「Y」を対応付けて、第1学習データテーブル242に格納する。
第1生成部252は、学習データテーブル241の他のレコードについても、上記処理を繰り返し実行することで、第1学習データテーブル242の情報を生成する。第1生成部252は、第1学習データテーブル242の情報を、第1学習データテーブル242に格納する。
第1学習部253は、第1学習データテーブル242を基にして、RNN70のパラメータθ70を学習する処理部である。第1学習部253は、学習したパラメータθ70をパラメータテーブル245に格納する。
図20は、本実施例2に係る第1学習部の処理を説明するための図である。第1学習部253は、RNN70、Affine変換部75a、Softmax部75bを実行する。第1学習部253は、RNN70をAffine変換部75aに接続し、Affine変換部75aをSoftmax部75bに接続する。第1学習部253は、RNN70のパラメータθ70を初期値に設定する。
第1学習部253は、第1学習データテーブル242の第1部分時系列データに格納された各データを、RNN70-0~70-1に順に入力し、Softmax部75bから出力される推測ラベルYが、教師ラベルに近づくように、RNN70のパラメータθ70およびAffine変換部75aのパラメータを学習する。第1学習部253は、第1学習データテーブル242に格納された各第1部分時系列データについて、上記処理を「D」回繰り返し実行する。Dは予め設定される値であり、たとえば、「D=10」とする。第1学習部253は、勾配降下法等を用いて、RNN70のパラメータθ70およびAffine変換部75aのパラメータを学習する。
第1学習部253は、D回学習を行った場合、第1学習データテーブル242の教師ラベルを更新する処理を実行する。図21は、本実施例2に係る第1学習部の教師ラベル更新処理の一例を示す図である。
図21の学習結果5Aは、第1部分時系列データ(データ1、データ2、・・・)と、教師ラベルと、推定ラベルとを対応付ける。たとえば、x1(0、1)は、RNN70-0、RNN70-1に、データx1(0)、x(1)を入力したことを示す。教師ラベルは、第1学習データテーブル242で定義された、第1部分時系列データに対応する教師ラベルである。推定ラベルは、第1部分時系列データを、図20のRNN70-0,70-1に、入力した場合に、Softmax部75bから出力される推定ラベルである。学習結果5Aにおいて、x1(0、1)の教師ラベルは「Y」であり、推定ラベルが「Y」であることが示される。
学習結果5Aに示す例では、x1(2、3)、x1(6、7)、x2(2、3)、x2(4、5)において、教師ラベルと、推定ラベルとが異なっている。第1学習部253は、教師ラベルと、推定ラベルとが異なっている教師ラベルのうち、所定の割合の教師ラベルを、推定ラベルに更新する。更新結果5Bに示すように、第1学習部253は、x1(2、3)に対応する教師ラベルを「Not Y」に更新し、x2(4、5)に対応する教師ラベルを「Y」に更新する。第1学習部253は、図21で説明した更新を、第1学習データテーブル242の教師ラベルに反映させる。
第1学習部253は、更新した第1学習データテーブル242を用いて、再度、RNN70のパラメータθ70およびAffine変換部75aのパラメータを学習する。第1学習部253は、学習したRNN70のパラメータθ70を、パラメータテーブル245に格納する。
図15の説明に戻る。第2生成部254は、学習データテーブル241を基にして、第2学習データテーブル243の情報を生成する処理部である。図22は、本実施例2に係る第2生成部の処理を説明するための図である。第2生成部254は、RNN70を実行し、第1学習部253によって学習済みのパラメータθ70を、RNN70に設定する。
第2生成部254は、時系列データを、RNN70の所定区間である2つ毎の単位、GRU71の時系列としては4つ毎の単位に分割する。第2生成部254は、分割したデータを、RNN70-0~70-3にそれぞれ入力し、RNN70-0,70-3から出力される隠れ状態ベクトルrを算出する処理を繰り返し実行する。第2生成部254は、学習データテーブル141の1つのレコードの時系列データを分割し、入力することで、複数の第2部分時系列データを算出する。かかる複数の第2部分時系列データに対応する教師ラベルは、分割元の時系列データに対応する教師ラベルとなる。
たとえば、第2生成部254は、時系列データ「x1(0)、x1(1)、x1(2)、x1(3)」をRNN70にそれぞれ入力することで、第2部分時系列データ「r1(0)、r1(3)」を算出する。かかる第2部分時系列データ「r1(0)、r1(3)」に対応する教師ラベルは、時系列データ「x1(0)、x1(1)、・・・、x(n1)」の教師ラベル「Y」となる。
第2生成部254は、学習データテーブル241の他のレコードについても、上記処理を繰り返し実行することで、第2学習データテーブル243の情報を生成する。第2生成部254は、第2学習データテーブル243の情報を、第2学習データテーブル243に格納する。
第2学習部255は、第2学習データテーブル243を基にして、階層型のRNNのGRU71のパラメータθ71を学習する処理部である。第2学習部255は、学習したパラメータθ71をパラメータテーブル245に格納する。
図23は、本実施例2に係る第2学習部の処理を説明するための図である。第2学習部255は、GRU71、Affine変換部75a、Softmax部75bを実行する。第2学習部255は、GRU71をAffine変換部75aに接続し、Affine変換部75aをSoftmax部75bに接続する。第2学習部255は、GRU71のパラメータθ71を初期値に設定する。
第2学習部255は、第2学習データテーブル243の第2部分時系列データに格納された各データを、GRU71-0,71-1に順に入力し、Softmax部75bから出力される推測ラベルが、教師ラベルに近づくように、GRU71のパラメータθ71およびAffine変換部75aのパラメータを学習する。第2学習部255は、第2学習データテーブル243に格納された各第2部分時系列データについて、上記処理を繰り返し実行する。たとえば、第2学習部255は、勾配降下法等を用いて、GRU71のパラメータθ71およびAffine変換部75aのパラメータを学習する。
図15の説明に戻る。第3生成部256は、学習データテーブル241を基にして、第3学習データテーブル244の情報を生成する処理部である。図24は、本実施例2に係る第3生成部の処理を説明するための図である。第3生成部256は、RNN70、GRU71を実行し、第1学習部253によって学習済みのパラメータθ70を、RNN70に設定する。第3生成部256は、第2学習部255によって学習済みのパラメータθ71を、GRU71に設定する。
第3生成部256は、時系列データを4つ毎の単位に分割する。第3生成部256は、分割したデータを、RNN70-0~70-3にそれぞれ入力し、GRU71-1から出力される隠れ状態ベクトルgを算出する処理を繰り返し実行する。第3生成部256は、学習データテーブル241の1つのレコードの時系列データを分割し、入力することで、一つのレコードの第3部分時系列データを算出する。かかる第3部分時系列データに対応する教師ラベルは、分割元の時系列データに対応する教師ラベルとなる。
たとえば、第3生成部256は、時系列データ「x1(0)、x1(1)、x1(2)、x1(3)」をRNN70にそれぞれ入力することで、第3部分時系列データ「g1(3)」を算出する。第3生成部256は、時系列データ「x1(4)、x1(5)、x1(6)、x1(7)」をRNN70にそれぞれ入力することで、第3部分時系列データ「g1(7)」を算出する。第3生成部256は、時系列データ「x1(n1-3)、x1(n1-2)、x1(n1-1)、x1(n1)」をRNN70にそれぞれ入力することで、第3部分時系列データ「g1(n1)」を算出する。かかる第3部分時系列データ「g1(3)、g1(7)、・・・、g1(n1)」に対応する教師ラベルは、時系列データ「x1(0)、x1(1)、・・・、x(n1)」の教師ラベル「Y」となる。
第3生成部256は、学習データテーブル241の他のレコードについても、上記処理を繰り返し実行することで、第3学習データテーブル244の情報を生成する。第3生成部256は、第3学習データテーブル244の情報を、第3学習データテーブル244に格納する。
第3学習部257は、第3学習データテーブル244を基にして、階層型のRNNのLSTM72のパラメータθ72を学習する処理部である。第3学習部257は、学習したパラメータθ72をパラメータテーブル245に格納する。
図25は、本実施例2に係る第3学習部の処理を説明するための図である。第3学習部257は、LSTM72、Affine変換部75a、Softmax部75bを実行する。第3学習部257は、LSTM72をAffine変換部75aに接続し、Affine変換部75aをSoftmax部75bに接続する。第3学習部257は、LSTM72のパラメータθ72を初期値に設定する。
第3学習部257は、第3学習データテーブル244の第3部分時系列データに格納された各データを、LSTM72に順に入力し、Softmax部75bから出力される推測ラベルが、教師ラベルに近づくように、LSTM72のパラメータθ72およびAffine変換部75aのパラメータを学習する。第3学習部257は、第3学習データテーブル244に格納された各第3部分時系列データについて、上記処理を繰り返し実行する。たとえば、第3学習部257は、勾配降下法等を用いて、LSTM72のパラメータθ72およびAffine変換部75aのパラメータを学習する。
次に、本実施例2に係る学習装置200の処理手順の一例について説明する。図26は、本実施例2に係る学習装置の処理手順を示すフローチャートである。図26に示すように、学習装置200の第1生成部252は、学習データテーブル241に含まれる時系列データを所定区間に分割して、第1部分時系列データを生成し、第1学習データテーブル242の情報を生成する(ステップS201)。
学習装置200の第1学習部253は、第1学習データテーブル242を基にして、RNN70のパラメータθ70の学習をD回実行する(ステップS202)。第1学習部253は、第1学習データテーブル242について、推定ラベルと教師ラベルとが異なる教師ラベルの内、所定割合の教師ラベルを、推定ラベルに変更する(ステップS203)。
第1学習部253は、更新した第1学習データテーブル242を基にして、RNN70のパラメータθ70を学習する(ステップS204)。ここで、第1学習部253は、ステップS203、S204の処理を所定回数繰り返した後に、ステップS205に移行してもよい。第1学習部253は、学習済みのRNNのパラメータθ70をパラメータテーブル245に格納する(ステップS205)。
学習装置200の第2生成部254は、学習データテーブル241と、学習済みのRNN70のパラメータθ70を用いて、第2学習データテーブル243の情報を生成する(ステップS206)。
学習装置200の第2学習部255は、第2学習データテーブル243を基にして、GRU71のパラメータθ71を学習する(ステップS207)。第2学習部255は、GRU71のパラメータθ71をパラメータテーブル245に格納する(ステップS208)。
学習装置200の第3生成部256は、学習データテーブル241と、学習済みのRNN70のパラメータθ70と、学習済みのGRU71のパラメータθ71とを用いて、第3学習データテーブル244の情報を生成する(ステップS209)。
第3学習部257は、第3学習データテーブル244を基にして、LSTM72のパラメータθ72およびAffine変換部75aのパラメータを学習する(ステップS210)。第3学習部257は、学習済みのLSTM72のパラメータθ72およびAffine変換部75aのパラメータをパラメータテーブル245に格納する(ステップS211)。なお、パラメータテーブル245の情報は、外部装置に通知されてもよいし、管理者端末に出力して表示されてもよい。
次に、本実施例2に係る学習装置200の効果について説明する。学習装置200は、学習データテーブル241の時系列データを所定区間に分割して、第1学習データテーブル242を生成し、第1学習データテーブル242を基にして、RNN70のパラメータθ70を学習する。学習装置200は、学習済みのパラメータθ70と、学習データテーブル241の時系列データを所定区間に分割したデータとを用いて、第2学習データテーブル243を生成し、第2学習データテーブル243を基にして、GRU71のパラメータθ71を学習する。学習装置200は、学習済みのパラメータθ70、θ71と、学習データテーブル241の時系列データを所定区間に分割したデータとを用いて、第3学習データテーブル244を生成し、第3学習データテーブル244を基にして、LSTM72のパラメータθ72を学習する。このように、学習装置200は、各層のパラメータθ70、θ71、θ72を順にまとめて学習していくため、安定した学習を行うことができる。
学習装置200は、第1学習データテーブル242を基にして、RNN70のパラメータθ70を学習する際に、D回学習を行った後に、教師ラベルと推定ラベルとを比較する。学習装置200は、教師ラベルと、推定ラベルとが異なっている教師ラベルのうち、所定の割合の教師ラベルを、推定ラベルに更新する。かかる処理を実行することで、短い区間で学習することでの過学習を抑止することができる。
なお、本実施例2に係る学習装置200は、RNN70,GRU71に2単位でデータを入力する場合について説明したがこれに限定されるものではない。たとえば、RNN70に対しては、単語長相当の8~16単位、GRU71に対しては文相当の5~10単位でデータを入力することが好ましい。
図27は、本実施例3の階層型のRNNの一例を示す図である。図27に示すように、この階層型のRNNは、LSTM80aと、LSTM80bと、GRU81aと、GRU81bと、Affine変換部85aと、Softmax部85bとを有する。図27では一例として、下層のLSTMとして、2つのLSTM80を用いる場合について説明するが、これに限定されるものでは無く、n個のLSTM80を配置してもよい。
LSTM80aは、LSTM80bに接続され、LSTM80bは、GRU81aに接続される。LSTM80aは、時系列データに含まれるデータ(たとえば、単語x)が入力されると、LSTM80aのパラメータθ80aに基づく計算を行って、隠れ状態ベクトルを算出し、LSTM80bに入力する。LSTM80aは、次のデータが入力されると、前のデータで算出した隠れ状態ベクトルと、次のデータと用いて、パラメータθ80aに基づく計算を行い、隠れ状態ベクトルを算出する処理を繰り返し実行する。LSTM80bは、LSTM80aから入力される隠れ状態ベクトルと、LSTM80bのパラメータθ80bに基づく計算を行って、隠れ状態ベクトルを算出し、GRU81aに出力する。たとえば、LSTM80bは、4つのデータが入力される度に、隠れ状態ベクトルを、GRU81aに出力する。
たとえば、本実施例3に係るLSTM80a、LSTM80bを、時系列方向に4つ単位のLSTMとする。時系列データには、データx(0)、x(1)、x(2)、x(3)、x(4)、・・・、x(n)が含まれているものとする。
LSTM80a-01は、データx(0)が入力されると、データx(0)とパラメータθ80aとに基づく計算を行って隠れ状態ベクトルを算出し、隠れ状態ベクトルをLSTM80b-02,80a-11に出力する。LSTM80b-02は、隠れ状態ベクトルの入力を受け付けると、パラメータθ80bに基づく計算を行って、隠れ状態ベクトルを算出し、LSTM80b-12に出力する。
LSTM80a-11は、データx(1)と、隠れ状態ベクトルとが入力されると、パラメータθ80aに基づく計算を行って隠れ状態ベクトルを算出し、隠れ状態ベクトルをLSTM80b-12,80a-21に出力する。LSTM80b-12は、2つの隠れ状態ベクトルの入力を受け付けると、パラメータθ80bに基づく計算を行って、隠れ状態ベクトルを算出し、LSTM80b-22に出力する。
LSTM80a-21は、データx(2)と、隠れ状態ベクトルとが入力されると、パラメータθ80aに基づく計算を行って隠れ状態ベクトルを算出し、隠れ状態ベクトルをLSTM80b-22,80a-31に出力する。LSTM80b-22は、2つの隠れ状態ベクトルの入力を受け付けると、パラメータθ80bに基づく計算を行って、隠れ状態ベクトルを算出し、LSTM80b-32に出力する。
LSTM80a-31は、データx(3)と、隠れ状態ベクトルとが入力されると、パラメータθ80aに基づく計算を行って隠れ状態ベクトルを算出し、隠れ状態ベクトルをLSTM80b-32に出力する。LSTM80b-32は、2つの隠れ状態ベクトルの入力を受け付けると、パラメータθ80bに基づく計算を行って、隠れ状態ベクトルh(3)を算出し、GRU81a-01に出力する。
LSTM80a-41~80a-71,80b-42~80b-72は、データx(4)~x(7)が入力されると、LSTM80a-01~80a-31,80b-02~80b-32と同様に隠れ状態ベクトルを算出する。LSTM80b-32は、隠れ状態ベクトルh(7)を、GRU81a-11に出力する。
LSTM80a-n21~80a-n1,80b-n-22~80b-n2は、データx(n-2)~x(n)が入力されると、LSTM80a-01~80a-31,80b-02~80b-32と同様に隠れ状態ベクトルを算出する。LSTM80b-n2は、隠れ状態ベクトルh(n)を、GRU81a-m1に出力する。
GRU81aは、GRU81bに接続され、GRU81bは、Affine変換部85aに接続される。GRU81aは、LSTM80bから隠れ状態ベクトルが入力されると、GRU81aのパラメータθ81aに基づく計算を行って、隠れ状態ベクトルを算出し、GRU81bに入力する。GRU81bは、GRU81aから隠れベクトルが入力されると、GRU81bのパラメータθ81bに基づく計算を行って、隠れ状態ベクトルを算出し、Affine変換部85aに出力する。GRU81a、GRU81bは、上記処理を繰り返し実行する。
GRU81a-01は、隠れ状態ベクトルh(3)が入力されると、隠れ状態ベクトルh(3)とパラメータθ81aに基づく計算を行って隠れ状態ベクトルを算出し、隠れ状態ベクトルを、GRU81b-02,81a-11に出力する。GRU81b-02は、隠れベクトルの入力を受け付けると、パラメータθ81bに基づく計算を行って、隠れ状態ベクトルを算出し、GRU81b-12に出力する。
GRU81a-11は、隠れ状態ベクトルh(7)と、前のGRUの隠れ状態ベクトルとが入力されると、パラメータθ81aに基づく計算を行って隠れ状態ベクトルを算出し、隠れ状態ベクトルをGRU81b-12,81a-31(図示略)に出力する。GRU81b-12は、2つの隠れ状態ベクトルの入力を受け付けると、パラメータθ81bに基づく計算を行って、隠れ状態ベクトルを算出し、GRU81b-22(図示略)に出力する。
GRU81a-m1は、隠れ状態ベクトルh(n)と、前のGRUの隠れ状態ベクトルとが入力されると、パラメータθ81aに基づく計算を行って隠れ状態ベクトルを算出し、隠れ状態ベクトルをGRU81b-m2に出力する。GRU81b-m2は、2つの隠れ状態ベクトルの入力を受け付けると、パラメータθ81bに基づく計算を行って、隠れ状態ベクトルg(n)を算出し、隠れ状態ベクトルg(n)をAffine変換部85aに出力する。
Affine変換部85aは、GRU81bから出力される隠れ状態ベクトルg(n)に対して、アフィン変換を実行する処理部ある。たとえば、Affine変換部85aは、式(3)に基づいて、アフィン変換を実行し、ベクトルYAを算出する。式(3)に含まれるA、bに関する説明は、式(1)に含まれるA、bに関する説明と同様である。
YA=Ag(n)+b・・・(3)
Softmax部85bは、アフィン変換されたベクトルYAをソフトマック関数に入力して、値「Y」を算出する処理部である。Yは、時系列データに対する推定結果のベクトルとなる。
次に、本実施例3に係る学習装置の構成の一例について説明する。図28は、本実施例3に係る学習装置の構成を示す機能ブロック図である。図28に示すように、この学習装置300は、通信部310、入力部320、表示部330、記憶部340、制御部350を有する。
通信部310は、ネットワーク等を介して、外部装置(図示略)と通信を実行する処理部である。たとえば、通信部310は、後述する学習データテーブル341の情報を外部装置から受信する。通信部210は、通信装置の一例である。後述する制御部350は、通信部310を介して、外部装置とデータをやり取りする。
入力部320は、各種の情報を、学習装置300に入力するための入力装置である。たとえば、入力部320は、キーボードやタッチパネル等に対応する。
表示部330は、制御部350から出力される各種の情報を表示する表示装置である。表示部330は、液晶ディスプレイやタッチパネル等に対応する。
記憶部340は、学習データテーブル341、第1学習データテーブル342、第2学習データテーブル343、パラメータテーブル344を有する。記憶部340は、RAM、ROM、フラッシュメモリなどの半導体メモリ素子や、HDDなどの記憶装置に対応する。
学習データテーブル341は、学習データを格納するテーブルである。図29は、本実施例3に係る学習データテーブルのデータ構造の一例を示す図である。図29に示すように、学習データテーブル341は、教師ラベルと、時系列データと、音声データとを対応付ける。本実施例3に係る時系列データは、ユーザ音声に関する、音素列のデータである。音声データは、時系列データの生成元となる音声データである。
第1学習データテーブル342は、学習データテーブル341に格納される時系列データを分割した、第1部分時系列データを格納するテーブルである。本実施例3では、時系列データは、発声の区切り、話者交代といった所定の基準で分割される。図30は、本実施例3に係る第1学習データテーブルのデータ構造の一例を示す図である。図30に示すように、第1学習データテーブル342は、教師ラベルと、第1部分時系列データとを対応付ける。各第1部分時系列データは、時系列データを、所定の基準で分割したデータである。
第2学習データテーブル343は、第1学習データテーブル342の各第1部分時系列データを、LSTM80a、LSTM80bに入力して得られる第2部分時系列データを格納するテーブルである。図31は、本実施例3に係る第2学習データテーブルのデータ構造の一例を示す図である。図31に示すように、第2学習データテーブル343は、教師ラベルと、第2部分時系列データとを対応付ける。各第2部分時系列データは、第1学習データテーブル142の各第1部分時系列データを、LSTM80a、80bに入力して得られる。
パラメータテーブル344は、LSTM80aのパラメータθ80a、LSTM80bのパラメータθ80b、GRU81aのパラメータθ81a、GRU81bのパラメータθ81b、Affine変換部85aのパラメータを格納するテーブルである。
制御部350は、図27に示す階層型のRNNを実行して、パラメータの学習を行う処理部である。制御部350は、取得部351、第1生成部352、第1学習部353、第2生成部354、第2学習部355を有する。制御部350は、CPUやMPUなどによって実現できる。また、制御部350は、ASICやFPGAなどのハードワイヤードロジックによっても実現できる。
取得部351は、外部装置(図示略)からネットワークを介して、学習データテーブル341の情報を取得する処理部である。取得部351は、取得した学習データテーブル341の情報を、学習データテーブル341に格納する。
第1生成部352は、学習データテーブル341を基にして、第1学習データテーブル342の情報を生成する処理部である。図32は、本実施例3に係る第1生成部の処理を説明するための図である。第1生成部352は、学習データテーブル341の時系列データを選択する。たとえば、時系列データには、発話者Aおよび発話者Bの音声データが対応付けられているものとする。第1生成部352は、時系列データに対応する音声の特徴量を算出し、たとえば、音声パワーが閾値未満となる発話の区切り時刻を特定する。図32に示す例では、発話の区切り時刻を、t1、t2、t3とする。
第1生成部352は、発話の区切り時刻t1、t2、t3を基にして、時系列データを、複数の第1部分時系列データに分割する。図32に示す例では、第1生成部352は、時系列データ「ohayokyowaeetoneesanjidehairyokai」を「ohayo」、「kyowa」、「eetoneesanjide」、「hairyokai」の各第1部分時系列データに分割する。第1生成部352は、時系列データに対応する教師ラベル「Y」と、各第1部分時系列データとを対応付けて、第1学習データテーブル342に格納する。
第1学習部353は、第1学習データテーブル342を基にして、LSTM80のパラメータθ80を学習する処理部である。第1学習部353は、学習したパラメータθ80をパラメータテーブル344に格納する。
図33は、本実施例3に係る第1学習部の処理を説明するための図である。第1学習部353は、LSTM80a、LSTM80b、Affine変換部85a、Softmax部85bを実行する。第1学習部353は、LSTM80aをLSTM80bに接続し、LSTM80bをAffine変換部85aに接続し、Affine変換部85aをSoftmax部85bに接続する。第1学習部353は、LSTM80aのパラメータθ80aを初期値に設定し、LSTM80bのパラメータθ80bを初期値に設定する。
第1学習部353は、第1学習データテーブル342の第1部分時系列データに格納された各データを、LSTM80a,80bに順に入力し、Softmax部85bから出力される推測ラベルYが、教師ラベルに近づくように、LSTM80aのパラメータθ80a、LSTM80aのパラメータθ80b、Affine変換部85aのパラメータを学習する。第1学習部353は、第1学習データテーブル342に格納された各第1部分時系列データについて、上記処理を「D」回繰り返し実行する。Dは予め設定される値であり、たとえば、「D=10」とする。第1学習部353は、勾配降下法等を用いて、LSTM80aのパラメータθ80a、LSTM80aのパラメータθ80b、Affine変換部85aのパラメータを学習する。
第1学習部353は、D回学習を行った場合、第1学習データテーブル342の教師ラベルを更新する処理を実行する。図34は、本実施例3に係る第1学習部の教師ラベル更新処理の一例を示す図である。
図34の学習結果6Aは、第1部分時系列データ(データ1、データ2、・・・)と、教師ラベルと、推定ラベルとを対応付ける。たとえば、データ1「ohayo」は、LSTM80に、音素列「o」、「h」、「a」、「y」、「o」を入力したことを示す。教師ラベルは、第1学習データテーブル342で定義された、第1部分時系列データに対応する教師ラベルである。推定ラベルは、第1部分時系列データを、図33のLSTM80に、入力した場合に、Softmax部75bから出力される推定ラベルである。学習結果6Aにおいて、データ1「ohayo」の教師ラベルは「Y」であり、推定ラベルが「Z」であることが示される。
学習結果6Aに示す例では、データ1「ohayo」、データ1「kyowa」、データ2「hai」、データ2「sodesu」において、教師ラベルと、推定ラベルとが異なっている。第1学習部353は、教師ラベルと、推定ラベルとが異なっている教師ラベルのうち、所定の割合の教師ラベルを、推定ラベル、推定ラベル以外の他のラベル(たとえば、カテゴリ無しのラベル)に更新する。更新結果6Bに示すように、第1学習部353は、データ1「ohayo」に対応する教師ラベルを「No Class」に更新し、データ1「hai」に対応する教師ラベルを「No Class」に更新する。第1学習部353は、図34で説明した更新を、第1学習データテーブル342の教師ラベルに反映させる。
第1学習部353は、更新した第1学習データテーブル342を用いて、再度、LSTM80のパラメータθ80およびAffine変換部85aのパラメータを学習する。第1学習部353は、学習したLSTM80のパラメータθ80を、パラメータテーブル344に格納する。
図28の説明に戻る。第2生成部354は、第1学習データテーブル342を基にして、第2学習データテーブル343の情報を生成する処理部である。図35は、本実施例3に係る第2生成部の処理を説明するための図である。
第2生成部354は、LSTM80a,80bを実行し、第1学習部353によって学習済みのパラメータθ80aを、LSTM80aに設定し、パラメータθ80bを、LSTM80bに設定する。第2生成部354は、各第1部分時系列データを、LSTM80a-01~80a-41に順に入力し、隠れ状態ベクトルhを算出する処理を繰り返し実行する。第2生成部354は、学習データテーブル341の1つのレコードの時系列データから分割された各第1部分時系列データをLSTM80aに入力することで、一組の第2部分時系列データを算出する。かかる一組の第2部分時系列データに対応する教師ラベルは、分割元の時系列データに対応する教師ラベルとなる。
たとえば、第2生成部354は、各第1部分時系列データ「ohayo」、「kyowa」、「eetoneesanjide」、「hairyokai」、をLSTM80aにそれぞれ入力することで、第2部分時系列データ「h1、h2、h3、h4」を算出する。かかる第2部分時系列データ「h1、h2、h3、h4」に対応する教師ラベルは、時系列データ「ohayokyowaeetoneesanjidehairyokai」の教師ラベル「Y」となる。
第2生成部354は、第1学習データテーブル342の他のレコードについても、上記処理を繰り返し実行することで、第2学習データテーブル343の情報を生成する。第2生成部354は、第2学習データテーブル343の情報を、第2学習データテーブル343に格納する。
第2学習部355は、第2学習データテーブル343を基にして、階層型のRNNのGRU81aのパラメータθ81aおよびGRU81bのパラメータθ81bを学習する処理部である。第2学習部355は、学習したパラメータθ81a,θ81bをパラメータテーブル344に格納する。また、第2学習部355は、Affine変換部85aのパラメータを、パラメータテーブル344に格納する。
図36は、本実施例3に係る第2学習部の処理を説明するための図である。第2学習部355は、GRU81a、GRU81b、Affine変換部85a、Softmax部85bを実行する。第2学習部355は、GRU81aをGRU81bに接続し、GRU81bをAffine変換部85aに接続し、Affine変換部85aをSoftmax部85bに接続する。第2学習部355は、GRU81aのパラメータθ81aを初期値に設定し、GRU81bのパラメータθ81bを初期値に設定する。
第2学習部355は、第2学習データテーブル343の第2部分時系列データに格納された各データを、GRU81に順に入力し、Softmax部85bから出力される推測ラベルが、教師ラベルに近づくように、GRU81a,81bのパラメータθ81a,θ81bおよびAffine変換部85aのパラメータを学習する。第2学習部355は、第2学習データテーブル343に格納された各第2部分時系列データについて、上記処理を繰り返し実行する。たとえば、第2学習部355は、勾配降下法等を用いて、GRU81a,81bのパラメータθ81a,θ81bおよびAffine変換部85aのパラメータを学習する。
次に、本実施例3に係る学習装置300の処理手順の一例について説明する。図37は、本実施例3に係る学習装置の処理手順を示すフローチャートである。以下の説明では、適宜、LSTM80aおよびLSTM80aをまとめて、LSTM80と表記する。パラメータθ80a、パラメータθ80bをまとめて、パラメータθ80と表記する。GRU81aと、GRU81bとをまとめて、GRU81と表記する。パラメータθ81a、パラメータθ81bをまとめて、パラメータθ81と表記する。図37に示すように、学習装置300の第1生成部352は、学習データテーブル341に含まれる時系列データを発話の区切りを基にして分割し、第1部分時系列データを生成する(ステップS301)。第1生成部352は、第1部分時系列データと教師ラベルとの組を第1学習データテーブルに格納する(ステップS302)。
学習装置300の第1学習部353は、第1学習データテーブル242を基にして、LSTM80のパラメータθ80の学習をD回実行する(ステップS303)。第1学習部353は、第1学習データテーブル342について、推定ラベルと教師ラベルとが異なる教師ラベルの内、所定割合の教師ラベルを、「No Class」に変更する(ステップS304)。
第1学習部353は、更新した第1学習データテーブル342を基にして、LSTM80のパラメータθ80を学習する(ステップS305)。第1学習部353は、学習済みのLSTMのパラメータθ80をパラメータテーブル344に格納する(ステップS306)。
学習装置300の第2生成部354は、第1学習データテーブル342と、学習済みのLSTM80のパラメータθ80を用いて、第2学習データテーブル343の情報を生成する(ステップS307)。
学習装置300の第2学習部355は、第2学習データテーブル343を基にして、GRU81のパラメータθ81およびAffine変換部85aのパラメータを学習する(ステップS308)。第2学習部255は、GRU81のパラメータθ81およびAffine変換部85aのパラメータをパラメータテーブル344に格納する(ステップS309)。
次に、本実施例3に係る学習装置300の効果について説明する。学習装置300は、時系列データに対応する音声の特徴量を算出し、たとえば、音声パワーが閾値未満となる発話の区切り時刻を特定し、特定した区切り時刻を基にして、第1部分時系列データを生成する。これにより、発話区間を一つの単位として、LSTM80、GRU81の学習を行うことができる。
学習装置300は、第1学習データテーブル342を基にして、LSTM80のパラメータθ80を学習する際に、D回学習を行った後に、教師ラベルと推定ラベルとを比較する。学習装置300は、教師ラベルと、推定ラベルとが異なっている教師ラベルのうち、所定の割合の教師ラベルを、カテゴリ無しのラベルに更新する。かかる処理を実行することで、全体の識別に寄与しない音素列の区間の影響を抑止することができる。
次に、本実施例に示した学習装置100(200,300)と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。図38は、本実施例に係る学習装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
図38に示すように、コンピュータ400は、各種演算処理を実行するCPU401と、ユーザからのデータの入力を受け付ける入力装置402と、ディスプレイ403とを有する。また、コンピュータ400は、記憶媒体からプログラム等を読み取る読み取り装置404と、有線または無線ネットワークを介して、外部装置等との間でデータの授受を行うインタフェース装置405とを有する。コンピュータ400は、各種情報を一時記憶するRAM406と、ハードディスク装置407とを有する。そして、各装置401~407は、バス408に接続される。
ハードディスク装置407は、取得プログラム407a、第1生成プログラム407b、第1学習プログラム407c、第2生成プログラム407d、第2学習プログラム407eを有する。CPU401は、取得プログラム407a、第1生成プログラム407b、第1学習プログラム407c、第2生成プログラム407d、第2学習プログラム407eを読み出して、RAM406に展開する。
取得プログラム407aは、取得プロセス406aとして機能する。第1生成プログラム407bは、第1生成プロセス406bとして機能する。第1学習プログラム407cは、第1生成プロセス406cとして機能する。第2生成プログラム407dは、第2生成プロセス406dとして機能する。第2学習プログラム407eは、第2学習プロセス406eとして機能する。
取得プロセス406aの処理は、取得部151、251,351の処理に対応する。第1生成プロセス406bの処理は、第1生成部152,252,352の処理に対応する。第1学習プロセス406cの処理は、第1学習部153,253,353の処理に対応する。第2生成プロセス406dの処理は、第2生成部154,254,354の処理に対応する。第2学習プロセスの処理は、第2学習部155,255,355の処理に対応する。
なお、各プログラム407a~407eについては、必ずしも最初からハードディスク装置407に記憶させておかなくてもよい。例えば、コンピュータ400に挿入されるフレキシブルディスク(FD)、CD-ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ400が各プログラム407a~407eを読み出して実行するようにしてもよい。
図示を省略したが、ハードディスク装置407は、第3生成プログラムおよび第3学習プログラムを有していてもよい。CPU401は、第3生成プログラムおよび第3学習プログラムを読み出して、RAM406に展開する。第3生成プログラムおよび第3学習プログラムは、第3生成プロセスおよび第3学習プロセスとして機能する。第3生成プロセスは、第3生成部256の処理に対応する。第3学習プロセスは、第3学習部257の処理に対応する。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)時系列に複数のデータが並んだ時系列データを所定区間に分割することで、複数の第1部分時系列データを生成し、前記複数の第1部分時系列データと、前記時系列データ全体に対する教師データとをそれぞれ対応付けた第1学習データを生成する第1生成部と、
前記第1学習データを基にして、複数の層に含まれる各RNN(Recurrent Neural Network)のうち、第1層に含まれる第1RNNの第1パラメータを学習する第1学習部と、
前記複数の層に含まれる各RNNのパラメータを学習する場合、学習済みの前記第1パラメータを前記第1RNNに設置して、前記第1部分時系列データをそれぞれ入力して得られるデータと、前記教師データとを基にして、前記複数の層に含まれる各RNNのパラメータを学習する学習処理部と
を有することを特徴とする学習装置。
(付記2)前記学習処理部は、前記第1RNNの学習済みの前記第1パラメータを設置して、前記第1部分時系列データをそれぞれ入力して得られる複数の第2部分時系列データと、前記教師データとをそれぞれ対応付けた第2学習データを生成する第2生成部と、
前記第2学習データを基にして、前記第1層よりも一つ上層となる第2層に含まれる第2RNNの第2パラメータを学習する第2学習部とを有することを特徴とする付記1に記載の学習装置。
(付記3)前記第1生成部は、前記第1RNNに前記第1部分時系列データを入力した場合に出力される出力データと、前記教師データとが異なる場合に、前記第1学習データに含まれる第1部分時系列データと前記教師データとの複数の組のうち、一部の組について、第1部分時系列データに対応する前記教師データを、前記出力データに更新することで、前記第1学習データを生成することを特徴とする付記1または2に記載の学習装置。
(付記4)前記第1生成部は、前記第1RNNに前記第1部分時系列データを入力した場合に出力される出力データと、前記教師データとが異なる場合に、前記第1学習データに含まれる第1部分時系列データと前記教師データとの複数の組のうち、一部の組について、第1部分時系列データに対応する前記教師データを、前記教師データおよび前記出力データとは異なる他のデータに更新することで、前記第1学習データを生成することを特徴とする付記1または2に記載の学習装置。
(付記5)前記第1生成部は、前記時系列データに対応する音声データの特徴を基にして、前記時系列データを前記複数の第1部分時系列データに分割することを特徴とする付記1~4のいずれか一つに記載の学習装置。
(付記6)コンピュータが実行する学習方法であって、
時系列に複数のデータが並んだ時系列データを所定区間に分割することで、複数の第1部分時系列データを生成し、前記複数の第1部分時系列データと、前記時系列データ全体に対する教師データとをそれぞれ対応付けた第1学習データを生成し、
前記第1学習データを基にして、複数の層に含まれる各RNN(Recurrent Neural Network)のうち、第1層に含まれる第1RNNの第1パラメータを学習し、
前記複数の層に含まれる各RNNのパラメータを学習する場合、学習済みの前記第1パラメータを前記第1RNNに設置して、前記第1部分時系列データをそれぞれ入力して得られるデータと、前記教師データとを基にして、前記複数の層に含まれる各RNNのパラメータを学習する
処理を実行することを特徴とする学習方法。
(付記7)前記複数の層に含まれる各RNNのパラメータを学習する処理は、前記第1RNNの学習済みの前記第1パラメータを設置して、前記第1部分時系列データをそれぞれ入力して得られる複数の第2部分時系列データと、前記教師データとをそれぞれ対応付けた第2学習データを生成し、前記第2学習データを基にして、前記第1層よりも一つ上層となる第2層に含まれる第2RNNの第2パラメータを学習することを特徴とする付記6に記載の学習方法。
(付記8)前記第1学習データを生成する処理は、前記第1RNNに前記第1部分時系列データを入力した場合に出力される出力データと、前記教師データとが異なる場合に、前記第1学習データに含まれる第1部分時系列データと前記教師データとの複数の組のうち、一部の組について、第1部分時系列データに対応する前記教師データを、前記出力データに更新することで、前記第1学習データを生成することを特徴とする付記6または7に記載の学習方法。
(付記9)前記第1学習データを生成する処理は、前記第1RNNに前記第1部分時系列データを入力した場合に出力される出力データと、前記教師データとが異なる場合に、前記第1学習データに含まれる第1部分時系列データと前記教師データとの複数の組のうち、一部の組について、第1部分時系列データに対応する前記教師データを、前記教師データおよび前記出力データとは異なる他のデータに更新することで、前記第1学習データを生成することを特徴とする付記6または7に記載の学習方法。
(付記10)前記第1学習データを生成する処理は、前記時系列データに対応する音声データの特徴を基にして、前記時系列データを前記複数の第1部分時系列データに分割することを特徴とする付記6~9のいずれか一つに記載の学習方法。
(付記11)コンピュータに、
時系列に複数のデータが並んだ時系列データを所定区間に分割することで、複数の第1部分時系列データを生成し、前記複数の第1部分時系列データと、前記時系列データ全体に対する教師データとをそれぞれ対応付けた第1学習データを生成し、
前記第1学習データを基にして、複数の層に含まれる各RNN(Recurrent Neural Network)のうち、第1層に含まれる第1RNNの第1パラメータを学習し、
前記複数の層に含まれる各RNNのパラメータを学習する場合、学習済みの前記第1パラメータを前記第1RNNに設置して、前記第1部分時系列データをそれぞれ入力して得られるデータと、前記教師データとを基にして、前記複数の層に含まれる各RNNのパラメータを学習する
処理を実行させることを特徴とする学習プログラム。
(付記12)前記複数の層に含まれる各RNNのパラメータを学習する処理は、前記第1RNNの学習済みの前記第1パラメータを設置して、前記第1部分時系列データをそれぞれ入力して得られる複数の第2部分時系列データと、前記教師データとをそれぞれ対応付けた第2学習データを生成し、前記第2学習データを基にして、前記第1層よりも一つ上層となる第2層に含まれる第2RNNの第2パラメータを学習することを特徴とする付記11に記載の学習プログラム。
(付記13)前記第1学習データを生成する処理は、前記第1RNNに前記第1部分時系列データを入力した場合に出力される出力データと、前記教師データとが異なる場合に、前記第1学習データに含まれる第1部分時系列データと前記教師データとの複数の組のうち、一部の組について、第1部分時系列データに対応する前記教師データを、前記出力データに更新することで、前記第1学習データを生成することを特徴とする付記11または12に記載の学習プログラム。
(付記14)前記第1学習データを生成する処理は、前記第1RNNに前記第1部分時系列データを入力した場合に出力される出力データと、前記教師データとが異なる場合に、前記第1学習データに含まれる第1部分時系列データと前記教師データとの複数の組のうち、一部の組について、第1部分時系列データに対応する前記教師データを、前記教師データおよび前記出力データとは異なる他のデータに更新することで、前記第1学習データを生成することを特徴とする付記11または12に記載の学習プログラム。
(付記15)前記第1学習データを生成する処理は、前記時系列データに対応する音声データの特徴を基にして、前記時系列データを前記複数の第1部分時系列データに分割することを特徴とする付記11~14のいずれか一つに記載の学習プログラム。