nykergoto’s blog

機械学習とpythonをメインに

敵対的サンプリング検出のための基準としての相互情報量 - Understanding Measures of Uncertainty for Adversarial Example Detection

Understanding Measures of Uncertainty for Adversarial Example Detection https://arxiv.org/pdf/1803.08533.pdf 概要 (200文字程度) 敵対的サンプルを判別する基準として相互情報量 (Mutual Information) が優れていることを主張する論文. MI の推定に D…

seaborn の clustermap をちゃんと理解する

python の可視化ツールは matplotlib が有名ですがそのプラグイン的役割を果たすモジュールとして seaborn があります。seaborn でプロットすると勝手に回帰直線をプロットしてくれたりするのですが今回は seaborn.clustermap を取り上げます。 seaborn.clus…

重みのスケールに依存しないSGD: Path Normalized Optimization in Deep Neural Network

表題の論文を読んだのでまとめます! url: [1506.02617] Path-SGD: Path-Normalized Optimization in Deep Neural Networks Path-SGD を考えたモチベーション ニューラルネットワークがこの論文の主題です。 今、あるニューラルネットワークの $i, i+1$ 番目…

Boid Model による ALife の実装 with Javascript

計算機状で生命体を模したモデルを作り、その挙動を研究するという分野があり、一般に人工生命 (Alife) と呼ばれています。 その中でも「群れ」をモデル化したものに boid model と呼ばれるものがあります。 今回は Boid Model の簡単な説明とそれを Javasci…

Pytorch で DCGAN をつくったよ

DCGAN を二年ぶりに実装しました。 github.com いつも MNIST も面白くないので、 MNIST にアルファベットが加わった EMNIST をデータセットとして用いました。 www.nist.gov Emnist の画像例 こんな感じの画像が10万オーダーで格納されています。大きさは Mn…

Pytorch ことはじめ

0.40 の update もできて話題の pytorch を触り始めたのでその時のメモ。 出てくるコードはすべて以下のリポジトリの /notebooks/start で見ることができます。 github.com 参考資料 pytorch document http://pytorch.org/docs/stable/index.html pytorch tu…

ニューラルネットは何を見ているか ~ ブラックボックスモデルの解釈可能性

ディープラーニングによる予測は特に画像分野において顕著な性能を示していることはご案内のとおりです。これは ResNet や BatchNormalization といった技術の開発により多数のレイヤが重なった大きなモデルに対しても学習を行うことが可能になったことが理…

Pycharmの便利機能まとめ

ショートカット 一般 コマンド 内容 Shift + ⌘ + Delete 最後に更新した場所にジャンプ Shift + ⌘ + F7 現在開いているファイル内で、カーソルが当てられている変数が使用されている場所をハイライト。その状態で ⌘ + G を押すとつぎに使われている場所にジ…

Dockerによる深層学習及び機械学習環境構築

機械学習だろうがなんだろうが同じですが、環境構築するところだけで結構めんどくさいことが多いです。 今回はそのへんをまるっと管理できる仮想環境ツールのDockerを用いた環境構築の手順を記していきます。 目次 執筆環境 Dockerとは 機械学習を行う上でDo…

ニューラルネットにおける変数の初期化について

最近 keras をつかって色々とやることにはまってます。 tensorflow や chainer と比較して keras だとネットワーク記述から fit までが完結に記述できてとても気に入っています。 そのときにドキュメントや実装を読んだりもしますが、ネットで自分がやりたい…

本のクラスタリングをやってみよう - 吾輩は猫であるに近い本は何なのか

最近理論よりなことばかりやっていたので今回は実際のデータを使った解析をやってみます。 今回使うデータは、読書メーターからクロールさせてもらって作成した、ユーザーに紐付いた読書履歴のデータです。ユーザーごとに [だれの, どんな] 本を読んだかがわ…

ニューラルネットへのベイズ推定 - Bayesian Neural Network

ニューラルネットワークの過学習防止としてもちいられる Dropout がネットワークの重みに対してベイズ推定を行っていることに相当する、ということを述べた論文について紹介します。 くわえてそれを実装して簡単な実験をやってみます。 Ref 論文へのurl: htt…

機械学習のコード整理

タイトルのままですが、今まで適当に書いてローカルに放置してたりブログには書いたけどそのまま放置してたりしていたコードを一つのリポジトリにまとめる作業をしました。 まとめながら、昔書いたコードをいろいろと手直ししていましたが、ひどく密につなが…

Gpy vs scikit-learn: pythonでガウス過程回帰

Gpy と Scikit-learn Python でガウス過程を行うモジュールには大きく分けて2つが存在します。 一つは Gpy (Gaussian Process の専門ライブラリ) で、もう一つは Scikit-learn 内部の Gaussian Process です。 GPy: GitHub - SheffieldML/GPy: Gaussian proc…

scikit-learn 準拠の予測モデルのつくりかた

機械学習で色々やっていると、いろいろなモデルを複合したアンサンブルモデルなど、自分で新しい予測モデルを作りたい場合があります。 その場合自分でいちから作り上げても良いのですが、そうやって作ったモデルは、たとえば scikit-learn のパラメータ最適…

matplotlibで高校生っぽいグラフを描く

高校の時によくみたグラフをmatplotlibで書いてみたくなったので、やってみました。練習として初めてデコレーターを使って、プロットしたオブジェクトをいじって軸をあれこれするようにしてみました。 機能としてあるのは知っていたのですが、使ってみるとデ…

DCGANをChainerで実装

DCGANとは DCGANはランダムなベクトルから画像を生成するGeneratorと、画像が与えられた時にその画像がGeneratorによって作られたものなのか、本当の画像なのかを判定する関数Discriminatorでなりたっています。 DCGANのアイディア この2つの関数を相互に競…

PRML 10章の変分ベイズ法の実装

線形回帰に対する変分法を用いた計算について実装してみました。 コードは以下から github.com 変分ベイズではまず、隠れ変数も含めた完全データに対して同時分布を定義します。その後隠れ変数の分布が複数の関数の積として近似して表すことができる、という…

format記法の使い道

pythonでは変数の情報を文字列にする方法がいくつかありますが、その中でも僕はformat記法をよく使っています。 特に最近「dictionaryを文字列にしたいなぁ」という場合に、とてもきれいに書くことができるということを発見(というかドキュメントを読んで判…

pythonの自作モジュールimportで困ったこと

自作モジュールをimportしたい時 同じ階層にある時はsample.pyであれば import sample でやればOKです. でもあまりファイル数が多くなってくると,一定のまとまりでフォルダに入れて管理したくなります.そういう時は適当なフォルダにスクリプトを入れて,…

python の Xgboost を Windows で使いたい!

pythonをwindowsでやるなよ、という意見はごもっともですがでもやりたい時だってあるじゃん?なのでやりましょう。 環境 windows10 64bit 必要なものたち git bash MinGW-W64 pythonが使える何かしらの環境(Anacondaとか) git cloneする git bash を起動し…

pythonによる固有値固有ベクトル計算

pythonで固有値固有ベクトルを計算しようと思うと numpy.linalg (線形代数の便利関数のモジュール)以下にある numpy.linalg.eigs を使うことになります。 numpy.linalg.eig — NumPy v1.11 Manual この挙動が個人的な感覚とちょっとずれていて、そこでかな…

勾配ブースティングを実装してみた

勾配ブースティングとは 機械学習のアルゴリズムはいろいろなものがありますが、その中でも木構造を使ったアンサンブル学習の一つとして勾配ブースティング法と呼ばれるものがあります。 勾配ブースティング法は学習器を一つづつ追加していく加法的モデルと…

gitのコミットメッセージの書き方

git

最近ようやくgitをまともに使うようになってきました。 コミットメッセージの書き方がよくわかってなかったのでまとめます。 基本的なコミットメッセージのスタイル 英語で記述すること!! ピリオドなし 現在時制 文頭の単語は大文字から開始 基本フォーマッ…

PRML 第3章のEvidence近似

PRML第3章では、線形回帰モデルを扱っています。 その後半で、これまで固定だとしていた、重みwの分布の精度パラメータと、実際に観測される値tのモデルであるに現れるノイズの精度を表すの値もいい感じの数値にしちゃいましょうという話が出てきます。これ…

EMアルゴリズムについての殴り書き

EMアルゴリズムって何?隠れ変数が存在するモデルに対して、モデル変数を変化させた時に尤度関数を最大化させる方法の事.隠れ変数って何?実際に観測されないけれど、観測される値がどういう分布に従うのかを決定する変数のこと. 具体例で言うと、 回帰問…

ガウス過程による事前分布からのサンプル

前提条件 まず初めに目的変数は、ある重みのベクトルと、dataから得られた特徴ベクトルの線形結合であらわされるとします。 要するに となっているわけです。このとき、の事前分布が で与えられているとすると、ガウス分布の線形和もガウス分布なので、yの分…

pythonのメッシュ切りのやり方

pythonでグラフを書きたいときに、[-1,1]の範囲で等間隔にメッシュを切りたいなと思うことがあると思いますがそれのやり方メモ。 ## numpy.meshgridを使うやり方 ## (始まり、終わり、個数) X,Y = numpy.meshgrid(numpy.linspace(-1,1),numpy.linspace(-1,1)…

ギブスサンプリング:やってることのイメージ

統計の計算とかをやろうとすると、サンプリングという方法をとって計算をさせるという場面がよく起こります。どういうときに使うのかというと、例えば確率密度関数に従う確率変数zを引数に取るある関数の期待値が計算したい場合などです。この場合計算するべ…

Marsaglia法とBox-Muller法

一様分布からガウス分布を作るアルゴリズムとして有名なBox-Muller法というのがあります. 式としては、とした時に という変換を行う.これがBox-Muller ボックス=ミュラー法 - Wikipedia それと似たもので、一様分布する変数の範囲がちょっと変わってとし…