Chainerを始めよう1

Chainerとは
-> Deep learningのモデル、実行コードを直観的に記述できるpythonのフレームワーク
-> 使用することで、ニューラルネットワークやDeep learningの理解も深まる!?

ニューラルネットワークとは、脳のニューロンのネットワークをコンピュータ上で再現したモデル

ニューラルネットワークは、入力層(l-1層)で受け取り、隠れ層(l層)を通り、出力層(l+1層)から答えを返す

正しい答えと、NNの予想した答えとの誤差を損失関数と呼ぶ。損失関数の値が小さくなるよう値を変えていくことで、NNを学習させる


NNではWeight(結合重み)とBiasという二つのパラメータを使って、目的の値を出力する関数に近いものを作る
ニューロン同士のつながりの強さがweight
ニューロン・weightの出力に足すパラメーターbias
この関数をChainerではLinkと呼ぶ

ではchainerをインストールしましょう。

[vagrant@localhost python]$ pip install chainer
Collecting chainer
Downloading https://files.pythonhosted.org/packages/dc/bf/b561706d4e86f055841c7a5a414b5e5423bea230faa92abf5422c82cf995/chainer-6.4.0.tar.gz (876kB)
100% |████████████████████████████████| 880kB 641kB/s
Requirement already satisfied: setuptools in /home/vagrant/.pyenv/versions/3.5.2/lib/python3.5/site-packages (from chainer) (20.10.1)
Collecting typing<=3.6.6 (from chainer) Downloading https://files.pythonhosted.org/packages/4a/bd/eee1157fc2d8514970b345d69cb9975dcd1e42cd7e61146ed841f6e68309/typing-3.6.6-py3-none-any.whl Collecting typing_extensions<=3.6.6 (from chainer) Downloading https://files.pythonhosted.org/packages/62/4f/392a1fa2873e646f5990eb6f956e662d8a235ab474450c72487745f67276/typing_extensions-3.6.6-py3-none-any.whl Collecting filelock (from chainer) Downloading https://files.pythonhosted.org/packages/93/83/71a2ee6158bb9f39a90c0dea1637f81d5eef866e188e1971a1b1ab01a35a/filelock-3.0.12-py3-none-any.whl Requirement already satisfied: numpy>=1.9.0 in /home/vagrant/.pyenv/versions/3.5.2/lib/python3.5/site-packages (from chainer) (1.15.0)
Collecting protobuf<3.8.0rc1,>=3.0.0 (from chainer)
Downloading https://files.pythonhosted.org/packages/81/59/c7b0815a78fd641141f24a6ece878293eae6bf1fce40632a6ab9672346aa/protobuf-3.7.1-cp35-cp35m-manylinux1_x86_64.whl (1.2MB)
100% |████████████████████████████████| 1.2MB 1.2MB/s
Requirement already satisfied: six>=1.9.0 in /home/vagrant/.pyenv/versions/3.5.2/lib/python3.5/site-packages (from chainer) (1.11.0)
Installing collected packages: typing, typing-extensions, filelock, protobuf, chainer
Running setup.py install for chainer … done
Successfully installed chainer-6.4.0 filelock-3.0.12 protobuf-3.7.1 typing-3.6.6 typing-extensions-3.6.6

はや、数秒ですね。
[vagrant@localhost python]$ pip list
Package Version
—————– ———
awscli 1.16.198
beautifulsoup4 4.6.1
botocore 1.12.188
certifi 2018.4.16
chainer 6.4.0

import chainer

print(chainer.print_runtime_info())

Platform: Linux-2.6.32-754.14.2.el6.x86_64-x86_64-with-centos-6.10-Final
Chainer: 6.4.0
NumPy: 1.15.0
CuPy: Not Available
iDeep: Not Available
None

DNN(ディープニューラルネットワーク)

DNNはディープラーニングの一種
多数ライブラリが公開されているが、中でも”chainer”と”TensorFlow”が有名

chainerはPreferred Networksが開発、TensorFlowはGoogle

TensorFlow
https://www.tensorflow.org/

Chainer
https://tutorials.chainer.org/ja/

import data
import numpy as np 

mnist = data.load_mnist_data()
x_all = mnist['data'].astype(np.float32)/255
y_all = mnist['target'].astype(np.int32)

y_all = dense_to_one_hot(y_all)

x_train, x_test = np.split(x_all, [60000])
y_train, y_test = np.split(y_all, [60000])

tensorflowの特徴
– ニューラルネットワークだけでなく、機械学習、数値計算をカバー
– 低レベル処理も可能
– GPU利用が用意
– 複数デバイスの並列処理が容易
– 直観的に構築できる
– 難易度が高い
– 利用人口が多い

chainerの特徴
– 直観的かつシンプル
– 初心者に優しい
– 複雑な計算グラフに対応できる
– GPUでの高速処理
– 計算速度が遅い

いよいよ来たか、という感じです。
比較すると、まずはChainerで基礎をやって、それからTensorFlow って流れの方が良さそうですかね。

ディープラーニングの基礎

ニューラルネットワークとは
-> ニューロンに該当する多数のユニットから構成
-> 各ユニットは入力に対して、ユニット間の重みを加味した非線形な演算を行った結果を出力する
「入力層」→「中間層1層」→「出力層」

ディープラーニングとは
-> ニューラルネットワークの層を多数重ねたもの
「入力層」→「中間層3層」→「出力層」
-> ディープラーニングでは、バックプロパケーションと呼ばれるアルゴリズムを使用し、誤差が段々と少なくなるよう重みを調整

ディープラーニングのモデル
Deep Neural Network: DNN
→ ニューラルネットワークの層を多層にしたモデル
AutoEncoder
→ 出力と入力が一致
Convolutional Neural Network
→ 主に画像解析に用いられるモデル
Recurrent Neural Network
→ 主にテキスト解析や時系列解析に用いられる

machine learning anotation

Annotation is critical to AI development and operation.
It is important to create large amount of accurate annotation data
Analysis and improvement of annotation process by machine learning.

Annotations are processes located upstream of pipeline. Therefore, if there are many errors in the annotation, it may have a fatal effect on subsequent processes, including model learning and evaluation(in many cases, evaluation data is also generated by the annotation).

Why is annotation important?
To unify the content to be read from the data.
In the upstream process of the AI pipeline, it has a fatal impact on the leader processes such as model learning and evaluation.

アノテーションが重要そうだ、というのは直ぐに気づきますが、研究が活発な分野っぽいですね。

difference between deep learning and machine learning

先日、deep learningのサービスについて会話をしていたら、私が”machine learning”と言ったら、それは「machine learning ではなくdeep learning」と突っ込まれた。ということで、deep learning と machine learningの違いについて。

Deep learning is a further development of machine learning. The major difference from conventional machine learning is that the framework used to analyze information and data is different. This is a “neural network” created by imitating human nerves, making computer analysis and learning of data powerful.

Although there are AI mechanisms for “machine learning” and “deep learning”, it can be said that there is a difference that automation of functional enhancement is being promoted. In particular, it can be said that the system is evolving in that it automatically finds out where to look for when distinguishing the object of analysis.