tensorflow1.xでNeural Network1

tensorflow1.xでNeural Network1

さて、今までtensorflowに関する基礎的な事項を記事にしてきましたが、ここからが自分の自習という意味でもこのブログを読んでくれる人の目的という意味でも本番になると思います。では、本番にいきましょう。

Neural Network

皆さんは、ニューラルネットワーク(Neural Network)とは何かをご存知でしょうか?現在の人工知能ブームを巻き起こした技術であるDeep Learning、その基礎的な技術の1つです。特に画像系で使用されるDeep Learningでは、このニューラルネットワークのみで構成されているものも少なくありません。

そのようなニューラルネットワークですが、万能なものではありません。その特徴と原理を見ていきましょう。まずは原理からです。

Neural Networkの原理

ニューラルネットワークとは、ざっくりというと”多次元式に置ける係数を教師データから推測するアルゴリズム“です。色々と意味がわからないですね。この説明がしっくりと来るようになればNeural Networkについて基本的なことは理解したといっても良いと私は思います。

ニューラルネットワークを理解するためにも、まずはニューラルネットワークのざっくりとした概略図とその機能を確認しましょう。

図1 Neural Network 説明図

図1では、簡単なニューラルネットワークの図を見てもらいました。ニューラルネットワークと言いますが、実際にネットワーク構造をしているため、その最小単位はnodeと呼ばれます。実際のインターネットやグラフ理論でもおなじみの呼び方ですね。ニューラルネットワークでは、このnodeの組み合わせを数式として表現します。

では、その数式を見ていきましょう。その前に変数を使用してニューラルネットワークの式を表現するので、その変数の説明をしてしまいましょう。といっても変数は、\(x\)と\(\omega\)、\(b\)の3種類のみです。ここでの\(x\)はnodeへの入力を、\(\omega\)は重み、\(b\)はバイアスと呼ばれるものを表します。重みとバイアスの説明は後で行います。また、式中に関数\(\sigma(x)\)が存在しますが、説明があるまではその関数は\(\sigma(x)=x\)として扱ってください。あとの記事で説明を行います。では、ニューラルネットワークの式を示します。

$$y=\sigma(x \cdot \omega+b)$$

とてもシンプルですね。この式の形は変数こそ違うものの、中学生の頃に習った1次関数と一致します。すべての変数にスカラー値を入れれば1次関数そのままですね。この時、\(\omega\)は傾き、\(b\)は切片を示します。

実際のニューラルネットワークでは、\(x\)、\(\omega\)に行列、またはベクトルを入れて計算を行います。しかし、行列やベクトルといっても式の本質は変わりません。\(\omega\)と\(b\)は1次関数の時と変わらず、式の傾きと切片を示します。ニューラルネットワークはこの係数を変化(=学習)させることで様々な出力を行うのです。

では、実際に試してみましょう。今回は、\(x\)と\(\omega\)、\(b\)は以下のような値とします。

$$
x
=
\left( \begin{array}{c} 2\\ 2\\ \end{array}\right)
$$

$$
\omega
=
(5,2)
$$

$$b=10$$

では、プログラムを見ていきましょう。

#インポート
import tensorflow as tf

#式の定義

# 変数の定義
weight=tf.Variable([[5,2]])
b=tf.Variable([[10]])

# プレースホルダーの定義
x=tf.placeholder(tf.int32,(1,2))

# 式の設定
y=tf.add(tf.matmul(weight,x,transpose_b=True),b)

#式の定義終了

#セッションの開始
with tf.Session() as s:
s.run(tf.global_variables_initializer()) #変数の初期化 (重要!)
print("Answer\t:",s.run(y,feed_dict={x:[[2,2]]}))
<実行結果>
Answer : [[24]]

さて、とても分かりやすいプログラムだったと思います。今までの記事でやってきた内容の総復習のような感じでしたね。

今日は以上! 次回はNeural Networkの学習についてやっていこうと思います。

まとめ

  • Neural Networkの式:\(y=\sigma(x \cdot \omega+b)\)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です