なぜPythonはAI分野で人気のある言語なのですか?


47

まず第一に、私はAIを勉強する初心者であり、これは意見志向の質問でも、プログラミング言語を比較する質問でもありません。それが最高の言語だと言っているのではありません。しかし、実際には、有名なAIフレームワークのほとんどはPythonを主にサポートしています。たとえば、Python、C ++、またはC#およびC ++をサポートするMicrosoftのCNTKをサポートするTensorFlowなど、多言語をサポートすることもできますが、最も使用されるのはPythonです(ドキュメント、例、より大きなコミュニティ、サポートなどを意味します)。C#(Microsoftと私の主要なプログラミング言語によって開発された)を選択した場合でも、Python環境をセットアップする必要があります。

私は他のフォーラムで、PythonがAIに好まれていることを読みました。コードが簡素化され、よりクリーンで、高速プロトタイピングに適しているからです。

AIテーマ(Ex_Machina)で映画を見ていました。一部のシーンでは、メインキャラクターがハウスオートメーションのインターフェイスをハッキングします。どの言語が現場にあったと思いますか?Python。

それでは、PythonとAIの関係は何ですか?


映画でのプログラミング言語の表現は通常、実際の生活とは関係がないことに注意してください!信徒への不可解なgobbledegookのように見えますが...通常、罰金であることを何でも
オリバー・メイソン

C#がメインのプログラミング言語である場合、scisharpstack.org
henon

回答:


32

Pythonには、大量の組み込みライブラリが付属しています。ライブラリの多くは、人工知能と機械学習用です。ライブラリには、Tensorflow(高レベルのニューラルネットワークライブラリ)、scikit-learn(データマイニング、データ分析、機械学習用)、pylearn2(scikit-learnよりも柔軟性が高い)などがあります。終了します。ここで

いくつかのライブラリを見つけることができます。 PythonにはOpenCVの簡単な実装があります。Pythonを誰もが気に入っているのは、強力で簡単な実装です。 他の言語の場合、学生と研究者は、その言語でMLまたはAIに入る前にその言語を知る必要があります。これはPythonの場合ではありません


。非常に基本的な知識を持つプログラマでさえ、Pythonを簡単に処理できます。それとは別に、誰かがpythonでコードを記述してデバッグするのに費やす時間は、C、C ++、またはJavaに比べてはるかに短いです。これはまさにAIとMLの学生が望むものです。構文エラーのコードのデバッグに時間を費やしたくなく、AIとMLに関連するアルゴリズムとヒューリスティックにもっと時間を費やしたいと考えています。
ライブラリだけでなく、そのチュートリアル、インターフェイスの処理もオンラインで簡単に利用できます。人々は独自のライブラリを構築し、GitHubまたは他の場所にアップロードして、他のユーザーが使用できるようにします。

これらの機能はすべて、Pythonをそれらに適したものにします。


10
「彼らは構文エラーのためにコードをデバッグするのに時間を費やしたくない」-プログラマーはこれをしたいですか?Pythonはすべてに最適な言語ですか?私は確信していません。
フランクパファー

24

事実上、最も一般的で広く使用されているディープラーニングフレームワークはすべて、Python on the surfaceとC / C ++の内部で実装されています。

主な理由は、Pythonが科学や研究のコミュニティで広く使用されているからだと思います。Pythonのような最小限の構文を持つ言語で新しいアイデアやコードプロトタイプを簡単に実験できるからです。

さらに、別の理由があるかもしれません。私が見ることができるように、AIの過大評価されているオンラインコースのほとんどは、初心者プログラマにとって簡単であるため、Pythonを推進しています。AIは、プログラミングコースを販売するための新しいマーケティングホットワードです。(メンションAIは、HAL 3000を構築したい子供にプログラミングコースを販売できますが、Hello Worldを記述したり、Excelグラフにトレンドラインをドロップすることもできません。)


4
「....... AIの過大評価されているオンラインコースのほとんどは、初心者プログラマにとって簡単であるため、Pythonを推進しています。AIは、プログラミングコースを販売するための新しいマーケティングホットワードです...」----良い点。カントはもっと同意します。
Emran Hussain

5

Pythonには開発中の標準ライブラリと、AI用のいくつかのライブラリがあります。直感的な構文、基本的な制御フロー、およびデータ構造を備えています。また、標準のコンパイラ言語なしで、解釈ランタイムをサポートします。これにより、PythonはAIのプロトタイピングアルゴリズムに特に役立ちます。


Pythonの解釈機能についての良い点。コンパイルされた言語のより大きな「馬力」よりも柔軟性と開発速度が強く好まれているようです。
デューク

5

分析作業でPythonに惹かれるのは、汎用言語として設計されているのに対して、ドメイン固有の言語としてRとして設計されているために利用可能なツールの「フルスタック」です。実際のデータ分析はストーリーの一部に過ぎず、Pythonには、単一の言語で最初から最後まで取得するための豊富なツールとクリーンでフル機能の言語があります(C / Fortranラッパーの使用にもかかわらず)。

フロントエンドでは、私の仕事は通常、データベース、さまざまな形式のファイル、Webスクレイピングなど、さまざまなソースからデータを取得することから始まります。これに対するPythonのサポートは良好であり、ほとんどのデータベースまたは一般的なデータ形式には、インターフェイスで利用可能な、しっかりと維持されたライブラリがあります。RはデータI / Oの一般的な機能を共有しているようですが、FITSの場合、Rパッケージは積極的に開発されていないようです(2.5年でFITSioのリリースはありませんか?)。次の作業の多くは、通常、データを整理し、多くのシステムレベルの対話でパイプラインベースの処理を行う段階で発生します。

バックエンドでは、大規模なデータセットを具体的な方法で提示できる必要があります。私にとって、これは通常、Webページの生成を意味します。2つのプロジェクトについて、大規模なChandra調査プロジェクトの結果を検査するための重要なDjango Webアプリを作成しました。これには、多くのスクレイピング(多波長カタログ)などが含まれていました。これらは、データセットをナビゲートし、ソースカタログの生成を支援するために内部で使用されただけですが、プロジェクト全体で非常に貴重でした。

分析のための天文学固有の機能に移行すると、コミュニティがPythonの背後にしっかりと存在していることは明らかです。これは、利用可能なパッケージの深さと、個人レベルおよび組織レベルの両方での開発活動のレベルで見られます(http://www.astropython.org/resources)。使用可能で作業中のこのレベルのインフラストラクチャを考えると、天文学のための最も有用なR統計ツールをPythonに移植する努力を向けることは理にかなっていると思います。これは、rpy2を介してPythonからR関数を呼び出す現在の機能を補完するものです。興味がある場合は、この記事を読むことを強くお勧めします。 is-b ... nd-java-r /役立つことを願っています。幸運


3

Pythonには豊富なライブラリがあり、オブジェクト指向であり、プログラムが簡単です。フロントエンド言語としても使用できます。それが人工知能で使用される理由です。AIではなく、機械学習、ソフトコンピューティング、NLPプログラミングで使用され、Webスクリプトまたは倫理的ハッキングとしても使用されます。


Pythonは確かに、特にWebスクリプティングのプログラミング言語としてナンバーワンだからです。最初は、AutoItはAimbotの作成に使用されているため、完璧なスクリプト言語であることを世界に説明できるのではないかと心配でした。
マヌエルロドリゲス

2

これは、pythonがスタイリッシュな構文を持つ最新のスクリプトオブジェクト指向プログラミング言語だからです。JavaやC ++などの構造プログラミング言語とは異なり、そのスクリプトの性質により、プログラマは仮説を非常に高速にテストできます。さらに、AIフィールドでのpythonの使用を拡大するオープンソースの機械学習ライブラリ(scikit-learnおよびKerasを含む)が多数あります。


2

多くの要素が組み合わさって、認知システムを開発するための非常に良い選択肢となります。

  • 迅速な開発
  • ラピッドプロトタイピング
  • ほぼ人間レベルの可読性を備えた使いやすい構文
  • 多様な標準ライブラリとマルチパラダイム
  • C / C ++などのコンパイルされた言語で記述されたパフォーマンスバックエンドのフロントエンドとして使用できます。

numpyなどの既存の高性能数値ライブラリは、すでに集中的な一括処理を行っているため、システムのアーキテクチャ面にもっと集中できます。

その上、Pythonの周りには非常に大きなコミュニティとエコシステムがあり、その結果、さまざまな種類のタスク向けのさまざまなツールセットが利用可能になります。


0

私は実際に機械学習のためにCを好みます。人生のように、私たちが知っている世界では、終わりのない「論理ゲート」で構成されているためです(基本的にコインを投げるようなものです。また、これは、宇宙は終わりのないように見えますが、最後の最も小さなものよりもさらに小さいものを見つけることを決して止めないということですよね?

C ...生物学の「細胞」(測定可能な機能を持ち、いくつかの事前設定された特性があります)。

したがって、AIをプログラミングするときは、RAM使用量、CPU使用量などを低く抑えるように最適化するのが好きです。私はCの基本的な遺伝的アルゴリズムでフィードフォワードを行っただけですが、C ++で記述したより高度なリカレントニューラルネットワーク(「std :: vector name;」を使用する単純さのため、独自のcvector.cを記述しました:https://pastebin.com/sBbxmu9T &cvector.h:https://pastebin.com/Rd8B7mK4&デバッグ:https://pastebin.com/kcGD8Fzf -のgcc -oデバッグdebug.c cvector.c付きコンパイル)。最適化されたニューラルネットワークを作成する際に、CPU使用率(および全体的なランタイム)を最適化するためにALOTが実際に役立ちました。

それが役に立てば幸い。

編集: だから私はある意味で、「自己」の領域内で何が可能かを探求することになると、AlexPntが見るものとは正反対を見る。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.