(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024157045
(43)【公開日】2024-11-06
(54)【発明の名称】ニューラルネットワーク学習装置、ニューラルネットワーク学習方法、プログラム
(51)【国際特許分類】
G06N 3/088 20230101AFI20241029BHJP
G06N 3/0455 20230101ALI20241029BHJP
【FI】
G06N3/088
G06N3/0455
【審査請求】有
【請求項の数】3
【出願形態】OL
(21)【出願番号】P 2024140933
(22)【出願日】2024-08-22
(62)【分割の表示】P 2023521998の分割
【原出願日】2021-05-17
【新規性喪失の例外の表示】特許法第30条第2項適用申請有り (1)ウェブサイトの掲載日 2020年5月22日 ウェブサイトのアドレス https://confit.atlas.jp/guide/event/jsai2020/subject/3M1-GS-12-03/advanced https://confit.atlas.jp/guide/event-img/jsai2020/3M1-GS-12-03/public/pdf?type=in (2)開催日 2020年6月11日 集会名、開催場所 2020年度人工知能学会全国大会(第34回)、オンライン開催
【国等の委託研究の成果に係る記載事項】(出願人による申告)2020年度、国立研究開発法人新エネルギー・産業技術総合開発機構「戦略的イノベーション創造プログラム(SIP)第2期/ビッグデータ・AIを活用したサイバー空間基盤技術/学習支援技術/エビデンスに基づくテーラーメイド教育の研究開発」委託研究、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】100121706
【弁理士】
【氏名又は名称】中尾 直樹
(74)【代理人】
【識別番号】100128705
【弁理士】
【氏名又は名称】中村 幸雄
(74)【代理人】
【識別番号】100147773
【弁理士】
【氏名又は名称】義村 宗洋
(72)【発明者】
【氏名】服部 正嗣
(72)【発明者】
【氏名】澤田 宏
(72)【発明者】
【氏名】岩田 具治
(57)【要約】
【課題】入力情報が存在しない場合であっても入力情報が存在しないことを損失として扱わない損失関数を用いてエンコーダとデコーダを含むニューラルネットワークを学習する技術を提供する。
【解決手段】入力ベクトルを潜在変数ベクトルに変換するエンコーダと潜在変数ベクトルを出力ベクトルに変換するデコーダとを含むニューラルネットワークを入力ベクトルと出力ベクトルとが略同一になるように学習するニューラルネットワーク学習装置であって、エンコーダは入力情報を正情報ビットと負情報ビットとで表す入力ベクトルを入力とするものであり、パラメータ更新処理は入力情報が存在しない場合には略0である損失の学習用の入力情報群のすべての入力情報についての和を含む損失関数の値が小さくなるように行われる。
【選択図】
図2
【特許請求の範囲】
【請求項1】
入力ベクトルを潜在変数を要素とする潜在変数ベクトルに変換するエンコーダと潜在変数ベクトルを出力ベクトルに変換するデコーダとを含むニューラルネットワークを入力ベクトルと出力ベクトルとが略同一になるように学習するニューラルネットワーク学習装置であって、
前記ニューラルネットワークに含まれるパラメータを更新するパラメータ更新処理を繰り返すことにより学習を行う学習部を含み、
前記エンコーダは、
所定の入力情報群に含まれる各入力情報が、正の情報に該当する、負の情報に該当する、情報が存在しない、の3通りのいずれかであるときに、
各入力情報を、
当該入力情報が正の情報に該当する場合に1であり、情報が存在しない場合または当該入力情報が負の情報に該当する場合に0である正情報ビットと、
当該入力情報が負の情報に該当する場合に1であり、情報が存在しない場合または当該入力情報が正の情報に該当する場合に0である負情報ビットと、
で表す入力ベクトルを入力とするものであり、
前記エンコーダは、複数個の層により構成されたものであり、
前記入力ベクトルを入力とする層は、前記入力ベクトルから複数個の出力値を得るものであり、
前記各出力値は、前記入力ベクトルに含まれる正情報ビットの値のそれぞれに重みパラメータを与えたものと、前記入力ベクトルに含まれる負情報ビットの値のそれぞれに重みパラメータを与えたものと、をすべて加算したものであり、
前記パラメータ更新処理は、
前記入力情報が正の情報に該当する場合には、前記デコーダにより得られた入力情報が正の情報に該当する確率が小さいほど大きな値であり、前記入力情報が負の情報に該当する場合には、前記デコーダにより得られた入力情報が負の情報に該当する確率が小さいほど大きな値であり、前記入力情報が存在しない場合には、略0である、損失の学習用の入力情報群のすべての入力情報についての和、を含む損失関数の値が小さくなるように行われる
ニューラルネットワーク学習装置。
【請求項2】
ニューラルネットワーク学習装置が、入力ベクトルを潜在変数を要素とする潜在変数ベクトルに変換するエンコーダと潜在変数ベクトルを出力ベクトルに変換するデコーダとを含むニューラルネットワークを入力ベクトルと出力ベクトルとが略同一になるように学習するニューラルネットワーク学習方法であって、
前記ニューラルネットワーク学習装置が、前記ニューラルネットワークに含まれるパラメータを更新するパラメータ更新処理を繰り返すことにより学習を行う学習ステップ含み、
前記エンコーダは、
所定の入力情報群に含まれる各入力情報が、正の情報に該当する、負の情報に該当する、情報が存在しない、の3通りのいずれかであるときに、
各入力情報を、
当該入力情報が正の情報に該当する場合に1であり、情報が存在しない場合または当該入力情報が負の情報に該当する場合に0である正情報ビットと、
当該入力情報が負の情報に該当する場合に1であり、情報が存在しない場合または当該入力情報が正の情報に該当する場合に0である負情報ビットと、
で表す入力ベクトルを入力とするものであり、
前記エンコーダは、複数個の層により構成されたものであり、
前記入力ベクトルを入力とする層は、前記入力ベクトルから複数個の出力値を得るものであり、
前記各出力値は、前記入力ベクトルに含まれる正情報ビットの値のそれぞれに重みパラメータを与えたものと、前記入力ベクトルに含まれる負情報ビットの値のそれぞれに重みパラメータを与えたものと、をすべて加算したものであり、
前記パラメータ更新処理は、
前記入力情報が正の情報に該当する場合には、前記デコーダにより得られた入力情報が正の情報に該当する確率が小さいほど大きな値であり、前記入力情報が負の情報に該当する場合には、前記デコーダにより得られた入力情報が負の情報に該当する確率が小さいほど大きな値であり、前記入力情報が存在しない場合には、略0である、損失の学習用の入力情報群のすべての入力情報についての和、を含む損失関数の値が小さくなるように行われる
ニューラルネットワーク学習方法。
【請求項3】
請求項1に記載のニューラルネットワーク学習装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ニューラルネットワークを学習する技術に関する。
【背景技術】
【0002】
大量の高次元データを分析する手法として様々な方法が提案されている。例えば、非特許文献1の非負値行列因子分解(Non-negative Matrix Factorization: NMF)や非特許文献2の無限関係モデル(Infinite Relational Model: IRM)を用いる方法がある。これらの方法を用いると、データの特徴的な性質を見出したり、共通の性質を持つデータをクラスタとしてまとめたりすることが可能となる。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Lee, D. D. and Seung, H. S., “Learning the parts of objects by non-negative matrix factorization,” Nature, 401, pp.788-791, 1999.
【非特許文献2】Kemp, C., Tenenbaum, J. B., Griffiths, T. L., Yamada, T. and Ueda, N., “Learning systems of concepts with an infinite relational model,” AAAI06(Proceedings of the 21st national conference on Artificial intelligence, pp.381-388, 2006.
【発明の概要】
【発明が解決しようとする課題】
【0004】
NMFやIRMを用いる分析方法には、データアナリストが有するような高度な分析技術が必要になることが多い。しかし、データアナリストは分析対象となる高次元データ(以下、分析対象データという)そのものについては詳しくないことも多いため、このような場合、分析対象データの専門家との協調作業が必要になるが、この作業がうまく進まないこともある。そこで、データアナリストを必要とすることなく、分析対象データの専門家のみで分析することができる手法が必要となってくる。
【0005】
参考非特許文献1の変分オートエンコーダ(Variational AutoEncoder: VAE)のようにエンコーダとデコーダを含むニューラルネットワークを用いて分析することを考える。ここで、エンコーダとは、入力ベクトルを潜在変数ベクトルに変換するニューラルネットワーク、デコーダとは、潜在変数ベクトルを出力ベクトルに変換するニューラルネットワークである。また、潜在変数ベクトルは、入力ベクトルや出力ベクトルよりも低次元のベクトルであり、潜在変数を要素とするベクトルである。入力ベクトルと出力ベクトルとが略同一になるように学習したエンコーダを用いて高次元の分析対象データを変換すると、低次元の2次データに圧縮することができるが、分析対象データと2次データの関係が不明であるため、このままでは分析作業に適用することはできない。ここで、略同一になるように学習するとは、理想的には、完全同一になるように学習するのが好ましいが、現実的には、学習時間の制約などによりほぼ同一になるように学習せざるを得ないため、所定の条件を満たした場合に同一であるとみなして処理を終了する形で学習することをいう。
【0006】
(参考非特許文献1:Kingma, D. P. and Welling, M., “Auto-encoding variational bayes,” arXiv preprint arXiv:1312.6114, 2013.)
また、入力情報を表す入力ベクトルの一部に欠損があり、情報が存在しない場合もある。この場合、入力情報が存在しないことを適切に扱えるようにしない限り、分析作業に適用することはできない。
【0007】
そこで本発明では、入力情報が存在しない場合であっても入力情報が存在しないことを損失として扱わない損失関数を用いてエンコーダとデコーダを含むニューラルネットワークを学習する技術を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明の一形態は、入力ベクトルを潜在変数を要素とする潜在変数ベクトルに変換するエンコーダと潜在変数ベクトルを出力ベクトルに変換するデコーダとを含むニューラルネットワークを入力ベクトルと出力ベクトルとが略同一になるように学習するニューラルネットワーク学習装置であって、前記ニューラルネットワークに含まれるパラメータを更新するパラメータ更新処理を繰り返すことにより学習を行う学習部を含み、前記エンコーダは、所定の入力情報群に含まれる各入力情報が、正の情報に該当する、負の情報に該当する、情報が存在しない、の3通りのいずれかであるときに、各入力情報を、当該入力情報が正の情報に該当する場合に1であり、情報が存在しない場合または当該入力情報が負の情報に該当する場合に0である正情報ビットと、当該入力情報が負の情報に該当する場合に1であり、情報が存在しない場合または当該入力情報が正の情報に該当する場合に0である負情報ビットと、で表す入力ベクトルを入力とするものであり、前記エンコーダは、複数個の層により構成されたものであり、前記入力ベクトルを入力とする層は、前記入力ベクトルから複数個の出力値を得るものであり、前記各出力値は、前記入力ベクトルに含まれる正情報ビットの値のそれぞれに重みパラメータを与えたものと、前記入力ベクトルに含まれる負情報ビットの値のそれぞれに重みパラメータを与えたものと、をすべて加算したものであり、前記パラメータ更新処理は、前記入力情報が正の情報に該当する場合には、前記デコーダにより得られた入力情報が正の情報に該当する確率が小さいほど大きな値であり、前記入力情報が負の情報に該当する場合には、前記デコーダにより得られた入力情報が負の情報に該当する確率が小さいほど大きな値であり、前記入力情報が存在しない場合には、略0である、損失の学習用の入力情報群のすべての入力情報についての和、を含む損失関数の値が小さくなるように行われる。
【発明の効果】
【0009】
本発明によれば、入力情報が存在しない場合であっても入力情報が存在しないことを損失として扱わない損失関数を用いてエンコーダとデコーダを含むニューラルネットワークを学習することが可能となる。
【図面の簡単な説明】
【0010】
【
図2】ニューラルネットワーク学習装置100の構成を示すブロック図である。
【
図3】ニューラルネットワーク学習装置100の動作を示すフローチャートである。
【
図4】本発明の実施形態における各装置を実現するコンピュータの機能構成の一例を示す図である。
【発明を実施するための形態】
【0011】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【0012】
各実施形態の説明に先立って、この明細書における表記方法について説明する。
【0013】
^(キャレット)は上付き添字を表す。例えば、xy^zはyzがxに対する上付き添字であり、xy^zはyzがxに対する下付き添字であることを表す。また、_(アンダースコア)は下付き添字を表す。例えば、xy_zはyzがxに対する上付き添字であり、xy_zはyzがxに対する下付き添字であることを表す。
【0014】
また、ある文字xに対する^xや~xのような上付き添え字の”^”や”~”は、本来”x”の真上に記載されるべきであるが、明細書の記載表記の制約上、^xや~xと記載しているものである。
【0015】
<技術的背景>
ここでは、本発明の実施形態で用いるエンコーダとデコーダを含むニューラルネットワークの学習方法について説明する。本発明の実施形態で用いるニューラルネットワークは、入力ベクトルを潜在変数ベクトルに変換するエンコーダと潜在変数ベクトルを出力ベクトルに変換するデコーダとを含むニューラルネットワークである。本発明の実施形態では、このニューラルネットワークにおいて、入力ベクトルと出力ベクトルとが略同一になるように学習する。本発明の実施形態では、入力ベクトルに含まれるある性質の大きさが大きいほど、潜在変数ベクトルに含まれるある潜在変数が大きくなるようにするために、または、潜在変数ベクトルに含まれるある潜在変数が小さくなるようにするために、潜在変数を下記の特徴(以下、特徴1と呼ぶ)を持つものとして学習する。
【0016】
[特徴1]潜在変数が入力ベクトルに関して単調性(Monotonicity)を有するように学習する。ここで、潜在変数が入力ベクトルに関して単調性を有するとは、入力ベクトルが大きくなると潜在変数ベクトルが大きくなるという単調増加、入力ベクトルが大きくなると潜在変数ベクトルが小さくなるという単調減少のいずれかの関係を有することをいう。なお、入力ベクトルや潜在変数ベクトルの大小は、ベクトルに関する順序関係(すなわち、ベクトルの各要素に関する順序関係を用いて定義する関係)に基づくものであり、例えば、以下の順序関係を用いることができる。
【0017】
ベクトルv=(v1, …, vn), v’=(v’1, …, v’n)に対して、v≦v’が成り立つとは、ベクトルvとv'のすべての要素に対して、すなわち、ベクトルvの第i要素vi, ベクトルv’の第i要素v’i(ただし、i=1, …, n)に対して、vi≦v’iが成り立つことをいう。
【0018】
潜在変数が入力ベクトルに関して単調性を有するように学習するとは、具体的には、潜在変数ベクトルが入力ベクトルと下記の第1の関係と第2の関係のいずれかの関係を有するように学習することをいう。
【0019】
第1の関係は、2つの入力ベクトルを第1入力ベクトル、第2入力ベクトルとして、入力ベクトルの少なくとも1つの要素について第1入力ベクトルの要素の値が第2入力ベクトルの要素の値より大きく、入力ベクトルの残りのすべての要素について第1入力ベクトルの要素の値が第2入力ベクトルの要素の値以上である場合に、第1入力ベクトルを変換して得られる潜在変数ベクトルを第1潜在変数ベクトル、第2入力ベクトルを変換して得られる潜在変数ベクトルを第2潜在変数ベクトルとして、潜在変数ベクトルの少なくとも1つの要素について第1潜在変数ベクトルの要素の値が第2潜在変数ベクトルの要素の値より大きくなり、潜在変数ベクトルの残りのすべての要素について第1潜在変数ベクトルの要素の値が第2潜在変数ベクトルの要素の値以上となる関係である。
【0020】
第2の関係は、2つの入力ベクトルを第1入力ベクトル、第2入力ベクトルとして、入力ベクトルの少なくとも1つの要素について第1入力ベクトルの要素の値が第2入力ベクトルの要素の値より大きく、入力ベクトルの残りのすべての要素について第1入力ベクトルの要素の値が第2入力ベクトルの要素の値以上である場合に、第1入力ベクトルを変換して得られる潜在変数ベクトルを第1潜在変数ベクトル、第2入力ベクトルを変換して得られる潜在変数ベクトルを第2潜在変数ベクトルとして、潜在変数ベクトルの少なくとも1つの要素について第1潜在変数ベクトルの要素の値が第2潜在変数ベクトルの要素の値より小さくなり、潜在変数ベクトルの残りのすべての要素について第1潜在変数ベクトルの要素の値が第2潜在変数ベクトルの要素の値以下となる関係である。
【0021】
なお、便宜上、第1の関係を表す場合に、潜在変数が入力ベクトルと単調増加の関係にある旨の表現を用い、第2の関係を表す場合に、潜在変数が入力ベクトルと単調減少の関係にある旨の表現を用いることがある。したがって、潜在変数が入力ベクトルに対して単調性を有する旨の表現は、第1の関係と第2の関係のいずれかの関係を有することを表す便宜上の表現ともいえる。
【0022】
本発明の実施形態では、入力ベクトルと出力ベクトルとが略同一になるように学習するため、入力ベクトルと潜在変数ベクトルの関係を用いて学習する代わりに、潜在変数ベクトルと出力ベクトルの関係を用いて学習してもよい。具体的には、出力ベクトルが潜在変数ベクトルと下記の第3の関係と第4の関係のいずれかの関係を有するように学習してもよい。なお、下記の第3の関係は上述した第1の関係と等価なものであり、下記の第4の関係は上述した第2の関係と等価なものである。
【0023】
第3の関係は、2つの潜在変数ベクトルを第1潜在変数ベクトル、第2潜在変数ベクトルとして、潜在変数ベクトルの少なくとも1つの要素について第1潜在変数ベクトルの要素の値が第2潜在変数ベクトルの要素の値より大きく、潜在変数ベクトルの残りのすべての要素について第1潜在変数ベクトルの要素の値が第2潜在変数ベクトルの要素の値以上である場合に、第1潜在変数ベクトルを変換して得られる出力ベクトルを第1出力ベクトル、第2潜在変数ベクトルを変換して得られる出力ベクトルを第2出力ベクトルとして、出力ベクトルの少なくとも1つの要素について第1出力ベクトルの要素の値が第2出力ベクトルの要素の値より大きくなり、出力ベクトルの残りのすべての要素について第1出力ベクトルの要素の値が第2出力ベクトルの要素の値以上となる関係である。
【0024】
第4の関係は、2つの潜在変数ベクトルを第1潜在変数ベクトル、第2潜在変数ベクトルとして、潜在変数ベクトルの少なくとも1つの要素について第1潜在変数ベクトルの要素の値が第2潜在変数ベクトルの要素の値より大きく、潜在変数ベクトルの残りのすべての要素について第1潜在変数ベクトルの要素の値が第2潜在変数ベクトルの要素の値以上である場合に、第1潜在変数ベクトルを変換して得られる出力ベクトルを第1出力ベクトル、第2潜在変数ベクトルを変換して得られる出力ベクトルを第2出力ベクトルとして、出力ベクトルの少なくとも1つの要素について第1出力ベクトルの要素の値が第2出力ベクトルの要素の値より小さくなり、出力ベクトルの残りのすべての要素について第1出力ベクトルの要素の値が第2出力ベクトルの要素の値以下となる関係である。
【0025】
なお、便宜上、第3の関係を表す場合に、出力ベクトルが潜在変数と単調増加の関係にある旨の表現を用い、第4の関係を表す場合に、出力ベクトルが潜在変数と単調減少の関係にある旨の表現を用いることがある。さらに、便宜上、第3の関係と第4の関係のいずれかの関係を有することを、出力ベクトルが潜在変数に対して単調性を有する旨の表現を用いることがある。
【0026】
潜在変数が上記の特徴1を持つものとなるように学習することにより、入力ベクトルに含まれるある性質の大きさが大きいほど、潜在変数ベクトルに含まれるある潜在変数が大きい、または、潜在変数ベクトルに含まれるある潜在変数が小さいという条件を満たす潜在変数が提供されることになる。
【0027】
なお、本発明の実施形態では、潜在変数を上記の特徴1に加えて、下記の特徴(以下、特徴2と呼ぶ)も持つものとして学習してもよい。
【0028】
[特徴2]潜在変数が取りうる値が所定の範囲の値となるように学習する。
【0029】
潜在変数が上記の特徴1に加えて上記の特徴2も持つものとなるように学習することにより、入力ベクトルに含まれるある性質の大きさが大きいほど、潜在変数ベクトルに含まれるある潜在変数が大きい、または、潜在変数ベクトルに含まれるある潜在変数が小さいという条件を満たす潜在変数が、一般のユーザにもわかりやすいパラメータとして提供されることになる。
【0030】
上記の特徴1の特徴を備える潜在変数を出力するエンコーダを含むニューラルネットワークを学習するための制約について説明する。具体的には、以下の2つの制約について説明する。
【0031】
[制約1]単調性違反に対する損失項を含む損失関数を最小化するように学習する。
【0032】
[制約2]デコーダのすべての重みパラメータが非負値になるように制約して、または、デコーダのすべての重みパラメータが非正値になるように制約して学習する。
【0033】
まず、学習対象であるニューラルネットワークについて説明する。例えば、以下のようなVAEを用いることができる。エンコーダ、デコーダをそれぞれ2層のニューラルネットワークとし、エンコーダの第1層と第2層、デコーダの第1層と第2層はいずれも全結合とする。エンコーダの第1層の入力である入力ベクトルは、例えば、60次元ベクトルとする。デコーダの第2層の出力である出力ベクトルは、入力ベクトルを復元したベクトルである。また、エンコーダの第2層の活性化関数としてシグモイド関数を用いる。これにより、エンコーダの出力である潜在変数ベクトルの要素の値(すなわち、各潜在変数)が0以上1以下となる。なお、潜在変数ベクトルは入力ベクトルの次元数より低いベクトル、例えば5次元ベクトルとする。学習手法として、例えば、Adam(参考非特許文献2参照)を用いることができる。
【0034】
(参考非特許文献2:Kingma, D. P. and Jimmy B., “Adam: A Method for Stochastic Optimaization,” arXiv:1412.6980, 2014)
なお、潜在変数の取りうる値の範囲を[0, 1]とする代わりに、[m, M](ただし、m<Mとする)とすることもでき、この場合、活性化関数として、シグモイド関数の代わりに、例えば、次の関数s(x)を用いることができる。
【数1】
次に、制約1の損失項を含む損失関数について説明する。損失関数Lは、潜在変数が入力ベクトルに関して単調性を有するものとなるようにするための項L
monoを含む関数として定義する。例えば、損失関数Lは次式で定義される関数とすることができる。なお、次式の項L
monoは、効率的な説明を行うために、特徴1に関する項に加えて特徴2に関する項も含めた式となっており、特徴2に関する項であるものについてはその旨を適宜説明するものとする。
【数2】
【数3】
項L
RC, L
priorは、それぞれ一般的なVAEの学習で用いられる再構成誤差に関する項、カルバックライブラー(Kullback Leibler)情報量に関する項である。例えば、項L
RCは入力ベクトルと出力ベクトルとの誤差のバイナリクロスエントロピー(Binary Cross Entropy: BCE)、項L
priorはエンコーダの出力である潜在変数の分布と事前分布とのカルバックライブラー情報量である。
図1は、正答を1、誤答を0として生徒のテスト問題に対する回答の正誤を表した行列であり、行は各問題に対する全生徒の正誤の一覧、列は各生徒の全問題に対する正誤の一覧を表す。ここで、
図1のQ1, …, Q60は1番目の問題、…、60番目の問題を、N
1, …, N
Sは1番目の生徒、…、S番目の生徒を表す。したがって、この場合、各列がエンコーダへの入力である入力ベクトル、Sが学習データの数となる。入力ベクトルの各要素は、1, 0のいずれかの値となるので、
図1の例に対する事前分布として、例えば、平均μ=0.5、分散σ
2=1のガウス分布を用いることができる。
【0035】
項Lmonoは、3種の項Lreal, Lsyn-encoder
(p), Lsyn-decoder
(p)の和である。項Lrealは、潜在変数と出力ベクトルの間に単調性を成立させるための項、つまり、特徴1に関する項である。つまり、項Lrealは、潜在変数と出力ベクトルの間に単調増加の関係を成立させるための項、または、潜在変数と出力ベクトルの間に単調減少の関係を成立させるための項である。一方、項Lsyn-encoder
(p)と項Lsyn-decoder
(p)は、特徴2に関する項である。
【0036】
以下、潜在変数と出力ベクトルの間に単調増加の関係を成立させるための項L
realの一例を学習方法とともに説明する。まず、実際のデータ(
図1の例では、各生徒の正誤の一覧)を入力ベクトルとして入力し、エンコーダの出力として潜在変数ベクトル(以下、元の潜在変数ベクトルという)を得る。次に、元の潜在変数ベクトルの少なくとも1つの要素の値が当該要素の値より小さい値に置き換えられたベクトルを得る。ここで得たベクトルのことを以下では人工潜在変数ベクトルという。なお、要素の値が取りうる範囲の下限を限定する場合には、元の潜在変数ベクトルの少なくとも1つの要素の値が上記範囲の下限以上で当該要素の値より小さい値に置き換えられたベクトルを人工潜在変数ベクトルとして得ればよい。本明細書では「人工潜在変数ベクトル」などのように「人工」が付された文言を用いているが、人工潜在変数ベクトルが元々の潜在変数ではないことを説明するための文言であって、人手で作業をして得ることを意図した文言ではない。
【0037】
ここで、人工潜在変数ベクトルを得る処理の例を示す。例えば、元の潜在変数ベクトルの1つの要素の値を当該要素の値が取りうる範囲内で減少させることにより人工潜在変数ベクトルを生成する。このようにして得られた人工潜在変数ベクトルは元の潜在変数ベクトルに対して、何れか1つの要素の値が小さく、その他の要素の値は同じものとなっている。なお、潜在変数ベクトルのそれぞれ異なる要素の値を当該要素の値が取りうる範囲内で減少させて人工潜在変数ベクトルを複数生成してもよい。つまり、潜在変数ベクトルが5次元ベクトルである場合、1つの元の潜在変数ベクトルから5つの人工潜在変数ベクトルが生成されることになる。また、潜在変数ベクトルの複数の要素の値を各要素の値が取りうる範囲内で減少させて人工潜在変数ベクトルを生成してもよい。つまり、元の潜在変数ベクトルに対して、複数の要素の値が小さく、残りの要素の値は同じものとなっている人工潜在変数ベクトルを生成してもよい。また、潜在変数ベクトルの複数の要素の組の複数通りについて、各組に含まれる各要素の値を各要素の値が取りうる範囲内で減少させて、複数通りの人工潜在変数ベクトルを生成してもよい。
【0038】
なお、元の潜在変数ベクトルの要素の値から当該要素の値より小さい値である人工潜在変数ベクトルの要素の値を得る方法としては、要素の値が取りうる範囲の下限が0である場合であれば、例えば、元の潜在変数ベクトルの要素の値に区間(0, 1)の乱数を乗じて値を減少させて人工潜在変数ベクトルの要素の値を得る方法、元の潜在変数ベクトルの要素の値に1/2を乗じて値を半減させることで人工潜在変数ベクトルの要素の値を得る方法を用いればよい。
【0039】
元の潜在変数ベクトルの要素の値が当該要素の値より小さい値に置き換えられた人工潜在変数ベクトルを用いる場合には、元の潜在変数ベクトルを入力したときの出力ベクトルの各要素の値は、人工潜在変数ベクトルを入力したときの出力ベクトルの対応する要素の値よりも大きくなるのが望ましい。したがって、項L
realは、例えば、人工潜在変数ベクトルを入力したときの出力ベクトルの各要素の値よりも元の潜在変数ベクトルを入力したときの出力ベクトルの対応する要素の値の方が小さい場合に大きな値となる項、マージンランキングエラー(Margin Ranking Error)とすることができる。ここで、マージンランキングエラーL
MREは、Yを元の潜在変数ベクトルを入力したときの出力ベクトル、Y’を人工潜在変数ベクトルを入力したときの出力ベクトルとして、次式で定義される。
【数4】
(ただし、Y
iはYの第i要素、Y’
iはY’の第i要素を表す。)
以上のようにして生成した人工潜在変数ベクトルとマージンランキングエラーとして定義した項L
realとを用いて学習をする。
【0040】
なお、元の潜在変数ベクトルの少なくとも1つの要素の値を当該要素の値より小さい値に置き換えたベクトルを人工潜在変数ベクトルとして用いる代わりに、元の潜在変数ベクトルの少なくとも1つの要素の値を当該要素の値より大きい値に置き換えたベクトルを人工潜在変数ベクトルとして用いるようにしてもよい。この場合、元の潜在変数を入力したときの出力ベクトルの各要素の値は、人工潜在変数を入力したときの出力ベクトルの対応する要素の値よりも小さくなるのが望ましい。したがって、項Lrealは、元の潜在変数ベクトルを入力したときの出力ベクトルの各要素の値の方が、人工潜在変数ベクトルを入力したときの出力ベクトルの対応する要素の値よりも大きい場合に大きな値となる項とすればよい。
【0041】
なお、元の潜在変数ベクトルの要素の値から当該要素の値より大きい値である人工潜在変数ベクトルの要素の値を得る方法としては、要素の値が取りうる範囲の上限を限定する場合であれば、元の潜在変数ベクトルの要素の値から上記範囲の上限以下で当該要素の値より大きい値である人工潜在変数ベクトルの要素の値を得ることになるので、例えば、元の潜在変数ベクトルの要素の値と当該要素の値が取りうる範囲の上限の間からランダムに選んだ値を人工潜在変数ベクトルの要素の値として得る方法、元の潜在変数ベクトルの要素の値と当該要素の値が取りうる範囲の上限の平均値を人工潜在変数ベクトルの要素の値として得る方法を用いればよい。
【0042】
項L
syn-encoder
(p)は、入力ベクトルのすべての要素の値が取りうる値の範囲の上限である人工データ、または、入力ベクトルのすべての要素の値が取りうる値の範囲の下限である人工データ、に関する項である。例えば、入力ベクトルの各要素が1と0のいずれかの値である
図1の例であれば、項L
syn-encoder
(p)は、入力ベクトルが全問正答に相当するベクトル(1, …, 1)であるという人工データ、または、入力ベクトルが全問誤答に相当するベクトル(0, …, 0)、であるという人工データ、に関する項である。具体的には、項L
syn-encoder
(1)は、入力ベクトルが全問正答に相当するベクトル(1, …, 1)である場合のエンコーダの出力である潜在変数ベクトルと、入力ベクトルが全問正答に相当するベクトル(1, …, 1)である場合の理想的な潜在変数のベクトルであるすべての要素が1(すなわち、取りうる値の範囲の上限)であるベクトル(1, …, 1)と、のバイナリクロスエントロピーである。また、項L
syn-encoder
(2)は、入力ベクトルが全問誤答に相当するベクトル(0, …, 0)である場合のエンコーダの出力である潜在変数ベクトルと、入力ベクトルが全問誤答に相当するベクトル(0, …, 0)である場合の理想的な潜在変数のベクトルであるすべての要素が0(すなわち、取りうる値の範囲の下限)であるベクトル(0, …, 0)と、のバイナリクロスエントロピーである。項L
syn-encoder
(1)は、入力ベクトルが(1, …, 1)であるとき、すなわち入力ベクトルのすべての要素が1(すなわち、取りうる値の範囲の上限)であるときには、潜在変数ベクトルのすべての要素が1(すなわち、取りうる値の範囲の上限)であるのが望ましいという要請に基づくものであり、項L
syn-encoder
(2)は、入力ベクトルが(0, …, 0)であるとき、すなわち入力ベクトルのすべての要素が0(すなわち、取りうる値の範囲の下限)であるときには、潜在変数ベクトルのすべての要素が0(すなわち、取りうる値の範囲の下限)であるのが望ましいという要請に基づくものである。
【0043】
一方、項L
syn-decoder
(p)は、出力ベクトルのすべての要素の値が取りうる値の範囲の上限である人工データ、または、出力ベクトルのすべての要素の値が取りうる値の範囲の下限である人工データ、に関する項である。例えば、入力ベクトルの各要素が1と0のいずれかの値である
図1の例であれば、項L
syn-decoder
(p)は、出力ベクトルが全問正答に相当するベクトル(1, …, 1)であるという人工データ、または、出力ベクトルが全問誤答に相当するベクトル(0, …, 0)であるという人工データ、に関する項である。具体的には、項L
syn-decoder
(1)は、潜在変数ベクトルがすべての要素の値が取りうる値の範囲の上限であるベクトル(1, …, 1)である場合のデコーダの出力である出力ベクトルと、潜在変数ベクトルのすべての要素の値が取りうる値の範囲の上限である場合の理想的な出力ベクトルであるすべての要素が1(すなわち、全問正答相当)であるベクトル(1, …, 1)と、のバイナリクロスエントロピーである。また、項L
syn-decoder
(2)は、潜在変数ベクトルがすべての要素の値が取りうる値の範囲の下限であるベクトル(0, …, 0)である場合のデコーダの出力である出力ベクトルと、潜在変数ベクトルのすべての要素の値が取りうる値の範囲の下限である場合の理想的な出力ベクトルであるすべての要素が0(すなわち、全問誤答相当)であるベクトル(0, …, 0)と、のバイナリクロスエントロピーである。項L
syn-decoder
(1)は、潜在変数ベクトルが(1, …, 1)であるとき、すなわち潜在変数ベクトルのすべての要素が1(すなわち、取りうる値の範囲の上限)であるときには、出力ベクトルのすべての要素が1(すなわち、取りうる値の範囲の上限)であるのが望ましいという要請に基づくものであり、項L
syn-decoder
(2)は、潜在変数ベクトルが(0, …, 0)であるとき、すなわち潜在変数ベクトルのすべての要素が0(すなわち、取りうる値の範囲の下限)であるときには、出力ベクトルのすべての要素が0(すなわち、取りうる値の範囲の下限)であるのが望ましいという要請に基づくものである。
【0044】
上記のように定義した項Lrealを損失関数が含むことにより、2つの入力ベクトルを第1入力ベクトル、第2入力ベクトルとして、入力ベクトルの少なくとも1つの要素について第1入力ベクトルの要素の値が第2入力ベクトルの要素の値より大きく、入力ベクトルの残りのすべての要素について第1入力ベクトルの要素の値が第2入力ベクトルの要素の値以上である場合に、第1入力ベクトルを変換して得られる潜在変数ベクトルを第1潜在変数ベクトル、第2入力ベクトルを変換して得られる潜在変数ベクトルを第2潜在変数ベクトルとして、潜在変数ベクトルの少なくとも1つの要素について第1潜在変数ベクトルの要素の値が第2潜在変数ベクトルの要素の値より大きくなり、潜在変数ベクトルの残りのすべての要素について第1潜在変数ベクトルの要素の値が第2潜在変数ベクトルの要素の値以上となるという特徴を持つように、ニューラルネットワークが学習される。また、項Lrealに加えて更にLsyn-encoder
(p), Lsyn-decoder
(p)も損失関数Lが含むことにより、すなわち、項Lmonoを損失関数Lが含むことにより、潜在変数ベクトルのすべての要素の値が[0, 1]の範囲(すなわち、取りうる値の範囲)に含まれるように、ニューラルネットワークが学習される。
【0045】
次に、制約2の学習方法について説明する。制約2の学習方法の説明においては、学習に用いる入力ベクトルの番号をs(sは1以上S以下の整数、Sは学習データの数)とし、潜在変数ベクトルの要素の番号をj(jは1以上J以下の整数)とし、入力ベクトルと出力ベクトルの要素の番号をk(kは1以上K以下の整数、KはJより大きい整数)とし、入力ベクトルをXsとし、入力ベクトルXsを変換して得られる潜在変数ベクトルをZsとし、潜在変数ベクトルZsを変換して得られる出力ベクトルをPsとし、入力ベクトルXsの第k要素をxskとし、出力ベクトルPsの第k要素をpskとし、潜在変数ベクトルZsの第j要素をzsjとする。
【0046】
エンコーダは、入力ベクトルXsを潜在変数ベクトルZsに変換するものであればどのようなものであってもよく、例えば、一般的なVAEのエンコーダであってもよい。また、学習に用いる損失関数を特殊なものとする必要はなく、従来から用いられている損失関数、例えば、一般的なVAEの学習で用いられる項として上述した項LRCと項Lpriorの和、を損失関数として用いればよい。
【0047】
デコーダは、潜在変数ベクトルZsを出力ベクトルPsに変換するものであり、デコーダのすべての重みパラメータが非負値になるように制約して、または、デコーダのすべての重みパラメータが非正値になるように制約して、学習されるものである。
【0048】
1層で構成されるデコーダのすべての重みパラメータが非負値になるように制約する例を用いて、デコーダの制約について説明する。問題数がKであるテスト問題に対する生徒の回答を正答を1とし誤答を0として表したベクトルが入力ベクトルX
1, X
2, ..., X
Sである場合には、s番目の生徒の入力ベクトルはX
s=(x
s1, x
s2, ..., x
sK)であり、入力ベクトルX
sをエンコーダで変換して得られる潜在変数ベクトルはZ
s=(z
s1, z
s2, ..., z
sJ)であり、潜在変数ベクトルZ
sをデコーダで変換して得られる出力ベクトルはP
s=(p
s1, p
s2, ..., p
sK)である。生徒が各テスト問題を正答するためには、例えば作文力や図解力などの様々なカテゴリの能力がそれぞれに重みを持って必要とされていると考えられる。潜在変数ベクトルの各要素が能力の各カテゴリに対応するようにし、かつ、生徒が備える各カテゴリの能力の大きさが大きいほど当該カテゴリに対応する潜在変数の値が大きくなるようにするためには、s番目の生徒がk番目のテスト問題を正答する確率p
skを、j番目の潜在変数z
sjに与えるk番目のテスト問題についての重みw
jkを非負値として、式(5)で表すとよい。
【数5】
ここで、σはシグモイド関数であり、b
kはk番目の問題についてのバイアス項である。バイアス項b
kは、k番目の問題についての上述した各カテゴリの能力に依存しない難易度に対応する項である。すなわち、1層で構成されるデコーダの場合であれば、すべての問題とすべての潜在変数を対象として、すべての重みw
jk(j=1, …, J, k=1, …, K)が非負値になるように制約して、学習用の入力ベクトルX
sを潜在変数ベクトルZ
sに変換するエンコーダと潜在変数ベクトルZ
sを出力ベクトルP
sに変換するデコーダとを含むニューラルネットワークを学習用の入力ベクトルX
sと出力ベクトルP
sとが略同一になるように学習すれば、各生徒について、当該生徒の各テスト問題についての回答を正答を1とし誤答を0として表したベクトルである入力ベクトルから、各カテゴリの能力について、あるカテゴリの能力の大きさが大きいほどある潜在変数が大きくなるような潜在変数ベクトルを得るエンコーダを得ることができることになる。
【0049】
以上のことから、入力ベクトルに含まれるある性質の大きさが大きいほど潜在変数ベクトルに含まれるある潜在変数が大きくなるようにするためには、デコーダのすべての重みパラメータが非負値になるように制約して学習を行う。また、以上の説明から分かる通り、入力ベクトルに含まれるある性質の大きさが大きいほど潜在変数ベクトルに含まれるある潜在変数が小さくなるようにする場合には、デコーダのすべての重みパラメータが非正値になるように制約して学習を行うとよい。
【0050】
上述の通り、
図1の例では、各列は生徒ひとりひとりの正誤の一覧を表す。学習済エンコーダを用いて、60次元の生徒の正誤の一覧を5次元の2次データに変換する。学習済エンコーダによる変換は、潜在変数が入力ベクトルに関して単調性を有するようにするものであることから、この5次元に圧縮された2次データは、生徒の正誤の一覧の特徴を反映したものとなっている。例えば、国語や算数のテストの生徒の正誤の一覧を変換して潜在変数ベクトルを得れば、その潜在変数ベクトルである2次データの要素は、例えば作文力に相当するデータや図解力に相当するデータと成り得る。したがって、生徒の正誤の一覧の代わりに2次データを分析対象とすることで、分析者の負担を軽減することが可能となる。
【0051】
<第1実施形態>
ニューラルネットワーク学習装置100は、学習データを用いて、学習対象となるニューラルネットワークのパラメータを学習する。ここで、学習対象となるニューラルネットワークは、入力ベクトルを潜在変数ベクトルに変換するエンコーダと潜在変数ベクトルを出力ベクトルに変換するデコーダとを含む。潜在変数ベクトルは、入力ベクトルや出力ベクトルよりも低次元のベクトルであり、潜在変数を要素とするベクトルである。また、ニューラルネットワークのパラメータは、エンコーダの重みパラメータとバイアスパラメータ、デコーダの重みパラメータとバイアスパラメータを含む。学習は、入力ベクトルと出力ベクトルとが略同一になるように行われる。また、学習は、潜在変数が入力ベクトルに関して単調性を有するものとなるように行われる。
【0052】
ここでは、入力ベクトルと出力ベクトルの要素の取りうる値が1と0のいずれかの値であり、潜在変数ベクトルの要素である潜在変数の取りうる値の範囲を[0, 1]として説明する。なお、入力ベクトルと出力ベクトルの要素の取りうる値が1と0のいずれかの値であるのはあくまでも一例であり、入力ベクトルと出力ベクトルの要素の取りうる値の範囲が[0, 1]であってもよいし、さらには、入力ベクトルと出力ベクトルの要素の取りうる値の範囲は[0, 1]でなくてもよい。つまり、a, bをa<bを満たす任意の数として、入力ベクトルの要素の取りうる値の範囲、出力ベクトルの要素の取りうる値の範囲を[a, b]とすることができる。
【0053】
以下、
図2~
図3を参照してニューラルネットワーク学習装置100を説明する。
図2は、ニューラルネットワーク学習装置100の構成を示すブロック図である。
図3は、ニューラルネットワーク学習装置100の動作を示すフローチャートである。
図2に示すようにニューラルネットワーク学習装置100は、初期化部110と、学習部120と、終了条件判定部130と、記録部190を含む。記録部190は、ニューラルネットワーク学習装置100の処理に必要な情報を適宜記録する構成部である。記録部190は、例えば、ニューラルネットワークの初期化に用いる初期化データを記録しておく。ここで、初期化データとは、ニューラルネットワークのパラメータの初期値のことであり、例えば、エンコーダの重みパラメータとバイアスパラメータの初期値、デコーダの重みパラメータとバイアスパラメータの初期値のことである。
【0054】
図3に従いニューラルネットワーク学習装置100の動作について説明する。
【0055】
S110において、初期化部110は、初期化データを用いて、ニューラルネットワークの初期化処理を行う。初期化部110は、具体的には、ニューラルネットワークの各パラメータに対して初期値を設定する。
【0056】
S120において、学習部120は、学習データを入力とし、学習データを用いてニューラルネットワークの各パラメータを更新する処理(以下、パラメータ更新処理という)を行い、終了条件判定部130が終了条件を判定するために必要な情報(例えば、パラメータ更新処理を行った回数)とともにニューラルネットワークのパラメータを出力する。学習部120は、損失関数を用いて、例えば、誤差逆伝播法によりニューラルネットワークを学習する。すなわち、学習部120は、各回のパラメータ更新処理では、損失関数が小さくなるようにエンコーダとデコーダの各パラメータを更新する処理を行う。
【0057】
ここで、損失関数は、潜在変数が入力ベクトルに関して単調性を有するものとなるようにするための項を含む。単調性が、潜在変数が入力ベクトルに関して単調増加となる関係である場合は、損失関数は、潜在変数が大きいほど出力ベクトルが大きくなるようにするための項、例えば、<技術的背景>で説明したマージンランキングエラーの項を含む。すなわち、損失関数は、例えば、潜在変数ベクトルの少なくとも1つの要素の値が当該値より小さい値に置き換えられたベクトルを人工潜在変数ベクトルとして、人工潜在変数ベクトルを入力したときの出力ベクトルのいずれかの要素の値よりも潜在変数ベクトルを入力したときの出力ベクトルの対応する要素の値の方が小さい場合に大きな値となる項と、潜在変数ベクトルの少なくとも1つの要素の値が当該値より大きい値に置き換えられたベクトルを人工潜在変数ベクトルとして、人工潜在変数ベクトルを入力したときの出力ベクトルのいずれかの要素の値よりも潜在変数ベクトルを入力したときの出力ベクトルの対応する要素の値の方が大きい場合に大きな値となる項と、の少なくともいずれかを含む。さらに、入力ベクトルの要素が1と0のいずれかの値であり、潜在変数ベクトルの要素の取りうる範囲を[0, 1]とする場合には、損失関数は、入力ベクトルが(1, …, 1)であるときの潜在変数ベクトルとベクトル(1, …, 1)(ただし、当該ベクトルの次元は潜在変数ベクトルの次元に等しい)とのバイナリクロスエントロピー、入力ベクトルが(0, …, 0)であるときの潜在変数ベクトルとベクトル(0, …, 0)(ただし、当該ベクトルの次元は潜在変数ベクトルの次元に等しい)とのバイナリクロスエントロピー、潜在変数ベクトルが(1, …, 1)であるときの出力ベクトルとベクトル(1, …, 1)(ただし、当該ベクトルの次元は出力ベクトルの次元に等しい)とのバイナリクロスエントロピー、潜在変数ベクトルが(0, …, 0)であるときの出力ベクトルとベクトル(0, …, 0)(ただし、当該ベクトルの次元は出力ベクトルの次元に等しい)とのバイナリクロスエントロピーのうち、少なくとも1つの項を含むものであってもよい。
【0058】
一方、単調性が、潜在変数が入力ベクトルに関して単調減少となる関係である場合、損失関数は、潜在変数が大きいほど出力ベクトルが小さくなるようにするための項を含む。すなわち、損失関数は、例えば、潜在変数ベクトルの少なくとも1つの要素の値が当該値より小さい値に置き換えられたベクトルを人工潜在変数ベクトルとして、人工潜在変数ベクトルを入力したときの出力ベクトルのいずれかの要素の値よりも潜在変数ベクトルを入力したときの出力ベクトルの対応する要素の値の方が大きい場合に大きな値となる項と、潜在変数ベクトルの少なくとも1つの要素の値が当該値より大きい値に置き換えられたベクトルを人工潜在変数ベクトルとして、人工潜在変数ベクトルを入力したときの出力ベクトルのいずれかの要素の値よりも潜在変数ベクトルを入力したときの出力ベクトルの対応する要素の値の方が小さい場合に大きな値となる項と、の少なくともいずれかを含む。さらに、入力ベクトルの要素が1と0のいずれかの値であり、潜在変数ベクトルの要素の取りうる範囲を[0, 1]とする場合には、損失関数は、入力ベクトルが(1, …, 1)であるときの潜在変数ベクトルとベクトル(0, …, 0)(ただし、当該ベクトルの次元は潜在変数ベクトルの次元に等しい)とのバイナリクロスエントロピー、入力ベクトルが(0, …, 0)であるときの潜在変数ベクトルとベクトル(1, …, 1)(ただし、当該ベクトルの次元は潜在変数ベクトルの次元に等しい)とのバイナリクロスエントロピー、潜在変数ベクトルが(1, …, 1)であるときの出力ベクトルの値とベクトル(0, …, 0)(ただし、当該ベクトルの次元は出力ベクトルの次元に等しい)とのバイナリクロスエントロピー、潜在変数ベクトルが(0, …, 0)であるときの出力ベクトルの値とベクトル(1, …, 1)(ただし、当該ベクトルの次元は出力ベクトルの次元に等しい)とのバイナリクロスエントロピーのうち、少なくとも1つの項を含むものであってもよい。
【0059】
S130において、終了条件判定部130は、S120において出力されたニューラルネットワークのパラメータと終了条件を判定するために必要な情報とを入力とし、学習の終了に関する条件である終了条件が満たされている(例えば、パラメータ更新処理を行った回数が所定の繰り返し回数に達している)か否かを判定し、終了条件が満たされている場合は、最後に行われたS120で得られたエンコーダのパラメータを学習済パラメータとして出力して、処理を終了する一方、終了条件が満たされていない場合は、S120の処理に戻る。
【0060】
(変形例)
潜在変数ベクトルの要素である潜在変数の取りうる値の範囲を[0, 1]とする代わりに、[m, M](ただし、m<Mとする)としてもよいし、上述したように入力ベクトルと出力ベクトルの要素の取りうる値の範囲を[a, b]としてもよい。さらには、潜在変数ベクトルの要素ごとに取りうる値の範囲を個別に設定してもよいし、入力ベクトルと出力ベクトルの要素ごとに取りうる値の範囲を個別に設定してもよい。この場合、潜在変数ベクトルの要素の番号をj(jは1以上J以下の整数、Jは2以上の整数)、第j要素の取りうる値の範囲を[mj, Mj](ただし、mj<Mj)とし、入力ベクトルと出力ベクトルの要素の番号をk(kは1以上K以下の整数、KはJより大きい整数)、第k要素の取りうる値の範囲を[ak, bk](ただし、ak<bk)として、損失関数が含む項を次のようにするとよい。単調性が、潜在変数が入力ベクトルに関して単調増加となる関係である場合は、損失関数は、入力ベクトルが(b1, …, bK)であるときの潜在変数ベクトルとベクトル(M1, …, MJ)とのクロスエントロピー、入力ベクトルが(a1, …, aK)であるときの潜在変数ベクトルとベクトル(m1, …, mJ)とのクロスエントロピー、潜在変数ベクトルが(M1, …, MJ)であるときの出力ベクトルとベクトル(b1, …, bK)とのクロスエントロピー、潜在変数ベクトルが(m1, …, mJ)であるときの出力ベクトルとベクトル(a1, …, aK)とのクロスエントロピー、のうちの少なくとも1つの項を含む。
【0061】
一方、単調性が、潜在変数が入力ベクトルに関して単調減少となる関係である場合、損失関数は、入力ベクトルが(b1, …, bK)であるときの潜在変数ベクトルとベクトル(m1, …, mJ)とのクロスエントロピー、入力ベクトルが(a1, …, aK)であるときの潜在変数ベクトルとベクトル(M1, …, MJ)とのクロスエントロピー、潜在変数ベクトルが(M1, …, MJ)であるときの出力ベクトルとベクトル(a1, …, aK)とのクロスエントロピー、潜在変数ベクトルが(m1, …, mJ)であるときの出力ベクトルとベクトル(b1, …, bK)とのクロスエントロピー、のうちの少なくとも1つの項を含む。なお、上述したクロスエントロピーはベクトル間の差異の大きさに対応する値の一例であって、例えば平均二乗誤差(Mean Squared Error: MSE)のようにベクトル間の差異が大きければ大きくなるような値であれば、上述したクロスエントロピーに代えて用いることができる。
【0062】
以上の説明では、潜在変数ベクトルの次元数が2以上である例を説明したが、潜在変数ベクトルの次元数は1であってもよい。すなわち、上述したJは1であってもよい。潜在変数ベクトルの次元数が1である場合には、上述した「潜在変数ベクトル」は「潜在変数」と読み替えればよく、「潜在変数ベクトルの少なくとも1つの要素の値」は「潜在変数の値」と読み替えればよく、「潜在変数ベクトルの残りのすべての要素」についての条件は存在しないことになる。
【0063】
最後に、分析作業について説明する。学習済パラメータを設定したエンコーダ(学習済エンコーダ)を用いて、分析対象となるデータをより低次元の2次データに変換する。ここで、2次データとは、分析対象データを学習済エンコーダに入力して得られる潜在変数ベクトルのことである。この2次データは分析対象データより低次元のデータであるため、2次データを対象として分析する方が、分析対象データを直接対象として分析するのに比べて、容易になる。
【0064】
第1実施形態によれば、入力ベクトルに含まれるある性質の大きさが大きいほど、潜在変数ベクトルに含まれるある潜在変数が大きくなる、または、潜在変数ベクトルに含まれるある潜在変数が小さくなるようなエンコーダのパラメータを得られるように、エンコーダとデコーダを含むニューラルネットワークを学習することが可能となる。そして、学習済エンコーダを用いて高次元の分析対象データを変換することにより得られる低次元の2次データを分析対象とすることで、分析者の負担を軽減することが可能となる。
【0065】
<第2実施形態>
第1実施形態では、潜在変数が入力ベクトルに関して単調性を有するものとなるようにするための項を含む損失関数を用いて学習することで、入力ベクトルに含まれるある性質の大きさが大きいほど、潜在変数ベクトルに含まれるある潜在変数が大きい潜在変数ベクトル、または、潜在変数ベクトルに含まれるある潜在変数が小さい潜在変数ベクトル、を出力するエンコーダを学習する方法について説明した。ここでは、デコーダの重みパラメータが所定の条件を満たすように学習することで、入力ベクトルに含まれるある性質の大きさが大きいほど、潜在変数ベクトルに含まれるある潜在変数が大きい潜在変数ベクトル、または、潜在変数ベクトルに含まれるある潜在変数が小さい潜在変数ベクトル、を出力するエンコーダを学習する方法について説明する。
【0066】
本実施形態のニューラルネットワーク学習装置100は、学習部120の動作のみ、第1実施形態のニューラルネットワーク学習装置100と異なる。そこで、以下では、学習部120の動作についてのみ説明する。
【0067】
S120において、学習部120は、学習データを入力とし、学習データを用いてニューラルネットワークの各パラメータを更新する処理(以下、パラメータ更新処理という)を行い、終了条件判定部130が終了条件を判定するために必要な情報(例えば、パラメータ更新処理を行った回数)とともにニューラルネットワークのパラメータを出力する。学習部120は、損失関数を用いて、例えば、誤差逆伝播法によりニューラルネットワークを学習する。すなわち、学習部120は、各回のパラメータ更新処理では、損失関数が小さくなるようにエンコーダとデコーダの各パラメータを更新する処理を行う。
【0068】
本実施形態のニューラルネットワーク学習装置100は、デコーダの重みパラメータが所定の条件を満たす形で学習する。ニューラルネットワーク学習装置100は、潜在変数が入力ベクトル対して単調増加となる関係を有するものとなるように学習する場合は、ニューラルネットワーク学習装置100は、デコーダの重みパラメータはいずれも非負であるという条件を満たす形で学習する。すなわち、この場合には、学習部120が行う各回のパラメータ更新処理では、デコーダの重みパラメータがいずれも非負の値となるように制約してエンコーダとデコーダの各パラメータを更新する。より具体的には、ニューラルネットワーク学習装置100に含まれるデコーダは複数個の入力値から複数個の出力値を得る層を含むものであり、当該層の各出力値は複数個の入力値のそれぞれに重みパラメータを与えて加算した項を含むものであり、学習部120が行う各回のパラメータ更新処理はデコーダの重みパラメータがいずれも非負の値であるという条件を満たし行われる。なお、複数個の入力値のそれぞれに重みパラメータを与えて加算した項とは、各入力値と各入力値に対応する重みパラメータとを乗算したものをすべて加算した項、複数個の入力値のそれぞれに対応する重みパラメータを重みとして複数個の入力値を重み付け加算した項、などともいえる。
【0069】
一方、ニューラルネットワーク学習装置100は、潜在変数が入力ベクトル対して単調減少となる関係を有するものとなるように学習する場合は、デコーダの重みパラメータはいずれも非正であるという条件を満たす形で学習する。すなわち、この場合には、学習部120が行う各回のパラメータ更新処理では、デコーダの重みパラメータがいずれも非正の値となるように制約してエンコーダとデコーダの各パラメータを更新する。より具体的には、ニューラルネットワーク学習装置100に含まれるデコーダは複数個の入力値から複数個の出力値を得る層を含むものであり、当該層の各出力値は複数個の入力値のそれぞれに重みパラメータを与えて加算した項を含むものであり、学習部120が行う各回のパラメータ更新処理はデコーダの重みパラメータがいずれも非正の値であるという条件を満たし行われる。
【0070】
ニューラルネットワーク学習装置100は、デコーダの重みパラメータがいずれも非負であるという条件を満たす形で学習する場合には、記録部190が記録しておく初期化データのうちのデコーダの重みパラメータの初期値は非負の値とするとよい。同様に、ニューラルネットワーク学習装置100は、デコーダの重みパラメータがいずれも非正であるという条件を満たす形で学習する場合には、記録部190が記録しておく初期化データのうちのデコーダの重みパラメータの初期値は非正の値とするとよい。
【0071】
なお、第2実施形態でも、第1実施形態と同様に、潜在変数ベクトルの次元数は1であってもよい。潜在変数ベクトルの次元数が1である場合には、上述した「潜在変数ベクトル」は「潜在変数」と読み替えればよい。
【0072】
(変形例)
デコーダの重みパラメータがいずれも非負であるという条件を満たす形の学習は、潜在変数が入力ベクトルに対して単調増加となる関係を有するものとなるような学習であるとして説明したが、学習により得たエンコーダのすべてのパラメータ(すなわち、すべての学習済パラメータ)の正負を反転させたものをパラメータとして備えるエンコーダを用いれば、潜在変数が入力ベクトルに対して単調減少となる関係を有するものとなるエンコーダを得ることができる。同様に、デコーダの重みパラメータがいずれも非正であるという条件を満たす形の学習は、潜在変数が入力ベクトルに対して単調減少となる関係を有するものとなるような学習であるとして説明したが、学習により得たエンコーダのすべてのパラメータ(すなわち、すべての学習済パラメータ)の正負を反転させたものをパラメータとして備えるエンコーダを用いれば、潜在変数が入力ベクトルに対して単調増加となる関係を有するものとなるエンコーダを得ることができる。
【0073】
すなわち、ニューラルネットワーク学習装置100は、
図2に破線で示すように符号反転部140を更に含むようにして、
図3に破線で示すS140も行うようにしてもよい。S140においては、符号反転部140は、S130において出力された各学習済パラメータの正負を反転させたもの、すなわち、各学習済パラメータについて、絶対値はそのままに、正値であるものは負値とし、負値であるものは正値としたもの、を学習済符号反転済パラメータとして得て出力すればよい。より具体的には、ニューラルネットワーク学習装置100に含まれるエンコーダが、複数個の入力値から複数個の出力値を得る、1個以上の層によって構成されていて、各層の各出力値は複数個の入力値のそれぞれに重みパラメータを与えて加算した項を含むものである場合には、学習により得たエンコーダの各重みパラメータ(すなわち、終了条件判定部130が出力した各学習済パラメータ)の正負を反転した符号反転済重みパラメータを出力する符号反転部140を更に含むようにすればよい。
【0074】
分析作業では、学習済符号反転済パラメータを設定したエンコーダを用いて、分析対象となるデータをより低次元の2次データに変換する。
【0075】
第2実施形態によれば、入力ベクトルに含まれるある性質の大きさが大きいほど、潜在変数ベクトルに含まれるある潜在変数が大きくなる、または、潜在変数ベクトルに含まれるある潜在変数が小さくなるようなエンコーダのパラメータを得られるように、エンコーダとデコーダを含むニューラルネットワークを学習することが可能となる。そして、学習済エンコーダを用いて高次元の分析対象データを変換することにより得られる低次元の2次データを分析対象とすることで、分析者の負担を軽減することが可能となる。
【0076】
<第3実施形態>
テスト問題に対する生徒のテスト結果を分析する上述の例であれば、すべてのテスト問題に対する生徒のテスト結果(正答であるか誤答であるかの情報)が得られている場合には、第1実施形態や第2実施形態の学習済エンコーダを用いれば、テストの生徒の正誤の一覧を変換して得た潜在変数の値は、能力の各カテゴリについての各生徒の能力の大小に対応する値と成り得る。ただし、例えば、国語と算数のテストは受験したものの理科と社会のテストは受験していない場合のように、一部のテスト問題に対する生徒のテスト結果が得られていない場合には、更なる工夫をすることにより、能力の各カテゴリについての各生徒の能力の大小に対応する値により対応する潜在変数を得ることができる。この工夫を含むニューラルネットワーク学習装置100について、第3実施形態として説明する。
【0077】
まず、本実施形態のニューラルネットワーク学習装置100の技術的背景について、テスト問題に対する生徒のテスト結果を分析する例を用いて説明する。本実施形態のニューラルネットワークとその学習は、以下の特徴a~cを持つ。
【0078】
[特徴a]各問題のテスト結果を正答ビットと誤答ビットで表す。
【0079】
本実施形態のニューラルネットワークでは、各生徒が受験していないテスト問題に対する回答を無回答として扱い、各問題に対する回答を、正答を1として無回答および誤答を0とした正答ビットと、誤答を1として無回答および正答を0とした誤答ビットと、を用いて表したものを入力ベクトルとする。例えば、s番目の生徒のk番目のテスト問題に対する正答ビットをx(1)
skとして誤答ビットをx(0)
skとすると、問題数がKであるテスト問題に対するs番目の生徒の入力ベクトルは、正答ビット群{x(1)
s1, x(1)
s2, ..., x(1)
sK}と誤答ビット群{x(0)
s1, x(0)
s2, ..., x(0)
sK}からなるベクトルとなる。
【0080】
[特徴b]エンコーダの最初に、正答ビット群と誤答ビット群から、無回答であることがエンコーダの出力に影響しないようした中間情報を得る層を備える。
【0081】
本実施形態のニューラルネットワークでは、エンコーダの最初の層(入力ベクトルを入力とする層)を、式(6)によりs番目の生徒の中間情報群{q
s1,q
s2, ..., q
sH}の中間情報q
shを得るものとする。
【数6】
w
(1)
hkとw
(0)
hkは重みであり、b
hはh番目の中間情報についてのバイアス項である。s番目の生徒がk番目のテスト問題の回答が正答である場合にはx
(1)
skが1でありx
(0)
skが0であることから、式(6)の2つの重みのうちのw
(1)
hkのみが反応し、w
(0)
hkは無反応となる。s番目の生徒がk番目のテスト問題の回答が誤答である場合にはx
(1)
skが0でありx
(0)
skが1であることから、式(6)の2つの重みのうちのw
(0)
hkのみが反応し、w
(1)
hkは無反応となる。s番目の生徒がk番目のテスト問題の回答が無回答である場合(すなわち、s番目の生徒がk番目のテスト問題を受験していない場合)にはx
(1)
skとx
(0)
skが共に0であることから、式(6)の2つの重みw
(1)
hkとw
(0)
hkは共に無反応となる。なお、反応するとは、エンコーダの学習時には重みが学習され、学習済エンコーダの利用時には重みが影響することを意味し、無反応とは、エンコーダの学習時には重みが学習されず、学習済エンコーダの利用時には重みが影響しないことを意味する。したがって、式(6)を用いることにより、正答と誤答はエンコーダの出力に影響し無回答はエンコーダの出力に影響しないようにした中間情報を得ることができる。エンコーダの以降の層は中間情報群{q
s1,
q
s2, ..., q
sH}を潜在変数ベクトルZ
s=(z
s1, z
s2, ..., z
sJ)に変換するものであればどのようなものであってもよい。
【0082】
[特徴c]無回答であることを損失としない損失関数を用いる。
【0083】
本実施形態の学習においては、デコーダを潜在変数ベクトルZ
s=(z
s1, z
s2, ..., z
sJ)からs番目の生徒が各テスト問題を正答する確率によるベクトルP
s=(p
s1, p
s2, ..., p
sK)を出力ベクトルとして得るものとして、s番目の生徒のk番目の問題についての損失L
skを、x
(1)
skが1である場合(すなわち、正答である場合)には-log(p
sk)、x
(0)
skが1である場合(すなわち、誤答である場合)には-log(1-p
sk)、x
(1)
skもx
(1)
skも0である場合(すなわち、無回答である場合)には0、として、学習データs=1, ..., Sのすべてのテスト問題k=1, ..., Kについての損失L
skの和(下記の式(7))を上述した項L
RCとして含む損失関数を用いる。
【数7】
上述した-log(p
sk)は、実際にはk番目の問題にs番目の生徒が正答したにも関わらず、デコーダにより得られたk番目の問題にs番目の生徒が正答する確率p
skが小さいほど(すなわち、1から離れるほど)大きな値となるものである。上述した-log(1-p
sk)は、実際にはk番目の問題にs番目の生徒が誤答したにも関わらず、デコーダにより得られたk番目の問題にs番目の生徒が誤答する確率(1-p
sk)が小さいほど(すなわち、1から離れるほど)大きな値となるものである。
【0084】
次に、本実施形態のニューラルネットワーク学習装置100について、第1実施形態および第2実施形態のニューラルネットワーク学習装置100と異なる点を説明する。
【0085】
エンコーダの入力ベクトルは、特徴aとして上述したように、各生徒が受験していないテスト問題に対する回答を無回答として扱い、各問題に対する回答を、正答を1として無回答および誤答を0とした正答ビットと、誤答を1として無回答および正答を0とした誤答ビットと、を用いて表したものである。すなわち、学習データは、s番目の生徒についてのK個のテスト問題に対する回答を、各生徒が受験していないテスト問題に対する回答を無回答として扱い、各問題に対する回答を、正答を1として無回答および誤答を0とした正答ビットと、誤答を1として無回答および正答を0とした誤答ビットと、を用いて表したものである。言い換えると、学習データは、学習用の各生徒iについてのK個のテスト問題に対する回答を、各問題について正答ビットと誤答ビットを用いて表したものであり、回答が正答ならば正答ビットを1として誤答ビットを0として、回答が誤答ならば正答ビットを0として誤答ビットを1として、無回答ならば正答ビットと誤答ビットをともに0として、表したものである。
【0086】
エンコーダの最初の層(入力ベクトルを入力とする層)は、特徴bとして上述したように、s番目の生徒について、入力ベクトルから複数個の中間情報を得るものであり、各中間情報は、正答ビットの値のそれぞれに重みパラメータを与えたものと、各誤答ビットの値のそれぞれに重みパラメータを与えたものと、をすべて加算したものとする。
【0087】
本実施形態のニューラルネットワーク学習装置100の学習部120が行うパラメータ更新処理では、特徴cとして上述したように、s番目の生徒がk番目の問題に正答した場合には、デコーダにより得られたk番目の問題にs番目の生徒が正答する確率pskが小さいほど大きな値であり、s番目の生徒がk番目の問題に誤答した場合には、デコーダにより得られたk番目の問題にs番目の生徒が誤答する確率pskが小さいほど大きな値であり、s番目の生徒がk番目の問題に無回答である場合には0である、損失のすべての学習データとすべてのテスト問題についての和、を含む損失関数が小さくなるようにエンコーダとデコーダの各パラメータを更新する処理を行う。
【0088】
なお、本実施形態は、テスト問題に対する生徒のテスト結果を分析する場合の上述した例に限らず、複数のセンサで取得した情報を分析する場合などにも適用できる。例えば、所定の状況の有無を検知するセンサであれば、所定の状況が検出された旨の情報、所定の状況が検出されなかった旨の情報、の2通りの情報を取得できる。ただし、通信ネットワークを介して複数のセンサで取得した情報を集めて分析する場合には、通信パケットの消失などにより、いずれかのセンサについて、所定の状況が検出された旨の情報も検出されなかった旨の情報も得られずに、いずれの情報も存在しなくなってしまう可能性がある。すなわち、分析に用いることができるのは、各センサについての、所定の状況が検出された旨の情報、所定の状況が検出されなかった旨の情報、いずれの情報も存在しない、の3通りのいずれかの情報となる場合がある。このように場合にも本実施形態を用いることができる。
【0089】
すなわち、利用形態に特化せずに説明すると、本実施形態のニューラルネットワーク学習装置100は、入力ベクトルを潜在変数を要素とする潜在変数ベクトルに変換するエンコーダと潜在変数ベクトルを出力ベクトルに変換するデコーダとを含むニューラルネットワークを入力ベクトルと出力ベクトルとが略同一になるように学習するニューラルネットワーク学習装置であって、ニューラルネットワークに含まれるパラメータを更新するパラメータ更新処理を繰り返すことにより学習を行う学習部120を含み、エンコーダは、所定の入力情報群に含まれる各入力情報が、正の情報に該当する、負の情報に該当する、情報が存在しない、の3通りのいずれかであるときに、各入力情報を、当該入力情報が正の情報に該当する場合に1であり情報が存在しない場合または当該入力情報が負の情報に該当する場合に0である正情報ビットと、当該入力情報が負の情報に該当する場合に1であり情報が存在しない場合または当該入力情報が正の情報に該当する場合に0である負情報ビットと、で表す入力ベクトルを入力とするものであり、エンコーダは複数個の層により構成されたものであり、入力ベクトルを入力とする層は、入力ベクトルから複数個の出力値を得るものであり、各出力値は、入力ベクトルに含まれる正情報ビットの値のそれぞれに重みパラメータを与えたものと、入力ベクトルに含まれる負情報ビットの値のそれぞれに重みパラメータを与えたものと、をすべて加算したものであり、パラメータ更新処理は、入力情報が正の情報に該当する場合には、デコーダにより得られた入力情報(つまり、デコーダにより復元された入力情報)が正の情報に該当する確率が小さいほど大きな値であり、入力情報が負の情報に該当する場合には、デコーダにより得られた入力情報が負の情報に該当する確率が小さいほど大きな値であり、入力情報が存在しない場合には略0である、損失の学習用の入力情報群のすべての入力情報についての和、を含む損失関数の値が小さくなるように行われる。
【0090】
なお、テスト問題に対する生徒のテスト結果を分析する場合の例であれば、回答が正答であることが入力情報が「正の情報に該当する」ことに対応し、回答が誤答であることが入力情報が「負の情報に該当する」ことに対応し、無回答であることが「情報が存在しない」ことに対応する。また、センサで取得した情報を分析する場合の例であれば所定の状況が検出された旨の情報が入力情報が「正の情報に該当する」ことに対応し、所定の状況が検出されなかった旨の情報が入力情報が「負の情報に該当する」ことに対応し、いずれの情報も存在しないことが「情報が存在しない」ことに対応する。
【0091】
分析作業では、テスト問題に対する生徒のテスト結果を分析する場合の例であれば、特徴aとして上述したように、分析対象の生徒について、受験していないテスト問題に対する回答を無回答として扱い、各問題に対する回答を、正答を1として無回答を0とした正答ビットと、誤答を1として無回答を0とした誤答ビットと、を用いて表したものをエンコーダの入力ベクトルとして、学習済パラメータを設定したエンコーダを用いて、低次元の2次データに変換する。
【0092】
<補記>
図4は、上述の各装置(つまり、各ノード)を実現するコンピュータの機能構成の一例を示す図である。上述の各装置における処理は、記録部2020に、コンピュータを上述の各装置として機能させるためのプログラムを読み込ませ、制御部2010、入力部2030、出力部2040などに動作させることで実施できる。
【0093】
本発明の装置は、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置(例えば通信ケーブル)が接続可能な通信部、CPU(Central Processing Unit、キャッシュメモリやレジスタなどを備えていてもよい)、メモリであるRAMやROM、ハードディスクである外部記憶装置並びにこれらの入力部、出力部、通信部、CPU、RAM、ROM、外部記憶装置の間のデータのやり取りが可能なように接続するバスを有している。また必要に応じて、ハードウェアエンティティに、CD-ROMなどの記録媒体を読み書きできる装置(ドライブ)などを設けることとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
【0094】
ハードウェアエンティティの外部記憶装置には、上述の機能を実現するために必要となるプログラムおよびこのプログラムの処理において必要となるデータなどが記憶されている(外部記憶装置に限らず、例えばプログラムを読み出し専用記憶装置であるROMに記憶させておくこととしてもよい)。また、これらのプログラムの処理によって得られるデータなどは、RAMや外部記憶装置などに適宜に記憶される。
【0095】
ハードウェアエンティティでは、外部記憶装置(あるいはROMなど)に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてメモリに読み込まれて、適宜にCPUで解釈実行・処理される。その結果、CPUが所定の機能(上記、…部、…手段などと表した各構成部)を実現する。
【0096】
本発明は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記実施形態において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
【0097】
既述のように、上記実施形態において説明したハードウェアエンティティ(本発明の装置)における処理機能をコンピュータによって実現する場合、ハードウェアエンティティが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記ハードウェアエンティティにおける処理機能がコンピュータ上で実現される。
【0098】
この処理内容を記述したプログラムは、非一時的なコンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD-RAM(Random Access Memory)、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP-ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
【0099】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0100】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0101】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【0102】
上述の本発明の実施形態の記載は、例証と記載の目的で提示されたものである。網羅的であるという意思はなく、開示された厳密な形式に発明を限定する意思もない。変形やバリエーションは上述の教示から可能である。実施形態は、本発明の原理の最も良い例証を提供するために、そして、この分野の当業者が、熟考された実際の使用に適するように本発明を色々な実施形態で、また、色々な変形を付加して利用できるようにするために、選ばれて表現されたものである。すべてのそのような変形やバリエーションは、公正に合法的に公平に与えられる幅にしたがって解釈された添付の請求項によって定められた本発明のスコープ内である。