教育

【ディープラーニング基本編】フレームワークchainerの使い方入門

chainerのイメージ

今もっともホットな学問といえばやっぱりAI(人工知能)技術などで使われている機械学習ですよね。中でもその根幹と呼べるのがディープラーニングなのですが、実はそのディープラニングを自宅のPCでも簡単に行うことができる方法があります。それはchainerというフレームワークを利用する方法

なお、このchainerは外国で生まれたものではなく、意外にも私たちの住む日本で生まれたフレームワークです。

そこで今回はディープラーニングの基本としてこのフレームワークchainerについて紹介し、どのような知識を持った上で利用すべきなのか、また、具体的なインストールの方法や簡単な実装、注意点などを詳しく説明していきます。

最後には実際にこちらを利用してディープラーニングを行うみなさんに向けて、それまで説明した内容に加えてやってほしいことをお伝えしていきましょう。

ぜひ、このフレームワークchainerに入門して、ディープラーニングに挑戦してみてください。

ディープラーニングフレームワークchainerとは

ディープラーニングのイメージ

それでは、chainer入門の初歩としてまずはこのchainerがどんなものであるのかを説明していきます。端的に説明していくとchainerは以下のようなもの。

  • 日本生まれのディープラーニングフレームワークである
  • Define-by-Runという手法が特徴
最初にchainerは日本で生まれたディープラーニングフレームワークであり、ベンチャー企業のPreferred Networks社が開発しました。なお、表記としては「chainer」となっていますが、これは「チェイナー」と呼びます。
そして、このchainerがどのようなものであるのかというと、ディープラーニングを行うためのニューラルネットワークを作成できるフレームワークなのです。

ですから、こちらを扱えるようになれば、みなさんの手でディープラーニングが行えるようになります。

ただし、このようなフレームワークは他にもあります。例えば、有名なものではTensorFlowなどが当てはまるでしょう。

なのになぜこのchainerを入門として進めるのかというと、こちらは「Define-by-Run」という特徴的な手法を搭載しているから。

ちなみに「Define-by-Run」は「Define-and-run」という手法に対しての言葉になっています。こちらを簡単に説明すると、まず「Define-and-run」はプログラミングを行った上で計算処理を行い、その後に逆方向から処理を行うもの。

この種のフレームワークでは基本的なシステムなのですが、記述が面倒であったり、処理後のデバッグが面倒であるなどデメリットもありました。そこで登場したのが「Define-by-Run」と呼ばれる手法で、こちらは上の処理をその場で同時に行えるというものです。

こちらの手法であれば上で述べたような「Define-and-run」のデメリットがなくなるだけでなく、より簡単にニューラルネットワークを作成できるというメリットが生まれています。

つまり、ディープラーニングに精通した人だけでなく、入門者にもchainerは向いているということ。

したがって、ディープラーニングの基本を学んでいく際の入門にchainerはうってつけなのです。ここまでディープラーニングフレームワークchainerについて説明しましたが、初心者には「フレームワーク」という言葉自体がよくわからない人もいるでしょう。

Chainer

そのため、以下ではこのフレームワークの意味について説明していきます。

そもそもフレームワークって何

作業をするイメージ
フレームワークの言葉自体の意味はいわゆる枠組みのことです。それでは、これがプログラミングでどのような意味となるのかといえば、こちらはソフトウェアの開発などで利用できる汎用的なプログラミング集を意味しています。
これがどういうことかというと、一からすべてをプログラミングしていくことは熟練者であれば可能でしょうし、オリジナリティを出すこともできるでしょう。しかし、その際には当然それ相応の時間が掛かりますし、プログラミングの初心者には難しいという問題があります。

そこで生まれたのがフレームワークです。こちらを利用すればすでに用意されたプログラムを使って効率的に開発が行え、プログラミングの初心者であっても簡単に開発を行えます。

そのため、イメージとしてフレームワークは開発に合わせた専用の作業台のようなものだといえるでしょう。ですから、ディープラーニングを行う際には、専門のディープラーニングフレームワークであるchainerを利用するべきでなのです。

以上がフレームワークの意味についてになります。これを踏まえてこの入門に適したchainerを利用する時に必要な知識を次では説明していきましょう。

chainerを利用するときに必要な知識

知識のイメージ

それでは、chainerに入門するときに必要な知識について説明してきます。

ディープラーニングフレームワークであるchainerには以下の4つの知識が必要です。

  1. Pythonについての知識
  2. 数学の知識
  3. 機械学習やディープラーニングなどの知識
  4. chainerについての知識
まず、1にあるようにchainerを利用するときにはプログラミング言語Pythonについての知識が必要になります。これはchainerがPythonを使って開発されており、Python環境の元で利用されることが前提になっているフレームワークであるから。

ですから、Pythonについての知識がある程度あったほうがchainerを理解しやすいです。

次に、数学の知識は欠かせません。具体的には微分や線形代数、確率、統計などの知識が必要です。これらは入門に適したchainerだけでなく、機械学習にも必要な知識になります。

したがって、最低でも高校以上のこれらの基礎的な内容は把握しておきましょう。

そして、3にあるように機械学習やディープラーニングなどの知識も必要です。こちらについてはディープラーニングフレームワークであるchainerを利用する関係上、基本的なそれらに関する知識やモデルについてなどの理解は必須だといえます。

もちろん、chainerに入門したばかりの初心者であっても、少しずつ勉強していけば知識は身に付けていくことは可能です。そのため、並行して学んでいくのもよいでしょう。

最後に、chainer自体についても理解しておいたほうがよいです。こちらについては日本生まれのフレームワークであるのでサイトなどもたくさんありますし、公式のチュートリアルなどもchainerにはあります。

ですので一度それらには目を通した上でchainerを利用するのが入門時の対応としては正解です。

以上が入門に適したchainerを利用するときに必要な知識になります。ここまででchainerがどのようなものであるのかは大体わかったことでしょう。

それでは、次からはchainerをインストールする方法を具体的な手順でお伝えしていきますのでぜひ、実際にchainerをインストールしてみなさんの手で扱ってみてください。

chainerをインストールしよう

インストールのイメージ

それではいよいよインストールをしてみましょう。入門に適したchainerをインストールするには以下の2つの手順を実行してください。

Python環境を整える

まず、入門に適したchainerをインストールするには、Python環境のPCである必要があります。ですので、Python環境の構築が行われていないPCでインストールを行うには、最初にPython環境を整える必要があります。

こちらに関してはPythonの公式サイトからダウンロードして導入する方法と、パッケージをダウンロードして導入する2つの方法がありますがおすすめなのは後者です。

前者では本体だけでなく必要なライブラリも導入しなくてはならず面倒であるのに対して、後者ではパッケージをダウンロードするだけ。

そのため、できればパッケージを利用するのがおすすめです。なお、パッケージはanacondaなど有用なものが複数あるので、みなさんのお好きなものでPythonの環境構築を行ってください。

chainerをインストールする

次に、Pythonの環境構築を終える、もしくは済んでいる場合にはchainerをインストールしていきましょう。手順としてはパッケージからインストールする方法などもありますが、基本的にはOSなどによらず以下のコマンドをターミナルに入力すればOK。

pip install chainer (または 「pip install chainer==バージョン名」と入力すればバージョンごとにchainerをインストール可能)

なお、上のコマンドが入力されて正しくインストールされたかを確認するには、以下のコマンドを入力してください。

import chainer

print(chainer.print_runtime_info())
上のように入力するとバージョン情報が表示されるので、正しくインストールできたのかがわかります。

ぜひ、以上のような手順と方法で入門に適したchainerのインストールを行ってみましょう。これらはそれほど難しくはないのでみなさんにもきっとできるはず。

インストールが終わりましたら、今度は実際にインストールしたchainerが動作するのかを簡単な実装を行って確認していきます。

chainerで実装してみよう

実装のイメージ

それでは、入門に適したchainerでどのように実装していくのかを非常に簡単な方法で行ってみましょう。今回は関数の微分を以下の設定で行うという実装を行っていきます。

y = x**2 - 3 * x + 1
x = 4

なお、基本的な高校数学を理解していればこちらの設定でのyの値と、微分したものの計算結果は以下のようになることがわかります。

y = 5
y´ = 2 * x - 3
x = 4 であるとき y´ = 5

これを踏まえて実装を行っていきましょう。

まず、ここでみなさんに理解してほしいのは実装の最初の一歩は、この計算処理で必要となるものを用意することから始めるということです。

こちらはchainerが「Define-and-run」を採用しているため、定義して実行を行うのではなく実際に計算処理を行いながら実行していくものであるから必要です。ですから、まずは以下のように入力していってください。

import numpy as np
import chainer
from chainer import cuda, Function, gradient_check, Variable
from chainer import optimizers, serializers, utils
from chainer import Link, Chain, ChainList
import chainer.functions as F
import chainer.links as L

これによって計算処理に必要なPythonのライブラリであるnumpyやchainerの変数の準備ができました。では、上の設定で以下のコマンドを入力して値を求めていきましょう。

1.>>> x = Variable(np.array([4.0]))
2.>>> y = x**2 - 3 * x + 1
3.>>> y.data
説明していくと1はxという変数に4を代入するという意味。次に、2でその変数を使う関数がy = x**2 – 3 * x + 1であると入力し、3で計算結果を出力するように命令。そして、これを入力すると以下が出力されます。
array([ 5.])

つまり、この関数にxの値を代入したものが5であると計算されたことが上でわかります。

それでは、次にこの関数を微分してみましょう。こちらに関しては以下のようにコマンド入力してください。

4.>>> y.backward()
5.>>> x.grad

説明していくとyの関数を上とは逆の手順で処理を行う、つまり微分して計算する上とは逆方法の処理を行うように命令し、それを5で表示するように命令しています。そして、これらを入力し終えると以下が出力されます。

array([ 5.])

お分かりのようにこの場合の傾きが5であると計算できています。

以上のように関数の微分がchainerで簡単に実装できました。

ただし、今回の実装方法はかなり簡略したものであり、実際には変数の型を細かく設定したほうがよいです。こちらに関しては公式のチュートリアルなどから確認して、みなさん自身で色々といじってみてください。そうするのがもっともわかりやすいです。

これまでは入門に適したchainerがどのようなものであり、どんな知識を学んでおいたほうがよいのか。また、具体的なインストール方法や簡単な実装について説明してきました。

しかし、実はこの入門に適したchainerにはいくつか利用する際の注意点があるので、次の章ではそれについてお伝えしていきます。

chainerを利用する注意点

頭を抱えているイメージ

「Define-and-run」という手法を採用していることが特徴であり。入門向けchainerですが以下の2点の注意点があります。

  1. chainer自体の実質的な開発は終了している
  2. 国際的なシェアは低い
まず、日本で開発された国産のディープラーニングフレームワークのchainerは残念なことにすでに開発が終了しています。こちらに関しては開発元のPNF社が2019年12月5日をもって自社のchainerではなく、Facebookによる「Define-and-run」を搭載したフレームワークPyTorchに移行すると発表されました。

PyTorch

これによって、chainerは実質的な開発が終了したことになります。ですから、今後より機能面がブラッシュアップされることはなくなってしまいました。
また、これもおそらくは開発終了の契機となったと考えられる国際的なシェアの低さがあります。記事などでみてみればわかりますが、上で出てきたPyTorchやTensorFlowなどと比較していくと圧倒的にシェアが低いです。

そのため、将来性の観点などや今後アップデートされない点を考えていくと、いくら優れたディープラーニングフレームワークといえどもいずれはどれかに移行すべきときが来るでしょう。

もちろん、chainerがディープラーニングの入門に適したフレームワークであることは間違いないので、これらの点を理解しながら学んでいけば他のフレームワークに移行したとしても学んだことは生かしていけます。

ですからディープラーニングフレームワークについての入門としてchainerを使ってみましょう。

 

chainerのイメージ

最後にこれまで説明した内容に加えてやってほしいことをお伝えしていきます。なお、これまでは以下のことを説明してきました。

  1. chainerは国産のディープラーニングフレームワークである
  2. フレームワークとは汎用的なプログラミング集のこと
  3. chainerはPythonの観光構築をした上でインストールする
  4. 実装は「Define-and-run」を生かして行う
  5. 残念ながら実質的な開発は終了している

実はディープラーニングではGPUを使うことが多いのですが、その場合では上で紹介したやり方であると問題があります。もちろん、簡単にCPUでディープラーニングを学ぶ場合には上でも問題ありませんが、本格的にやる場合には以下のことを行ってください。

本体のインストール前にCUDAとcuDNNなどをインストールする

これらはGPUでディープラーニングを行う際に必要なもので、ともにNVidiaの公式サイトからダウンロードした上でインストールし、必要な作業を行った上で最後にようやくchainerをインストールしてください。こうしないと上手くいきません。

なお、chainerのアンインストールと再インストール自体はとても簡単で以下のコマンドで実行できます。

  1. pip uninstall chainer
  2. pip install chainer –no-cache-dir

また、必要なものがあればインストールしておきましょう。例えば、Gitを利用したいならGitをインストールするなど使いたいものは入れておいてください。

これらを理解しながら入門に適したchainerでディープラーニングの基礎を学んでみましょう。そうすればきっと効率的に学ぶことができます。

トップへ戻る
タイトルとURLをコピーしました