以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、本実施形態に係る遺伝的処理装置10の構成を示す。遺伝的処理装置10は、入力データを処理して処理結果を出力データとして出力する複数の処理部品22の入出力間を組み合わせた変換器20を含む変換器群を進化的計算に基づいて複数世代にわたり進化させる。そして、遺伝的処理装置10は、学習用入力データを学習用目標データへ変換するのに適した変換器20を生成する。
遺伝的処理装置10は、一例として、コンピュータにより実現される。また、変換器20は、一例として、画像フィルタであってよい。
遺伝的処理装置10は、変換器格納部34と、学習用入力データ格納部36と、変換処理部38と、学習用出力データ格納部40と、学習用目標データ格納部42と、重み生成部43と、適合度算出部44と、選択部46と、更新部48と、生成部50とを備える。変換器格納部34は、互いに異なる構成の複数の変換器20を格納する。
学習用入力データ格納部36は、変換器20の変換対象である学習用入力データを格納する。学習用入力データは、一例として、当該遺伝的処理装置10により生成された変換器20が適用されるアプリケーションにおいて、変換器20に実際に与えられるデータのサンプルであってよい。変換器20が画像フィルタである場合、学習用入力データは、一例として、使用者により予め生成または撮影された画像であってよい。
変換処理部38は、変換器格納部34に格納された複数の変換器20を順次に取得する。変換処理部38は、取得したそれぞれの変換器20により、学習用入力データ格納部36に格納された学習用入力データを変換させて、学習用出力データのそれぞれを生成する。
学習用出力データ格納部40は、変換処理部38において生成された学習用出力データを格納する。学習用出力データ格納部40は、一例として、生成された学習用出力データのそれぞれを、変換した変換器20に対応付けて格納する。
学習用目標データ格納部42は、学習用入力データを変換して生成される学習用出力データの目標となる学習用目標データを格納する。学習用目標データは、一例として、当該遺伝的処理装置10により生成された変換器20が適用されるアプリケーションにおいて、変換器20が実際に出力するべきデータのサンプルであってよい。変換器20が画像フィルタである場合、学習用目標データは、一例として、使用者により予め生成または撮影された画像であってよい。
重み生成部43は、データ毎の重みを表わす重みデータを生成する。学習用入力データおよび学習用目標データが画像であった場合には、重みデータは、一例として、各ピクセルの値(例えば輝度値)によって当該ピクセル位置の重みを表わす重み画像であってよい。
ここで、重み生成部43は、学習用出力データと学習用目標データとの差分に応じた値に基づき、重みデータを生成する。重み生成部43は、一例として、差分が大きい部分の重みを、差分が小さい部分の重みより大きくした重みデータを生成する。
更に、重み生成部43は、重みデータを世代毎に更新する。この場合において、重み生成部43は、前世代以前の複数の世代における少なくとも1つの変換器20(例えばエリートとして選択された変換器20)により学習用入力データを変換して得られた学習用出力データと学習用目標データとの差分に応じた値に基づき、現世代の重みデータを生成する。なお、重みデータの生成処理の詳細については、後述する。
適合度算出部44は、変換器格納部34に格納されたそれぞれの変換器20について、学習用入力データから学習用目標データへの変換に対する適合度を、重み生成部43により生成された現世代の重みデータにより重み付けして算出する。ここで、適合度は、学習用入力データを学習用目標データへと変換するのに適しているかどうかを表す指標値であり、値が高いほど学習用入力データを学習用目標データへと変換するのに適していることを表す。
選択部46は、変換器格納部34に格納された複数の変換器20のうち少なくとも1つの変換器20を選択する。この場合において、選択部46は、適合度がより高い変換器20を優先的に選択する。より具体的には、選択部46は、生物の自然淘汰をモデル化した手法により、残存させる少なくとも1つの変換器20を選択する。選択部46は、一例として、変換器格納部34に格納された複数の変換器20のそれぞれの適合度に基づき、エリート選択およびルーレット選択といった遺伝的計算により少なくとも1つの変換器20を選択する。
更新部48は、変換器格納部34に格納された複数の変換器20のうち、選択部46により選択された変換器20を残存させ、選択部46により選択されなかった変換器20を淘汰する。更新部48は、一例として、変換器20を変換器格納部34から削除することにより淘汰する。
生成部50は、変換器格納部34に格納された少なくとも1つの前世代の変換器20から、遺伝的処理により現世代の変換器20を生成する。即ち、生成部50は、少なくとも1つの変換器20を親として、遺伝的処理により新たな変換器20を生成する。そして、生成部50は、生成した新たな変換器20を変換器格納部34に書き込む。
生成部50は、一例として、更新部48による更新処理において残存した少なくとも1つの変換器20を、変換器格納部34から取得する。続いて、生成部50は、一例として、取得した少なくとも1つの変換器20に対して交叉および突然変異等の遺伝的な操作をして、新たな変換器20を生成する。そして、生成部50は、一例として、生成した新たな変換器20を変換器格納部34に書き込む。これにより、変換器格納部34は、更新処理において残存した少なくとも1つの変換器20および生成部50が生成した新たな変換器20を、格納することができる。
このような遺伝的処理装置10は、変換処理部38による変換処理、適合度算出部44による適合度の算出処理、選択部46による変換器20の選択処理、更新部48による更新処理および生成部50による新たな変換器20の生成処理を、複数回(例えば複数世代)繰り返す。これにより、遺伝的処理装置10は、学習用入力データを学習用目標データへ変換するのに適した変換器20を、進化的計算を用いて生成することができる。
図2は、処理部品22を直列に組み合わせた構成の変換器20の一例を示す。図3は、処理部品22を木構造に組み合わせた構成の変換器20の一例を示す。
変換器20は、一例として、図2に示されるような、複数の処理部品22を直列に組み合わせた構成であってよい。また、変換器20は、一例として、図3に示されるような、複数の処理部品22を木構造に組み合わせた構成であってもよい。また、変換器20は、一例として、1つの入力端に対して、複数の出力端を有する構成であってもよい。また、変換器20は、一例として、複数の入力端および複数の出力端を有する構成であってもよい。
なお、処理部品22が木構造に組み合わされた構成の変換器20は、木構造の末端の処理部品22に入力データが与えられ、木構造の最上位の処理部品22から出力データを出力する。また、このような変換器20は、複数の末端の処理部品22のそれぞれに、同一の入力データが与えられる。これに代えて、このような変換器20は、複数の末端の処理部品22のそれぞれに互いに異なる入力データが与えられてもよい。
また、例えば、変換器20は、入力画像を出力画像にそれぞれ変換する複数のフィルタ部品である処理部品22を組み合わせた画像フィルタであってよい。この場合、各処理部品22は、前段に配置された処理部品22から出力された画像データを受け取り、受け取った画像データに演算を施して後段に配置された処理部品22に与える。また、この場合、遺伝的処理装置10は、複数の画像フィルタを含む画像フィルタ群を進化的計算に基づいて複数世代にわたり進化させる。
また、変換器20は、一例として、ハードウェアである処理部品22を組み合わせた構成であってよい。また、変換器20は、データに対して演算を施すプログラムである処理部品22を組み合わせた構成であってもよい。また、変換器20は、データに対して施すべき演算内容を表わす演算式である処理部品22を組み合わせた構成であってもよい。
また、変換器20は、例えば、1次元データ列、2次元データ群、3次元データ群、又は、更に多次元のデータ群等を変換してもよい。1次元データ列は、例えば、時系列データ又は配列状のデータ列等である。2次元データ群は、例えば、複数の画素データ等が2次元空間に配列された画像データ等である。3次元データ群は、例えば、色又は濃度等を表わすデータ値が3次元空間の各格子点に配置されたボリュームデータ等である。また、変換器20は、入力されたデータと異なる次元のデータを出力してもよい。
複数の処理部品22のそれぞれは、一例として、2値化演算、ヒストグラム演算、平滑化演算、エッジ検出演算、モルフォロジ演算及び/又は周波数空間での演算(例えば、ローパスフィルタリング演算およびハイパスフィルタリング演算)等の単項演算をする。さらに、複数の処理部品22のそれぞれは、一例として、平均演算、差分演算及び/又はファジー演算(例えば論理和演算、論理積演算、代数和、代数積、限界和、限界積、激烈和および激烈積等)等の二項演算をしてもよい。
図4は、処理部品22を直列に組み合わせた構成の変換器20に対して行われる遺伝的な操作の一例を示す。図5は、処理部品22を木構造に組み合わせた構成の変換器20に対して行われる交叉操作の一例を示す。図6は、処理部品22を木構造に組み合わせた構成の変換器20に対して行われる突然変異操作の一例を示す。
生成部50は、一例として、2個又はそれ以上の変換器20に対して、遺伝的な操作の一例である交叉操作を行って新たな2個又はそれ以上の変換器20を生成する。生成部50は、一例として、図4および図5に示されるように、既に生成された少なくとも1つの一の変換器20Aの一部の部品群24Aを、既に生成された他の変換器20Bの少なくとも一部の部品群24Bと置換して、新たな変換器20Eおよび20Fを生成する。なお、部品群24は、少なくとも1つの処理部品22の組を表す部材である。
また、生成部50は、一例として、一の変換器20に対して、遺伝的な操作の一例である突然変異操作を行って新たな一の変換器20を生成する。生成部50は、一例として、図4および図6に示されるように、既に生成された一の変換器20Cの一部の部品群24Cを、例えばランダムに選択された他の部品群24Gに置換して、新たな変換器20Gを生成する。
また、生成部50は、一例として、現世代の変換器20をそのまま次世代の変換器20として残してもよい。生成部50は、一例として、図4に示されるように、変換器20Dの処理部品22の構成をそのまま含む次世代の変換器20Hを生成する。
図7は、本実施形態に係る遺伝的処理装置10の処理フローを示す。遺伝的処理装置10は、ステップS12〜ステップS17の各処理を、複数回(例えば複数世代)繰返して実行する(S11、S18)。
それぞれの世代において、まず、重み生成部43は、重みデータを適切なデータに更新する(S12)。この場合において、重み生成部43は、前世代以前の複数の世代における少なくとも1つの変換器20(例えば、前世代以前の複数の世代におけるエリートの変換器20)により学習用入力データを変換して得られた学習用出力データと学習用目標データとの差分に応じた値を、累積して得られる更新値に基づき、現世代の重みデータを生成する。
なお、重み生成部43は、最初の世代においては、予め定められた重みデータを用いる。重みデータの生成処理の詳細については、図9において説明する。
続いて、変換処理部38は、現世代の複数の変換器20のそれぞれについて、当該変換器20により学習用入力データを変換した学習用出力データを生成する(S13)。変換処理部38は、生成した学習用出力データを当該変換器20に対応付けて学習用出力データ格納部40に格納させる。
続いて、適合度算出部44は、現世代の複数の変換器20のそれぞれについて、ステップS12において更新された現世代の重みデータにより重み付けして適合度を算出する(S14)。適合度算出部44は、一例として、学習用出力データと学習用目標データとの類似度または近似度を適合度として算出してよい。
続いて、選択部46は、現世代の複数の変換器20のうち、適合度が高い変換器20を優先的に選択する(S15)。選択部46は、一例として、適合度が基準値より高い変換器20を選択する。
また、選択部46は、一例として、現世代の複数の変換器20のうち、適合度が上位から予め定められた範囲の変換器20を選択してもよい。また、選択部46は、一例として、適合度がより高い変換器20がより高い確率で選択されるように設定がされている条件下で、ランダムに変換器20を選択してもよい。なお、選択部46は、一例として、最後の世代においては、適合度の最も高い1個の変換器20を選択する。
続いて、更新部48は、変換器格納部34に格納された複数の変換器20を更新する(S16)。より具体的には、更新部48は、現世代の複数の変換器20のうちステップS15において選択された変換器20を次世代へと残存させ、他の変換器20を淘汰することにより更新する。更新部48は、一例として、ステップS15において選択されなかった変換器20を、変換器格納部34から消去することによって淘汰する。
続いて、生成部50は、更新処理によって残存した少なくとも1つの変換器20に対して、交叉および突然変異等の遺伝的な操作を行って、1または複数個の新たな変換器20を生成する(S17)。そして、生成部50は、残存した変換器20および新たな変換器20を、次世代の複数の変換器20として変換器格納部34に格納させる。なお、生成部50は、最後の世代においては、当該処理を実行しない。
遺伝的処理装置10は、以上の処理を複数の世代(例えば数十世代または数百世代以上)繰返して実行して、最後の世代(例えば第N世代、Nは2以上の自然数)まで処理を実行した後に、当該フローを抜ける(S18)。このようにして、遺伝的処理装置10は、学習用入力データを学習用目標データへ変換するのに適した変換器20を、進化的計算を用いて生成することができる。
図8は、本実施形態に係る変換器20の適合度の算出方法の一例を示す。適合度算出部44は、一例として、変換器20の適合度として、当該変換器20により学習用入力データを変換させることにより生成された学習用出力データと学習用目標データとがどれだけ類似または近似しているかを表すパラメータを算出する。適合度は、例えば、値がより大きいほど、変換器20がより適切であることを示す。
適合度算出部44は、学習用出力データの各領域の値と学習用目標データの対応する領域の値とを比較した比較値を算出し、領域毎の比較値に対して重みデータにより指定される重みを乗じる。そして、適合度算出部44は、重みが乗じられた領域毎の比較値を全領域について平均または合計した値を算出し、算出した値を当該学習用出力データの適合度として出力する。
適合度算出部44は、一例として、学習用出力データ、学習用目標データおよび重みデータが画像データの場合、学習用出力データのピクセル毎の輝度値と、学習用目標データの対応するピクセルの輝度値との差分または比率を算出する。そして、適合度算出部44は、一例として、算出したピクセル毎の差分または比率のそれぞれに、重みデータに基づく重みを乗じ、重みが乗じられたピクセル毎の差分または比率を合計または平均して、適合度を算出する。
例えば、学習用出力データ、学習用目標データおよび重みデータが画像データの場合、適合度算出部44は、下記式(1)に示される演算をして、適合度を算出する。なお、この場合において、学習用出力データ、学習用目標データおよび重みデータの画像サイズは、同一とされる。
式(1)において、fは、適合度を表わす。Ymaxは、輝度の最大値を表わす。また、xは、画像の水平方向のピクセル位置を示す変数である。yは、画像の垂直方向のピクセル位置を示す変数である。xmaxは、画像の水平方向のピクセル数を示す定数である。tymaxは、画像の垂直方向のピクセル数を示す定数である。
Iweiht(x,y)は、重みデータにおける(x,y)位置のピクセルの輝度値を表わす。Itarget(x,y)は、学習用目標データにおける(x,y)位置のピクセルの輝度値を表わす。Ifilter(x,y)は、学習用出力データにおける(x,y)位置のピクセルの輝度値を表わす。
すなわち、式(1)の中カッコ内の分子部分に示されるように、適合度算出部44は、学習用目標データの輝度値から学習用出力データの輝度値の差の絶対値に対して重みデータの輝度値を乗じた重み付き差分値を、画面内の全てのピクセル毎に算出し、算出した重み付き差分値を全ピクセルについて合計した合計重み付け差分値を算出する。さらに、式(1)の中カッコ内の分母部分に示されるように、適合度算出部44は、重みデータの輝度値を全ピクセルについて合計した合計重みを算出する。
さらに、適合度算出部44は、合計重み付け差分値を合計重みで除算した除算値(式(1)の中カッコ内)に、輝度値の最大値の逆数(1/Ymax)を乗じて正規化値(式(1)の2番目の項)を算出する。そして、適合度算出部44は、1から、正規化値を減じた値を、適合度fとして算出する。これにより、適合度算出部44は、学習用出力データと学習用目標データとの差分を領域毎に重み付けして適合度を算出することができる。
図9は、本実施形態に係る遺伝的処理装置10の重み生成部43の構成の一例を示す。重み生成部43は、一例として、差分値算出部62と、更新値算出部64と、更新部66と、設定部68とを有する。
差分値算出部62は、前世代(第t世代:tは2以上の整数)における少なくとも1つの変換器20(例えばエリートの変換器20)により得られた学習用出力データ(It)と、学習用目標データ(Itarget)との差分に応じた値(差分値ΔIt)を算出する。本例においては、差分値算出部62は、下記式(2)に示されるように、前世代におけるエリートの変換器20により得られた学習用出力データ(It)と学習用目標データ(Itarget)との差分の絶対値を、差分値(ΔIt)として算出する。
更新値算出部64は、少なくとも1つの変換器20(例えばエリートの変換器20)により得られた学習用出力データと学習用目標データとの差分に応じた値(f(ΔIt))に、第1係数(α)を乗じた値を、所定世代から前世代まで累積して得られる更新値(Vt+1)を算出する。本例においては、更新値算出部64は、下記式(3)に示されるように更新値(Vt+1)を算出する。
式(3)において、αは、正の値である第1係数を表す。また、式(3)において、Vtは、前世代の処理において算出された更新値を表す。また、式(3)において、f(ΔIt)は、更新変化量を表わす。
即ち、更新値算出部64は、更新変化量(f(ΔIt))に第1係数(α)を乗じた値を、前世代の処理において算出された更新値(Vt)に加算して、現世代の更新値(Vt+1)を算出する。これにより、更新値算出部64は、所定世代(例えば第1世代)から前世代(第t世代)までのそれぞれの更新変化量(f(ΔI1)、f(ΔI2)…、f(ΔIt−1)、f(ΔIt))に第1係数(α)を乗じた値を累積した更新値(Vt+1)を算出することができる。
なお、更新値算出部64は、一例として、差分の絶対値(ΔIt)が所定の閾値より大きい場合に、現世代の更新値(Vt+1)を前世代の更新値(V1)より増加させ、差分の絶対値(ΔIt)が閾値より小さい場合に、現世代の更新値(Vt+1)を前世代の更新値(Vt)より減少させる更新変化量を生成してもよい。
これにより、更新値算出部64は、学習用出力データが学習用目標データに近似しており変換が成功していると判断される場合(差分の絶対値(ΔIt)が閾値より小さい場合)には、重みデータ(Wt)の変化を小さくすることができる。一方、学習用出力データが学習用目標データに近似しておらず変換が失敗していると判断される場合(差分の絶対値(ΔIt)が閾値より大きい場合)には、重みデータ(Wt)の変化を大きくすることができる。なお、更新変化量(f(ΔIt))の具体的な演算例については、図10において更に説明する。
また、更新値算出部64は、現世代により近い世代の差分値に乗じられる第1係数(α)ほど、絶対値を大きくしてもよい。これにより、更新値算出部64は、現世代により近い世代の差分値の影響を更新値(Vt+1)に大きく反映することができる。また、更新値算出部64は、更新値(Vt+1)を予め定められた範囲内に制限してもよい。これにより、更新値算出部64は、更新値(Vt+1)が極単に大きくなってしまうことを回避することができる。
更新部66は、前世代の重みデータ(Wt)と、更新値算出部64により算出された更新値(Vt+1)に応じた値とを加算して現世代の重みデータ(Wt+1)を生成する。ここで、更新部66は、世代がより大きい場合に重みデータの変化をより小さくする。これにより、更新部66は、世代が大きくなるほど重みデータを安定化させることができる。また、更新部66は、複数の世代に基づいた重みデータを用いて更新できるので、進化的計算を安定化させることができる。本例においては、更新部66は、下記式(4)に示される演算式により現世代の重みデータ(Wt+1)を生成する。
式(4)において、e−βtは、第2係数を表す。また、βは正の整数を表す。このような第2係数(e−βt)は、t(世代)が大きくなるに従い値が0に漸近する。これにより、更新部66は、更新値(Vt+1)に世代が大きくなるに従い値が0に漸近する第2係数(e−βt)を乗じた値(Vt+1・e−βt)と、前世代の重みデータ(Wt)とを加算して現世代の重みデータ(Wt+1)を生成することができる。
なお、更新部66は、重みデータWtの上限値を設定してもよい。これにより、更新部66は、重みデータWtが極単に大きくなってしまうことを回避することができる。
設定部68は、外部からの指示等に応じて、第1係数(α)を更新値算出部64に対して設定する。ここで、重みデータWtの変化速度は、第1係数(α)の大きさに応じて調整される。
従って、設定部68は、第1係数(α)を小さくすれば、重みデータの加速度を小さくし、第1係数(α)を大きくすれば、重みデータの加速度(を大きくすることができる。即ち、設定部68は、第1係数(α)を制御することにより、重みデータWtの安定度を制御することができる。
また、設定部68は、外部からの指示等に応じて、第2係数(e−βt)内のβの値を更新部66に設定してもよい。第2係数(e−βt)は、βが大きいとより早く0に近づき、βが小さいとより遅く0に近づく。従って、設定部68は、βを大きくすれば、更新値を0に漸近させる速度を早くし、βを小さくすれば、更新値を0に漸近させる速度を遅くすることができる。従って、設定部68は、第2係数(e−βt)内のβの値を制御することによっても、重みデータWtの安定度を制御することができる。
図10は、本実施形態に係る更新変化量の一例を示す。更新値算出部64により算出される更新変化量(f(ΔIt))は、一例として、下記式(5)に示される関数であってよい。なお、下記式(5)により表される関数は、例えば図10のように表される。
式(5)に示された更新変化量(f(ΔIt))は、差分の絶対値(ΔIt)が大きいほど、大きい値となる。さらに、更新変化量(f(ΔIt))は、差分の絶対値(ΔIt)が所定の閾値(τ)より大きい場合には正の値となり、差分の絶対値(ΔIt)が所定の閾値(τ)より小さい場合には負の値となる。また、更に、更新変化量(f(ΔIt))は、差分の絶対値(ΔIt)が増加していくと1に漸近し、差分の絶対値(ΔIt)が減少していくと−1に漸近する。
即ち、更新変化量(f(ΔIt))は、閾値(τ)において正負が反転する単調非減少関数であって、正の上限値(例えば+1)および負の下限値(例えば−1)の範囲の値をとる関数である。このような更新変化量(f(ΔIt))によれば、差分の絶対値(ΔIt)が閾値(τ)より大きい場合に、現世代の更新値(Vt+1)を前世代の更新値(Vt)より増加させ、差分の絶対値(ΔIt)が閾値(τ)より小さい場合に、現世代の更新値(Vt+1)を前世代の更新値(Vt)より減少させることができる。
なお、式(5)において、σは、更新変化量(f(ΔIt))が−1から1へと変化する変化速度を表す。即ち、更新変化量(f(ΔIt))は、σが大きいほど−1から1へと緩やかに変化し、σが小さいほど−1から1へと急峻に変化する。τおよびσは、例えば使用者により任意に設定される。
なお、式(5)は一例である。更新値算出部64は、式(5)以外のアルゴリズムにより更新変化量(f(ΔIt))を算出してよい。
以上のように本実施形態に係る遺伝的処理装置10は、前世代以前の複数の世代における差分値ΔItに基づき、現世代の重みデータを生成する。これにより、遺伝的処理装置10は、重みデータWtの変化の加速度を制御することができる。
従って、本実施形態に係る遺伝的処理装置10によれば、重みデータWtの急激な変化および2つの局所解間での振動等を無くして、進化的計算を安定化させることができる。この結果、遺伝的処理装置10によれば、遺伝的処理装置10によれば、少ない演算コスト(演算時間も含む)で、目的とする変換器20を得ることができる可能性を高くすることができる。
図11は、本実施形態に係るコンピュータ1900のハードウェア構成の一例を示す。本実施形態に係るコンピュータ1900は、ホスト・コントローラ2082により相互に接続されるCPU2000、RAM2020、グラフィック・コントローラ2075、及び表示装置2080を有するCPU周辺部と、入出力コントローラ2084によりホスト・コントローラ2082に接続される通信インターフェイス2030、ハードディスクドライブ2040、及びCD−ROMドライブ2060を有する入出力部と、入出力コントローラ2084に接続されるROM2010、フレキシブルディスク・ドライブ2050、及び入出力チップ2070を有するレガシー入出力部とを備える。
ホスト・コントローラ2082は、RAM2020と、高い転送レートでRAM2020をアクセスするCPU2000及びグラフィック・コントローラ2075とを接続する。CPU2000は、ROM2010及びRAM2020に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ2075は、CPU2000等がRAM2020内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置2080上に表示させる。これに代えて、グラフィック・コントローラ2075は、CPU2000等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
入出力コントローラ2084は、ホスト・コントローラ2082と、比較的高速な入出力装置である通信インターフェイス2030、ハードディスクドライブ2040、CD−ROMドライブ2060を接続する。通信インターフェイス2030は、ネットワークを介して他の装置と通信する。ハードディスクドライブ2040は、コンピュータ1900内のCPU2000が使用するプログラム及びデータを格納する。CD−ROMドライブ2060は、CD−ROM2095からプログラム又はデータを読み取り、RAM2020を介してハードディスクドライブ2040に提供する。
また、入出力コントローラ2084には、ROM2010と、フレキシブルディスク・ドライブ2050、及び入出力チップ2070の比較的低速な入出力装置とが接続される。ROM2010は、コンピュータ1900が起動時に実行するブート・プログラム、及び/又は、コンピュータ1900のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ2050は、フレキシブルディスク2090からプログラム又はデータを読み取り、RAM2020を介してハードディスクドライブ2040に提供する。入出力チップ2070は、フレキシブルディスク・ドライブ2050を入出力コントローラ2084へと接続すると共に、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を入出力コントローラ2084へと接続する。
RAM2020を介してハードディスクドライブ2040に提供されるプログラムは、フレキシブルディスク2090、CD−ROM2095、又はICカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、RAM2020を介してコンピュータ1900内のハードディスクドライブ2040にインストールされ、CPU2000において実行される。
コンピュータ1900にインストールされ、コンピュータ1900を遺伝的処理装置10として機能させるプログラムは、変換器格納モジュールと、学習用入力データ格納モジュールと、変換処理モジュールと、学習用出力データ格納モジュールと、学習用目標データ格納モジュールと、重み生成モジュールと、適合度算出モジュールと、選択モジュールと、更新モジュールと、生成モジュールとを備える。これらのプログラム又はモジュールは、CPU2000等に働きかけて、コンピュータ1900を、変換器格納部34、学習用入力データ格納部36、変換処理部38、学習用出力データ格納部40、学習用目標データ格納部42、重み生成部43、適合度算出部44、選択部46、更新部48および生成部50としてそれぞれ機能させる。
これらのプログラムに記述された情報処理は、コンピュータ1900に読込まれることにより、ソフトウェアと上述した各種のハードウェア資源とが協働した具体的手段である変換器格納部34、学習用入力データ格納部36、変換処理部38、学習用出力データ格納部40、学習用目標データ格納部42、重み生成部43、適合度算出部44、選択部46、更新部48および生成部50として機能する。そして、これらの具体的手段によって、本実施形態におけるコンピュータ1900の使用目的に応じた情報の演算又は加工を実現することにより、使用目的に応じた特有の遺伝的処理装置10が構築される。
一例として、コンピュータ1900と外部の装置等との間で通信を行う場合には、CPU2000は、RAM2020上にロードされた通信プログラムを実行し、通信プログラムに記述された処理内容に基づいて、通信インターフェイス2030に対して通信処理を指示する。通信インターフェイス2030は、CPU2000の制御を受けて、RAM2020、ハードディスクドライブ2040、フレキシブルディスク2090、又はCD−ROM2095等の記憶装置上に設けた送信バッファ領域等に記憶された送信データを読み出してネットワークへと送信し、もしくは、ネットワークから受信した受信データを記憶装置上に設けた受信バッファ領域等へと書き込む。このように、通信インターフェイス2030は、DMA(ダイレクト・メモリ・アクセス)方式により記憶装置との間で送受信データを転送してもよく、これに代えて、CPU2000が転送元の記憶装置又は通信インターフェイス2030からデータを読み出し、転送先の通信インターフェイス2030又は記憶装置へとデータを書き込むことにより送受信データを転送してもよい。
また、CPU2000は、ハードディスクドライブ2040、CD−ROMドライブ2060(CD−ROM2095)、フレキシブルディスク・ドライブ2050(フレキシブルディスク2090)等の外部記憶装置に格納されたファイルまたはデータベース等の中から、全部または必要な部分をDMA転送等によりRAM2020へと読み込ませ、RAM2020上のデータに対して各種の処理を行う。そして、CPU2000は、処理を終えたデータを、DMA転送等により外部記憶装置へと書き戻す。このような処理において、RAM2020は、外部記憶装置の内容を一時的に保持するものとみなせるから、本実施形態においてはRAM2020および外部記憶装置等をメモリ、記憶部、または記憶装置等と総称する。本実施形態における各種のプログラム、データ、テーブル、データベース等の各種の情報は、このような記憶装置上に格納されて、情報処理の対象となる。なお、CPU2000は、RAM2020の一部をキャッシュメモリに保持し、キャッシュメモリ上で読み書きを行うこともできる。このような形態においても、キャッシュメモリはRAM2020の機能の一部を担うから、本実施形態においては、区別して示す場合を除き、キャッシュメモリもRAM2020、メモリ、及び/又は記憶装置に含まれるものとする。
また、CPU2000は、RAM2020から読み出したデータに対して、プログラムの命令列により指定された、本実施形態中に記載した各種の演算、情報の加工、条件判断、情報の検索・置換等を含む各種の処理を行い、RAM2020へと書き戻す。例えば、CPU2000は、条件判断を行う場合においては、本実施形態において示した各種の変数が、他の変数または定数と比較して、大きい、小さい、以上、以下、等しい等の条件を満たすかどうかを判断し、条件が成立した場合(又は不成立であった場合)に、異なる命令列へと分岐し、またはサブルーチンを呼び出す。
また、CPU2000は、記憶装置内のファイルまたはデータベース等に格納された情報を検索することができる。例えば、第1属性の属性値に対し第2属性の属性値がそれぞれ対応付けられた複数のエントリが記憶装置に格納されている場合において、CPU2000は、記憶装置に格納されている複数のエントリの中から第1属性の属性値が指定された条件と一致するエントリを検索し、そのエントリに格納されている第2属性の属性値を読み出すことにより、所定の条件を満たす第1属性に対応付けられた第2属性の属性値を得ることができる。
以上に示したプログラム又はモジュールは、外部の記録媒体に格納されてもよい。記録媒体としては、フレキシブルディスク2090、CD−ROM2095の他に、DVD又はCD等の光学記録媒体、MO等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワーク又はインターネットに接続されたサーバシステムに設けたハードディスク又はRAM等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ1900に提供してもよい。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。