私はLispをAIプログラミングで使用されていると聞いたので、視野を広げることを学んでいます。いくつかの調査を行った後、AIの例や、AIの傾向をさらに強めるような言語のAIをまだ見つけることはできません。
Lispが利用可能だったために過去に使用されたことがありますか、それとも私が見逃しているものはありますか?
私はLispをAIプログラミングで使用されていると聞いたので、視野を広げることを学んでいます。いくつかの調査を行った後、AIの例や、AIの傾向をさらに強めるような言語のAIをまだ見つけることはできません。
Lispが利用可能だったために過去に使用されたことがありますか、それとも私が見逃しているものはありますか?
回答:
Lispは1980年代の終わりまでAIで使用されていました。しかし、80年代には、Common Lispは「AI言語」としてビジネス界に売られすぎていました。この反発により、ほとんどのAIプログラマーは数年間C ++を使用するようになりました。最近では、プロトタイプは通常、より新しい動的言語(Perl、Python、Rubyなど)で記述され、成功した研究の実装は、通常CまたはC ++(Javaの場合もあります)で行われます。
70年代に興味があるなら、私はそこにいませんでした。しかし、Lispは3つの理由で(重要な順に)AI研究に成功したと思います。
私はPeter Norvigの古いAIブックを持っていませんが、それはLispでAIアルゴリズムをプログラミングする方法を学ぶのに良い方法であるはずです。
免責事項:私は計算言語学の大学院生です。私は、自然言語処理のサブフィールドを他のフィールドよりもよく知っています。多分Lispは他のサブフィールドでもっと使われています。
Artificial Intelligence by Patrick Henry Winston
です。第2版までに、その本のプログラミングの章は、独自の同期された本に分岐しました- Lisp
。名前が示すように、プログラミングは完全にで行われLisp
ます。people.csail.mit.edu/phw/Books/LISPBACK.HTML
Lispは、シンボルで非常にうまく計算するソフトウェアの実装をサポートするため、AIに使用されます。シンボル、シンボリック式、およびそれらを使用した計算は、Lispの中核です。
シンボルを使用したコンピューティングの典型的なAI領域は、コンピュータ代数、定理証明、計画システム、診断、書き換えシステム、知識表現と推論、論理言語、機械翻訳、エキスパートシステムなどでした。
これらのドメインの多くの有名なAIアプリケーションがLispで書かれたのは当然のことです。
これらの領域には、Lispで書かれた何千ものアプリケーションがあります。それらにとって非常に一般的なのは、記号処理の領域で特別な機能が必要であることです。1つは、Lispの上にこれらのドメインで特別なインタープリター/コンパイラーを持つ特別な言語を実装します。Lispを使用すると、シンボリックデータおよびプログラムの表現を作成でき、これらの式(数式、論理式、計画など)を操作するためのあらゆる種類の機構を実装できます。
(他の多くの汎用プログラミング言語もAIで使用されていることに注意してください。特にLispがAIで使用されている理由に答えようとしました。)
その理由の1つは、ドメイン固有の構成要素を使用して言語を拡張し、ドメイン固有の言語にすることです。この手法は、ビットをシャッフルするのではなく、解決している問題について推論できるため、非常に強力です。
私の推測では、関数型言語であるため、コードとデータは区別されません。関数定義や関数呼び出しを含むすべてのものをリストとして扱い、他のデータと同様に変更できます。
したがって、自己検査、自己変更コードは簡単に記述できます。
これをAIだけで考えるのは間違っていると思います。AI冬のようなものや一般的なLISPへの商業効果は、なぜそれがAIに使用されたのかではなく、なぜ今はあまり使用されていないのかを尋ねていると気が散ります...
とにかく、AIコードのほとんどが本質的に研究コードだったからだと思います。Lispは、探索的プログラミング、困難なアルゴリズムの実装、自己変更および頻繁に変更されるコードのための優れた言語です。言い換えれば、研究コード。
今日、lispをいくつかの研究コード(数学、信号処理)に使用しています。これは、ほとんどの言語よりも柔軟で強力でありながら、ほとんどの言語よりも効率的なコードを生成するためです。通常、たとえばc ++の速度の+/- 2の係数内でパフォーマンスを得ることができますが、はるかに速く実装でき、c ++、java、c#を使用した場合よりもはるかに時間がかかる複雑さに対処できます。
しかし、それは話題から外れています。AIコードは、コードを研究するための強力なアプローチであるため、しばらくの間、主にcommon lispで作成されたと思います。それはまだです。しかし、「AI」アルゴリズムがよりよく理解され、探求されるようになるにつれて、それらの一部は教えると使用するのがはるかに簡単になり、学部課程の年間風味の言語で登場しました。そこから、それは人々がすでに知っていること、利用可能なライブラリー、そして大規模なグループにとって何がうまくいくかという問題になります。
Lispは物事をハッキングするための便利なツールでした。これは、プログラムとデータをあまり区別していなかったためです。これにより、ハッカーはデータのように非常に簡単に機能を操作できました。
しかし、lispは中括弧があり、データとプログラムが区別されないため、人間が読むのは非常に困難です。今日、私はlispをプロダクションAIコード(またはおそらくプロトタイピング)に使用しませんが、スクリプト用にpythonをはるかに好みます。
考慮すべきもう1つのことは、言語に関連する/関連する既存のライブラリ/ツールです。私はlispライブラリーとpythonライブラリーを比較する立場にはありませんが、ライブラリーとオープンソースの問題は以前よりもずっと多くなっていると思います。
この回答は、lispとpythonの以下の比較に触発されました:http : //amitp.blogspot.com/2007/04/lisp-vs-python-syntax.html
より皮肉な答えは、「1980年代に日米間の政治的AI戦争に負けたため」かもしれません。第5世代コンピューターシステムの終了によるPrologへの影響を推測する楽しいブログ投稿があります。