External Memory

プログラミング周辺知識の備忘録メイン

Fast/Faster R-CNN

前回のR-CNN、SPP-netの続き Fast R-CNN https://arxiv.org/pdf/1504.08083Fast R-CNNはR-CNNやSPP-netの速度や精度などを改善したものである。 いくつかのconv層とmax pooling層の後にRoI pooling layerを導入することで、 multi-task lossを用いて学習を単…

R-CNN、SPP-netの物体領域認識

R-CNN Rich feature hierarchies for accurate object detection and semantic segmentation(v5) https://arxiv.org/pdf/1311.2524.pdfテストはPASCAL VOC or ILSVRC2013を使っている。 ILSVRC2013からclassification taskの他にdetection taskが加わったよ…

Batch Normalizationを試す

ResNetで出てきたBatch Normalization(BN)は学習速度が速くなるなら すぐにでも導入したほうが効率が良いと考え検証した。 Batch Normalization ResNetとBatch Normalization - External Memory 検証で使ったネットワークはconv2層(+max pooling2)+FC(FullyC…

ResNetとBatch Normalization

ResNet2 (https://arxiv.org/pdf/1603.05027.pdf)前回のResNet(https://arxiv.org/abs/1512.03385)の同じ著者による考察、改善バージョン。全体的な構造はほとんど変わっていないが、Residual unit部分の構造に活性化関数層とconv層の順番に変更が見られる。…

畳み込みニューラルネットワーク VGGNetとResNet + α

VGGNetとResNetはILSVRC competitionで優秀な畳み込みネットワークをだったもの。 それぞれ2014年準優勝、2015年優勝。 VGGNet https://arxiv.org/pdf/1409.1556.pdf3*3、または1*1の小さなフィルターサイズconv層を積層した深いCNNで16-19layer構成である。…

Network in NetworkでCIFAR-10分類

畳み込みニューラルネットワークにはいろいろなバリエーションがある。 その一つとしてNetwork in Networkを用いてCIFAR-10の分類を行った。 元文献ではerror率8.8%ほどまで達成している。 Network in Networkは以前書き下した以下のようなものである。 畳み…

畳み込みニューラルネットワークのプログラム作成とCIFAR10分類

いろいろな畳み込みニューラルネットワークの構造を試すために、たたき台となるようなプログラムを作成した。 主にCIFAR-10の分類に使用すると思う。作成したとはいっても、下記URL tensorflow CIFAR-10用のサンプルコードとネットワーク構造はほぼ同じで、…

畳み込みネットワークの構造例3 All-CNN,Highway Network

All-CNN (http://arxiv.org/abs/1412.6806) 著者らは畳み込み、max-pooling、全結合層といった異なる要素の混在に対してそれぞれの要素の必要性について、例えばmax-poolingは画像認識のベンチマークの精度を損なうことなく、ストライドの大きな畳み込み層に…

量子Fourier変換と素因数分解問題

量子Fourier変換 量子Fourier変換は量子力学的振幅に対してFourier変換を実行するための効率的アルゴリズムであり、位数発見、素因数分解、離散対数問題などを効率的に解くことが可能となる。正規直交基底|0〉,...,|N-1〉上の量子Fourier変換は以下の作用を…

畳み込みネットワーク(CNN)の構造例2-Network in NetworkとMaxout networks

NiN(Network in Network) http://arxiv.org/abs/1312.4400従来のCNNの畳み込みフィルターは一般化線形モデル(GLM)であり、 潜在的概念が線形に分離可能であるという仮定を暗黙的に行う。 しかし、GLMは抽象化能力が低く、同じ概念のデータは非線形多様体上に…

量子回路言語

量子アルゴリズムの構築において、量子計算を記述する効率的な言語である量子回路言語について大雑把にまとめる。 量子アルゴリズムを使えば、素因数分解問題や離散対数問題などを効率よく解くことが可能となる。これらの問題を解くには量子Fourier変換が用…

畳み込みネットワークの構造例-AlexNetとDeeply-supervised nets

AlexNet https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdfAlexNetは確か何かのImageNetコンペで他に大差をつけて優勝したチームのネットワーク構造だったはず。 論文中にはコンペ名はthe ILSVRC-201…

量子コンピューターの基礎的なこと

量子コンピュータに関するお勉強も機械学習と並行してやっている。 しかし、概要部分を学んだあとはこちらは余裕があるときだけ手を付ける。量子コンピュータの概念は物理学的というよりもむしろ数学的で経験の類は関与せず、 形式的な推論と直観からくる公…

フォント数字を使って手書き数字を判別(2)

前回の続き フォント数字を使って手書き数字を判別 - External Memory75%や85%程度の正答率はあまり納得いかなかったので、 もう少しだけ、正答率を上げるためのことをした。手書き数字を認識するために、実際の手書き数字を何万も集めるのは手間であり、 フ…

活性化関数ReLUとその類似関数

ニューラルネットワークにおいて、活性化関数ReLUはよく用いられている。 シグモイド関数とは違って、ReLUのような区分線形な関数はその形状から、 逆伝播時の勾配消失問題を回避することができる。 また、線形ニューラルネットワークと比較して、複雑な識別…

フォント数字を使って手書き数字を判別

手書き数字データとしては、MNISTという手ごろなものがあるが、 機械学習において、そういうものがなくても手書き数字を判別したい場合は、 学習するための手書き数字データを収集しなければいけない。手持ちのデータが十分でない場合、例えば自分でデータを…

MNIST学習データを使ってWin10の標準フォントの数字識別

タイトルの通り、MNIST手書きデータを学習用として用いてフォントの数字を識別した。 機械学習の検証というより、画像データ編集の練習のために行った。 一般のデータを機械学習に用いるには当然学習やテストで使えるように加工しなければならない。 また、…

ドロップアウトにおける過学習抑止と学習精度のためのkeep率の設定

ニューラルネットワークを用いた機械学習において、 ドロップアウトは汎用性、つまり学習用データの正答率とテストデータの正答率のギャップを埋めるためのものであり、ニューラルネットワークそのものの学習精度を向上させるものとは言い切れない。テストデ…

TensorFlow exampleプログラムのmnist_deep.pyにあるドロップアウトについて

ドロップアウトの効果を確認したく、過学習状態を無理やり作っていろいろ試してみたが なかなかうまくいかなかった。そこでTensorFlow exampleプログラムの tensorflow/mnist_deep.py at r1.2 · tensorflow/tensorflow · GitHubでドロップアウト処理を行って…

hidden layer(隠れ層)のunit数の違いによる学習制御について

ニューラルネットワークによる機械学習において、 それぞれのhidden layerごとのunit数によって 学習の制御がある程度可能であると直観的には思われる。例えば、以下のようなことを考えた。 unit数が少ないとunitごとに相互作用が大きく(周囲の変化に敏感・…

CIFAR-10データのニューラルネットワーク学習

MNISTに続いてCIFAR-10についても機械学習を行うプログラムを作成した。 CIFAR-10は自動車や飛行機、カエルなど10種類の 各6000*10個の32*32pixel RGBカラー画像データです。画像データは種類に対してほぼランダムのようですが、 一部ある種類の画像が偏って…

MNISTデータのニューラルネットワーク学習

機械学習の練習によく使用されるMNISTの手書き数字データを利用して、 実際にプログラムを作成して学習を行った。モデルは簡単な2つのニューラルネットワーク、 入力と出力のみの2層、及びhidden layerを1層挿入した3層ネットワークです。 import tensorflow…

機械学習におけるハイパーパラメータ最適化自動化について

機械学習においてハイパーパラメータをうまく調節するのは 面倒で時間がかかる作業である。 この最適化を自動化して、良い成果を得ている論文を見つけた。(おそらく有名な論文) https://papers.nips.cc/paper/4522-practical-bayesian-optimization-of-mac…

重み初期設定と活性化関数による学習速度の改善

前回の3層ニューラルネットワーク構造の学習の検討において 学習速度の速度の問題が目についた。 http://taka74k4.hatenablog.com/entry/2017/08/03/120000 今回は学習速度の改善を試みた。過適合による学習速度の低下ではなく、始めから学習速度は遅かった…

以前の機械学習検討の改善(hidden layer追加など)

前回の TensorFlowの機械学習を利用した擬似星の等級の計算 - External Memory でTensorFlowを用いた星の等級の見積りを試しで行ったが、 正答率があまり良くなかった。 今回はhidden layerを追加して前回の2層から3層に変更して見積りを行った。 それぞれの…

ソフトマックス関数とシグモイド関数でのクロスエントロピー誤差関数について

Neural networks and deep learningの前半辺りを読んだときソフトマックス関数の時のクロスエントロピーではどうなるか 気になったので、数式を少しいじって調べシグモイド関数の場合と比較した。 クロスエントロピー誤差関数はそれぞれの活性化関数によって…

Adadelta Optimizerについて

AdadeltaはAdagradの弱点を改善したアルゴリズムということで、試した。Adadeltaは以下のようにして、最小値を得る。 以下で出てくる、 と はそれぞれ減衰係数を含んだ0-nまでの勾配とパラメータ更新の際の差の二乗和である。 inital parameter : を設定。 …

Gradient descent optimizerとAdagrad optimizer

先日のTensorFlowで最適化法について知識があまりなかったので少しだけ調べた。 Gradient descent optimizerとAdagrad optimizer 先日使ったoptimaizerはGradient descentとAdagrad。 これらは次元ごとに分離して最小値が得られる。最急降下法は以下の数列が…

TensorFlowの機械学習を利用した擬似星の等級の計算

Tensorflowの使い方と深層学習(というより機械学習)の勉強の導入として、 単純モデルを利用したプログラムを作った。 参考にしたのは以下TensorFlowホームページのGET STARTEDページ Getting Started | TensorFlow 今回題材として用いたのは星の等級の計算…

開発環境の構築(2) C++

C++の勉強用環境構築。 息抜きのオンラインジャッジ用途としても使いたいので、 windowsでgccが使えるようにする。 editorとしてVisual Studio Codeを使い、 コンパイル用途以外でも使えそうなbash on Ubuntu on windowsを組み合わせた。 bash on Ubuntu on …