帰納的プログラミング( IP ) は自動プログラミングの特殊な領域であり、人工知能とプログラミングの研究をカバーし、入出力の例や制約などの不完全な仕様から、通常は宣言型(論理型または関数型) で、多くの場合再帰的なプログラムを学習することを扱います。
使用されるプログラミング言語に応じて、帰納的プログラミングにはいくつかの種類があります。LispやHaskellなどの関数型プログラミング言語を使用する帰納的関数型プログラミング、および特にPrologなどの論理プログラミング言語と記述論理などの他の論理表現を使用する帰納的論理プログラミングがより顕著ですが、制約プログラミングや確率プログラミングなどの他の(プログラミング)言語パラダイムも使用されてきました。
意味
帰納的プログラミングには、不完全な (形式的な) 仕様からプログラムやアルゴリズムを学習することに関係するすべてのアプローチが組み込まれています。IP システムで可能な入力は、トレーニング入力とそれに対応する出力のセット、または対象プログラムの望ましい動作を記述する出力評価関数、特定の出力を計算するプロセスを記述するトレースまたはアクション シーケンス、時間効率や複雑さに関して誘導されるプログラムの制約、標準データ型などのさまざまな種類の背景知識、使用する定義済み関数、対象プログラムのデータ フローを記述するプログラム スキームまたはテンプレート、ソリューションの検索をガイドするヒューリスティック、またはその他のバイアスです。
IP システムの出力は、条件文とループまたは再帰制御構造を含む任意のプログラミング言語、またはその他の種類のチューリング完全な 表現言語で書かれたプログラムです。
多くのアプリケーションでは、出力プログラムは例と部分的な仕様に関して正確でなければならないため、自動プログラミングまたはプログラム合成内の特別な領域として帰納的プログラミングが考慮されることになります。[1] [2]通常は「演繹的」プログラム合成[3] [4] [5]とは対照的です。演繹的プログラム合成では、仕様は通常完全です。
他のケースでは、帰納的プログラミングは、一般的な機械学習、より具体的な構造マイニングの領域、またはシンボリック人工知能の領域のように、宣言型プログラミング言語または表現言語を使用でき、例に多少のエラーがあってもよい、より一般的な領域と見なされます。際立った特徴は、必要な例または部分的な仕様の数です。通常、帰納的プログラミング手法は、ほんの数例から学習できます。
帰納的プログラミングの多様性は、通常、使用されるアプリケーションと言語に由来します。論理プログラミングと関数型プログラミングの他に、関数型論理プログラミング、制約プログラミング、確率プログラミング、アブダクション論理プログラミング、様相論理、アクション言語、エージェント言語、および多くの種類の命令型言語など、他のプログラミングパラダイムと表現言語が帰納的プログラミングで使用または提案されてきました。
歴史
再帰的関数プログラムの帰納的合成に関する研究は1970年代初頭に始まり、サマーズの独創的なTHESISシステム[6]とビアマンの研究[7]によって確固たる理論的基礎が築かれました。 これらのアプローチは2つの段階に分かれています。第1段階では、入出力例を少数の基本演算子を使用して非再帰プログラム(トレース)に変換します。第2段階では、トレースの規則性を検索し、それを再帰プログラムに折り込みます。1980年代半ばまでの主な結果はスミスによって概説されています。[8]合成可能なプログラムの範囲に関する進歩が限られていたため、研究活動は次の10年間で大幅に減少しました。
1980年代初頭、論理プログラミングの出現は新たな活力と新たな方向性をもたらしました。特に、シャピロのMISシステム[9]が、最終的に帰納的論理プログラミング(ILP) [10]という新しい分野を生み出しました。プロトキン[11] [12]の初期の研究と彼の「相対最小一般化(rlgg)」は、帰納的論理プログラミングに多大な影響を与えました。ILPの研究のほとんどは、再帰的論理プログラムだけでなく、論理的表現からの記号仮説の機械学習にも焦点が当てられているため、より広範な問題に取り組んでいます。ただし、GOLEMなどの適切な背景知識と組み合わせた例からクイックソートなどの再帰的Prologプログラムを学習することに関する有望な結果もありました。[13]しかし、初期の成功の後、コミュニティは再帰プログラムの誘導に関する進歩が限られていることに失望しました。 [14] [15] [16] ILPは再帰プログラムにますます重点を置かなくなり、リレーショナルデータマイニングや知識発見への応用を伴う機械学習の設定にますます傾倒していきました。[17]
ILPの研究と並行して、Koza [18]は1990年代初頭に、生成とテストに基づくプログラム学習アプローチとして遺伝的プログラミングを提案しました。遺伝的プログラミングのアイデアは、帰納的プログラミングシステムADATE [19]と体系的探索に基づくシステムMagicHaskeller [20]にさらに発展しました。ここでも、関数型プログラムは、学習するプログラムの望ましい入出力動作を指定する出力評価(適合度)関数とともに、正の例のセットから学習されます。
文法帰納法(文法的推論とも呼ばれる)の初期の研究は、帰納的プログラミングと関連している。これは、書き換えシステムや論理プログラムを使用して生成規則を表現できるためである。実際、帰納的推論の初期の研究は、文法帰納法と Lisp プログラム推論を基本的に同じ問題として扱っていた。 [21]学習可能性に関する結果は、ゴールドの重要な研究で導入された極限での識別などの古典的な概念に関連していた。[22]最近では、言語学習の問題は帰納的プログラミングコミュニティによって取り組まれている。[23] [24]
近年、古典的なアプローチが再開され、大きな成功を収めて発展してきました。そのため、合成問題は、関数型プログラミングの最新技術、検索ベースの戦略の適度な使用、背景知識の使用、サブプログラムの自動作成を考慮したコンストラクタベースの項書き換えシステムを背景に再定式化されました。プログラム合成以外にも、特にデータ操作、例によるプログラミング、認知モデリングの分野で、最近多くの新しく成功したアプリケーションが登場しています (以下を参照)。
仮説を表現するために宣言型言語を使用するという共通の特徴を持つ他のアイデアも検討されてきた。例えば、高階の特徴、スキーム、構造化された距離の使用は、再帰的なデータ型と構造をより適切に処理するために提唱されてきた。[25] [26] [27]抽象化も、累積学習と機能の発明に対するより強力なアプローチとして検討されてきた。[28] [29]
帰納的プログラミング(一般的には生成モデルの形式)における仮説の表現に最近使用されている強力なパラダイムの1つは、確率的プログラミング(および確率的論理プログラムやベイズ論理プログラミングなどの関連パラダイム)です。[30] [31] [29] [32]
応用分野
ICML 2005と併せて開催された、帰納的プログラミングのアプローチとアプリケーション (AAIP) に関する最初のワークショップでは、「プログラムまたは再帰ルールの学習が求められるすべてのアプリケーション」が特定されました。[...] まず、構造学習、ソフトウェア アシスタント、ソフトウェア エージェントによって、プログラマーを日常的なタスクから解放し、エンド ユーザーにプログラミング サポートを提供したり、初心者プログラマーやプログラミング チューター システムをサポートしたりできるソフトウェア エンジニアリングの領域です。その他のアプリケーション領域としては、言語学習、AI 計画の再帰制御ルールの学習、Web マイニングまたはデータ形式変換の再帰概念の学習などがあります。
それ以来、エンドユーザープログラミング[33]、関連分野である例によるプログラミング[34]、デモンストレーションによるプログラミング[35]、インテリジェントな指導システムなど、これらや他の多くの分野が帰納的プログラミングの成功した応用分野であることが示されています。
帰納的推論が最近応用されている他の分野としては、知識獲得、[36]、 汎用人工知能、[37]、 強化学習と理論評価、[38] [39]、一般的な認知科学[40] [32]などがある。また、インテリジェントエージェント、ゲーム、ロボット工学、パーソナライゼーション、アンビエントインテリジェンス、ヒューマンインターフェースなどへの応用も期待されている。
参照
参考文献
- ^ Biermann, AW (1992). Shapiro, SC (編). 「自動プログラミング」.人工知能百科事典: 18– 35.
- ^ Rich, C.; Waters, RC (1993). Yovits, MC (ed.). 自動プログラミングへのアプローチ(PDF) . Advances in Computers. Vol. 37. pp. 1– 57. doi :10.1016/S0065-2458(08)60402-7. ISBN 9780120121373。
- ^ Lowry, ML; McCarthy, RD, 編 (1991).自動ソフトウェア設計.
- ^ マナ、Z。 Waldinger、R. (1992)。 「演繹的プログラム合成の基礎」。IEEE トランス ソフトウェアエンジニアリング18 (8): 674–704。CiteSeerX 10.1.1.51.817。土井:10.1109/32.153379。
- ^ Flener, P. (2002). 「プログラム合成の成果と展望」。Kakas, A.、Sadri, F. (編)。計算論理: 論理プログラミングとその先; Robert A. Kowalski を称えるエッセイ。コンピュータサイエンスの講義ノート。Vol. LNAI 2407。pp. 310– 346。doi : 10.1007 /3-540-45628-7_13。ISBN 978-3-540-43959-2。
- ^ Summers, PD (1977). 「例からLISPプログラムを構築する方法論」J ACM . 24 (1): 161– 175. doi : 10.1145/321992.322002 . S2CID 7474210.
- ^ Biermann, AW (1978). 「例からの正規LISPプログラムの推論」. IEEE Trans Syst Man Cybern . 8 (8): 585– 600. doi :10.1109/tsmc.1978.4310035. S2CID 15277948.
- ^ Smith, DR (1984). Biermann, AW; Guiho, G. (編). 「例からの LISP プログラムの合成: 概観」.自動プログラム構築テクニック: 307– 324.
- ^ Shapiro, EY (1983).アルゴリズムによるプログラムのデバッグ. MIT Press.
- ^ Muggleton, S. (1991). 「帰納的論理プログラミング」. New Generation Computing . 8 (4): 295– 318. CiteSeerX 10.1.1.329.5312 . doi :10.1007/BF03037089. S2CID 5462416.
- ^ Plotkin, Gordon D. (1970). Meltzer, B.; Michie, D. (編). 「帰納的一般化に関する注記」(PDF) .機械知能. 5 : 153–163 .
- ^ Plotkin, Gordon D. (1971). Meltzer, B.; Michie, D. (編). 「帰納的一般化に関するさらなる注記」.機械知能. 6 : 101–124 .
- ^ Muggleton, SH; Feng, C. (1990). 「論理プログラムの効率的な誘導」.アルゴリズム学習理論ワークショップの議事録. 6 : 368–381 . S2CID 14992676.
- ^ Quinlan, JR; Cameron-Jones, RM (1993). 「再帰理論を学ぶ際の落とし穴を避ける」IJCAI : 1050–1057 . S2CID 11138624.
- ^ Quinlan, JR; Cameron-Jones, RM (1995). 「論理プログラムの誘導: FOIL および関連システム」(PDF) . 13 ( 3– 4). Springer: 287– 312. 2017-09-07 のオリジナル(PDF)からアーカイブ。 2017-09-07に取得。
{{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ)が必要です - ^ Flener, P.; Yilmaz, S. (1999). 「再帰的論理プログラムの帰納的合成: 成果と展望」. The Journal of Logic Programming . 41 (2): 141– 195. doi : 10.1016/s0743-1066(99)00028-x .
- ^ Džeroski, Sašo (1996)、「Inductive Logic Programming and Knowledge Discovery in Databases」、Fayyad、UM、Piatetsky-Shapiro、G.、Smith、P.、Uthurusamy、R. (編)、Advances in Knowledge Discovery and Data Mining、MIT Press、pp. 117– 152
- ^ Koza, JR (1992). 遺伝的プログラミング: 第1巻、自然選択によるコンピュータのプログラミングについて。MIT Press。ISBN 9780262111706。
- ^ Olsson, JR (1995). 「増分プログラム変換を使用した帰納的関数型プログラミング」.人工知能. 74 (1): 55– 83. doi : 10.1016/0004-3702(94)00042-y .
- ^ 片山 進 (2008)。「反復深化によるモンテカルロ探索を用いた関数プログラムの効率的な網羅的生成」( PDF )。PRICAI 2008: 人工知能の動向。コンピュータサイエンスの講義ノート。第 5351 巻。pp. 199– 210。CiteSeerX 10.1.1.606.1447。doi :10.1007 / 978-3-540-89197-0_21。ISBN 978-3-540-89196-3。
- ^ Angluin, D.; CH, Smith (1983). 「帰納的推論: 理論と方法」ACM Computing Surveys . 15 (3): 237– 269. doi :10.1145/356914.356918. S2CID 3209224.
- ^ Gold, EM (1967). 「限界における言語識別」.情報と制御. 10 (5): 447– 474. doi : 10.1016/s0019-9958(67)91165-5 .
- ^ Muggleton, Stephen (1999). 「帰納的論理プログラミング: 論理における言語学習の課題、結果、および課題」.人工知能. 114 ( 1– 2): 283– 296. doi : 10.1016/s0004-3702(99)00067-3 .; ここ: セクション2.1
- ^ Olsson, JR; Powers, DMW (2003). 「自動プログラミングによる人間の言語の機械学習」国際認知科学会議の議事録: 507– 512。
- ^ Lloyd, JW (2001). 「高階論理における知識表現、計算、学習」(PDF)。
{{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ)が必要です - ^ ロイド、JW (2003)。学習のためのロジック:構造化データから理解可能な理論を学ぶ。Springer。ISBN 9783662084069。
- ^ Estruch, V.; Ferri, C.; Hernandez-Orallo, J.; Ramirez-Quintana, MJ (2014). 「距離と一般化のギャップを埋める」.計算知能. 30 (3): 473– 513. doi : 10.1111/coin.12004 . S2CID 7255690.
- ^ Henderson, RJ; Muggleton, SH (2012). 「機能的抽象化の自動発明」(PDF)。帰納的論理プログラミングの進歩。
- ^ ab Irvin, H.; Stuhlmuller, A.; Goodman, ND (2011). 「ベイジアンプログラムマージによる確率的プログラムの誘導」. arXiv : 1110.5667 [cs.AI].
- ^ Muggleton, S. (2000). 「確率的論理プログラムの学習」(PDF) . Electron. Trans. Artif. Intell . 4(B) : 141– 153. 2017-09-07 にオリジナル(PDF)からアーカイブ。2017-09-07に取得。
- ^ De Raedt, L.; Kersting, K. (2008).確率的帰納的論理プログラミング. Springer.
- ^ ab Stuhlmuller, A.; Goodman, ND (2012). 「ネストされた条件付けによる推論についての推論: 確率的プログラムによる心の理論のモデリング」.認知システム研究. 28 : 80–99 . doi :10.1016/j.cogsys.2013.07.003. S2CID 7602205.
- ^ Lieberman, H.; Paternò, F.; Wulf, V. (2006).エンドユーザー開発. Springer.
- ^ Lieberman, H. (2001). あなたの願いが私の命令: 例によるプログラミング。Morgan Kaufmann. ISBN 9781558606883。
- ^ Cypher, E.; Halbert, DC (1993). 私のやっていることを見て: デモンストレーションによるプログラミング。MIT プレス。ISBN 9780262032131。
- ^ Schmid, U. ; Hofmann, M.; Kitzelmann, E. (2009). 「認知ルール獲得装置としての分析的帰納的プログラミング」(PDF)。第 2 回人工知能会議の議事録: 162– 167。
- ^ Crossley, N.; Kitzelmann, E.; Hofmann, M.; Schmid, U. (2009). 「分析的帰納的プログラミングと進化的帰納的プログラミングの組み合わせ」(PDF)。第 2 回人工知能カンファレンスの議事録: 19–24。
- ^ Hernandez-Orallo, J. (2000). 「建設的強化学習」. International Journal of Intelligent Systems . 15 (3): 241– 264. CiteSeerX 10.1.1.34.8877 . doi :10.1002/(sici)1098-111x(200003)15:3<241::aid-int6>3.0.co;2-z. S2CID 123390956.
- ^ Kemp, C.; Goodman, N.; Tenenbaum, JB (2007). 「関係理論の学習と使用」(PDF) .ニューラル情報処理システムの進歩: 753– 760.
- ^ Schmid, U. ; Kitzelmann, E. (2011). 「知識レベルでの帰納的ルール学習」.認知システム研究. 12 (3): 237– 248. doi :10.1016/j.cogsys.2010.12.002. S2CID 18613664.
さらに読む
- Flener, P.; Schmid, U. (2008). 「帰納的プログラミング入門」.人工知能レビュー. 29 (1): 45– 62. doi :10.1007/s10462-009-9108-7. S2CID 26314997.
- Kitzelmann, E. (2010). 「帰納的プログラミング: プログラム合成技術の調査」(PDF) .帰納的プログラミングのアプローチと応用. コンピュータサイエンスの講義ノート。第 5812 巻。pp. 50– 73。CiteSeerX 10.1.1.180.1237 . doi :10.1007/ 978-3-642-11931-6_3。ISBN 978-3-642-11930-9。
- パートリッジ、D. (1997). 「帰納的プログラミングのケース」.コンピュータ. 30 (1): 36– 41. doi :10.1109/2.562924. S2CID 206403583.
- Flener, P.; Partridge, D. (2001). 「帰納的プログラミング」.自動ソフトウェアエンジニアリング. 8 (2): 131– 137. doi :10.1023/a:1008797606116. S2CID 6675212.
- Hofmann, M.; Kitzelmann, E. (2009). 「帰納的プログラミングシステムの分析と評価のための統一フレームワーク」。第 2 回人工知能カンファレンスの議事録: 55–60。
- Muggleton, S.; De Raedt, L. (1994). 「帰納的論理プログラミング: 理論と方法」. The Journal of Logic Programming . 19– 20: 629– 679. doi : 10.1016/0743-1066(94)90035-3 .
- Lavrac, N. ; Dzeroski, S. (1994).帰納的論理プログラミング: テクニックとアプリケーション. ニューヨーク: Ellis Horwood. ISBN 978-0-13-457870-5。https://web.archive.org/web/20040906084947/http://www-ai.ijs.si/SasoDzeroski/ILPBook/
- Muggleton, S.; De Raedt, Luc.; Poole, D.; Bratko, I.; Flach, P.; Inoue, K.; Srinivasan, A. (2012). 「ILP は 20 周年を迎えました」.機械学習. 86 (1): 3– 23. doi : 10.1007/s10994-011-5259-2 .
- グルワニ、S.ヘルナンデス・オラロ、J.キッツェルマン、E.サウスカロライナ州マグルトン。シュミット, アメリカ;ゾーン、B. (2015)。 「帰納的プログラミングと現実世界の出会い」。ACM の通信。58 (11): 90 ~ 99。CiteSeerX 10.1.1.696.3800。土井:10.1145/2736282。hdl :10251/64984。S2CID 425881。
外部リンク
- バンベルク大学が主催する帰納的プログラミング コミュニティ ページ。
