オートエンコーダ(自己符号化器)とは何か オートエンコーダ(AutoEncoder) ニューラルネットワークの歴史 誤差逆伝播での勾配消失を防ぐ オートエンコーダは大成功だったか 生成モデルとオートエンコーダ Variational Autoencoder まとめ ディープラーニングが盛んに研究され、実用化されはじめている。Googleの猫認識やAlphaGoがプロの囲碁棋士イ・セドル氏を打ち負かしたことは大きな話題を呼んだ。GoogleのプロダクトでもレコメンドやGoogle Photoの画像認識など、その役割は凄まじいものがある。 ディープラーニングの幕開けは2006年にHinton氏がDeep AutoEncoderやDeep Belief Networkを提案してからだと言われている。 また、ディープラーニングの紹介のされ方でよくあるのが ディープラーニングを使うことで、コンピュー
(2016.1.21追記)最近あまりメンテナンスしてないので1.5以上のバージョンを使ってる人には役に立たなくなったかもしれません。 (2015.12.15追記)当初はサンプルコードにリンクを貼っただけの記事でしたがチュートリアル等も含めたものに加筆中。また古くなった情報は順次削除・更新してます。 バージョンごとの互換性など こっちに移しました。1.5以上を強くお勧めします。 chainerのバージョンごとの違い(2016年1月19日現在) - studylog/北の雲 1.0 1.1 1.2 黎明期バージョン 1.3 1.4 CuPy導入 1.5 1.6 色々とパワーアップした現世代 概要・チュートリアル 概要を掴むのに適したスライド 1.5以上から始めるならこちら。 Chainerチュートリアル -v1.5向け- ViEW2015 内容は重複していますが1.4以前のバージョン時代のチュ
自己符号化器の役割 自己符号化器の構成方法 数式を見る 損失関数を見る 主成分分析の復習 主成分分析の復習 主成分分析の次元削減 自己符号化器と主成分分析 損失関数の書き換え 主成分分析との比較 自己符号化器の価値 非線形性を容易に表現 雑音に対するモデル構築が容易 ニューラルネットワークの良い初期状態を与える 自己符号化器の役割 自己符号化器は入力の有用な特徴を抽出すると言われていますが、なぜに自己符号化器がそれを可能にしているのかを見てみましょう。 自己符号化器の構成方法 簡単な例で行くと、入力が3次元でこれを2次元に落としたいという場合には以下のように自己符号化器を構成します。 1. 3→2→3のネットワークを構成する 2. このネットワークを入力出力として、となるように学習 3. 学習で獲得した3→2のネットワーク部分のみを取り出す。 入力の次元が3次元であるものを、2次元に落とし
chainerでAuto Encoder(自己符号化器)を作成し,MNISTの手書き文字を学習させてみた. Auto Encoderは,目標出力を伴わない,入力だけの訓練データを使った教師なし学習により,データをよく表す特徴を獲得し,ひいてはデータのよい表現方法を得ることを目標とするニューラルネットである. (深層学習 (機械学習プロフェッショナルシリーズ) より引用) ここではMNISTの手書き文字2000個を入力とし,1層のhidden layerを通じて,入力と同じイメージに近い画像を出力するニューラルネットワークを作成した. import json, sys, glob, datetime, math, random, pickle, gzip import numpy as np import matplotlib.pyplot as plt import matplotlib.
イマドキのナウいようじょなのでもっぱらNeural networkで遊んでます. Autoencoder(自己符号化器)の話をします. Autoencoder、というよりNeural Net一般の問題でありますが、ネットワークの構造を深くしてゆくと逆伝搬の途中でその勾配が弱まっていってしまって, NNの前段と後段で逆伝搬される勾配が異なってくる勾配消失(Gradient vanishing)という現象が大きな問題となってきます. このへんは青い本に書いてあった気がするのですが高くて買ってないですし、あんまり詳しくないので詳しくは述べません. そのため深いAutoencoderを構成する際には段ごとにその前段からの入力を元に戻すように学習させ、そうして一層ずつ学習させたネットワークを積み上げる(stack)という技法が用いられ、そうして構成されたAutoencoderをStacked Aut
最近早起きした日は北海道神宮・円山公園へリスに会いに行ってます。山のリスと違って人馴れしまくってて自分から足元にやってくるエゾリス。多分エサやってる人がいるんだろうな。こんな至近距離で撮れたのは初めてなので記念にアップ。 近所を散歩してたらリスに囲まれるなんて、北海道ってやっぱりすごい。贅沢。 Variational-AutoEncoder 略してVAEとやらを最近勉強してますが論文・日本語の解説・コードを見ても何がなんだかわからない。わからないんだけど面白そう。 応用例。 http://deeplearning.jp/wp-content/uploads/2014/04/dl_hacks2015-04-21-iwasawa1.pdf http://www.slideshare.net/beam2d/semisupervised-learning-with-deep-generative-
深層学習(DeepLeanring)の事前学習や特徴抽出に使われる積層自己符号化器(stacked auto-encoder)を簡単に記述するためのライブラリ(Chainerインターフェイス)を作りました。名前はzChainerです。 zChainer - scikit-learn like interface and stacked autoencoder for chainer なぜ作ったか ニューラルネットワークを簡単に実装することができるライブラリとしてChainerが多くの方に利用されていますが、ほぼ同じ記述を繰り返し書く必要があったり、学習器の定義・評価の記述が煩雑になりがちであるという課題があります。そこでインターフェイスとなるライブラリがあれば便利だと思って開発しました。scikt-learn likeに使うためにscikit-chainerとxchainerを参考にさせて
のためのコードを書きました。 やりたいこと 1.スケーラブル/コンフィギュラブルなニューラルネット生成 ニューラルネットでは難しい問題を解かせるためには中間層の数を増やす必要があります、 chainerでは普通は↓こんな風にハードコーディングして層を増やしていきますが、 import chainer.functions as F h1 = F.dropout(F.relu(self.model.l1(x)), train=train) h2 = F.dropout(F.relu(self.model.l2(h1)), train=train) h3 = F.dropout(F.relu(self.model.l3(h2)), train=train) FunctionSet(l1=F.Linear(784, 100), l2=F.Linear(100, 100), l3=F.Linear(
Deep Learningフレームワークの一つであるChainerを用いてStacked Auto-Encoderの処理を実装し、MNIST (手書き文字認識) のデータの分類を試してみました。 なお、本記事はNeural Network (以降NN)、Deep Learning についての基本的な知識、ChainerやPythonについての基本的な知識があることを前提としています。 (2016/03/18 追記・修正) FunctionSet で書いていたソースコードをChainer 1.5 で追加された仕組み「Chain・Link」で書きなおしてみました。以下、通常版として公開しています。 合わせて、全体的に「Chain・Link」使った内容に修正しています。 本記事で作成したソースコードはGithub上に公開しています。 (通常版) https://github.com/ISP-Ka
Pythonなどで使える、DeepLearningの為のパッケージです。今回はPython2.7環境で使いました。Chainerについての解説は公式のドキュメントか他にも解説してくださってるかたがいるので省こうと思います。 今回作りたいもの Chainerを使ったAutoencoderです。 Autoencoderとは 入力信号$x$を受け取った時にそれと同じ入力を返すネットワーク(関数)のことです。今回は簡単のために入力は実数だとして$x\in\mathbb{R}^n$と考えます。 https://en.wikipedia.org/wiki/Autoencoder (絵がわかりやすいと思ったので英語版を乗せます) 当たり前ですが、$f(x)=x$にしたら達成出来るじゃん!!ということになるので、関数$f$に制約を付けます。 具体的には中間層$h=f_1(x)$を作る関数$f_1$とそこか
概要 Adversarial Autoencoders を読んだ Chainerで実装した はじめに Adversarial Autoencoderは、通常のオートエンコーダの中間層出力ベクトル$\boldsymbol z$に対し、Generative Adversarial Networksの枠組みで正則化を行うオートエンコーダです。 GAN (Generative Adversarial Networks) GANではまず任意のノイズ分布$p_z(\boldsymbol z)$を考え、そこからサンプリングしたノイズ$\boldsymbol z$から偽のデータ$\boldsymbol x_{gen}$を生成する関数$G(\boldsymbol z)$をニューラルネットで定義します。 次に任意のデータ$\boldsymbol x$に対し、それが訓練データ由来の本物のデータ$\boldsym
はじめに 前回Chainerの新機能、trainerを使ってCIFAR-10の画像分類に挑戦しようとしたのですが、マシンパワーの都合上、動作を確認できずに終わってしまいました。 そこで今回はMNISTを使ったAutoencoderの作成を通してtrainerの使い方を確認していこうと思います。 Autoencoderに関してはこちらの記事を参考にしました。 【ディープラーニング】ChainerでAutoencoderを試して結果を可視化してみる。 ChainerでDeep Autoencoderを作ってみる 実装 MNISTの手書き文字1000個を入力とし、隠れ層を1層通して入力と等しくなるような出力を得るネットワークを作成します。 コード全体はこちらにあげています。 ネットワーク部分 隠れ層のユニット数は64まで絞っています。 また、hidden=Trueで呼び出すと隠れ層を出力できるよ
Online Learning of Eigenvectors, ICML2015 主要な固有値をオンライン学習において求める問題を考える。 この問題では、毎ステップにおいて行列が観測される毎にある単位ベクトルを予測し、それが今まで観測された行列累積値に対する固有値に近づくようにする事を目的とする。 これはオンラインPCAに似ている。 この設定はRegretの枠組みで損失を設定でき、最適値は固有値になる。 従来のRegretバウンドは、毎ステップ固有値問題を解く必要がある、または次元に大きく依存する、の問題があった。 本論では、これら2つの問題を回避出来る手法を提案する。 提案手法はFollow the perturbed leaderアルゴリズムを元にしている。 このアルゴリズムの利用により、従来手法より次元への依存性が低減される。 またデータのスパース性の利用も可能にした。 Faste
概要 Auto-Encoding Variational Bayes を読んだ はじめに 最近名前をよく聞くようになった変分オートエンコーダ(Variational AutoEncoder)の基礎となる確率的勾配変分ベイズ(SGVB)について自分なりにまとめます。 参考 20150717-suzuki.pdf SGVB vb-nlp-tutorial.pdf 変分下限 問題設定 データを$\boldsymbol x$、隠れ変数を$\boldsymbol z$、パラメータを$\boldsymbol \theta$とし、同時確率分布$p_{\boldsymbol \theta}(\boldsymbol x, \boldsymbol z) = p_{\boldsymbol \theta}(\boldsymbol x\mid\boldsymbol z)p_{\boldsymbol \theta}(
あ 今だにちょくちょくこの記事を参考にしていただけるのですが、次の記事にもうちょっと推敲して書き直したのでこちらを参照していただけると幸いです. Variational Autoencoders (VAEs) (この記事自体を書きなおせばいいじゃんってのはナシで. Qiita でこれ以上ものを書きたくないので) 応用例 ちょっとググると次のようなものがヒットします Variational Autoencoderでアルバムジャケットの生成 - Use At Your Own Risk chainer-Variational-AutoEncoderを使ってみた - studylog/北の雲 すごいですね! 応用はいいから理論を教えて! 参考文献 Tutorial to Variational Autoencoders: https://arxiv.org/pdf/1606.05908v2.pd
1. Ishikawa Watanabe Lab THE UNIVERSITY OF TOKYO http://www.k2.t.u-tokyo.ac.jp/ 猫でも分かる Variational AutoEncoder 2016/07/30 龍野 翔 (Sho Tatsuno) 2. Ishikawa Watanabe Lab http://www.k2.t.u-tokyo.ac.jp/ 今回の内容 • Variational Auto-Encoderの解説 – 生成モデルそのものの概要 – Variational Auto-Encoder(VAE)のなるべく噛み砕いた解説 – その他生成モデル論文のざっくりした紹介 • 説明すること/しないこと – 説明すること » 生成モデルの簡単な概要と事例 » Variational AutoEncoderの構造と数式的・直感的理解 – 説明しな
TensorFlow? Google製の機械学習ライブラリTensorFlowを触りはじめました。 その名のとおり、テンソル(多次元配列)のデータフローを組み立てると、その計算グラフから自動微分してくれる仕組みを提供してくれるため、とてもディープラーニング(深層学習)と相性がいいです。 さらにTensorFlowにはTensorBoardというログ可視化ツールが付いていて、これが素晴らしいです。ちょっとしたコードで達成感が味わえるので、入門用にもうってつけです。 ということで私も『ディープラーニング勉強会 AutoEncoder』で勉強したDenoising AutoEncoderを、ザクッと実装して可視化してみました。今回はミニバッチ学習も取り入れてます。 TensorBoard! TensorBoardで可視化したデータフローは、こんな感じになります。 入力層にノイズをかけて、隠れ層で
Kerasの公式ブログにAutoencoder(自己符号化器)に関する記事があります。今回はこの記事の流れに沿って実装しつつ、Autoencoderの解説をしていきたいと思います。間違いがあれば指摘して下さい。また、Kerasの公式ブログはKerasでの実装に関してだけでなく、機械学習自体についても勉強になることが多く、非常におすすめです。 今回の記事では様々なタイプのAutoencoderを紹介しますが、日本語ではあまり聞き慣れないものもあるかと思いますので、今回は名称を英語で統一したいと思います。 目次 イントロダクション Undercomplete Autoencoder Sparse Autoencoder Deep Autoencoder Convolutional Autoencoder Denoising Autoencoder まとめ イントロダクション Autoencod
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く