以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、本実施形態に係る遺伝的処理装置10の構成を示す。遺伝的処理装置10は、少なくとも1つの変換器20を含む変換器群を進化的計算に基づいて複数世代にわたり進化させる。ここで、遺伝的処理装置10は、現世代以前の重みデータに加え、前世代以前の少なくとも1世代で利用した重みデータを用いて変換器20を進化させる。そして、遺伝的処理装置10は、学習用入力データを学習用目標データへ変換するのに適した変換器20を、世代毎に生成および更新する。遺伝的処理装置10は、一例として、コンピュータにより実現される。また、変換器20は、一例として、画像フィルタであってよい。
遺伝的処理装置10は、変換器格納部34と、学習用入力データ格納部36と、変換処理部38と、変換済データ格納部40と、学習用目標データ格納部42と、重み生成部43と、重み記憶部60と、適合度算出部44と、制御部52と、選択部46と、更新部48と、生成部50とを備える。変換器格納部34は、互いに異なる構成の複数の変換器20を格納する。本実施形態において、各変換器20は、学習用入力データを処理して処理結果を変換済データとして出力する複数の処理部品22の入出力間を組み合わせた構造をとる。
学習用入力データ格納部36は、変換器20の変換対象である学習用入力データを格納する。学習用入力データは、一例として、当該遺伝的処理装置10により生成された変換器20が適用されるアプリケーションにおいて、変換器20に実際に与えられるデータのサンプルであってよい。変換器20が画像フィルタである場合、学習用入力データは、一例として、使用者により予め生成または撮影された画像であってよい。
変換処理部38は、変換器格納部34に格納された複数の変換器20を順次に取得する。変換処理部38は、取得したそれぞれの変換器20により、学習用入力データ格納部36に格納された学習用入力データを変換させて、変換済データのそれぞれを生成する。
変換済データ格納部40は、変換処理部38において生成された変換済データを格納する。変換済データ格納部40は、一例として、生成された変換済データのそれぞれを、変換した変換器20に対応付けて格納する。
学習用目標データ格納部42は、学習用入力データを変換器20により変換して生成される変換済データの目標となる学習用目標データを格納する。学習用目標データは、一例として、当該遺伝的処理装置10により生成された変換器20が適用されるアプリケーションにおいて、学習用入力データを入力した変換器20が実際に出力するべきデータのサンプルであってよい。変換器20が画像フィルタである場合、学習用目標データは、一例として、使用者により予め生成または準備された画像であってよい。
重み生成部43は、変換済データと学習用目標データとの比較における前世代以前の重みデータを、現世代の重みデータに更新する。重み生成部43は、一例として、変換済データまたは学習用目標データと、同様にデータが配置された重みデータを生成する。
ここで、重み生成部43は、変換済データおよび学習用目標データのうちの、少なくとも一組のデータ同士についてのデータ毎の差分がより大きいデータに対する重みを、当該差分がより小さいデータに対する重みより大きくした重みデータを生成してよい。重み生成部43は、一例として、前世代の重みデータにおける、差分が閾値より大きいデータに対応する重みに所定値を加算し、差分が閾値以下のデータに対応する重みに所定値より小さい値を加算して、現世代の重みデータを生成する。
これに代えて、重み生成部43は、前世代の重みデータにおける、差分が閾値より大きいデータに対応する重みに所定値を加算し、差分が閾値以下のデータに対応する重みから所定値を減算して、現世代の重みデータを生成してもよい。
重み記憶部60は、それぞれの世代において重み生成部43により更新された複数の世代別の重みデータを記憶する。ここで、重み記憶部60は、一例として、重み生成部43が前世代以前の重みデータを現世代の重みデータに更新した場合に、現世代の重みデータを新たな重みデータとして追加して記憶する。
適合度算出部44は、変換器格納部34に格納されたそれぞれの現世代の変換器20について、学習用入力データを変換した変換済データと学習用目標データとを現世代の重みデータにより重み付けして比較した結果に応じた現世代適合度、および、変換済データと学習用目標データとを前世代以前の重みデータにより重み付けして比較した結果に応じた旧世代適合度を算出する。ここで、適合度は、学習用入力データを学習用目標データへと変換するのに適しているかどうかを表す指標値であり、値が高いほど学習用入力データを学習用目標データへと変換するのに適していることを表す。また、適合度算出部44は、それぞれの現世代の変換器20について、変換済データと学習用目標データとを複数の世代別の重みデータのそれぞれにより重み付けして比較した結果に応じた複数の世代別適合度を算出してもよい。
制御部52は、複数の世代間における現世代適合度の増分値に応じて、適合度算出部44が現世代の変換器20について算出すべき複数の世代別適合度の世代数を制御する。以下、この世代数を重みデータ利用世代数と示す。制御部52は、一例として、各世代の変換器20の適合度の最大値を各世代の適合度とし、現世代の適合度から前世代の適合度を減算した差分を現世代適合度の増分値としてよい。制御部52は、一例として、現世代適合度の増分値がより大きい場合に、上記世代数をより小さくする。これに代えて、制御部52は、各変換器20の現世代適合度の増分値と予め設定した基準値とに基づいて、現世代の変換器20について重みデータ利用世代数を制御してもよい。より具体的には、制御部52は、各変換器20の現世代適合度の増分値が基準値以上の場合は、基準値未満の場合と比較して、より小さい世代数を用いることとする。
また、制御部52は、前世代において制御した世代数を記憶しておいてよい。そして、制御部52は、現世代適合度の増分値に応じて、記憶した世代数から増加または減少させることで、現世代の変換器20について重みデータ利用世代数を制御してもよい。この場合、制御部52は、一例として、各変換器20の現世代適合度の増分値の平均が、基準値以上の場合は重みデータ利用世代数を減少させて、基準値未満の場合は重みデータ利用世代数を増加させる。なお、制御部52は、現世代適合度の増分値として、現世代直前の複数世代の適合度の平均に対する現世代適合度の増分値を用いてもよく、現世代を含む複数世代分の適合度増分値の平均等を用いてよい。
選択部46は、変換器格納部34に格納された複数の変換器20のうち現世代適合度がより高い変換器20と旧世代適合度がより高い変換器20とのうち少なくとも一方を優先的に、次世代の変換器20として選択する。より具体的には、選択部46は、生物の自然淘汰をモデル化した手法により、残存させる少なくとも1つの変換器20を選択する。選択部46は、一例として、変換器格納部34に格納された複数の変換器20の現世代適合度および旧世代適合度のそれぞれに基づき、エリート選択およびルーレット選択といった遺伝的計算により少なくとも1つの変換器20を選択する。
更新部48は、変換器格納部34に格納された複数の変換器20のうち、選択部46により選択された変換器20を残存させ、選択部46により選択されなかった変換器20を淘汰する。更新部48は、一例として、変換器20を変換器格納部34から削除することにより淘汰する。
生成部50は、変換器格納部34に格納された入力データを出力データに変換する複数の処理部品22を含む少なくとも1つの前世代の変換器20から、遺伝的処理により現世代の変換器20を生成する。生成部50は、更新部48による更新処理において残存した少なくとも1つの変換器20に対して、交叉および突然変異等の遺伝的な操作をして、新たな変換器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は、複数の入力端および複数の出力端を有する構成であってもよい。
変換器20は、受け取った入力データに対して演算処理を施して、出力データを出力する。変換器20は、一例として、入力データに対して演算を施すプログラムにより実行される。また、変換器20は、入力データに対して施すべき演算内容を表わす演算式であってもよい。
なお、処理部品22が木構造に組み合わされた構成の変換器20は、木構造の末端の処理部品22に入力データが与えられ、木構造の最上位の処理部品22から出力データを出力する。また、このような変換器20は、複数の末端の処理部品22のそれぞれに、同一の入力データが与えられる。これに代えて、このような変換器20は、複数の末端の処理部品22のそれぞれに互いに異なる入力データが与えられてもよい。
それぞれの変換器20は、入力画像を出力画像にそれぞれ変換する少なくとも1つのフィルタ部品を組み合わせた画像フィルタであってよい。この場合、各処理部品22は、前段に配置された処理部品22から出力された画像データを受け取り、受け取った画像データに演算を施して後段に配置された処理部品22に与える。生成部50は、一例として、入力画像を出力画像に変換する少なくとも1つの前世代の画像フィルタから遺伝的処理により現世代の画像フィルタを生成する。また、この場合、遺伝的処理装置10は、複数の画像フィルタを含む画像フィルタ群を進化的計算に基づいて複数世代にわたり進化させる。
また、変換器20は、一例として、ハードウェアである処理部品22を組み合わせた構成であってよい。この場合、変換器格納部34は、変換器を表すデータ構造として、各処理部品間のデータ授受関係を示す構成データを記憶する。また、変換器20は、データに対して演算を施すプログラムである処理部品22を組み合わせた構成であってもよい。また、変換器20は、データに対して施すべき演算内容を表わす演算式である処理部品22を組み合わせた構成であってもよい。
また、変換器20は、例えば、1次元データ列、2次元データ群、3次元データ群、又は、更に多次元のデータ群等を変換してもよい。1次元データ列は、例えば、時系列データ又は配列状のデータ列等である。2次元データ群は、例えば、複数の画素データ等が2次元空間に配列された画像データ等である。3次元データ群は、例えば、色又は濃度等を表わすデータ値が3次元空間の各格子点に配置されたボリュームデータ等である。また、変換器20は、入力されたデータと異なる次元のデータを出力してもよい。
複数の処理部品22のそれぞれは、前段に配置された処理部品22から出力された入力データを受け取り、受け取った入力データに演算を施して後段に配置された処理部品22に与える。複数の処理部品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を生成する。
選択部46は、生成部50により生成された1または複数の変換器20から、現世代適合度がより高い変換器20および旧世代適合度がより高い変換器20のうち少なくとも1つを優先的に選択して、適者生存させる。更新部48は、選択された変換器20を変換器格納部34内に保存し、選択されなかった変換器20を変換器格納部34内から削除する。
図7は、本実施形態に係る変換器20の適合度を表わすパラメータの一例である近似度の算出方法の一例を示す。本実施形態において、適合度算出部44は、当該変換器20により対象データを変換させることにより生成された変換済データと、学習用目標データとがどれだけ近似しているかを表わす近似度を算出する。すなわち、この近似度は、値がより大きいほど、当該変換済データが学習用目標データにより近似しているので、当該変換済データを生成した変換器20がより適切であることを示す指標となる。
適合度算出部44は、一例として、出力画像の各ピクセルの値と、目標画像の対応するピクセルの値とを比較する。より具体的には、適合度算出部44は、一例として、出力画像の各ピクセルの値と、目標画像の対応するピクセルの値との差または比率等を算出する。そして、適合度算出部44は、一例として、複数のピクセルの全ての比較結果を平均または合計し、平均または合計した比較結果を当該出力画像の近似度としてよい。適合度算出部44は、複数の変換器20により変換された複数の変換済データのそれぞれに対して、以上のようにして近似度を求める。
この処理において、適合度算出部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は、出力画像と目標画像との差分を領域毎に重み付けして近似度を算出することができる。
図8は、本実施形態に係る遺伝的処理装置10の動作フローの一例を示す。遺伝的処理装置10は、ステップS13〜ステップS16の各処理を、複数回(例えば複数世代)繰返して実行する(S12、S18)。なお、遺伝的処理装置10は、与えられた学習用入力データを学習用目標データに変換する変換器20を生成するための初期の変換器20として、ランダムに生成した変換器20または既に生成した変換器20を、予め変換器格納部34に格納しておく。
まず、生成部50は、変換器格納部34に格納された少なくとも1つの変換器20を取得する。そして、生成部50は、取得した少なくとも1つの変換器20に対して、交叉操作および突然変異操作等の遺伝的な操作を行って、少なくとも一部の処理部品22を他の処理部品22に置換した少なくとも1つの新たな変換器20を生成する(S17)。
この場合、生成部50は、それぞれの処理部品22が予め設定された導入確率で、新たな変換器20に対して導入されるように遺伝的な操作を行う。例えば、生成部50は、交叉の操作を行う場合において、新たな変換器20に組み込むことができる複数の処理部品22のうちの1または複数の処理部品22を予め設定された導入確率で選択し、親となる変換器20における一部の部品群24と、選択した1または複数の処理部品22を含む部品群24とを置換する。そして、生成部50は、残存した変換器20および新たな変換器20を、次世代の変換器群に含まれる複数の変換器20として変換器格納部34に格納させる。
そして、変換処理部38は、それぞれの世代において、現世代の変換器群に含まれる複数の変換器20のそれぞれについて、当該変換器20により学習用入力データを変換した変換済データを生成する(S13)。変換処理部38は、生成した変換済データを当該変換器20に対応付けて変換済データ格納部40に格納させる。
重み生成部43は、世代毎に適切な重みデータを生成するべく、前世代以前の重みデータから現世代用の新たな重みデータを生成する(S19)。重みデータの生成処理の詳細については後述する。
続いて、適合度算出部44は、変換器群に含まれる1または複数の変換器20のそれぞれについて、旧世代および現世代の適合度をそれぞれ算出する(S14)。この場合、適合度算出部44は、一例として、変換済データと学習用目標データとの近似度または類似度を適合度として算出する。なお、適合度算出部44は、近似度に加え、処理部品の数の少なさ、処理負荷の低さ、および並列度の大きさ等に応じて評価を高めた適合度を算出してもよい。
続いて、選択部46は、変換器群に含まれる複数の変換器20のうち、現世代適合度がより高い変換器20または旧世代適合度がより高い変換器の少なくとも一方を優先的に選択する(S15)。選択部46は、一例として、それぞれの現世代適合度または旧世代適合度が基準値より高い変換器20を少なくとも1つ選択する。ここで、選択部46は、予め設定した適合度の閾値以上であることを基準としてもよい。
また、選択部46は、変換器群に含まれる複数の変換器20のうち、現世代適合度または旧世代適合度が上位から予め定められた範囲の変換器20を選択してもよい。また、選択部46は、現世代適合度および旧世代適合度の中で、より高い適合度の変換器20がより高い確率で選択されるように設定がされている条件下で、ランダムに変換器20を選択してもよい。なお、選択部46は、一例として、最後の世代においては、現世代適合度から最も高い変換器20を選択してよい。
また、選択部46は、現世代適合度が基準値以上の変換器20を次世代の変換器20として選択する確率を、旧世代適合度が基準値以上の変換器20を次世代の変換器20として選択する確率より高くしてもよい。選択部46は、一例として、適合度の基準値を世代別に設定してよく、旧世代適合度の基準値を現世代適合度の基準値より高くしてもよい。また、選択部46は、世代が古くなる毎に適合度の基準値を高くしてよい。これにより、選択部46は、現世代適合度がより高い変換器20を、より高い確率で優先的に選択することができる。
続いて、更新部48は、変換器格納部34に格納された変換器群を更新する(S16)。より具体的には、更新部48は、現世代の変換器群に含まれる複数の変換器20のうちステップS15において選択された変換器20を次世代へと残存させ、他の変換器20を淘汰することにより、変換器群を更新する。更新部48は、一例として、ステップS15において選択されなかった変換器20を、変換器格納部34から消去することによって淘汰する。
遺伝的処理装置10は、以上の処理を複数の世代(例えば数十世代または数百世代以上)繰返して実行して、最後の世代(例えば第N世代、Nは2以上の自然数)まで処理を実行した後に、当該フローを抜ける(S18)。このようにして、遺伝的処理装置10は、学習用入力データを学習用目標データへ変換するのに適した変換器20を、進化的計算を用いて生成することができる。
図9は、図8のステップS14における遺伝的処理装置10の処理フローの一例を示す。遺伝的処理装置10は、図8に示されるステップS14において、以下の処理を実行する。
まず、適合度算出部44は、制御部52から前世代において求めた重みデータ利用世代数を取得する(S21)。そして、適合度算出部44は、現世代の複数の変換器20のそれぞれにより生成された複数の出力データのそれぞれ毎に、以下のステップS24〜S28の処理を実行する(S23、S29)。
ステップS24において、適合度算出部44は、変換済データと学習用目標データとを現世代重みデータに応じた重み付けをした比較をして、変換済データと学習用目標データとの現世代適合度を算出する。
続いて、制御部52は、ステップS24において算出された現世代適合度の増分値とステップS21で取得した世代数とに基づいて、適合度算出部44が重みデータ利用世代数を制御する(S25)。制御部52は、一例として、各変換器20の現世代適合度の増分値が予め設定した基準値以上の場合、ステップS21で取得した世代数から減少させる。また、制御部52は、一例として、各変換器20の現世代適合度の増分値が予め設定した基準値未満の場合、ステップS21で取得した世代数から増加させる。
そして、制御部52は、重みデータ利用世代数を更新して記憶する。ここで、制御部52は、世代数に加えて、世代別適合度を記憶してもよい。
そして、適合度算出部44は、ステップS25で算出した世代数分の各前世代毎に、以下のステップS27の処理を実行する(S26、S28)。
ステップS27において、適合度算出部44は、変換済データと学習用目標データとを重みデータに応じた重み付けをした比較をして、変換済データと学習用目標データとの適合度を算出する。ここで、適合度算出部44は、一例として、対象となる前世代の重みデータによって重み付けをする。遺伝的処理装置10は、算出対象となる全ての世代について処理を終えると、処理をステップS29に進める(S28)。
更に、遺伝的処理装置10は、複数の出力データの全てについてステップS26〜S28の処理を終えると、遺伝的処理装置10は、当該フローを終了する(S29)。これにより、遺伝的処理装置10は、各世代において、現世代に加えて1または複数の旧世代の適合度を用いて、進化させるべき変換器20を選択することができる。
図10は、図8のステップS19における重み生成部43の処理フローの一例を示す。重み生成部43は、図8に示されたステップS19における重みデータの生成処理において、以下のステップS131〜S133の処理を実行する。まず、重み生成部43は、重みデータ生成用として、変換器20が出力した変換済データのうちの、少なくとも一つを抽出する(S131)。
重み生成部43は、一例として、複数の変換器20のうち一部の変換器20により出力された変換済データを抽出してよい。重み生成部43は、一例として、複数の変換器20のうち、前世代において算出された近似度が最も高い変換器20により出力された変換済データを抽出してよい。また、重み生成部43は、一例として、前世代において算出された近似度が所定値以上の変換器20により出力された変換済データを抽出してもよい。
続いて、重み生成部43は、ステップS131において重みデータ生成用として抽出された少なくとも一つのデータのそれぞれデータ毎の差分を算出する(S132)。重み生成部43は、変換済データおよび学習用目標データにおける、対応する位置同士のデータの差分を算出する。ここで、画像データの場合、重み生成部43は、一例として、抽出された少なくとも1つの変換済データと目標データのとのピクセル毎の差分を算出してよい。
また、重み生成部43は、ステップS131において複数組のデータを抽出した場合には、例えば、複数組のデータの差分をデータ毎に(例えば領域としてピクセル単位毎に)、合計又は平均する。これに代えて、重み生成部43は、複数組のデータの差分のうち最も大きい1個の差分を、データ毎に選択してもよい。
続いて、重み生成部43は、ステップS132において算出されたデータ毎の差分に基づき、現世代用の重みデータを生成する(S133)。より具体的には、重み生成部43は、差分がより大きいデータの重みを差分がより小さいデータの重みより大きくするべく、重み記憶部60に記憶された重みデータを更新する。なお、重み記憶部60は、最初の世代においては、使用者により予め生成された重みデータを記憶してもよい。また、重み記憶部60は、データ毎の重みが同一とされた重みデータを記憶してもよい。
また、重み生成部43は、前世代以前の少なくとも1つ以上の各世代における、近似度が大きい順に選択した少なくとも1つの変換済データのそれぞれと学習用目標データとの間のデータ毎の差分の合計に対して単調非減少となる現世代用の重みデータを生成してよい。このような重み生成部43は、適切な重みデータを長期的に安定して生成することができる。重み生成部43は、一例として、下記の式(2)に示される演算式に基づき重みデータを生成する。
式(2)のWN,Mは、第N世代(Nは1以上の整数)の重みデータに含まれるM番目(Mは1以上の整数)の重みデータの値を表わし、WN+1,Mは、第N+1世代の重みデータに含まれるM番目の重みデータの値を表わす。式(2)のF(X)は、Xを変数とする単調非減少関数を表わす。即ち、F(X)は、Xが増加する方向に変化した場合、少なくとも減少しない値を表わす。F(X)は、単調増加関数であってもよい。なお、F(X)及びXは、データに含まれる各データが取り得る範囲の値となる。式(2)のαは、F(DK,M)に応じて、重みを増加させるか又は減少させるかの境界となる基準値を表わす。なお、式(2)のαは、世代毎に変化する値であってよい。
また、式(2)のDK,Mは、下記式(3)により表わされる。即ち、式(2)のDK,Mは、第K世代(Kは整数)における選択された変換済データに含まれるM番目の値(PK,M)と、学習用目標データに含まれるM番目の値(TM)と差分の絶対値を表わす。
このような式(2)に示されるように、重み生成部43は、各世代において、近似度が大きい順に選択した少なくとも1つの変換済データのそれぞれと学習用目標データとの間のデータ毎の差分を算出してよい。続いて、重み生成部43は、算出した差分の合計をデータ毎に算出して、データ毎の合計のそれぞれを前世代の世代数で除算してよい。そして、重み生成部43は、データ毎の除算結果のそれぞれを予め定められた単調非減少関数によりレベル変換した値を含む現世代の重みデータを生成してよい。
なお、式(2)の単調非減少関数F(X)は、一例として、下記式(4)に示されるような関数であってよい。下記式(4)に示される関数は、差分値が小さい範囲において重みデータの変化量が大きく、差分値が大きい範囲において重みデータの変化量が小さい。このような関数を用いることにより、重み生成部43は、差分値が小さい領域においてより重みを敏感に変化させることができる。
また、式(2)の単調非減少関数F(X)は、一例として、差分値が小さい範囲において重みデータの変化量が小さく、差分値が大きい範囲において重みデータの変化量が大きい関数であってもよい。このような関数を用いることにより、重み生成部43は、差分値が大きい領域においてより重みを敏感に変化させることができる。
重み生成部43は、一例として、下記の式(5)に示される演算式に基づき重みデータを生成してよい。なお、式(5)のWKは、第K世代の差分に与える重みを表わす。式(5)のWK以外のパラメータは、式(2)と同様である。
式(5)に示されるように、重み生成部43は、各世代において、近似度が大きい順に選択した少なくとも1つの変換済データのそれぞれと学習用目標データとの間のデータ毎の差分を算出してよい。続いて、重み生成部43は、算出した差分に世代毎に予め設定された重みを乗じた合計をデータ毎に算出して、データ毎の合計のそれぞれを現世代の世代数で除算してよい。そして、重み生成部43は、データ毎の除算結果のそれぞれを予め定められた単調非減少関数によりレベル変換した値を含む次世代の重みデータを生成してよい。
このような本実施形態に係る遺伝的処理装置10によれば、重みデータによりデータ毎に適切な重み付けをして変換済データと学習用目標データとの適合度を算出することができる。これにより、遺伝的処理装置10によれば、複数の変換済データの中から学習用目標データに近似した変換済データを適切に選択することができる。
以上に示した、遺伝的処理装置10によれば、複数世代の重みデータを用いて変換器20を選別していくことにより、重みデータの変動の影響を低減してより適切に変換器20を進化させていくことができる。
図11は、本実施形態に係るコンピュータ1900のハードウェア構成の一例を示す。本実施形態に係るコンピュータ1900は、ホスト・コントローラ2082により相互に接続されるCPU2000、RAM2020、グラフィック・コントローラ2075、及び表示装置2080を有するCPU周辺部と、入出力コントローラ2084によりホスト・コントローラ2082に接続される通信インターフェイス2030、ハードディスク・ドライブ2040、及びDVDドライブ2060を有する入出力部と、入出力コントローラ2084に接続されるROM2010、フレキシブルディスク・ドライブ2050、及び入出力チップ2070を有するレガシー入出力部とを備える。
ホスト・コントローラ2082は、RAM2020と、高い転送レートでRAM2020をアクセスするCPU2000及びグラフィック・コントローラ2075とを接続する。CPU2000は、ROM2010及びRAM2020に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ2075は、CPU2000等がRAM2020内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置2080上に表示させる。これに代えて、グラフィック・コントローラ2075は、CPU2000等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
入出力コントローラ2084は、ホスト・コントローラ2082と、比較的高速な入出力装置である通信インターフェイス2030、ハードディスク・ドライブ2040、DVDドライブ2060を接続する。通信インターフェイス2030は、ネットワークを介して他の装置と通信する。ハードディスク・ドライブ2040は、コンピュータ1900内のCPU2000が使用するプログラム及びデータを格納する。DVDドライブ2060は、DVD2095からプログラム又はデータを読み取り、RAM2020を介してハードディスク・ドライブ2040に提供する。
また、入出力コントローラ2084には、ROM2010と、フレキシブルディスク・ドライブ2050、及び入出力チップ2070の比較的低速な入出力装置とが接続される。ROM2010は、コンピュータ1900が起動時に実行するブート・プログラム、及び/又は、コンピュータ1900のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ2050は、フレキシブルディスク2090からプログラム又はデータを読み取り、RAM2020を介してハードディスク・ドライブ2040に提供する。入出力チップ2070は、フレキシブルディスク・ドライブ2050を入出力コントローラ2084へと接続すると共に、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を入出力コントローラ2084へと接続する。
RAM2020を介してハードディスク・ドライブ2040に提供されるプログラムは、フレキシブルディスク2090、DVD2095、又はICカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、RAM2020を介してコンピュータ1900内のハードディスク・ドライブ2040にインストールされ、CPU2000において実行される。
コンピュータ1900にインストールされ、コンピュータ1900を遺伝的処理装置10として機能させるプログラムは、変換処理モジュールと、重み生成モジュールと、重み記憶モジュールと、適合度算出モジュールと、制御モジュールと、選択モジュールと、更新モジュールと、生成モジュールとを備える。これらのプログラム又はモジュールは、CPU2000等に働きかけて、コンピュータ1900を、変換処理部38と、重み生成部43と、重み記憶部60と、適合度算出部44と、制御部52と、選択部46と、更新部48と、生成部50としてそれぞれ機能させる。
これらのプログラムに記述された情報処理は、コンピュータ1900に読込まれることにより、ソフトウェアと上述した各種のハードウェア資源とが協働した具体的手段である変換処理部38と、重み生成部43と、重み記憶部60と、適合度算出部44と、制御部52と、選択部46と、更新部48と、生成部50として機能する。そして、これらの具体的手段によって、本実施形態におけるコンピュータ1900の使用目的に応じた情報の演算又は加工を実現することにより、使用目的に応じた特有の遺伝的処理装置10が構築される。
一例として、コンピュータ1900と外部の装置等との間で通信を行う場合には、CPU2000は、RAM2020上にロードされた通信プログラムを実行し、通信プログラムに記述された処理内容に基づいて、通信インターフェイス2030に対して通信処理を指示する。通信インターフェイス2030は、CPU2000の制御を受けて、RAM2020、ハードディスク・ドライブ2040、フレキシブルディスク2090、又はDVD2095等の記憶装置上に設けた送信バッファ領域等に記憶された送信データを読み出してネットワークへと送信し、もしくは、ネットワークから受信した受信データを記憶装置上に設けた受信バッファ領域等へと書き込む。このように、通信インターフェイス2030は、DMA(ダイレクト・メモリ・アクセス)方式により記憶装置との間で送受信データを転送してもよく、これに代えて、CPU2000が転送元の記憶装置又は通信インターフェイス2030からデータを読み出し、転送先の2030又は記憶装置へとデータを書き込むことにより送受信データを転送してもよい。
また、CPU2000は、ハードディスク・ドライブ2040、DVDドライブ2060(DVD2095)、フレキシブルディスク・ドライブ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、DVD2095の他に、DVD又はCD等の光学記録媒体、MO等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワーク又はインターネットに接続されたサーバシステムに設けたハードディスク又はRAM等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ1900に提供してもよい。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。