L1 / L2正則化と言えば機械学習まわりでは常識で、どんな本を見てもその数式による表現ぐらいは必ず載ってる*1わけですが、そう言えばあまり実務では真面目にL1 / L2正則化入れてないなと思ったのと、Rでやるなら普通どうするんだろう?と思ったので*2、もはや周回遅れみたいな感じではありますが備忘録的に実践してみようかと思います。 L1 / L2正則化って何だっけ ということで復習(自分の記憶が合っているかどうかの確認)。。。PRMLにも載ってる有名な図がありますが、あれの説明が直感的には最も分かりやすいかと思います。これは重み付けベクトルが2次元の場合、つまりとを求めるという問題を想定した図です。もうちょっと言えば2次元データに対する分類or回帰問題ということで。 基本的には分類器にせよ回帰モデルにせよ、学習データに対する誤差*3を定式化して、これを最小化するように(このケースでは2つの
概要 深層学習フレームワークCaffeを使って,Deep Q-Networkという深層強化学習アルゴリズムをC++で実装して,Atari 2600のゲームをプレイさせてみました. Deep Q-Network Deep Q-Network(以下DQN)は,2013年のNIPSのDeep Learning Workshopの"Playing Atari with Deep Reinforcement Learning"という論文で提案されたアルゴリズムで,行動価値関数Q(s,a)を深層ニューラルネットワークにより近似するという,近年の深層学習の研究成果を強化学習に活かしたものです.Atari 2600のゲームに適用され,既存手法を圧倒するとともに一部のゲームでは人間のエキスパートを上回るスコアを達成しています.論文の著者らは今年Googleに買収されたDeepMindの研究者です. NIPS
「いつか勉強しよう」と人工知能/機械学習/ディープラーニング(Deep Learning)といったトピックの記事の見つけてはアーカイブしてきたものの、結局2015年は何一つやらずに終わってしまったので、とにかく一歩でも足を踏み出すべく、本質的な理解等はさておき、とにかく試してみるということをやってみました。 試したのは、TensorFlow、Chainer、Caffe といった機械学習およびディープラーニングの代表的なライブラリ/フレームワーク3種と、2015年に話題になったディープラーニングを利用したアプリケーション2種(DeepDream、chainer-gogh)。 (DeepDreamで試した結果画像) タイトルに半日と書きましたが、たとえばTensorFlowは環境構築だけなら10分もあれば終わるでしょうし、Chainerなんてコマンド一発なので5秒くらいです。Caffeは僕はハ
Googleは機械学習のライブラリTensorFlowをオープンソースとして公開した。すでにGoogleの写真検索や音声認識技術に使用されているもので、大きな注目を集めている。AmazonやFacebookも機械学習システムをオープンソースとして公開している。 オープンソースのライセンスは、Apache 2.0だ。簡単にいうと使っていることを明記さえしておけば商用でも利用可能である。 今後、様々なサービス、研究機関等で機械学習が使われていくことが増えると予想される。機械学習、AIは基盤技術としてすべての産業に影響を及ぼすことから、今後見逃せない動きである。 参考: 人工知能 (AI) はどこまで進歩しているのか – 4つの知能レベルと実商品例 –人工知能 (AI) ができる3つのこと – 消える職業と生まれる職業 –TensorFlowのインストール今回は、機械学習に馴染みがない人がまずT
Autogradという野郎が乗り込んできました。はい、そりゃもういきなり。複雑な確率モデルや損失関数だとしても、パラメータに関する勾配をこれでもかというぐらい簡単に計算できちゃうので、機械学習の世界に大きな影響を与えそうです。現時点では、PythonとTorchでの実装が公開されているようですが、これからJuliaなど他の言語でも実装されていきそうですね。 (補足:この記事を書いたすぐ後にGoogleがTensorFlowなるものを出してきまして、そちらでも自動微分がしっかり実装されてるみたいです〜。機械学習関連のフレームワークは移り変わりが激しいですねー ^^; ) ちなみに始まりはこんな感じでした。 ゆるいですね。 とりあえずチュートリアルやりながら、Python版チュートリアルの前半部分にテキトーな日本語訳をつけたので、ここでシェアしておきます。英語が読める方は、僕のヘンテコな日本語
隠れマルコフモデルの例 その2 Pythonで隠れマルコフモデルのFilteringの例 Pythonで隠れマルコフモデルのSmoothingの例 隠れマルコフモデルとは、システムがパラメータのわからないマルコフ性を持つとする確率モデルです。マルコフ性とはその過程の将来状態の条件付き確率分布が、現在の状態のみにより決まり、過去のどんな状態にもよらないという特性のことです。ここではこのモデルの例を記します。 ある友達が遠くに住んでいて、毎日何をしたかをあなたに電話で話します。友達は「散歩」「買物」「掃除」の3つのことにしか関心がありません。友達が何をするかはもっぱらその日の天気で決めます。あなたは友達が住んでいるところの天気の明確な情報は持っていません。でも、どんな傾向があるかは知っています。友達が日々電話で話す出来事に基づいて、友達が住んでいるところの天気を推定してみましょう。 天気は離散
(訳注:2016/1/5、いただいた翻訳フィードバックを元に記事を修正いたしました。) よくある主観的で痛烈な意見を題名に付けたクリックベイト(クリック誘導)記事だろうと思われた方、そのとおりです。以前指導してくれた教授から教わったある洞察/処世術は、些細でありながら私の人生を変えるマントラとなったのですが、私がこの記事を書いたのはそれによるものです。「同じタスクを3回以上繰り返す必要があるなら、スクリプトを書いて自動化せよ」 そろそろ、このブログはなんだろうと思い始めているのではないでしょうか。半年振りに記事を書いたのですから。ツイッターで書いた Musings on social network platforms(ソーシャル・ネットワークプラットフォームについてじっくり考える) はさておき、この半年の間書き物をしていないというのはうそです。正確には、400ページの 本 を書きました。
今や毎日のように人工知能に関するニュースが飛び込んできますが、その中でも特に注目を集めているのが“ディープラーニング”です。 研究開発を進める企業として最も有名な例はGoogleでしょうか。最近もGoogleがディープラーニングによる画像認識を体験できるWebインタフェースを公開し、話題を集めました。(参照リンク) では、ディープラーニングとは一体何なのでしょうか。本稿ではこのディープラーニングについて、そのイメージをつかむことに重点を置いて説明していきたいと思います。 人間の神経構造を模したニューラルネットワークの発展版 ディープラーニングの考えのもととなっているニューラルネットワークは、人間の脳神経回路を真似することによってデータを分類しようというアイデアに基づくアルゴリズムです。 人間の脳はニューロン(神経細胞)のネットワークで構成されていて、あるニューロンはほかのニューロンとつなが
A bare bones neural network implementation to describe the inner workings of backpropagation. Posted by iamtrask on July 12, 2015 Summary: I learn best with toy code that I can play with. This tutorial teaches backpropagation via a very simple toy example, a short python implementation. Edit: Some folks have asked about a followup article, and I'm planning to write one. I'll tweet it out when it's
実践 機械学習システムの7章と8章が、やりたいことに近かったので、ザクザクっとまとめました。(数式とコードには一切触れず、概要だけ) アソシエーション・ルール・マイニングもキレイにまとまった資料があったので書きませんでした。(一番下の参考のところ) 個々に学習した複数の学習器を融合させて汎化能力(未学習データに対する予測能力)を向上させ、一つの学習器を作成することをアンサンブル学習と呼ばれます。 特徴として、各学習器を新しい特徴量として考えることができ、訓練データを基にその新しい組み合わせ方を学習する。 諺の3人寄れば文殊の知恵な感じです。学習器の個数を増加することにより識別能力が向上して行く。アンサンブル学習は、高い識別能力に加え単純性(学習器を複数個用意するだけ)と 汎用性(任意の学習器に適用可能)という利点がある。 そのためには、各学習器の重みを調整する必要がある。(全ての学習器の重
今話題のDeep Learning(深層学習)フレームワーク、Chainerに手書き文字の判別を行うサンプルコードがあります。こちらを使って内容を少し解説する記事を書いてみたいと思います。 (本記事のコードの全文をGitHubにアップしました。[PC推奨]) とにかく、インストールがすごく簡単かつ、Pythonが書ければすぐに使うことができておすすめです! Pythonに閉じてコードが書けるのもすごくいいですよね。 こんな感じのニューラルネットワークモデルを試してみる、という記事です。 主要な情報はこちらにあります。 Chainerのメインサイト ChainerのGitHubリポジトリ Chainerのチュートリアルとリファレンス 1. インストール まずは何はともあれインストールです。ChainerのGitHubに記載の"Requirements" ( https://github.co
機械学習のデータとして特徴量を作るときの注意点や悩むことなどをメモっておきました。 間違いなどが含まれているかもしれません。 基本的な内容ですので調べればもっと適切なやり方があると思います。 カテゴリカル・データ カテゴリカル・データというのは、いくつかの限られた種類の値をとり、その大小関係に意味が無いものです。 質的データとか名義尺度とか呼ばれることもあります。 例えば都道府県のデータを考えた時に、北海道と沖縄は違う値ですが、その大小関係は定義できません。 (もちろん北海道と沖縄に面積的な大小関係などはありますが、欲しい情報ではないとします) カテゴリカル・データを特徴量にするときにはカテゴリーごとにその特徴であるかどうかの二値にするとよいと言われています 以下に例を示します。それぞれの列がデータごとの特徴量を表していると考えてください 北海道:1 沖縄:0 東京:0 北海道:0 沖縄:
Pylearn2を使って手書き文字認識を行います。 Pylearn2のインストール方法については割愛します。 画像の表示を行うために環境変数 PYLEARN2_VIEWER_COMMAND の設定をしておいてください。 今回使ったソースコードはGithubにアップロードしてあります。 https://github.com/dsanno/pylearn2_mnist データをダウンロードする データはMNIST databaseを使います。 以下のデータセットとなっています。 1個のデータは28 x 28 ピクセルの白黒画像で、0から9までの数字のうち1つが描かれている 学習用データ60000個 テストデータ10000個 pylearn2には、いくつかのデータセットをダウンロードしたり加工したりするスクリプトが含まれています。 MNIST databaseをダウンロードするにはpylearn
概要 ここ数年 Deep Learning 勢の隆盛いちじるしい。自分が学生の頃は ニューラルネットワークはオワコン扱いだったのに、、、どうしてこうなった?自分もちょっと触ってみようかな、と記事やらスライドやら読んでみても、活性化関数が〜 とか、 制約付き何とかマシンが〜(聞き取れず。何か中ボスっぽい名前)とか、何言っているのかよくわからん。 巷には 中身がわかっていなくてもある程度 使えるパッケージもいくつかあるようだが、せっかくなので少しは勉強したい。 Python 使って できんかな?と思って探してみると、すでに Theano というPython パッケージの開発チームが作った DeepLearning Documentation 0.1 という大部の聖典 (バイブル) があった。 当然だがこの文書では Theano の機能をいろいろ使っているため、ぱっと見では 何をやってんだかよく
はじめに Machine Learning Advent Calendar 2013の15日目を担当する@yag_aysです.専門はバイオインフォマティクスという計算機を使って生物学をする分野で,生モノではなく遺伝子の文字列相手に格闘している大学院生です.今回は初心者の人を対象に,なるべく数式を使わずにEMアルゴリズムについて解説してみたいと思います. EMアルゴリズムは,SVMやニューラルネットワークといった華々しい機械学習の手法の一つではなく,機械学習の中で使われる尤度最大化という一部分を担当するアルゴリズムです.そのため多くの人にとってEMアルゴリズムは,それ単体を使ってみたりだとか独自に改良をしたりするような対象ではないでしょう.でも,EMアルゴリズムなんて仰々しい名前が付けられているだけあって,いざ自分の仕事に組み込む場合には中身を理解していないと「なぜEMアルゴリズムを使ったの
scikit-learnでちょっとした機械学習をするのは、LAMPでちょっとしたWebアプリをつくるよりも簡単です。 下記に自分が入門してから2ヶ月間で覚えたことをまとめました。 ハイライト 重要だと思ったこと3つ 機械学習の概要 scikit learnについて Google Prediction API,Mahout,Spark,Cythonについてそれぞれ一言所感 重要だと思ったこと3つ 1.機械学習に明るい友人をもつこと どんな技術でもそうだけど、友人に聞いて概要を先に掴んでおくと自信を持って進めることができます。この自信を持っていると心が折れにくくなります。 @fukkyyに「入門サイトは難しい用語つかってビビらせてくるけど、ライブラリを使えば機械学習はこわくない」と教わり、巷にある入門サイトを無視してライブラリをたたき始めたので入りやすかったです。 @ysks3nに次元削除や各
ずいぶん遅くなりましたが、ひとまず完成です。疑問点・翻訳ミスを始めとした指摘がありましたら、どしどしお願いします(14/12/18)。 1週間あるから大丈夫だろうとたかを括っていたら、あっという間に投稿日になってしまいました。本当はPylearn2を使ってRBMを学習させようと考えていたのですが、役に立つ内容を書くには時間が足りなさすぎるので、お茶を濁します。 今回の目標 Restricted Boltzmann Machine及びDeep Belief Networkの基本的な動作原理を知る "A Practical Guide to Training Redstricted Boltzmann Machine"(GE Hinton, 2012)で黒魔術(RBMの性能を引き出すコツ)を学ぶ 先日、以下のような発表をしました。今回の内容は以下のスライドの焼き直し・改良を含みます。参考にどう
ちょっと調べてみたらタイトルの件について言及してる記事があまり多くなかったので、ざっくり書いてみます。なお、この記事はid:shakezoさんの 実務でRandomForestを使ったときに聞かれたこと へのオマージュです。というか、実は僕もこの記事を読んでから「多分Rなら専用の関数なんかもあるだろうし簡単にできるはず」と思って以前よりも積極的にやるようになったのでした(笑)。 総論:何で機械学習するのにチューニングが必要なの? どんな機械学習でも、何かしらのチューニングパラメータを持っています。例えばソフトマージンSVMならマージンパラメータCがありますし、非線形ガウシアンカーネルSVMならさらにカーネルパラメータのσとかが入ります。SMO(逐次最大最適化)アルゴリズムを利用するのであれば、さらにさらにtoleranceとかも入ってきます。 しかも、ちょっといじってみればすぐ分かると思う
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く