人工知能/AIライブラリ紹介vol.2 機械学習の分野で活用される「Chainer」
17 January,2019

人工知能/AIライブラリ紹介vol.2 機械学習の分野で活用される「Chainer」

 

目次

1.Chainerとは?
2.Chainerの歴史は?
3.Chainerの強みとは

 

1.Chainerとは?

Chainer (チェイナー)とは、オープンソフトウェアライブラリの一つで、ニューラルネットワーク(※1)の計算および学習を行うための深層学習 (ディープラーニング)分野で主に活用されています。

ChainerはPythonでニューラルネットワークが記述できる、非常に高機能なライブラリです。
また、バックプロパゲーション(誤差逆伝播法 ※2)に必要なデータ構造をプログラムの実行時に動的に生成する特徴「Define-by-Run」があり、
特に、複雑なニューラルネットワークの構築を必要とする深層学習で主に活用されています。

Chainerは深層学習(ディープラーニング)の研究と開発を行うスタートアップ企業、「Preferred Networks(PFN)」がメインとなって開発しました。

Chainerを始めるには、前提に機械学習やニューラルネットワーク、深層学習といった基礎知識が必要になります。

 

※1ニューラルネットワークとは
ニューラルネットワークとは、機械学習の手法のうちの1つで、人間の神経細胞の情報伝達の仕組みを応用したものになります。
ニューラルネットワークは人間の脳の情報伝達の仕組みを応用されているため、高い計算能力があり、大量のデータを処理することも可能です。

※2バックプロパゲーション(誤差逆伝播法)とは
ニューラルネットワークにおいて誤差を最小化して任意関数を近似することが出来る。簡単に言うと、お手本と出力(結果)を比較することで、重要度や偏りを修正して精度を上げる学習法

 

2.Chainerの歴史は?

Chainerは日本の機械学習系ベンチャー企業である株式会社Preferred Networksによって開発されたディープラーニング(深層学習)フレームワークです。
2015年6月からオープンソース・ソフトウエアとして公開されました。
日本の企業が開発したこともあり、主に日本国内を中心として利用が広がっています。
Chainerが採用した「Define-by-Run」方式は、その後多くの深層学習フレームワークが同方式を採用しています。

過去には、Facebook社やGoogleが自社の深層学習フレームワークにChainerの「Define-by-Run」方式を取り入れると発表しました。2019年春に公開予定でメジャーアップデートv6版には、N次元配列の自動微分をC++で実装したChainerX(チェイナー・エックス)が統合される予定です。
これにより、ChainerのボトルネックになていたPython実行時のCPUオーバヘッドが大幅に削減される予定です。

 

3.Chainerの強みとは

Chainerの主な強みは下記の通りです。

1.Pythonでシンプルに記述できる
2.ニューラルネットワークの計算グラフが動的に生成される
3.直感的な計算グラフの構築が可能
4.Chainerには公式の日本語ユーザーグループがある

が挙げられます。詳しくは下記でご紹介します。

 
1.Pythonでシンプルに記述できる
Chainerは初心者でも習得しやすいPython言語でシンプルに記述できるその使いやすさが大きなメリットと言えます。計算の要である深層学習(ディープラーニング)に必要なニューラルネットワークの構成や、学習(トレーニング)の方法をPythonのプログラムとして記述することができます。
Python2.x系/3.x系から利用でき、高速に大量のデータを処理できるGPU演算もサポートしています。直感的な計算グラフの構築/デバッグが比較的行い易い/簡単な計算グラフから複雑なものまで、幅広く扱うことができるにも関わらず、実装の負担は少なめである印象です。
 

2.ニューラルネットワークの計算グラフが動的に生成される
深層学習フレームワークとして人気の高い「Caffe」や「TensorFlow」などは、計算グラフを学習の前にあらかじめ構築する「Define-and-Run」方式です。Chainerの場合は、計算グラフを学習などデータを入力した際にPythonプログラムに基づいて動的に構築する「Define-by-Run」方式です。「Define-by-Run」方式は、柔軟な計算グラフの構築が可能でとても魅力的な特徴です。Chainerを皮切りに、同じ方式に則ったフレームワークも登場してきています(dynetやpytorch)。「Define-by-Run」は「Define-and-Run」では上手く扱うことのできないような計算グラフにも対応できる柔軟性があります。自然言語処理の分野では入力に応じて計算グラフの変更が必要であることが多く、とても重宝されています。
 

3.直感的な計算グラフの構築が可能
ChainerはPythonによって実装されているフレームワークです。クラスとメソッドを使うオブジェクト指向という考え方は、プログラミングを良くするために考案された手法であり、実際、かなりプログラミングを容易にします。Chainerでの計算グラフの構築は、Chainerで実装されているクラスを継承することで簡単かつ直感的に記述することができます。プログラムの中身を完全に理解しなくとも、どのようなクラスがどのようなメソッドを持ち、どのような働きをするのかを把握しておきさえすれば良いという感じです。

 
4.Chainerには公式の日本語ユーザーグループがある
Chainerの利用者数は世界的にまだ多くありません(主に日本で活用されているようです)
ただし、日本発祥ということも有り他の海外オープンソースと違って公式の日本語ユーザーグループが存在します。最新の情報を取得でき、質問ができる環境が整っていることは大きな魅力では無いでしょうか?

公式のGoogleグループ
公式サイトhttps://groups.google.com/forum/?hl=ja#!forum/chainer-jp

 

引き続きChainerについても記事をアップしていきます。

※当サイトに掲載されている一部画像、スクリ-ンショット、文章に置いては著作権侵害を目的に利用しておらず、第三十二条で定められる引用の範囲で使用しています。万が一問題があればお問い合わせからご連絡ください。即刻削除いたします。
本ブログは業務の研究開発のためのものとなり、一部、弊社に関連性が無いものも掲載しております。

mieru