ゼロDを読み返す(1)

何をやったか

ゼロD(1)を3章まで読み返した。

なぜやったのか

学部の際に一度読んだが、理解しきれていないところが多々あった。
一度読んでから時間がたち、どこが理解していなかったかわからないため、一度すべて読み返そうとしている。
本来読むはずだった春休み中にできていなかったため、今回時間ができたタイミングで読むことにした。

メモ

Python入門

Pythonの基礎。ディープラーニングフレームワークとかいっぱい対応しているよーとかAnacondaの紹介、基本的な使い方の説明。Numpy、Matplotlibの説明が入ってくる。
大体はOKなんだけど、忘れやすそうな部分はちょこちょこあったので↓に書いておく。

テンソル

ベクトルや行列を一般化したもの

ベクトル

1次元配列

行列

2次元配列

スカラ

単一の数値

ブロードキャスト

数値の拡大→演算

plt.legend()

凡例の出力

パーセプトロン

NNの基礎であるパーセプトロンの説明。入力信号に対して重みがあって、入力信号と対応する重みをかけて(それにバイアスと合わせて)総和し、それが閾値を超えているかで出力が決まるという話が主。
重みは入力の重要性を表すもので、バイアスはニューロン発火(1を出力)のしやすさをコントロールするもの。
線形的なものは単一のパーセプトロンで表すことが可能だが、XORみたいな非線形のものは不可能。ただしパーセプトロンの層を重ねることで非線形も表すことができる。
boolはint()で数値化可能だと気付いた。
ここでつまったところは特になし。

ニューラルネットワーク

NNの性質に「適切なパラメータをデータから自動的に学習できる」というものがあり、いままで人手で設定していた作業を省くことができる。この章ではNNの概要と識別する際の処理が説明される(学習は次章)。
NNの構造や活性化関数、多次元配列の計算(となぜ多次元配列の計算が必要なのかについて)、バッチ処理が説明される。後半でmnistを使用した識別の演習が挟まれる。
前読んだときは多次元配列の計算で詰まってた感じはあったが、今回は何事もなかった。
活性化関数についてだが、数式から理解するよりグラフを出力してどんな特徴があるかつかむくらいでいいような気がする。
softmaxは総和が1となり、確率として使用できる。 バッチ処理するときは入力の形状を変形する。
この章も大体理解した(と思う)が、忘れそうなところがあったので↓に残す。

astype(np.int)

True/Falseを数値化する。numpyの配列使っているときに使う。

np.maximum(0,x)

0かx、一番大きい値を返す

np.ndim()

次元数(2次元配列での行数)

np.shape

素数(タプルで返される)

恒等関数

出力層の活性化関数(softmaxなど)

PIL

Python Image Library(Pythonの画像用ライブラリ)

np.argmax(x)

配列x中の最大値のインデックスを返す

白色化

データ全体の分布の形状を均一にする方法

わからなかったところ・あやふやなところ

特になし。

感想

ここまでは大体理解していることがわかった。
次からちょっと詰まりそうな気がする。