JP2017182552A - 処理フロー生成システム、処理フロー生成方法、およびプログラム - Google Patents

処理フロー生成システム、処理フロー生成方法、およびプログラム Download PDF

Info

Publication number
JP2017182552A
JP2017182552A JP2016070558A JP2016070558A JP2017182552A JP 2017182552 A JP2017182552 A JP 2017182552A JP 2016070558 A JP2016070558 A JP 2016070558A JP 2016070558 A JP2016070558 A JP 2016070558A JP 2017182552 A JP2017182552 A JP 2017182552A
Authority
JP
Japan
Prior art keywords
processing
change
unit
processing flow
selection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2016070558A
Other languages
English (en)
Inventor
大樹 栗原
Daiki Kurihara
大樹 栗原
達哉 増井
Tatsuya Masui
達哉 増井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Screen Holdings Co Ltd
Original Assignee
Screen Holdings Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Screen Holdings Co Ltd filed Critical Screen Holdings Co Ltd
Priority to JP2016070558A priority Critical patent/JP2017182552A/ja
Priority to PCT/JP2017/002419 priority patent/WO2017169023A1/ja
Publication of JP2017182552A publication Critical patent/JP2017182552A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/12Computing arrangements based on biological models using genetic models

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Biomedical Technology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Genetics & Genomics (AREA)
  • Evolutionary Biology (AREA)
  • Mathematical Physics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】適切な処理フローを迅速に生成することが可能な技術を提供する。【解決手段】複数の処理の順序を示す処理シーケンスと該複数の処理に係る1以上のパラメータの値とによってそれぞれ規定される第1処理フローおよび第2処理フローを含む複数の処理フローについて、処理シーケンスおよびパラメータの値の少なくとも一方を変更する変更処理、および変更処理によって得られた各処理フローに係る評価値の算出、該評価値に基づく複数の処理フローの取捨選択、が繰り返されることで、処理フローが生成される。ここで、変更処理には、第1処理フローと第2処理フローとの間において、パラメータの種類および該パラメータが取り得る値が共通する1以上の処理について、種類が対応する同一の数のパラメータの値が入れ替えられる交叉処理が含まれる。【選択図】図21

Description

本発明は、処理フロー生成システム、処理フロー生成方法およびプログラムに関する。
複数の処理によって構成される処理のフロー(処理フローとも言う)は、2つ以上の要素関数によって規定される処理のシーケンス(処理シーケンスとも言う)と、各要素関数に係るパラメータとの組合せによって規定され得る。
但し、複数の関数および各関数に係る複数のパラメータから生成され得る、2つ以上の関数と各関数に係るパラメータとについての組合せの数は膨大である。処理フローを開発するには、例えば、画像処理等の知識や経験が必要であり、これを自動的に行おうとすれば、膨大な試行錯誤が必要となり、演算に長時間を要してしまう。
ところで、進化的な計算手法としての遺伝的プログラミングが用いられて、2つ以上の要素関数によって構成される処理シーケンスが自動的に生成される技術が知られている(例えば、特許文献1等)。また、処理シーケンスを構成する個々の要素関数については、例えば、進化的な計算手法としての遺伝的アルゴリズムによってパラメータが自動的に最適化される技術が知られている。そして、例えば、進化的な計算手法としての遺伝的アルゴリズムおよび遺伝的プログラミングの両方が用いられて、処理フローが自動的に最適化される技術が提案されている(例えば、特許文献1,2等)。
特許第4862150号明細書 特開2015−230702号公報
ところで、上記特許文献1の技術では、処理シーケンスを規定する遺伝子の配列において各遺伝子の要素にパラメータが追加されている。
しかしながら、該特許文献1には、進化的な計算の過程で、遺伝子の要素とともにパラメータが世代交代する形態が挙げられているが、該形態では、遺伝子の要素が維持されたままで、パラメータがより好適なものに置換されるような進化は起こらない。また、該特許文献1では、遺伝子の要素とパラメータとが別々に世代交代する形態が挙げられているが、該形態では、ある遺伝子の要素に対してパラメータが好適化されても、次の世代では遺伝子の要素の変更によって、パラメータが好適なものでなくなってしまう場合がある。このため、処理フローが効率的には最適化され難く、演算量の増大を招く。
また、上記特許文献2の技術では、遺伝的プログラミングによる処理シーケンスの最適化が行われつつ、最適化される途中の各処理シーケンスについて、遺伝的アルゴリズムによるパラメータの最適化が行われる。
しかしながら、遺伝的プログラミングによって処理シーケンスを最適化するための演算処理のループの途中に、遺伝的アルゴリズムによってパラメータを最適化するための演算処理のループが含まれる、入れ子構造のような2重のループの処理によって演算量の増大を招く。
したがって、上記特許文献1,2の技術では、演算量の低減による演算処理の迅速化について、改善の余地がある。
本発明は、上記課題に鑑みてなされたものであり、適切な処理フローを迅速に生成することが可能な技術を提供することを目的とする。
上記課題を解決するために、第1の態様に係る処理フロー生成システムは、記憶部と、処理部と、を備え、前記記憶部は、入力データおよび目標データを記憶し、前記処理部は、複数の処理の順序を示す処理シーケンスと該複数の処理に係る1以上のパラメータの値とによってそれぞれ規定される第1処理フローおよび第2処理フローを含む複数の処理フローを取得する取得部と、前記第1処理フローと前記第2処理フローとの間において、パラメータの種類および該パラメータが取り得る値が共通する1以上の処理を検出する検出部と、各前記処理フローについて、予め設定された第1変更ルールに従って前記処理シーケンスの少なくとも一部の処理を変更する第1変更処理、および予め設定された第2変更ルールに従って前記1以上のパラメータの値のうちの少なくとも一部のパラメータの値を変更する第2変更処理を実施する変更部と、前記変更部によって前記第1変更処理および前記第2変更処理の少なくとも一方の変更処理が施された後の各前記処理フローについて、前記入力データに該処理フローに従った処理が施されることで得られる出力データと、前記目標データとの差異に応じた評価値を算出する評価部と、各前記処理フローに係る前記評価値に基づいて、前記複数の処理フローについて取捨選択を行う取捨選択部と、を有し、前記第2変更処理が、前記検出部によって前記第1処理フローから検出された1以上の処理における1以上のパラメータと、前記検出部によって前記第2処理フローから検出された1以上の処理における1以上のパラメータとの間において、種類が対応する同一の数のパラメータの値が入れ替えられる交叉処理を含み、前記処理部において、前記取捨選択部による前記取捨選択が行われた後における、前記変更部による前記第1変更処理および前記第2変更処理のうちの少なくとも一方の変更処理の実施、該変更部による前記少なくとも一方の変更処理によって得られた各処理フローに係る前記評価値の前記評価部による算出、および前記取捨選択部による該評価値に基づく前記取捨選択の実行、が繰り返されることで、前記出力データと前記目標データとの差異が低減される。
第2の態様に係る処理フロー生成システムは、第1の態様に係る処理フロー生成システムであって、前記検出部は、前記第1処理フローと前記第2処理フローとの間において、パラメータの種類および該パラメータが取り得る値が共通するとともに、1つの処理あるいは1つの処理と該1つの処理を行うためのデータを得る順序が同一の全ての処理とを含む2以上の処理、によって構成される部分的な処理シーケンスを検出し、前記第2変更処理が、前記第1処理フローにおいて前記部分的な処理シーケンスを構成する1以上の処理に係る1以上のパラメータと、前記第2処理フローにおいて前記部分的な処理シーケンスを構成する1以上の処理に係る1以上のパラメータとの間において、種類が対応する同一の数のパラメータの値が入れ替えられる交叉処理を含む。
第3の態様に係る処理フロー生成システムは、第2の態様に係る処理フロー生成システムであって、前記第1処理フローと前記第2処理フローとの間において、前記部分的な処理シーケンスは同一である。
第4の態様に係る処理フロー生成システムは、第1の態様に係る処理フロー生成システムであって、前記第1処理フローと前記第2処理フローとの間において、前記検出部によって検出される1以上の処理は、同種の処理である。
第5の態様に係る処理フロー生成システムは、第1から第4の何れか1つの態様に係る処理フロー生成システムであって、前記処理部は、予め設定された判定ルールに従って、前記変更部において前記第1変更処理および前記第2変更処理のうちの何れの変更処理を実行するのか判定する判定部、を更に有し、前記処理部において、前記取捨選択部による前記取捨選択が行われた後における、前記判定部による判定結果に従った前記変更部による前記変更処理の実施、該変更部による前記変更処理によって得られた各処理フローに係る前記評価値の前記評価部による算出、および前記取捨選択部による該評価値に基づく前記取捨選択の実行、が繰り返されることで、前記出力データと前記目標データとの差異が低減される。
第6の態様に係る処理フロー生成システムは、記憶部と、処理部と、を備え、前記記憶部は、入力データおよび目標データを記憶し、前記処理部は、複数の処理の順序を示す処理シーケンスと、該複数の処理に係る1以上のパラメータの値とによってそれぞれ規定される複数の処理フローを取得する取得部と、各前記処理フローについて、予め設定された第1変更ルールに従って前記処理シーケンスの少なくとも一部の処理を変更する第1変更処理、および予め設定された第2変更ルールに従って前記1以上のパラメータの値の少なくとも一部の値を変更する第2変更処理を実施する変更部と、予め設定された判定ルールに従って、前記変更部において前記第1変更処理および前記第2変更処理のうちの何れの変更処理を実行するのか判定する判定部と、前記変更部によって前記変更処理が施された後の各前記処理フローについて、前記入力データに該処理フローに従った処理が施されることで得られる出力データと、前記目標データとの差異に応じた評価値を算出する評価部と、各前記処理フローに係る前記評価値に基づいて、前記複数の処理フローについて取捨選択を行う取捨選択部と、を有し、前記処理部において、前記取捨選択部による前記取捨選択が行われた後における、前記判定部による判定結果に従った前記変更部による前記第1変更処理および前記第2変更処理のうちの何れか一方の変更処理の実施、該変更部による前記変更処理によって得られた各処理フローに係る前記評価値の前記評価部による算出、および前記取捨選択部による該評価値に基づく前記取捨選択の実行、が繰り返されることで、前記出力データと前記目標データとの差異が低減される。
第7の態様に係る処理フロー生成システムは、第6の態様に係る処理フロー生成システムであって、前記変更部は、前記第1変更処理を実施した後に、該第1変更処理による前記処理シーケンスの変更に合わせて、該処理シーケンスとともに処理フローを規定している前記1以上のパラメータの値を変更する。
第8の態様に係る処理フロー生成システムは、第5から第7の何れか1つの態様に係る処理フロー生成システムであって、前記判定部は、乱数を発生させ、該乱数と閾値との関係に基づいて、前記変更部において前記第1変更処理および前記第2変更処理のうちの何れの変更処理を実行するのか判定する。
第9の態様に係る処理フロー生成システムは、第5から第7の何れか1つの態様に係る処理フロー生成システムであって、前記判定ルールは、1以上の前記第1変更処理および1以上の前記第2変更処理についての順序を規定しているルールを含む。
第10の態様に係る処理フロー生成システムは、第1から第9の何れか1つの態様に係る処理フロー生成システムであって、前記第1変更処理が、遺伝的プログラミングを用いた進化的計算を行う処理を含み、前記第2変更処理が、遺伝的アルゴリズムを用いた進化的計算を行う処理を含む。
第11の態様に係る処理フロー生成方法は、記憶部と、処理部と、を備えた情報処理システムにおける処理フローを生成する処理フロー生成方法であって、前記記憶部は、入力データおよび目標データを記憶し、前記処理部は、複数の処理の順序を示す処理シーケンスと該複数の処理に係る1以上のパラメータの値とによってそれぞれ規定される第1処理フローおよび第2処理フローを含む複数の処理フローを取得する取得工程と、前記第1処理フローと前記第2処理フローとの間において、パラメータの種類および該パラメータが取り得る値が共通する1以上の処理を検出する検出工程と、各前記処理フローについて、予め設定された第1変更ルールに従って前記処理シーケンスの少なくとも一部の処理を変更する第1変更処理、および予め設定された第2変更ルールに従って前記1以上のパラメータの値のうちの少なくとも一部のパラメータの値を変更する第2変更処理のうちの少なくとも一方の変更処理を実施する変更工程と、前記変更工程における前記第1変更処理および前記第2変更処理の少なくとも一方の変更処理が施された後の各前記処理フローについて、前記入力データに該処理フローに従った処理が施されることで得られる出力データと、前記目標データとの差異に応じた評価値を算出する評価工程と、各前記処理フローに係る前記評価値に基づいて、前記複数の処理フローについて取捨選択を行う取捨選択工程と、を有する情報処理を実行し、前記変更工程における前記第2変更処理が、前記検出工程において前記第1処理フローから検出された1以上の処理における1以上のパラメータと、前記検出工程において前記第2処理フローから検出された1以上の処理における1以上のパラメータとの間において、種類が対応する同一の数のパラメータの値が入れ替えられる交叉処理を含み、前記処理部によって、前記取捨選択工程における前記取捨選択の実行後における、前記変更工程における前記第1変更処理および前記第2変更処理のうちの少なくとも一方の変更処理の実施、該変更工程における前記少なくとも一方の変更処理によって得られた各処理フローに係る前記評価値の前記評価工程における算出、および前記取捨選択工程における該評価値に基づく前記取捨選択の実行、が繰り返されることで、前記出力データと前記目標データとの差異が低減される。
第12の態様に係る処理フロー生成方法は、記憶部と、処理部と、を備えた情報処理システムにおける処理フローを生成する処理フロー生成方法であって、前記記憶部は、入力データおよび目標データを記憶し、前記処理部は、複数の処理の順序を示す処理シーケンスと、該複数の処理に係る1以上のパラメータの値とによってそれぞれ規定される複数の処理フローを取得する取得工程と、予め設定された判定ルールに従って、各前記処理フローについて、予め設定された第1変更ルールに従って前記処理シーケンスの少なくとも一部の処理を変更する第1変更処理、および予め設定された第2変更ルールに従って前記1以上のパラメータの値の少なくとも一部の値を変更する第2変更処理のうちの何れの変更処理を実施するのか判定する判定工程と、前記判定工程における判定結果に応じて、各前記処理フローについて、前記第1変更処理および前記第2変更処理の何れかを実施する変更工程と、各前記処理フローについて、前記入力データに該処理フローに従った処理が施されることで得られる出力データと、前記目標データとの差異に応じた評価値を算出する評価工程と、各前記処理フローに係る前記評価値に基づいて、前記複数の処理フローの取捨選択を行う取捨選択工程と、を有する情報処理を実行し、前記処理部によって、前記取捨選択工程における前記取捨選択が行われた後に、前記判定工程における判定結果に従った前記変更工程における前記第1変更処理および前記第2変更処理のうちの何れか一方の変更処理の実施、該変更工程における前記変更処理によって得られた各処理フローについての前記評価工程における前記評価値の算出、および前記取捨選択工程における該評価値に基づく前記取捨選択の実行、が繰り返されることで、前記出力データと前記目標データとの差異が低減される。
第13の態様に係るプログラムは、情報処理システムに含まれる処理部によって実行されることで、該情報処理システムを、第1から第10の何れか1つの態様に係る処理フロー生成システムとして機能させる。
第1から第10の何れの態様に係る処理フロー生成システムによっても、例えば、パラメータ値の最適化を図るための演算が効率良く行われることで、演算量が低減されるため、適切な処理フローが迅速に生成され得る。
第2および第3の何れの態様に係る処理フロー生成システムによっても、例えば、2つの処理フローの間において、類似した部分的な処理シーケンスについて、パラメータ値の入れ替えが行われることで、パラメータ値の最適化が迅速に行われ得る。
第3の態様に係る処理フロー生成システムによれば、例えば、2つの処理フローの間において、同一の部分的な処理シーケンスについて、パラメータ値の入れ替えが行われることで、パラメータ値の最適化が非常に迅速に行われ得る。
第4の態様に係る処理フロー生成システムによれば、例えば、2つの処理フローの間において、種類が共通している1つ以上の処理について、パラメータ値の入れ替えが行われることで、パラメータ値の最適化が迅速に行われ得る。
第5および第6の何れの態様に係る処理フロー生成システムによっても、例えば、処理シーケンスの変更とパラメータ値の変更とが同時期にバランス良く行われ得るため、演算量が低減され、適切な処理フローが迅速に生成され得る。
第7の態様に係る処理フロー生成システムによれば、例えば、処理シーケンスの変更に合わせてパラメータ値も変更されるため、進化処理における無駄な演算が低減され、パラメータ値の最適化が迅速に行われ得る。
第8および第9の何れの態様に係る処理フロー生成システムによっても、例えば、処理シーケンスの変更とパラメータ値の変更とが、容易にバランス良く実行され得る。
第11の態様に係る処理フロー生成方法によれば、例えば、パラメータ値の最適化を図るための演算が効率良く行われることで、演算量が低減され、適切な処理フローが迅速に生成され得る。
第12の態様に係る処理フロー生成方法によれば、例えば、処理シーケンスの変更とパラメータ値の変更とが同時期にバランス良く行われ得るため、演算量が低減され、適切な処理フローが迅速に生成され得る。
第13の態様に係るプログラムによれば、例えば、第1から第10の態様に係るフロー生成システムと同様な効果が得られる。
処理フロー生成システムの一例を概略的に示すブロック図である。 処理部における機能的な構成の一例を概略的に示すブロック図である。 複数の個体のそれぞれにおける構成の一例を示す図である。 処理シーケンスを示すGP遺伝子のツリー構造の一例を示す図である。 2つのツリー構造の間でGP交叉処理が行われる一例を示す図である。 2つのツリー構造の間でGP交叉処理が行われる一例を示す図である。 ツリー構造でGP突然変異処理が行われる一例を示す図である。 ツリー構造でGP突然変異処理が行われる一例を示す図である。 GP突然変異処理に伴ってGA遺伝子が更新される一例を示す図である。 処理フロー生成システムの動作フローの一例を示すフローチャートである。 処理フロー生成システムの動作フローの一例を示すフローチャートである。 処理フロー生成システムの動作フローの一例を示すフローチャートである。 入力画像としての原画像の一例を示す図である。 目標画像の一例を示す図である。 処理フローを生成するシミュレーションの条件の一例を示す図である。 処理フローを生成するシミュレーションの条件の一例を示す図である。 処理フローを生成するシミュレーションの条件の一例を示す図である。 処理フローを生成するシミュレーションの条件の一例を示す図である。 処理フローの生成に係る世代数と評価値との関係の具体例を示す図である。 処理フローの生成に係る世代数と評価値との関係の参考例を示す図である。 処理部における機能的な構成の一例を概略的に示すブロック図である。 第1個体の構造の一例を示す図である。 第1個体の構造の一例を示す図である。 第1個体の構造の一例を示す図である。 第2個体の構造の一例を示す図である。 第2個体の構造の一例を示す図である。 第2個体の構造の一例を示す図である。 2つのツリー構造の間でGP交叉処理が行われる一例を示す図である。 2つのツリー構造の間でGP交叉処理が行われる一例を示す図である。 2つのツリー構造の間でGP交叉処理が行われる一例を示す図である。 2つのツリー構造の間でGP交叉処理が行われる一例を示す図である。 ツリー構造でGP突然変異処理が行われる一例を示す図である。 ツリー構造でGP突然変異処理が行われる一例を示す図である。 個体のツリー構造から部分ツリー構造が検出される一例を示す図である。 個体のツリー構造から部分ツリー構造が検出される一例を示す図である。 個体のツリー構造から部分ツリー構造が検出される一例を示す図である。 個体のツリー構造から部分ツリー構造が検出される一例を示す図である。 個体のツリー構造から部分ツリー構造が検出される一例を示す図である。 個体のツリー構造から部分ツリー構造が検出される一例を示す図である。 個体のツリー構造から部分ツリー構造が検出される一例を示す図である。 個体のツリー構造から部分ツリー構造が検出される一例を示す図である。 2つの処理フローの間において類似部分処理シーケンスが検出される一例を示す図である。 2つの処理フローの間において類似部分処理シーケンスが検出される一例を示す図である。 2つの処理フローの間で共通処理部分が検出される一例を示す図である。 2つの処理フローの間で共通処理部分が検出される一例を示す図である。 類似処理部分に係る対応GA遺伝子が生成される一例を示す図である。 類似処理部分に係る対応GA遺伝子が生成される一例を示す図である。 類似処理部分に係る対応GA遺伝子が生成される一例を示す図である。 類似処理部分に係る対応GA遺伝子が生成される一例を示す図である。 一対の対応GA遺伝子の間でGA交叉処理が行われる一例を示す図である。 対応GA遺伝子におけるGA突然変異処理の一例を示す図である。 処理フロー生成システムの動作フローの一例を示すフローチャートである。 処理フロー生成システムの動作フローの一例を示すフローチャートである。 処理フロー生成システムの動作フローの一例を示すフローチャートである。
以下、本発明の実施形態の一例および各種変形例を図面に基づいて説明する。なお、図面においては同様な構成および機能を有する部分については同じ符号が付されており、下記説明では重複説明が省略される。また、図面は模式的に示されたものであり、各図における各種構造のサイズおよび位置関係等は正確に図示されたものではない。
<(1)処理フロー生成システム>
<(1−1)処理フロー生成システムの構成>
図1は、処理フロー生成システム10として機能する情報処理システム1の一例を概略的に示すブロック図である。
処理フロー生成システム10は、例えば、複数の処理によって構成される処理のフロー(処理フローとも言う)を生成することができる。処理フローは、例えば、2つ以上の要素としての2つ以上の処理の関数(要素関数とも言う)を含む処理のシーケンス(処理シーケンスとも言う)と、各要素関数に係る引数(パラメータ)との組合せによって規定され得る。ここで、例えば、要素関数が、画像処理を規定する関数であれば、処理フローは、画像処理を行うフロー(画像処理フローとも言う)となり得る。
ここで、画像処理を規定する関数には、例えば、平滑化フィルタなどの各種画像処理を規定する関数が含まれ得る。また、画像処理フローには、例えば、製造現場で製造された各種部品等において生じる欠陥を検出する画像処理フロー、および生体の細胞における形態の変質等を検出する画像処理フロー等が含まれ得る。
情報処理システム1は、例えば、コンピューター等で構成され、バスラインBs1を介して接続された、入力部11、出力部12、記憶部13、制御部14およびドライブ15を備えている。
入力部11は、例えば、情報処理システム1を使用するユーザーの動作等に応じた信号を入力することができる。入力部11には、例えば、ユーザーの操作に応じた信号を入力可能なマウスおよびキーボード等を含む操作部、ユーザーの音声に応じた信号を入力可能なマイク、ユーザーの動きに応じた信号を入力可能なセンサー、および外部の機器からの信号を入力可能な通信部等が含まれ得る。
出力部12は、各種情報を出力することができる。出力部12には、例えば、各種情報をユーザーが認識可能な態様で出力可能な表示部およびスピーカー、ならびに各種情報をデータの形式で出力可能な通信部等が含まれ得る。該表示部は、例えば、入力部11と一体化されたタッチパネルの形態を有していても良い。スピーカーでは、各種情報が可聴的に出力され得る。通信部では、各種情報が情報処理システム1の外部に配された各種機器に対してデータの形式で出力され得る。該通信部は、例えば、通信回線を介して各種外部装置との間においてデータを授受することができる。
記憶部13は、各種の情報を記憶することができる。該記憶部13、例えば、ハードディスクおよびフラッシュメモリ等の記憶媒体によって構成され得る。記憶部13では、例えば、1つの記憶媒体を有する構成、2つ以上の記憶媒体を一体的に有する構成、ならびに2つ以上の記憶媒体を2つ以上の部分に分けて有する構成の何れの構成が採用されても良い。
記憶部13には、例えば、プログラムP1およびその他の各種データが記憶され得る。各種データには、例えば、処理フローを生成するためのデータ(生成用データとも言う)が含まれる。生成用データには、例えば、入力データおよび目標データが含まれ得る。ここで、例えば、処理フローが、画像処理フローであれば、入力データには、1つ以上の原画像のデータ(原画像データとも言う)が含まれ得る。このとき、例えば、目標データには、原画像データに対して各種画像処理が施されることで得られる目標とする画像のデータ(目標画像データとも言う)が含まれ得る。なお、記憶部13には、後述するメモリ14bが含まれても良い。
制御部14は、例えば、プロセッサーとして働く処理部14aおよび情報を一時的に記憶するメモリ14b等を含む。処理部14aとしては、例えば、中央演算部(CPU)等の電子回路が採用され、メモリ14bとしては、例えば、ランダムアクセスメモリ(RAM)などが採用され得る。制御部14において、例えば、記憶部13に記憶されているプログラムP1が処理部14aに読み込まれて実行されることで、情報処理システム1が処理フロー生成システム10として機能し得る。なお、制御部14における各種情報処理によって一時的に得られる各種情報は、適宜メモリ14b等に記憶され得る。
ドライブ15は、例えば、可搬性の記憶媒体SM1の脱着が可能な部分である。ドライブ15では、例えば、記憶媒体SM1が装着されている状態で、該記憶媒体SM1と制御部14との間におけるデータの授受が行われ得る。また、プログラムP1が記憶された記憶媒体SM1がドライブ15に装着されることで、記憶媒体SM1から記憶部13内にプログラムP1が読み込まれて記憶される態様が採用されても良い。
そして、処理フローを生成する方法(処理フロー生成方法とも言う)には、例えば、第1生成方法および第2生成方法が含まれ得る。これらの何れの生成方法によっても、適切な処理フローを迅速に生成することが可能な処理フロー生成システム10が実現され得る。
処理フロー生成システム10では、例えば、第1生成方法および第2生成方法のうちの少なくとも一方の生成方法に従って処理フローが生成され得る。以下、第1生成方法および第2生成方法について、順に説明する。
<(1−2)第1生成方法>
<(1−2−1)第1生成方法に係る機能的な構成>
図2は、処理部14aにおける機能的な構成の一例を概略的に示すブロック図である。換言すれば、図2では、処理部14aにおいて、プログラムP1の実行によって実現される第1生成方法に係る各種機能が例示されている。
処理部14aは、実現される機能的な構成として、取得部141と、評価部142、取捨選択部143と、判定部144と、進化計算部145と、決定部146とを有している。これらの各部141〜146での処理におけるワークスペースとして、例えば、メモリ14bが使用される。
<(1−2−1−1)取得部>
取得部141は、例えば、複数の処理フローを取得することができる。本実施形態では、取得部141は、複数の処理フローを生成することができる。各処理フローは、例えば、複数の処理の順序を示す処理シーケンスと、該複数の処理に係る1つ以上のパラメータの値(パラメータ値とも言う)によって規定され得る。複数の処理には、例えば、パラメータを有する処理と、パラメータを有していない処理とが含まれ得る。複数の処理の順序は、例えば、処理を行う時間的な順序を含む。なお、複数の処理の順序は、例えば、ある処理が実行されなければ、次の処理を実行することができないと言った理由から規定され得る。
ここで、処理シーケンスは、例えば、遺伝的プログラミング(GP)に係る表現に従った遺伝子(GP遺伝子とも言う)によって示され得る。また、1つ以上のパラメータ値は、例えば、遺伝的アルゴリズム(GA)に係る表現に従った遺伝子(GA遺伝子とも言う)によって示され得る。該GA遺伝子は、例えば、GP遺伝子で示される処理におけるパラメータ(フィルタのサイズおよび閾値等)の値を規定することができる。このため、各処理フローは、例えば、GP遺伝子とGA遺伝子との組を有する個体によって表現され得る。つまり、取得部141では、例えば、GP遺伝子とGA遺伝子との組を有する初期の個体(初期個体とも言う)が生成され得る。
図3は、複数の個体In1〜InN(Nは自然数)のそれぞれにおける構成の一例を示す図である。図3には、取得部141で生成されるN個の個体In1〜InNが示されている。ここで、Nは、予め設定される特定数であれば良く、例えば、10〜20に設定され得る。そして、M番目(Mは1〜Nの自然数)の個体InMは、GP遺伝子GpMとGA遺伝子GaMとの組を有する。
取得部141では、例えば、予め準備された数十種類から数百種類の関数の中から、ランダムに数個から50個程度の関数が選出され、選出された複数の関数によってGP遺伝子GpMが設定される。複数の関数の中からの関数のランダムな選出は、例えば、乱数の発生に応じて得られた数に対応する関数が選出されることで実現され得る。
図3の例では、1番目の個体In1のGP遺伝子Gp1が、要素関数f11〜f14と入力されるデータ(ここでは、原画像データA)D1aによって構成されている。また、2番目の個体In2のGP遺伝子Gp2が、要素関数f21,f22と入力されるデータ(ここでは、原画像データA,B)D2a,D2bによって構成されている。また、N番目の個体InNのGP遺伝子GpNが、要素関数fN1〜fN3と入力されるデータ(ここでは、原画像データA)DNaによって構成されている。
ところで、M番目のGP遺伝子GpMは、例えば、原画像データの入力と要素関数による処理とがツリー構造で表現され得る。
図4は、GP遺伝子GpMの一例としての2番目のGP遺伝子Gp2に係るツリー構造の一例を示す図である。
図4の例では、要素関数f21のノードNd1、原画像に係る原画像データAの入力を規定するノードNd2、要素関数f22による処理を規定するノードNd3および原画像に係る原画像データBの入力を規定するノードNd4が記述されている。そして、ノードNd1に対してノードNd2およびノードNd3がそれぞれアーク(エッジとも言う)で結ばれ、ノードNd3に対してノードNd4がアークで結ばれている。つまり、GP遺伝子Gp2では、原画像データBを用いた要素関数f22の画像処理、ならびに原画像データAと要素関数f22の画像処理の結果として得られた画像データとを用いた要素関数f21の画像処理が規定されている。このように、各GP遺伝子GpMでは、例えば、処理シーケンスが、画像データの入力を葉とし、要素関数による処理を節とするツリー構造で表現され得る。なお、ここでは、GP遺伝子GpMに係る引数についての情報が省略されている。
ところで、M番目のGP遺伝子GpMで規定される処理シーケンスは、例えば、関数の形態およびS式の形態で規定され得る。S式は、Lispと言うプログラミング言語で導入され、主にLispで用いられる、2分木またはリスト構造の形式的な記述方式である。
ここで、例えば、2番目のGP遺伝子Gp2は、関数の形態では、下記式(1)の形態で規定され、S式の形態では、下記式(2)の形態で規定され得る。
f21(A,f22(B))…(1)
(f21 A (f22 B))…(2)。
また、取得部141では、例えば、各個体InMのGP遺伝子GpMに含まれる全ての要素関数についてのパラメータの初期値が生成され得る。ここでは、各GP遺伝子GpMに含まれる1以上の要素関数には、例えば、パラメータを含む要素関数と、パラメータを含まない要素関数とが含まれ得る。このため、取得部141では、例えば、パラメータを含む各要素関数について、パラメータの初期値が生成され得る。これにより、GP遺伝子GpMに含まれる全ての要素関数に係るパラメータの値の群(パラメータ値群とも言う)PgMが生成され得る。なお、パラメータ値群PgMは、例えば、1つのパラメータ値、あるいは2つ以上のパラメータ値によって構成され得る。ここでは、例えば、パラメータの初期値がランダムに設定される。パラメータの初期値は、例えば、予め準備されたパラメータについての取り得る数値の範囲および刻み(刻み値とも言う)の情報に応じた数値の選択肢の中から、乱数の発生に応じて得られた数に対応する選択肢が選出されることで設定され得る。なお、ここでは、例えば、1つのGP遺伝子GpMにおいて同一種類の要素関数が2回採用される場合には、例えば、同一種類の2つ以上の要素関数が区別され、同一種類の各要素関数に対して、ランダムにパラメータの初期値が設定され得る。
図3の例では、1番目の個体In1のGP遺伝子Gp1に対して、要素関数f11に係るパラメータ値P11,P12、要素関数f12に係るパラメータ値P13、および要素関数f14に係るパラメータ値P14〜P16を含むパラメータ値群Pg1が設定されている。また、2番目の個体In2のGP遺伝子Gp2に対して、要素関数f21に係るパラメータ値P21、および要素関数f22に係るパラメータ値P22〜P24を含むパラメータ値群Pg2が設定されている。また、N番目の個体InNのGP遺伝子GpNに対して、要素関数fN1に係るパラメータ値PN1,PN2、および要素関数fN3に係るパラメータ値PN3〜PN5を含むパラメータ値群PgNが設定されている。
また、第1生成方法では、例えば、各GA遺伝子GaMに、N個の全ての個体In1〜InNにおけるGP遺伝子Gp1〜GpNの全ての要素関数に応じたパラメータ値が含まれる。具体的には、M番目のGA遺伝子GaMには、M番目のGP遺伝子GpMを構成する全ての要素関数についてのパラメータの具体的な値(パラメータ値)によって構成されるM番目のパラメータ値群PgMだけでなく、1番目からN番目のパラメータ値群Pg1〜PgNの全てが含まれる。但し、ここで、1番目からN番目のGA遺伝子Ga1〜GaNの間においては、M番目のGP遺伝子GpMを構成する全ての要素関数に応じたパラメータの種類および数は共通するものの、各パラメータの具体的な値(パラメータ値)が異なり得る。また、ここでは、各個体InMには、パラメータ値群PgMを構成する1以上のパラメータ値を含む1番目からN番目のパラメータ値群Pg1〜PgNに対応する全てのパラメータ値が1次元的に配列されて構成されるパラメータ値群が、GA遺伝子GaMとして含まれている。すなわち、各個体InMには、同一の長さを有するGA遺伝子GaMが含まれている。つまり、1番目からN番目のGA遺伝子Ga1〜GaNは、同一の長さを有し、1番目からN番目のGA遺伝子Ga1〜GaNの間で、相互に同種の要素関数に対するパラメータの値がならべられたものとなっているが、具体的なパラメータ値は、個体InM毎に異なり得る。
M番目の個体InMでは、例えば、GA遺伝子GaMのうち、M番目のGP遺伝子GpMの全ての要素関数と、該M番目のGP遺伝子GpMの全ての要素関数に係るM番目のパラメータ値群PgMに含まれる全てのパラメータ値とが関連付けられる。図3の例では、要素関数とパラメータ値との関連付けが、細線で描かれた矢印で示されている。つまり、図3においてM番目のGP遺伝子GpMの各要素関数から引き出された矢印によって各要素関数と関連付けられている1以上のパラメータ値が、M番目のGP遺伝子GpMを構成している各要素関数に係るパラメータについて、M番目の処理フローを実際に規定しているパラメータ値として使用される。一方、図3においてM番目のGP遺伝子GpMの各要素関数から引き出された矢印によって各要素関数と関連付けられていない残余のパラメータ値は、各GP遺伝子GpMを構成している各要素関数に係るパラメータについて、処理フローを実際に規定するために取り得る値(パラメータ値)の候補である。そして、これらのパラメータ値の候補は、例えば、1番目からN番目のGA遺伝子Ga1〜GaNの間で、GA交叉によってパラメータ値の入れ替えが生じることで、M番目の処理フローを実際に規定しているパラメータ値として使用されるようになる。なお、取得部141では、例えば、M番目のGP遺伝子GpMの各要素関数から引き出された矢印によって各要素関数とは関連付けられていない各パラメータ値群を構成する1以上のパラメータ値についても、初期値が生成される。
<(1−2−1−2)評価部>
評価部142は、例えば、各処理フローについて、入力データに処理フローに従った処理が施されることで得られるデータ(出力データとも言う)と、目標データとの差異に応じた値(評価値とも言う)を算出することができる。つまり、評価部142では、各個体InMについて、入力データを対象とした処理が施されることで出力データが得られ、該出力データと、目標データとの差異に応じた評価値が算出され得る。
入力データには、例えば、原画像データが含まれる。出力データには、例えば、1つ以上の原画像を用いた画像処理が施された後の画像(処理後画像とも言う)のデータ(処理後画像データとも言う)が含まれる。目標データには、例えば、入力データとしての原画像データに処理フローに従った画像処理が施されることで出力されるデータについて、目標としての画像データ(目標画像データとも言う)が含まれる。ここで、処理後画像データは、例えば、下記工程1および工程2が順に行われることで、原画像データと、M番目の個体InMにおける、GA遺伝子GaMおよびGP遺伝子GpMとから算出され得る。
[工程1]例えば、M番目のGP遺伝子GpMで規定される要素関数による処理の順序が認識される。ここでは、例えば、処理シーケンスを規定するGP遺伝子GpMが関数の形態で表現されている場合、処理シーケンスを規定する関数のうち、最後尾に記述された要素関数から前側に向かって要素関数による処理が順に認識されることで、処理の順序が認識され得る。例えば、処理フローを規定するGP遺伝子が、f1(A,f2(B),f3(f4(C)))の関数の形態で表現される場合を想定する。ここで、A,B,Cは、入力される原画像データを示している。該原画像データA,B,Cは、例えば、相互に同一である。なお、二種類以上の原画像データが準備される場合には、例えば、原画像データA,B,Cは、相互に異なる2つ以上の原画像データを含んでいても良い。また、f1,f2,f3,f4は、要素関数による処理を示す。この場合、処理順は、後ろから順に、「C,f4,f3,B,f2,A,f1」の順となる。ここでは、例えば、Cは、原画像データCの入力、Bは、原画像データBの入力、およびCは、原画像データCの入力をそれぞれ示している。
[工程2]工程1で求められた処理の順序に従って、原画像データから処理後画像データが生成される。このとき、例えば、各要素関数f1〜f4に係るパラメータについては、演算の対象となる要素関数に関連付けられているパラメータ値が、GA遺伝子GaMから読み出され得る。例えば、原画像データCに対して、要素関数f4の画像処理が施され、該要素関数f4の画像処理で得られた画像データに対して、要素関数f3の画像処理が施される。次に、原画像データBに対して、要素関数f2の画像処理が施される。そして、要素関数f3の画像処理で得られた画像データ、要素関数f2の画像処理で得られた画像データおよび原画像データAに対して、要素関数f1の画像処理が施される。これにより、処理後画像データが生成され得る。
ところで、出力データと目標データとの差異に応じた評価値は、例えば、処理後画像データと目標画像データとの差の絶対値の総和によって算出され得る。なお、評価値は、出力データが目標データに近づくように処理フローを適応させている度合いを示す値であるため、適応値とも称される。
例えば、原画像、処理後画像および目標画像のそれぞれについて、幅がw、高さがhであれば、画素の座標(x,y)は、0≦x<wおよび0≦y<hの条件を満たす。
このとき、例えば、原画像、処理後画像および目標画像の各画像における各画素の値が多数の画素値で表現されるのであれば、原画像をI(x,y)、処理後画像をO(x,y)、目標画像をT(x,y)および評価値をFとすると、評価値Fは、下記式(3)によって算出され得る。
F=1−(ΣΣ|O(x,y)−T(x,y)|)/(w×h×255)…(3)。
一方、例えば、原画像、処理後画像および目標画像の各画像における各画素の値が2つの画素値で表現されるのであれば、評価値Fは、下記式(4)によって算出され得る。
F=1−(相違画素数/全画素数)…(4)。
ここでは、相違画素数は、処理後画像O(x,y)と目標画像T(x,y)との間で、画素値が異なる画素の総数を示している。全画素数は、処理後画像O(x,y)および目標画像T(x,y)のそれぞれを構成している画素の総数を示している。
評価部142では、例えば、進化計算部145の変更部145cによって処理フローに変更処理が施される度に、変更処理後の各処理フローについて、評価値が算出され得る。これにより、例えば、処理フローを変更しながら最適化させている途中で、処理フローが、目標画像に対して適正なものとなっているか否かが、評価され得る。
なお、評価部142において評価値が算出される際には、例えば、画像を構成する領域毎に重要度に応じた重み付けがなされても良い。例えば、処理フローが、部品に欠陥が生じているか否かを検出することを目的とした画像処理を規定するものであれば、評価値が算出される際に、欠陥が生じ易い領域(欠陥多発領域とも言う)についての影響が大きくなるように、適宜重み付けがなされても良い。これにより、例えば、欠陥の検出精度が向上し得る。
例えば、原画像および目標画像について、欠陥が生じ易い欠陥多発領域が指定されていれば、下記式(5),(6)に従って、重みαが加味された評価値Fが算出され得る。ここでは、例えば、Fdは、欠陥領域に係る評価値であり、Fbは、背景領域に係る評価値である。係数Ewについては、実験によって予め最適値に設定され得る。ここでは、例えば、欠陥多発領域に係る評価値Fdに重みαが乗じられて得られる値と、該欠陥多発領域以外の領域(背景領域とも言う)に係る評価値Fbに重み(1−α)が乗じられて得られる値との和が、評価値Fとして算出され得る。
F=Fd×α+Fb×(1−α)…(5)
α=(欠陥多発領域の画素数)/(Ew×背景領域の画素数+欠陥多発領域の画素数)…(6)。
<(1−2−1−3)取捨選択部>
取捨選択部143は、例えば、評価部142で算出された各処理フローに係る評価値に基づいて、複数の処理フローの取捨選択を行うことができる。取捨選択部143では、例えば、評価値が基準値に近い処理フローが残存するように、複数の処理フローについての取捨選択が行われる。基準値は、例えば、1に設定され得る。このような取捨選択によって、適正でない処理フローに係る個体が淘汰され得る。
具体的には、取捨選択部143では、例えば、ルーレット方式で、評価値が基準値に近い処理フローが選択される確率が高く設定されて、処理フローをそれぞれ示すN個の個体In1〜InNから、N個の処理フローが選出される。例えば、処理フローをそれぞれ示す10個の個体In1〜In10から、10個の個体が選出される。このとき、評価値が基準値に近い順に、ルーレットを占める確率が、例えば、25%、20%、15%、12%、10%、7%、5%、3%、2%、1%などと言った具合に設定され得る。ここでは、N個の個体In1〜InNからN個の処理フローが選出される際には、例えば、同一の処理フローが2回以上選出され得る。
<(1−2−1−4)判定部>
判定部144は、例えば、予め設定された判定ルールに従って、変更部145cにおいて、第1変更処理および第2変更処理のうちの何れの変更処理を実行するのか判定することができる。つまり、判定部144は、N個の個体In1〜InNを進化させる処理を決定することができる。
ここで、第1変更処理は、例えば、GP遺伝子GpMを変更する処理、すなわち、遺伝的プログラミング(GP)を用いた進化的計算を行う処理(GP進化処理とも言う)を含む。このGP進化処理により、GP遺伝子GpMを進化させることができる。第2変更処理は、例えば、GA遺伝子GaMを変更する処理、すなわち、遺伝的アルゴリズム(GA)を用いた進化的計算を行う処理(GA進化処理とも言う)を含む。このGA進化処理により、GA遺伝子GaMを進化させることができる。
判定部144では、例えば、乱数を発生させ、該乱数と閾値との関係に基づいて、変更部145cにおいて第1変更処理および第2変更処理のうちの何れの変更処理を実行するのか判定され得る。これにより、例えば、処理シーケンスの変更とパラメータ値の変更とが、容易にバランス良く実行され得る。
このとき、予め設定された判定ルールには、例えば、乱数を発生させ、該乱数と閾値との大小関係に基づいて、第1変更処理および第2変更処理のうちの何れの変更処理を変更部145cに実行させるのかを規定するルール等が含まれ得る。
例えば、次のような判定ルールが考えられ得る。まず、例えば、所定の値域が、閾値を境界として、一方の領域(第1領域とも言う)が第1変更処理に対応し、他方の領域(第2領域とも言う)が第2変更処理に対応するように、2種類の領域に区分けされる。そして、例えば、発生させた乱数が、第1領域に属していれば、第1変更処理を実行させ、発生させた乱数が、第2領域に属していれば、第2変更処理を実行させるものと判定される。
具体的には、例えば、第1変更処理としてのGP進化処理が実行される確率(GP確率とも言う)Pgp、および第2変更処理としてのGA進化処理が実行される確率(GA確率とも言う)Pgaが、閾値を規定する数値として採用され得る。ここで、例えば、GP確率PgpとGA確率Pgaとは、下記の式(7)から式(9)の関係式を満たすものとする。
0≦Pgp≦1 …(7)
0≦Pga≦1 …(8)
Pgp+Pga=1 …(9)。
GP確率PgpおよびGA確率Pgaは、例えば、固定値であっても良いし、予め設定されたルールに沿って変更されていく値であっても良いし、発生される乱数によって規定されても良い、なお、N個の個体In1〜InNの進化が進むにつれて、例えば、GA確率Pgaが、徐々に高まるような設定であっても良い。換言すれば、例えば、判定部144における判定回数が大きくなるにつれて、第1変更処理としてのGA進化処理が実行される頻度が高まるように設定されても良い。
ここで、例えば、0〜1の範囲の値を取り得る確率変数Cvの値が、発生される乱数によって決まるものとする。このとき、確率変数Cvの値が、GA確率Pgaよりも大きければ、第1変更処理としてのGP進化処理が行われるものと判定され、確率変数Cvの値が、GA確率Pga以下であれば、第2変更処理としてのGA進化処理が行われるものと判定され得る。
また、判定部144では、例えば、ルーレット方式によって、変更部145cにおいて第1変更処理および第2変更処理のうちの何れの変更処理が実行されるのかが判定されても良い。この場合、例えば、ある値域の複数の値を示すルーレットが、第1変更処理に対応する第1領域と、第2変更処理に対応する第2領域とに区分され、発生させた乱数が第1領域に属せば、第1変更処理が実行され、該乱数が第2領域に属せば、第2変更処理が実行されるような判定方法が考えられる。ルーレットの値域は、例えば、第1領域が80%を占め、第2領域が20%を占めると言った具合に区分され得る。
<(1−2−1−5)進化計算部>
進化計算部145は、N個の個体In1〜InNをGP進化処理およびGA進化処理によって進化させる計算を実行することができる。進化計算部145では、GP進化処理またはGA進化処理が1回行われることで、N個の個体In1〜InNの1回の世代交代が行われる。
進化計算部145は、例えば、変更部145cを有している。該変更部145cは、例えば、第1変更処理としてのGP進化処理、および第2変更処理としてのGA進化処理を実行することができる。
[P1]GP進化処理.
GP進化処理では、例えば、各処理フローについて、予め設定された第1変更ルールに従って処理シーケンスの少なくとも一部の処理が変更され得る。具体的には、GP進化処理では、例えば、処理シーケンスをそれぞれ規定する各GP遺伝子GpMの少なくとも一部の処理が変更され得る。
1回のGP進化処理には、例えば、GP交叉処理、GP転移処理およびGP突然変異処理のうちの少なくとも1つの処理が含まれる。ここで、例えば、N個の個体In1〜InNで規定されるN個の処理シーケンスには、例えば、交叉の対象となる2つの処理シーケンスが含まれている。該2つの処理シーケンスには、例えば、1つの処理シーケンス(第1処理シーケンスとも言う)と該第1処理シーケンスとは異なる他の1つの処理シーケンス(第2処理シーケンスとも言う)が含まれる。
[P11]GP交叉処理.
GP交叉処理は、例えば、N個の個体In1〜InNで規定されるN個の処理シーケンスを規定するN個のGP遺伝子Pg1〜PgNにおいて、2つのGP遺伝子間で、少なくとも一部の処理が入れ替えられる処理である。このとき、例えば、一部の処理を規定する要素関数が、該要素関数に係るパラメータの値とともに入れ替えられる。換言すれば、GP交叉処理では、例えば、N個の個体In1〜InNで規定されるN個の処理シーケンスのうち、第1処理シーケンスにおける1つ以上の処理と、第2処理シーケンスにおける1つ以上の処理とが入れ替えられる。このとき、入れ替えられる1つ以上の処理に1つ以上のパラメータが規定されていれば、1つ以上の処理に関連付けられている1つ以上のパラメータの値も1つ以上の処理とともに入れ替えられる。
図5および図6は、2つのGP遺伝子Gpa,Gpb(a,bは、1〜Nの異なる自然数)で規定されるツリー構造の間においてGP交叉処理が行われる様子の一例を模式的に示す図である。
GP交叉処理では、図5および図6の例のように、一方のGP遺伝子Gpaのうちの一部の処理XAを構成する部分PT1と、他方のGP遺伝子Gpbのうちの一部の処理XBを構成する部分PT2とが入れ替えられる。
ここで、入れ替えの対象となる部分(入れ替え対象部分とも言う)には、例えば、1つの処理を規定するノードと該1つの処理において処理されるデータを示すノードが含まれる。つまり、入れ替え対象部分には、例えば、1つの処理と該1つの処理を行うためのデータの入力を示す部分、あるいは1つの処理と該1つの処理を行うためのデータを得るための全ての処理を含む部分が含まれ得る。具体的には、入れ替え対象部分には、例えば、ある1つの要素関数を規定する1つの節としての1つのノードと、該1つのノードから葉としてのノードに向けてアークで結ばれた全てのノードとが含まれる、部分的なツリー構造(部分ツリー構造とも言う)が含まれ得る。
この部分ツリー構造は、例えば、1つの処理と該1つの処理に対する1つ以上のデータの入力との組み合わせを規定することができ、1つの処理と該1つの処理を実行するためのデータを入力するための全ての処理とを含む2つ以上の処理を規定することもできる。
このような部分ツリー構造は、例えば、GP遺伝子で規定される全体の処理シーケンス(全体処理シーケンスとも言う)のうち、一部の部分的な処理シーケンス(部分処理シーケンスとも言う)を示すものであると言える。このため、入れ替えの対象となる処理には、例えば、1つ以上のノードで規定される1つ以上の処理が含まれ得る。そして、入れ替えの対象となる処理には、例えば、節としての1つのノードで規定される要素関数による処理と、該1つのノードから葉に向けてアークで結ばれた全てのノードで規定される要素関数による処理およびデータの入力とが含まれる。
ところで、入れ替え対象部分の間(例えば、部分PT1と部分PT2との間)では、例えば、ノードの数(すなわち、処理の数)およびノードの連結形態が、同一であっても、異なっていても良い。また、GP交叉処理において、GP遺伝子のうちの入れ替え対象部分の位置は、例えば、発生される乱数等によって適宜ランダムに指定され得る。
なお、図5および図6では図示を省略しているが、2つのGP遺伝子間において、部分PT1と部分PT2とが入れ替わる際には、部分PT1に含まれる要素関数に係るパラメータ値群と、部分PT2に含まれる要素関数に係るパラメータ値群とが入れ替えられる。また、2つのGP遺伝子間において、例えば、少なくとも一方のGP遺伝子において入れ替えられる対象の部分が、GP遺伝子の全体であっても良い。すなわち、2つのGP遺伝子間において、例えば、少なくとも一方のGP遺伝子において入れ替えられる対象の部分が、少なくとも1つの処理を規定する1つ以上のノードを含んでいれば良い。
ところで、図5および図6のGP交叉処理の例を、関数の形態で示すと、GP遺伝子であるfa(・・・fA(XA))と、fb(・・・fB(XB))との間でGP交叉処理が行われることで、これらのGP遺伝子が、fa(・・・fA(XB))と、fb(・・・fB(XA))に変更される。
[P12]GP転移処理.
GP転移処理は、例えば、N個の個体In1〜InNで規定されるN個の処理シーケンスを規定するN個のGP遺伝子Pg1〜PgNにおいて、2つのGP遺伝子間で、一部の処理が、一方のGP遺伝子から他方のGP遺伝子に移動される処理である。このとき、例えば、一部の処理を規定する要素関数が、該要素関数に係るパラメータの値とともに移動される。換言すれば、GP転移処理では、例えば、N個の個体In1〜InNで規定されるN個の処理シーケンスのうち、第2処理シーケンスの1つ以上の処理の位置に、第1処理シーケンスの1つ以上の処理が移動される。このとき、移動対象の1つ以上の処理に1つ以上のパラメータが関連付けられている場合には、1つ以上の処理は、該1つ以上の処理に関連付けられている1つ以上のパラメータの値とともに移動される。
[P13]GP突然変異処理.
GP突然変異処理は、例えば、N個の個体In1〜InNで規定されるN個の処理シーケンスを規定するN個のGP遺伝子Pg1〜PgNにおいて、少なくとも1つのGP遺伝子において、一部の処理が、異なる1つ以上の処理に置き換えられる処理である。換言すれば、GP突然変異処理では、例えば、N個の個体In1〜InNで規定されるN個の処理シーケンスのうち、ある処理シーケンスに含まれる1つ以上の処理が、該1つ以上の処理とは異なる他の1つ以上の処理に突然置き換えられる。
図7および図8は、M番目のGP遺伝子GpMで規定されるツリー構造においてGP突然変異処理が行われる様子の一例を模式的に示す図である。
GP突然変異処理では、図7から図8の例のように、あるGP遺伝子Gpaにおける一部の処理XAを含む部分PT1が、他の1つ以上の処理Xmを含む部分PTmに置き換えられる。
ここで、突然変異の対象としての部分(突然変異対象部分とも言う)には、例えば、1つ以上のノードによって規定される1つ以上の処理が含まれていれば良い。突然変異対象部分は、例えば、部分ツリー構造であっても良い。ここでは、例えば、置き換え前後の部分PT1と部分PTmとの間において、ノードの数(すなわち、処理の数)およびノードの連結形態が、同一であっても、異なっていても良い。なお、GP突然変異処理において、GP遺伝子のうちの突然変異対象部分の位置は、例えば、発生される乱数等によって適宜ランダムに指定され得る。
ところで、図7および図8の例におけるGP突然変異処理は、例えば、関数の形態であれば、GP遺伝子であるfa(・・・fA(XA))が、fa(・・・fA(Xm))に変更される処理として表現され得る。
[P14]パラメータ値の更新処理.
変更部145cは、例えば、第1変更処理としてのGP進化処理を実行した後に、該第1変更処理によって変更された処理シーケンスの変更に合わせて、該処理シーケンスとともに処理フローを規定しているパラメータ値群を更新することができる。
ここでは、例えば、各個体InMにおいて、GP遺伝子GpMを構成する全ての要素関数に係るパラメータ値群が、第1変更処理の実施前における旧GA遺伝子GaMから取り出され、新しいGA遺伝子GaMにおいて配列し直される。このとき、例えば、1番目からN番目のGA遺伝子Ga1〜GaNが、1番目からN番目のGA遺伝子Ga1〜GaNの間で、相互に同種の要素関数に対する同数のパラメータの値がならべられており、同一の長さを有するように調整される。
このとき、例えば、GP交叉処理およびGP転移処理等によって、各個体InMにおいて要素関数が変更された部分については、要素関数の移動に応じて、GA遺伝子GaMにおけるパラメータ値の配列位置が変更され得る。このとき、要素関数と該要素関数に係るパラメータ値との関連付けが維持されていれば、各個体InMにおける要素関数と該要素関数に係るパラメータ値との関連付けは変更されなくても良い。
このように、第1生成方法では、例えば、GP交叉処理およびGP転移処理において、要素関数と該要素関数に係るパラメータ値とが、一緒に置換および移動することができる。
また、例えば、GP突然変異処理によって、各個体InMにおいて要素関数が置き換えられた部分については、置き換え後の異なる1つ以上の処理に係る1つ以上のパラメータの初期値が、例えば、取得部141におけるパラメータの初期値の設定と同様に、ランダムに設定され得る。
図9は、GP遺伝子で規定されるツリー構造においてGP突然変異処理が行われた際におけるGA遺伝子の更新の一例を模式的に示す図である。
図9では、図3で示された、N番目の個体InNについて、GP突然変異処理によって、N番目のGP遺伝子GpNを構成する要素関数fN1〜fN3が、該要素関数fN1〜fN3とは異なる他の要素関数fN4,fN5に置き換えられた様子が示されている。そして、図9では、置き換え後の他の要素関数fN4,fN5に係るパラメータ値群PgNが、GA遺伝子GaMの最後尾に追加されている様子が示されている。
このように、GP突然変異処理によれば、新たな要素関数の追加によって、該要素関数に係るパラメータ値が増加するため、GA遺伝子GaMの長さが延伸し得る。このとき、GP突然変異処理による置き換え対象であった要素関数については、GP突然変異処理によって消滅しているため、例えば、該要素関数に係るパラメータ値は削除されても良いし、そのまま放置されても良い。
[A1]GA進化処理.
GA進化処理では、例えば、各処理フローについて、予め設定された第2変更ルールに従ってパラメータ値群の少なくとも一部のパラメータ値が変更され得る。具体的には、GA進化処理では、例えば、複数の処理フローをそれぞれ規定するN個の個体In1〜InNについて、各処理フローにおける複数の処理に係るパラメータ値群をそれぞれ規定する各GA遺伝子GaMの少なくとも一部のパラメータ値が変更され得る。
1回の世代交代に対応する1回のGA進化処理には、例えば、GA交叉処理およびGA突然変異処理のうちの少なくとも1つの処理が含まれる。
[A11]GA交叉処理.
GA交叉処理は、例えば、各個体In1〜InNに含まれる、パラメータ値群を規定するGA遺伝子GaMにおいて、少なくとも一部のパラメータ値が入れ替えられる処理である。ここでは、例えば、1番目からN番目のGA遺伝子Ga1〜GaNのうちの任意の2つのGA遺伝子の間で、相互に同数のパラメータの値が入れ替えられ得る。また、例えば、GA遺伝子GaMに含まれるN個のパラメータ値群PgNのうち、相互に異なるパラメータ値群の間で、1つ以上の同数のパラメータ値が入れ替えられ得る。
[A12]GA突然変異処理.
GA突然変異処理は、例えば、各個体In1〜InNに含まれる、パラメータ値群を規定するGA遺伝子GaMにおいて、1つ以上のパラメータ値が、異なる1つ以上のパラメータ値に置き換えられる処理である。ここでは、例えば、GA遺伝子GaMに含まれるN個のパラメータ値群PgNのうち、1つのパラメータ値群に属する1つ以上のパラメータ値が異なるパラメータ値に置き換えられても良いし、2つ以上のパラメータ値群にそれぞれ属する1つ以上のパラメータ値が異なるパラメータ値に置き換えられても良い。
なお、GA突然変異処理における置き換えの対象となる1つ以上のパラメータ値は、例えば、発生される乱数に応じてランダムに決定され得る。また、GA突然変異処理における置き換え後のパラメータ値は、例えば、取得部141におけるパラメータの初期値の設定と同様に設定され得る。
<(1−2−1−6)決定部>
第1生成方法では、例えば、処理部14aにおいて、取捨選択部143による取捨選択が行われた後において、判定部144による判定結果に従った変更部145cによる第1変更処理および第2変更処理のうちの何れか一方の変更処理の実施、該変更部145cによる変更処理によって得られた各処理フローに係る評価値の評価部142による算出、および取捨選択部143による該評価値に基づく取捨選択の実行、が繰り返される。これにより、出力データと目標データとの差異が低減され得る。すなわち、処理フローを規定する個体の進化による最適化が進められ得る。
決定部146は、例えば、変更部145cによるN個の個体In1〜InNの進化の状況が、特定の条件を満たせば、その時点におけるN個の個体In1〜InNから、最適化された処理フローを選出することで、処理フローを決定することができる。これにより、処理フローの生成が完了し得る。特定の条件としては、例えば、変更部145cによるN個の個体In1〜InNの進化の回数が、予め設定された特定の回数に到達しているとの条件、および評価部142で各個体InMに対して算出された評価値が予め設定された所定の条件を満たしているとの条件等が採用され得る。所定の条件としては、例えば、変更部145cによるN個の個体In1〜InNの進化の回数に対する、評価値の変化の勾配が予め設定された所定の勾配以下となっているとの条件等が採用され得る。所定の勾配としては、例えば、予め設定された所定回数のN個の個体In1〜InNの進化に対する評価値の変化量等が採用され得る。
また、決定部146は、例えば、N個の個体In1〜InNから、出力データと目標データとの差異が最も小さくなる個体を認識し、該個体によって規定される処理フローを、最適化された処理フローとして決定することができる。
<(1−2−2)第1生成方法に係る動作フロー>
図10から図12は、処理フローを生成する第1生成方法に係る情報処理の動作フローの一例を示すフローチャートである。本動作フローは、例えば、記憶部13に、入力データおよび目標データが記憶され、ユーザーの動作に応じて入力部11から所定の信号が入力されることで、開始され得る。
図10のステップS1では、例えば、処理部14aの取得部141によって、複数の処理フローが取得される工程(取得工程とも言う)が実行される。ここでは、複数の処理フローは、例えば、複数の処理の順序を示す処理シーケンスと、該複数の処理に係る1つ以上のパラメータの値とによってそれぞれ規定される。これにより、例えば、複数の初期個体としてのN個の個体In1〜InNが準備され得る。
ステップS2では、例えば、処理部14aにおいて、N個の個体In1〜InNの世代交代による進化の回数を示すカウントNgが1に設定される。
ステップS3では、例えば、処理部14aの評価部142によって、ステップS1で生成された各処理フローについて、入力データに該処理フローに従った処理が施されることで得られる出力データと、目標データとの差異に応じた評価値が算出される工程(評価工程とも言う)が実行される。これにより、例えば、各個体InMについての評価値が算出され得る。
ステップS4では、例えば、処理部14aの決定部146によって、変更部145cによるN個の個体In1〜InNの進化の状況が、上述した特定の条件を満たしているか否かが判定される。ここで、特定の条件を満たしていれば、ステップS5に進み、特定の条件を満たしていなければ、ステップS6に進む。
ステップS5では、例えば、処理部14aの決定部146によって、N個の個体In1〜InNから、最適化された処理フローが選出されることで、処理フローが決定され得る。例えば、決定部146によって、N個の個体In1〜InNから、出力データと目標データとの差異が最小となる個体によって規定される処理フローが、最適化された処理フローとして決定される。これにより本動作フローが終了される。
ステップS6では、例えば、処理部14aの取捨選択部143によって、ステップS3で算出された各処理フローに係る評価値に基づいて、複数の処理フローの取捨選択が行われる工程(取捨選択工程とも言う)が実行される。
ステップS7では、例えば、GP進化処理を実行するか否かが判定される。ここでは、例えば、処理部14aの判定部144によって、予め設定された判定ルールに従って、各処理フローについて、第1変更処理としてのGP進化処理、および第2変更処理としてのGA進化処理のうちの何れの変化処理を実行するのかが判定される工程(判定工程とも言う)が実行される。ここで、GP進化処理を実行するものと判定されれば、ステップS8に進み、GP進化処理を実行しないと判定されれば、ステップS10に進む。
ステップS8では、例えば、処理部14aの変更部145cによって、第1変更処理としてのGP進化処理が行われる。具体的には、図11のステップS81からステップS86の処理が行われる。
ステップS81では、GP交叉処理を行うか否か判定される。ここでは、例えば、0〜1の範囲で閾値が設定されるとともに、発生される乱数によって0〜1の範囲で確率変数Cvaが決定される。そして、例えば、確率変数Cvaの値が、閾値よりも大きければ、GP交叉処理を行うものと判定されて、ステップS82に進み、確率変数Cvaの値が、閾値以下であれば、GP交叉処理を行わないものと判定されて、ステップS83に進む。
ステップS82では、処理部14aの変更部145cによって、GP交叉処理が行われる。
ステップS83では、GP転移処理を行うか否か判定される。ここでは、例えば、0〜1の範囲で閾値が設定されるとともに、発生される乱数によって0〜1の範囲で確率変数Cvbが決定される。そして、例えば、確率変数Cvbの値が、閾値よりも大きければ、GP転移処理を行うものと判定されて、ステップS84に進み、確率変数Cvbの値が、閾値以下であれば、GP転移処理を行わないものと判定されて、ステップS85に進む。
ステップS84では、処理部14aの変更部145cによって、GP転移処理が行われる。
ステップS85では、GP突然変異処理を行うか否か判定される。ここでは、例えば、0〜1の範囲で閾値が設定されるとともに、発生される乱数によって0〜1の範囲で確率変数Cvcが決定される。そして、例えば、確率変数Cvcの値が、閾値よりも大きければ、GP突然変異処理を行うものと判定されて、ステップS86に進み、確率変数Cvbの値が、閾値以下であれば、GP突然変異処理を行わないものと判定されて、図10のステップS9に進む。
ステップS86では、処理部14aの変更部145cによって、GP突然変異処理が行われる。本処理が終了されると、図10のステップS9に進む。
ステップS9では、例えば、処理部14aの変更部145cによって、第1変更処理としてのGP進化処理が実行された後に、第1変更処理によって変更された処理シーケンスに合わせて、該処理シーケンスとともに処理フローを規定しているパラメータ値群が更新される。
ステップS10では、例えば、処理部14aの変更部145cによって、第2変更処理としてのGA進化処理が行われる。具体的には、図12のステップS101からステップS104の処理が行われる。
ステップS101では、GA交叉処理を行うか否か判定される。ここでは、例えば、0〜1の範囲で閾値が設定されるとともに、発生される乱数によって0〜1の範囲で確率変数Cvdが決定される。そして、例えば、確率変数Cvdの値が、閾値よりも大きければ、GA交叉処理を行うものと判定されて、ステップS102に進み、確率変数Cvdの値が、閾値以下であれば、GA交叉処理を行わないものと判定されて、ステップS103に進む。
ステップS102では、処理部14aの変更部145cによって、GA交叉処理が行われる。
ステップS103では、GA突然変異処理を行うか否か判定される。ここでは、例えば、0〜1の範囲で閾値が設定されるとともに、発生される乱数によって0〜1の範囲で確率変数Cveが決定される。そして、例えば、確率変数Cveの値が、閾値よりも大きければ、GA突然変異処理を行うものと判定されて、ステップS104に進み、確率変数Cveの値が、閾値以下であれば、GA突然変異処理を行わないものと判定されて、図10のステップS11に進む。
ステップS104では、処理部14aの変更部145cによって、GA突然変異処理が行われる。本処理が終了されると、図10のステップS11に進む。
このようにして、ステップS8およびステップS10において、ステップS7における判定結果に応じて、各処理フローについて、第1変更処理および第2変更処理の何れかを実行する工程(変更工程とも言う)が行われる。
ステップS11では、例えば、処理部14aにおいて、N個の個体In1〜InNの世代交代による進化の回数を示すカウントNgが1つ加算される。このステップS11の処理が終了すると、ステップS3に戻る。これにより、特定の条件を満たすまで、ステップS3からステップS11の処理が繰り返される。
つまり、例えば、処理部14aによって、取捨選択工程における取捨選択が行われた後に、判定工程における判定結果に従った変更工程における第1変更処理および第2変更処理のうちの何れか一方の変更処理の実施、該変更工程における変更処理によって得られた各処理フローについての評価工程における評価値の算出、および取捨選択工程における該評価値に基づく取捨選択の実行、が繰り返される。これにより、出力データと目標データとの差異が低減され得る。
以上のような動作フローによって、例えば、処理シーケンスの変更とパラメータ値の変更とが同時期にバランス良く行われ得る。このため、処理フローの生成に要する演算量が低減され、適切な処理フローが迅速に生成され得る。
<(1−2−3)第1生成方法に係る具体例>
ここで、第1生成方法によって、ある原画像から目標画像に酷似した画像を生成することができる処理フローが生成される際に必要とされる世代交代の回数をシミュレーションによって算出した具体例について説明する。
なお、ここでは、上記特許文献2の技術に従って、遺伝的プログラミングによって処理シーケンスの最適化を行うための演算処理のループの途中に、遺伝的アルゴリズムによってパラメータの最適化を行うための演算処理のループが含まれる、入れ子構造のような2重のループの処理によって、処理フローが生成される際に必要とされる世代交代の回数をシミュレーションによって算出した参考例についても説明する。
図13は、具体例および参考例においてそれぞれ使用された原画像I0としての入力画像の一例を示す図である。図14は、具体例および参考例においてそれぞれ使用された目標画像T0の一例を示す図である。図15から図18は、処理フローを生成するシミュレーションの条件の一例を示す図である。図15から図18には、各GP遺伝子Gp1〜GpNを構成する要素関数として採用される得る関数が列挙されており、更に、各関数に対して、処理内容、引数(パラメータ)の数、引数の意味および取り得る引数の値が列挙されている。1〜18の番号が付された関数が、1つの画像を用いた画像処理であり、21〜33の番号が付された関数が、2つの画像を用いた画像処理である。なお、27〜29,31の番号が付された関数では、画像A(Axy)および14,15,1,10の番号が付された関数による画像処理によって求められた値(P'xy)に対し、適応値とする画像B(Bxy)の値が用いられて、下記の式(10)で最終的な値(P''xy)が算出される。
P''xy=P'xy×Bxy/100+(1.0−Bxy/255)×Axy…(10)。
具体例に係る第1生成方法においては、GP遺伝子Gp1〜GpNおよびGA遺伝子Ga1〜GaNのそれぞれの数がN個、N個の個体In1〜InNに係る評価値の変化が収束するまでに要する世代の数がG、と設定された。そして、N個の個体In1〜InNの最適化に要する全計算量Tc1は、個体の数Nと世代の数Gとの積と等価であるものとされた。このとき、下記の式(11)が成立した。
Tc1=N×G …(11)。
一方、参考例に係る特許文献2の技術については、GP遺伝子の数がNgp、Ngp個のGP遺伝子の進化において個体に係る評価値の変化が収束するまでに要する世代の数がGgp、GA遺伝子の数がNga、Nga個のGA遺伝子の進化において個体に係る評価値の変化が収束するまでに要する世代の数がGga、とされた。そして、Ngp個の個体In1〜InNgpの最適化に要する全計算量Tc0は、GP進化処理における個体の数Ngpと世代の数Ggpとの積に、GA進化処理におけるGA遺伝子の数Ngaと世代の数Ggaとの積が乗じられた値と等価であるものとされた。このとき、下記の式(12)が成立した。
Tc0=Ngp×Ggp×Nga×Gga …(12)。
このように、画像処理フローが自動的に構築される際に、GP進化処理による処理シーケンスの最適化、およびGA進化処理によるパラメータの最適化における個体の数、評価値の変化量の収束(処理フローの最適化)に要する世代交代の数、すなわち世代数から、参考例に係る全計算量Tc0が推計された。
図19は、第1生成方法を用いた処理フローの生成に係るシミュレーションの結果の具体例を示す図である。図20は、上記特許文献2の技術に従った生成方法を用いた処理フローの生成に係るシミュレーションの結果の参考例を示す図である。
図19には、GP遺伝子およびGA遺伝子のそれぞれの数が10個であるものとした場合に、GP遺伝子およびGA遺伝子の最適化が同時期に行われた際に得られた世代交代の回数(世代数)と評価値との関係が示されている。図20には、GP遺伝子の数が10個であるものとした場合に、パラメータを規定するGA遺伝子は固定されて、GP遺伝子の最適化のみが行われた際に得られた世代数と評価値との関係が示されている。
図19および図20のそれぞれでは、横軸が世代数を示し、縦軸が評価値(適応値)を示す。また、図19および図20のそれぞれでは、3回のシミュレーションの結果としての世代数と評価値との関係が、実線で描かれた曲線、一点鎖線で描かれた曲線および破線で描かれた曲線で示されている。
図19で示されるように、GP遺伝子およびGA遺伝子の両方について同時期に進化による最適化が行われた場合には、約600世代で十分に評価値の変化が収束した。この結果から、具体例に係る進化処理に要する全計算量Tc1は、個体数N(=10)と、評価値の変化の収束に要する世代数(≒600)との積(≒10×600=6000)となるものと推計された。
一方、図20で示されるように、GP遺伝子のみについて進化による最適化が行われた場合には、約200世代で十分に評価値の変化が収束した。このため、参考例に係るシミュレーションでは、GP進化処理における個体の数Ngpは10であり、GP進化処理における評価値の変化の収束に要する世代の数Ggpは約200となった。
ところで、参考例では、GP進化処理によって処理シーケンスが変更される度に、パラメータ値を示すGA遺伝子の進化による最適化が行われた。ここでは、例えば、各GP遺伝子で規定される処理シーケンスが数個から数十個の要素関数で構成されており、その処理シーケンスに係るパラメータの数は、数十個程度であった。ここで、例えば、数十個のパラメータが既知のGA進化処理によって最適化される場合、200世代以下、平均して100世代程度の進化で、評価値が収束することが一般的に知られている。このため、例えば、GA進化処理における評価値の変化の収束に要する世代の数Ggaは約100と予測された。また、GA進化処理におけるGA遺伝子の数Ngaは、平均して少なくとも10個以上であった。
これにより、参考例に係る進化処理に要する全計算量Tc0は、GP遺伝子の数Ngp(=10)と、該Ngp個のGP遺伝子の進化において個体に係る評価値の変化が収束するまでに要する世代の数Ggp(≒200)と、GA遺伝子の数Nga(≒10)と、Nga個のGA遺伝子の進化において個体に係る評価値の変化が収束するまでに要する世代の数Gga(≒100)との積(≒10×200×10×100=2000000)となるものと推計された。
なお、参考例に係る特許文献2の技術では、GA進化処理において、評価値が良好でない場合には、GA進化処理によるパラメータ値の最適化が打ち切られる場合がある。このため、例えば、Nga個のGA遺伝子の進化において個体に係る評価値の変化が収束するまでに要する世代の数がGga(≒100)よりも減少され得る。
しかしながら、このような世代数Ggaの減少を加味しても、具体例に係る全計算量Tc1(≒6000)が、参考例に係る全計算量Tc0(>20000〜2000000)よりも大幅に小さいことが分かった。
<(1−2−4)第1生成方法に係るまとめ>
以上のように、処理フローに係る第1生成方法によれば、例えば、1回の世代交代において、GP進化処理およびGA進化処理の何れか一方の進化処理が行われる。このため、GP進化処理の途中で、パラメータ値が最適化されるまでの過度なGA進化処理が行われることなく、GP進化処理による処理シーケンスの変更とGA進化処理によるパラメータ値の変更とが同時期にバランス良く行われ得る。これにより、処理フローの生成に要する演算量が低減され、適切な処理フローが迅速に生成され得る。
<(1−3)第2の生成方法>
<(1−3−1)第2の生成方法に係る機能的な構成>
図21は、処理部14aにおける機能的な構成の一例を概略的に示すブロック図である。換言すれば、図21では、処理部14aにおいて、プログラムP1の実行によって実現される第2生成方法に係る各種機能が例示されている。
処理部14aは、実現される機能的な構成として、例えば、取得部141Aと、評価部142と、取捨選択部143と、判定部144と、進化計算部145Aと、決定部146とを有している。これらの各部141A,142〜144,145A,146での処理におけるワークスペースとして、例えば、メモリ14bが使用される。これらの機能的な構成のうち、上記第1生成方法に係る機能的な構成とは異なる、取得部141Aおよび進化計算部145Aについて以下説明する。
<(1−3−1−1)取得部>
取得部141Aは、例えば、複数の処理フローを取得することができる。ここでは、取得部141Aによって、複数の処理フローが生成され得る。各処理フローは、複数の処理の順序を示す処理シーケンスと、該複数の処理に係る1つ以上のパラメータの値とによって規定される。また、該複数の処理には、第1処理フローおよび第2処理フローが含まれる。
複数の処理には、例えば、パラメータを有する処理と、パラメータを有していない処理とが含まれ得る。取得部141Aでは、上記第1生成方法に係る取得部141と同様に、例えば、処理シーケンスを規定するGP遺伝子と1つ以上のパラメータ値を示すGA遺伝子との組を有するN個の初期個体が生成され得る。具体的には、各個体の処理シーケンスを規定するGP遺伝子を構成する複数の要素関数は、例えば、予め準備された複数の関数の中からランダムに選出され得る。また、各個体InMのGP遺伝子に含まれる全ての要素関数についてのパラメータの初期値が、例えば、ランダムに設定される。但し、第2生成方法では、個体を表現するデータの形態が、上記第1生成方法とは異なっていても良い。
図22から図24は、各個体InMの構造の一例として、1番目の個体In1の構造を例示する図である。
図22で示されるように、各個体InMにおいて、処理シーケンスを規定するGP遺伝子GpMが、画像データの入力を葉とし、要素関数による処理を節とするツリー構造で表現され得る。
図22の例では、要素関数N0による処理を規定するノードNd0が根とされて、該ノードNd0に対して、原画像に係る原画像データN1の入力を規定するノードNd1および要素関数N2による処理を規定するノードNd2がそれぞれアークで結ばれている。また、ノードNd2に対して、原画像に係る原画像データN3の入力を規定するノードNd3および原画像に係る原画像データN4の入力を規定するノードNd4がそれぞれアークで結ばれている。つまり、該ツリー構造では、原画像データN3と原画像データN4とを用いた要素関数N2による画像処理、ならびに原画像データN1と要素関数N2の出力としての画像データとを用いた要素関数N0による画像処理を有する処理シーケンスが規定されている。なお、ここで、原画像データN1,N3,N4は、例えば、相互に同一の画像データであっても良いし、相互に異なる画像データであっても良い。
また、各個体InMのツリー構造では、処理シーケンスを構成する各要素関数に対して、該各要素関数に係るパラメータが関連付けられている。図22の例では、要素関数N0による処理を規定するノードNd0に対して、該要素関数N0による処理に係るパラメータaを規定するノードNp0が関連付けられ、要素関数N2による処理を規定するノードNd2に対して、該要素関数N2による処理に係るパラメータbを規定するノードNp2が関連付けられている。そして、これらのパラメータについてGA遺伝子が構築され得る。
ここでは、図22で示された処理フローを表現するツリー構造についての具体的な表現方法として、例えば、GP遺伝子が、1つ以上の要素の1次元的な配列によって表現され、GA遺伝子が、1つ以上の数値の1次元的な配列によって表現される方法が採用され得る。
この場合、GP遺伝子では、例えば、図23で示されるように、処理シーケンスを構成する処理を示す1つ以上の要素が1次元的に配列され、該1つ以上の要素のそれぞれについての要素の種類を示す情報が1次元的に配列される。ここで、1つ以上の要素には、例えば、要素関数による処理を示す要素、および該要素関数に対する原画像の入力を示す要素等が含まれる。要素の種類を示す情報には、例えば、要素の種類を示す数値が含まれる。そして、1つ以上の要素について、それぞれの要素の種類を示す数値が1次元的に配列された数値の列(スタックカウントとも称する)が採用され得る。該スタックカウントでは、例えば、2つのデータが入力される関数による処理を示す要素に数値“−1”が付与され、1つのデータが入力される関数による処理を示す要素に数値“0”が付与され、データの入力を示す要素に数値“1”が付与される。
図23の例では、ツリー構造の根から遠い順に、要素N4,N3,N2,N1,N0が1次元的に配列された要素の1次元配列と、これらの要素のそれぞれの種類を示す数値“1,1,−1,1,−1”が順に1次元的に配列されたスタックカウントとが示されている。このように、要素の1次元配列とスタックカウントとによって、GP遺伝子が記述され得る。該スタックカウントは、例えば、後述する部分ツリー構造を検出する処理に用いられ得る。ここで、1次元的に配列されるとは、データ上で一列にならべられることを意味している。
また、GA遺伝子については、例えば、図24で示されるように、各要素関数の処理に係るパラメータについての1つ以上のパラメータ値が1次元配列によって記述され得る。図24の例では、要素関数N0の処理に係るパラメータaについての3種類のパラメータ値a1,a2,a3と、要素関数N2の処理に係るパラメータbについての2種類のパラメータ値b1,b2と、が1次元配列によって記述されている。
第2生成方法についての以下の例では、取得部141Aによって、1つ以上の要素の1次元的な配列(1次元配列とも言う)と、該1つ以上の要素のそれぞれの種類を示す数値の1次元配列であるスタックカウントとを含むGP遺伝子が生成される。また、取得部141Aによって、各要素関数の処理に係るパラメータについて、1つ以上のパラメータ値が1次元的に記述されているGA遺伝子が生成される。
図25から図27は、各個体InMの構造の一例として、2番目の個体In2の構造を例示する図である。
図25の例では、図22の例と同様に、処理シーケンスを規定するGP遺伝子GpMが、画像データの入力を葉とし、要素関数による処理を節とするツリー構造で表現され得る。
図25の例では、要素関数N5による処理を規定するノードNd5が根とされて、該ノードNd5に対して、要素関数N6による処理を規定するノードNd6と要素関数N8による処理を規定するノードNd8がそれぞれアークで結ばれている。また、ノードNd6に対して、原画像データN7の入力を規定するノードNd7がアークで結ばれ、ノードNd8に対して、原画像データN9の入力を規定するノードNd9がアークで結ばれている。つまり、該ツリー構造では、原画像データN9を用いた要素関数N8の画像処理、原画像データN7を用いた要素関数N6の画像処理、および要素関数N8の出力としての画像データと要素関数N6の出力としての画像データとを用いた要素関数N5の画像処理を有する処理シーケンスが規定されている。なお、ここで、原画像データN7,N8は、例えば、相互に同一の画像データであっても良いし、相互に異なる画像データであっても良い。
また、図25の例では、要素関数N5による処理を規定するノードNd5に対して、該要素関数N5による処理に係るパラメータcを規定するノードNp5が関連付けられている。また、要素関数N6による処理を規定するノードNd6に対して、該要素関数N6による処理に係るパラメータdを規定するノードNp6が関連付けられている。また、要素関数N8による処理を規定するノードNd8に対して、該要素関数N8による処理に係るパラメータeを規定するノードNp8が関連付けられている。そして、これらのパラメータについてGA遺伝子が構築され得る。
図25で示された処理シーケンスについては、図26で示されるGP遺伝子が生成され得る。図26の例では、ツリー構造の根から遠い順に、要素N9,N8,N7,N6,N5が1次元的に配列された要素の1次元配列と、これらの要素のそれぞれの種類を示す数値“1,0,1,0,−1”が順に1次元的に配列されたスタックカウントとが示されている。
また、図25で示された処理シーケンスに係るパラメータについては、例えば、図27で示されるように、各要素関数の処理に係るパラメータについての1つ以上のパラメータ値が1次元配列によって記述され得る。図27の例では、要素関数N5の処理に係るパラメータcについての3種類のパラメータ値c1,c2,c3と、要素関数N6の処理に係るパラメータdについての1種類のパラメータ値d1と、要素関数N8の処理に係るパラメータeについての2種類のパラメータ値e1,e2と、が1次元配列によって記述されている。つまり、各処理シーケンスを規定する複数の要素関数に係るパラメータについて、1つ以上のパラメータ値が1次元的に記述されているGA遺伝子が生成され得る。
<(1−3−1−2)進化計算部>
進化計算部145Aは、N個の個体In1〜InNをGP進化処理およびGA進化処理によって進化させる計算を実行することができる。進化計算部145Aでは、GP進化処理またはGA進化処理が1回行われることで、N個の個体In1〜InNの1回の世代交代が行われる。
進化計算部145Aは、例えば、検出部145a、作成部145b、変更部145cAおよび更新部145dを有している。変更部145cAは、例えば、第1変更処理としてのGP進化処理、および第2変更処理としてのGA進化処理を実行することができる。
[P2]GP進化処理.
GP進化処理では、上記第1生成方法に係るGP進化処理と同様に、例えば、各処理フローについて、予め設定された第1変更ルールに従って処理シーケンスの少なくとも一部の処理が変更され得る。ここで、1回のGP進化処理には、例えば、GP交叉処理およびGP突然変異処理のうちの少なくとも1つの処理が含まれる。
[P21]GP交叉処理.
GP交叉処理では、上記第1生成方法に係るGP交叉処理と同様に、例えば、N個の個体In1〜InNで規定されるN個の処理シーケンスを規定するN個のGP遺伝子Pg1〜PgNにおける2つのGP遺伝子間で、少なくとも一部の処理が入れ替えられる。このとき、上記第1生成方法に係るGP進化処理と同様に、例えば、入れ替えられる1つ以上の処理に1つ以上のパラメータが規定されていれば、該1つ以上の処理に関連付けられている1つ以上のパラメータの値も1つ以上の処理とともに入れ替えられる。
図28から図31は、2つのGP遺伝子Gp1,Gp2で規定されるツリー構造の間においてGP交叉処理が行われる様子の一例を模式的に示す図である。
GP交叉処理では、図28および図29の例のように、一方のGP遺伝子Gp1のうちの一部の部分的なツリー構造(部分ツリー構造)Pt1と、他方のGP遺伝子Gp2のうちの一部の部分ツリー構造Pt2と、が入れ替えの対象とされる。図30および図31では、図28および図29の例における1番目のGP遺伝子Gp1の部分ツリー構造Pt1と、2番目のGP遺伝子Gp2の部分ツリー構造Pt2とが入れ替えられた後の状態が例示されている。
ここで、部分ツリー構造は、例えば、1つの処理と該1つの処理に対する1つ以上のデータの入力との組み合わせを規定することができ、1つの処理と該1つの処理を実行するためのデータを入力するための全ての処理とを含む2つ以上の処理を規定することもできる。そして、入れ替え対象部分の間(例えば、部分ツリー構造Pt1と部分ツリー構造Pt2との間)では、例えば、ノードの数(すなわち、処理の数)およびノードの連結形態が、同一であっても、異なっていても良い。また、GP交叉処理において、GP遺伝子のうちの入れ替え対象部分の位置は、例えば、発生される乱数等によって適宜ランダムに指定され得る。
また、図28から図31で示されるように、例えば、2つのGP遺伝子間において、部分ツリー構造Pt1と部分ツリー構造Pt2とが入れ替わる際には、部分ツリー構造Pt1に係るパラメータ値と、部分ツリー構造Pt2に係るパラメータ値とが、GP遺伝子間における部分ツリー構造の入れ替えに応じて入れ替えられる。また、2つのGP遺伝子間において、例えば、少なくとも一方の入れ替え対象部分が、少なくとも1つの処理を規定する1つ以上のノードを含んでいれば良く、GP遺伝子の全体であっても良い。
[P22]GP突然変異処理.
GP突然変異処理では、上記第1生成方法に係るGP突然変異処理と同様に、例えば、N個の処理シーケンスを規定するN個のGP遺伝子Pg1〜PgNのうちの少なくとも1つのGP遺伝子において、一部の処理が異なる1つ以上の処理に置き換えられる。
図32および図33は、2番目のGP遺伝子Gp2で規定されるツリー構造においてGP突然変異処理が行われる様子の一例を模式的に示す図である。
GP突然変異処理では、図32および図33の例のように、あるGP遺伝子Gp2における一部の処理を含む部分Ar2が、他の1つ以上の処理を含む部分ArXに置き換えられる。
ここで、突然変異の対象としての部分(突然変異対象部分)は、例えば、1つ以上のノードによって規定される1つ以上の処理が含まれている部分であれば良く、部分ツリー構造であっても良い。また、突然変異対象部分の位置は、例えば、発生される乱数等によって適宜ランダムに指定され得る。また、例えば、突然変異対象部分については、置き換え後の異なる1つ以上の処理に係る1つ以上のパラメータの初期値が、例えば、上記第1生成方法に係る取得部141と同様に、取得部141Aにおけるパラメータの初期値の設定と同様にランダムに設定され得る。
[A2]GA進化処理.
GA進化処理では、例えば、変更部145cAによって、各処理フローについて、予め設定された第2変更ルールに従って1つ以上のパラメータ値の少なくとも一部のパラメータ値が変更され得る。具体的には、GA進化処理では、例えば、複数の処理フローをそれぞれ規定するN個の個体In1〜InNについて、各処理フローの複数の処理に係る1つ以上のパラメータ値をそれぞれ規定する各GA遺伝子の少なくとも一部のパラメータ値が変更され得る。
1回のGA進化処理には、例えば、GA交叉処理およびGA突然変異処理の少なくとも一方の処理が含まれる。また、1回のGA進化処理には、例えば、処理シーケンスにおいて類似する処理を行う部分(類似処理部分とも言う)を検出する検出処理、および類似処理部分に係るGA遺伝子を作成する作成処理、ならびにパラメータ値を更新する更新処理が含まれ得る。
[A21]検出処理.
検出部145aは、例えば、第1処理フローと第2処理フローとの間において、パラメータの種類および該パラメータが取り得る数値が共通する1つ以上の処理を検出することができる。ここで、検出される1つ以上の処理は、例えば、類似する処理を行う部分(類似処理部分)を構成する。
第1処理フローと第2処理フローとを含む1組の処理フローは、例えば、取捨選択部143において連続して選出される2つの処理フローによって構成され得る。ここで、具体例として、例えば、取捨選択部143によって、10個の処理フローから、10回の処理フローの選出が行われる場合を想定する。このとき、例えば、1回目の選出と2回目の選出によって選出された2つの処理フローが、検出部145aにおける検出の対象として用いられる一対の処理フローとされ得る。これと同様にして、3回目と4回目の選出、5回目と6回目の選出、7回目と8回目の選出ならびに9回目と10回目の選出によって、それぞれ一対の処理フローが選出され得る。すなわち、N個の個体In1〜InNが、例えば、偶数個の個体であれば、取捨選択部143によって、検出部145aにおける検出の対象となるN/2組の処理フローが設定され得る。このとき、例えば、N=10であれば、5組の処理フローが設定され得る。
そして、検出部145aでは、例えば、各個体InMの全体のツリー構造(全体ツリー構造とも言う)から部分ツリー構造が検出される処理(部分ツリー検出処理とも言う)が行われ得る。また、検出部145aでは、例えば、第1処理フローに係る個体と第2処理フローに係る個体との間において、部分ツリー検出処理で検出された部分ツリー構造に係る情報に基づいて、パラメータの種類および該パラメータが取り得る数値が共通する1つ以上の処理を構成する類似処理部分が検出される処理(類似処理部分検出処理とも言う)が行われ得る。
[A211]部分ツリー検出処理.
各個体InMのGP遺伝子GpMで規定されるツリー構造には、例えば、ツリー構造の全体(全体ツリー構造とも言う)と、要素関数を規定する節としてのノードを仮の根とする部分的なツリー構造(部分ツリー構造)が含まれ得る。ここで、部分ツリー構造には、例えば、仮の根としてのノードから先の、原画像の入力を規定する葉としてのノードまでのツリー構造が含まれる。
検出部145aでは、例えば、スタックカウントが利用されて、部分ツリー構造が検出され得る。
部分ツリー検出処理は、例えば、下記[1a]から[1d]の処理が順に行われることで、実現され得る。
[1a]GP遺伝子において、要素の1次元配列およびスタックカウントの最後尾が検索の始点とされ、後ろから前に進む方向が探索方向Dr1とされる。
[1b]探索の始点の要素から探索方向Dr1に対象としての要素(対象要素とも言う)が遷移されつつ、該対象要素に係るスタックカウントの数値が積算される。このとき、スタックカウントの数値の総和が1となるまで、対象要素の遷移および該対象要素に係るスタックカウントの数値の加算が順次に進められる。
[1c]探索の始点の要素からのスタックカウントの数値の積算によって得られる値(総和)が1となれば、その際における対象要素までが、探索の始点の要素を根とする部分ツリー構造として検出される。
[1d]次に、GP遺伝子における要素の1次元配列において、探索の新たな始点が前回の探索の始点よりも1つ前の要素に変更される。このとき、新たな始点が要素関数に係る要素であれば、上記[1b]からの処理が再度実行され、該新たな始点が要素関数に係る要素でなければ、探索の新たな始点が要素関数に係る要素となるまで、探索の始点が1つずつ前に遷移される。そして、該探索の始点が、GP遺伝子における要素の1次元配列の先頭の要素まで遷移すれば、部分ツリー検出処理が終了される。
図34から図41は、部分ツリー検出処理によって、各個体InMのGP遺伝子で規定される全体ツリー構造から部分ツリー構造が検出される一例を示す図である。
図34から図41の例では、図34で示されるような2番目の個体In2のGP遺伝子Gp2で規定される全体ツリー構造について、図35で示されるGP遺伝子における要素の1次元配列およびスタックカウントに基づいて、部分ツリー構造が検出され得る。
ここでは、まず、図36で示されるように、2番目の個体In2のGP遺伝子Gp2で規定される全体ツリー構造が1つ目の部分ツリー構造Gp2aとして検出され得る。この場合、図37で示されるように、部分ツリー構造の探索における対象要素は、要素N0を始点として、要素N0、要素N6、要素N7、要素N8および要素N9の順に遷移する。このとき、スタックカウントは、“−1、0、1、0、1”の順に積算されて、スタックカウントの総和が1に至る。
また、次に、図38で示されるように、ノードNd6とノードNd7とによって構成される部分ツリー構造Gp2bが検出され得る。この場合、図39で示されるように、部分ツリー構造の探索における対象要素は、要素N6を始点として、要素N6および要素N7の順に遷移する。このとき、スタックカウントは、“0、1”の順に積算されて、スタックカウントの総和が1に至る。
また、次に、図40で示されるように、ノードNd8とノードNd9とによって構成される部分ツリー構造Gp2cが検出され得る。この場合、図41で示されるように、部分ツリー構造の探索における対象要素は、要素N8を始点として、要素N8および要素N9の順に遷移する。このとき、スタックカウントは、“0、1”の順に積算されて、スタックカウントの総和が1に至る。
これにより、図34の例で示される2番目のGP遺伝子Gp2で規定される全体ツリー構造から、図36、図38および図40でそれぞれ示される3タイプの部分ツリー構造Gp2a〜Gp2cが検出され得る。
このようにして、例えば、スタックカウントが用いられることで、GP遺伝子で規定される全体ツリー構造から、部分ツリー構造が容易に検出され得る。すなわち、GP遺伝子で規定される全体の処理シーケンスから、部分処理シーケンスが容易に検出され得る。
[A212]類似処理部分検出処理.
検出部145aは、例えば、第1処理フローと第2処理フローとの間において、同様なタイプの部分処理シーケンス(類似部分処理シーケンスとも言う)を検出することができる。ここで、類似部分処理シーケンスには、例えば、パラメータの種類および該パラメータが取り得る値が共通するとともに、1つの処理あるいは該1つの処理を行うためのデータを得る順序が同一の全ての処理とを含む2つ以上の処理によって構成される部分処理シーケンスが含まれ得る。これにより、検出部145aでは、例えば、第1処理フローと第2処理フローとの間において類似の処理を規定する類似処理部分が検出され得る。
ここでは、検出部145aによって、例えば、部分ツリー検出処理で検出された部分処理シーケンスの中から、類似部分処理シーケンスが検出され得る。パラメータの種類が共通する処理としては、例えば、幅と高さ等のパラメータによってフィルタのサイズが規定される2種以上の処理等が挙げられる。これらの処理では、フィルタのサイズによって処理内容が規定される。このようなフィルタのサイズによって処理内容が規定されるフィルタ処理としては、例えば、平均化フィルタ、メディアンフィルタ、ガウシアンフィルタおよびラプラシアンフィルタ等が挙げられる。パラメータが取り得る値が共通する処理としては、例えば、フィルタのサイズが取り得る最小値、最大値および刻みが共通するフィルタ処理等が挙げられる。そして、パラメータの種類および該パラメータが取り得る値が共通する同様なタイプの処理(同一タイプ処理とも言う)は、例えば、記憶部13に記憶されるプログラムP1または各種のデータによって規定され得る。具体的には、同一タイプ処理は、例えば、予め準備された数十種類から数百種類の関数を同様なタイプの処理ごとに分類した情報によって規定され得る。
また、ここでは、類似部分処理シーケンスは、例えば、仮想的な根としてのノードによって規定される1つの処理を行うためのデータを得る順序が同一の全ての処理を含むものである。このため、類似部分処理シーケンスは、例えば、2つの処理フローの間で、同数のノードが同一の形態で連結されている部分ツリー構造によって規定され得る。さらに、2つの処理フローについての類似部分処理シーケンスでは、部分ツリー構造を構成する同一の位置のノードによって、例えば、パラメータの種類および該パラメータが取り得る値が共通する同様なタイプの処理が規定され得る。
また、検出部145aでは、例えば、第1処理フローと第2処理フローとの間において、同一の部分処理シーケンスが検出されても良い。つまり、類似部分処理シーケンスには、例えば、同一の部分処理シーケンスが含まれ得る。このとき、2つの処理フローの間において、同一の部分処理シーケンスは、例えば、パラメータの種類およびパラメータが取り得る値が共通するとともに同数で且つ同種の処理を規定するノードが同一の形態で連結されている部分ツリー構造によって規定され得る。同種の処理には、例えば、同一の要素関数による処理が含まれ得る。
図42および図43は、2つの処理フローの間において類似部分処理シーケンスとしての同一の部分処理シーケンスが検出される一例を示す図である。
図42および図43の例では、3番目のGP遺伝子Gp3に係るツリー構造と4番目のGP遺伝子Gp4に係るツリー構造との間において、同一の部分処理シーケンスが存在している。具体的には、2つのツリー構造において、処理N1を規定するノードNd1が仮想的な根とされて、ノードNd1に対してアークで結ばれた処理N2を規定するノードNd2、および該ノードNd2に対してアークで結ばれた画像データN5の入力を規定するノードNd5によって構成される同一の部分ツリー構造Pt3,Pt4が存在している。なお、ノードNd1にはパラメータbのノードNp1が結びつけられ、ノードNd2にはパラメータcのノードNp2が結びつけられている。
このため、例えば、図42および図43で示される3番目のGP遺伝子Gp3に係るツリー構造と4番目のGP遺伝子Gp4に係るツリー構造との間では、検出部145aによって、類似処理部分としての部分ツリー構造Pt3,Pt4が検出され得る。換言すれば、部分ツリー構造Pt3,Pt4によって規定される同一の部分処理シーケンスが、類似部分処理シーケンスとして検出され得る。
また、類似処理部分検出処理では、2つの処理フローの間において類似部分処理シーケンスが検出されない場合には、例えば、2つの処理フローの間において同種の処理が検出されても良い。例えば、第1処理フローと第2処理フローとの間において、検出部145aによって1つ以上の同種の処理が検出されても良い。この検出によっても、検出部145aでは、例えば、第1処理フローと第2処理フローとの間における同種の処理を規定する類似処理部分が検出され得る。なお、1つ以上の同種の処理は、例えば、ツリー構造において、互いにアークで結ばれていない、離れたノードによって規定される2つ以上の同種の処理であっても良い。
図44および図45は、2つのツリー構造の間における類似処理部分の一例を示す図である。図44および図45には、5番目のGP遺伝子Gp5に係るツリー構造と6番目のGP遺伝子Gp6に係るツリー構造との間において、類似部分処理シーケンスは存在していないが、同一の処理を規定している類似処理部分Ar5,Ar6が存在している様子が示されている。このとき、検出部145aでは、例えば、第1処理フローと第2処理フローとの間において、パラメータの種類および該パラメータが取り得る数値が共通する1つ以上の処理によって構成される類似処理部分Ar5,Ar6が検出され得る。
[A22]作成処理.
作成部145bは、例えば、検出部145aによって検出された類似処理部分について、相互に対応する処理についての部分的なGA遺伝子(対応GA遺伝子とも言う)を作成することができる。対応GA遺伝子は、例えば、類似処理部分を構成する1つ以上の処理に係るパラメータの値によって構成される。該対応GA遺伝子は、例えば、類似処理部分の検出対象であった2つの処理フローのそれぞれについて、類似処理部分を構成する1つ以上の処理に係るパラメータの値が1次元的に配列されることで作成され得る。このとき、例えば、1つ以上の処理が2つ以上の処理を含んでいれば、処理シーケンスにおける2つ以上の処理の順序に従って、パラメータ値が1次元的に配列されることで、対応GA遺伝子が作成され得る。
図46および図47は、類似処理部分に係る対応GA遺伝子が生成される一例を示す図である。図46および図47の例では、図42および図43で例示される類似処理部分としての部分ツリー構造Pt3,Pt4のそれぞれに係る対応GA遺伝子が生成される様子が例示されている。
例えば、図42で示される類似処理部分としての部分ツリー構造Pt3に含まれるノードNp1,Np2について、ノードNp1で規定されるパラメータbおよびノードNp2で規定されるパラメータcのそれぞれについての1つ以上のパラメータ値が、図46の上部に記載されている。具体的には、パラメータbについて、2種類のパラメータ値である1.0と0が記述され、パラメータcについて、1種類のパラメータ値である128が記述されている。より具体的には、例えば、パラメータbに係る2種類のパラメータ値b1,b2について、パラメータ値b1が、1.0であり、パラメータ値b2が、0であり、さらに、パラメータcに係る1種類のパラメータ値c1について、パラメータ値c1が、128であることが記述されている。このとき、作成部145bでは、類似処理部分を構成する1つ以上の処理に係るパラメータの値が1次元的に配列される。これにより、対応GA遺伝子が作成される。図46の例では、図46の下部に記載されているように、3番目の個体In3について、3つのパラメータの値が1次元的に配列されている「1.0、0、128」が対応GA遺伝子(ここでは、対応GA遺伝子3とも言う)として作成される。
また、例えば、図43で示される類似処理部分としての部分ツリー構造Pt4に含まれるノードNp1,Np2について、ノードNp1およびノードNp2で規定されるパラメータbおよびパラメータcのそれぞれについての1つ以上のパラメータ値が、図47の上部に記載されている。具体的には、例えば、パラメータbについて、パラメータ値b1が、0.5であり、パラメータ値b2が、32であり、さらに、パラメータcについて、パラメータ値c1が、128であることが記述されている。このとき、作成部145bによって、図47の下部に記載されているように、4番目の個体In4について、3つのパラメータの値が1次元的に配列されている「0.5、32、64」が対応GA遺伝子(ここでは、対応GA遺伝子4とも言う)として作成される。
図48および図49は、類似処理部分に係る対応GA遺伝子が生成される他の一例を示す図である。図48および図49の例では、図44および図45で例示される類似処理部分Ar5,Ar6のそれぞれに係る対応GA遺伝子が生成される様子が例示されている。
例えば、図44で示される類似処理部分Ar5に含まれるノードNp1,Np2で規定されるパラメータbおよびパラメータcのそれぞれについての1つ以上のパラメータ値が、図48の上部に記載されている。具体的には、例えば、パラメータbについて、パラメータ値b1が、3であり、パラメータ値b2が、3であり、さらに、パラメータcについて、パラメータ値c1が、1.0であり、パラメータ値c2が、32であることが記述されている。このとき、作成部145bによって、例えば、図48の下部に記載されているように、5番目の個体In5について、4つのパラメータの値が1次元的に配列されている「3、3、1.0、32」が対応GA遺伝子(ここでは、対応GA遺伝子5とも言う)として作成される。
また、例えば、図45で示される類似処理部分Ar6に含まれるノードNp1,Np2で規定されるパラメータbおよびパラメータcのそれぞれについての1つ以上のパラメータ値が、図49の上部に記載されている。具体的には、例えば、パラメータbについて、パラメータ値b1が、5であり、パラメータ値b2が、5であり、さらに、パラメータcについて、パラメータ値c1が、0.5であり、パラメータ値c2が、64であることが記述されている。このとき、作成部145bによって、例えば、図49の下部に記載されているように、6番目の個体In6について、4つのパラメータの値が1次元的に配列されている「5、5、0.5、64」が対応GA遺伝子(ここでは、対応GA遺伝子6とも言う)として作成される。
[A23]GA交叉処理.
変更部145cAによるGA交叉処理では、例えば、第1処理フローから検出部145aによって検出された1つ以上の処理における1つ以上のパラメータと、第2処理フローから検出部145aによって検出された1つ以上の処理における1つ以上のパラメータとの間において、種類が対応する同一の数のパラメータの値が入れ替えられる。このとき、例えば、第1処理フローに係る1つ以上のパラメータと、第2処理フローに係る1つ以上のパラメータとの間において、種類が対応する全てのパラメータのうち、一部の種類が対応する同一の数のパラメータの値が入れ替えられても良いし、全ての種類が対応する同一の数のパラメータの値が入れ替えられても良い。
ここで、検出部145aで検出された1つ以上の処理が、類似処理部分を構成するのであれば、例えば、変更部145cAによって、第1処理フローと第2処理フローとの間で、類似処理部分において種類が対応する同一の数のパラメータの値が入れ替えられ得る。つまり、変更部145cAでは、例えば、検出部145aによって第1処理フローおよび第2処理フローから検出された類似処理部分について、種類が対応する同一の数のパラメータの値が入れ替えられ得る。このように、類似部分処理について、パラメータ値の入れ替えが行われることで、パラメータ値の最適化が迅速に行われ得る。その結果、例えば、パラメータ値の最適化を図るための演算が効率良く行われ、処理フローの生成に要する演算量が低減され得る。
ここで、例えば、第1処理フローと第2処理フローとの間について、検出部145aによって類似処理部分としての類似部分処理シーケンスが検出されていれば、変更部145cAでは、類似部分処理シーケンスにおけるパラメータ値が入れ替えられ得る。このとき、例えば、変更部145cAでは、第1処理フローにおける類似部分処理シーケンスを構成する1つ以上の処理に係る1つ以上のパラメータと、第2処理フローにおける類似部分処理シーケンスを構成する1つ以上の処理に係る1つ以上のパラメータとの間において、種類が対応する同一の数のパラメータの値が入れ替えられ得る。これにより、パラメータ値の最適化が迅速に行われ得る。
また、例えば、類似部分処理シーケンスとして、第1処理フローと第2処理フローとの間に、同一の部分処理シーケンスが存在していれば、2つの処理フローの間において、該同一の部分処理シーケンスに係るパラメータ値の入れ替えが行われ得る。これにより、パラメータ値の最適化が非常に迅速に行われ得る。
ここで、変更部145cAでは、例えば、第1処理フローと第2処理フローとの間において、作成部145bで作成された類似処理部分に係る対応GA遺伝子においてパラメータ値が入れ替えられることで、GA交叉処理が行われ得る。
図50は、一対の対応GA遺伝子の間でGA交叉処理が行われる一例を示す図である。図50には、図46で示された3番目の個体In3に係る対応GA遺伝子CGa3と、図47で示された4番目の個体In4に係る対応GA遺伝子CGa4との間において、1つ以上のパラメータ値が入れ替えられる様子が示されている。
図50で示されているように、例えば、対応GA遺伝子CGa3と対応GA遺伝子CGa4との間において、同じ位置の同じ数のパラメータ値が適宜入れ替えられることで、GA交叉処理が実現され得る。ここでは、対応GA遺伝子CGa3および対応GA遺伝子CGa4は、それぞれ、3つのパラメータ値が1次元的に配列されたものである。そして、図50の例では、対応GA遺伝子CGa3および対応GA遺伝子CGa4のそれぞれにおける3つのパラメータ値のうちの太枠で囲まれた後ろ(右側)の2つのパラメータ値が入れ替えられる様子が示されている。
ここで、入れ替えられるパラメータ値の数は、1つ以上であればよく、対応GA遺伝子CGa3および対応GA遺伝子CGa4における全てのパラメータ値が入れ替えられても良い。換言すると、一点交叉、多点交叉、一様交叉等のいずれであっても良い。例えば、一点交叉では、対応GA遺伝子の1箇所においてパラメータ値が入れ替えられ、多点交叉では、対応GA遺伝子の相互に離隔した複数箇所においてパラメータ値が入れ替えられ、一様交叉では、対応GA遺伝子の全てパラメータ値が入れ替えられ得る。また、対応GA遺伝子CGa3および対応GA遺伝子CGa4の間では、例えば、処理の切れ目に拘わらず、対応する位置の同数のパラメータ値が入れ替えられ得る。このような対応GA遺伝子を用いたGA交叉処理によれば、容易かつ効率よくGA交叉処理を行うことが可能となる。
また、例えば、第1処理フローと第2処理フローとの間について、検出部145aによって、類似部分処理シーケンスが検出されず、類似処理部分としての1つ以上の処理が検出されていれば、変更部145cAでは、該1つ以上の処理についてパラメータ値が入れ替えられ得る。このとき、例えば、変更部145cAでは、第1処理フローにおける類似処理部分を構成する1つ以上の処理における1つ以上のパラメータと、第2処理フローにおける類似処理部分を構成する1つ以上の処理における1つ以上のパラメータとの間において、種類が対応する同一の数のパラメータの値が入れ替えられ得る。ここでは、例えば、2つの処理フローの間において、種類が共通している1つ以上の処理について、パラメータ値の入れ替えが行われるため、パラメータ値の最適化が迅速に行われ得る。
この場合にも、変更部145cAでは、例えば、第1処理フローと第2処理フローとについて、作成部145bで作成された対応GA遺伝子においてパラメータ値が入れ替えられることで、GA交叉処理が行われ得る。このとき、例えば、図48で示された5番目の個体In5に係る対応GA遺伝子5と、図49で示された6番目の個体In6に係る対応GA遺伝子6との間において、1つ以上のパラメータ値が入れ替えられる態様が考えられる。
なお、GA交叉処理において、対応GA遺伝子のうちの入れ替えの対象となる1つ以上のパラメータ値は、例えば、発生される乱数に応じてランダムに指定されても良いし、発生される乱数に応じてランダムに指定される位置から後ろの部分または前の部分のパラメータ値であっても良い。
[A24]GA突然変異処理.
変更部145cAでは、例えば、各個体In1〜InNにおいて、GA遺伝子における1つ以上のパラメータ値が、異なる1つ以上のパラメータ値に置き換えられる。このとき、例えば、対応GA遺伝子における1つ以上のパラメータ値が、GA突然変異処理における置き換えの対象とされても良い。
図51は、対応GA遺伝子のパラメータ値の置き換えによってGA突然変異が行われる一例を示す図である。図51には、4番目の個体In4の対応GA遺伝子CGa4における最後尾の1つのパラメータ値が置き換えられる様子が例示されている。
[A25]更新処理.
更新部145dは、例えば、GA交叉処理およびGA突然変異処理において発生した対応GA遺伝子におけるパラメータ値の変更を、個体InMにおけるGA遺伝子に反映することができる。換言すれば、例えば、対応GA遺伝子において生じたパラメータ値の変更が、該対応GA遺伝子が作成される元となった個体の類似処理部分に係るパラメータ値に反映される。これにより、例えば、1回のGA変更処理が完了し得る。
<(1−3−2)第2の生成方法に係る動作フロー>
図52から図54は、処理フローを生成する第2生成方法に係る情報処理の動作フローの一例を示すフローチャートである。本動作フローは、例えば、記憶部13に、入力データおよび目標データが記憶され、ユーザーの動作に応じて入力部11から所定の信号が入力されることで、開始され得る。
図52のステップST1では、例えば、処理部14aの取得部141Aによって、複数の処理フローが取得される取得工程が実行される。ここでは、複数の処理フローは、例えば、複数の処理の順序を示す処理シーケンスと、該複数の処理に係る1つ以上のパラメータの値とによってそれぞれ規定される。これにより、例えば、複数の初期個体としてのN個の個体In1〜InNが準備され得る。
ステップST2では、例えば、処理部14aにおいて、N個の個体In1〜InNの世代交代による進化の回数を示すカウントNgが1に設定される。
ステップST3では、例えば、処理部14aの評価部142によって、ステップST1で生成された各処理フローについて、入力データに該処理フローに従った処理が施されることで得られる出力データと、目標データとの差異に応じた評価値が算出される評価工程が実行される。このステップST3における処理が2回目以降の場合には、後述する変更工程における第1変更処理および第2変更処理の少なくとも一方の変更処理が施された後の各処理フローについて、入力データに該処理フローに従った処理が施されることで得られる出力データと、目標データとの差異に応じた評価値が算出される評価工程が実行される。
ステップST4では、例えば、上記第2生成方法のステップS4(図10)と同様に、処理部14aの決定部146によって、変更部145cAによるN個の個体In1〜InNの進化の状況が、上述した特定の条件を満たしているか否かが判定される。ここで、特定の条件を満たしていれば、ステップST5に進み、特定の条件を満たしていなければ、ステップST6に進む。
ステップST5では、例えば、上記第1生成方法のステップS5(図10)と同様な処理によって、最適化された処理フローが決定され得る。これにより本動作フローが終了される。
ステップST6では、例えば、上記第1生成方法のステップS6(図10)と同様に、処理部14aの取捨選択部143によって、ステップST3で算出された各処理フローに係る評価値に基づいて、複数の処理フローの取捨選択が行われる取捨選択工程が実行される。
ステップST7では、例えば、処理部14aの判定部144によって、GP進化処理を実行するか否かが判定される。ここでは、上記第1生成方法のステップS7(図10)と同様な処理によって、予め設定された判定ルールに従って、各処理フローについて、第1変更処理であるGP進化処理、および第2変更処理であるGA進化処理のうちの何れの変化処理を実行するのかが判定される判定工程が実行される。ここで、GP進化処理を実行するものと判定されれば、ステップST8に進み、GP進化処理を実行しないものと判定されれば、ステップST9に進む。
ステップST8では、例えば、処理部14aの変更部145cAによって、第1変更処理としてのGP進化処理が行われる。具体的には、図53のステップST81からステップST84の処理が行われる。
図53のステップST81では、GP交叉処理を行うか否か判定される。ここでは、例えば、上記第1生成方法のステップS81(図11)と同様な処理によって、GP交叉処理を行うか否か判定され得る。ここで、GP交叉処理を行うものと判定されば、ステップST82に進み、GP交叉処理を行わないものと判定されなければ、ステップST83に進む。
ステップST82では、処理部14aの変更部145cAによって、GP交叉処理が行われる。
ステップST83では、GP突然変異処理を行うか否か判定される。ここでは、例えば、上記第1生成方法のステップS85(図11)と同様な処理によって、GP突然変異処理を行うか否か判定され得る。ここで、GP突然変異処理を行うものと判定されば、ステップST84に進み、GP突然変異処理を行わないものと判定されなければ、図52のステップST10に進む。
ステップST84では、処理部14aの変更部145cAによって、GP突然変異処理が行われる。本処理が終了されると、図52のステップST10に進む。
ステップST9では、例えば、処理部14aの進化計算部145Aによって、第2変更処理としてのGA進化処理が行われる。具体的には、図54のステップST91からステップST97の処理が行われる。
ステップST91では、処理部14aの検出部145aによって、第1処理フローと第2処理フローとの間において、パラメータの種類および該パラメータが取り得る値が共通する1つ以上の処理が検出される工程(検出工程とも言う)が行われる。つまり、類似処理部分が検出される。
ステップST92では、処理部14aの作成部145bによって、第1処理フローおよび第2処理フローのそれぞれに対して、対応GA遺伝子が作成される。
ステップST93では、GA交叉処理を行うか否か判定される。ここでは、例えば、上記第1生成方法のステップS101(図12)と同様な処理によって、GA交叉処理を行うか否かが判定され得る。ここで、GA交叉処理を行うものと判定されれば、ステップST94に進み、GA交叉処理を行わないものと判定されれば、ステップST95に進む。
ステップST94では、処理部14aの変更部145cAによって、GA交叉処理が行われる。該GA交叉処理では、例えば、ステップST91において第1処理フローから検出された1つ以上の処理における1つ以上のパラメータと、ステップST91において第2処理フローから検出された1つ以上の処理における1つ以上のパラメータとの間において、種類が対応する同一の数のパラメータの値が入れ替えられる。例えば、類似処理部分について、種類が対応する同一の数のパラメータの値が入れ替えられる。このパラメータ値の入れ替えは、例えば、ステップST92で作成された対応GA遺伝子において行われ得る。
ステップST95では、GA突然変異処理を行うか否か判定される。ここでは、例えば、上記第1生成方法のステップS103(図12)と同様な処理によって、GA突然変異処理を行うか否かが判定され得る。ここで、GA突然変異処理を行うものと判定されれば、ステップST96に進み、GA突然変異処理を行わないものと判定されれば、ステップST97に進む。
ステップST96では、処理部14aの変更部145cAによって、GA突然変異処理が行われる。ここでは、例えば、対応GA遺伝子において、パラメータ値が、異なるパラメータ値に置き換えられ得る。
ステップST97では、処理部14aの更新部145dによって、GA遺伝子が更新される。ここでは、例えば、ステップST94およびステップST96の少なくとも一方のステップにおける対応GA遺伝子の変更に応じて、GA遺伝子が更新される。なお、ステップST94およびステップST96においてGA交叉処理およびGA突然変異処理が行われなかった場合には、本ステップST97におけるGA遺伝子の更新は行われない。本ステップST97の処理が終了されると、図52のステップST10に進む。
このようにして、例えば、ステップST8およびステップST9において、各処理フローについて、第1変更処理および第2変更処理のうちの一方の変更処理を実施する変更工程が行われる。
ステップST10では、例えば、処理部14aにおいて、N個の個体In1〜InNの世代交代による進化の回数を示すカウントNgが1つ加算される。このステップST10の処理が終了すると、ステップST3に戻る。これにより、特定の条件を満たすまで、ステップST3からステップST10の処理が繰り返される。
つまり、例えば、処理部14aによって、取捨選択工程における取捨選択が実行された後に、変更工程における第1変更処理および第2変更処理のうちの一方の変更処理の実施、該変更工程における変更処理によって得られた各処理フローに係る評価値の評価工程における算出、および取捨選択工程における該評価値に基づく取捨選択の実行、が繰り返される。これにより、出力データと目標データとの差異が低減される。
ここで、第2生成方法においても、第1生成方法と同様に、1回の世代交代において、判定部144による判定結果に応じて、第1変更処理であるGP進化処理または第2変更処理であるGA進化処理が行われる。これにより、例えば、処理シーケンスの変更とパラメータ値の変更とが同時期にバランス良く行われ得る。このため、処理フローの生成に要する演算量が低減され、適切な処理フローが迅速に生成され得る。
この場合、例えば、処理部14aにおいて、取捨選択部143による取捨選択が行われた後における、判定部144による判定結果に従った変更部145cAによる変更処理の実施、該変更部145cAによる変更処理によって得られた各処理フローに係る評価値の評価部142による算出、および取捨選択部143による該評価値に基づく取捨選択の実行、が繰り返され得る。このような構成によっても、出力データと目標データとの差異が低減される。
但し、第2生成方法においては、例えば、判定部144による判定が行われずに、1回の世代交代において、第1変更処理であるGP進化処理および第2変更処理であるGA進化処理の双方が行われても良い。つまり、1回の世代交代が行われる際に、各処理フローについて、例えば、第1変更処理および第2変更処理のうちの少なくとも一方の変更処理を実施する変更工程が行われても良い。
すなわち、第2生成方法においては、例えば、処理部14aによって、取捨選択工程における取捨選択が実行された後に、変更工程における第1変更処理および第2変更処理のうちの少なくとも一方の変更処理の実施、該変更工程における少なくとも一方の変更処理によって得られた各処理フローに係る評価値の評価工程における算出、および取捨選択工程における該評価値に基づく取捨選択の実行、が繰り返されれば良い。これによっても、出力データと目標データとの差異が低減され得る。
<(1−3−3)第2の生成方法に係るまとめ>
以上のように、処理フローに係る第2生成方法によれば、例えば、第1処理フローと第2処理フローとの間において、パラメータの種類および該パラメータが取り得る値が共通する1つ以上の処理が検出される。そして、GA交叉処理において、第1処理フローから検出された1つ以上の処理における1つ以上のパラメータと、第2処理フローから検出された1つ以上の処理における1つ以上のパラメータとの間において、種類が対応する同一の数のパラメータの値が入れ替えられる。これにより、例えば、パラメータ値の最適化を図るための演算が効率良く行われることで、処理フローの生成に要する演算量が低減される。その結果、適切な処理フローが迅速に生成され得る。
<(2)変形例>
なお、本発明は上述の実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更、改良等が可能である。
例えば、上記実施形態の一例では、生成する対象としての処理フローの一例として、画像処理を行う画像処理フローを挙げて説明したが、これに限られない。例えば、入力されるデータに対してデータ処理を施す各種の処理フローであっても良い。この場合、入力されるデータには、例えば、デジタルデータ、アナログデータ、デジタル信号およびアナログ信号が含まれ得る。このとき、例えば、入力画像、目標画像および出力画像は、入力データ、目標データおよび出力データ等とされ得る。
また、上記実施形態の一例では、判定部144において判定の基準となる予め設定された判定ルールが、例えば、1回以上の第1変更処理および1回以上の第2変更処理についての実行順を規定しているルールであっても良い。該実行順は、例えば、記憶部13に記憶されているプログラムP1またはデータ等によって規定され得る。このとき、該実行順に従って、判定部144は、例えば、第1変更処理および第2変更処理のうちの何れの変更処理を実行するのか判定することができる。なお、実行順は、1回以上の第1変更処理と1回以上の第2変更処理とが適宜に実行される順序であれば良く、該実行順には、例えば、第1変更処理と第2変更処理とが交互に実行される順序等が含まれ得る。
また、処理フローの第2生成方法では、例えば、1回の世代交代において、GA交叉処理が行われることが決定した後に、検出部145aによる類似処理部分の検出、および作成部145bによる対応GA遺伝子の作成が行われても良い。
また、上記実施形態の一例では、例えば、取得部141,141Aにおいて、入力部11から入力される複数の個体In1〜InNを示す情報が取得されても良い。
また、上記実施形態の一例では、1台のコンピューターによって情報処理システム1が構成されたが、これに限られない。例えば、情報処理システム1が複数台のコンピューター等といった複数の電子機器によって構成されても良い。この場合、複数の電子機器の間におけるデータの授受は、例えば、通信回線を介したものであっても、記憶媒体を介したものであっても良い。
なお、上記実施形態の一例および各種変形例をそれぞれ構成する全部または一部を、適宜、矛盾しない範囲で組み合わせ可能であることは、言うまでもない。
1 情報処理システム
10 処理フロー生成システム
11 入力部
12 出力部
13 記憶部
14 制御部
14a 処理部
14b メモリ
141,141A 取得部
142 評価部
143 取捨選択部
144 判定部
145,145A 進化計算部
145a 検出部
145b 作成部
145c,145cA 変更部
145d 更新部
146 決定部
P1 プログラム

Claims (13)

  1. 記憶部と、処理部と、を備え、
    前記記憶部は、入力データおよび目標データを記憶し、
    前記処理部は、
    複数の処理の順序を示す処理シーケンスと該複数の処理に係る1以上のパラメータの値とによってそれぞれ規定される第1処理フローおよび第2処理フローを含む複数の処理フローを取得する取得部と、
    前記第1処理フローと前記第2処理フローとの間において、パラメータの種類および該パラメータが取り得る値が共通する1以上の処理を検出する検出部と、
    各前記処理フローについて、予め設定された第1変更ルールに従って前記処理シーケンスの少なくとも一部の処理を変更する第1変更処理、および予め設定された第2変更ルールに従って前記1以上のパラメータの値のうちの少なくとも一部のパラメータの値を変更する第2変更処理を実施する変更部と、
    前記変更部によって前記第1変更処理および前記第2変更処理の少なくとも一方の変更処理が施された後の各前記処理フローについて、前記入力データに該処理フローに従った処理が施されることで得られる出力データと、前記目標データとの差異に応じた評価値を算出する評価部と、
    各前記処理フローに係る前記評価値に基づいて、前記複数の処理フローについて取捨選択を行う取捨選択部と、を有し、
    前記第2変更処理が、
    前記検出部によって前記第1処理フローから検出された1以上の処理における1以上のパラメータと、前記検出部によって前記第2処理フローから検出された1以上の処理における1以上のパラメータとの間において、種類が対応する同一の数のパラメータの値が入れ替えられる交叉処理を含み、
    前記処理部において、前記取捨選択部による前記取捨選択が行われた後における、前記変更部による前記第1変更処理および前記第2変更処理のうちの少なくとも一方の変更処理の実施、該変更部による前記少なくとも一方の変更処理によって得られた各処理フローに係る前記評価値の前記評価部による算出、および前記取捨選択部による該評価値に基づく前記取捨選択の実行、が繰り返されることで、前記出力データと前記目標データとの差異が低減される、処理フロー生成システム。
  2. 請求項1に記載の処理フロー生成システムであって、
    前記検出部は、
    前記第1処理フローと前記第2処理フローとの間において、パラメータの種類および該パラメータが取り得る値が共通するとともに、1つの処理あるいは1つの処理と該1つの処理を行うためのデータを得る順序が同一の全ての処理とを含む2以上の処理、によって構成される部分的な処理シーケンスを検出し、
    前記第2変更処理が、
    前記第1処理フローにおいて前記部分的な処理シーケンスを構成する1以上の処理に係る1以上のパラメータと、前記第2処理フローにおいて前記部分的な処理シーケンスを構成する1以上の処理に係る1以上のパラメータとの間において、種類が対応する同一の数のパラメータの値が入れ替えられる交叉処理を含む、処理フロー生成システム。
  3. 請求項2に記載の処理フロー生成システムであって、
    前記第1処理フローと前記第2処理フローとの間において、前記部分的な処理シーケンスは同一である、処理フロー生成システム。
  4. 請求項1に記載の処理フロー生成システムであって、
    前記第1処理フローと前記第2処理フローとの間において、前記検出部によって検出される1以上の処理は、同種の処理である、処理フロー生成システム。
  5. 請求項1から請求項4の何れか1つの請求項に記載の処理フロー生成システムであって、
    前記処理部は、
    予め設定された判定ルールに従って、前記変更部において前記第1変更処理および前記第2変更処理のうちの何れの変更処理を実行するのか判定する判定部、を更に有し、
    前記処理部において、前記取捨選択部による前記取捨選択が行われた後における、前記判定部による判定結果に従った前記変更部による前記変更処理の実施、該変更部による前記変更処理によって得られた各処理フローに係る前記評価値の前記評価部による算出、および前記取捨選択部による該評価値に基づく前記取捨選択の実行、が繰り返されることで、前記出力データと前記目標データとの差異が低減される、処理フロー生成システム。
  6. 記憶部と、処理部と、を備え、
    前記記憶部は、入力データおよび目標データを記憶し、
    前記処理部は、
    複数の処理の順序を示す処理シーケンスと、該複数の処理に係る1以上のパラメータの値とによってそれぞれ規定される複数の処理フローを取得する取得部と、
    各前記処理フローについて、予め設定された第1変更ルールに従って前記処理シーケンスの少なくとも一部の処理を変更する第1変更処理、および予め設定された第2変更ルールに従って前記1以上のパラメータの値の少なくとも一部の値を変更する第2変更処理を実施する変更部と、
    予め設定された判定ルールに従って、前記変更部において前記第1変更処理および前記第2変更処理のうちの何れの変更処理を実行するのか判定する判定部と、
    前記変更部によって前記変更処理が施された後の各前記処理フローについて、前記入力データに該処理フローに従った処理が施されることで得られる出力データと、前記目標データとの差異に応じた評価値を算出する評価部と、
    各前記処理フローに係る前記評価値に基づいて、前記複数の処理フローについて取捨選択を行う取捨選択部と、を有し、
    前記処理部において、前記取捨選択部による前記取捨選択が行われた後における、前記判定部による判定結果に従った前記変更部による前記第1変更処理および前記第2変更処理のうちの何れか一方の変更処理の実施、該変更部による前記変更処理によって得られた各処理フローに係る前記評価値の前記評価部による算出、および前記取捨選択部による該評価値に基づく前記取捨選択の実行、が繰り返されることで、前記出力データと前記目標データとの差異が低減される、処理フロー生成システム。
  7. 請求項6に記載の処理フロー生成システムであって、
    前記変更部は、
    前記第1変更処理を実施した後に、該第1変更処理による前記処理シーケンスの変更に合わせて、該処理シーケンスとともに処理フローを規定している前記1以上のパラメータの値を変更する、処理フロー生成システム。
  8. 請求項5から請求項7の何れか1つの請求項に記載の処理フロー生成システムであって、
    前記判定部は、
    乱数を発生させ、該乱数と閾値との関係に基づいて、前記変更部において前記第1変更処理および前記第2変更処理のうちの何れの変更処理を実行するのか判定する、処理フロー生成システム。
  9. 請求項5から請求項7の何れか1つの請求項に記載の処理フロー生成システムであって、
    前記判定ルールは、
    1以上の前記第1変更処理および1以上の前記第2変更処理についての順序を規定しているルールを含む、処理フロー生成システム。
  10. 請求項1から請求項9の何れか1つの請求項に記載の処理フロー生成システムであって、
    前記第1変更処理が、遺伝的プログラミングを用いた進化的計算を行う処理を含み、
    前記第2変更処理が、遺伝的アルゴリズムを用いた進化的計算を行う処理を含む、処理フロー生成システム。
  11. 記憶部と、処理部と、を備えた情報処理システムにおける処理フローを生成する処理フロー生成方法であって、
    前記記憶部は、入力データおよび目標データを記憶し、
    前記処理部は、
    複数の処理の順序を示す処理シーケンスと該複数の処理に係る1以上のパラメータの値とによってそれぞれ規定される第1処理フローおよび第2処理フローを含む複数の処理フローを取得する取得工程と、
    前記第1処理フローと前記第2処理フローとの間において、パラメータの種類および該パラメータが取り得る値が共通する1以上の処理を検出する検出工程と、
    各前記処理フローについて、予め設定された第1変更ルールに従って前記処理シーケンスの少なくとも一部の処理を変更する第1変更処理、および予め設定された第2変更ルールに従って前記1以上のパラメータの値のうちの少なくとも一部のパラメータの値を変更する第2変更処理のうちの少なくとも一方の変更処理を実施する変更工程と、
    前記変更工程における前記第1変更処理および前記第2変更処理の少なくとも一方の変更処理が施された後の各前記処理フローについて、前記入力データに該処理フローに従った処理が施されることで得られる出力データと、前記目標データとの差異に応じた評価値を算出する評価工程と、
    各前記処理フローに係る前記評価値に基づいて、前記複数の処理フローについて取捨選択を行う取捨選択工程と、を有する情報処理を実行し、
    前記変更工程における前記第2変更処理が、
    前記検出工程において前記第1処理フローから検出された1以上の処理における1以上のパラメータと、前記検出工程において前記第2処理フローから検出された1以上の処理における1以上のパラメータとの間において、種類が対応する同一の数のパラメータの値が入れ替えられる交叉処理を含み、
    前記処理部によって、前記取捨選択工程における前記取捨選択の実行後における、前記変更工程における前記第1変更処理および前記第2変更処理のうちの少なくとも一方の変更処理の実施、該変更工程における前記少なくとも一方の変更処理によって得られた各処理フローに係る前記評価値の前記評価工程における算出、および前記取捨選択工程における該評価値に基づく前記取捨選択の実行、が繰り返されることで、前記出力データと前記目標データとの差異が低減される、処理フロー生成方法。
  12. 記憶部と、処理部と、を備えた情報処理システムにおける処理フローを生成する処理フロー生成方法であって、
    前記記憶部は、入力データおよび目標データを記憶し、
    前記処理部は、
    複数の処理の順序を示す処理シーケンスと、該複数の処理に係る1以上のパラメータの値とによってそれぞれ規定される複数の処理フローを取得する取得工程と、
    予め設定された判定ルールに従って、各前記処理フローについて、予め設定された第1変更ルールに従って前記処理シーケンスの少なくとも一部の処理を変更する第1変更処理、および予め設定された第2変更ルールに従って前記1以上のパラメータの値の少なくとも一部の値を変更する第2変更処理のうちの何れの変更処理を実施するのか判定する判定工程と、
    前記判定工程における判定結果に応じて、各前記処理フローについて、前記第1変更処理および前記第2変更処理の何れかを実施する変更工程と、
    各前記処理フローについて、前記入力データに該処理フローに従った処理が施されることで得られる出力データと、前記目標データとの差異に応じた評価値を算出する評価工程と、
    各前記処理フローに係る前記評価値に基づいて、前記複数の処理フローの取捨選択を行う取捨選択工程と、を有する情報処理を実行し、
    前記処理部によって、前記取捨選択工程における前記取捨選択が行われた後に、前記判定工程における判定結果に従った前記変更工程における前記第1変更処理および前記第2変更処理のうちの何れか一方の変更処理の実施、該変更工程における前記変更処理によって得られた各処理フローについての前記評価工程における前記評価値の算出、および前記取捨選択工程における該評価値に基づく前記取捨選択の実行、が繰り返されることで、前記出力データと前記目標データとの差異が低減される、処理フロー生成方法。
  13. 情報処理システムに含まれる処理部によって実行されることで、該情報処理システムを、請求項1から請求項10の何れか1つの請求項に記載の処理フロー生成システムとして機能させる、プログラム。
JP2016070558A 2016-03-31 2016-03-31 処理フロー生成システム、処理フロー生成方法、およびプログラム Pending JP2017182552A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016070558A JP2017182552A (ja) 2016-03-31 2016-03-31 処理フロー生成システム、処理フロー生成方法、およびプログラム
PCT/JP2017/002419 WO2017169023A1 (ja) 2016-03-31 2017-01-25 処理フロー生成システム、処理フロー生成方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016070558A JP2017182552A (ja) 2016-03-31 2016-03-31 処理フロー生成システム、処理フロー生成方法、およびプログラム

Publications (1)

Publication Number Publication Date
JP2017182552A true JP2017182552A (ja) 2017-10-05

Family

ID=59964061

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016070558A Pending JP2017182552A (ja) 2016-03-31 2016-03-31 処理フロー生成システム、処理フロー生成方法、およびプログラム

Country Status (2)

Country Link
JP (1) JP2017182552A (ja)
WO (1) WO2017169023A1 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4862150B2 (ja) * 2005-09-21 2012-01-25 国立大学法人横浜国立大学 進化計算システム及び進化計算方法
JP2015230702A (ja) * 2014-06-06 2015-12-21 株式会社リコー 処理フロー生成装置、処理フロー生成方法、処理フロー生成プログラム、情報処理装置の製造方法及び情報処理プログラムの製造方法
EP3159790B1 (en) * 2014-06-19 2021-03-24 Fujitsu Limited Program generation device, program generation method, and program

Also Published As

Publication number Publication date
WO2017169023A1 (ja) 2017-10-05

Similar Documents

Publication Publication Date Title
Shi et al. Adapting neural networks for the estimation of treatment effects
JP6708847B1 (ja) 機械学習装置及び方法
JP6660900B2 (ja) モデル統合装置、モデル統合システム、方法およびプログラム
US20190340507A1 (en) Classifying data
CN105608459B (zh) 商品图片的分割方法及其装置
WO2006132194A1 (ja) 情報処理装置及び情報処理方法、画像処理装置及び画像処理方法、並びにコンピュータ・プログラム
CN107609648B (zh) 一种结合堆叠降噪稀疏自动编码器的遗传算法
JP7095599B2 (ja) 辞書学習装置、辞書学習方法、データ認識方法およびコンピュータプログラム
JP6299759B2 (ja) 予測関数作成装置、予測関数作成方法、及びプログラム
CN112116001A (zh) 图像识别方法、装置及计算机可读存储介质
JP6641195B2 (ja) 最適化方法、最適化装置、プログラムおよび画像処理装置
Klasen et al. Image-based automated species identification: can virtual data augmentation overcome problems of insufficient sampling?
JP6933217B2 (ja) テーブル意味推定システム、方法およびプログラム
JP6692272B2 (ja) 信号調整装置、信号生成学習装置、方法、及びプログラム
JP6988995B2 (ja) 画像生成装置、画像生成方法および画像生成プログラム
Cho et al. Genetic evolution processing of data structures for image classification
WO2017169023A1 (ja) 処理フロー生成システム、処理フロー生成方法、およびプログラム
KR101948235B1 (ko) 클러스터 앙상블을 통한 소프트웨어 아키텍처 모듈 뷰 복원 프레임워크 장치 및 방법
Sharma et al. An approach to ripening of pineapple fruit with model Yolo v5
CN103902706A (zh) 一种基于svm的大数据分类预测方法
JP7472471B2 (ja) 推定システム、推定装置および推定方法
JP2014203157A (ja) 画像処理装置、画像処理方法及びプログラム
US20220335293A1 (en) Method of optimizing neural network model that is pre-trained, method of providing a graphical user interface related to optimizing neural network model, and neural network model processing system performing the same
JP2016062249A (ja) 識別辞書学習システム、認識辞書学習方法および認識辞書学習プログラム
WO2022167483A1 (en) System for clustering data points