IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ナチュラル コンピューテイション エルエルシーの特許一覧

特表2024-502030遺伝的プログラミングを使用する自動特徴抽出
<>
  • 特表-遺伝的プログラミングを使用する自動特徴抽出 図1
  • 特表-遺伝的プログラミングを使用する自動特徴抽出 図2
  • 特表-遺伝的プログラミングを使用する自動特徴抽出 図3
  • 特表-遺伝的プログラミングを使用する自動特徴抽出 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-17
(54)【発明の名称】遺伝的プログラミングを使用する自動特徴抽出
(51)【国際特許分類】
   G06N 3/086 20230101AFI20240110BHJP
   G06N 3/126 20230101ALI20240110BHJP
   G06F 8/30 20180101ALI20240110BHJP
   G06F 9/44 20180101ALI20240110BHJP
   G06F 8/77 20180101ALI20240110BHJP
   G06F 17/18 20060101ALI20240110BHJP
【FI】
G06N3/086
G06N3/126
G06F8/30
G06F9/44
G06F8/77
G06F17/18 D
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023539963
(86)(22)【出願日】2021-12-30
(85)【翻訳文提出日】2023-08-25
(86)【国際出願番号】 US2021065599
(87)【国際公開番号】W WO2022147190
(87)【国際公開日】2022-07-07
(31)【優先権主張番号】17/137,934
(32)【優先日】2020-12-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】522224449
【氏名又は名称】ナチュラル コンピューテイション エルエルシー
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】ランダエタ,デイビッド,ジェイムズ
【テーマコード(参考)】
5B056
5B376
【Fターム(参考)】
5B056BB64
5B376BC31
5B376DA22
5B376DA24
5B376DA28
(57)【要約】
方法が汎用計算ビルディングブロックを進化させる。この方法は、ランダム生成プログラム、又はランダム化された標的を使用する遺伝的プログラミングインスタンスによって進化されるプログラムを用いて母集団を初期化する。この方法は、ランダム生成試験入力のリストも得る。この方法は、ランダム生成バイナリ文字列の入出力ペアを含む標的データセットを生成する。この方法は、標的データセットに基づいて各プログラムに適応度スコアを指定するために適応度関数も適用する。この方法は、遺伝的オペレータを適用し、新規性の条件を満たす子孫を選択することによってシードリストを増大させる。新規性の条件はランダム生成試験入力のリストについて固有の出力をもたらすプログラムの能力を表す。この方法は終了条件が満たされるまで反復される。終了条件は1つ又は複数の遺伝的プログラミングインスタンスを解くシードリスト内のプログラムの能力を表す。
【特許請求の範囲】
【請求項1】
汎用計算ビルディングブロックを進化させる方法であって、
(i)プログラムをランダムに生成すること、又は(ii)ランダム化された標的を使用する遺伝的プログラミングインスタンスによって進化されるプログラムを使用することにより、関数を符号化する前記プログラムを用いて母集団を初期化すること、
ランダム生成試験入力のリストを得ること、
ランダム生成バイナリ文字列の初期の入出力ペアを含む標的データセットを生成すること、
前記母集団内の各プログラムに適応度スコアを指定するために適応度関数を適用することであって、前記適応度スコアは前記標的データセットの前記初期の入出力ペアとマッチする前記母集団内の個々のプログラムの能力を少なくとも表す、こと、
新規性の条件を満たす前記母集団内の前記プログラムのコピーを用いてシードリストを初期化することであって、前記新規性の条件はランダム生成試験入力の前記リストについて別個の及び固有の出力をもたらすプログラムの能力を表す、こと、
前記シードリストの終了条件が満たされているかどうかを判定することであって、前記終了条件は1つ又は複数の遺伝的プログラミングインスタンスを解く前記シードリスト内の1つ又は複数のプログラムの能力を表す、こと、
前記終了条件が満たされていないという判定に従い、
少なくとも1つの遺伝的オペレータを前記母集団に適用してプログラムの現在の子孫集団を得ることであって、前記少なくとも1つの遺伝的オペレータは、前記1つ又は複数の遺伝的プログラミングインスタンスを解くために前記母集団内のプログラムの適応度スコアに基づいて前記シードリストを増大させるために前記母集団に適用されるオペレータを含む、こと、並びに
前記終了条件が満たされるまで次のステップ、つまり
ランダム生成バイナリ文字列の新たな入出力ペアを含む新たな標的データセットを生成すること、
前記現在の子孫集団内の各プログラムに新たな適応度スコアを指定するために前記適応度関数を適用することであって、前記新たな適応度スコアは前記新たな標的データセットの前記新たな入出力ペアとマッチする前記現在の子孫集団内の個々のプログラムの能力を少なくとも表す、こと、
前記新規性の条件を満たす前記現在の子孫集団内の前記プログラムのコピーを前記シードリストに付加すること、及び
プログラムの新たな子孫集団を得るために前記現在の子孫集団に前記少なくとも1つの遺伝的オペレータを適用し、プログラムの前記新たな子孫集団を前記現在の子孫集団として設定すること
を繰り返すこと
を含む、方法。
【請求項2】
複数の問題を表す遺伝的プログラミングインスタンスの試験スイート内の集団を初期化するために前記シードリストを使用すること、及び
前記試験スイートの試験結果に基づいて前記終了条件が満たされているかどうかを判定すること
を更に含む、請求項1に記載の方法。
【請求項3】
前記少なくとも1つの遺伝的オペレータを前記現在の子孫集団に適用するとき、前記現在の子孫集団内の前記プログラムに優先して前記シードリスト内の前記プログラムをベルヌーイ分布に基づいて親として選択することを更に含み、前記シードリスト内の各プログラムは親として選択される可能性が同等である、請求項1に記載の方法。
【請求項4】
前記母集団又は前記現在の子孫集団内のプログラムが前記新規性の条件を満たすかどうかは、
前記ランダム生成試験入力に対して、前記シードリスト内の前記プログラムによって符号化される関数によって生成される出力シーケンスと異なる出力シーケンスを前記ランダム生成試験入力について生成する関数を前記プログラムが符号化しているという判定
に基づく、請求項1に記載の方法。
【請求項5】
前記シードリスト内の個々のプログラムごとに、前記ランダム生成試験入力について前記個々のプログラムによって符号化される前記関数によって生成される出力シーケンスを含む関数シグネチャを決定し記憶すること、及び
前記関数シグネチャを取得すること
を更に含み、
前記シードリスト内のプログラムによって符号化される関数と異なる関数を前記個々のプログラムが符号化するという判定が、
前記関数シグネチャと異なる出力シーケンスを前記ランダム生成試験入力について生成する前記関数を前記個々のプログラムが符号化するという判定
に更に基づく、
請求項4に記載の方法。
【請求項6】
前記終了条件が前記シードリストの少なくともサイズに依存する、請求項1に記載の方法。
【請求項7】
前記終了条件は前記シードリストが所定の増大率で増大しているかどうかという判定に少なくとも依存する、請求項1に記載の方法。
【請求項8】
前記適応度関数を適用するとき恣意的に均衡を破ることを更に含む、請求項1に記載の方法。
【請求項9】
前記シードリストを初期化し前記シードリストに付加するとき、入力を読み取らない自明な関数を符号化するプログラムを前記シードリストから破棄することを更に含む、請求項1に記載の方法。
【請求項10】
入力を読み取らない前記自明な関数を符号化する前記シードリスト内の前記プログラムを識別するために構文解析を行うことを更に含む、請求項9に記載の方法。
【請求項11】
前記シードリストを初期化し前記シードリストに付加するとき、異常なランタイム挙動を有する関数を符号化するプログラム、又は異常な資源要件を有する関数を符号化するプログラムを前記シードリストから破棄することを更に含む、請求項1に記載の方法。
【請求項12】
前記シードリスト内の所定数のプログラムを使用して遺伝的プログラミングの新たなインスタンスのための初期集団をシードすることを更に含む、請求項1に記載の方法。
【請求項13】
前記少なくとも1つの遺伝的オペレータが、選択オペレータ、突然変異オペレータ、及び交叉オペレータの1つ又は複数である、請求項1に記載の方法。
【請求項14】
前記ランダム生成試験入力の各入力及びランダム生成バイナリ文字列の前記入出力ペアの各入力が入力確率分布に基づいて生成され、前記ランダム生成バイナリ文字列の入出力ペアの各出力が出力確率分布に基づいて生成される、請求項1に記載の方法。
【請求項15】
前記入力確率分布がピクセル強度の範囲にわたるガウス分布であり、前記出力確率分布が[0.0,1.0]上のガウス分布である、請求項14に記載の方法。
【請求項16】
前記適応度関数は同じ入力に対してビット単位で反対の出力をもたらす関数を符号化するプログラムに対して同じ適応度スコアを指定する、請求項1に記載の方法。
【請求項17】
前記適応度関数がプログラムの出力と標的データセットとの間のマッチ度を測定するために-1から1までの適応度スコアを前記プログラムに割り当て、より大きい値はより高いマッチ度を示す、請求項1に記載の方法。
【請求項18】
前記1つ又は複数の遺伝的プログラミングインスタンスが、手書き数字の部分的分類のための遺伝的プログラミングインスタンスを含み、ランダム生成バイナリ文字列の前記初期の入出力ペア及びランダム生成バイナリ文字列の前記新たな入出力ペアがMNISTデータベースからの画像に基づいて生成され、前記方法が2000回の反復後に前記方法を終了することを更に含む、請求項1に記載の方法。
【請求項19】
1つ又は複数のプロセッサと、
メモリと
を含む、データ視覚表現を生成するためのコンピュータシステムであって、
前記メモリは前記1つ又は複数のプロセッサによって実行されるように構成される1つ又は複数のプログラムを記憶し、前記1つ又は複数のプログラムは
関数を符号化するランダム生成プログラムを用いて母集団を初期化すること、
ランダム生成試験入力のリストを得ること、
ランダム生成バイナリ文字列の初期の入出力ペアを含む標的データセットを生成すること、
前記母集団内の各プログラムに適応度スコアを指定するために適応度関数を適用することであって、前記適応度スコアは前記標的データセットの前記初期の入出力ペアとマッチする個々のプログラムの能力を少なくとも表す、こと、
新規性の条件を満たす前記母集団内の前記プログラムのコピーを用いてシードリストを初期化することであって、前記新規性の条件はランダム生成試験入力の前記リストについて別個の及び固有の出力をもたらすプログラムの能力を表す、こと、
前記シードリストの終了条件が満たされているかどうかを判定することであって、前記終了条件は1つ又は複数の遺伝的プログラミングインスタンスを解く前記シードリスト内の1つ又は複数のプログラムの能力を表す、こと、
前記終了条件が満たされていないという判定に従い、
少なくとも1つの遺伝的オペレータを前記母集団に適用してプログラムの現在の子孫集団を得ることであって、前記少なくとも1つの遺伝的オペレータは、前記1つ又は複数の遺伝的プログラミングインスタンスを解くために前記母集団内のプログラムの適応度スコアに基づいて前記シードリストを増大させるために前記母集団に適用されるオペレータを含む、こと、並びに
前記終了条件が満たされるまで次のステップ、つまり
ランダム生成バイナリ文字列の新たな入出力ペアを含む新たな標的データセットを生成すること、
前記現在の子孫集団内の各プログラムに新たな適応度スコアを指定するために前記適応度関数を適用することであって、前記新たな適応度スコアは前記新たな標的データセットの前記新たな入出力ペアとマッチする前記現在の子孫集団内の個々のプログラムの能力を少なくとも表す、こと、
前記新規性の条件を満たす前記現在の子孫集団内の前記プログラムのコピーを前記シードリストに付加すること、及び
プログラムの新たな子孫集団を得るために前記現在の子孫集団に前記少なくとも1つの遺伝的オペレータを適用し、プログラムの前記新たな子孫集団を前記現在の子孫集団として設定すること
を繰り返すこと
を行うための命令を含む、コンピュータシステム。
【請求項20】
ディスプレイ、1つ又は複数のプロセッサ、及びメモリを有するコンピュータシステムによって実行されるように構成される1つ又は複数のプログラムを記憶する非一時的コンピュータ可読記憶媒体であって、前記1つ又は複数のプログラムは
関数を符号化するランダム生成プログラムを用いて母集団を初期化すること、
ランダム生成試験入力のリストを得ること、
ランダム生成バイナリ文字列の初期の入出力ペアを含む標的データセットを生成すること、
前記母集団内の各プログラムに適応度スコアを指定するために適応度関数を適用することであって、前記適応度スコアは前記標的データセットの前記初期の入出力ペアとマッチする前記母集団内の個々のプログラムの能力を少なくとも表す、こと、
新規性の条件を満たす前記母集団内の前記プログラムのコピーを用いてシードリストを初期化することであって、前記新規性の条件はランダム生成試験入力の前記リストについて別個の及び固有の出力をもたらすプログラムの能力を表す、こと、
前記シードリストの終了条件が満たされているかどうかを判定することであって、前記終了条件は1つ又は複数の遺伝的プログラミングインスタンスを解く前記シードリスト内の1つ又は複数のプログラムの能力を表す、こと、
前記終了条件が満たされていないという判定に従い、
少なくとも1つの遺伝的オペレータを前記母集団に適用してプログラムの現在の子孫集団を得ることであって、前記少なくとも1つの遺伝的オペレータは、前記1つ又は複数の遺伝的プログラミングインスタンスを解くために前記母集団内のプログラムの適応度スコアに基づいて前記シードリストを増大させるために前記母集団に適用されるオペレータを含む、こと、並びに
前記終了条件が満たされるまで次のステップ、つまり
ランダム生成バイナリ文字列の新たな入出力ペアを含む新たな標的データセットを生成すること、
前記現在の子孫集団内の各プログラムに新たな適応度スコアを指定するために前記適応度関数を適用することであって、前記新たな適応度スコアは前記新たな標的データセットの前記新たな入出力ペアとマッチする前記現在の子孫集団内の個々のプログラムの能力を少なくとも表す、こと、
前記新規性の条件を満たす前記現在の子孫集団内の前記プログラムのコピーを前記シードリストに付加すること、及び
プログラムの新たな子孫集団を得るために前記現在の子孫集団に前記少なくとも1つの遺伝的オペレータを適用し、プログラムの前記新たな子孫集団を前記現在の子孫集団として設定すること
を繰り返すこと
を行うための命令を含む、非一時的コンピュータ可読記憶媒体。
【請求項21】
前記入力確率分布が、機械学習モデルのための訓練データセットに基づくサンプル空間を使用する、請求項14に記載の方法。
【請求項22】
前記シードリストを1組の候補特徴と見なし、抽出特徴をもたらす部分集合を選択するために特徴選択技法を適用することにより前記訓練データセットの特徴を抽出することを更に含む、請求項21に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
優先権の主張及び関連出願
[0001] 本願は、2019年12月06日に出願され「汎用計算ビルディングブロックを作成するためのプロセス(Process for Creating Generic Computational Building Blocks)」と題された米国仮特許出願第62/944,468号の優先権を主張する、2020年5月12日に出願され「汎用ビルディングブロックを作成するために遺伝的プログラミングを使用すること(Using Genetic Programming to Create Generic Building Blocks)」と題された米国特許出願第16/763,268号の一部継続出願である、2020年12月30日に出願され「汎用ビルディングブロックを作成するために遺伝的プログラミングを使用すること(Using Genetic Programming to Create Generic Building Blocks)」と題された米国特許出願第17/137,934号の優先権を主張し、それらのそれぞれは参照によりその全体を本明細書に援用する。
【0002】
技術分野
[0002] 本開示は遺伝的プログラミングシステムに関し、具体的には遺伝的プログラミングを使用する自動特徴抽出のためのシステム、方法、及び装置に関する。
【背景技術】
【0003】
背景
[0003] 機械学習では、特徴抽出は情報コンテンツを保ちながら冗長性を除去する測定データの変換を発見するプロセスである。変換済みデータ要素は元データの所謂特徴である。入力次元としても知られる入力データセットを記述するのに必要な要素の数を減らすことにより、特徴抽出は複雑さを減らし、未知のデータを予測するためにモデルを構築すること等の機械学習におけるその後のステップの有効度を高める。遺伝的プログラミング(GP)を使用する自動特徴抽出のための従来の方法は、教師なし学習に使用できず、任意の複雑さの特徴をもたらすことができず、及び/又は特徴をプログラミング言語で表すことができない。
【発明の概要】
【課題を解決するための手段】
【0004】
概要
[0004] 従って、遺伝的プログラミングを使用する自動特徴抽出のための新たな手法が求められている。本明細書に記載する技法は特徴を説明可能にする利点を有し、それは特徴が人間可読コンピュータプログラムによって記述されるからであり、GPを使用する過去のかかる方法と異なり、本技法は教師なし学習及び教師あり学習の両方に適している。機械学習モデルのための訓練データセットを所与とし、本明細書に記載する技法による方法は汎用ビルディングブロックを作成することによって訓練データセットの特徴を抽出する。本方法がランダム生成入力を必要とするたびに、ランダムビット列を生成するのではなく、本方法は訓練データセットから入力をランダムに選択する。本方法は、シードリストを1組の候補特徴と見なし、抽出特徴をもたらす部分集合を選択するために特徴選択技法を適用することにより訓練データセットの特徴も抽出する。任意の更なる修正は、集団をランダムに初期化するのではなく過去に作成された汎用ビルディングブロックを使用して母集団を初期化する。
【0005】
[0005] 添付の特許請求の範囲内のシステム、方法、及び装置の様々な実装形態が幾つかの側面をそれぞれ有し、そのどれも本明細書に記載する所望の特質に単独で関与するわけではない。添付の特許請求の範囲を制限することなしに、一部の顕著な特徴を記載する。この解説を検討した後、及びとりわけ「詳細な説明」と題した節を読んだ後、様々な実装形態の特徴が遺伝的プログラミングを使用する自動特徴抽出にどのように使用されるのかが理解される。
【0006】
図面の簡単な説明
[0006] 本開示をより詳細に理解できるように、その一部を添付図面に示す様々な実装形態の特徴に関してより具体的な説明を行うことができる。但し、添付図面は本開示のより顕著な特徴を示すに過ぎず、従って限定的と見なすべきではなく、この説明は他の効果的な特徴を認める場合がある。
【図面の簡単な説明】
【0007】
図1】[0007]一部の実施形態による、遺伝的プログラミングインスタンスをシードするための汎用ビルディングブロックを作成するために遺伝的プログラミングを使用するためのシステムのブロック図である。
図2】[0008]一部の実施形態による、遺伝的プログラミングインスタンスをシードするための汎用ビルディングブロックを作成するために遺伝的プログラミングを使用するための方法の流れ図である。
図3】[0009]一部の実施形態による、幾つかの試行にわたるランクに対する産出変数(product variable)のグラフプロットを示す。
図4】[0010]一部の実施形態による、降順のランクに対する対立遺伝子1の最終頻度のグラフプロットを示す。
【発明を実施するための形態】
【0008】
[0011] 慣行に従って図示の様々な特徴を縮尺通りに描いていない場合がある。従って明瞭にするために様々な特徴の寸法を恣意的に拡大又は縮小する場合がある。加えて、図面の一部は所与のシステム、方法、又は装置のコンポーネントの全てを描いていない場合がある。最後に、本明細書及び図面の全体を通して同様の特徴を示すために同様の参照番号を使用する。
【0009】
詳細な説明
[0012] 本明細書に記載の様々な実装形態は、遺伝的プログラミングインスタンスをシードするための汎用計算ビルディングブロックを作成するために遺伝的プログラミングを使用するシステム、方法、及び/又は装置を含む。
【0010】
[0013] 添付図面に示す実装例の完全な理解を与えるために多数の詳細を本明細書に記載する。但し、本発明は特定の詳細の多くがなくても実践することができる。本明細書に記載する実装形態のより関係がある側面を無駄に不明瞭にしないために、よく知られている方法、コンポーネント、及び回路は網羅的な詳細さでは記載していない。
【0011】
[0014] 図1は、遺伝的プログラミングを使用して汎用計算ビルディングブロックを作成するためのシステム100の図である。一定の具体的特徴を示すが、簡潔にするために、及び本明細書で開示する実装例のより関係がある側面を不明瞭にしないために他の様々な特徴が示されていないことを当業者なら本開示から理解されよう。
【0012】
[0015] GPシステムは様々なやり方で実装することができるが、典型的にはプログラミング言語の選択、親プログラムを子プログラムに再結合するための1組の遺伝的オペレータ、解くための標的問題、及び所与のプログラムが標的問題をどの程度上手く解くのかを決定する適応度関数を規定する。典型的には、プログラム集団がランダム生成コードによって初期化され、何らかの適応度の閾値を上回るプログラムを得ること等の何らかの終了基準が満たされるまでその後のステップが繰り返される:
1.適応度関数を適用して集団内のプログラムごとにスコアをもたらす。
2.ルーレット盤選択等の確率論的方法を使用してプログラムをそのスコアに従って選択する。
3.被選択プログラムに遺伝的オペレータを適用して新たな集団をもたらす。
【0013】
[0016] 再び図1を参照し、サーバ102は典型的には1つ又は複数のプロセッサ、メモリ104、電源、入力/出力(I/O)サブシステム、及びそれらのコンポーネントを相互接続するための通信バスを含む。プロセッサはメモリ104内に記憶されるモジュール、プログラム、及び/又は命令を実行し、それにより一部の実施形態による本明細書に記載の方法を含む処理操作を実行する。一部の実施形態では、サーバ102が視覚表現(例えばスナップショット又はプログラム)を表示するためのディスプレイも含む。
【0014】
[0017] 一部の実施形態では、メモリ104が1つ又は複数のプログラム(例えば命令の組)及び/又はデータ構造を記憶する。一部の実装形態では、メモリ104又はメモリ104の非一時的コンピュータ可読記憶媒体が以下のプログラム、モジュール、及びデータ構造、又はその部分集合若しくは拡張集合を記憶する:
・オペレーティングシステム
・以下を含む汎用ビルディングブロック生成モジュール120:
○一部の実施形態に従ってその例を以下に記載する適応度関数(2)122
○(以下に記載の)プログラム106の集団の世代を進化させるために使用される典型的なオペレータ(例えば選択、突然変異、交叉)を含む汎用オペレータ124、及び
○(以下に記載の)標的データセット112を生成する標的データセット生成126
・以下を含む特徴抽出モジュール160:
○入力データセット162。一部の実施形態では(例えば以下の使用事例の例について記載する節の中で説明するように)特徴抽出モジュール160が入力データセットを正規化する、及び
○遺伝的プログラミングモジュール120によって計算される特徴候補から特徴を選択する特徴選択モジュール164。一部の実施形態によれば、モジュール164は入力データセット162のために選択される特徴を記憶する、及び
・以下を含むデータ構造150:
○自己完結型プログラム(例えば選択されたプログラミング言語の規則に従うプログラム)であるプログラム又はプログラム断片(例えばコードスニペット)を含むプログラム106の集団
○任意で(以下に記載の)関数シグネチャ108
○以下に記載の遺伝的プログラミングインスタンスをシードするために使用される、汎用ビルディングブロック生成モジュール120の出力である)シードリスト110、及び
○以下に記載の標的データセット112
【0015】
[0018] 上記で識別したモジュール(例えばデータ構造及び/又は命令の組を含むプログラム)は、別個のソフトウェアプログラム、手続き、又はモジュールとして実装する必要はなく、従って様々な実装形態においてこれらのモジュールの様々な部分集合を組み合わせ或いは再構成することができる。一部の実施形態では、メモリ104が上記で識別したモジュールの部分集合を記憶する。
【0016】
[0019] 一部の実施形態では、データベース130(例えばローカルデータベース及び/又はリモートデータベース)が、上記で識別した1つ又は複数のモジュール及びモジュールに関連するデータを記憶する。更に、メモリ104は上記で記載していない追加のモジュールを記憶し得る。データベース130は、プログラム106、関数シグネチャ108、シードリスト110、及び/又は標的データセット112のスナップショットを記憶する。一部の実施形態では、メモリ104又はメモリ104の非一時的コンピュータ可読記憶媒体内に記憶されるモジュールが、以下に記載する方法の中の個々の操作を実装するための命令を提供する。一部の実施形態では、これらのモジュールの一部又は全てが、モジュールの機能の一部又は全てを包含する専用ハードウェア回路を用いて実装され得る。上記で識別した要素の1つ又は複数が1つ又は複数のプロセッサによって実行され得る。
【0017】
[0020] 一部の実施形態は、有線及び/又は無線接続によるローカル及び/又は広域通信ネットワーク(例えばインターネット)を介してサーバ102をクライアント装置、データベース130等の1つ又は複数の装置に通信可能に結合するI/Oサブシステムを含む。一部の実施形態は、システムコンポーネント間の通信を相互接続し制御する回路(チップセットと呼ばれることもある)を任意で含む通信バスを含む。
【0018】
[0021] シードリスト110内のプログラム及び/又はデータベース130内に記憶されるスナップショットは、遺伝的プログラミングインスタンス140をシードし及び/又は試験するために使用される。遺伝的プログラミングインスタンス140の例は、(以下に記載の)手書きテキストの画像処理又は認識を含む。一部の実施形態では、シードリスト110が終了条件を満たすかどうかを判定するために使用される遺伝的プログラミングインスタンスをインスタンス140が記憶する(その例を以下に記載する)。
【0019】
汎用ビルディングブロックを作成するために遺伝的プログラミングを使用するための方法の例
[0022] 一部の実施形態によれば、或る方法は遺伝的プログラミングインスタンスをシードするための汎用ビルディングブロックを作成するために遺伝的プログラミングを使用する。この方法又はプロセス(コードファーミングと呼ばれることもある)はGPのインスタンスである。この方法は、プログラムであって、その入出力ペアがランダムに生成される入出力ペアの所与のデータセットと可能な限り密にマッチする、プログラムをもたらす。一部の実施形態は、プログラム集団のそれぞれの新たな世代を有する新たな標的データセットをランダムに生成する。一部の実施形態では、常に存在する多岐にわたる可能な解と共に集団が進化する。
【0020】
[0023] このプロセスを成功裏に実装することができるGPインスタンスの特性について広い許容度がある。一部の実施形態は、(i)プログラミング言語がチューリング完全であること、つまりチューリングマシンが符号化できる如何なる関数も符号化できること、(ii)遺伝的オペレータが何らかの形の有性組み換え、例えば交叉を実装すること、及び(iii)弱選択の仮定が該当すること、つまり遺伝子型間の適応度のばらつきが組み換え率と比較して小さいことを要求する。要件(i)は、このプロセスによって発見されるビルディングブロックの再利用可能性を確実にする。要件(ii)及び(iii)は、プログラムが汎用ビルディングブロックであることを確実にする。
【0021】
[0024] 一部の実施形態では、このプロセスがプログラム断片である汎用ビルディングブロックをもたらす。一部の実施形態では、プログラム集団内の特定の断片をビルディングブロックとして識別する代わりに、このプロセスによってもたらされる全プログラムがビルディングブロックとして使用される。一部の実施形態では、正しいビルディングブロックが集団内の何処かに存在する限り、GPメカニクスがGPインスタンスの解へとビルディングブロックを決定し又は選択及び組み合わせる。
【0022】
[0025] 一部の実施形態では、GPの新たなインスタンスが汎用ビルディングブロックでシードされるときは常に、その初期集団はコードファーミングプロセスによってもたらされたプログラムから選択される。一部の実施形態は、プロセスによってもたらされたプログラムの最後の世代からプログラムを選択する。一部の実施形態は、後の世代を優先させながらプロセスの各世代内の最も適応したプログラムを取ることによってプログラム集合からビルディングブロックを選択する。一部の実施形態は、プロセスの各世代に適応度関数を適用し、最も高い適応度スコアを有するプログラムのコピーを作成する。一部の実施形態では、均衡が恣意的に破られる。一部の実施形態は、最初は空であるシードリストと呼ばれる永続的なプログラムリストの末尾に最も適応したプログラムを追加する。一部の実施形態では、新たなGPインスタンスがサイズnの初期集団を必要とする場合、シードリスト上の最後のn個のエントリが選択される。一部の実施形態では、シードリストがプロセスの最終成果物である。
【0023】
[0026] 一部の実施形態は、シードリストにフィルタを適用して重複する表現型(即ちプログラムによって符号化される関数)を除去してからリストを使用して集団を初期化する。このフィルタリングステップは集団のサイズを制限するのに役立つ。一部の実施形態は、重複する表現型を確率論的な意味で検出するために以下に記載の関数シグネチャを使用する技法を使用する。
【0024】
[0027] GPのよく知られている問題は、とりわけチューリング完全である任意の十分リッチなプログラミング言語におけるランダム生成プログラムが、自らの入力を常に無視し一定の出力をもたらす関数等の自明な関数を符号化する傾向にあることである。これはGPシステムが決して上昇(aloft)しない可能性があること、換言すれば興味深い挙動を決してもたらさない可能性があることを意味する。更に、たとえ非自明な挙動がもたらされても、遺伝的オペレータによって容易に破壊される点でそれは脆弱である傾向があり、そのためシステムは上昇し続けない可能性がある。理論上、上昇しそのままとどまる可能性は十分大きいプログラム集団を保つことによって上がり得るが、それには膨大な計算資源が必要となり得る。一部の実施形態は、上昇したままであるために以下に記載の技法の一部を使用する。
【0025】
[0028] 一部の実施形態では、或る世代から次の世代へと残存する更なる保証が一定の極めて適応した個体又はプログラムに与えられる。様々な実施形態において、本明細書に記載の考えはシードリストを使用して実装することができる。
【0026】
[0029] 一部の実施形態では、或る世代から次の世代へと残存する通常よりも高い確率が現在の集団の小さい部分集合に与えられる。一部の実施形態では、新規性の条件を満たす現在の集団からのプログラムのコピーを追加することによって現在の集団とは別のシードリストが増大する。
【0027】
[0030] 一部の実施形態では、シードリストが親選択プロセスに独特なやり方で関与する。従来の遺伝的プログラミングでは、現在の集団から次の親を選択するためにルーレット盤が回される。一部の実施形態によれば、盤を回す前に、(例えばベルヌーイ分布を作成するために)表になる確率が小さい(例えば確率=1/16)バイアスコインが投げられる。一部の実施形態は、コインが表になる場合はこの親選択に関して盤を回さず、現在の集団から親を選択しない。代わりに、一部の実施形態は一様確率分布を使用してシードリストから親を選択する(即ちシードリスト上の各プログラムは等しく選択される可能性が高い)。他方でコインが裏になる場合、一部の実施形態は通常通り続行して盤を回して現在の集団から親を選択する。一部の実施形態では、親の全ての選択でこの全プロセスが繰り返される。
【0028】
[0031] 一部の実施形態では、シードリストがプロセスの最終成果物である(コードファーミングと呼ばれることがある)。一部の実施形態では、シードリストに直近に追加されたプログラムが、それよりも前に追加されたプログラムよりもGPインスタンスをシードするのに有用だと考えられる。
【0029】
[0032] 一部の実施形態では、シードリストが全世代にわたって永続し、最初は空である。各世代で、現在の集団に適応度関数が適用された後、以下の条件を満たす現在の集団の全てのプログラム(個体とも呼ばれる)がシードリストに追加される。
a.(以下に記載するように)そのプログラムが明らかに自明ではない個体である。
b.そのプログラムが符号化する関数がシードリスト内の他の任意のプログラムによって符号化される関数と異なる。これはシステムの初期化中に試験入力の永続的リストをランダムに生成し、試験入力に対して異なる出力シーケンスを有するとき且つそのときに限り候補関数が異なると宣言することによって確率論的な意味で効率的に判定される。この出力シーケンスは関数のシグネチャと呼ばれることがある。
【0030】
[0033] 一部の実施形態では、非自明な関数がシードリストに本当に追加される何らかの保証を与えるために、自明な関数を符号化するプログラムの明らかな事例にフラグを立てるように適応度関数が修正され、それらのプログラムには可能な限り低いスコアが指定される。一部の実施形態は入力が決して読み取られないと判定するためにプログラムの自動構文解析を使用し、そのためプログラムを一度も実行することなしにそのプログラムに自明としてフラグを立てることができる。構文解析は、プログラムが読取命令を有さないかどうか又はそのような任意の命令が明らかに到達不能かどうかを判定する。明らかに自明なプログラムは、それを実行する試みが行われるとき異常終了するプログラムを含む。かかるプログラムは、メモリ空間又は総実行時間等の計算資源の限界を上回る任意のプログラムを含む。エラーのないプログラムを促進するために、一部の実施形態はそのようなプログラムに可能な限り低い適応度スコアを指定する。
【0031】
[0034] 上記で説明したように、シードリスト内のプログラムに与えられる利点は、次の世代の親になるための個体の選択が現在の世代ではなく小さい確率でシードリストから来ることであり、その場合はシードリスト内の全てのプログラムが選択される等しい確率を有する。
【0032】
進捗の測定
[0035] 一部の実施形態はこの節の中で説明する技法の一部を使用して進捗を測定し、プロセスを終了するのに十分な進捗があったかどうかを判定する。
【0033】
[0036] 一部の実施形態はシードリストのサイズを使用する。例えばシードリストが堅調なペースで増大している場合、堅調な進捗がある。一部の実施形態では、シードリスト内に少なくとも所定数のプログラム(例えば数千個のプログラム)がある場合、このプロセスが終わる。
【0034】
[0037] 一部の実施形態では、シードリストのコピーを周期的に(例えばプロセスの数百回の反復ごとに)使用して、様々な問題を表すGPインスタンスの試験スイート内の集団を初期化するために、より信頼できるがより資源集約的な手法が使用される。一部の実施形態は試験結果が時間と共に改善しているかどうかを判定する。試験結果が許容可能な解を与える場合、このプロセスが終えられる。
【0035】
スナップショット
[0038] 一部の実施形態は、プロセスが後で一時停止すること及び再開することを可能にするために必要なデータで構成されるシステムのスナップショットをロードし又は保存する。一部の実施形態では、スナップショットが以下の要素の一部又は全てを含む:
・プログラムの現在の集団及びその適応度スコア。
・シードリスト及び対応するシグネチャ。
・シグネチャを決定するための試験入力のリスト。
【0036】
標的データセット
[0039] 一部の実施形態では、標的データセットがプロセスのそれぞれの新たな世代を用いてランダムに生成される。一部の実施形態では、標的データセットが入出力ペアで構成される。一部の実施形態は、(i)様々な脈絡において最終成果物(例えばシードリスト)が再利用可能な程度、及び(ii)それをもたらすことができる速度及び効率を含む様々な要因をトレードオフすることによって入出力ペアのための形式を決定する。例えば最終成果物が広範な問題に再利用可能である必要がある場合、入出力ペアは有限であることを除いて長さの制限がないバイナリ文字列のペアであり、それはかかる列が如何なる情報も符号化できるからである。一部の実施形態は、任意長のバイナリ文字列をランダムに生成するために、よく知られている一様密度関数の改変形態である確率密度関数を使用する。一部の実施形態は、L(x)=2-2l(x)-1で定められる確率密度関数を使用し、但しxは長さl(x)の任意の恣意的な列である。
【0037】
[0040] 一部の実施形態は、入出力ペアを依然としてランダムに生成しながら、特定の問題領域に適した形式に入出力ペアを制限する。例えば一部の実施形態は、純粋なガウス雑音を入力として及び一様にランダムなラベルを出力として使用し、画像分類の問題領域に適したランダムデータセットを生成する。
【0038】
領域に固有の標的データセット
[0041] 説明を簡単にするために、この節は標的データセットの領域に固有の側面について記載し、その後、標的データセットのランダムな側面について記載する。
【0039】
[0042] 標的データセットの領域に固有の側面に関して、任意の問題領域において、入力が実数のシーケンスX=(x,...,x)で識別され、対応する出力が実数のシーケンスY=(y,...,y)で同様に識別されると仮定されたい。例えば画像分類では各xがピクセル強度を表すことができ、nは入力画像内のピクセル数である。この事例ではmは画像が有し得る別個のラベルの数であり、yは入力画像がj番目のラベルを有する確率である。
【0040】
[0043] 次に標的データセットのランダムな側面を理解するために、問題領域に関係なく、興味深くあり得る全ての入出力ペアの莫大なデータセットDを想像されたい。入出力ペア(X,Y)の一様にランダムな選択がDから得られると仮定されたい。X内の各xはよく知られている確率分布p(x)を有し、同様にY内の各yはよく知られている確率分布p(y)を有する。次いでこの領域について入出力ペア(Xrand,Yrand)をランダムに生成するために、一部の実施形態はXrand内の各x及びYrand内の各yをその個々の確率分布に従ってランダムに生成する。このプロセスをt回繰り返すことにより、一部の実施形態はデータセットDrand=((X,Y),...,(X,Y))をランダムに生成する。画像分類に関して、例えばp(x)はあり得る全てのピクセル強度の範囲にわたるガウス分布であり、p(y)はあり得る全ての確率の範囲(即ち0から1)にわたるガウス分布である。
【0041】
適応度関数
[0044] 適応度関数は遺伝的プログラミング(GP)の確率論的性質を表す。基準が満たされるかどうかではなく、GPはプログラムが基準を満たす程度を測定する適応度スコアを各プログラムに指定する。これは「適応度関数の適用」と呼ぶことがある。スコアは典型的には実数の範囲内に含まれる。高スコアのプログラムは低スコアのプログラムよりも次世代の親として選択される可能性が高い。しかし、あり得る最低スコアを有するプログラムさえ親として選択されるゼロを上回る確率を有し、そのためかかるプログラムは破棄される場合もされない場合もある。
【0042】
[0045] 一部の実施形態では、適応度関数は所与のプログラムによって符号化される関数が現在の標的データセットとどの程度マッチするのかを測定する。一部の実施形態では適応度関数が弱選択の仮定を満たし、それは全ての遺伝子型(プログラム)の適応度が互いに近いこと、例えば間隔[1-ε,1+ε]の範囲内にあり、そのため遺伝子型gの適応度はF=1+εΔとして書くことができ、但しεは小さいと考えられる選択強度であり、Δ∈[-1,1]は遺伝子型の差分適応度(differential fitness)と呼ばれる。一部の実施形態では、これらの要件はΔを適切に定めることによって満たされる。例えばΔ=-1はgが集合の他のメンバ(即ちプログラム)と比べて標的データセットに対する最悪のマッチを与えることを意味し、Δ=1はgが集合の他のメンバと比べて最良のマッチを与えることを意味する。換言すれば、適応度関数はプログラムが標的データセットとどの程度合致するのかを測定するために所与のプログラムに-1から1までの差分適応度値を指定し、より大きい値はより優れた合致を示す。
【0043】
[0046] 一部の実施形態は、マッチと見なされるものに対して緩和された定義を使用する。一部の実施形態は、出力間の厳密なマッチを要求するのではなく出力間の相関度を検討する。一部の実施形態は、許容可能な解を見つける可能性を高めるためにこの戦略を使用する。例えば一部の実施形態は、完璧な解へと容易に変換されることを所与とし、標的出力の(ビット単位の意味で)正反対をもたらすプログラムを厳密なマッチとしての適応として検討する。
【0044】
[0047] 標的データセットが入出力ペアのシーケンスD=((X,Y),...,(X,Y))だと仮定し、所与のプログラムが関数fを符号化すると仮定されたい。D内の各ペア(X,Y)に関して、Xは実数のシーケンスX=(x,...,x)であり、Yは実数のシーケンスY=(y,...,y)である。関数fはXを入力として受け付け、シーケンスY’=(y’,...,y’)を出力としてもたらすことができる関数である。一部の実施形態は、差分適応度値dをもたらすためにYとY’との間の合致を測定し、その値をD内の全ての(X,Y)にわたって集約する。一部の実施形態は、Y内の各yがよく知られている確率分布p(y)を有し、従って各yがよく知られている平均値uを有する事実を使用する。yの可能な値の範囲は2つの部分に区分化されていると考えることができ、右の区分は平均を上回る全ての値を含み、左の区分は平均以下の全ての値を含む。一部の実施形態は、両方の値が同じ区分内にある場合に値yが値y’と「合致する」と定める。
【0045】
[0048] 一部の実施形態は差分適応度dを計算するために以下のアルゴリズムを使用する:
1.実変数rを0に初期化する。
2.D内の(X,Y)ごとに以下を行う:
a.上記のようにY’を計算する。
b.1とmとの間の位置jごとに以下を行う:
i.yjがyj’と合致する場合、rに1を加え、
ii.さもなければrから1を引く。
3.d=absolute_value(r)/(mt)を計算する。
【0046】
[0049] このアルゴリズムは0から1までのdの値をもたらす。一部の実施形態は適応度スコアをF=1+(ed)として計算し、但しeは小さい正の一定値だと見なされる選択強度である。
【0047】
[0050] 換言すれば、Fを離散確率変数と見なす場合、Fは全ての計算可能な関数fについて同じ平均及び同じ分散を有するべきである。関数fにその逆関数と、もしかかる関数が存在する場合は同じ適応度スコアが常に指定されるべきであることも要求される。
【0048】
確率論的選択
[0051] 一部の実施形態は、確率論的選択方法(「ルーレット盤選択」又は「適応度比例選択」と呼ばれることもある)を使用する。親の選択は、自らの適応度スコアに比例した盤上の空間量を集団内の各プログラムに割り当てながらルーレット盤を回すことによって行われる。換言すれば、次の世代のための親の全てを選択するのに十分な回数盤を回す。このステップはしばしば単に「選択」と呼ばれ、突然変異又は交叉等の遺伝的オペレータの1つとして見なされることが多い。
【0049】
[0052] 一部の実施形態は他の選択方法(例えば市販のGPソフトウェアで非常に人気のあるトーナメント選択)を使用する。
【0050】
汎用ビルディングブロック
[0053] 一部の実施形態では、有性組み換えがある中での進化は集団内の対立遺伝子(即ちプログラム断片)の混合性を最大化する。特定の遺伝子の対立遺伝子(即ちプログラム断片の遺伝子座)の混合性は、その対立遺伝子が他の遺伝子の対立遺伝子と結合して高度に適応した個体を形成することができる程度である。個々のプログラムが集団内の他の個体に比べてランダム生成データセットとどの程度マッチするのかに個々のプログラムの適応度が基づく場合、高い混合性を有する対立遺伝子は汎用計算ビルディングブロックに厳密に対応する。有性組み換えと共に弱選択がある場合、対立遺伝子の混合性は全ての世代にわたって累積的な意味で測定される。従って混合性が高い対立遺伝子は、多岐にわたる問題に対する優れた解を与えるプログラムのファミリー内にあるコード断片に対応する。かかる対立遺伝子は汎用ビルディングブロックである。
【0051】
[0054] 図2は、一部の実施形態による、遺伝的プログラミングインスタンスをシードするための汎用ビルディングブロックを作成するために遺伝的プログラミングを使用するための方法の流れ図である。一部の実施形態によれば、この方法はサーバ102等のサーバ(又はサーバのプロセッサ)によって実行される。図2に示す流れ図のステップは上記の技法を使用する。一部の実施形態では、この方法がスタートアップパラメータ(例えば関係する領域、プログラムの最大サイズ、プロセスの最大反復回数等のための1組のパラメータ)を読み出すこと(202)によって開始する(200)。一部の実施形態によれば、「画像分類のために汎用ビルディングブロックを作成し使用する例」と題した以下の節の中でスタートアップパラメータの例を与える。一部の実施形態は、(シードリストを得るための)プロセスの新たなインスタンスを生成するかどうかを判定する(204)。それが新たなインスタンスではない場合、このプロセスは(上記の)システムのスナップショットをロードする(222)。
【0052】
[0055] 一部の実施形態は、(上記の)ランダム生成プログラムを用いて集団(例えばプログラム106の集団)を初期化する(206)。一部の実施形態は、(例えば標的データセット生成モジュール126を使用して上記の)標的データセットをランダムに生成もする。一部の実施形態は、集団内のプログラムに(例えば適応度関数モジュール122を使用して上記の)適応度関数を適用する(210)。一部の実施形態は、(上記の)スナップショットを取る又は捕捉するかどうかを判定し(212)、スナップショットを取る又は捕捉すると判定される場合、システムのスナップショットを(例えばデータベース130に)保存し(216)又は記憶する。一部の実施形態は、終了条件が満たされたかどうかを判定する(218)。例えばシードリストが1つ又は複数の遺伝的プログラミングインスタンスを解くかどうかを試験するために、スナップショット内のシードリストが使用される。終了条件が満たされている場合、この方法は実行を終える(220)。満たされていない場合はこのプロセスは続行し、集団に遺伝的オペレータ(例えば選択、突然変異、交叉)を適用して次の世代のための集団を得る(214)。このプロセス(即ちステップ214、208、210、212、216、及び218)は終了条件が満たされるまで繰り返される。
【0053】
[0056] 一部の実施形態によれば、方法が汎用計算ビルディングブロックを進化させる。この方法はサーバ(又はコンピュータ)によって実行される。例えばこの方法は実行される、サーバ102(又はサーバ102のモジュールの1つ)。この方法は、関数を符号化するランダム生成プログラムを用いて母集団を初期化する。この方法は、ランダム生成試験入力のリストを得ることも含む。この方法は、ランダム生成バイナリ文字列の入出力ペアを含む標的データセットを生成する。この方法は、母集団内の各プログラムに適応度スコアを指定するために適応度関数も適用する。適応度スコアは、標的データセットの入出力ペアとマッチするプログラムの能力を少なくとも表す。この方法は更に、新規性の条件を満たす母集団内のプログラムのコピーを用いてシードリストを初期化する。新規性の条件は、ランダム生成試験入力のリストについて別個の及び固有の出力をもたらすプログラムの能力を表す。シードリストは、遺伝的プログラミングのための初期集団をシードするための汎用プログラムビルディングブロックを含む。この方法は、シードリストの終了条件が満たされているかどうかを判定することも含む。終了条件は、1つ又は複数の遺伝的プログラミングインスタンスを解くシードリスト内の1つ又は複数のプログラムの能力を表す。終了条件が満たされていないという判定に従い、この方法は少なくとも1つの遺伝的オペレータを母集団に適用してプログラムの現在の子孫集団を得る。少なくとも1つの遺伝的オペレータは、1つ又は複数の遺伝的プログラミングインスタンスを解くためにプログラムの適応度スコアに基づいてシードリストを増大させるために母集団に適用されるオペレータを含む。この方法は前述の終了条件が満たされるまで次のステップ、つまり(i)ランダム生成バイナリ文字列の入出力ペアを含む新たな標的データセットを生成すること、(ii)現在の子孫集団内の各プログラムに新たな適応度スコアを指定するために適応度関数を適用すること(新たな適応度スコアは新たな標的データセットの入出力ペアとマッチするプログラムの能力を少なくとも表す)、(iii)前述の新規性の条件を満たす現在の子孫集団内のプログラムのコピーをシードリストに付加すること、及び(iv)プログラムの新たな子孫集団を得るために現在の子孫集団に少なくとも1つの遺伝的オペレータを適用し、プログラムの新たな子孫集団を現在の子孫集団として設定することを繰り返すことも含む。
【0054】
[0057] 一部の実施形態では、この方法が、複数の問題を表す遺伝的プログラミングインスタンスの試験スイート内の集団を初期化するためにシードリストを使用すること、及び試験スイートの試験結果に基づいて終了条件が満たされているかどうかを判定することを更に含む。
【0055】
[0058] 一部の実施形態では、この方法が、少なくとも1つの遺伝的オペレータを現在の子孫集団に適用するとき、現在の子孫集団内のプログラムに優先してシードリスト内のプログラムをベルヌーイ分布に基づいて親として選択することを更に含む。シードリスト内の各プログラムは、親として選択されるように同等に好まれる。
【0056】
[0059] 一部の実施形態では、プログラムが新規性の条件を満たすかどうかを判定することは、ランダム生成試験入力に対してシードリスト内のプログラムによって符号化される関数によって生成される出力シーケンスと異なる出力シーケンスをランダム生成試験入力について生成する関数をプログラムが符号化しているという判定に基づく。
【0057】
[0060] 一部の実施形態では、この方法が、ランダム生成試験入力についてプログラムによって符号化される関数によって生成される出力シーケンスを含む関数シグネチャをシードリスト内のプログラムごとに決定し記憶すること、及び関数シグネチャを取得することを更に含む。そのような一部の実施形態では、シードリスト内のプログラムによって符号化される関数と異なる関数をプログラムが符号化するという判定が、関数シグネチャと異なる出力シーケンスをランダム生成試験入力について生成する関数をプログラムが符号化しているという判定に更に基づく。
【0058】
[0061] 一部の実施形態では、終了条件がシードリストのサイズに少なくとも依存する(例えば1000個のプログラムで方法が停止する)。
【0059】
[0062] 一部の実施形態では、終了条件はシードリストが所定の増大率で増大しているかどうかという判定に少なくとも依存する。
【0060】
[0063] 一部の実施形態では、この方法が適応度関数を適用するとき恣意的に均衡を破ることを更に含む。
【0061】
[0064] 一部の実施形態では、この方法が、シードリストを初期化しシードリストに付加するとき、入力を読み取らない自明な関数を符号化するプログラムをシードリストから破棄することを更に含む。
【0062】
[0065] 一部の実施形態では、この方法が、入力を読み取らない自明な関数を符号化するプログラムを識別するために構文解析を行うことを更に含む。
【0063】
[0066] 一部の実施形態では、この方法が、シードリストを初期化しシードリストに付加するとき、異常なランタイム挙動を有する関数を符号化するプログラム(例えば実行するための試行が行われるとき異常終了するプログラム)、又は異常な資源要件を有する(例えばメモリ空間又は合計ランタイム等の計算資源の限界を上回るプログラム)関数を符号化するプログラムをシードリストから破棄することを更に含む。
【0064】
[0067] 一部の実施形態では、この方法が、シードリスト内の所定数のプログラムを使用して遺伝的プログラミングの新たなインスタンスのための初期集団をシードすることを更に含む。一部の実施形態では、初期集団をシードするとき、シードリストに直近に追加されたプログラムがそれよりも前のものに優先する。
【0065】
[0068] 一部の実施形態では、少なくとも1つの遺伝的オペレータが、選択オペレータ、突然変異オペレータ、及び交叉オペレータの1つ又は複数である。
【0066】
[0069] 一部の実施形態では、ランダム生成バイナリ文字列の入出力ペアの各入力が入力確率分布に基づいて生成され、ランダム生成バイナリ文字列の入出力ペアの各出力が出力確率分布に基づいて生成される。一部の実施形態では、入力確率分布がピクセル強度の範囲にわたるガウス分布であり、出力確率分布が[0.0,1.0]上のガウス分布である。
【0067】
[0070] 一部の実施形態では、適応度関数が、同じ入力に対してビット単位で反対の出力をもたらす関数を符号化するプログラムに対して同じ適応度スコアを指定する。換言すれば、一部の実施形態では、標的出力の(ビット単位の意味で)正反対をもたらすプログラムは厳密なマッチと同程度の適応である。
【0068】
[0071] 一部の実施形態では、適応度関数がプログラムの出力と標的データセットとの間のマッチ度を測定するために-1から1までの適応度スコアをプログラムに指定し、より大きい値はより高いマッチ度を示す。
【0069】
[0072] 一部の実施形態では、1つ又は複数の遺伝的プログラミングインスタンスが、(以下に記載する)手書き数字の部分的分類のための遺伝的プログラミングインスタンスを含み、ランダム生成バイナリ文字列の入出力ペアがMNISTデータベースからの画像に基づいて生成され、この方法が2000回の反復後に方法を終了することを更に含む。
【0070】
画像分類のために汎用ビルディングブロックを作成し使用する例
[0073] この節は、一部の実施形態による画像分類のために汎用ビルディングブロックを作成し使用する例を記載する。典型的には、画像は1つ又は複数のラベルに関連する。解説のために、画像が2つのラベルのうちの1つしか有することができないと仮定されたい。各ピクセル値が単一ビットであるように画像データが単純化される。例えば各ピクセルは黒(0)又は白(1)である。更に、各画像が厳密に28行×28列のピクセルだと仮定されたい。この領域内のデータセットはD=((X,y),...,(X,y))の形を有する。D内の各(X,y)は入出力ペアであり、Xは入力画像X=(x,...,x)を表し、但しn=28×28=784であり、各xは位置iにおけるピクセルの強度を示す単一ビット(0又は1)であり、yは画像Xに関連するラベルを表す単一ビットである。
【0071】
[0074] 第1の段階では、一部の実施形態がこの領域に適したパラメータを使用して図2に関して上記で説明したプロセスによって汎用ビルディングブロックを作成する。その後第2の段階で、かかる一部の実施形態が第1の段階の最終成果物(例えばシードリスト)を使用して、この領域内の特定の問題を表すGPの2つのインスタンスの試験スイート内の初期集団をシードする。
【0072】
[0075] 付録に記載するように、この実験内のGPインスタンスに使用されるプログラミング言語がパーセプトロンチューリングマシン(PTM)の言語だと仮定されたい。この言語はチューリング完全であり、ニューロエボリューションの一種を可能にし、各プログラムが人工ニューラルネットワーク(ANN)を生成することを意味する。全てのGPインスタンスに共通の関連するPTM構成パラメータは以下の通りである:
・状態の数は512である。
・テープの数は2であり、画像の行インデックス又は列インデックスを符号化するために各テープは5ビットの長さを有する。両方のテープが入力インデックステープであり、出力は単一ビットなので出力インデックステープはない。
・全てのプログラムは4,096命令の固定長を有する。
・プログラムによって生成されるANNに対する資源限界を以下のように設定する。
○ノードの最大数は50,000である。
○最大深度は100である。
○最大ファンアウトは16である。
【0073】
[0076] 資源限界を超えた場合、それはエラーと見なされ、その場合プログラムに可能な限り低い適応度スコアが指定される。
【0074】
[0077] 以下の遺伝的オペレータもこの実験で使用される全てのGPインスタンスに共通である。
・遺伝子ごとに作用する0.5の確率の一様交叉を使用する。
・遺伝子型に関して作用する0.003の確率の置換オペレータを使用する。つまり、各子孫について0.003の確率でその遺伝子がランダムに並べ替えられる。
・遺伝子に関して作用する0.001の確率の突然変異オペレータを使用する。つまり、各子孫の遺伝子ごとに0.001の確率で対立遺伝子が異なる対立遺伝子に変更される。
【0075】
段階1の例:汎用ビルディングブロックの作成
[0078] このプロセスのためのGPインスタンスを以下のようにセットアップする。
・集団のサイズは1,024である。
・ランダム化された標的内の入出力ペアの数に32を使用する。
・ランダム化された標的内の入力ピクセル値及び出力ラベル値の両方に使用するための自然確率分布は、0及び1の値の可能性が同等である(それぞれ0.5の確率を有する)ベルヌーイ分布である。
・関数シグネチャを生成するために使用する試験入力の数に32を使用する。
・選択強度に0.5を使用する。
・現在の集団ではなくシードリストから親を選択する確率に0.0625を使用する。
・200,000個のシード(即ちシードリスト内のプログラム)が見つかったときこのプロセスを終了する。
【0076】
[0079] このプロセスは反復的であり、一部の例では世代ごとに数百個のプログラムをもたらす。例えばこのプロセスを2,289回反復すること(即ち2,289世代)は200,000個のシードをもたらす。
【0077】
段階2の例:手書き数字の部分的分類
[0080] 試験スイートに関して、一部の実施形態は手書き数字を分類する単純化された形式の改変形態を解くように設計される2つのGPインスタンスを使用する。0から9までの全ての数字を認識しようと試みるのではなく、単純化された問題(部分的分類と呼ぶことがある)は10個の数字のうちの2つを認識しようと試みるだけである。GPインスタンスAが0及び1の数字を区別しようと試み、GPインスタンスBが6及び7の数字を区別しようと試みると仮定されたい。
【0078】
[0081] 訓練データセット及び試験データセットについて、一部の実施形態は手書き数字の走査画像をそれらの正しい分類と共に含むMNISTデータベースの部分集合を使用する。画像は(例えば60,000枚の画像及び10,000枚の画像をそれぞれ有する)訓練データセット及び試験データセットへと分けられる。画像はグレースケールであり、サイズは28×28ピクセルである。一部の実施形態は、0が[0,127]の間隔に対応し、1が[128,255]の間隔に対応する状態で、最初は0から255に及ぶ各ピクセル値が単一ビットに変換されるように全ての画像を再フォーマットする。GPインスタンスAは0と1の数字の画像だけを含む訓練データセット及び試験データセットの部分集合を使用し、GPインスタンスBは6と7の画像だけを使用する。
【0079】
[0082] GPインスタンスA及びBはどちらも以下の構成特性を有する:
・一部の実施形態では、訓練データセット及び試験データセットがそれぞれサイズt=32のミニバッチへとランダムに区分化される。全ての世代で、次の訓練ミニバッチDが回転順に選ばれ、それがその世代の適応度スコアの基礎として使用される。
・現在の集団内のプログラムgに適応度スコアFを指定するために、一部の実施形態は差分適応度dを以下のように最初に計算する。
○実変数rを0に初期化する。
○D内の(X,y)ごとに以下を行う:
■入力画像Xに対してプログラムgを実行する。
■gが完了まで実行され出力yをもたらす場合、rに1を加える。
■さもなければrから1を引く。
○d=r割るtを計算する。
これにより-1から1までの値がdに与えられる。適応度スコアはF=1+εdであり、εは0.5の一定値を有する選択強度である。
・集団のサイズは256である。
・終了条件は以下の通りである。全ての世代で、最大の適応度スコア(均衡は恣意的に破られる)を有するプログラムgを再びスコアリングするが、試験データセットからの次のミニバッチを回転順に毎回使用する。gが訓練及び試験ミニバッチの両方で完璧なスコアを得る場合、このプロセスはgが解である状態で成功裏に終了する。2000世代の中でかかる解が見つからない場合、このプロセスは失敗として終了する。
【0080】
[0083] 加えて各GPインスタンスは、自らの集団をランダムに(ランダムモードの初期化)又は段階1で作成した最後の256個のプログラム(又はシード)を使用して(シードモードの初期化)初期化する選択肢を有する。一部の実施形態は、各GPインスタンスA及びBを各モードで所定の回数(例えば10回)実行する。或る実験では得られる結果が以下に示す通りである:
・ランダムモードのGPインスタンスAは1個の成功と9個の失敗をもたらす。
・シードモードのGPインスタンスAは8個の成功と2個の失敗をもたらす。
・ランダムモードのGPインスタンスBは0個の成功と10個の失敗をもたらす。
・シードモードのGPインスタンスBは6個の成功と4個の失敗をもたらす。
【0081】
[0084] このようにして、図2に関して上記で説明したプロセスはそれらのGPインスタンスに(集団をシードする従来のやり方に勝る)著しい性能の改善をもたらす。
【0082】
数値関係を学習するための応用例
[0085] この節は、一部の実施形態による数値関係を学習するための汎用ビルディングブロックの作成及び使用例を記載する。問題は、実数の所与のシーケンスが特定の関係におけるメンバシップの条件を満たすかどうかを判定することができるコンピュータプログラムを見つけることだと仮定されたい。一部の実施形態では、関係を満たすシーケンスの例並びに関係を満たさないシーケンスの例のデータセットが訓練目的で存在する。この領域内のデータセットはD=((X,y),...,(X,y))の形を有する。D内の各(X,y)は入出力ペアであり、Xは入力シーケンスX=(x,...,x)を表し、nは関係によって決定される固定された正の整数であり、各xは関係によって決定される関連する確率分布pi(x)を有する実数であり、yはXが(y=1)の関係にあるか又はXが(y=0)の関係にないかを示す単一ビットである。
【0083】
[0086] 例えば株売買人がかかるデータセットを編み出す可能性があり、但しXは或る企業の貸借対照表内の情報であり、yはその企業の株を買うべきか又は売るべきかの指示である。この実験では、説明のためにn=3と仮定し、x、x、xのそれぞれに(0の平均及び0.5の分散を有する)ガウス分布を使用すると更に仮定されたい。出力yは、0及び1の値の可能性が同等である(それぞれ0.5の確率を有する)ベルヌーイ分布を有する。
【0084】
[0087] 一部の実施形態では、2つの段階がある。第1の段階では、一部の実施形態がこの領域に適したパラメータを使用して図2に関して上記で説明したプロセスによって汎用ビルディングブロックを作成する。その後第2の段階で、一部の実施形態が段階1の最終成果物(シードリスト)を使用して、この領域内の特定の問題を表すGPの2つのインスタンスの試験スイート内の初期集団をシードする。後で説明するように、初期集団をランダムにシードする従来の手法によって得られる結果に対して結果を比較することは、図2に関して上記で説明したプロセスの利点を示す。
【0085】
[0088] この実験で全てのGPインスタンスに使用されるプログラミング言語がArtur B.Adibによって開発されたSlash/A言語だと仮定し、Slash/A言語については参照によりその全開示を本明細書に援用する、ワールドワイドウェブのアドレスhttps://github.com/arturadib/shash-aで入手可能な“Slash/A: A programming language and C++ library for (quantitative) linear genetic programming,” 2011に記載されている。全ての入力及び出力が倍精度浮動小数点形式の実数なので、Slash/A言語は数値関係を実装するのに理想的なチューリング完全な命令型プログラミング言語である。以下の例は2つの入力を読み取り、それらを合計し、結果を出力として返す。
input/ #入力バッファから次の数字を得てそれをレジスタFに保存する
0/ #レジスタI=0に設定する
save/ #FのコンテンツをデータベクトルD[I]内に保存する(即ちD[0]:=F)
input/ #別の入力を得てFに保存する
add/ #Iによってポイントされる現在のデータをFに加える(即ちF:=F+D[0])
output/. #出力バッファにFを付加する
【0086】
[0089] Slash/Aは、テキスト形式(例えば上記のテキスト)で与えられるプログラムを一連の符号なし整数であって、それぞれの符号なし整数は言語内の一意の命令にマップする、一連の符号なし整数であるバイトコード形式に変換するための関数を含むC++ライブラリとして実装される。ライブラリ内に含まれるSlash/Aインタプリタによって使用されるのはバイトコード形式である。一部の実施形態は、GPの遺伝子型としてバイトコード形式を使用することによって遺伝的オペレータを実装する。例えば突然変異オペレータは、バイトコード内のランダムに選択された符号なし整数を(構成可能な命令セット内の命令の数によって決定される)適切な数値範囲内の新しいランダムに選択された符号なし整数と単純に置換する。インタプリタはゼロ除算又は有効なメモリ範囲外のインデックス作成等のエラーを黙って無視するが、かかるイベントに関する統計は追跡され、そのことはプログラムが自明かどうかを判定するためのカスタム条件を定めることを可能にする。
【0087】
[0090] 全てのGPインスタンスに共通の関連するSlash/A構成パラメータは以下の通りである:
・数値定数の数は16である。一部の実施形態は、ループ又は高度な数学(例えば三角関数)を含まない既定の命令セットの部分集合を使用する。一部の実施形態は、命令セットの新たなインスタンスを生成するために以下のC++コードを使用する。
SlashA::InstructionSet* NewInstructionSet() {
SlashA::InstructionSet* iset_ptr = new SlashA::InstructionSet(16);
iset_ptr->insert_DIS_IO();//入力/出力コマンド
iset_ptr->insert_DIS_memreg();//メモリ-レジスタコマンド
iset_ptr->insert_DIS_regreg();//レジスタ-レジスタコマンド
iset_ptr->insert_DIS_basicmath(); //基本的な数学(加算、減算、乗算、除算)
iset_ptr->insert_DIS_misc();//空命令「nop」
return iset_ptr;
}
・メモリコマンドに使用されるデータベクトルの長さは10である。
・プログラムは100命令の固定長を有する。
・プログラムが出力を一切もたらさない場合、又はプログラムが出力をもたらす前に如何なる入力も読み取らない場合、そのプログラムは自明だと見なされ、従って最も低い適応度スコアが指定される。
【0088】
[0091] 一部の実施形態によれば、以下の遺伝的オペレータも全てのGPインスタンスに共通である:
1.0.5の確率の1点交叉オペレータを使用する。
2.遺伝子型に関して作用する0.012の確率の置換オペレータを使用する。つまり、各子孫について0.012の確率でその遺伝子がランダムに並べ替えられる。
3.遺伝子に関して作用する0.004の確率の突然変異オペレータを使用する。つまり、各子孫の遺伝子ごとに0.004の確率で対立遺伝子が異なる対立遺伝子に変更される。
【0089】
[0092] 一部の実施形態は、プログラムの出力値rが出力バッファに追加される最初の値であり、その後の値は無視されるという慣習を使用する。一部の実施形態は、r>0が成立する場合はb=1に設定し、さもなければb=0に設定することによってrをビット値bにマップする。
【0090】
段階1の例:汎用ビルディングブロックの作成
[0093] このプロセスのためのGPインスタンスは以下のようにセットアップする。
1.集団のサイズは1,024である。
2.ランダム化された標的D内の入出力ペアの数にt=32を使用する。一部の実施形態では、D内のデータ要素が上記のガウス分布及びベルヌーイ分布を使用して生成される。
3.現在の集団内の非自明なプログラムgに適応度スコアFを指定するために、一部の実施形態は標的データセットDを所与として差分適応度dを以下のように最初に計算する:
実変数rを0に初期化する。
D内の(X,y)ごとに以下を行う:
入力Xに対してプログラムgを実行する。
gが出力yをもたらす場合、rに1を加える。
さもなければrから1を引く。
d=absolute_value(r)/tとする。
これにより0から1までの値がdに与えられる。適応度スコアはF=1+εdであり、εは0.5の一定値を有する選択強度である。このやり方で適応度を計算する動機は、このやり方がランダム化された標的システムに関する以下の2つの中心的な要件を満たすことである:
a.Fを離散確率変数と見なす場合、Fは全ての非自明なプログラムについて同じ平均及び分散を有するべきである。
b.プログラムによって符号化される関数にはその逆関数と、もしかかる関数が存在する場合は同じ適応度スコアが常に指定されるべきである。元のプログラムが0を出力するときいつも別のプログラムが1を出力でき、その逆もまた同様なので、この例では逆が存在する。
4.関数シグネチャを生成するために使用する試験入力の数に32を使用する。
5.選択強度に0.5を使用する。
6.現在の集団ではなくシードリストから親を選択する確率に0.0625を使用する。
7.200,000個のシードが見つかったときこのプロセスを終了する。
【0091】
[0094] このプロセスは反復的であり、一部の例では世代ごとに数百個のプログラムをもたらす。例えばこのプロセスを3,498回反復すること(即ち3,498世代)は200,000個のシードをもたらす。
【0092】
段階2の例:数値関係の学習
[0095] 試験スイートに関して、一部の実施形態は特定の数値関係を学習するように設計される、それぞれ3つの入力を有する2つのGPインスタンスを使用する。GPインスタンスAでは、所与の入力シーケンスX=(x,x,x)が狭義単調増加している場合、即ち条件x<x<xを満たす場合、かかる入力シーケンスX=(x,x,x)は関係内にある。
【0093】
[0096] 一部の実施形態では、GPインスタンスBが以下の条件を使用してXがその関係内にあるかどうかを判定する:x +x >x
【0094】
[0097] 一部の実施形態は、ほぼ等しい数の正の及び負のインスタンスを有する訓練データセット及び試験データセットをランダムに生成するために(上記の)ガウス分布及びベルヌーイ分布を使用する。とりわけ、生成しなければならない入出力ペア(X,y)ごとに一部の実施形態は以下を行う:
・yを生成する。
・関係内のそのメンバシップがyと合致するまでXを繰り返し生成する。
【0095】
[0098] GPインスタンスA及びBはどちらも以下の構成特性を有する。
・全ての世代で、一部の実施形態は(上記のように)サイズt=32の新たな訓練データセットDを生成し、新たな訓練データセットをその世代の適応度スコアの基礎として使用する。
・現在の集団内の非自明なプログラムgに適応度スコアFを指定するために、一部の実施形態は差分適応度dを以下のように最初に計算する。
○実変数rを0に初期化する。
○D内の(X,y)ごとに以下を行う:
■入力Xに対してプログラムgを実行する。
■gが出力yをもたらす場合、rに1を加える。
■さもなければrから1を引く。
○d=r割るtを計算する。
これにより-1から1までの値がdに与えられる。適応度スコアはF=1+εdであり、εは0.5の一定値を有する選択強度である。
・集団のサイズは256である。
・終了条件は以下の通りである。全ての世代で、最大の適応度スコア(均衡は恣意的に破られる)を有するプログラムgを再びスコアリングするが、今回は新たに生成されたサイズtの試験データセットを使用する。gが訓練データセット及び試験データセットの両方で完璧なスコアを得る場合、このプロセスはgが解である状態で成功裏に終了する。2,000世代の中でかかる解が見つからない場合、このプロセスは失敗として終了する。
【0096】
[0099] 加えて各GPインスタンスは、自らの集団をランダムに(ランダムモードの初期化)又は段階1で作成した最後の256個のシードを使用して(シードモードの初期化)初期化する選択肢を有する。一部の実施形態は、各GPインスタンスA及びBを各モードで所定の回数(例えば10回)実行する。或る実験では得られる結果が以下に示す通りである:
■ランダムモードのGPインスタンスAは6個の成功と4個の失敗をもたらす。
■シードモードのGPインスタンスAは10個の成功と0個の失敗をもたらす。
■ランダムモードのGPインスタンスBは1個の成功と9個の失敗をもたらす。
■シードモードのGPインスタンスBは6個の成功と4個の失敗をもたらす。
【0097】
[00100] このようにして、図2に関して上記で説明したプロセスはそれらのGPインスタンスに(集団をシードする従来のやり方に勝る)著しい性能の改善をもたらす。
【0098】
遺伝的プログラミングを使用する特徴抽出のための方法の例
[00101] 数学的解析がこの特徴抽出方法の正当化を行う。GPシステムは、固定されたプログラミング言語L、並びにLによるプログラムに関する可能な入力及び出力をそれぞれ与える組I及びOを規定する。集団は遺伝子型の集合であり、各遺伝子型はLによるプログラムである。遺伝子型gに対応する表現型は、gによって符号化される関数Φ:I→Oである。対立遺伝子はプログラム内の固定遺伝子座において生じるプログラム断片であり、遺伝子は特定の遺伝子座において可能な1組の対立遺伝子である。
【0099】
[00102] 典型的には、GPシステムは解決すべき問題、及び所与の遺伝子型がどの程度上手く問題を解くのかを測定する適応度関数も規定する。最も適応した遺伝子型を親であるように選択し、次いで規定の遺伝的オペレータを親に対して適用して集団の次の世代を構成する子孫をもたらすことにより、最初のランダムに生成された集団が進化する。新たな世代が古い世代を置換しながらこのプロセスが繰り返される。集団は多くの世代の後で解に収束する。このシステムを静的標的(ST)システムと呼ぶ。
【0100】
[00103] 他方でランダム化標的(RT)システムでは、集団の各世代と共に適応度の標的がランダムに選択される。多くの世代の後、単一の表現型に収束するのではなく、RTシステムは多種多様な別個の表現型を有する集団をもたらす。RTシステムの最終成果物は、全ての世代にわたってもたらされる別個の表現型を表すプログラムの全集合である。最終成果物の集合内のプログラムはGPシステム内の初期集団をシードするのに有用であり、それは新たな各GPインスタンスと共にさもなければ再発見される必要がある複雑な汎用ビルディングブロックをかかるプログラムが含む傾向があるからである。本明細書に記載の技法を使用し、最終成果物の集合内のプログラムは入力セットIのための1組の特徴としても使用され得る。従って、RTシステムは一部の実施形態による特徴抽出を行うために使用することができる。
【0101】
[00104] 一部の実施形態によれば、高いレベルにおいて、RTシステムのプロセスフローは以下の通りである。
1.ランダムに生成した遺伝子型を用いて集団を初期化する。
2.適応度の標的(x,y)∈IxOをランダムに生成する。
3.集団内の遺伝子型gごとに、Φ(x)の値がyとどの程度上手く合致するのかに基づいて適応度スコアF∈Rを計算する。
4.適応度比例選択又はトーナメント選択等の高い適応度を有するプログラムを支持する確率論的方法を使用して集団から親を選択する。
5.遺伝的オペレータを親に適用して集団の次の世代を構成する子孫をもたらす。
6.集団の次の世代で現在の世代を置換する。
7.ステップ2に進む。
【0102】
[00105] 自然にあるように遺伝子型の弱選択及び有性組み換えの両方が存在する場合、連鎖平衡内のプロセスによって進化が正確に記述される。換言すれば、任意の遺伝子型gの頻度が単にg内の対立遺伝子の頻度の積であるかのように集団はモデリングすることができる。この結果は、適応度がどのように測定されるのか及び遺伝子型がどのように組み換わるのかに関する広範な仮定の下で成り立つ。遺伝子型の適応度はここでもそうであるように世代に依存することが認められ、有性組み換えはGPシステム内で典型的に使用されるほぼ任意の形式の交叉オペレータによって実装され得る。
【0103】
[00106] 弱選択の仮定は、全ての遺伝子型の適応度が互いに近いこと、例えば間隔[1-ε,1+ε]の範囲内にあり、そのため遺伝子型gの適応度はF=1+εΔとして書くことができることを要求し、但しは小さいと考えられる選択強度であり、Δ∈[-1,1]は遺伝子型の差分適応度と呼ばれる。これらの要件は、適応度スコアだと通常考えられるものであるようにΔを定めることによって容易に満たされ、例えばΔ=-1はgが適応度の標的に関して予想される最悪のマッチを与えることを意味し、Δ=1はgが予想される最良のマッチを与えることを意味する。
【0104】
[00107] 入力セットIが機械学習モデルのための(ラベルなし)訓練データセットである機械学習の脈絡を検討されたい。I⊂Rと仮定し、但しRは1組の全ての実数である。機械学習の観点から、nは入力次元である。特徴抽出の目標は、以下の目的を可能な限り密に実現する計算可能関数f,...,f:I→R(各関数は入力x∈Iを実数にマップする)の有限列を見つけることである。
・全ての別個のペアf、fが無相関である。
・kは引き続きn未満でありながら可能な限り大きい。
【0105】
[00108] これにより入力次元がnからkに効果的に減り、それは関数のシーケンスが情報コンテンツを保ちながら冗長性を除去する単一の変換T:I→Rと見なされ得るからであり、全てのx∈IについてT(x)=(f(x),...,f(x))が成立する。関数f,...,fはIの特徴である。
【0106】
[00109] 本明細書に記載の技法は、GPを使用する特徴抽出に関する従来の技法のものと2つの主な点で根本的に異なる。第1に、本技法は教師なし学習に使用することができる。第2に、優れた特徴を見つけるために複雑な適応度関数に依拠するのではなく、本技法は進化自体の興味深い特性、つまり標的がランダム化されるとき進化が入力データセットの特徴を自然にもたらすことに依拠する。適応度関数がはるかに複雑ではないので、このことはより効率的なプロセスをもたらす。現在、教師なし設定における自動特徴抽出の最も人気のある方法は主成分解析だが、これはもたらすことができる実現可能な特徴の複雑さを制限する線形投影の一種である。他方で、本明細書に記載の技法は任意の計算可能関数が、利用可能な計算資源によってのみ制限される特徴であることを可能にする。更に、それらの特徴は我々の選択のプログラミング言語に関して記述することができ、ことによると特徴をより説明可能にする。
【0107】
[00110] 一部の実施形態は、適応度の標的(x,y)を適応度スコアFにマップする離散確率変数X:IXO→Rによって遺伝子型gの適応度をモデリングする。Xは遺伝子型変数と呼ばれる。以下の例が実証するように、全ての遺伝子型変数は1に等しい同じ平均及びσ で以下示す同じ分散を有する。
【0108】
RTシステムの例1
[00111] 一部の実施形態は、固定された正の整数m及びnに関してI={0,1}及びO={0,1}を有するRTシステムをモデリングする。一部の実施形態は、それぞれのあり得る対(x,y)が同程度になるようにサンプル空間IxO上の一様確率分布を使用する。所与の遺伝子型gについて、一部の実施形態はランダムに選択された適応度の標的(x,y)の差分適応度Δ∈[-1,1]を以下の疑似コードによって計算する。
1.z=Φ(x)及びd=0とする。
2.1からmの間の全てのビット位置iについて、ビットzがyと合致する場合、dに1を加え、さもなければdから1を引く。
3.Δ=d/mとする。
【0109】
[00112] 上記のステップ2は1次元のランダムウォークと同等であり、dはmステップ後の起源に対する最終位置である。dは平均が0である状態で全てのgについて同じ平均及び分散を有するので、Xは平均が1である状態で全てのgについて同じ平均及び分散を有することになる。
【0110】
RTシステムの例2
[00113] より汎用のRTシステムでは、一部の実施形態は、考えられる任意の情報を符号化し得る任意長の入力及び出力ビットシーケンスI=O={0,1}を使用する。一部の実施形態は、以下に示す一様確率密度関数の改変形態を使用する。
p(x)=2-2l(x)-1
【0111】
[00114] 上記の方程式では、xは長さl(x)の任意のビットシーケンスである。一部の実施形態は、以下のようにこの密度関数を使用して組{0,1}からxのためのランダム値を選択する。
1.xを空のビットシーケンスとする。
2.0と1とが同程度の可能性である状態でビットbをランダムに選択する。
3.b=0の場合、xの現在の値を最終的な選択として使用する。
4.さもなければ0と1とが同等の可能性である状態でランダムに選択されたビットをxに付加し、ステップ2に進む。
【0112】
[00115] 所与の遺伝子型g及び適応度の標的(x,y)に関するΔの計算は、zの長さが短い場合はzにゼロを付加することによって、又はzの長さが長い場合はzを切り捨てることによってzの長さがyの長さと同じになるように最初に強制されることを除いて前のRTシステムの例のものと同じである。これにより、ステップ数がyの長さに等しくgに依存しないランダムウォークがやはりもたらされ、そのため平均が1である状態で全てのXが同じ平均及び分散を有する。
【0113】
[00116] このRTシステムは弱選択及び有性組み換えを実装し、従って対立遺伝子の頻度が以下の方程式によって示すように経時変化する:
【数1】
【0114】
[00117] 上記の方程式では、
【数2】
は世代tにおける集団内の遺伝子座iの対立遺伝子jの頻度であり、
【数3】
は遺伝子座iにおける対立遺伝子jを含む全ての遺伝子型にわたる世代tにおける平均適応度であり、Wは世代tにおいて頻度を合計すると1になることを保つように設計された正規化定数である。
【0115】
[00118] 遺伝子座i及び世代tの全ての対立遺伝子jについて、適応度の標的(x,y)を対立遺伝子の平均適応度
【数4】
にマップする離散確率変数であるように対立遺伝子変数
【数5】
:I×O→R
が定められる。次いで、遺伝子型gが世代t内にあり、遺伝子座iにおける対立遺伝子jを含むように
【数6】
を全てのXの平均として表すことができる。そのような全てのX
【数7】
がリンクされる。全ての対立遺伝子変数が1の平均を有するが、それらの分散は異なり得る。
【0116】
[00119] j及びkが同じ遺伝子座iの2つの別個の対立遺伝子だと仮定されたい。上記の方程式(1)は、以下の不等式が真である場合、或る世代tから後の世代tまでの期間中に対立遺伝子kよりも対立遺伝子jを支持する。
【数8】
【0117】
[00120] 一部の実施形態は、tとtとの間の全ての世代tについて
【数9】
の分散を
【数10】
の分散未満にすることによって上記の不等式を確率論的な意味で実現する。これに関する正当化を確認するために、方程式
【数11】
及び
【数12】
による産出変数を定める。
【0118】
[00121] 全ての世代が適応度の標的の独立した選択を行うことから、異なる世代からの任意の2つの対立遺伝子変数は統計的に独立しているということになる。この場合、積の平均は平均の積であり、そのため両方の産出変数が1の平均を有し、そのことはそれらの2つの産出変数が区別不能だと人に信じさせる可能性がある。しかし以下の例が示すように、産出変数の分布は、その構成対立遺伝子変数それぞれの分散が増加するとき低値方向により大きく偏る。
【0119】
RTシステムの例3
[00122] C++プログラムが、100世代にわたって2つの産出変数をシミュレートする実験の100回の試行を行った。図3は、一部の実施形態による、100回の試行にわたるランクに対する産出変数のプロットを示す。「小Var」とラベル付けした産出変数は小さい分散を有する構成対立遺伝子変数をシミュレートし、「大Var」とラベル付けしたもう一方の産出変数は大きい分散を有する構成体をシミュレートする。出力をスプレッドシートとしてフォーマットし、それを図3でグラフ化している。図3のグラフは、小さい分散の産出変数が大きい分散の産出変数よりも試行のおおよそ三分の二で大きい値になることを示す。このことは、RTシステムが概して平均適応度において小さい分散を有する対立遺伝子を大きい分散を有する対立遺伝子よりも支持する結論につながる。
【0120】
[00123] 典型的な対立遺伝子変数
【数13】
の分散をそのリンクされた遺伝子型変数Xg1,Xg2,...,Xgsに関して表す。
【数14】
【0121】
[00124]
【数15】
はRTシステムの定数なので、当該の対立遺伝子が多数のリンクされた遺伝子型を有し、それらの可能な限り多くのペアがゼロ又は負の共分散を有する場合、方程式(3)の右辺が最小化される。ゼロの共分散はペアが無相関であることを意味し、負の共分散はペアが反相関であることを意味する。何れの状況も表現型が互いに非常に異なるように振る舞うことを含意する。
【0122】
RTシステムの例4
[00125] 別のC++プログラムは、単純なRTシステムを500世代にわたって実行する実験の100回の試行を繰り返した。
【0123】
[00126] このシステムの例における遺伝子型はr+1ビットのシーケンスであり、各ビットは対立遺伝子0及び1を有する遺伝子である。最初の遺伝子は符号化される関数Φにおいて残りのr個の遺伝子がどのように使用されるのかを決定するマスタ制御であり、関数Φは2ビットのシーケンスを入力として取り、単一ビットを出力としてもたらす。制御遺伝子の対立遺伝子0は残りの遺伝子を無視し、全ての入力に対して0を返す関数であるようにφを定めるのに対し、対立遺伝子1は残りの遺伝子のrビットを入力シーケンス内の位置を表す符号なし整数として解釈し、φはその位置における入力ビットの値を自らの出力として返す。
【0124】
[00127] 制御遺伝子の対立遺伝子0は、任意の集団内の単一の表現型にしかリンクすることができない。対立遺伝子0にリンクされる遺伝子型の任意のペアが正の共分散を有する。しかし対立遺伝子1は、多くのペアが無相関である多くの別個の表現型にリンクされる可能性があり、それらがゼロの共分散を有することを意味する。このようにして、進化は対立遺伝子0よりも対立遺伝子1を支持する。
【0125】
[00128] 各試行の終了時に、対立遺伝子1のパーセントとしての最終頻度を記録する。一部の実施形態によれば、降順のランクに対する対立遺伝子1の最終頻度を与えるスプレッドシートとしてデータをフォーマットし、それを図4でグラフ化している。事実、対立遺伝子1は殆どの試行で支持されている。実際に対立遺伝子1は、約3分の2で80%以上の頻度で試行を終える。
【0126】
[00129] 方程式3で表した量は、当該の対立遺伝子の分散である。入力データセットの特徴としてRTシステムの最終成果物の集合内のプログラムを使用する目標を実現するために、一部の実施形態は、対立遺伝子の低い分散が対立遺伝子のリンクされた表現型間の多くの無相関関数に対応することを求める。不都合なことに、大きい集団の全てのメンバにリンクされる単一の対立遺伝子をシステムが有することが可能であり、その場合、対立遺伝子はゼロのあり得る最小分散を有するが、無相関ではなく反相関の合計2つの表現型しかない。これは2つの表現型が互いの逆である場合に起こる可能性があり、そのためそれらの共分散は-σ のあり得る最小値を有し、集団は偶数のメンバを有し、その半分は1つの表現型であり、もう半分は他方の表現型である。
【0127】
[00130] この状況は(逆が存在するにはプログラミング言語の表現力が十分豊かではないので)上記のRTシステムの例4では不可能だが、成功裏の特徴抽出のためにプログラミング言語は非常に表現力豊かであるべきである。
【0128】
[00131] 一部の実施形態は、逆ではないペアの相対スコアをほぼ同じにしておきながら全ての表現型にその逆と同じスコアを与えるように適応度関数を修正することによって上記の問題を解く。一部の実施形態では、修正済みの適応度関数では(i)以前は高度に反相関していた表現型のペアが高度に相関するようになり、(ii)高度に相関していたペアが高度に相関したままであり、(iii)高度に無相関だったペアが高度に無相関のままである。従って変更後、対立遺伝子の分散が低くなるための最も可能性のある方法はリンクされた表現型の多くのペアが高度に無相関であることであり、そのことは特徴抽出に適している。
【0129】
[00132] RTシステムの例1及び2に関して上記で説明した一部の実施形態は、標的出力を実際の出力と比較することに基づいて一次元ランダムウォークの終わりの起源に対する位置と共に差分適応度値を識別する。一部の実施形態は、正、負、又はゼロであり得る位置ではなく常に非負の起源からの距離を使用する。この形態は互いに同じスコアを逆に対して与えるが、ランダムウォークが十分長くない場合、非逆を区別する能力が失われる。最悪の場合、出力が単一ビットでしかない場合、全ての表現型に同じスコアが指定される。この問題に対処するために、一部の実施形態はランダム化された標的(x,y)をランダムな入出力ペアの妥当に大きい固定サイズのシーケンス((x,y),...,(x,y))に変更し、ランダムウォークが出力の全シーケンス上で生じる。要求される通り、この形態は非逆が以前と実質的に同じ関係を有しながら、逆が同じスコアを得ることをもたらす。遺伝子型変数の平均はもはや正確に1ではないが、全ての遺伝子型変数が同じ平均及び分散を有し、従って特徴抽出のための要件を満たしていることは依然として事実である。
【0130】
特徴抽出のためのRTシステムの例
[00133] この節は、一部の実施形態による特徴抽出を実装するためのRTシステムの他の特性を記載する。任意の計算可能な表現型が理論的に可能であるように、プログラミング言語Lはチューリング完全であることが望ましい。一部の実施形態はこのことを、任意の実装形態が計算資源、最も分かりやすいのはメモリ空間及びプロセッサ速度に対する制限を有することと比較検討する。一部の実施形態では、資源をスケールアップしたとき、RTシステムがかつてないほど多くの様々な表現型をもたらすことができる。
【0131】
エラーを抑制するための例
[00134] チューリング完全なプログラミング言語におけるランダム生成プログラムは、出力をもたらすことなしに休止すること又は資源限界を上回ること等、人間のプログラマによって書かれる場合はエラーと見なされる挙動をもたらす可能性が高い。RTシステムにおけるこの挙動を抑制するために、一部の実施形態はプログラム内のそのような任意のエラーを検出するように適応度関数を修正し、その場合はそのプログラムに可能な限り低いスコアを指定する。
【0132】
[00135] この修正は、全ての遺伝子型が同じ平均適応度を有するという先に与えた仮定に違反するが、同じ平均適応度を有する2つの対立遺伝子間の選択が、経時的な平均適応度における低い分散を有する対立遺伝子を支持するという結論には影響しない。
【0133】
表現型を保つための方法の例
[00136] 一部の実施形態は、図3のグラフの右側及び図4のグラフの右側に示す状況を最適化する。世代の任意のスパンの間、非常に少ない表現型にリンクされた悪い対立遺伝子が多くの表現型にリンクされたよい対立遺伝子を破る高い可能性がある。これは頻繁には起こらないが、起こる場合、悪い対立遺伝子にとっての決定的勝利になる傾向がある。特徴抽出に関してこれが意味するのは、十分に長い任意の世代数にわたり、多岐にわたる表現型が集団から消える大量絶滅事象があるということである。システムが突然変異オペレータを使用すると仮定し、損害は徐々に修復することができるが、それは最初からのやり直しを意味する。実際問題として、以下に記載するように一部の実施形態は絶滅事象から回復するためのより高速なやり方を提供する。
【0134】
[00137] 一部の実施形態は、新たな表現型が発見されるとき、その新たな表現型の目録を作り残しておく。このことは、もたらされる表現型の数に関してシステムの進捗を追跡できるようにする付加的利点を有する。端的な実装形態は以下の通りである。システムの初期化中、一部の実施形態はシステムの寿命にわたって固定されたままである試験入力のシーケンス(x,x,...,x)∈Iをランダムに生成する。集団内の全ての世代及び全ての遺伝子型gで、出力のシーケンス(φ(x),φ(x),...,φ(x))∈Oであるように定められる表現型φのシグネチャを計算する。表現型のシグネチャが過去に認められていない場合、その表現型は新しいと見なされ、その場合gがφのシグネチャによってキー付けされた永続テーブル内に記憶される。シグネチャが新しいときを突き止めるためにこのテーブルを使用することに加え、一部の実施形態は知られている全ての表現型のアーカイブとしてこのテーブルを使用する。
【0135】
[00138] 大量絶滅が何時生じたのかを明らかにしようと試み、アーカイブから集団に表現型を復元するのではなく、全ての世代で集団内にアーカイブからの小さいランダムサンプルを混合する方が単純ながらも非常に効果的である。とりわけ次世代の親が選択されるたびに、一部の実施形態は小さな確率pで親を集団の現在の世代から選択するのではなくアーカイブからランダムに選択する。よい対立遺伝子は悪い対立遺伝子よりもアーカイブ内でより高度に表される傾向にあるので、この形態はよい対立遺伝子に継続的な付加的利点を与える。
【0136】
[00139] 表現型アーカイブを使用する従来のGPシステムでは、アーカイブへの追加資格を得るには表現型が新しいだけでは不十分である。代わりに表現型が前の表現型と異なる量が測定され、資格を得るにはその量が幾らかの閾値を上回らなければならない。かかるシステムでは、表現型の多様性を実現するためにアーカイブの使用が必須である。他方でRTシステムは、方程式3に示すように表現型の多様性を測定するために進化自体のメカニクスに依拠するより効率的な手法を使用する。アーカイブを使用しなくてもRTシステムが表現型の多様性をもたらす傾向があることは、一部の実施形態による上記のRTシステムの例4の中で実証されている。
【0137】
最終成果物の例
[00140] 一部の実施形態では、上記の表現型アーカイブがRTシステムの最終成果物の基礎である。最終成果物をもたらすために、一部の実施形態は目標に応じて表現型アーカイブからサイズwの特定の部分集合を選択し、wはプログラムの所望の数である。
【0138】
[00141] 一部の実施形態では、GPインスタンスをシードするための汎用ビルディングブロックをもたらすために、表現型アーカイブはシードリストとしても知られており、リスト上のプログラムはシードと呼ばれる。最終成果物のために、一部の実施形態はリストに直近に追加されたw個のシードを選択し、但しwはシードされるGPインスタンスの所望の集団サイズである。この方法は直近シード選択法と呼ばれることがある。
【0139】
[00142] 特徴抽出のために、一部の実施形態は表現型アーカイブを特徴候補のリストと見なし、抽出特徴としてw個の最良の候補を選択するために適用可能な1つ又は複数の十分に確立された特徴選択技法を使用する。機械学習では、特徴選択は入力次元を減らす手段として入力データ要素のリストに通常適用される(特徴抽出の代替策)。代わりに一部の実施形態は、特徴抽出プロセス内の最終ステップとして特徴候補のリストに対して特徴選択をここで適用する。一部の特徴選択技法は教師なし学習に適しており、一部は厳密に教師あり学習用であり、それらがラベル付き入力データを必要とすることを意味する。
【0140】
[00143] 入力データがラベルなしである教師なし学習の事例では、データ点を互いに区別しやすいように、自らの出力値における大きい標準偏差を有する候補を特徴選択が典型的には支持する。一部の実施形態は、特徴のペアが高度に無相関であるべき要件とこのことを組み合わせる。単純だが効果的な手法は、標準偏差の降順に候補のリストを最初にソートしてリストSをもたらすことである。次にリストS上の候補cごとの相関スコアを計算し、この相関スコアはリストS上でcに先行する他の任意の候補とのcの相関の最大絶対値である。最後に、相関スコアの昇順にSをソートしてリストRをもたらし、R上の最初のw個の候補を抽出特徴として使用する。この方法は、最大標準偏差最小相関選択法と呼ばれることがある。
【0141】
[00144] 一部の実施形態では、入力データがラベル付きの場合、特徴抽出のためにラベルを使用するために1つ又は複数のラベルと(正又は負に)高度に相関する候補が支持される。この形態は1種類のラベルしかない場合に、及び/又はデータがそのラベルにどのように関係するのかを決定するのに特に適切である。この形態のための最も単純な手法は、特徴のペアが無相関である要件を緩和する。一部の実施形態は、ラベルとの相関の絶対値の降順に候補のリストを単純にソートし、ソートしたリスト上の最初のw個の候補を使用する。好都合なことに、各候補が別個の表現型を有することは抽出特徴間の重複がないことを確実にする。この方法は、最大相関選択法と呼ばれることがある。この方法は、或る特定のラベルに関してモデルを進化させるための汎用ビルディングブロックの作成にも適している。
【0142】
特徴のための汎用ビルディングブロック
[00145] 一部の実施形態は、ランダムにシードするのではなく汎用ビルディングブロックの作成を使用して初期集団をシードすることにより、消費される計算資源及び得られる結果の質の両方の観点から特徴抽出プロセスの性能を改善する。
【0143】
[00146] これは、目標が同じ問題領域内の複数のデータセットに対して特徴抽出を行うことである場合は確かに事実である。例えば手書き数字の画像の特徴に有用なビルディングブロックの多くは、手書きの英字の画像の特長にも、とりわけ何れの場合にも画像が同じサイズ及び形状を有する場合は有用である。一部の実施形態は、汎用ビルディングブロックを最初に作成し、両方の事例でそれらを再利用することによって計算資源を節約する。
【0144】
[00147] 一部の実施形態は、1つだけのデータセットでさえ汎用ビルディングブロックを使用する。この技法は、入力として測定データだけを使用してもたらすには困難であり得る複雑な多岐にわたる表現型を初期集団が含むことを可能にする。この技法は、単純なものよりも適切であり得る複雑な特徴を見つけることも助ける。
【0145】
使用事例の例
[00148] この節は、画像分類及び測定健康データに基づく疾患予測という2つのそれぞれ異なる設定において、ここで説明する及び上記で説明した技法を使用する成功裏の特徴抽出を実証する使用事例を記載する。各事例は問題領域に適した別個のプログラミング言語を使用する。訓練データセット及び試験データセットに区分化されるラベル付きデータが両方の事例で入手可能である。一部の実施形態では、特徴が抽出されるとき、教師なし学習を実証するために画像分類の場合はデータをラベルなしとして扱う。一部の実施形態では、特徴が抽出されるとき、教師あり学習を示すために疾患予測に関してデータをラベル付きとして扱う。両方の事例に共通の全般的な手法は以下の通りである。
【0146】
[00149] 一部の実施形態は、当該の問題領域の特徴のための汎用ビルディングブロックを作成するために第1のRTシステムを使用し、訓練データセットの特徴を抽出するために汎用ビルディングブロックを活用する第2のRTシステムを使用する。一部の実施形態は、訓練データセット及び試験データセットの両方の中の入力データを上記のように入力次元を減らしたビットシーケンスに変換するために抽出済みの特徴を使用する。
【0147】
[00150] 一部の実施形態は変換済みの訓練データセットに基づいて標準分類器を訓練し、変換済みの試験データセットに基づいて分類器の有効度を明らかにする。一部の実施形態は、ラベル(又はクラス)ごとに1つの出力ノードを有し、活性化関数のシグモイドを使用する、浅い(隠れ層なしの)全結合人工ニューラルネットワーク(ANN)を分類器としてもたらす。一部の実施形態は訓練のための所望の平均二乗誤差(MSE)として0.04を設定する。実験は、本明細書に記載する技法の実施形態が訓練データセット及び試験データセットの両方に関して所望の誤差を実現することを示している。
【0148】
[00151] 上記の性能は、元の訓練データセットに基づいて訓練され、元の試験データセットに基づいて試験される、同様に構成された浅いANNの性能に匹敵することを実験が示した。前者のANNは後者と同程度の性能を示し、それにより成功裏の特徴抽出に要求されるように情報コンテンツの損失なしに入力次元が減らされていることを示している。
【0149】
使用事例の例1:手書き数字の分類
[00152] 一部の実施形態は、手書き数字の何万枚もの走査画像をそれらの正しい分類と共に含むMNISTデータベースを使用する。データベースは、60,000枚の画像及び10,000枚の画像をそれぞれ有する訓練データセット及び試験データセットへと分けられる。画像はグレースケールであり、サイズは28×28ピクセルである。
【0150】
セットアップの例
[00153] 一部の実施形態はRTシステムを以下のようにセットアップする:
1.0が[0,127]の間隔に対応し、1が[128,255]の間隔に対応する状態で、最初は0から255に及ぶ各ピクセル値が単一ビットに変換されるように全ての画像を再フォーマットする。汎用ビルディングブロックの作成に関して、I={0,1}とし、但し入力次元はn=28×28=784である。特徴抽出に関して、Iは訓練データセットに対応する{0,1}の部分集合である。
2.両方のRTシステムに関して、O={0,1}とする。
3.両方のRTシステムに関して、ランダム化された標的の確率分布をサンプル空間I×O上で一様とする。
4.両方のRTシステムのプログラミング言語Lに関して、パーセプトロンチューリングマシン(PTM)の言語を使用する。この言語はチューリング完全であり、ニューロエボリューションの一種を可能にし、各プログラムがANNを生成することを意味する。関連するPTM構成パラメータは以下の通りである。
a.状態の数は512である。
b.テープの数は2であり、入力画像の行インデックス又は列インデックスを含むのに十分長い5ビットの長さを各テープは有する。両方のテープが入力インデックステープであり、出力は単一ビットなので出力インデックステープはない。
c.全てのプログラムは4,096命令の固定長を有する。
d.プログラムによって生成されるANNに対する資源限界を以下のように設定する:
i.ノードの最大数は50,000である。
ii.最大深度は100である。
iii.最大ファンアウトは16である。
iv.資源限界を超えた場合、それはエラーと見なされ、その場合プログラムに可能な限り低い適応度スコアが指定される。
5.両方のRTシステムに関して、集団のサイズを1,024に設定する。
6.少なくとも100,000個のシードがもたらされたとき汎用ビルディングブロックの作成を終了し、少なくとも100,000個の候補がもたらされたとき特徴抽出を終了する。
7.最終成果物の選択方法に関して、汎用ビルディングブロックの作成のために1,024のサイズ(パラメータw)を有する最近のシードを使用し、特徴抽出のために300のサイズを有する最大標準偏差最小相関を使用する。
8.ランダム化された標的内の入出力ペアの数に32を使用する。
9.表現型シグネチャを生成するために使用する試験入力の数に32を使用する。
10.選択強度に0.5を使用する。
11.表現型アーカイブから親を選択する確率に0.0625を使用する。
12.遺伝的オペレータを以下のように定める。
a.遺伝子ごとに作用する0.5の確率の一様交叉を使用する。
b.遺伝子型に関して作用する0.003の確率の置換オペレータを使用する。つまり、各子孫について0.003の確率でその遺伝子がランダムに並べ替えられる。
c.遺伝子に関して作用する0.001の確率の突然変異オペレータを使用する。つまり、各子孫の遺伝子ごとに0.001の確率で対立遺伝子が異なる対立遺伝子に変更される。
【0151】
結果の例
[00154] 第1のRTシステムは100,000個のシードをもたらし、直近にもたらされた1,024個のシードが第2のRTシステムの初期集団としての役割を果たす。第2のRTシステムは、入力次元を784から300に減らすために訓練データセット及び試験データセットを変換する300個の抽出特徴をもたらす。変換済みのデータセットに対してANNを実行することは以下の出力をもたらす。
最大エポック 1000.所望の誤差:0.0399999991.
エポック 1.現在の誤差:0.3200925291.ビットフェイル335963.
エポック 10.現在の誤差:0.0488955826.ビットフェイル36353.
エポック 17.現在の誤差:0.0389786735.ビットフェイル29433.
試験データに対し、MSE:0.038661、ビットフェイル:4924.
【0152】
[00155] 以下の出力を有する、元のデータセットに対してANNを実行することとこれを比較する。
最大エポック 1000.所望の誤差:0.0399999991.
エポック 1.現在の誤差:0.3162646294.ビットフェイル310092.
エポック 10.現在の誤差:0.0951004773.ビットフェイル70813.
エポック 14.現在の誤差:0.0325109586.ビットフェイル24349.
試験データに対し、MSE:0.034387、ビットフェイル:4418.
【0153】
[00156] 上記で示したように、抽出特徴を使用するANNは、成功裏の特徴抽出を示す元のデータセットを使用するANNの性能に匹敵する性能を有する。
【0154】
使用事例の例2:心疾患の予測
[00157] 一部の実施形態は、303名の匿名患者のそれぞれに関する13個の測定健康特性を、ラベル(又は標的クラス)として使用される、患者が心疾患を有するかどうかの指示(1=はい、0=いいえ)と共に含む公的に入手可能なデータセットを使用する。予備のステップとして、一部の実施形態は242名の患者を表す訓練データセット及び61名の患者を表す試験データセットへとデータをランダムに分ける。
【0155】
セットアップの例
[00158] 一部の実施形態はRTシステムを以下のようにセットアップする。
1.13個の入力データ要素のそれぞれを平均及び訓練データセットからの標準偏差に基づいて正規化する。つまり1≦i≦13である入力xごとに、μを平均とし、σをxの標準偏差とし、以下の方程式によって与えられるxの正規化済みの値
【数16】
でxを置換する。
【数17】
σが0に等しくない場合、さもなければ0。
汎用ビルディングブロックの作成に関して、I=Rとし、入力次元はn=13である。特徴抽出に関して、Iは(正規化後の)訓練データセットに対応するRの部分集合である。
2.両方のRTシステムに関して、O={0,1}とする。
3.汎用ビルディングブロックの作成に関して、ランダム化された標的の確率分布は、平均0、標準偏差1のガウス分布に従って各入力データ要素xを独立に選択すること、及びO上の一様分布に従って出力を独立に選択することと同等である。ガウス分布φ(x)は以下の方程式によって与えられる。
【数18】
次いで、x=(x,...,x)である(x,y)∈IxOに関して、確率分布が以下の方程式によって与えられる。
【数19】
特徴抽出に関して、ランダム化された標的の確率分布はサンプル空間IxO上の一様分布である。
4.プログラミング言語LはArtur B.Adibによって開発されたSlash/Aである。全ての入力及び出力が倍精度浮動小数点形式の実数なので、Slash/Aは数値データセットを解析するのに理想的なチューリング完全な命令型プログラミング言語である。以下の例は2つの入力を読み取り、それらを合計し、結果を出力として返す。
input/ #入力バッファから次の数字を得てそれをレジスタFに保存する
0/ #レジスタI=0に設定する
save/ #FのコンテンツをデータベクトルD[I]内に保存する(即ちD[0]:=F)
input/ #別の入力を得てFに保存する
add/ #Iによってポイントされる現在のデータをFに加える(即ちF:=F+D[0])
output/. #出力バッファにFを付加する
Slash/Aは、上記のようなテキスト形式で与えられるプログラムを単に一連の符号なし整数であって、それぞれの符号なし整数は言語内の一意の命令にマップする、一連の符号なし整数であるバイトコード形式に変換するための関数を含むC++ライブラリとして実装される。ライブラリ内に含まれるSlash/Aインタプリタによって使用されるのはバイトコード形式である。GPの遺伝子型としてバイトコード形式を使用することによって遺伝的オペレータを実装するのが容易になる。例えば突然変異オペレータは、バイトコード内のランダムに選択された符号なし整数を(構成可能な命令セット内の命令の数によって決定される)適切な数値範囲内の新しいランダムに選択された符号なし整数と単純に置換する。インタプリタはゼロ除算又は有効なメモリ範囲外のインデックス作成等のエラーを無視するが、かかるイベントに関する統計は追跡され、そのことはプログラムが自明かどうかを判定するためのカスタム条件をシステムが定めることを可能にする。
一部の実施形態によれば、両方のRTシステムに共通の関連するSlash/A構成パラメータは以下の通りである。
a)2つの数値定数を使用し、ループ又は高度な数学(例えば三角関数)を含まない既定の命令セットの部分集合を使用する。一部の実施形態は、命令セットの新たなインスタンスを生成するために以下のC++コードを使用する。
SlashA::InstructionSet* NewInstructionSet() {
SlashA::InstructionSet* iset_ptr = new SlashA::InstructionSet(2);
iset_ptr->insert_DIS_IO();//入力/出力コマンド
iset_ptr->insert_DIS_memreg();//メモリ-レジスタコマンド
iset_ptr->insert_DIS_regreg();//レジスタ-レジスタコマンド
iset_ptr>insert_DIS_basicmath(); //基本的な数学(加算、減算、乗算、//除算)
iset_ptr->insert_DIS_misc();//空命令//「nop」
return iset_ptr;
}
b)メモリコマンドに使用するデータベクトルの長さは100である。
c)全てのプログラムが128命令の固定長を有する。
d)一部の実施形態は以下の場合にプログラムを自明だと見なし、従って最も低い適応度スコアを指定する:
i.プログラムが出力を一切もたらさない
ii.プログラムが出力をもたらす前に如何なる入力も読み取らない
iii.プログラムが、浮動小数点演算のためのIEEE規格によるNaN又はINFINITYである出力をもたらす
e)プログラムの出力値rが出力バッファに追加される最初の値であり、その後の値は無視されるという慣習を使用する。一部の実施形態は、r>0が成立する場合はb=1に設定し、さもなければb=0に設定することによってrをビット値bにマップする。
5.両方のRTシステムに関して集団のサイズを1,024に設定する。
6.少なくとも100,000個のシードがもたらされたとき汎用ビルディングブロックの作成を終了し、少なくとも100,000個の候補がもたらされたとき特徴抽出を終了する。
7.最終成果物の選択方法に関して、汎用ビルディングブロックの作成のために1,024のサイズ(パラメータw)を有する最近のシードを使用し、特徴抽出のために6のサイズを有する最大相関を使用する。
8.ランダム化された標的内の入出力ペアの数に32を使用する。
9.表現型シグネチャを生成するために使用する試験入力の数に32を使用する。
10.選択強度に0.5を使用する。
11.表現型アーカイブから親を選択する確率に0.0625を使用する。
12.遺伝的オペレータを以下のように定める。
a.0.5の確率の一点交叉オペレータを使用する。
b.遺伝子型に関して作用する0.003の確率の置換オペレータを使用する。つまり、各子孫について0.003の確率でその遺伝子がランダムに並べ替えられる。
c.遺伝子に関して作用する0.001の確率の突然変異オペレータを使用する。つまり、各子孫の遺伝子ごとに0.001の確率で対立遺伝子が異なる対立遺伝子に変更される。
【0156】
結果の例
[00159] 第1のRTシステムは100,000個のシードをもたらし、直近にもたらされた1,024個のシードが第2のRTシステムの初期集団としての役割を果たす。第2のRTシステムは、入力次元を13から6に減らすために訓練データセット及び試験データセットを変換する6個の抽出特徴をもたらす。変換済みのデータセットに対してANNを実行することは以下の出力をもたらす。
最大エポック 1000.所望の誤差:0.0399999991.
エポック 1.現在の誤差:0.2840425670.ビットフェイル205.
エポック 100.現在の誤差:0.1104911044.ビットフェイル36.
エポック 200.現在の誤差:0.1104902178.ビットフェイル36.
エポック 300.現在の誤差:0.1104939356.ビットフェイル36.
エポック 400.現在の誤差:0.1104927137.ビットフェイル36.
エポック 500.現在の誤差:0.1104928628.ビットフェイル36.
エポック 600.現在の誤差:0.1104914248.ビットフェイル36.
エポック 700.現在の誤差:0.1104924232.ビットフェイル36.
エポック 800.現在の誤差:0.1104900017.ビットフェイル36.
エポック 900.現在の誤差:0.1104932278.ビットフェイル36.
エポック 1000.現在の誤差:0.1104911566.ビットフェイル36.
試験データに対し、MSE:0.128879、ビットフェイル:11.
以下の出力を有する、元のデータセットに対してFANNを実行することとこれを比較する。
最大エポック 1000.所望の誤差:0.0399999991.
エポック 1.現在の誤差:0.2501831055.ビットフェイル129.
エポック 100.現在の誤差:0.1037608609.ビットフェイル35.
エポック 200.現在の誤差:0.1037616581.ビットフェイル35.
エポック 300.現在の誤差:0.1037597805.ビットフェイル35.
エポック 400.現在の誤差:0.1037595570.ビットフェイル35.
エポック 500.現在の誤差:0.1037613377.ビットフェイル35.
エポック 600.現在の誤差:0.1037596688.ビットフェイル35.
エポック 700.現在の誤差:0.1037595049.ビットフェイル35.
エポック 800.現在の誤差:0.1037632823.ビットフェイル35.
エポック 900.現在の誤差:0.1037593707.ビットフェイル35.
エポック 1000.現在の誤差:0.1037603393.ビットフェイル35.
試験データに対し、MSE:0.138724、ビットフェイル:16.
【0157】
[00160] 上記で示したように、抽出特徴を使用するANNは、成功裏の特徴抽出を示す元のデータセットを使用するANNの性能に匹敵する性能を有する。
【0158】
[00161] このようにして、ランダム化された標的の存在下での進化は入力データセットの特徴をもたらし、自動特徴抽出のための効率的で汎用の方法を与えるために使用することができる。従って、本システムは教師なし学習に使用することができ、恣意的な複雑さの特徴をもたらすことができ、選ばれた任意のプログラミング言語でその特徴を表すことができる。
【0159】
[00162] 本明細書で使用した用語は特定の実施形態を説明することを目的とするに過ぎず、特許請求の範囲の限定であることは意図しない。実施形態の説明及び添付の特許請求の範囲で使用するとき、文脈上明白に他の意味を示す場合を除いて単数形「a」、「an」、及び「the」は複数形も含むことを意図する。本明細書で使用するとき「及び/又は」という用語は、列挙される関連アイテムの1つ又は複数の任意の及びあらゆる全ての組み合わせを指し包含することも理解されよう。本明細書で使用するとき「含む」及び/又は「含んでいる」という用語は、述べられた特徴、完全体、ステップ、操作、要素、及び/又はコンポーネントの存在を規定するが、1つ又は複数の他の特徴、完全体、ステップ、操作、要素、コンポーネント、及び/又はそのグループの存在又は追加を除外しないことが更に理解されよう。
【0160】
[00163] 本明細書で使用するとき、「if(場合)」という用語は、文脈に応じて「when」、又は「upon」、又は述べられた先行条件が真「だと判定することに応答して」、又は「だという判定に応じて」、又は「だと検出することに応答して」を意味すると解釈することができる。同様に、「[述べられた先行条件が真である]と判定される場合(if it is determined)」、又は「[述べられた先行条件が真である]場合(if)」、又は「[述べられた先行条件が真である]とき(when)」という語句は、文脈に応じて述べられた先行条件が真「だと判定するとき(upon determining)」、又は「だと判定することに応答し(in response to determining)」、又は「だという判定に応じて(in accordance with a determination)」、又は「だと検出するとき(upon detecting)」、又は「だと検出することに応答し(in response to detecting)」を意味すると解釈することができる。
【0161】
[00164] 上記の説明は特定の実施形態に関して説明目的で記載してきた。但し、上記の説明的な解説は網羅的であることも開示した厳密な形態に本発明を限定することも意図しない。上記の教示に照らして多くの修正及び改変が可能である。実施形態は本発明の原理及びその実用的応用を最もよく説明するために、それにより考えられる特定の使用法に適した様々な修正を伴って他の当業者が本発明及び様々な実施形態を最もよく利用できるようにするために選択し記載した。
図1
図2
図3
図4
【国際調査報告】