KDOG Notebook

機械学習とか、頭の中を整理するために

CNN-GAP for Cifar-10

前回の記事ではMNISTに対してglobal average pooling(GAP)を用いたclass activation map(CAM)の生成を試みた。 今回はCifar-10に対して同様の実験を行った。 Qiitaに記事を投稿しました(以下のリンクを参照)。 qiita.com 犬のヒートマップが(人にとっても)非…

CNN-GAP for MNIST

Introduction 従来のCNNでは最後の畳み込み層の出力をベクトル化して全結合層に渡し、続くソフトマックス層で分類を実行している。つまり、畳み込み層で得られた画像の特徴を用いてMLPで分類をしている。Linらの研究では最後の畳み込み層の出力に対してgloba…

Convolutional Neural Networks for MNIST

はじめに 全結合層を用いた多層パーセプトロン(MLP)では生データを一次元ベクトルに変換し、入力データとして処理を実行していた。畳み込みニューラルネットワーク(CNN)では画像の三次元データをそのまま利用することで物体の位置や方向を認識する。脳の視覚…

Batch Normalizationによる学習の効率化

Introduction Batch Normalizationは各層でバッチごとの入力を正規化する手法である。これにより 学習速度があがる(学習係数の値を大きく設定可能) 初期値に依存しにくくなる などの効果がある。今回は、MNISTを用いてその効果を確認した。 また、活性化関数…

データの前処理〜白色化 その2〜

はじめに おさらい $N$個の$D$次元ベクトル${\bf x}$からなる行列${\bf X}$の分散共分散行列$\Phi_{\bf X}$は対角化可能で $$ \Phi_{\bf X} = {\bf A \Lambda A}^{\mathrm T} $$ となる。ただし、$\Lambda$および${\bf A}$はそれぞれ固有値、固有ベクトルを…

データの前処理〜白色化 その1〜

はじめに 白色化(Whitening)は生データの要素間の相関をなくし、さらに分散の正規化を前処理として実行することで学習の効率化を狙うものである。 理論 次元空間における正規化されたデータ${\bf x}$ $$ {\bf x} = [ x_1 \cdots x_D ] $$ が個あるデータセッ…

オートエンコーダーを用いた事前学習

はじめに 通常、多層パーセプトロンの層を深くしていけば、より複雑なパターンを認識することが期待される。しかし、層の数を増やしていくほど関数の最適化は困難になり、初期条件の選択によって学習効率が左右される。オートエンコーダーは重み関数について…

多層パーセプトロンによる手書き文字の分類

はじめに これまで、もっとも単純なパーセプトロンによる2値分類と3クラス分類への拡張を行ってきた。今回はパーセプトロンの層を重ねて多クラス分類を行うネットワーク、多層パーセプトロン(Multi-Layer Perceptron : MLP)を実装する。今回用いたデータセッ…

パーセプトロンによる多クラス分類

はじめに パーセプトロンを用いたもっとも単純な分類器は2クラス分類(2値分類)である。今回は3クラス以上の分類モデルへの拡張をおこなう。また、後半ではロジスティック回帰を用いて分類性能の改善を行う。検証に用いたデータはscikit-learnに用意されてい…

kNNによる手書き文字の分類

はじめに 機械学習による手書き文字(数字)の多クラス分類を行う。今回用いる学習アルゴリズムはk近傍法分類器(k-nearest neighbor classifier)である。 kNNは特徴ベクトルとラベルを結ぶような関数(重みやバイアス)を最適化することはなく、逐一入力された特…

二乗和誤差を用いた学習

はじめに ステップ関数を用いて予測ラベルを決定し、教師ラベルとの差分を誤差関数として用いた場合、誤差関数がとる値は離散的になる。 重みも飛び飛びの値をとることになり、初期条件に強く依存した結果が得られる。 今回は二乗和誤差を誤差関数として用い…

パーセプトロンを用いた分類

理論 パーセプトロンはニューラルネットワークを構成するユニット。 入力信号は重みが乗算されて送られ、それらの総和がニューロンに渡される。次に、総和は活性化関数 (ここではステップ関数を想定)に渡されて予測ラベルが出力される。予測ラベルと教師ラベ…