
本書は、可能な限り多くの方がディープラーニングの本質を学ぶことができるように、プログラミングと数学から畳み込みニュートラルネットワークに至まで、手を動かしながら少しづつ丁寧に学べるように設計されています。また扱うコードは直感的な分かりやすさを重視しています。変数名やコメントにも注意を払い、可能な限りシンプルで可読性高いコードを心がけています。本書が、多くの方々のAIに取り組むきっかけになれば嬉しい限りです。
ニュートラルネットワーク

ニュートラルネットワークには、複数の入力と複数の出力があります。多数のパラメーターを持っており、これらを調整することで豊かな表現力を発揮します。ディープラーニングにおいては、これらのパラメータが最適化されることで、学習が行われます。学習が最適に行われると、入力に対して適切な判断を行った結果が、出力として得られるようになります。
Pythonの文

inは「x in y」という形式で使い、yの中にxが含まれる場合にtrueを返します。yには後述するリストやタプルを指定します。また、+演算子は文字列や後述するリストの結合に利用するできます。
軸とtransposeメソッド

NumPyには、軸(axis)という概念があります。軸とは文字通り座標軸のことで、配列において数値が並ぶ方向のことです。軸は次元の数と同じ数存在します。例えば一次元配列には1つの軸があり、2次元配列には2つの軸が、3次元配列には3つの軸があることになります。軸にはそれぞれインデックスがあります。2次元配列の場合、縦方向の軸はaxis=0で、横方向の軸はaxis=1となります。
行列の行と列

行がm個、列がn個並んでいる行列を、m×nの行列と表現します。従って、上記の1の行列は3×4の行列になります。なお、縦ベクトルは列の数が1の行列と、横ベクトルは行の数が1の行列と考えることもできます。本書における数式では、アルファベット大文字のイタリックで行列を表します。上記は行列の表記の例です。
勾配降下法

この際の各重みの変化量は、この曲線の傾き、すなわち勾配で決まります。バイアスの場合も同様です。従って、ニュートラルネットワークのすべての重みとバイアスを更新するためにまず必要なことは、すべての重みとバイアスに対する、誤差の勾配を求めることになります。このような最小値を局所最適解といいます。それに対して、真の最小値を最大最適解といいます。
ドロップアウト(Dropout)

ドロップアウトは、出力層以外ニューロンを一定の確率でランダムに消去するテクニックです。次の図にドロップアウトの概略を示しますが、入力層、中間層のニューロンがいくつか消去(×がついているもの)されて、ネットワークがまばらになっています。消去されるニューロンは、重みとバイアスの更新ごとに入れ替わります。層のニューロンが消去されずに残る確率をpとした場合、中間層にはp=0.5が、入力層にはp=0.8~0.9などの値が用いられる場合が多いようです。