AIのほとんどの言語よりもLispの方が優れているという長年の信念があるようです(主に非盗聴者による)。
この信念はどこから生まれたのですか?それに実際に根拠はありますか?
AIのほとんどの言語よりもLispの方が優れているという長年の信念があるようです(主に非盗聴者による)。
この信念はどこから生まれたのですか?それに実際に根拠はありますか?
回答:
LISPに似た言語と他の言語の主な違いの1つは、LISPではコードとデータが同じことです。これにより、言語のネイティブ部分として、新しいものを「学習」するときに、実行時にプログラムにアルゴリズムの一部を変更させるなどのことが可能になります。
これには、それほど多くはありませんが、マクロを介して新しい言語セマンティクスを簡単に追加できるLISPの機能もあります。これにより、AIの実行中にその言語が成長、自己修正、および進化する可能性を備え、AIが実際に動作し、進化できるDSLを実際に入力して定義することができます。
Quadrescenceに同意すると、LISPの使用の歴史は、AIに適しているというLISPのイメージに向けて大きく前進します。 AIにLISPを使用する理由は、歴史をより詳細にカバーしているためです。
Lispの最初のプログラムのいくつかは、定理証明、記号数学、古典的なELIZAなどでした。PeterNorvigのPAIPのような本に加えて、lispはMIT AIラボで作成されたという事実に加えて、そのLispはAIに適しています。
DARPAはAIの研究のために大学にも資金を提供し、Symbolicsから大量のハードウェアを購入しました。資金不足は、最終的にいわゆる「AI冬」につながりました。
最後に、Fortranのような元の言語(またはASMのような「言語」)が数値計算のために主に使用されました。あなたはそれらの数と配列を扱った。最近では、ほとんどの現代言語で、シンボル、または希望するほぼすべてのオブジェクトを作成する機能があります。
だから、一度にAIにとってLispが優れていた理由は、もはや事実ではありません。ただし、「lispはAIに適している」という考えはまだ残っています。
Lispがその機能と構造のために優れた言語であるかどうかはまったく別のケースです(実際、この種のことはAI以外の多くの分野にも当てはまり、通常は昔の火炎戦争につながるからです)。
現在のAIプログラムを見てみましょう。(1)ロボット、たとえば自動運転車。DARPAグランドチャレンジでは、優れた自動車運転ソフトウェアはLispではありませんでした。むしろ、C ++やJavaなどの手続き型言語でした。(2)自然言語の機械翻訳。Lispは、広く使用されている生産システムでは、この目的には使用されません。(3)ゲームプレイ、例えばチェスプログラム。この目的のために、LispはFritzなどの広く使用されている優れたチェスプログラムでは使用されません。
Lispは、ネイティブのLispデータ構造が必要な記号抽象化のレベルに適合する記号論理プログラムを迅速にプロトタイプ化するために、1960年代にUS AIラボによって発明および開発されました。演算子とオペランドのリストとして表されます。
しかし、プロダクションプログラムの場合、静的型付け言語とさまざまなサードパーティライブラリのソフトウェアエンジニアリングの利点により、LispはAIタスクを実行する大規模で近代的なシステムでも考慮されていません。
@スティーブン・リードはそれをとてもよく言った。70年代にMIT AIラボにいたことだけを付け加えることができます。それから、Lispの起源についての話を聞いた。私はそれが真実だと断言することはできませんが、次のようになります。
ジョン・マッカーシーは50年代にMITにいましたが、プログラムの特性の証明に取り組んでいたため、ラムダ計算に似た単純な構文を使用していました。
物語は、大学院生の一人がプロジェクト(アナロジー、定理証明、または象徴的な数学、私はどちらを覚えていないか)を望み、McCarthyにどの言語を使用するか尋ねました。答え-もちろんFortran。(他にはあまりなく、リスト処理自体はかなりよく知られていましたが、言語としてではなく、サブルーチンパッケージとしてのみです。)それで、どういうわけか、ネストされたリスト構造のシンボルを処理するプログラムになりました。それらを読み、印刷する方法、そしてeval
機能、そしてVoila '-言語。リスト処理言語。そこから離陸した。
当時私たちが行っていた種類のアルゴリズム(そしてまだ非常に少数の人々しか行っていません)には、シンボリック式を簡単に操作できる言語が必要でした。それがLispの長所です。基本概念には、Prolog、Schemeなどの異なる名前でさまざまなバリエーションがあります。
だからAIは多くの人にとって多くのことを意味し、異なる言語は異なるものに適していますが、シンボル操作として説明できる問題については、Lispに由来するものではない有用な言語を見つけることは困難です。
Lispは、少なくとも90年代までAIのほとんどであったロジック、検索、および関連するものを解析するという、AIと呼ばれる種類のものに利点があります。
Lispの主な利点は、マクロのサポート-データとしてのコード、メタプログラミングです。
標準ML(SML)は、たとえば80年代からAIで広く使用されている別の言語です。客観的なCAMLとF#はSMLの進化です。
MLファミリ(およびHaskellなど)の主な利点は、パターンマッチングです。これはおそらくLispでも利用可能ですが、言語に組み込まれているのではなく、メタプログラミングライブラリを介して利用できます。Haskellでも利用可能ですが、少なくとも現時点では、パターンマッチングは関数型プログラミング言語以外では一般的ではありません。
LISPは基本的に拡張された型付けされていないラムダ計算であり、MLは基本的に拡張された型付きラムダ計算であるという主張を見てきました。型付きラムダ計算の知識がありません。
AIはまた、長年にわたってはるかに広範なテーマになりました-それはほぼ完全に消えたという点まで。データマイニングは、AIの1つのサブフィールドと考えることができます。多くのAIの事柄(OCR、音声認識)は、AIであることがほとんどなくなりました。これらは、他のアプリケーションと同じ、単なるアプリケーションです。また、AIは以前よりも信号処理やその他の種類の数値演算処理に大きく依存しています。
OCRと音声認識の場合、AIは常に信号処理と数値演算に常に依存していました。はい、これにはいくつかの矛盾があります;-)私は本当に知らないので、物事に重みを与えることはできません。
とにかく、その結果、おそらく、1つの最新のAIアプリケーション全体に適した単一の言語は存在しません。最新のAIには多言語開発がたくさんあると思います(実際の知識はありません)。そして、いくつかのプロジェクトでCとC ++が見つかることをほぼ保証できます。同様の理由でPythonがたくさんあっても驚くことはありません-優れた数値ライブラリがあれば、Pythonは簡単に数値計算タスクを処理できます。
これらの自動運転車の1つでは、ビジョンシステムがルート計画システムとは異なる言語で記述されている(そして異なるハードウェアで実行されている)と想像します。