(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024151738
(43)【公開日】2024-10-25
(54)【発明の名称】プログラム、情報処理装置および情報処理方法
(51)【国際特許分類】
G06N 3/0464 20230101AFI20241018BHJP
G10L 15/16 20060101ALI20241018BHJP
【FI】
G06N3/0464
G10L15/16
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023065376
(22)【出願日】2023-04-13
(71)【出願人】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】籠嶋 岳彦
(57)【要約】
【課題】畳み込みニューラルネットワークモデルを用いる場合に、1つのモデルを用いて計算量と精度とのトレードオフを制御する柔軟な実装を実現する。
【解決手段】実施形態のプログラムは、コンピュータを、記憶制御部と変換部と第1CNN部と第2CNN部として機能させる。記憶制御部は、第1のストライドパラメータと第1のディレーションパラメータと、を記憶装置から読み出す。変換部は、変換パラメータを用いて、第1のストライドパラメータを第2のストライドパラメータに変換し、第1のディレーションパラメータを第2のディレーションパラメータに変換する。第1CNN部は、少なくとも第2のストライドパラメータを用いて、特徴ベクトルの第1CNN処理を実行する。第2CNN部は、少なくとも第2のディレーションパラメータを用いて、第1CNN部の出力ベクトルを入力とする第2CNN処理を実行する。
【選択図】
図4
【特許請求の範囲】
【請求項1】
コンピュータを、
出力の解像度を制御する第1のストライドパラメータと、入力の解像度を制御する第1のディレーションパラメータと、を記憶装置から読み出す記憶制御部と、
変換パラメータを用いて、前記第1のストライドパラメータを第2のストライドパラメータに変換し、前記第1のディレーションパラメータを第2のディレーションパラメータに変換する変換部と、
少なくとも前記第2のストライドパラメータを用いて、特徴ベクトルの第1CNN(Convolutional Neural Network)処理を実行する第1CNN部と、
少なくとも前記第2のディレーションパラメータを用いて、前記第1CNN部の出力ベクトルを入力とする第2CNN処理を実行する第2CNN部、
として機能させるためのプログラム。
【請求項2】
前記変換部は、前記第1のストライドパラメータに前記変換パラメータを乗じることによって前記第2のストライドパラメータを生成し、前記第1のディレーションパラメータに前記変換パラメータの逆数を乗じることによって、前記第2のディレーションパラメータを生成する、
請求項1に記載のプログラム。
【請求項3】
前記記憶装置は、複数の前記第2のストライドパラメータと、複数の前記第2のディレーションパラメータとを記憶し、
前記変換部は、前記変換パラメータに基づき、前記複数の第2のストライドパラメータから1つの前記第2のストライドパラメータを選択することによって、前記第1のストライドパラメータを変換し、前記変換パラメータに基づき、前記複数の第2のディレーションパラメータから1つの前記第2のディレーションパラメータを選択することによって、前記第1のディレーションパラメータを変換する、
請求項1に記載のプログラム。
【請求項4】
前記複数の第2のストライドパラメータのそれぞれは、第1の方向の出力解像度を制御するパラメータと、第2の方向の出力解像度を制御するパラメータとを含み、
前記複数の第2のディレーションパラメータのそれぞれは、第1の方向の入力解像度を制御するパラメータと、第2の方向の入力解像度を制御するパラメータとを含む、
請求項3に記載のプログラム。
【請求項5】
前記第2CNN部の出力ベクトルの次元は、1次元以上であり、
前記第2CNN部の出力ベクトルの少なくとも一つの次元の解像度が不足している場合、前記解像度が不足している少なくとも1つの次元の解像度を補間する補間部、
を更に備える請求項1乃至3のいずれか1項に記載のプログラム。
【請求項6】
前記特徴ベクトルは、入力された音声の特徴量を示し、
前記入力された音声から前記特徴量を抽出することによって、前記特徴ベクトルを生成する抽出部と、
前記第2CNN部の出力ベクトルを用いて、前記音声を認識する認識部、
として更に機能させる請求項1乃至4のいずれか1項に記載のプログラム。
【請求項7】
前記認識部は、前記第2CNN部の出力ベクトルを用いて、前記音声に含まれるキーワードを検出し、
前記キーワードに対応付けられたコマンドを起動する起動部、
として更に機能させる請求項6に記載のプログラム。
【請求項8】
出力の解像度を制御する第1のストライドパラメータと、入力の解像度を制御する第1のディレーションパラメータと、を記憶装置から読み出す記憶制御部と、
変換パラメータを用いて、前記第1のストライドパラメータを第2のストライドパラメータに変換し、前記第1のディレーションパラメータを第2のディレーションパラメータに変換する変換部と、
少なくとも前記第2のストライドパラメータを用いて、特徴ベクトルの第1CNN(Convolutional Neural Network)処理を実行する第1CNN部と、
少なくとも前記第2のディレーションパラメータを用いて、前記第1CNN部の出力ベクトルを入力とする第2CNN処理を実行する第2CNN部と、
を備える情報処理装置。
【請求項9】
情報処理装置が、出力の解像度を制御する第1のストライドパラメータと、入力の解像度を制御する第1のディレーションパラメータと、を記憶装置から読み出すステップと、
前記情報処理装置が、変換パラメータを用いて、前記第1のストライドパラメータを第2のストライドパラメータに変換し、前記第1のディレーションパラメータを第2のディレーションパラメータに変換するステップと、
前記情報処理装置が、少なくとも前記第2のストライドパラメータを用いて、特徴ベクトルの第1CNN(Convolutional Neural Network)処理を実行するステップと、
前記情報処理装置が、少なくとも前記第2のディレーションパラメータを用いて、前記第1CNN処理の出力ベクトルを入力とする第2CNN処理を実行するステップと、
を含む情報処理方法。
【請求項10】
第1の情報処理装置が、出力の解像度を制御する第1のストライドパラメータと、入力の解像度を制御する第1のディレーションパラメータと、を記憶装置から読み出すステップと、
前記第1の情報処理装置が、変換パラメータを用いて、前記第1のストライドパラメータを第2のストライドパラメータに変換し、前記第1のディレーションパラメータを第2のディレーションパラメータに変換するステップと、
前記第1の情報処理装置が、少なくとも前記第2のストライドパラメータを、特徴ベクトルの第1CNN(Convolutional Neural Network)処理に使用されるパラメータとして、第2の情報処理装置に保存するステップと、
前記第1の情報処理装置が、少なくとも前記第2のディレーションパラメータを、前記第1CNN処理の出力ベクトルを入力とする第2CNN処理に使用されるパラメータとして、前記第2の情報処理装置に保存するステップと、
を含む情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態はプログラム、情報処理装置および情報処理方法に関する。
【背景技術】
【0002】
ニューラルネットワークの計算量を削減する方法としてフレームスキップが従来から知られている。この方法は、例えば奇数番目のフレームのみニューラルネットワーク処理を実行して出力し、偶数番目のフレームは処理を実行せずに奇数番目の出力を使用することで計算量を半減する技術である。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来の技術では、畳み込みニューラルネットワークモデルを用いる場合に、1つのモデルを用いて計算量と精度とのトレードオフを制御する柔軟な実装を実現することができなかった。
【課題を解決するための手段】
【0005】
実施形態のプログラムは、コンピュータを、記憶制御部と変換部と第1CNN部と第2CNN部として機能させる。記憶制御部は、出力の解像度を制御する第1のストライドパラメータと、入力の解像度を制御する第1のディレーションパラメータと、を記憶装置から読み出す。変換部は、変換パラメータを用いて、前記第1のストライドパラメータを第2のストライドパラメータに変換し、前記第1のディレーションパラメータを第2のディレーションパラメータに変換する。第1CNN部は、少なくとも前記第2のストライドパラメータを用いて、特徴ベクトルの第1CNN(Convolutional Neural Network)処理を実行する。第2CNN部は、少なくとも前記第2のディレーションパラメータを用いて、前記第1CNN部の出力ベクトルを入力とする第2CNN処理を実行する。
【図面の簡単な説明】
【0006】
【
図1】第1実施形態の情報処理装置のハードウェア構成の一例を示す図。
【
図2】第1実施形態の情報処理装置の機能構成の一例を示す図。
【
図3】第1実施形態のキーワードおよびコマンドの対応情報の例を示す図。
【
図4】第1実施形態の検出制御部の機能構成の一例を示す図。
【
図5】第1実施形態の畳み込みニューラルネットワーク処理の例1を示す図。
【
図6】第1実施形態の畳み込みニューラルネットワーク処理の例2を示す図。
【
図7】第1実施形態の情報処理方法の例を示すフローチャート。
【
図8】第2実施形態の情報処理装置の機能構成の一例を示す図。
【
図10】第2実施形態の計算リソースに応じた変換パラメータの一例を示す図。
【
図11】第2実施形態の補間部の入力例1を示す図。
【
図12】第2実施形態の補間部の入力例2を示す図。
【
図13】第2実施形態の補間部の入力例3を示す図。
【
図14】第2実施形態の情報処理方法の一例を示すフローチャート。
【発明を実施するための形態】
【0007】
以下に添付図面を参照して、プログラム、情報処理装置および情報処理方法の実施形態を詳細に説明する。
【0008】
(第1実施形態)
はじめに、第1実施形態の情報処理装置100のハードウェア構成の例について説明する。
【0009】
[ハードウェア構成の例]
図1は第1実施形態の情報処理装置100のハードウェア構成の一例を示す図である。
図1の例は、第1実施形態の情報処理装置100が、スマートフォンなどのスマートデバイスに搭載されるキーワード発話検出装置およびコマンド起動装置として実現される場合を示す。
【0010】
第1実施形態の情報処理装置100は、CPU(Central Processing Unit)301と、RAM(Random Access Memory)302と、ROM(Read Only Memory)303と、操作入力装置304と、表示装置305と、記憶装置306と、通信装置307と、音声入力装置308とを備える。そして、CPU301と、RAM302と、ROM303と、操作入力装置304と、表示装置305と、記憶装置306と、通信装置307と、音声入力装置308とは、バス309により接続される。
【0011】
CPU301は、プログラムに従って演算処理および制御処理等を実行するプロセッサである。CPU301は、RAM302の所定領域を作業領域として、ROM303および記憶装置306等に記憶されたプログラムとの協働により各種処理を実行する。
【0012】
RAM302は、SDRAM(Synchronous Dynamic Random Access Memory)等のメモリである。RAM302は、CPU301の作業領域として機能する。ROM303は、プログラムおよび各種情報を書き換え不可能に記憶するメモリである。
【0013】
操作入力装置304は、タッチスクリーンおよびキーボード等の入力デバイスである。操作入力装置304は、ユーザから操作入力された情報を指示信号として受け付け、指示信号をCPU301に出力する。
【0014】
表示装置305は、LCD(Liquid Crystal Display)等の表示デバイスである。表示装置305は、CPU301からの表示信号に基づいて、各種情報を表示する。
【0015】
記憶装置306は、フラッシュメモリ等の半導体による記憶媒体、または、磁気的若しくは光学的に記録可能な記憶媒体等にデータを書き込みおよび読み出しをする装置である。記憶装置306は、CPU301からの制御に応じて、記憶媒体にデータの書き込みおよび読み出しをする。
【0016】
通信装置307は、CPU301からの制御に応じて外部の機器とネットワークを介して通信する。
【0017】
音声入力装置308は、マイクロフォンおよびAD変換(アナログ/デジタル変換)装置などで構成され、ユーザの発話した音声信号をデジタル信号に変換してCPU301に出力する。
【0018】
[機能構成の例]
図2は第1実施形態の情報処理装置100の機能構成の一例を示す図である。第1実施形態の情報処理装置100は、ユーザの発話に含まれる所定のキーワードを認識して、例えばスマートデバイス上に実装されている適切なコマンドを実行するコマンド起動装置として動作する。第1実施形態の情報処理装置100は、音声取得部101、計算リソース取得部102、検出制御部103、起動部104および記憶部105を備える。
【0019】
音声取得部101は、マイクロフォンに入力された音声を取得し、当該音声をデジタル信号に変換し、当該デジタル信号によって表された音声信号を検出制御部103に入力する。
【0020】
計算リソース取得部102は、CPU301の計算能力とCPU301の負荷とを含む計算リソース情報を取得し、その時点で検出制御部103が利用可能な計算リソース情報を検出制御部103に入力する。例えば、CPU301の計算能力が1000MIPS(Million Instructions Per Second)であり、CPU301の負荷が80%であれば、利用可能な計算リソースが200MIPSであることを示す計算リソース情報を検出制御部103に入力する。
【0021】
検出制御部103は、音声取得部101から入力された音声信号から、キーワード発話を検出する処理を実行し、キーワード発話が検出された場合に、キーワード発話に対応するキーワードIDを起動部104に入力する。このとき、検出制御部103は、計算リソース取得部102から入力された計算リソース情報を参照し、計算リソース情報が示す計算量の範囲内でキーワード検出処理を実行する。
【0022】
起動部104は、検出制御部103から入力されたキーワードIDに対応付けられたコマンドを起動する。
【0023】
記憶部105は情報を記憶する。例えば、記憶部105は、検出制御部103によるキーワード検出処理で参照される情報を記憶する。
【0024】
図3は第1実施形態のキーワードおよびコマンドの対応情報の例を示す図である。第1実施形態の情報処理装置100では、第1実施形態のコマンド起動装置は、
図3に示す3つのキーワードIDが登録されており、それぞれ対応するコマンドを実行するように構成されている。
【0025】
第1実施形態のキーワードおよびコマンドの対応情報は、ID、表記、発音及びコマンドを含む。IDは、キーワードを識別する識別情報である。表記は、キーワードの表記を示す。発音は、キーワードの発音を示す。コマンドは、キーワードに対応付けられたコマンドを示す。
【0026】
例えば、ID=1の「現在時刻」には、時計アプリを起動して現在時刻を表示するコマンドが対応付けられている。
【0027】
次に、第1実施形態の検出制御部103の詳細な動作を、
図4を参照して説明する。
図4は第1実施形態の検出制御部103の機能構成の一例を示す図である。第1実施形態の検出制御部103は、記憶制御部201、生成部202、変換部203、抽出部204、第1CNN(Convolutional Neural Network)部205、第2CNN部206および認識部207を備える。
【0028】
記憶制御部201は、記憶部105に記憶された情報の読み出し、書き込み及び削除などの記憶制御を行う。例えば、記憶制御部201は、第1CNN部205のパラメータとして、カーネルサイズk1=3、ストライドs1=1、ディレーションd1=1、重みパラメータW1を記憶部105から読み出し、第2CNN部206のパラメータとして、カーネルサイズk2=3、ストライドs2=1、ディレーションd2=2、重みパラメータW2を記憶部105から読み出す。
【0029】
生成部202は、計算リソース取得部102から入力された計算リソース情報に基づいて、変換パラメータrを生成する。例えば、生成部202は、計算リソース情報が100MIPS以上であれば、変換パラメータr=1を生成し、計算リソース情報が100MIPS未満であれば、変換パラメータr=2を生成する。生成部202は、生成された変換パラメータrを変換部203に入力する。
【0030】
変換部203は、第1CNN部205に入力されるストライドs1’および第2CNN部206に入力されるディレーションd2’を、下記式(1)および(2)を用いて算出する。
s1’=rs1 ・・・(1)
d2’=d2/r ・・・(2)
【0031】
変換部203は、ストライドs1に変換パラメータrを乗じることによってストライドs1’を生成し、ディレーションd2に変換パラメータrの逆数を乗じることによって、ディレーションd2’を生成する。このようにパラメータを変換することで、同じ重みパラメータのモデルで、精度(出力の時間解像度)および計算量のトレードオフが制御可能になる。
【0032】
なお、ディレーションの値は整数である必要があるため、変換パラメータrは、ディレーションd2の約数である必要がある。
【0033】
変換部203は、カーネルサイズk1、ストライドs1’、ディレーションd1および重みパラメータW1を第1CNN部205に入力し、カーネルサイズk2、ストライドs2、ディレーションd2’および重みパラメータW2を第1CNN部205に入力する。
【0034】
抽出部204は、音声取得部101から入力された音声信号に対して、窓長32ms、フレームシフト10msで短時間フーリエ変換を行い、短時間フーリエ変換後のデータを、さらに32次元のメルフィルタバンク特徴ベクトルに変換する。
【0035】
なお、入力された音声の特徴量を示す特徴ベクトルには、メルフィルタバンクの他にも、例えばMFCC(Mel Frequency Cepstral Coefficient)などの種々の特徴量を用いることができる。また、特徴量抽出のためのニューラルネットワークが用いられてもよい。
【0036】
第1CNN部205は、変換部203から入力されるパラメータを用いて、抽出部204から入力される特徴ベクトルに、時間方向の1次元CNN処理を実施し、続いてバッチ正規化処理およびReLU(Rectified Linear Unit)関数による活性化処理を順次実行する。
【0037】
第2CNN部206は、変換部203から入力されるパラメータを用いて、第1CNN部205の出力データに、時間方向の1次元CNN処理を実施し、続いてバッチ正規化処理およびReLU関数による活性化処理を順次実行する。
【0038】
認識部207は、第2CNN部206の出力ベクトルを用いて、音声を認識する。具体的には、認識部207は、第2CNN部206の出力に対して1層の全結合ニューラルネットワーク処理を実施し、続いてSoftmax活性化処理を実行して、フレーム毎に4次元の出力ベクトルy=[y0,y1,y2,y3]を生成する。
【0039】
ここで、y0は発話にキーワードが含まれていない確率を表す。y1,y2,y3は、それぞれキーワードIDが1,2,3のキーワードが含まれている確率を表す。認識部207は、これら4つの確率値の中で、例えばy1,y2またはy3のいずれかが最大となった場合に、最大となった確率値に対応するキーワードIDを検出結果として出力する。
【0040】
なお、認識部207による音声認識は、入力音声に含まれるキーワードを検出する目的以外にも、入力音声をテキスト化する目的などに利用されてもよい。
【0041】
次に、利用可能な計算リソースが大きい場合(例えば200MIPS)と、小さい場合(例えば80MIPS)との差異に注目して、第1実施形態の検出制御部103の動作について詳細に説明する。
【0042】
計算リソースが200MIPSの場合、生成部202の出力はr=1となるため、上述の式(1)および(2)より、s
1’=s
1=1およびd
2’=d
2=2となる。この場合の入力ベクトル、第1CNN部205の出力の各フレーム、および、第2CNN部206の出力の各フレームと、CNNにおける演算との関係を
図5に示す。
【0043】
図5は第1実施形態の畳み込みニューラルネットワーク処理の例1を示す図である。
図5の丸は、入出力のフレームを表す。また、丸を結ぶ線は、畳み込み演算によって出力フレームを生成するときに参照される入力フレームを表す。
【0044】
第2CNN部206の出力の1つのフレーム11に注目すると、フレーム11を生成するために、第1CNN部205の出力の3つのフレームが参照されており、これら3つのフレームを出力するために入力特徴ベクトルの7フレームが参照されている。また
図5の例では、第2CNN部206の出力フレーム数は入力特徴ベクトルのフレーム数と同じであり、時間解像度が保たれていることが分かる。
【0045】
一方、計算リソースが80MIPSの場合、生成部202の出力はr=2となるため、上述の式(1)および(2)より、s
1’=2s
1=2およびd
2’=d
2/2=1となる。この場合の入力ベクトル、第1CNN部205の出力の各フレーム、および、第2CNN部206の出力の各フレームと、CNNにおける演算との関係を
図6に示す。
【0046】
図6は第1実施形態の畳み込みニューラルネットワーク処理の例2を示す図である。第2CNN部206の出力の1つのフレーム12に注目すると、入出力の依存関係が
図5の場合と同一であることから、出力の値は
図5の対応するフレーム11の出力と等しくなる。ただし、第2CNN部206の出力フレーム数は入力特徴ベクトルのフレーム数の1/2となっており、時間解像度が低下して若干の性能低下があるが、必要な計算量は
図5の場合と比較して1/2に削減される。
【0047】
第1実施形態の検出制御部103は、
図5に示した構成の計算量が100MIPSで十分にリアルタイム処理が可能となるように設定されている。そのため、利用可能な計算リソースが100MIPS以上の場合は検出精度を重視して高い時間解像度で出力を生成する.また、利用可能な計算リソースが100MIPSを下回った場合でも、
図6の構成を用いて計算量を半減させることでリアルタイム処理を可能とし、若干の性能低下でキーワード発話検出を実行することが可能となる。
【0048】
[情報処理方法の例]
図7は第1実施形態の情報処理方法の例を示すフローチャートである。はじめに、計算リソース取得部102が、上述の計算リソース情報を取得する(ステップS1)。次に、生成部202が、ステップS1で取得された計算リソース情報に基づいて、変換パラメータrを生成する(ステップS2)。
【0049】
次に、変換部203が、第1CNN部205に入力されるストライドパラメータs1’、および、第2CNN部206に入力されるディレーションパラメータd2’を、上述の式(1)および(2)を用いて変換する(ステップS3)。
【0050】
次に、抽出部204が、音声取得部101から入力された音声信号から、音声の特徴量を示す特徴ベクトルを抽出する(ステップS4)。
【0051】
次に、第1CNN部205が、ステップS3で変換されたストライドパラメータs1’を用いて、ステップS4で抽出された特徴ベクトルに、時間方向の1次元CNN処理を実行する(ステップS5)。次に、第2CNN部206が、ステップS3で変換されたディレーションパラメータd2’を用いて、第1CNN部205の出力データに、時間方向の1次元CNN処理を実行する(ステップS6)。
【0052】
次に、認識部207が、第2CNN部206の出力ベクトルを用いて、音声に含まれるキーワードを検出し(ステップS7)、起動部104が、キーワードに対応付けられたコマンドを起動する(ステップS20)。
【0053】
以上述べたように、第1実施形態の情報処理装置100では、記憶制御部201が、出力の解像度を制御するストライドs1(第1のストライドパラメータ)と、入力の解像度を制御するディレーションd2(第1のディレーションパラメータ)と、を記憶部105から読み出す。変換部203が、変換パラメータrを用いて、ストライドs1をストライドs1’(第2のストライドパラメータ)に変換し、ディレーションd2をディレーションd2’(第2のディレーションパラメータ)に変換する。第1CNN部205が、少なくとも第2のストライドパラメータを用いて、特徴ベクトルの第1CNN処理を実行する。そして、第2CNN部206が、少なくとも第2のディレーションパラメータを用いて、第1CNN部205の出力ベクトルを入力とする第2CNN処理を実行する。
【0054】
これにより第1実施形態の情報処理装置100によれば、畳み込みニューラルネットワークモデルを用いる場合であっても、1つのモデルを用いて計算量と精度とのトレードオフを制御する柔軟な実装を実現することができる。例えば、2層以上の畳み込みニューラルネットワークにおいて、変換パラメータrを制御することにより精度重視(計算量は大きいが出力の解像度が高い)と、計算量重視(計算量は小さいが出力が間引かれる)とを切り替えることが可能になる。すなわち、同じニューラルネットワークモデルを計算能力の異なる様々な計算機で実行できるという効果がある。
【0055】
具体的には、第1実施形態の検出制御部103は、畳み込みニューラルネットワークモデルを用いて高精度な検出が可能であると共に、精度と計算量とのトレードオフを柔軟に制御することが可能である。これにより、計算リソースが限られる場合には構成を変化させてリアルタイム処理を行うことができるという効果がある。
【0056】
このような柔軟な処理は、あらかじめ複数のモデルを用意して切り替えることでも実現可能であるが、その場合はモデルを記憶するメモリ容量の増大が課題となるのに対して、第1実施形態では1つのモデルで対応可能であるために、省メモリで実装できる効果がある。
【0057】
また、第1実施形態の検出制御部103は、さまざまな能力のプロセッサでその計算能力に合わせてリアルタイム処理が可能であることから、プロセッサ毎にニューラルネットワークモデルを開発する必要が無く、開発コストを削減できるという効果もある。
【0058】
例えば、情報処理装置100(第1の情報処理装置)が、開発者の操作入力に応じて、任意の装置(第2の情報処理装置)のプロセッサに合わせてパラメータ変換処理を行って、変換されたパラメータが第2の情報処理装置に組み込まれてもよい。この場合、第1の情報処理装置はCNN処理を実行することは必須ではなく、また、第2の情報処理装置には、パラメータ変換処理を行う機能が含まれていなくてもよい。
【0059】
すなわち、第1の情報処理装置が、出力の解像度を制御する第1のストライドパラメータと、入力の解像度を制御する第1のディレーションパラメータと、を記憶装置から読み出すステップと、第1の情報処理装置が、変換パラメータを用いて、第1のストライドパラメータを第2のストライドパラメータに変換し、第1のディレーションパラメータを第2のディレーションパラメータに変換するステップと、第1の情報処理装置が、少なくとも第2のストライドパラメータを、特徴ベクトルの第1CNN処理に使用されるパラメータとして、第2の情報処理装置に保存するステップと、第1の情報処理装置が、少なくとも第2のディレーションパラメータを、第1CNN処理の出力ベクトルを入力とする第2CNN処理に使用されるパラメータとして、第2の情報処理装置に保存するステップと、を含む情報処理方法も考えられる。
【0060】
なお、従来は、出力が1フレームの入力のみから計算可能なモデルの場合は、モデルを変更することなくスキップフレーム数を変更して計算量を調整することが可能だった。しかしながら、畳み込みニューラルネットワークにおいては1フレームの入力だけでなく、その前後の入力を参照するために、スキップフレーム数を変化させると出力に影響を与えるため、スキップフレーム数を変更することができなかった。そのため、畳み込みニューラルネットワークモデルを用いる場合、1つのモデルを用いて計算量と精度のトレードオフを制御する柔軟な実装を実現することができなかった。このような柔軟性を実現するためには、計算量の異なる複数のモデルをあらかじめ学習して搭載し、それらを切り替えるなどする必要があり、モデルを記憶するメモリ容量の増大や、モデルを開発するコストの増大などの課題があった。
【0061】
(第2の実施形態)
次に第2実施形態について説明する。第2実施形態の説明では、第1実施形態と同様の説明については省略し、第1実施形態と異なる箇所について説明する。
【0062】
[機能構成の例]
図8は第2実施形態の情報処理装置の機能構成の一例を示す図である。上述した第1実施形態と同一の構成要素については同一の番号を付して説明を省略する。第2実施形態は、畳み込みニューラルネットワークが3層となっており、それぞれ2次元畳み込みニューラルネットワークであること、補間部409が追加されていること、などが上述した第1実施形態との主な相違点である。
【0063】
第2実施形態の検出制御部103-2は、記憶制御部401、生成部402、変換部403、抽出部204、第1CNN部405、第2CNN部406、第3CNN部408、補間部409および認識部207を備える。
【0064】
記憶制御部401は、第1CNN部405、第2CNN部406および第3CNN部408にそれぞれ対応するパラメータとして、
図9に示すパラメータを記憶部105に記憶する。
【0065】
図9は第2実施形態のパラメータの一例を示す図である。
図9の例は、第2実施形態のパラメータがテーブル形式で記憶される場合を示す。第2実施形態では、時間方向(第1の方向の一例)および周波数方向(第2の方向の一例)の2次元の畳み込みニューラルネットワークが用いられるため、カーネルサイズ、ストライドおよびディレーションの各パラメータは時間方向および周波数方向のパラメータの対で表される。
【0066】
例えば、第2CNN部406のカーネルサイズk2=(5,3)は、時間方向のカーネルサイズが5、周波数方向のカーネルサイズが3であることを表す。ストライドおよびディレーションのパラメータの一部(例えば、第1CNN部405のストライド)は、5個のパラメータのリストで表されている。
【0067】
リストに含まれるストライドパラメータのそれぞれは、周波数方向の出力解像度を制御するパラメータと、時間方向の出力解像度を制御するパラメータとを含む。同様に、リストに含まれるディレーションパラメータのそれぞれは、周波数方向の入力解像度を制御するパラメータと、時間方向の入力解像度を制御するパラメータとを含む。
【0068】
生成部402は、計算リソース取得部102から入力された計算リソース情報に基づいて、変換パラメータrを生成する。具体的には、生成部402は、
図10に示すテーブルに従って計算リソース情報に含まれるMIPS値を、変換パラメータrに変換する。
【0069】
図10は第2実施形態の計算リソースに応じた変換パラメータの一例を示す図である。
図10の例は、第2実施形態の変換パラメータがテーブル形式で記憶される場合を示す。例えば、100以上200未満のMIPS値は、変換パラメータr=3に変換される。
【0070】
変換部403は、
図10に示す変換パラメータrをインデックスとして使用して、
図9に示すパラメータのリストから、第1CNN部405のストライドs
1’、第2CNN部406のストライドs
2’およびディレーションd
2’、並びに、第3CNN部408のディレーションd
3’を選択する。
【0071】
例えば、変換パラメータr=1の場合は、パラメータのリストの先頭の要素が選択される。この場合、第1CNN部405のストライドs1’、第2CNN部406のストライドs2’およびディレーションd2’、並びに、第3CNN部408のディレーションd3’は、それぞれ、s1’=(1,2)、s2’=(6,1)、d2’=(1,1)、d3’=(1,1)となる。
【0072】
また例えば、変換パラメータr=3の場合は、パラメータのリストの3番目の要素が選択される。この場合、第1CNN部405のストライドs1’、第2CNN部406のストライドs2’およびディレーションd2’、並びに、第3CNN部408のディレーションd3’は、それぞれ、s1’=(1,1)、s2’=(3,1)、d2’=(1,2)、d3’=(2,2)となる。
【0073】
第2実施形態では、第1CNN部405のストライドと第2CNN部406のディレーションとの組み合わせ、および第2CNN部406のストライドと第3CNN部408とのディレーションの組み合わせについて、可能な組み合わせが予めリストとして記憶部105に記憶されている。そのため、パラメータの変換は、変換パラメータrが、インデックスとして使用されたリストの要素の選択によって実施され、第1実施形態のようなrについての約数の制約は無い。
【0074】
第1CNN部405は、変換部403から入力されるパラメータを用いて、抽出部204から入力された特徴ベクトルに時間方向および周波数方向の2次元CNN処理を実施し、続いてバッチ正規化処理、ReLU関数による活性化処理を順次実行する。
【0075】
第2CNN部406は、変換部403から入力されるパラメータを用いて、第1CNN部405の出力ベクトルに時間方向および周波数方向の2次元CNN処理を実施し、続いてバッチ正規化処理、ReLU関数による活性化処理を順次実行する。
【0076】
第3CNN部408は、変換部403から入力されるパラメータを用いて、第2CNN部406の出力ベクトルに時間方向および周波数方向の2次元CNN処理を実施し、続いてバッチ正規化処理、ReLU関数による活性化処理を順次実行する。
【0077】
補間部409は、第3CNN部408の出力ベクトルを、必要に応じて時間方向および周波数方向に補間して出力する。すなわち、補間部409は、第3CNN部408の出力ベクトルの時間解像度又は周波数解像度の少なくとも一方が不足している場合、当該出力ベクトルの時間解像度又は周波数解像度の少なくとも一方を補間する。
【0078】
なお、補間部409の処理対象となる出力ベクトルは、2次元に限らず、任意でよい。例えば、第1実施形態のように、第3CNN部408の出力ベクトルが1次元の場合にも、補間部409の処理が適用されてもよい。また例えば、3次元以上の出力ベクトルに対して、補間部409の処理が適用されてもよい。
【0079】
図11、
図12および
図13は、第2実施形態の補間部409の入力例1~3を示す図である。
図11、
図12および
図13の入力例1~3は、43フレーム分の特徴ベクトルに対応する第3CNN部408の出力が補間部409に入力される場合を表す。
【0080】
例えば、変換パラメータr=5の場合は、時間方向および周波数方向のストライドが全て1であるため、
図11に示されるように、入力される特徴ベクトルと同様に周波数方向32次元、時間方向43フレームのベクトルが出力される。この場合、補間部409は補間処理を行わず、第3CNN部408の出力ベクトルをそのまま出力する。
【0081】
また例えば、変換パラメータr=3の場合は、第2CNN部406の時間方向のストライドが3となるため、出力のフレーム数が1/3に間引かれて、第3CNN部408の出力は
図12で表される。ここで、斜線で表された四角は出力データが存在し、白色の四角はストライドによりスキップされて出力データが存在しないことを表す。この場合、補間部409は、例えば時間方向の線形補間を行って、白色の四角に対応するデータを挿入することによって、出力ベクトルを
図11と同じデータサイズにする。
【0082】
また例えば、変換パラメータr=1の場合は、第1CNN部405の周波数方向のストライドが2となり、第2CNN部406の時間方向のストライドが6となるため、出力のフレーム数が周波数方向に1/2、時間方向に1/3に間引かれて、第3CNN部408の出力は
図13で表される。この場合、補間部409は、例えば時間方向および周波数方向の線形補間を行って白色の四角に対応するデータを挿入し、出力ベクトルを
図11と同じデータサイズにする。
【0083】
図12および
図13の例のように、計算量重視の設定で、ニューラルネットワーク出力の時間解像度または周波数解像度が低下した(間引かれた)場合に、補間部409は、間引かれた出力を補間によって生成する。これにより精度重視の設定(精度を向上させる設定)、または計算量重視の設定(計算量を削減させる設定)にかかわらず、出力データの仕様が共通となり、以降の処理を共通化できるという効果がある。
【0084】
[情報処理方法の例]
図14は第2実施形態の情報処理方法の一例を示すフローチャートである。はじめに、計算リソース取得部102が、上述の計算リソース情報を取得する(ステップS11)。次に、生成部402が、ステップS11で取得された計算リソース情報に含まれるMIPS値を、
図10に示すテーブルに従って、変換パラメータrを生成する(ステップS12)。
【0085】
次に、変換部403が、第1CNN部405、第2CNN部406および第3CNN部408のパラメータを変換する(ステップS13)。具体的には、変換部403は、
図10に示す変換パラメータrをインデックスとして使用して、
図9に示すパラメータのリストから、第1CNN部405のストライドs
1’、第2CNN部406のストライドs
2’およびディレーションd
2’、並びに、第3CNN部408のディレーションd
3’を選択する。
【0086】
次に、抽出部204が、音声取得部101から入力された音声信号から、音声の特徴量を示す特徴ベクトルを抽出する(ステップS14)。
【0087】
次に、第1CNN部405が、ステップS13で変換されたストライドパラメータs1’を用いて、ステップS14で抽出された特徴ベクトルに、時間方向および周波数方向の2次元CNN処理を実行する(ステップS15)。
【0088】
次に、第2CNN部406が、ステップS13で変換されたストライドパラメータs2’およびディレーションパラメータd2’を用いて、第1CNN部405の出力データに、時間方向および周波数方向の2次元CNN処理を実行する(ステップS16)。
【0089】
次に、第3CNN部408が、ステップS13で変換されたディレーションパラメータd3’を用いて、第2CNN部406の出力データに、時間方向および周波数方向の2次元CNN処理を実行する(ステップS17)。
【0090】
次に、補間部409が、第3CNN部408の出力ベクトルを、必要に応じて時間方向および周波数方向に補間して出力する(ステップS18)。
【0091】
次に、認識部207が、第3CNN部408の出力ベクトルを用いて、音声に含まれるキーワードを検出し(ステップS19)、起動部104が、キーワードに対応付けられたコマンドを起動する(ステップS20)。
【0092】
以上、説明したように、第2実施形態では、記憶部105が、複数のストライドs’(第2のストライドパラメータ)と、複数のディレーションd’(第2のディレーションパラメータ)とを記憶する。変換部403は、変換パラメータrに基づき、複数の第2のストライドパラメータから1つの第2のストライドパラメータを選択することによって、ストライドs(第1のストライドパラメータ)を変換し、変換パラメータrに基づき、複数の(第2のディレーションパラメータ)から1つの前記第2のディレーションパラメータを選択することによって、ディレーションd2(第1のディレーションパラメータ)を変換する。
【0093】
これにより、第2実施形態によれば、第1実施形態と同様の効果が得られる。
【0094】
また、以上述べた第2実施形態では、2次元の畳み込みニューラルネットワーク3層を用いているため、第1実施形態よりもより詳細なモデル化が可能となり、検出精度が改善する効果がある。また、ストライドパラメータの変換およびディレーションパラメータの変換を、時間方向だけでなく周波数方向でも行うことで、計算量の調整範囲が広がると共に、多段階に細かく調整できるようになる。これにより、第2利用可能な計算リソースに合わせてできるだけ精度を落とさずにリアルタイム処理を行うことができる効果がある。
【0095】
上述した第1実施形態の第1CNN部205および第2CNN部206、並びに、第2実施形態の第1CNN部405、第2CNN部406および第3CNN部408では、CNN処理に続いてバッチ正規化処理とReLU活性化処理とを実行する例について説明したが、これらに限定されるものではなく、種々の正規化処理や活性化処理を用いることができる。また、プーリング処理などを適用したり、スキップコネクションなどを付加したりするようにしてもよい。また、これらのCNN処理では出力チャネル数のパラメータについては説明を省略したが、任意の値を設定することが可能である。
【0096】
また、第1及び第2実施形態では、キーワード発話検出を例として説明したが、これに限定されるものではなく、2層以上の畳み込みニューラルネットワークを利用する応用であれば適用が可能である。例えば、上述の第1及び第2実施形態は、キーワード発話だけでなく連続発話が認識可能な音声認識装置にも当然適用可能である。また例えば、上述の第1及び第2実施形態は、音声以外の温度、加速度または光などの各種センサー信号処理や、画像または映像の処理にも適用が可能である。このような音声以外の処理においても同様に、利用可能な計算リソースに応じて、できるだけ性能を落とさずにリアルタイム処理を実行できる効果がある。
【0097】
また、上述の第1及び第2実施形態の畳み込みニューラルネットワークは、1次元または2次元の例で説明したが、3次元以上の畳み込みニューラルネットワークにも適用可能である。
【0098】
また、上述の第1及び第2実施形態は、スマートフォンで実現する例で説明したが、PC(Personal Computer)、タブレット、その他各種組み込み機器などに適用されてもよい。また、上述の第1及び第2実施形態の構成は、ソフトウェア(プログラム)で実現してもよいし、一部または全部をハードウェア回路で実現してもよい。
【0099】
また、コンピュータで実行されるプログラムは、コンピュータにインストール可能な形式または実行可能な形式のファイルで、CD-ROM、フレキシブルディスク、CD-R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【0100】
また、このプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、このプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【0101】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0102】
100 情報処理装置
101 音声取得部
102 計算リソース取得部
103 検出制御部
104 起動部
105 記憶部
201 記憶制御部
202 生成部
203 変換部
204 抽出部
205 第1CNN部
206 第2CNN部
207 認識部
301 CPU
302 RAM
303 ROM
304 操作入力装置
305 表示装置
306 記憶装置
307 通信装置
308 音声入力装置
309 バス
401 記憶制御部
402 生成部
403 変換部
405 第1CNN部
406 第2CNN部
408 第3CNN部
409 補間部