質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

54173閲覧

Deep learning はなぜ pythonで実装されることが多いのですか?

LaLaLand

総合スコア107

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1グッド

5クリップ

投稿2016/04/25 15:28

インターネットで調べると、deep learningやmachine learningはpython で実装されることが多いですよね。
他のライブラリに比べて圧倒的に多いようですが、それはなぜなのでしょうか?

ご存知の方がいらっしゃいましたら、ご教示ください。

matobaa👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

私の勝手な推測ですが、numpyのおかげと思っています。

Pythonにはnumpyというライブラリがあります。このnumpyは数値計算を高速に行う事ができるライブラリです。通常、Pythonのようなスクリプト言語で数値計算を行うと、インタプリンタが色々としている分、C/C++に比べてどうしても遅くなってしまいます。しかし、numpyを使えば行列計算や高水準数学関数がC/C++並の速さで行うことができます。ディープラーニングと言ってもただの高度な計算の塊です。numpyを使えばC/C++並の速さでそれらを実現できます。速さの面で、Pythonは不利では無くなります。

では、C/C++ではなく、なぜPythonなのか?まずは、コンパイルがいらないことが一つです。ディープラーニングのような研究段階の途上にあるようなものは、何度も修正と実行が必要であり、その都度コンパイルすることはかなりの手間です。しかし、Pythonならすぐに試すことができます。そして、PythonであればC/C++のようにおまじないのような部分が少ないです。本当に重要な計算部分以外はなるべく簡易に、すばやく実装したいと考えます。そして、値の入力とか、計算部分以外は高速である必要は全くありません。C/C++の方がそういった部分が速くなりますが、Pythonに比べると注意深く書く必要があり、エラー処理とかを含めるとコード量も多くなってしまいます。Pythonであれば、計算部分に重心を据えてコーディングできるということです。

こうして多くの人がPythonとnumpyを使い、そういった人たちがもっと便利になるようなライブラリを同じくPythonとnumpy用に書き上げ、それらを使う人が同じようPythonとnumpyを使うという循環構造ができあがりました。それらの相乗効果によって、ディープラーニングをするならPythonという図式ができあがったのだと思われます。

投稿2016/04/25 22:32

raccy

総合スコア21733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LaLaLand

2016/04/26 14:42

> では、C/C++ではなく、なぜPythonなのか?まずは、コンパイルがいらない > ことが一つです。ディープラーニングのような研究段階の途上にあるような > ものは、何度も修正と実行が必要であり、その都度コンパイルすることは > かなりの手間です。しかし、Pythonならすぐに試すことができます。 これは盲点でした。私は今までjavascript以外コンパイラ言語しか使ったことなかったので。 あまり意識したこともありませんでした。 言われてみると、重要ですね。
elda

2017/07/07 18:36 編集

「書かれている」の定義が曖昧ですが、回答者3人ともライブラリそのものを書いている言語について述べているので、補足させていただきます。 Pythonで書かれたライブラリのバックエンドには必ずCもしくはC++が動いています(例外としてバックエンドにtensorflowやTheanoを用いているkerasがありますが、これは大勢ではありません)。 例えば、githubを見ると、最近落ち目ですがcaffeは87.5%がC++で書かれていますし、tensorflowは47.5%、最近出たnnablaも51.4%はC++で書かれています。 一方で、Theanoは5.4%のCで構成されているようですので必ずしもC++が筆頭言語として使わているようでは無いようですが、上記の通りCもしくはC++で書かれることが一般的です。 > ディープラーニングと言ってもただの高度な計算の塊です。numpyを使えばC/C++並の速さでそれらを実現できます。速さの面で、Pythonは不利では無くなります。 計算の塊という所にポイントが有り、numpyも内部ではCやfortranが動いているため、numpyだけ実装しようとすれば相当量のオーバーヘッドが発生するでしょう。 ちなみに、前述のライブラリ全てに共通することですが、この計算の塊を実装する上でGPUを用いた実装の場合はCuBlas、CuDnnを使うことが一般的で、これらはC言語のライブラリ(厳密には違いますがインタフェースはC言語ですね)です。 > では、C/C++ではなく、なぜPythonなのか?まずは、コンパイルがいらない > ことが一つです。ディープラーニングのような研究段階の途上にあるような > ものは、何度も修正と実行が必要であり、その都度コンパイルすることは > かなりの手間です。しかし、Pythonならすぐに試すことができます。 ただ、これについては概ね正しいと思います。 静的型付きの言語で書くと結構手間がかかりますので。
guest

0

ちょっと検索したらこんなQ&Aが見つかりました。

What is the best language to use while learning machine learning for the first time?

マシンラーニングの現役技術者たちがいろいろと述べていますが、全体的な意見としては圧倒的に Python 推しですね。その理由は、オープンソースプロジェクトとして最も多くのマシンラーニングライブラリ開発が進行中であること、必ずしもプログラミングの専門家ではない科学者たちにとって C/C++ よりもコーディングが容易であること、スクリプト言語ではあるがマシンラーニングに必要な計算ライブラリ等が高度にチューニングされていて高いパフォーマンスを発揮していることなどが挙げられていますね。

そもそもなぜ多くのオープンソースプロジェクトが立ち上がったのか、という点については、raccy さんも挙げていらっしゃる Numpy と、Scipy という2つのパッケージの存在が指摘されていました。また、R言語ベースの統計解析ライブラリとの連携がとても簡単という点も評価が高いようです。

マシンラーニングでつかわれるような高度に抽象化された数学的計算ライブラリとしてMatlabが有名ですが、これはとても優れた機能を提供している反面、ライセンスが高額(現在でも個人向けライセンスが約30万円/人)であることが難点と言われています。

マシンラーニングの基礎や応用分野の研究者たちは、潤沢な資金を持っていない学術研究者などが多くいますから、彼らにとってすべて無償で入手し、開発し、再頒布できるPythonは最適解だったのではないでしょうか。

投稿2016/04/25 23:27

tkanda

総合スコア2425

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LaLaLand

2016/04/26 14:36

"多く"のマシンラーニングライブラリがあるために・・・ってことですか。 確かに紹介いただいた Numpy, Scipy というのは便利そうでした。
guest

0

人口知能 python
で google 検索してみました。

...
(pythone は) 海外ではJava、C言語に次ぐ人気で、自動運転などのAIやビッグデータ解析の分野では欠かせなくなっているそう。
Rubyの思想とは逆で、コーディングの自由度を少なくしているから、初心者もエキスパートも無く、誰が書いても同じようなコードになる上、使えるライブラリが充実していることが魅力となっているとか。

作業効率が格段に上がるので、時間も開発費用も削減できるといういいことずくめ。なるほど。

...
オープンソースカルチャーのPythonは、いろいろな人たちと話し合って情報交換して、モチベーションが上がるものだ、と。
Pythonは、みんなで作り上げるというオープンソースの思想だからこそ、世界的に広がっている。
...

...
いくら実行が早くてもそのデータ入力やコーディング事態に時間がかかっていると本末転倒です。しかし、実行速度は犠牲にされるわけにもいかない。そのうまいところを突いているのがPython、というわけです。
...

  • ワンピースに例えるプログラミング言語【Python】

http://kinocode.jp/new/2015/10/18/programming-language-5/

...
Pythonは誰がプログラミングしても、同じようなコードになるように設計されている!
...
書きやすく、可読性(人間が読みやすい)も高いコードがかけるので、海外の学校などで最初に教わるプログラミング言語としても使われる!
...

投稿2016/04/25 23:54

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LaLaLand

2016/04/26 14:35

なるほど。そのような事情があったのですね。 だれが書いても同じようなコードになるってのはいい利点ですよね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問