AIとは何か

ディープラーニングのフレームワークから考える「Chainer」とは

実際にディープラーニングをやってみよう、と考えたときにディープラーニングを簡単に作れる方法は何だろう?と興味ある方もいますよね。また、その方法を探している中で深層学習(ディープラーニング)をフレームワークとして「Chainer」って聞いたことある方もいるかもしれません。

現在のようにAI(人工知能)がブームになった理由として、それまで考え方としては知られていたディープラーニングがうまく実行できるアルゴリズムが開発されたこと、インターネットの発展によりAI(人工知能)を学習させるための大量のデータ(ビッグデータ)が利用できるようになったこと、高速なGPU(グラフィックス・プロセッサ)によって効率よく実行できるようになったことなどが挙げられています。そして、ディープラーニングを一部の研究者のテーマから、比較的簡単に誰でも試せるようにしたのがフレームワークで、これが開発されたことによってブームが加速しました。

そこで、今回はディープラーニングブームの立役者であるフレームワークについて説明し、その一つであるChainerの概要についてご紹介します。

フレームワークとは共通の仕組みを出来合いで用意したもの

ディープラーニングのアプリ開発の具体的な作業は、プログラミングというよりは、実験と試行錯誤が中心になります。つまり、AI(人工知能)に大量のデータを与えてトレーニングし、学習済のAI(モデルと言います)を作成します。それにテストデータを与えて結果を評価し、より良い結果が出るように少しずつ学習方法やデータを変えていくということを繰り返すのです。何か人間の教育に似てますよね。

脳の仕組み自体は生まれた時から決まっていてみんな共通、その上で学習するデータの量や種類、学習方法の違いによって、成果に大きな差が生まれます。身につまされるような話でしょう。この、「共通の脳の仕組み」に相当するものがフレームワークであり、Chainerもその一つです。

ディープラーニングのソフトウェアという観点では、フレームワークは、必要な共通の機能をパッケージ化したソフトウェア・ライブラリです。プログラミングをしない人向けには、「カラオケのようなもの」といえばわかってもらえるでしょう。いろいろな楽器を使って伴奏を一から作っていくことは可能ですが、それには大変な労力と時間がかかります。やりたいのは歌を歌うことなので、カラオケという形で共通の伴奏を作っておけば、その上で自分の個性あふれる歌を練習し、うまく歌えるようになったら人前で披露できるというふうに、効率よく良い成果を出せるのです。

このようにディープラーニングのソフトウェアを一から作っていくことは可能ですが、それには手間暇がかかりすぎるので、共通機能の部分を出来合いで作っておいて、それをみんなで共有しようというのがフレームワークの考え方です。

GPUでディープラーニングを高速に実行する

フレームワークを語る上で大切なのがそのスピードです。学習には膨大なデータが必要であり、そのデータに対して様々な計算を繰り返してAI(人工知能)に学習させ、モデルを作っていきます。したがって、学習には長い時間がかかります。学習のための計算は、数値を掛けて足す積和演算、数値の変化あるいはグラフの傾きを求める微分計算(覚えてますか?)が中心になります。それらの計算を縦横にたくさんの数字を並べた行列(覚えてますか?)に対して繰り返し行うというのが基本パターンですから、計算自体は単純ですが、計算量は膨大なものになります。

GPUは、PCやスマホ、ゲーム機などでグラフィックスを高速に処理するために開発されたプロセッサです。並列処理により多数の単純計算を同時に行うことで高速化し、リアルタイムでグラフィックスを表示するのに貢献しています。このGPUの単純計算を高速に、という特徴が上記のディープラーニングの計算を実行するのにも適しているのです。

ChainerはGPUでも実行できるのが特徴で、Chainerのプログラムの中で、CPUかGPUかを選択する部分があるので、それをGPUに設定すれば、CPU用に書いたプログラムを大きな変更なしにGPUで高速に実行することができます。

試行錯誤のサイクルを短くする

ディープラーニングのアプリ開発は、実験と試行錯誤であると上で述べましたが、この試行錯誤のサイクルをいかに短くできるかが性能の良いAI(人工知能)を開発するキーポイントになります。
試行錯誤に関してもう少し詳しく説明すると、

  1. トレーニング用データとテストデータの準備
  2. アルゴリズムの選択と組み合わせ
  3. パラメータの調整

と言った要素があり、これらの条件を変えながら性能を評価し、チューンアップしていきます。例えば画像認識への応用ならば、何%正しく認識したかが評価基準になります。

データとアルゴリズムとパラメータの関係ですが、テレビやオーディオのアナロジーで考えるとわかりやすいでしょう。データは、映像や音楽です。アルゴリズムは映像や音楽のデータにどういう処理を施すか、例えば、明るさ、コントラスト、低音・高音などの音質、ステレオのバランスなどです。パラメータは機器の「つまみ」みたいなもので、明るさをどのくらいに設定するか、低音をどのくらい上げるか、と言った調節を行います。

これを来る日も来る日も繰り返して実験をして、よりよい組み合わせを追求していくのがディープラーニング開発の本質です。最先端の領域でありながら、実際の作業は結構泥臭いものだということがお分かりいただけるでしょう。

繰り返しのサイクルを短くするためには、一回の実行時間が短いことが必要で、先に説明したようにGPUによる計算の高速化が貢献します。また、アルゴリズムやパラメータを変化させるには、フレームワークを使ったプログラムの変更が容易であることが必要です。

ChainerはPythonという記述性の高いプログラミング言語で実装されています。記述性が高いというのは、プログラム一行でたくさんの機能が表現できるということです。ですから、変更する際に、あまりたくさんのソースコードを書き換える必要がないため試行錯誤が比較的楽にできるというメリットがあります。

プリファード・ネットワークス社がオープンソースで提供

Chainerは、日本のAI(人工知能)のスタートアップである株式会社プリファード・ネットワークスが開発し、オープンソース・ソフトウェアとして提供されています。企業がなぜその知的財産のコアであるソースコードを公開しているのでしょうか?

それは、これまで述べてきたように、ディープラーニングの価値は相対的にいうと、プログラムではなく、その上に構築されたモデルにあるからなのです。性能の高いモデルを作るためには、多くの時間と手間がかかり、様々なノウハウが含まれています。これが、ソースコードよりも重要な知的財産を形作っているということになります。

フレームワークの例えに戻りますが、カラオケはみんなで共有し、その伴奏の上で歌う歌に、より高い価値があり、その歌は共有しないんだという考え方ということになります。

 

今回は和製のディープラーニングのフレームワークであるChainerについてご紹介しました。まとめると、

フレームワークとは、共通の機能をパッケージ化したソフトウェア・ライブラリであり、みんなが使えるようにすることでAI(人工知能)ブームを後押ししてきたこと。
ディープラーニングの価値は、そのフレームワークの上に構築されたモデル(学習済みのAI)であること。
そして、そのモデルを構築するには試行錯誤が必要で、多くの手間暇がかかること。

を説明しました。そして、その理解のもとに、Chainerはディープラーニングのフレームワークの一つであり、GPUの上で実行できることにより、計算時間を短縮でき、フレキシブルにアルゴリズムやパラメータの条件設定ができることで、比較的楽に試行錯誤が行える優れたツールであることを紹介しました。

Chainerで誰もが簡単にディープラーニングができるとは言うものの、実際にChainerを使うにはAI(人工知能)の知識とプログラミングの技術が必要です。でも、自分で作ったAI(人工知能)が動いて、何かが認識できたという喜びは何事にも代え難いものです。皆さんもチャレンジしていきましょう。

コメントをどうぞ