AI Chronicle (2) ー ディープラーニングとPythonのお話

AI Chronicle (2) ー ディープラーニングとPythonのお話

人工知能(AI)の技術を学び、ディープラーニングや機械学習に触れ始めると、必ず目にするPythonというプログラム言語があります。これはもともと非常に簡単な文法と簡潔なソースが利点のインタプリタ言語として知られていました。

なぜ難解なディープラーニング分野でこの Python が使われるようになったのでしょう。AI Chronicle第二弾は、AIを支える技術に触れてみます。

Pythonのライブラリ、NumPyとSciPy

Pythonは非常に有益な学術演算用ライブラリを複数備えています。

ディープラーニングの構築で特徴的なCNNの構築に広く使われるNumPyとSciPyというライブラリがあります。これらは行列計算やベクタ演算などの、難解なアルゴリズムの理解が必要となる計算を「関数」として提供し行ってくれるものです。

Python 本体だけでなく、商用にも匹敵する高機能ライブラリが無償で利用できるということには少し歴史的背景があります。

商用としての数学

1970年代にMATLABという算術用ライブラリ(とそれを扱う言語)が開発されました。これは難易度の高いプログラム言語を使用しなくても学生や研究者がLINPACKやEISPACKを扱えることを目指し作られています。これを改良し1984年にMathWorks社によってC言語で書き直された商用MATLABが発売されました。

商用MATLABは高度な行列計算、ベクタ演算、アルゴリズム開発、データの可視化や言語間接続といった機能を備え、GUIからの操作も可能という非常に強力な算術ツールでした。

オンリーワンの孤独、そしてNumPyの登場

商用MATLABは市場で一定の成功を収めていたものの、一般に普及するには高額で、ニーズの多い大学生や数学者には広く行き届かなかったのです。それでもなお魅力的であったMATLABをオープンソースで再現しようという動きが起こり、NumPyが登場することになります。

NumPy(Numerical Python、ナムパイ)は、高速な行列計算を行うことができるPythonの拡張モジュールです。強力なN次元配列オブジェクト、精巧なブロードキャスト機能、C言語、C++とFortranのコードを統合するためのツール、有用な線形代数/フーリエ変換/乱数機能などを兼ね備えるため、大規模データや多次元の演算が可能で、科学分野において必要な処理に適しています。

これにより、Pythonの活用可能性が一気に拡がったといえるでしょう。

OSSとOSSが出逢うとき

算術ライブラリのオープンソース開発と並んで、プログラマでなくても簡単に扱えるプログラム言語が求められる中 Pythonに注目が集まります。

OSSで開発され簡潔で扱いやすいPythonとOSSの算術ライブラリの組み合わせは多くの人々に歓迎されました。これらはソースコードを多くの開発者に公開されていることで、世界中から様々な改良が加えられていく中でNumPyを補完するSciPyが開発されました。

SciPy(Science Python、サイパイ)では、NumPyで使用できる機能に加え、積分やより複雑な行列演算、信号処理、さらには統計処理も可能となりました。

話は現代に戻り…

さて、ディープラーニングに話を戻していきましょう。

フレームワーク

ディープラーニングは、実際にはディープラーニングフレームワークを使用し処理を行っています。これはデータを読み、演算を行いニューラルネットワークを計算していくフローをフレームワーク化することで、ユーザーが容易に処理を行うことができるようにするためです。

ディープラーニングフレームワークのCaffeやTorchも、主にPythonをサポートしています。これらは画像認識に向くフレームワークで、同じくOSSとして公開されています。その後ChainerやTensor Flowのような、複雑なxNNが構築できるフレームワークが登場してきます。

ディープラーニングフレームワークはNumPyやSciPyを内部でラップ又はオーバーライドしていたり、依存関係を持っています。またNumPyやSciPy自体も多くの改良が加えられ続けており、新しい算術関数が追加されたり、高速なC言語で書き直されるなど発展を続けています。

ハードと出会いさらに力を発揮する

最近ではAMD社やNVIDIA社のディスクリート型グラフィックカードを製造しているメーカーからも現行のほぼ全ての製品でxNN学習をサポートしている事や、NVIDIA社のCUDAの一部としてディープラーニング用ライブラリのcuDNNが公開されています。

昨今では一般的に手に入るハードウェアとソフトウェア両面でディープラーニング(深層学習モデル)を構築する環境は整いつつあります。

これらの演算資源を背景に、簡潔な文法で扱いやすいPythonと数々の強力な算術ライブラリを含んだディープラーニングフレームワークは非常に有用な組み合わせとして、他の有名なプログラミング言語と並んで広く使われるようになっているのです。

今回はディープラーニングを支えるPythonの歴史を追いました。以上でAI Chronicle (2)を終わります。

記事は、予告なく変更または削除される場合があります。
記載された情報は、執筆・公開された時点のものであり、予告なく変更されている場合があります。
また、社名、製品名、サービス名などは、各社の商標または登録商標の場合があります。