人工知能に関する断創録

人工知能、認知科学、心理学、ロボティクス、生物学などに興味を持っています。このブログでは人工知能のさまざまな分野について調査したことをまとめています。最近は、機械学習、Deep Learning、Kerasに関する記事が多いです。



第1回 AI・人工知能 EXPO 基調講演まとめ

6/28から6/30に東京ビッグサイトで開かれた第1回 AI・人工知能EXPO*1に参加して、基調講演を聴いてきたので概要をメモ書き程度にまとめた。個別の展示はちょっと数が多いので省略^^; 今年の目標(2017/1/1)にも書いたけれど、AIをどうビジネスにしていくか…

Dogs vs. Cats Redux

今回はPractical Deep Learning for CodersのLesson1の結果をまとめてみた。題材はKaggleの犬・猫分類。

Practical Deep Learning for Coders

最近、fast.aiのPractical Deep Learning for CodersというMOOCを受講している。 この講座は 無料 動画形式の講義(1回2時間というボリューム) Jupyter NotebookとKerasを使用 CNN、Finetuning、VGG16、ResNet、RNNなどが実践的な例題を通して学べる 実務家…

畳み込みニューラルネットワークの可視化

Deep Learningの学習結果(重み)はブラックボックスで、隠れ層のユニット(特に深い層の!)が一体何を学習したのかがよくわからないと長年言われてきた。しかし、今回紹介する方法を使うとニューラルネットが何を学習したのか目で見える形で表現できる。 …

15周年記念

2017年2月21日で人工知能に関するブログ(というか自分のWebサイト)を初めてから15周年を迎えます。基本的に飽きっぽい性格ですが、こんなに続いたのは読んで応援してくださったみなさんのおかげだと思います。ありがとうございます! ここら辺で15年を振り…

VGG16のFine-tuningによる17種類の花の分類

前回(2017/1/10)は、VGG16をFine-tuningして犬か猫を分類できる2クラス分類のニューラルネットワークを学習した。今回は、同様のアプローチで17種類の花を分類するニューラルネットワークを学習してみたい。前回の応用編みたいな感じ。この実験はオリジナ…

VGG16のFine-tuningによる犬猫認識 (2)

VGG16のFine-tuningによる犬猫認識 (1) (2017/1/8)のつづき。 前回、予告したように下の3つのニューラルネットワークを動かして犬・猫の2クラス分類の精度を比較したい。 小さな畳み込みニューラルネットをスクラッチから学習する VGG16が抽出した特徴を使…

VGG16のFine-tuningによる犬猫認識 (1)

VGG16はILSVRCのコンペ用に学習されたニューラルネットなのでImageNetの1000クラスを認識できる。しかし、前の記事(2017/1/4)で実験したように「ひまわり」のようなImageNetに存在しないクラスはそのままでは認識できない。 この問題を解決するためVGG16の…

KerasでVGG16を使う

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

2017年の目標

明けましておめでとうございます。 今年も目標を立てた。何が起こるか先が読めないご時世なので予定通りには行かないと思うけど(^^;; Deep Learningの深耕 今年も一昨年(2014/1/4)、昨年(2015/1/11)に引き続いてDeep Learningに関連した技術を深耕してい…

2016年の振り返り

年末なので年始に立てた目標(2016/1/1)の振り返りでもしようかな。 ○ Deep Learning Tutorialの読破とTheanoでの実装を続ける △ パターン生成・コンテンツ生成(2015/12/30)に関する従来研究のサーベイ × 深層強化学習(Deep Reinforcement Learning)の…

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にしていく)とより複雑なモデルを表現できるようになるが、誤差が伝播されずに重…

2016年の目標

あけましておめでとうございます。 今年もいくつか目標を立てた。メインは去年と同じく深層学習(Deep Learning)の深耕にした。 機械学習・深層学習の深耕 Deep Learning Tutorialの読破とTheanoでの実装を続ける パターン生成・コンテンツ生成(2015/12/30…

2015年まとめ

2015年目標(2015/1/11)のつづき。今年ももう終わりということで目標に対する振り返り。今年は4つ目標を立てていた。 (1) Deep Learningの勉強 ◎ Deep Learningの勉強・研究は今年から本格的に始めた。主にDeep Learning Tutorialを読み、Theanoで実装しな…

人工知能によるコンテンツ生成と著作権

今朝の読売新聞に面白い記事があったのでご紹介。 AI芸術著作権は? 人工知能(AI)が自動的に作った楽曲や小説は「誰の作品」になるのか。政府は「AIアート」が将来、本格的に普及するとみて、 年明けから著作権のあり方について議論を始める。 そもそも著…