以下、添付図面を参照しながら本発明の実施形態を詳細に説明する。なお、図面の説明において同一または同等の要素には同一の符号を付し、重複する説明を省略する。
実施形態に係る機械学習システム10は、任意の事象を予測するコンピュータシステムである。機械学習とは、与えられた情報に基づいて反復的に学習することで、法則またはルールを自律的に見つけ出す手法である。機械学習システム10は、ニューラルネットワークを用いた機械学習を実行することで事象を予測する。ニューラルネットワークとは、人間の脳神経系の仕組みを模した情報処理のモデルである。
事象とは、観察可能なかたちをとって現れる事柄であり、言い換えると、任意の形式のデータで表現可能な事柄である。機械学習システム10が予測する事象は何ら限定されず、したがって、機械学習システム10は任意の目的で用いられてもよい。機械学習システム10は現実世界における事象を予測してもよいし、仮想世界における事象を予測してもよい。機械学習システム10は、処理対象のデータがどの分類に属するかを決める分類問題(識別問題)に用いられてもよいし、処理対象のデータから未知のデータ(新たなデータ)を予測する回帰問題に用いられてもよい。機械学習システム10は、自然言語処理、画像処理(画像認識)、音声処理(音声認識)、データ予測などの様々な情報処理に用いられ得る。例えば、機械学習システム10は、機械翻訳、自動対話、光学的文字認識(OCR)、自動運転、医療診断、不正検知、顔検出、商品レコメンド、顧客分析、金融取引などの様々な技術分野に応用することができる。したがって、機械学習の処理結果として出力される予測結果(予測される事象)は様々であり、例えば、翻訳文、音声または画像から認識されたテキスト、運転の制御に関する指示、診断結果、検知された不正、レコメンドされた商品、金融取引に関する指示などであり得る。
機械学習システム10は1台のコンピュータで構成されてもよいし、複数台のコンピュータで構成されてもよい。複数台のコンピュータを用いる場合には、これらのコンピュータがインターネット、イントラネット等の通信ネットワークを介して接続されることで、論理的に一つの機械学習システム10が構築される。
図1は機械学習システム10の機能構成の一例を示す図である。図1に示すように、機械学習システム10は機能要素として予測部11を備える。
予測部11はニューラルネットワークを用いて事象を予測する機能要素である。予測部11は処理対象の入力データを取得し、ニューラルネットワークにその入力データを入力して機械学習を実行することで、出力データ(処理結果)を得る。
入力データの取得方法は限定されない。例えば、予測部11は任意のデータベースに記憶されているデータを入力データとして読み出してもよいし、別のコンピュータシステムから送信されてきたデータを入力データとして受信してもよい。あるいは、予測部11は機械学習システム10内の別の機能要素(図示せず)で処理されたデータを入力データとして取得してもよい。
出力データ(処理結果)の処理方法も限定されない。例えば、予測部11は出力データを、モニタ上に表示してもよいし、任意のデータベースに格納してもよいし、別のコンピュータシステムに向けて送信してもよい。あるいは、機械学習システム10内の別の機能要素(図示せず)がその出力データをさらに処理してもよい。
本実施形態では、予測部11は学習済みのニューラルネットワーク(いわゆる、学習済みモデル)を用いることを前提とする。学習済みモデルは、最も予測精度が高いと推定される最良のニューラルネットワークであるといえる。ただし、学習済みモデルが“現実に最良である”とは限らないことに留意されたい。一般に、学習済みモデルを生成するために、1以上の訓練サンプルを含む訓練データセット(コーパス)が用意される。学習済みモデルは、学習をさせるニューラルネットワークに個々の訓練サンプルを逐次入力しながら機械学習を実行することで得ることができる。学習済みモデルは任意の従来技術を用いて生成することができる。学習済みモデルは機械学習システム10で生成されてもよいし、別のコンピュータシステムで生成されてもよい。
学習済みモデルは、コンピュータプログラムとパラメータとの組合せであるということができる。あるいは、学習済みモデルは、ニューラルネットワークの構造と該ニューラルネットワークの個々のニューロン間の結びつきの強さであるパラメータ(重み付け係数)との組合せであるということができる。あるいは、学習済みモデルは、一の結果を得る(所定の処理を実行する)ことができるように構成されたコンピュータプログラムであるということができる。
図2は、機械学習システム10で用いられるニューラルネットワーク(学習済みモデル)の一例を模式的に示す図である。このニューラルネットワーク12は予測部11の一部ということができる。ニューラルネットワーク12は、入力層である第1層と、中間層(隠れ層)である第2層、第3層、および第4層と、出力層である第5層とで構成される。第1層は、p個のパラメータを要素とする入力ベクトルx=(x0,x1,x2,…xp)をそのまま第2層に出力する。第2層、第3層、および第4層のそれぞれは、活性化関数により総入力を出力に変換してその出力を次の層に渡す。第5層も活性化関数により総入力を出力に変換し、この出力は、q個のパラメータを要素とするニューラルネットワークの出力ベクトルy=(y0,y1,…,yq)である。各層のノード(要素)の個数は限定されず、例えば、処理しようとするデータの特性と、得ようとするデータの特性とに応じて設定されてよい。
ニューラルネットワーク12は5層(入力層を除いた場合には4層)であるが、機械学習システム10(予測部11)を構成するニューラルネットワークの層の数は何ら限定されない。例えば、機械学習システム10は3以上の任意の個数の層を有するニューラルネットワークを用いてもよく、これは、1以上の任意の個数の中間層を有するニューラルネットワークを用いてもよいことを意味する。
予測部11の特徴の一つは、最後の中間層の結果を示すベクトルから出力層のベクトル(出力ベクトル)を得るための計算方法にある。ニューラルネットワーク12では第4層が最後の中間層である。以下では、最後の中間層の結果を示すベクトルを「中間ベクトル」という。予測部11は、最初から正確な出力ベクトルを求めるのではなく、まずは出力ベクトルの近似値を計算する。そして、予測部11はその近似値を最終結果として用いるか否かを判定する。近似値を用いると判定した場合には、予測部11はその近似値を出力ベクトルとして設定する。一方、近似値を採用しないと判定した場合には、予測部11は正確な出力ベクトルを求める。
図3〜図5は、予測部11による出力ベクトルの計算を説明するための図である。図3は従来から行われている計算方法を示す図である。図4および図5は、本実施形態における出力ベクトルの近似値を求める方法を示す図である。
予測部11は、m次元の中間ベクトルからn次元の出力ベクトルを得るために、n行m列の変換行列(これを「n×mの変換行列」という。)を用いる。中間ベクトルをxとし、出力ベクトルをyとし、変換行列をAとすると、図3に示すように、正確な出力ベクトルはy=Axで得られる。出力ベクトルyを得るためにn×mの行列演算が行われるので、出力層の次元が大きいと計算量が膨大になる。例えば、中間ベクトルの次元が500であっても、出力ベクトルの次元が50000であると、その出力ベクトルを得るために500×50000の行列演算が必要になる。分類問題(識別問題)における分類の候補数が大きいなどの理由により出力層の次元が大きくなると、出力層を得るための行列演算がニューラルネットワークの計算において支配的になる傾向がある。
本実施形態では、予測部11はその行列演算を高速に実行するために、行列分解の一手法である特異値分解(SVD)を利用する。図4に示すように、予測部11は変換行列Aに対して、A=UΣVで示される特異値分解を実行することで、変換行列Aを行列UΣと行列Vとに分解する。行列Uおよび行列Vはいずれも直交行列である。行列Σは対角行列であり、より具体的には、非対角成分が0であり且つ対角成分((i,i)要素)が特異値(変換行列Aの特異値)で構成された行列である。行列UΣは行列Uと行列Σとの積である。n×mの変換行列Aは、n×nの行列Uと、n×mの行列Σと、m×mの行列Vとに分解される。ニューラルネットワーク(学習済みモデル)の一部を構成する変換行列Aは予め与えられるので、予測部11は予め特異値分解を実行することで、行列UΣおよび行列Vを取得しておくことができる。
予測部11は、行列Σの前方の列に重要な要素(計算に影響する要素)が位置し、後方の列に計算にあまり影響を与えない要素が位置するように、行列Σの対角成分を並べる。具体的には、予測部11は、前方の列に含まれる各対角成分が後方の列の対角成分の最大値と同じかまたは該最大値よりも大きくなるように、行列Σの対角成分を並べる。要するに、予測部11は、値が大きな対角成分が前方の列に集まるように行列Σの対角成分を並べる。「前方の列」とは行列Σの1列目からk列目までのことをいい、「後方の列」とは行列Σの(k+1)列目から最後列までのことをいう。値kは、1以上で、且つ行列Σの列数よりも小さい。例えば、予測部11は、1列目から最後列に向かって対角成分が降順に並ぶように行列Σを生成してもよい。
予測部11は行列UΣおよび行列Vを用いて出力ベクトルの近似値を求める。図5に示すように、予測部11は行列UΣを前行列Lと後行列Rとに分割する。前行列Lは行列UΣの1列目からk列目(すなわち、行列UΣの前方の列)を用いて定義される行列であり、したがって、n×kの行列である。後行列Rは行列UΣの残りの列(すなわち、行列UΣの後方の列)で構成される行列である。より具体的には、後行列Rは行列UΣの(k+1)列目から最後列を用いて定義される行列であり、したがって、n×(m−k)の行列である。値kは、行列UΣの分割位置を示す値であるといえる。
また、予測部11は行列Vと中間ベクトルxとに基づいてm次元の一時ベクトルx´を求める。具体的には、予測部11は行列Vと中間ベクトルxとの積を一時ベクトルx´として求める。すなわち、x´=Vxである。予測部11はこの一時ベクトルx´を前ベクトルxLと後ベクトルxRとに分割する。前ベクトルxLは一時ベクトルx´の1個目からk個目までの要素を用いて定義されるベクトルであり、したがって、k次元のベクトルである。後ベクトルxRは一時ベクトルx´の残りの要素で構成されるベクトルである。より具体的には、後ベクトルxRは一時ベクトルx´の(k+1)個目の要素から最後の要素(m個目の要素)を用いて定義される行列であり、したがって、(m−k)次元のベクトルである。値kは、一時ベクトルx´の分割位置も示す値であるといえる。
続いて、予測部11は前行列Lと前ベクトルxLとに基づいてn次元の近似ベクトルyaを求める。具体的には、予測部11は前行列Lと前ベクトルxLとの積を近似ベクトルyaとして求める。すなわち、ya=LxLである。近似ベクトルyaは、y=Axで得られる正確な出力ベクトルyの近似値である。
近似ベクトルyaは、変換行列Aのうち重要な要素(前行列L)のみを用いて得られるので、正確な出力ベクトルyを高精度に近似していることが期待できる。具体的には、近似ベクトルyaの最大要素のインデックスは、正確な出力ベクトルyの最大要素のインデックスと同じである蓋然性が高い。ここで、最大要素とは値が最も大きい要素のことをいう。また、インデックスとは、要素の位置を示す要素番号のことをいう。例えば、分類問題(識別問題)では最大要素のインデックスがわかれば十分である。したがって、ya=LxLという近似計算でも最大要素のインデックスが変わらなければ、分類結果(識別結果)は、y=Axを計算した場合と変わらない。その近似計算は、y=Axという行列演算の一部のみを計算することを意味するので、近似ベクトルyaを出力ベクトルyと見なすことで、機械学習の実行時間を短縮することができる。
一方、近似ベクトルyaが出力ベクトルyを近似していない場合には、省略したデータ(後行列Rおよび後ベクトルxR)をさらに用いることで、正確な出力ベクトルy(正確な分類結果)を得ることができる。
図6および図7を参照しながら機械学習システム10の動作を説明する。図6は、学習済みモデルを取得した際に実行される処理の一例を示すフローチャートである。図7は中間ベクトルから出力ベクトルを得る処理の一例を示すフローチャートである。
図6を参照しながら、学習済みモデルを取得した際に実行される処理について説明する。ステップS11では、予測部11が学習済みモデルを取得する。上述したように、この学習済みモデルは、変換行列Aを含んで構成されるニューラルネットワークである。
ステップS12では、予測部11が変換行列Aを特異値分解により行列UΣと行列Vとに分解する。すなわち、予測部11はA=UΣ×Vを計算する。変換行列Aがn×m行列であれば、行列UΣはn×m行列であり、行列Vはm×m行列である。
ステップS13では、予測部11が行列UΣを前行列Lと後行列Rとに分割する。予測部11は、前方の列(1列目からk列目)に含まれる各対角成分が残りの列((k+1)列目から最後列)の対角成分の最大値と同じかまたは該最大値よりも大きくなるように、行列Σの対角成分を並べる。例えば、予測部11はその対角成分を降順に並べてもよい。行列UΣの分割位置を示す値kを決定する方法は限定されない。値kは予め定められていてもよいし、予測部11が動的に(すなわち、自動的に)決定してもよい。
例えば、値kは中間ベクトルの次元数(行列Σの列数)mの半分であってもよい。例えば、次元数mが偶数であればk=m/2である。次元数mが奇数であればk=(m−1)/2、またはk=(m+1)/2でもよい。本実施形態では、次元数mが奇数であるこの場合も、値kが中間ベクトルの次元数の半分である例に含まれるものとする。
あるいは、予測部11は行列Σの対角成分を1列目から最終列に向けて降順に並べた上で、対角成分が予め定めた閾値Ta以上であることを満たす最後の列の列番号をkとして設定してもよい。例えば、対角成分が降順に並んでおり、m=100であり、且つTa=1であるとして、60列目の対角成分が1以上であり、61列目の対角成分が1未満である場合には、予測部11はkを60に設定する。閾値Taの具体的な値は限定されず、例えば、学習済みモデルの特性、予測しようとする事象の特性などの様々な要因を考慮して設定されてよい。
あるいは、予測部11は行列Σの対角成分を1列目から最終列に向けて降順に並べた上で、対角成分の偏差値が予め定めた閾値Tb以上であることを満たす最後の列の列番号をkとして設定してもよい。例えば、対角成分が降順に並んでおり、m=100であり、且つTb=50であるとして、40列目の対角成分の偏差値が50以上であり、41列目の対角成分の偏差値が50未満である場合には、予測部11はkを40に設定する。個々の対角成分の偏差値は、すべての対角成分の平均および分散を用いて求めることができる。閾値Tbの具体的な値は限定されず、例えば、学習済みモデルの特性、予測しようとする事象の特性などの様々な要因を考慮して設定されてよい。
このように値kの決め方は限定されないが、いずれにしても、予測部11は、値が大きな対角成分が前方の列に集まるように行列Σの対角成分を並べた上で、行列UΣを前行列Lおよび後行列Rとに分割する。行列UΣがn×m行列であれば、前行列Lはn×k行列であり、後行列Rはn×(m−k)行列である。
図7を参照しながら出力ベクトルの計算について説明する。図7は一つの出力ベクトルを求める処理を示すものである。或る一つの問題をニューラルネットワーク12を用いて解くために出力ベクトルを複数回求めなければならない場合がある。この場合には、その一つの問題を処理するために、図7に示す一連の処理が複数回実行される。
ステップS21では、予測部11が行列Vと中間ベクトルxとに基づいて一時ベクトルx´を求める。具体的には、予測部11は行列Vと中間ベクトルxとの積を一時ベクトルx´として求める。
ステップS22では、予測部11がその一時ベクトルx´を前ベクトルxLと後ベクトルxRとに分割する。予測部11は、一時ベクトルx´の1個目からk個目までの要素を用いて前ベクトルxLを生成し、一時ベクトルx´の(k+1)個目の要素から最後の要素(m個目の要素)を用いて後ベクトルxRを生成する。一時ベクトルx´をこのように分割するための値kは、行列UΣを前行列Lと後行列Rとに分割する際に用いる値kと同じである。したがって、予測部11は上記のステップS13で設定した値kを一時ベクトルx´の分割でも用いる。
ステップS23では、予測部11が前行列Lと前ベクトルxLとに基づいて近似ベクトルyaを求める。具体的には、予測部11は前行列Lと前ベクトルxLとの積を近似ベクトルyaとして求める。
ステップS24では、予測部11がその近似ベクトルyaにおける最大要素(近似ベクトルyaの要素の最大値)と少なくとも一つの他の要素(最大要素以外の近似ベクトルyaの要素のうちの少なくとも一つ)との乖離度を算出する。ステップS25では、予測部11はその乖離度を予め定められた閾値と比較する。乖離度とは、近似ベクトルyaの最大要素が近似ベクトルyaの他の要素の値からどれだけ離れているかを示す指標である。乖離度が大きいほど、近似ベクトルyaの要素の最大値は他の要素の値から大きく離れている、ということができる。乖離度が一定の水準以上に大きければ、最大要素と他の要素との間に有意な差があるといえる。
ステップS24,S25で用いる乖離度の種類は限定されない。例えば、予測部11は近似ベクトルyaの最大要素と、近似ベクトルyaの中で2番目に大きい要素との差を乖離度として求め、この乖離度が閾値Tcより大きいか否かを判定してもよい。あるいは、予測部11は近似ベクトルyaの最大要素の偏差値を乖離度として求め、この乖離度が閾値Tdより大きいか否かを判定してもよい。この偏差値は、近似ベクトルyaの全要素の平均および分散を用いて求めることができる。閾値Tc、Tdのいずれについても、その具体的な値は限定されず、例えば、学習済みモデルの特性、予測しようとする事象の特性などの様々な要因を考慮して設定されてよい。
乖離度が閾値より大きい場合には(ステップS25においてYES)、処理はステップS26に移り、予測部11が近似ベクトルyaを出力ベクトルyとして設定する。乖離度が閾値より大きければ、近似ベクトルyaの最大要素のインデックスが、正確な出力ベクトルyの最大要素のインデックスと同じである蓋然性が高い。例えば、分類問題(識別問題)では最大要素のインデックスがわかれば十分なので、乖離度が閾値より大きければ、近似ベクトルyaによる分類結果(識別結果)は、正確な出力ベクトルyによる分類結果と変わらないと期待できる。
乖離度が閾値以下である場合には(ステップS25においてNO)、処理はステップS27に移る。ステップS27では、予測部11が、近似ベクトルyaに加えて、後行列Rおよび後ベクトルxRをさらに用いて出力ベクトルyを算出する。具体的には、予測部11は後行列Rと後ベクトルxRとの積を近似ベクトルyaに加えることで正確な出力ベクトルyを求める。すなわち、予測部11はy=ya+RxRを計算する。乖離度が閾値以下であれば、近似ベクトルyaの最大要素のインデックスが、正確な出力ベクトルyの最大要素のインデックスと異なる蓋然性が高い。この場合には、近似ベクトルyaを最終結果として採用するのではなく、出力ベクトルyを正確に計算した方が、予測の精度がより高くなる。予測部11は、省略した後行列Rおよび後ベクトルxRをさらに用いて計算することで、正確な出力ベクトルyを得る。
予測部11は、これら一連の処理により得られた出力ベクトルyに基づいて、ニューラルネットワークの最終的な結果を計算または生成する。最終結果を計算または生成する方法は限定されない。
例えば、予測部11は下記の式(1)で示されるソフトマックス(Softmax)関数を用いて最終結果を求めてもよい。
式(1)において、y
iは出力ベクトルyのi番目の要素を表し、nは出力ベクトルyの要素数を表す。
このソフトマックス関数は、出力ベクトルの要素を確率分布に変換する。ソフトマックス関数により、出力ベクトルの各要素は0から1の間の値をとり、出力ベクトルの全要素の和は1になる。一般には、このソフトマックス関数は分類問題(識別問題)を解く場合によく用いられる。
あるいは、予測部11は出力ベクトルyをそのまま最終結果として設定してもよい。例えば、予測部11は回帰問題を解く場合に出力ベクトルyをそのまま最終結果として出力してもよい。
学習済みモデルでは変換行列Aが確定しているので、予測部11は、その学習済みモデルを読み込んだ時に一度だけ特異値分解を実行して前行列Lおよび後行列を求めればよい。したがって、個々の出力ベクトルを求めようとする度に前行列Lおよび後行列Rを求める必要はない。
本実施形態では機械学習システム10(予測部11)が変換行列Aを特異値分解することで行列UΣと行列Vとを取得するが、機械学習システム10(予測部11)は別のコンピュータシステムで算出された行列UΣおよび行列Vを取得してもよい。すなわち、該別のコンピュータシステムが変換行列Aを特異値分解してもよい。
本実施形態では、機械学習システム10(予測部11)が、近似ベクトルyaについての乖離度に基づいて、近似ベクトルyaを出力ベクトルyとして設定するか、または正確な出力ベクトルy=ya+RxRを求める。しかし、乖離度に基づくこの分岐処理は必須ではない。したがって、機械学習システム10(予測部11)は乖離度を求めることなく、近似ベクトルyaを出力ベクトルyとして設定してもよい。
機械学習システム10内で二つの数値の大小関係を比較する際には、「以上」および「よりも大きい」という二つの基準のどちらを用いてもよく、「以下」および「未満」の二つの基準のうちのどちらを用いてもよい。このような基準の選択は、二つの数値の大小関係を比較する処理についての技術的意義を変更するものではない。
本実施形態のように出力ベクトルの近似値を用いることで、出力層の次元が膨大な場合にも機械学習を高速に実行することが可能になる。図8を参照しながら、この技術的効果について説明する。図8は、LSTM(Long Short−Term Memory(長・短期記憶))というニューラルネットワーク20を用いた機械翻訳に本実施形態を応用(適用)した実際の例を模式的に示す図である。
翻訳などの自然言語処理では語彙数が出力の候補の数になり得るので、出力層のベクトルの次元数はその語彙数に対応して数万以上(例えば約50000)になる。その結果、出力ベクトルの計算量が膨大になる。例えば、中間ベクトルの次元数が500程度であっても、出力ベクトルを計算するために500×50000の行列演算が必要になり、この行列演算がニューラルネットワークの計算において支配的になり得る。
図8の例では、ニューラルネットワーク(LSTM)20は日本語の文を英語に翻訳する。このニューラルネットワーク20において、中間層および出力層の次元数はそれぞれ500、50000であるとする。図8の例では、「私は日本人です。」という日本語の文が「I am Japanese.」と翻訳されている。中間ベクトルから出力ベクトルを得るための行列演算は、英文を構成する個々の単語(文末記号である<EOS>も含む)について実行されるので、図8の例ではその行列演算は4回実行される。その4回の行列演算において近似ベクトルyaが出力ベクトルyとして設定される回数は0〜4の間である。
500次元の中間層および50000次元の出力層を有するニューラルネットワーク20において、500列の行列UΣを前行列Lと後行列Rとに分割するための値kを固定値300に設定した。したがって、前行列Lおよび後行列Rの列数はそれぞれ300、200であった。一例として、本実施形態を適用したこのニューラルネットワーク20で「自転車で通勤すると運動になります。」という日本語の文を英訳したところ、「If you go to work by bicycle, you will get exercise.」という正しい英訳を268ms(ミリ秒)で得ることができた。
比較のために、行列UΣを分割することなく常にすべての列を用いてその和文を翻訳したところ、正しい英訳が302msで得られた。意図的に後行列Rを用いずに常に前行列Lのみを用いてその和文を英訳したところ、前行列Lの列数kに応じて結果が変わった。具体的には、k=400では、正しい英訳が277msで得られた。k=300では、「If you go to work by bicycle, you will exercise.」という、正解に近い結果が229msで得られた。k=200の場合には、「When you go to work by bicycle, you can exercise.」という不完全な結果が192msで得られた。k=100の場合には、「To go to work on a bike is a sport.」という誤訳が173msで得られた。
ニューラルネットワーク20を用いた実験からわかるように、本実施形態に係る機械学習システム10を採用することで、確度の高い結果を高速に得ることが可能になる。上記の翻訳の例では、300列を有する前行列Lのみを用いた計算では識別結果が曖昧な場合に限って、残りの200列を有する後行列Rをさらに用いて計算が行われる。したがって、268msという短時間で正解を得ることができた。
上記実施の形態の説明に用いたブロック図は、機能単位のブロックを示している。これらの機能ブロック(構成要素)は、ハードウェアおよび/またはソフトウェアの任意の組み合わせによって実現される。また、各機能ブロックの実現手段は特に限定されない。すなわち、各機能ブロックは、物理的および/または論理的に結合した一つの装置により実現されてもよいし、物理的および/または論理的に分離した2つ以上の装置を直接的および/または間接的に(例えば、有線および/または無線)で接続し、これら複数の装置により実現されてもよい。
例えば、本発明の一実施の形態における機械学習システム10は、本実施形態の処理を行うコンピュータとして機能してもよい。図9は、機械学習システム10として機能するコンピュータ100のハードウェア構成の一例を示す図である。コンピュータ100は、物理的には、プロセッサ1001、メモリ1002、ストレージ1003、通信装置1004、入力装置1005、出力装置1006、バス1007などを含んでもよい。
なお、以下の説明では、「装置」という文言は、回路、デバイス、ユニットなどに読み替えることができる。機械学習システム10のハードウェア構成は、図に示した各装置を一つまたは複数含むように構成されてもよいし、一部の装置を含まずに構成されてもよい。
機械学習システム10における各機能は、プロセッサ1001、メモリ1002などのハードウェア上に所定のソフトウェア(プログラム)を読み込ませることで、プロセッサ1001が演算を行い、通信装置1004による通信や、メモリ1002およびストレージ1003におけるデータの読み出しおよび/または書き込みを制御することで実現される。
プロセッサ1001は、例えば、オペレーティングシステムを動作させてコンピュータ全体を制御する。プロセッサ1001は、周辺装置とのインターフェース、制御装置、演算装置、レジスタなどを含む中央処理装置(CPU:Central Processing Unit)で構成されてもよい。例えば、機械学習システム10の少なくとも一部の機能要素はプロセッサ1001で実現されてもよい。
また、プロセッサ1001は、プログラム(プログラムコード)、ソフトウェアモジュールやデータを、ストレージ1003および/または通信装置1004からメモリ1002に読み出し、これらに従って各種の処理を実行する。プログラムとしては、上述の実施の形態で説明した動作の少なくとも一部をコンピュータに実行させるプログラムが用いられる。例えば、機械学習システム10の少なくとも一部の機能要素は、メモリ1002に格納され、プロセッサ1001で動作する制御プログラムによって実現されてもよく、他の機能ブロックについても同様に実現されてもよい。上述の各種処理は、一つのプロセッサ1001で実行される旨を説明してきたが、2以上のプロセッサ1001により同時または逐次に実行されてもよい。プロセッサ1001は、1以上のチップで実装されてもよい。なお、プログラムは、電気通信回線を介してネットワークから送信されてもよい。
メモリ1002は、コンピュータ読み取り可能な記録媒体であり、例えば、ROM(Read Only Memory)、EPROM(Erasable Programmable ROM)、EEPROM(Electrically Erasable Programmable ROM)、RAM(Random Access Memory)などの少なくとも一つで構成されてもよい。メモリ1002は、レジスタ、キャッシュ、メインメモリ(主記憶装置)などと呼ばれてもよい。メモリ1002は、本発明の一実施の形態に係る無線通信方法を実施するために実行可能なプログラム(プログラムコード)、ソフトウェアモジュールなどを保存することができる。
ストレージ1003は、コンピュータ読み取り可能な記録媒体であり、例えば、CDROM(Compact Disc ROM)などの光ディスク、ハードディスクドライブ、フレキシブルディスク、光磁気ディスク(例えば、コンパクトディスク、デジタル多用途ディスク、Blu−ray(登録商標)ディスク)、スマートカード、フラッシュメモリ(例えば、カード、スティック、キードライブ)、フロッピー(登録商標)ディスク、磁気ストリップなどの少なくとも一つで構成されてもよい。ストレージ1003は、補助記憶装置と呼ばれてもよい。上述の記憶媒体は、例えば、メモリ1002および/またはストレージ1003を含むテーブル、サーバその他の適切な媒体であってもよい。
通信装置1004は、有線および/または無線ネットワークを介してコンピュータ間の通信を行うためのハードウェア(送受信デバイス)であり、例えばネットワークデバイス、ネットワークコントローラ、ネットワークカード、通信モジュールなどともいう。例えば、機械学習システム10の少なくとも一部の機能要素は通信装置1004で実現されてもよい。
入力装置1005は、外部からの入力を受け付ける入力デバイス(例えば、キーボード、マウス、マイクロフォン、スイッチ、ボタン、センサなど)である。出力装置1006は、外部への出力を実施する出力デバイス(例えば、ディスプレイ、スピーカー、LEDランプなど)である。なお、入力装置1005および出力装置1006は、一体となった構成(例えば、タッチパネル)であってもよい。
また、プロセッサ1001やメモリ1002などの各装置は、情報を通信するためのバス1007で接続される。バス1007は、単一のバスで構成されてもよいし、装置間で異なるバスで構成されてもよい。
また、コンピュータ100は、マイクロプロセッサ、デジタル信号プロセッサ(DSP:Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(ProgrammableLogic Device)、FPGA(Field Programmable Gate Array)などのハードウェアを含んで構成されてもよく、当該ハードウェアにより、各機能ブロックの一部または全てが実現されてもよい。例えば、プロセッサ1001は、これらのハードウェアの少なくとも一つで実装されてもよい。
以上説明したように、本発明の一側面に係る機械学習システムは、ニューラルネットワークの中間層で得られた中間ベクトルと変換行列Aとを用いて、ニューラルネットワークの出力層のベクトルである出力ベクトルを算出し、該出力ベクトルに基づいて事象を予測する予測部を備え、予測部が、変換行列Aを特異値分解することで得られる行列UΣと行列Vとを取得し、ここで、行列Uおよび行列Vは直交行列であり、行列Σは対角行列であり、中間ベクトルと行列Vとに基づいて一時ベクトルを算出し、行列UΣおよび一時ベクトルのそれぞれの分割位置を示す値kを用いて、行列UΣの1列目からk列目を用いて定義される前行列と、一時ベクトルの1個目からk個目までの要素を用いて定義される前ベクトルとを取得し、前行列および前ベクトルに基づいて近似ベクトルを算出し、近似ベクトルを出力ベクトルとして設定する。
このような側面においては、中間ベクトルから出力ベクトルを得るための変換行列Aに対して、A=UΣVという特異値分解が実行される。そして、行列UΣの全部を使わずに、その行列UΣの一部(前行列)を用いて近似ベクトルが得られる。この近似ベクトルは出力層のベクトルの近似値といえる。この近似ベクトルを出力ベクトルと見なすことで、行列UΣの全体(すなわち、変換行列Aそのもの)を用いる場合よりも少ない計算量で出力ベクトルが得られるので、機械学習を高速に実行することができる。
他の側面に係る機械学習システムでは、予測部が、近似ベクトルにおける最大要素と少なくとも一つの他の要素との乖離度を算出し、乖離度が閾値より大きい場合に、近似ベクトルを出力ベクトルとして設定してもよい。乖離度が大きければ、最大要素と他の要素との差が大きいといえ、したがって、近似ベクトルと正確な出力ベクトルとの間で最大要素のインデックスが同じである蓋然性が高いといえる。乖離度が大きい場合に近似ベクトルを出力ベクトルとして設定することで、精度の高い機械学習を高速に実行することができる。
他の側面に係る機械学習システムでは、予測部が、乖離度が閾値以下である場合に、行列UΣの残りの列で構成される後行列Rと、一時ベクトルの残りの要素で構成される後ベクトルと、近似ベクトルとに基づいて出力ベクトルを算出してもよい。乖離度が小さい場合には最大要素と他の要素との差があまり大きくないので、近似ベクトルと正確な出力ベクトルとの間で最大要素のインデックスが異なる蓋然性が高い。乖離度が小さい場合に限って出力ベクトルを正確に求めることで、精度の高い機械学習を高速に実行することができる。
他の側面に係る機械学習システムでは、予測部が、近似ベクトルの最大要素の偏差値を乖離度として算出してもよい。統計値の一種である偏差値を乖離度として用いることで、最大要素が他の要素からどのくらい離れているかを正しく推定することが可能になる。
他の側面に係る機械学習システムでは、予測部が、近似ベクトルの最大要素と、近似ベクトルの中で2番目に大きい要素との差を乖離度として算出してもよい。最大要素と2番目に大きい要素との差を乖離度として用いることで、乖離度を簡単に求めることができる。
他の側面に係る機械学習システムでは、予測部が、一時ベクトルの次元数の半分の値を値kとして設定してもよい。このように分割位置を設定することで行列UΣおよび一時ベクトルから簡単に前行列および前ベクトルを得ることができる。
他の側面に係る機械学習システムでは、予測部が、行列Σの対角成分が閾値以上であることを満たす最後の列の列番号を値kとして設定してもよい。行列UΣおよび一時ベクトルの分割位置をこのように設定することで、計算に影響する重要な要素が前行列に集まるので、精度の高い近似ベクトルを求めることができる。
他の側面に係る機械学習システムでは、予測部が、行列Σの対角成分の偏差値が閾値以上であることを満たす最後の列の列番号を値kとして設定してもよい。行列UΣおよび一時ベクトルの分割位置をこのように設定することで、計算に影響する重要な要素が前行列に集まるので、精度の高い近似ベクトルを求めることができる。
以上、本実施形態について詳細に説明したが、当業者にとっては、本実施形態が本明細書中に説明した実施形態に限定されるものではないということは明らかである。本実施形態は、特許請求の範囲の記載により定まる本発明の趣旨および範囲を逸脱することなく修正および変更態様として実施することができる。したがって、本明細書の記載は、例示説明を目的とするものであり、本実施形態に対して何ら制限的な意味を有するものではない。
情報の通知は、本明細書で説明した態様および実施形態に限られず、他の方法で行われてもよい。例えば、情報の通知は、物理レイヤシグナリング(例えば、DCI(Downlink Control Information)、UCI(Uplink Control Information))、上位レイヤシグナリング(例えば、RRC(Radio Resource Control)シグナリング、MAC(Medium Access Control)シグナリング、報知情報(MIB(Master Information Block)、SIB(System Information Block)))、その他の信号またはこれらの組み合わせによって実施されてもよい。また、RRCシグナリングは、RRCメッセージと呼ばれてもよく、例えば、RRC接続セットアップ(RRC Connection Setup)メッセージ、RRC接続再構成(RRC Connection Reconfiguration)メッセージなどであってもよい。
本明細書で説明した各態様/実施形態は、LTE(Long Term Evolution)、LTE−A(LTE-Advanced)、SUPER 3G、IMT−Advanced、4G、5G、FRA(Future Radio Access)、W−CDMA(登録商標)、GSM(登録商標)、CDMA2000、UMB(Ultra Mobile Broadband)、IEEE 802.11(Wi−Fi)、IEEE 802.16(WiMAX)、IEEE 802.20、UWB(Ultra-Wideband)、Bluetooth(登録商標)、その他の適切なシステムを利用するシステムおよび/またはこれらに基づいて拡張された次世代システムに適用されてもよい。
本明細書で説明した各態様/実施形態の処理手順、シーケンス、フローチャートなどは、矛盾の無い限り、順序を入れ替えてもよい。例えば、本明細書で説明した方法については、例示的な順序で様々なステップの要素を提示しており、提示した特定の順序に限定されない。
情報等は、上位レイヤ(または下位レイヤ)から下位レイヤ(または上位レイヤ)へ出力され得る。複数のネットワークノードを介して入出力されてもよい。
入出力された情報等は特定の場所(例えば、メモリ)に保存されてもよいし、管理テーブルで管理してもよい。入出力される情報等は、上書き、更新、または追記され得る。出力された情報等は削除されてもよい。入力された情報等は他の装置へ送信されてもよい。
判定は、1ビットで表される値(0か1か)によって行われてもよいし、真偽値(Boolean:trueまたはfalse)によって行われてもよいし、数値の比較(例えば、所定の値との比較)によって行われてもよい。
本明細書で説明した各態様/実施形態は単独で用いてもよいし、組み合わせて用いてもよいし、実行に伴って切り替えて用いてもよい。また、所定の情報の通知(例えば、「Xであること」の通知)は、明示的に行うものに限られず、暗黙的(例えば、当該所定の情報の通知を行わない)ことによって行われてもよい。
ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語と呼ばれるか、他の名称で呼ばれるかを問わず、命令、命令セット、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェアモジュール、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行可能ファイル、実行スレッド、手順、機能などを意味するよう広く解釈されるべきである。
また、ソフトウェア、命令などは、伝送媒体を介して送受信されてもよい。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペアおよびデジタル加入者回線(DSL)などの有線技術および/または赤外線、無線およびマイクロ波などの無線技術を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、これらの有線技術および/または無線技術は、伝送媒体の定義内に含まれる。
本明細書で説明した情報、信号などは、様々な異なる技術のいずれかを使用して表されてもよい。例えば、上記の説明全体に渡って言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、チップなどは、電圧、電流、電磁波、磁界若しくは磁性粒子、光場若しくは光子、またはこれらの任意の組み合わせによって表されてもよい。
なお、本明細書で説明した用語および/または本明細書の理解に必要な用語については、同一のまたは類似する意味を有する用語と置き換えてもよい。
本明細書で使用する「システム」および「ネットワーク」という用語は、互換的に使用される。
また、本明細書で説明した情報、パラメータなどは、絶対値で表されてもよいし、所定の値からの相対値で表されてもよいし、対応する別の情報で表されてもよい。例えば、無線リソースはインデックスで指示されるものであってもよい。
上述したパラメータに使用する名称はいかなる点においても限定的なものではない。さらに、これらのパラメータを使用する数式等は、本明細書で明示的に開示したものと異なる場合もある。様々なチャネル(例えば、PUCCH、PDCCHなど)および情報要素(例えば、TPCなど)は、あらゆる好適な名称によって識別できるので、これらの様々なチャネルおよび情報要素に割り当てている様々な名称は、いかなる点においても限定的なものではない。
ユーザ端末および移動通信端末は、当業者によって、加入者局、モバイルユニット、加入者ユニット、ワイヤレスユニット、リモートユニット、モバイルデバイス、ワイヤレスデバイス、ワイヤレス通信デバイス、リモートデバイス、モバイル加入者局、アクセス端末、モバイル端末、ワイヤレス端末、リモート端末、ハンドセット、ユーザエージェント、モバイルクライアント、クライアント、またはいくつかの他の適切な用語で呼ばれる場合もある。
本明細書で使用する「判断(determining)」、「決定(determining)」という用語は、多種多様な動作を包含する場合がある。「判断」、「決定」は、例えば、判定(judging)、計算(calculating)、算出(computing)、処理(processing)、導出(deriving)、調査(investigating)、探索(looking up)(例えば、テーブル、テーブルまたは別のデータ構造での探索)、確認(ascertaining)した事を「判断」「決定」したとみなす事などを含み得る。また、「判断」、「決定」は、受信(receiving)(例えば、情報を受信すること)、送信(transmitting)(例えば、情報を送信すること)、入力(input)、出力(output)、アクセス(accessing)(例えば、メモリ中のデータにアクセスすること)した事を「判断」「決定」したとみなす事などを含み得る。また、「判断」、「決定」は、解決(resolving)、選択(selecting)、選定(choosing)、確立(establishing)、比較(comparing)などした事を「判断」「決定」したとみなす事を含み得る。つまり、「判断」「決定」は、何らかの動作を「判断」「決定」したとみなす事を含み得る。
「接続された(connected)」、「結合された(coupled)」という用語、またはこれらのあらゆる変形は、2またはそれ以上の要素間の直接的または間接的なあらゆる接続または結合を意味し、互いに「接続」または「結合」された2つの要素間に1またはそれ以上の中間要素が存在することを含むことができる。要素間の結合または接続は、物理的なものであっても、論理的なものであっても、或いはこれらの組み合わせであってもよい。本明細書で使用する場合、2つの要素は、1またはそれ以上の電線、ケーブルおよび/またはプリント電気接続を使用することにより、並びにいくつかの非限定的かつ非包括的な例として、無線周波数領域、マイクロ波領域および光(可視および不可視の両方)領域の波長を有する電磁エネルギーなどの電磁エネルギーを使用することにより、互いに「接続」または「結合」されると考えることができる。
本明細書で使用する「に基づいて」という記載は、別段に明記されていない限り、「のみに基づいて」を意味しない。言い換えれば、「に基づいて」という記載は、「のみに基づいて」と「に少なくとも基づいて」の両方を意味する。
本明細書で「第1の」、「第2の」などの呼称を使用した場合においては、その要素へのいかなる参照も、それらの要素の量または順序を全般的に限定するものではない。これらの呼称は、2つ以上の要素間を区別する便利な方法として本明細書で使用され得る。したがって、第1および第2の要素への参照は、2つの要素のみがそこで採用され得ること、または何らかの形で第1の要素が第2の要素に先行しなければならないことを意味しない。
「含む(include)」、「含んでいる(including)」、およびそれらの変形が、本明細書あるいは特許請求の範囲で使用されている限り、これら用語は、用語「備える(comprising)」と同様に、包括的であることが意図される。さらに、本明細書あるいは特許請求の範囲において使用されている用語「または(or)」は、排他的論理和ではないことが意図される。
本明細書において、文脈または技術的に明らかに一つのみしか存在しない装置である場合以外は、複数の装置をも含むものとする。