Lispは人工知能の研究開発に適した言語であるとコンピューター科学者やAIの分野の研究者から聞いたことがあります。ニューラルネットワークとディープラーニングの普及により、これはまだ当てはまりますか?この理由は何ですか?現在の深層学習システムは現在どの言語に組み込まれていますか?
Lispは人工知能の研究開発に適した言語であるとコンピューター科学者やAIの分野の研究者から聞いたことがあります。ニューラルネットワークとディープラーニングの普及により、これはまだ当てはまりますか?この理由は何ですか?現在の深層学習システムは現在どの言語に組み込まれていますか?
回答:
まず、私はあなたが意味することを推測するのCommon Lisp(標準言語仕様で、その参照HyperSpecを効率的な実装(ラàで)SBCL)。ただし、Schemeの最近の実装も関連する可能性があります(BiglooやChicken / Schemeなどの適切な実装)。Common LispとScheme(さらにClojureも)は、同じLispファミリーのものです。そして、ビッグデータや機械学習アプリケーションを駆動するスクリプト言語として、ガイルかもしれないことはPythonに便利な交換ともLispの方言です。ところで、私はSICPを読むことをお勧めします、Schemeを使用したプログラミングの優れた紹介。
次に、Common Lisp(およびLispの他の方言)は、シンボリックAIに最適です。ただし、最近の多くの機械学習ライブラリは、より主流の言語でコーディングされています。たとえば、TensorFlowはC ++およびPythonでコーディングされています。ディープラーニングライブラリは、主にC ++またはPythonまたはCでコーディングされます(GPUコンピューティングパーツにOpenCLまたはCudaを使用することもあります)。
Common Lispは、以下の理由により、シンボリック人工知能に最適です。
ただし、ほとんどの機械学習およびニューラルネットワークライブラリはCLでコーディングされていません。ニューラルネットワークもディープラーニングも、シンボリック人工知能分野にはないことに注意してください。この質問も参照してください。
EuriskoやCyCのようないくつかのシンボリックAIシステムがCLで開発されました(実際には、CLの上に構築されたDSLで)。
プログラミング言語はあまり重要ではないことに注意してください。で人工一般知能の研究テーマ、一部の人々は、すべて独自のコード(そうでそれを設計している生成するAIシステムのアイデアに取り組んでブートストラップアプローチを)。次に、そのようなシステムによって生成されるコードは、Cのような低レベルのプログラミング言語でも生成できます。J.Pitratのブログを参照してください。
basile@starynkevitch.net
; 私はツイッターを使用するには
David Nolen(ClojureとClojureScriptの寄稿者、Core LogicのminiKanrenの移植者)は、LISPがあまりにも強力であるとの講演で、LISPは他のプログラミング言語よりも数十年先だったと述べました。言語が名前を維持できなかった理由はいくつかあります。
この記事では、LISPがAIに適している重要なポイントを強調しています
この分野の私の友人のほとんどは、通常、人工ニューラルネットワークと機械学習にMatlabを使用しています。ただし、低レベルの詳細は非表示にします。結果を探しているだけで、そこにたどり着く方法を探していないのであれば、Matlabは良いでしょう。しかし、低レベルの詳細なものでも学習したい場合は、少なくとも一度はLISPを使用することをお勧めします。
さまざまなAIアルゴリズムとテクニックを理解している場合、言語はそれほど重要ではないかもしれません。「人工知能:現代のアプローチ(Stuard J. RussellとPeter Norvig著)」を読むことをお勧めします。現在この本を読んでおり、とても良い本です。
AIは、機械学習、ディープラーニング、ニューラルネットワークなどをはるかに超える幅広い分野です。これらの分野の一部では、プログラミング言語はまったく問題にならないため(速度の問題を除く)、LISPは確かにトピックではありません。
たとえば、検索やAIの計画では、C ++やJavaなどの標準言語が最初の選択肢であることがよくあります。これは、高速(特にC ++)であり、計画システムなどの多くのソフトウェアプロジェクトがオープンソースであるため、標準言語の使用が重要であるためです(または少なくともフィードバックや拡張機能を評価する場合には賢明です)。LISPで記述されたプランナーは1つだけです。AIのこの分野におけるプログラミング言語の選択の役割についての印象を与えるために、最もよく知られている、したがって最も重要なプランナーのリストを示します。
Fast-Downward:
説明:おそらく最も有名な古典的な計画システム
URL: http : //www.fast-downward.org/
言語: C ++、パーツ(前処理)はPython
FF:
説明:一緒に高速下向きで、古典的な計画システムの誰もが知っているURLを:https://fai.cs.uni-saarland.de/hoffmann/ff.html 言語: C
VHPOP:
説明:最も有名な半順序因果リンク(POCL)計画システムの1つ
URL: http : //www.tempastic.org/vhpop/
言語: C ++
SHOPおよびSHOP2:
説明:最もよく知られているHTN(階層)計画システム
URL: https : //www.cs.umd.edu/projects/shop/
言語: SHOPおよびSHOP2には2つのバージョンがあります。元のバージョンはLISPで記述されています。新しいバージョン(JSHOPおよびJSHOP2と呼ばれる)はJavaで記述されています。Pyshopは、Pythonで書かれたSHOPバリアントです。
PANDA:
説明:別の有名なHTN(およびハイブリッド)計画システム
URL: http : //www.uni-ulm.de/en/in/ki/research/software/panda/panda-planning-system/
言語:そこPANDA1とPANDA2はJavaで記述され、PANDA3は主にJavaで記述され、一部の部分はScalaにあります。
これらは、私の頭に浮かんだ最も有名な計画システムのほんの一部です。最新のものは、2年ごとに開催される国際計画コンペティション(IPC、http: //www.icaps-conference.org/index.php/Main/Competitions )から取得できます。競合するプランナーのコードは、オープンソースとして公開されています(数年間)。