機械学習
全結合
- ニューラルネットワークの全結合:隣接するすべてのニューロンで結合
- 全結合層の問題点:1次元データに変換するため、空間情報(空間的に近い値はピクセル値も近い)が無視されている ⇒ 畳み込み層なら形状を維持できる。
CNN
- ストライド:フィルタを移動する間隔
- パディング:入力データの周囲にデータを埋めること。出力サイズを一定にするために行う。
- Pooling層:縦横方向の空間を小さくする演算
- CNNでは「Convolution - ReLU - (Pooling)」というレイヤでつながっていくが、出力層に近い部分では「Affine - ReLU」の組み合わせが用いられる。
- 畳み込みのフィルタはエッジ(色が変化する境目)やブロブ(局所的に塊のある領域)に反応する
- 最初の層は単純なエッジに反応し、続いてテクスチャ、物体のパーツに反応する。層が深くなるほど抽出される情報が抽象化されていく。
- LeNetは1998年に提案されたCNN
- AlexNetは2012年に発表されたCNN。ディープラーニングブームの火付け役。
Deep Learning
- MNISTは簡単なモデルなので、層が深くなくても良い結果が得られる
- Deep Augmentation:画像を回転や移動させて画像枚数を増やす手法
- 層を深くすることの利点:
- ネットワークのパラメータ数を少なくできる
- 学習データを少なくできる
- ILSVRC(ImageNet Large Scale Visual Recognition Challenge):大規模画像認識のコンペティション
- ImageNet:大量の画像のデータセット
- Deep Learningで有名なネットワーク:VGG, GoogLeNet, ResNet
- ディープラーニングは数値精度はそんなにいらない。16bitの半精度浮動小数点数でもよい結果が得られる。
その他
畳み込みフィルタをオンラインで適用できるサイトで、フィルタの処理を確認した。 畳み込み(コンボリューション) | 写真加工.com
「Deep MNIST for Experts」の翻訳版は、TensorFlowチュートリアル和訳(Deep MNIST for Experts) - BizFrameworks and DeepLearningがたぶん一番よい。なぜなら、公式サイトとコードが対応しているから。他の翻訳サイトだと、tensorflow v1未満のコード(
initialize_all_variables
を使っているなど)で書かれていて、古い。
Python
- スラッシュ2個は整数の割り算。
6//5 ⇒ 1
numpy.reshape
の引数に-1
を渡すと、辻褄が合うような要素数にしてくれるargparse
: コマンドラインオプション、引数、サブコマンドのパーサー。コマンドラインのヘルプ表示のフォーマットが統一されるので、便利!
16.4. argparse — コマンドラインオプション、引数、サブコマンドのパーサー — Python 3.6.2 ドキュメント
覚えた用語
- バニラ (ソフトウェア): 素の状態
- 日経BP みんなのラズパイコンテスト みんなのラズパイコンテスト | 日経Linux、日経ソフトウエア、ラズパイマガジン 主催