人工知能に関する断創録

このブログでは人工知能のさまざまな分野について調査したことをまとめています(更新停止: 2019年12月31日)

Deep Learning

KerasでVGG16を使う

今回は、Deep Learningの画像応用において代表的なモデルであるVGG16をKerasから使ってみた。この学習済みのVGG16モデルは画像に関するいろいろな面白い実験をする際の基礎になるためKerasで取り扱う方法をちゃんと理解しておきたい。 ソースコード: test_vg…

Kerasによるデータ拡張

今回は、画像認識の精度向上に有効な データ拡張(Data Augmentation) を実験してみた。データ拡張は、訓練データの画像に対して移動、回転、拡大・縮小など人工的な操作を加えることでデータ数を水増しするテクニック。画像の移動、回転、拡大・縮小に対し…

KerasでCIFAR-10の一般物体認識

今回は、畳み込みニューラルネットを使ってCIFAR-10(2015/10/14)の一般物体認識をやってみた。以前、Chainerでやった(2015/11/8)のをKerasで再実装した。 これもKerasの例題に含まれている。このスクリプトでは、データ拡張(Data Augmentation)も使っ…

Kerasによる畳み込みニューラルネットワークの実装

前回(2016/11/9)はMNISTの数字認識を多層パーセプトロンで解いたが、今回は畳み込みニューラルネットを使って解いてみた。このタスクもKerasの例題に含まれている。ソースコードを見れば大体何をやっているかつかめそうだけどポイントを少しまとめておく。…

KerasでMNIST

今回は、KerasでMNISTの数字認識をするプログラムを書いた。このタスクは、Kerasの例題にも含まれている。今まで使ってこなかったモデルの可視化、Early-stoppingによる収束判定、学習履歴のプロットなども取り上げてみた。 ソースコード: mnist.py MNISTデ…

Kerasによる多クラス分類(Iris)

今回は、機械学習でよく使われるIrisデータセットを多層パーセプトロンで分類してみた(ありがち)。Irisデータセットのクラスラベルは3つ(setosa, versicolor, virginica)あるので前回までと違って多クラス分類になる。短いプログラムなので全部載せてポ…

Kerasによる2クラス分類(Pima Indians Diabetes)

Kerasのプログラミングは データのロード モデルの定義 モデルのコンパイル モデルの学習 モデルの評価 新データに対する予測 という手順が一般的。今回はもう少し実践的なデータを使ってこの流れをつかみたい。 ソースコード:pima.py 1. データのロード 参…

Kerasによる2クラスロジスティック回帰

まずはもっとも簡単な2クラスロジスティック回帰モデルをKerasで書いてみる。前にTheanoでやった(2015/5/19)のをKerasで書き換えただけ。ロジスティック回帰は、回帰とつくけど分類のアルゴリズムで、隠れ層がなく、活性化関数にシグモイド関数を使ったニ…

Kerasのインストール

こういうインストール関係の記事はすぐ時代遅れになるので詳細は省くけど、現在の自分の環境など簡単にまとめておきたい。 Ubuntu 16.04 Python 3.5 Anaconda 4.2.0 TensorFlow 0.11 Keras 1.1.0 1. Ubuntuの仮想マシンを作成 普段はWindowsマシンを使ってい…

Kerasはじめます

前回の更新(2016/3/18)からいろいろあってだいぶ間があいてしまいましたが、気を取り直してまた何か書いていこうと思います!しばらくは、Deep Learningのライブラリ Keras を使ってさまざまな実験をしていきます。Theanoでの実装(2015/4/29)はきついの…

深層学習ライブラリ Keras

ここ1年くらいDeep Learning Tutorialを読みながらTheanoというライブラリで深層学習のアルゴリズムを実装してきた。 深層学習の基本的なアルゴリズムならTheanoでガリガリ書くこともできたがより高度なアルゴリズムをTheanoでスクラッチから書くのはとても…

制限ボルツマンマシン (RBM) の導出 (2)

制限ボルツマンマシン (RBM) の導出 (1) (2016/3/20)のつづき。前回は可視層を固定したときの隠れ層の分布と隠れ層を固定したときの可視層の分布を導出した。今回は、RBMの対数尤度関数の導出とそのパラメータでの偏微分の式を導出していきたい。 深層学習…

制限ボルツマンマシン (RBM) の導出 (1)

ボルツマンマシン(隠れ変数あり)の導出(2016/3/12)のつづき。Deep Learningの基礎モデルとして有名な制限ボルツマンマシン(Restricted Boltzmann Machine: RBM)を導出したい。深層学習の2.7節に当たる。前回と同様に表記法はこの本に準拠する。 深層学…

ボルツマンマシン(隠れ変数あり)の導出

ボルツマンマシン(可視変数のみ)の導出(2016/3/11)のつづき。前回はボルツマンマシンを構成するノードがすべて可視変数(観測データが与えられる)ケースだったけれど今回は一部のノードが隠れ変数(観測データが与えられない)ケースのボルツマンマシン…

ボルツマンマシン(可視変数のみ)の導出

制限ボルツマンマシンのアルゴリズムの導出が難しかったので忘れないようにまとめておいた。今回から数回にわたって 可視変数のみのボルツマンマシンの導出(2.4節) 隠れ変数ありのボルツマンマシンの導出(2.5節) 制限ボルツマンマシンの導出(2.7節) の…

積層自己符号化器の性能評価

Theanoによる積層自己符号化器の実装(2016/1/22)の続き。 今回は、積層自己符号化器の事前学習(pretraining)の効果が本当にあったのか検証してみたい。ついでにもう一つTheanoによる雑音除去自己符号化器の実装(2015/12/9)で書いた雑音除去(denoising…

Theanoによる積層自己符号化器の実装

Theanoによる雑音除去自己符号化器の実装(2015/12/9)の続き。今回は自己符号化器を積み上げて積層自己符号化器を実装した。 多層パーセプトロンは隠れ層の数を増やす(Deepにしていく)とより複雑なモデルを表現できるようになるが、誤差が伝播されずに重…

Theanoによる雑音除去自己符号化器の実装

この記事はDeep Learning Advent Calendar 2015の9日目です。 Theanoによる自己符号化器の実装(2015/12/3)の続き。 今回は自己符号化器を継承して雑音除去自己符号化器(Denoising autoencoder)を実装した。 ソースコード全体はここ。 自己符号化器は入力…

Theanoによる自己符号化器の実装

今回からしばらくさまざまな自己符号化器(Autoencoder)を検証していきたい。深層学習のメリットである特徴の自動学習の基礎になるところなのでしっかり理解しておきたいところ。

ChainerによるCIFAR-10の一般物体認識 (2)

ChainerによるCIFAR-10の一般物体認識 (1)(2015/11/8)のつづき。今回は畳み込みニューラルネットワークの畳込み層の数を変えたときにテスト精度がどのように変わるか調査した。前回と同じくCIFAR-10の一般物体認識をタスクとしている。 畳み込み2層(conv2…

ChainerによるCIFAR-10の一般物体認識 (1)

Chainerによる畳み込みニューラルネットワークの実装(2015/10/7)のつづき。今回はMNISTの数字画像認識ではなく、CIFAR-10(2015/10/14)という画像データを使った一般物体認識をやってみた。画像を10個のクラスに分類するタスク。実装にはChainerを使った。…

CIFAR-10

MNISTの数字画像はそろそろ飽きてきた(笑)ので一般物体認識のベンチマークとしてよく使われているCIFAR-10という画像データセットについて調べていた。 このデータは、約8000万枚の画像がある80 Million Tiny Imagesからサブセットとして約6万枚の画像を抽…

Chainerによる畳み込みニューラルネットワークの実装

Chainerによる多層パーセプトロンの実装のつづき。今回はChainerで畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)を実装した。Theanoによる畳み込みニューラルネットワークの実装 (1)で書いたのと同じ構造をChainerで試しただけ。タス…

Chainerによる多層パーセプトロンの実装

今回は、最初ということでChainerに付属している多層パーセプトロンのコードを動かしてみるところから始めた。

Theanoによる畳み込みニューラルネットワークの実装 (2)

Theanoによる畳み込みニューラルネットワークの実装 (1)(2015/6/26)のつづき。今回は前回できなかった ConvLayerとPoolingLayerの分離 ReLUの導入 を試してみた。 ConvLayerとPoolingLayerの分離 Deep Learning Tutorialの実装では、LeNetConvPoolLayer()…

Theanoによる畳み込みニューラルネットワークの実装 (1)

Theanoによる多層パーセプトロンの実装(2015/6/18)のつづき。今回は、Deep Learning Tutorialの畳み込みニューラルネットワーク(Convolutional Neural Network: CNN, ConvNet)を実装してみる。 CNNは人間の視覚野を参考にした手法であり、画像認識に特化…

Theanoによる多層パーセプトロンの実装

Theanoによるロジスティック回帰の実装(2015/5/26)のつづき。今回は、Deep Learning Tutorialの多層パーセプトロン(Multilayer Perceptron)を実装してみる。タスクは前回と同じMNISTの手書き数字認識。多層パーセプトロンはこれまでも何回か実装してきた…

Theanoによるロジスティック回帰の実装

Theanoによる2クラスロジスティック回帰の実装(2015/5/19)のつづき。 今回からDeep Learning Tutorialの内容にそって実装していく。このチュートリアルのコードやデータはGithub上で公開されているのでcloneしておいた。 git clone https://github.com/lis…

Theanoによる2クラスロジスティック回帰の実装

Theanoの使い方 (2) 自動微分(2015/5/18)のつづき。今回は、前回までの知識を使ってTheanoで2クラスロジスティック回帰の実装をしてみたい。 Deep Learning Tutorialの最初に紹介されるアルゴリズムもロジスティック回帰なのだが、こちらはMNISTの数字認識…

Theanoの使い方 (2) 自動微分

Theanoの使い方 (1) シンボルと共有変数(2015/5/9)のつづき。 今回はTheanoの自動微分を試してみる。ロジスティック回帰やニューラルネットなど勾配降下法を使うアルゴリズムではパラメータの更新式にコスト関数(誤差関数) の微分が必要になる。 通常、…