0:00
みなさんこんにちは。
人工知能ラボの助手です。
前回までは、回帰分析の各ステップについて
長い間説明をしてきました。
そこで、せっかく色々と勉強してきたので、今回は
プログラム言語のpythonと、その機械学習ライブラリである
googleのTensorFlowを使って、回帰分析をプログラムで
実装してみたいとおもいます。
少し長くなるかもしれないので、今回はまずTensorFlowに
関する簡単な説明を行って、次回に回帰分析を実装する
という感じでやっていきましょう。
それでは早速ですが、TensorFlowについて説明していきます。
TensorFlowとは、google社がオープンソースとして公開している、
機械学習用のためのライブラリであり、python、C++などの言語に
対応しています。
また、自動微分などの便利な機能があり、機械学習のプログラムを
シンプルに記述することができるのが特徴です。
基本的には、以下の6ステップで機械学習を行うことができます。
① 入力データの形式を定義
② パラメータの定義
③ ①、②を用いて数式(モデル)を定義
④ 誤差関数の定義
⑤ 誤差関数の最小化手法や学習回数、
学習率といった学習条件を決定
⑥ セッションを作成し、変数を初期化後に
入力データを用いて学習を開始
早速、この手順に沿って回帰を実装と言いたいところですが、
長くなってしまうので今回はその前に必要な知識となる
TensoFlowの動かし方(主にセッション)について
説明をして終わりたいと思います。
実際に簡単なコードを見ながら確認していきましょう。
(python、TensorFlowの実行環境が構築
されていることを前提に進めていきます)
サンプル1
#tensorflowライブラリのインポート import tensorflow as tf #利用する変数や処理など必要なものを定義 s = tf.Variable(5) a = 5 add = tf.add(s, a) #変数の初期化処理 init = tf.initialize_all_variables() #セッションの作成 sess = tf.Session() #作成したセッション上の変数を初期化 sess.run(init) #作成したセッション上で定義した処理を実行 print(sess.run(add))
10
まず、2行目のimportでTensorFlowを呼び出します。
そして、5-7行目で変数や処理を定義しています。
tf.Variableは変数を定義するときに使うクラスです。
基本的には、重みとバイアスを定義するときに使う物
だと思っていてください。
次に、いったん10行目の初期化を飛ばして
13行目以降を見てください。
TensorFlowではこのように、
セッション(結果を書き込んで行くノートのようなもの)
を作成する必要があり、そのセッション上で処理を行う
ことで、学習などの記録を残していきます。
(このコードでの一連の処理を処理をクラス
とみれば、セッションはインスタンスに相当します)
もし、8行目の初期化以降をすべてコメントアウトし、
代わりに「print(add)」とした場合、エラーにはなりませんが、
期待した結果は返ってきません。
また、セッションを作成し学習等の計算を行う前には、
必ず変数の初期化を行います。
これは、とりあえず行うものだと思っていただければ大丈夫です。
初期化は、コードの10行目に書いてあるようにまず定義を行い、
それを16行目のようにセッションの中で利用するという形をとります。
セッションは複数作成することができます。
先ほどのものを少し変更した以下のコードを見てみてください。
サンプル2
#tensorflowライブラリのインポート import tensorflow as tf #利用する変数や処理など必要なものを定義 s = tf.Variable(5) a = 5 b = 10 add_a = tf.add(s, a) add_b = tf.add(s, b) #変数の初期化処理 init = tf.initialize_all_variables() #セッションの作成 sess1 = tf.Session() sess2 = tf.Session() #作成したセッション上の変数を初期化 sess1.run(init) sess2.run(init) #作成したセッション上で定義した処理を実行 print(sess.run(add_a)) print(sess.run(add_b))
10 15
ふたつのセッション(sess1とsess2)を作成し、それぞれで
変数sに対し別の計算を行っています。
このように、セッションにより計算処理や学習の内容等
を変えることができます。また、利用するGPUなども
セッション別に分けることができるようです。
長くなってしまったので、今回はここまでにしておきましょう。
次回は先ほど書いた①-⑥のステップに則って、
回帰を実装してみたいと思います。
それでは、お疲れ様でした!
次回:TensorFlowによる回帰分析②