日本語資料に助けを借りる。 Neural+TensorFlow.pdf - Google ドライブ
Gradient Descent
- パラメータ修正で使われるGradient Descent(勾配降下法)
- LossFunctionの変化が勾配
- 勾配が下がるようにWとbを変化させる
- 数学的にはLossFunctionをWで微分、bで微分
Loss Function
- 線形回帰:データ群に一番近い直線
- ニューラルネットワークにおいての学習はLossFunctionを最小にすること
- y=ax+bとサンプル(xi,yi)の垂直方向の誤差はaxi+b-yi
- 誤差は正負の値をとるので、二乗。二乗平均を見る
二乗平均のLossFunctionをquadratic costという
正解が一つなら誤差の定義は簡単
- 数字の画像認識のように0~9まであるような時に利用される損失関数:クロスエントロピー
TensorFlow
- グラフ、演算ノード、テンソル
- σ(X・W + b)という数学の式をグラフにしてる
- 旧来のグラフは矢印いっぱいでわかりにくいw
- 入力層、隠れ層、出力層
- 旧来のグラフの矢印は辺:テンソル
- テンソルはn次元の配列、リスト
- テンソルのランク:次元数 Rankについて。 https://www.tensorflow.org/versions/r0.7/resources/dims_types.html
グラフをプログラミング
- TensorFlowはグラフの定義をプログラミング
- WeightとbiasはBack propagationで後々修正を受けるので変数
- images,weights,bias,hidden1いずれもテンソル
# tf=TensorFlow,nn= Neural Netの略 # 変数 tf.Variable # 行列の積 tf.matmul # Activatorの適用 # relu関数の場合 tf.nn.relu hidden1 = tf.nn.relu(tf.matmul(images, weights) + biases
変数の初期化
# 乱数 W = tf.Variable(tf.random_normal([784, 10], stddev=0.35), name="weights") # ゼロ W = tf.Variable(tf.zeros([784, 10]))