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

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

ただいまの
回答率

90.48%

  • Python

    8606questions

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

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

解決済

回答 3

投稿

  • 評価
  • クリップ 5
  • VIEW 39K+

LaLaLand

score 88

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+8

私の勝手な推測ですが、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/26 23:42

    > では、C/C++ではなく、なぜPythonなのか?まずは、コンパイルがいらない
    > ことが一つです。ディープラーニングのような研究段階の途上にあるような
    > ものは、何度も修正と実行が必要であり、その都度コンパイルすることは
    > かなりの手間です。しかし、Pythonならすぐに試すことができます。

    これは盲点でした。私は今までjavascript以外コンパイラ言語しか使ったことなかったので。
    あまり意識したこともありませんでした。
    言われてみると、重要ですね。

    キャンセル

  • 2017/07/08 03:25 編集

    「書かれている」の定義が曖昧ですが、回答者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ならすぐに試すことができます。
    ただ、これについては概ね正しいと思います。
    静的型付きの言語で書くと結構手間がかかりますので。

    キャンセル

+6

ちょっと検索したらこんな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/26 23:36

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

    キャンセル

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/26 23:35

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

    キャンセル

関連した質問

同じタグがついた質問を見る

  • Python

    8606questions

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