Chainer(チェイナー)。日本製の深層学習フレームワークです。ニューラルネットワークをPythonで柔軟に記述し、学習させることができます。

オープンソースのAI・人工知能/Chainerとは

Chainer(チェイナー)。日本製の深層学習フレームワークです。ニューラルネットワークをPythonで柔軟に記述し、学習させることができます。

Chainer(チェイナー)とは、日本製の深層学習フレームワークです。ニューラルネットワークをPythonで柔軟に記述し、学習させることができます。

目次

「​Chainer」基本情報
・概要
・主な特徴
・同様製品(概要情報)
・導入事例
・ライセンス情報
・ダウンロード

ざっくりわかる「​Chainer」
第1回 Chainer補足情報
第2回 Chainerのインストール
  ・​Chainerインストール---Linux(Ubuntu)編
  ・​Chainerインストール---Windows編
  ・​Chainerインストール---Mac編
  ・​Chainerインストール---nvidia-docker編
  ・​Chainerインストール---クラウド(AWS)編
第3回 Chainerのチュートリアル
  ・「Chainerチュートリアル」の和訳
  ・「ニューラルネットワークの仕組み」と​Chainer実装
  ・10時間でChainerの基本を身につける(基本を抑えている方向け)
  ・チュートリアル「MNIST」
  ・公式日本語チュートリアル「Chainer Playground」
第4回 ChainerでのPythonプログラミング
  ・画像分類---ウサギ特化型
  ・画像分類---「化物語」シリーズキャラクター特化型
  ・画風変換アルゴリズム
  ・将棋
  ・三目並べ
第5回 Chainerのファインチューニング
  ・「ファインチューニング」とは
  ・【参考】Chainerでのファインチューニング個人的ベストプラクティス
  ・【参考】学習済モデル変換ありなしの処理時間の差
  ・【参考】​Chainerのファインチューニング詳細解説
  ・【参考】「Slack」用bot作成---Chainer + Slack + Twitter連携

TOPに戻る

「​Chainer」基本情報

概要

基本説明

Chainerは、ニューラルネットワークを誤差伝播で学習するライブラリです。「Preffered Networks」が開発しています。

Chainerの特徴として「Flexible(柔軟性)」「Intuitive(直感的)」「Powerful(高機能)」の3つを掲げています。

実行にはCUDAが使われるため、Nvidia製GPUが必要です。

経緯

2015年6月に公開されました。

主な特徴

Pythonライブラリ

​Chainerは、Pythonのライブラリとして提供されています。Python 2.7以上が必要です。

制御構造は、すべてPythonで記述できます。Pythonのコードを用いて、入力配列に何の処理が適用されたのかのみを記憶しておき、それを誤差逆伝播の実行に使います。

「Define-by-Run」方式

「Define」と「Run」はフェーズが分かれておらず、「ネットワーク構築」と「学習」を同時に行う方式です。

Forward計算時に、入力から出力に到達するまでの経路を記録することにより、初めて計算グラフが暗黙的に得られます。

Flexibility(柔軟性)

畳み込み/リカレントなど、さまざまなタイプのニューラルネットワークをシンプルに実装できる柔軟性があります。

本来切り分けることが難しい計算グラフの生成/学習を同時に記述できます。このことにより、幅広い種類のニューラルネットワークに柔軟に対応できます。

Intuitive(直感的)

Chainerは、データを表す「Variable」と関数を表す「Function」という二つの抽象的な基本要素だけを定義します。それらの間の計算/条件分岐はPython制御構文をそのまま使用できるため、プログラマにとって、ネットワーク構成を動的/直感的に記述できます。複数GPUを使用する場合も直感的な記述が可能です。設定ファイル/固定データセットは必要ありません。

記法が直観的かつシンプルであるため、「単純なネットワーク領域」から「複雑なディープラーニング領域」まで幅広くカバーできます。

同様なフレームワークである「Caffe」において2000行程度のコードを、「​Chainer」では200行未満で表現できたという話もあります。

Powerful(高性能)

GPUを利用した高速な計算が可能です。事前にコンパイルを行う「Caffe」や「Theano」ベースのライブラリとほぼ互角の性能が得られるとされています。

インストールが容易

「pip install chainer」コマンド実行のみでインストールできます。

同様製品(概要情報)

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「TensorFlow」「Caffe」「Theano+Pylearn2」「Torch7」など。

導入事例

Chainerは、画像処理/自然言語処理/ロボット制御など、多岐に渡る分野で使われ始めています。

ライセンス情報

​Chainerのライセンスは、「MIT License」です。このライセンスに従うことを条件として、ソースコードの改変と公開が許可されています。

ダウンロード

ダウンロードページ

TOPに戻る

ざっくりわかる「​Chainer」

第1回 Chainer補足情報

ディープラーニングライブラリ「​Chainer」について、補足情報を紹介します。

特徴

【さまざまなネットワークアーキテクチャをサポート】

​Chainerは、「高度で複雑なディープラーニング」だけではなく、「シンプルなネットワーク」にも対応できるライブラリです。

シンプルなネットワークの場合、他のディープラーニングライブラリではオーバースペックすぎて使いづらい面がありますが、​Chainerは柔軟にカバーできます。

対応できるネットワークには以下のようなものがあります。
・畳み込みニューラルネットワーク
・フィードフォワードニューラルネットワーク
・リカレントニューラルネットワーク
・再帰型ニューラルネットワーク など

【「Define-by-Run」方式】

​Chainerは「ネットワーク構築」と「学習」を同時に行う方式です。処理フェーズとして「Define」と「Run」に分かれていません。

本来なら別に分けることが難しい計算グラフの生成/学習を同時に記述できます。

Forward計算時に、入力から出力に到達するまでの経路を記録することにより、初めて暗黙的に計算グラフが得られます。

【高速性】

並列コンピューティングアーキテクチャ「CUDA」をサポートし、GPUを利用した高速な計算が可能です。

多くの手間をかけずに複数GPU動作に対応できます。

【シンプルで直観的なPython記法】

Chainerはネットワーク構成をPython記法で直観的に記述できます。

2つの抽象的基本要素(データ「Variable」と関数「Function」)を定義します。「Variable」と「Function」間の計算/条件分岐としてPythonの制御構文をそのまま使用できます。新たな構文などを覚える必要がないため、プログラマはネットワーク構成を直感的に記述できます。設定ファイル/固定データセットは必要ありません。

「CUDA計算」「複数GPU対応」などの処理はわずかなコードで実装できます。Caffeで2000行以上のコードを、​Chainerでは200行未満で実装できた例もあります。

【関数】

「各層をつなぐネットワーク関数」「活性化関数」「誤差関数」などの関数がデフォルトで用意されています。

【簡単インストール】

一般的に、ディープラーニングフレームワークは、多くのツール/ライブラリのインストールが必要であるため、インストールには手間がかかります。しかし、​Chainerは依存ライブラリが少ないため、インストール負荷は少なめです。

公式Dockerイメージが用意されているので、それを利用すれば、即座にインストールできます。

【対応OS】

Ubuntu」「CentOS」「Windows」「OS X」などに対応しています。

TOPに戻る

第2回 Chainerのインストール

ディープラーニングライブラリ「​Chainer」を各環境へインストールする方法を紹介します。

​Chainerインストール---Linux(Ubuntu)編

​ChainerをUbuntuへインストールする手順を解説しています。直接「CUDA Toolkit」をインストールします。

【導入環境】

・OS=Ubuntu16.04(64bit)
・GPU=GeForce 940M

【解説テーマ】

1. ドライバをインストールする
2. CUDA toolkitをインストールする
3. cuDNNをインストールする
4. Chainerをインストールする
5. 動作チェック
6. カーネルのアップデートについて

【ページリンク】

→Qiita『Ubuntu16.04にCUDA8.0とChainerをインストールする』

​Chainerインストール---Windows編

​ChainerをWin10へインストールする手順を解説しています。Anacondaを利用しています。

【導入環境】

・OS=Windows10(64bit)
・​Chainer=Chainer1.8.1

【解説テーマ】

1.Python3.5.1のインストール
2.VisualStudio 2013 Community をインストール
3.CUDA 7.5をインストール
4.cuDNNをインストール
5.Pycudaをインストール
6.Windows環境変数を追加
7.Chainerのインストール(DOS上)
Chainerのサンプルファイルを実行

【ページリンク】

→Qiita『Windows環境でChainerのGPUを使えるようにするまで』

​Chainerインストール---Mac編

​ChainerをMacへインストールする手順を解説しています。Anacondaを利用しています。

「Numpy」「Six」「filelock」などの用語説明もあります。

【導入環境】

・OS=MacOS Sierra (バージョン 10.12.2)
・​Chainer=Chainer1.8.1

【解説テーマ】

・インストール時の注意点
・Chainerのインストール

【ページリンク】

→Qiita『MacでのChainerインストールに必要なものの説明とまとめ』

​Chainerインストール---nvidia-docker編

Dockerコンテナイメージ管理ツール「nvidia-docker」を使用してChainerコンテナを作成後に使用する方法を解説しています。

「nvidia-docker」について分かりやすく解説されています。

【導入環境】

・OS=ubuntu 16.04 LTS

【解説テーマ】

・nvidia-dockerとは?
・結局nvidia-dockerは何がおいしいの?
・導入環境
・導入
・docker engineのインストール
・nvidia-dockerのインストール
・使い方
・tensorflow v0.9のコンテナを作り、使ってみる
・chainer v1.10のコンテナを作り、使ってみる

【ページリンク】

→ADWASY ENGINEER BLOG『nvidia-docker』

​Chainerインストール---クラウド(AWS)編

AWS環境に​Chainerをインストールする方法です。

条件が整っている環境の場合、コマンド2つでインストールが完了します。

【導入環境】

・AWS環境=Bitfusion Boost Ubuntu 14 Torch 7

【ページリンク】

→Qiita『AWSでChainer動かすならcuDNNが最初から入っている環境が楽。』

TOPに戻る

第3回 Chainerのチュートリアル

ディープラーニングライブラリ「​Chainer」のチュートリアルについて紹介します。チュートリアルを通じて、基本的な操作方法や仕組みを確認できます。

「Chainerチュートリアル」の和訳

【概要】

「Chainerチュートリアル」(公式英語版)を和訳されています。

​Chainerで使われる各用語について、コードをまじえて、どのようなものなのか確認できます。

【解説テーマ】

・Introduction to Chainer
・Core Concept
・Forward/Backward Computation
・Links
・Write a model as a chain
・Optimizer
・Trainer
・Serializer
・Example: Multi-layer Perceptron on MNIST
・Example: Multi-layer Perceptron on MNIST (バージョン1.11以前)

【ページリンク】

→俺とプログラミング『Chainerチュートリアル の和訳【Chainerの紹介と多層パーセプトロン】』

「ニューラルネットワークの仕組み」と​Chainer実装

【概要】

​Chainerでのディープラーニングに必要な知識となる「ニューラルネットワークの仕組み」についての解説です。

イラスト付きで、「ニューラルネットワークの仕組み」「伝播の仕組み」「学習の仕組み」「誤差逆伝播法の仕組み」などについて確認できます。

【解説テーマ】

・ニューラルネットワークの仕組み
 ・構成
 ・伝播
 ・学習
・Chainerによる実装
 ・構成
 ・伝播
 ・学習

【ページリンク】

→Qiita『Chainerで始めるニューラルネットワーク』

10時間でChainerの基本を身につける(基本を抑えている方向け)

【概要】

機械学習などに関する知識がある程度ある方向けの解説です。

「​Chainerについて薄く広く確認しながら、​Chainerを理解していく」という内容になっています。

【解説テーマ】

・大前提
・ゴール
・最初の最初
・実装を試す(2時間)
・実際にchainerを試す(4時間)
・動いたら
・今後

【ページリンク】

→あれもPython,これもPython『【ディープラーニング】10時間でChainerの基本を身につける』

チュートリアル「MNIST」

【概要】

Chainerオフィシャルサイトのチュートリアル「MNIST」を動かす手順について解説しています。

「0から9までの手書き数字の画像を学習して数字を認識する」という基本的なチュートリアルを試しています。

定義方法やコードも掲載されていて、参考にできます。

【ページリンク】

→毎日の向こうに『Chainer: 例題 MNIST の学習』

公式日本語チュートリアル「Chainer Playground」

【概要】

​Chainerを開発しているPreferred Networks社が公式コンテンツとして「Chainer Playground」を公開しています。

「ブラウザ上で深層学習の理論をChainerを使いながら学ぶウェブサービス」として公開されており、「ディープラーニングの基礎知識」「Chainerを使ったディープラーニングの開発」「画像認識、音声認識、強化学習のアプリケーションの開発」などについて、チュートリアル形式で学ぶことができます。

サンプルコードを入力して実行させることもできます。

この「Chainer Playground」について「やってみたレポート」になっています。

【解説テーマ】

・軽く触ってみたので御紹介
・いまのところ3章の途中まで記述されているようです
・実際にpythonのコードを実行してみました
・pythonのコードを書き換えてみた
・エラーも出してみた
・本編に突入します
・課題もあります
・お馴染みNumpyやCupyも軽く解説されています
・みんな大好きMNIST
・第2章は具体的にChainerに触ります
・Chainer版MNIST
・第3章ではCNNについても学べるようです

【ページリンク】

→Qiita『WebでChainerを「触って」学習出来る Chainer Playground をやってみた』

TOPに戻る

第4回 ChainerでのPythonプログラミング

ディープラーニングライブラリ「​Chainer」でのPythonプログラム事例を紹介します。「画風変換」「化物語キャラ分類」「将棋」「三目並べ」などを紹介しています。

画像分類---ウサギ特化型

【概要】

​Chainerでウサギ分類を行っています。

「ネザーランドドワーフ」「アンゴラ」「ロップイヤー」「ライオンラビット」の4種類のウサギの判別を目指します。

【解説テーマ】

・利用した画像データについて
・画像50×50のリサイズ用コード(changeImage_tech_blog_sample.py)
・学習とテスト(train_tech_blog_sample.py)
・実行結果

【ページリンク】

→キャスレー技術ブログ『DeepLearning用フレームワーク Chainer を試してみた_その2』

画像分類---「化物語」シリーズキャラクター特化型

【概要】

​Chainerで、アニメ作品「化物語」シリーズに登場するキャラクターを分類するボリューム企画です。

全Part7のうちPart6まで進んでいるようです。

【解説テーマ】

準備編
・part0 前書き
・part1 画像の収集
・part2 画像の縮小&水増し
2値分類編
・part3 暦orNOT暦で2値分類(モデル作成&学習編)
・part4 暦orNOT暦で2値分類(未知データに適用するよ編)
主要キャラ分類編
・part5 主要キャラで分類問題(未知データに適用するよ編)
・part5.5 主要キャラで分類問題(改良編)
・part6 主要キャラで分類問題(GPU使ったよ編)
・part7 新規データをFasterRCNNを使って分類させる(むしろ全てはこれのため)

【ページリンク】

→MATHGRAM『python: chainerを使って化物語キャラを認識させるよ! 〜part0 前書き〜』

画風変換アルゴリズム

【概要】

​Chainer開発元Preferred Networks社の技術ブログで、「画風変換アルゴリズム​Chainer実装」が紹介されています。

「コンテンツ画像」を「スタイル画像」風に変換した画像を生成します。

アルゴリズムの処理内容について解説もあり、どのような処理が行われているのか参考になります。

【解説テーマ】

・概要
・アルゴリズムの解説
・モデル
・CNNの中間層
・スタイル行列
・目的関数
・画像の更新則
・結果の分析
・おわりに

【ページリンク】

→Preferred Research『画風を変換するアルゴリズム』

将棋

【概要】

​Chainerを利用して開発した将棋アルゴリズムについて解説しています。

【解説テーマ】

・原理
・python-shogi
・気になるとこ
・まとめ

【ページリンク】

→グニャラくんの株式会社wktk運営日記『Deep Learningを用いた将棋プログラムGunyanzaを公開しました』

三目並べ

【概要】

​Chainerで作成された「三目並べ」アルゴリズムについて解説されています。

「モンテカルロ」「Q-Learning」「Deep Q Network(DQN)」と戦わせます。

【解説テーマ】

・三目並べの設計
・盤面
・ゲームの進行役
・色々なプレイヤーを作成
・ランダム君
・人間
・改良ランダム君 (Alpha Random)
・モンテカルロ
・Q-Learning
・DQN (Deep Q Network)
・結論

【ページリンク】

→Qiita『ChainerでDQN。強化学習を三目並べでいろいろ試してみた。(Deep Q Network、Q-Learning、モンテカルロ)』

TOPに戻る

第5回 Chainerのファインチューニング

ディープラーニングライブラリ「​Chainer」の精度を向上させるための「ファインチューニング」について紹介します。

Caffe用学習済モデルを使用すると、効率的にファインチューニングできます。

「ファインチューニング」とは

「ファインチューニング」についてはこちらを参照ください。
→OSS×Cloud News →ざっくりわかる「Caffe」---第5回 Caffeのファインチューニング

【参考】Chainerでのファインチューニング個人的ベストプラクティス

【概要】

Caffeの「Model Zoo」で公開されている学習済モデルを​Chainer用に変換後、パラメータ設定を行い、ファインチューニングを行なう方法を解説しています。

【解説テーマ】

・ファインチューニング
・CaffeモデルのChainerモデルへの変換
1. Caffeモデルを読み込む
2. Chainerのモデルとして保存
・新しいモデルにパラメータをコピー
・まとめ

【ページリンク】

→Qiita『Chainerでファインチューニングするときの個人的ベストプラクティス』

【参考】学習済モデル変換ありなしの処理時間の差

【概要】

「Caffe用学習済モデルを​Chainerに読み込む時間がかかりすぎる問題」について紹介しています。

CaffeモデルからChainerモデルに変換するスクリプトを実行することで、「30秒以上かかっていたのが1秒以下」に短縮できる記録です。

モデル変換によって処理時間を大幅に減らせることが分かります。

【解説テーマ】

・Chainerのcaffeモデルの読み込みが遅い
・時間計測
・Mac Book Pro
・Raspberry Pi
・まとめ

【ページリンク】

→karaage『Chainerのcaffeモデルの読み込みを爆速にした』

【参考】​Chainerのファインチューニング詳細解説

【概要】

​Chainerのファインチューニングについての解説です。

手順のみではなく「学習済データの準備方法」「モデルの理解」「データ前処理」など、ファインチューニングを行なう場合の前提知識についてイラスト付きで詳細に解説されています。

データセット「ImageNet」を使用しています。「ImageNet」は、ILSVRC(ImageNet Large Scale Visual Recognition Challenge)で使用されている画像に対してタグ付けを行っているデータセットです。

「ImageNet」からのダウンロードの際に、リンク切れを回避しながら並列処理でダウンロードできるPythonスクリプトを提供されています。

【解説テーマ】

・データの準備
・ImageNet
・モデルの理解
・データの前処理
・教師データの準備
・モデルの学習
・パフォーマンス
・監視

【ページリンク】

→Qiita『Convolutional Neural Networkを実装する』

【参考】「Slack」用bot作成---Chainer + Slack + Twitter連携

【概要】

「​Chainer」でビジネス向けチャット「Slack」用botを作成して、「Twitter」から学習データを取得し、ファインチューニングする方法についての解説です。

【解説テーマ】

・ChainerでSlack用のbot作成!!
・対象読者
・全体構成
・Chainerによる対話モデルの学習
・Slackによるbotの応答
・Slackの連携に必要な情報の取得
・機能概要
・Twitter
・総括

【ページリンク】

→Qiita『Chainerで学習した対話用のボットをSlackで使用+Twitterから学習データを取得してファインチューニング』

TOPに戻る

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

Chainer最新TOPICS

【OSS】Preferred Networks、Microsoftとディープラーニング分野での戦略的協業を発表---AzureとChainerの技術協力、ディープラーニング分野の人材育成、マーケティング協力(2017年05月30日 11:03)

Preferred Networks(PFN)は、5月23日、 「Microsoftとディープラーニング分野で戦略的協業をする」と発表した。 【​Chainerとは】 日本製の深層学習フレームワーク https://www.ossnews.jp/oss_info/Chainer 【ポイント】 ・ディープラーニングフレームワーク「Chainer」や「Deep Intelligen...

Chainer最新CLOSEUPコラム

イベント情報

無料資料プレゼント

AI技術の方向性と企業の活用シナリオ

講演資料を見るには、 プライバシーポリシーに同意して、送付先メールアドレスをご入力しご請求ください。

またご入力いただきました情報は、当該資料の作成・提供企業とも共有させていただき、当社及び各社のサービス、製品、セミナー、イベントなどのご案内に使用させていただきます。

本資料を見るには次の画面でアンケートに回答していただく必要があります。



  • オープソース書籍(サイド)
  • OSSNEWSに広告を掲載しませんか?

facebook

twitter