LoginSignup
0
1

More than 5 years have passed since last update.

Tensorflow/KerasでDeep Learningをやってみよう!(その1)

Last updated at Posted at 2018-12-18

誤差の最適化と勾配法

機械学習や深層学習では、一般に予測の誤差を最小化・最適化することを学習と言います。
前回までのステップで、データフローグラフの基本を学んだところで、このチュートリアルでは「最適化」という概念について勉強して行きたいと思います。

最適化とは、与えられた関数の出力を「最小化」するパラメータを見つけることです。
Tensorflowでは、「勾配法」という手法により、誤差関数を最小化する便利な機能があります。

1.勾配法(最急降下法)

別名、最急降下法と呼ばれる関数の2次元空間を、降下していくメソッドです。
その基本的な段階は、

1.パラメータを適当な値で初期化する
2.与えられたパラメータでの関数の傾き(勾配)を計算する
3.最も傾きの大きい(急な)方向に、パラメータを少しずつずらしていく
4.2〜3を繰り返す

<最急降下法による2次関数の最小化>

import tensorflow as tf

# パラメータは変数として定義
x = tf.Variable(0., name='x')
# パラメータを使って最小化したい関数を定義
func = (x - 1)**2

# learning_rate は一度にずらす大きさを決める
optimizer = tf.train.GradientDescentOptimizer(
    learning_rate=0.1
) 
# train_step が x を少しずらす操作を表す
train_step = optimizer.minimize(func)

# train_step を繰り返し実行する
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    for i in range(20):
        sess.run(train_step)
    print('x = ', sess.run(x))

x =  0.98847073

x = 1の時に、この関数は、0になり最小の値になりますが、20回程度の反復で、
x = 0.98847073
を示していますね。
image.png

2.勾配法の機械学習への適用

さてこの勾配法を機械学習にはどのように適用するのでしょうか?
簡単な例で、みて行きましょう。ここでは、Boston house-prices というデータセットを使って、
住宅価格を判定する機械学習モデルを作ってみましょう。

2.1 データセットの準備

Tensorflowの上位言語のKerasには、このデータセットを割と簡単に取り込むことができる機能があるので、Kerasを導入してみましょう。

pip install keras

これを例のAnacondaのaistudio仮想環境のターミナルから実行しましょう。
。。 ターミナルではなくて、jupyter notebookからでも出来ます。が、

!pip install keras

頭に!(ダッシュ)を付けます。
x_trainだけ、出力してみましょう。なにがしかのデータがロードされたようです。
image.png
でもこれでは分からないので、ヒストグラムにして表示しましょう。

# matplotlibのグラフをインラインで表示する
%matplotlib inline

import matplotlib.pyplot as plt

plt.rcParams['font.family'] = ['IPAexGothic']
plt.rcParams['font.size'] = 10*3
plt.rcParams['figure.figsize'] = [18, 12]

plt.hist(y_train, bins=20)
plt.xlabel('住宅価格($1,000単位)')
plt.ylabel('データ数')
plt.show()
plt.plot(x_train[:, 5], y_train, 'o')
plt.xlabel('部屋数')
plt.ylabel('住宅価格($1,000単位)')

image.png

image.png

こんな分布をしているみたいですね。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1