Photo by thekirbster
秋山です。
皆さんPythonは好きですか?私はPythonのブロックインデントや条件文の構文などが好きで、趣味や仕事で6・7年ぐらいPythonを使ってきました。むか~しはR言語などを勉強してみたりもしましたが、自分はちょっとR言語が苦手なので、今はデータ分析とかもPythonでやってます。
最近は機械学習やディープラーニングのためにPythonを勉強し始める人が増えてきましたが、機械学習初心者で「始めてみたいな~」という人の中には、そもそも何で「機械学習イコールPython必須」みたいな感じなのか、疑問な人もいるかと思います。
というわけで今回は、Pythonがなぜ機械学習やディープラーニングなどに使われがちなのか…についてちょこっと書いてみます。
Pythonは初期から行列計算ライブラリなどが整備されていた
Pythonが何で機械学習で使われているかって、数学やデータ分析系の強力なライブラリが充実しているからと言ってしまえばそれまでなんですが…。
Python自体は1991年に開発されて、1994年に1.0がリリースされています。
そして、もはや機械学習するなら使うのが当たり前みたいになっているPythonの計算ライブラリNumpyは、リリースされたのが1995年ごろです。(いつリリースされたのかはちょっとあいまいですが、もともとNumericとNumArrayという2つのライブラリが統合されてNumpyができたそうです)
意外と古いですよね。R言語は1995年にβ版がリリースなので、歴史としてはNumpyと近いですね。
Pythonは最近人気が出てきたので新しい言語と思っていた人もいるかもしれませんが、実は歴史が長く、そのぶんライブラリが充実しているという長所があります。
Pythonもライブラリもドキュメントが充実していてわかりやすい
Python自体の公式ドキュメントはもちろん、NumpyとかTensorFlowとかKerasとか……ライブラリのドキュメントも非常にわかりやすくまとまっています。
Pythonの公式チュートリアルなんかは非常に読みやすく、プログラミング初心者にもちょうどいいと思うので、これからPythonを始める人はぜひやってみてください。
Python チュートリアル — Python 3.9.4 ドキュメント
言語によってはそこまでドキュメントがやさしくない場合もあるので、(個人的にはR言語のドキュメントとか読んでてつらい…)これはPythonのよいところですね。
教育向きの言語としても使われ、学術目的での利用が広がっている
アメリカでは、Pythonは大学のコンピューターサイエンスの授業で最初に教える言語として広がっているようです。
MITの教科書などは和訳して出版もされていますよね。こういったよい教科書もたくさん出ていますし、前述のとおりドキュメントも充実しているので、学術利用や研究目的での利用がしやすくはなっています。
CやC++のメソッドを呼び出しやすい
Python自体は、お世辞にも速い言語とは言えません。
公式のチュートリアルの冒頭『1. やる気を高めよう』でも、こんな記述があります。
Python には 拡張性 があります: C 言語でプログラムを書く方法を知っているなら、簡単に新たな組み込み関数やモジュールを、簡単にインタプリタに追加できます。これによって、処理速度を決定的に左右する操作を最大速度で動作するように実現したり、(ベンダ特有のグラフィクスライブラリのように) バイナリ形式でしか手に入らないライブラリを Python にリンクしたりできます。
『処理速度を決定的に左右する操作を最大速度で動作するように実現したり』したいのであればC言語のような速い言語を使ってプログラムを書くべし…ということですね。
この公式の見解通り、NumpyなどのPythonライブラリは、動作を速くするために中身はCやC++で書かれているため、素早く動いてくれます。
Python3系で型ヒントが使えるようになった
まだ暫定的な導入ではありますが、3系では型のチェックなどをしてくれるようになっています。
typing --- 型ヒントのサポート — Python 3.9.4 ドキュメント
mypy というライブラリを使えば、型の間違いなどもいい感じに検出してくれます。
型ヒントを使えば、たとえばデータ分析で整数値を扱っていたのが勝手に浮動小数になっておかしな結果になってしまった…みたいなことを防げます。
まとめ
というわけで、Pythonがなぜ機械学習やディープラーニングに使われるのかについて書いてみました。
このほかにも、よくPythonはコードがシンプルでわかりやすく書きやすい…と言われていますよね。Pythonの作者も、Pythonの目標を「平易な英語のようなわかりやすいコード」としています。(グイド・ヴァンロッサム - Wikipedia)
ただ、ブロックインデントなどがわかりやすいかどうかは賛否両論ですよね。(私はとても好きですが…)Pythonがあまり好きではない人からしてみると、endで終了が明示されてほしいとか、{}でくくられてないと不安…とかいう気持ちもわかります。
ほかにもPythonや機械学習などに関する記事をいろいろ書いているので、興味のある方は見てみてください。
paiza.hatenablog.com
paiza.hatenablog.com
「プログラミング自体が初心者なので、まずはPythonを使えるようになりたい!」という方は、プログラミングが動画で学べる「paizaラーニング」の「Python入門編」(今年から全編無料になりました)から始めてみてください。
■動画でプログラミングが学べるpaizaラーニングにPython×AI・機械学習入門編が登場!
動画でプログラミングが学べるpaizaラーニングでは、Python、Java、C言語、C#、PHP、Ruby、SQL、JavaScript、HTML/CSSなど、プログラミング初心者でも動画で学べる入門レッスンを公開しています。
そしてこのたび、新たに「Python×AI・機械学習入門編」が追加されました。
人気声優の上坂すみれさんによる進行役のスベトラーナ・小百合・ベレフスカヤと一緒に、実際に画像認識技術を使いながら、初心者でも機械学習を体験・学習できるレッスン内容になっています。
Python×AI・機械学習入門編は全編無料でごらんいただけます。詳しくはこちら
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
詳しくはこちら
そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。
詳しくはこちら