プログラマのための ディープラーニングのしくみがわかる数学入門

増井敏克著「プログラマのための ディープラーニングのしくみがわかる数学入門」ソシム (2018/10/26)
www.amazon.co.jp/dp/480261179X

数列、統計、確率、ベクトル、行列、関数、微分、ロジスティック回帰、重回帰分析、勾配降下法、損失関数、誤差逆伝播法、モデル評価などを扱う。
網羅的な説明ではなく、概要をかいつまんで説明している本。

(正誤表、サンプルコード)
http://www.socym.co.jp/support/s-1179#ttlWrong

以下は、読後メモ


Chapter 1 機械学習とニューラルネットワークの概要

Chapter 2 数列と統計、確率


p71 差集合

差集合は、正しくは、ある集合の中から別の集合に属する要素を取り去って得られる集合。集合の差は、交換法則を満たさない。

p72 リスト要素の合計

sum …リスト要素の合計を計算

p94 リストの追加等

append …リストの追加
Counter …要素ごとの出現回数カウント
floor …小数点以下切り捨て

p96 尤度関数の実際の形





Chapter 3 複数の入出力をまとめて処理(ベクトルと行列)


p103 多次元配列

numpy.array …N次元配列を扱う関数

p104 Tensor Flow

a = tf.constant() …a に定数 object を割り当てるための定義
tf.Session …Session クラス
sess.run(a) …値の代入、計算実行、戻り値は a の値


p106 ベクトルの大きさ

np.linalg ... Numpy にあるパッケージ名
np.linalg.norm() ... ノーム(vector の大きさ)計算


Chapter 4 最適な値に収束させる(関数と微分)

p138 上吹き出し部分

「勾配が急な方向に」は「勾配が緩やかな方向に」が正しい。

p140 二変数関数 f(x,y)

\[y= x^2+y^2 \] は、
\[f(x,y)=x^2+y^2\]  が正しい。
\[y= x^2+y^2 \] は、
\[f(x,y)=x^2+y^2\]  が正しい。



p142 練習問題⑦(連鎖律を用いた微分)解答例


 

p142⑦(3)グラフ

 

p142⑧(偏微分)解答例

 

p142⑧(3)解答例

 

p142⑧(1)

\[f(x,y) = e^x + e^y\] のグラフ
 

Chapter 5 学習して答えを導き出す(予測と最適化)

p150 損失関数 E の偏微分



p150 最小二乗法の散布図・回帰直線グラフ


p152 損失関数の偏微分

\(θ\) の\(j\) 番目の要素による損失関数\(E\)の偏微分


p158 log E の式展開



p158 log E  の a偏微分



p159 確率の偏微分

\(k\) 番目データがclass 1 に属する確率\(p_k\) の \(a\) 偏微分

p170 計算過程

\[E=\frac{1}{2}*(t_1-z_1)^2+(t_2-z_2)^2\] とあるのは、
\[E=\frac{1}{2}*\bigl\{(t_1-z_1)^2+(t_2-z_2)^2\bigr\}\] が正しい。


p170 計算過程

\[\frac{∂E}{∂ω_{12}}=(t_1-z_1)y_2\] とあるのは、
\[\frac{∂E}{∂ω_{12}}=-(t_1-z_1)y_2\] が正しい。


p180 練習問題⑨(1)解答例





p180 練習問題⑨(2)(回帰平面)解答例


p180 練習問題⑨(3)(温度勾配式)解答例





p180 練習問題⑩(正解率、適合率、再現率、F値)解答例


 
 

p180→p247

・表下段B行 3,1 とあるのは、1,3 が正しい。
・正解率は、正しくは、\[\frac{4+3}{4+2+1+3}=\frac{7}{10}\]
・再現率は、正しくは、\[\frac{4}{4+1}=\frac{4}{5}\]
・F値は、正しくは、\[\frac{2}{\frac{3}{2}+\frac{5}{4}}=\frac{8}{11}\]


Chapter 6 Neural Network から Deep Learning へ 精度の向上と画像への応用

p194 計算過程

「その和の\(\frac{1}{p}\) を計算」とあるのは、
「その和の\(\frac{1}{p}\)乗すなわち\(\sqrt[p]{\sum (value~of~each~cell)^p}\)を計算」が正しい。


p195 末2行目

x[i:i+len(f), j:j+len(f[0])] は、
len(f) == 3
len(f[0]) == 3 であることから、
x[i:i+3, j:j+3]
で示される「行列x のうち3行3列行列」を指す。


p205 吹き出し部分

「L2正規化」とあるのは、
「L2正則化」が正しい。


p212 練習問題⑪(回転、白黒変換)




Chapter 7 強化学習への活用


p226 フィボナッチ数列

同コードでは、数列メモも、{0: 1, 1: 1, 2: 2, 3: 3, 4: 5, 5: 8, 6: 13, 7: 21, 8: 34, 9: 55…} と追加されていく。

p237 5行目

td = R[s, a]  …は、
td = R[S1[s, a], a] …とする必要がないか(遷移先 t+1)。