関数近似で学ぶ chainer とディープラーニング

最終更新日:


$y=e^x$ という関数をいわゆるディープラーニングで学習する、というお題を通じて、chainerを学んでみます。下記はchainer1.6.2.1で確認しています。
同じ内容をJupyter notebook形式でこちらに置いていますので、動かしながら確認したい方はそちらを参照してください。
まず必要なモジュール類をインポートします。

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

教師データの作成
まず教師データを出力する関数を作ります。今回は0から1.0までの浮動小数$x$に対して$e^x$が期待値です。
バッチ学習という手法を使いますが、その際に$n$ 個の問題・解答のセットを返す関数があると便利です。

def get_batch(n):
x = np.random.random(n)
y = np.exp(x)
return x,y

print get_batch(2)

(array([ 0.25425583, 0.87356596]), array([ 1.28950165, 2.39543768]))

ニューラルネットの設計
次にニューラルネットを設計します。
$y=e^x$ は非線形関数なので、線形関数だけでの近似では十分な精度が得られません。入力を$x$としたとき、$y=Wx+b$のようなものを線形関数と呼びます。$W$を重み、$b$をバイアスと呼びますが、どちらもただの行列です。つまり直線(みたいなもの)ですね。
さて、この線形演算に対して、非線形関数による活性化層が入るだけでもうニューラルネットと呼んでいいらしいです。それを多層にしたものがディープニューラルネット、いわゆるディープラーニングで…この記事の続きを読む

サイト名: Qiita - Python
2016年2月25日

無料メールマガジン登録

週1回、注目のAIニュースやイベント情報を
編集部がピックアップしてお届けしています。

こちらの規約にご同意のうえチェックしてください。

規約に同意する


Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.