nykergoto’s blog

機械学習とpythonをメインに

PRML の本読みをしています @section3

最近(というか今日から) 会社でPRML勉強会をやっています。ふつう第1章からやるのが普通ですがPRMLはちょっと重たいので息切れすると良くないよねということでいきなり第3章から始めるという方針をとっています。*1 今回は僕が担当で、主に 線形モデルの導入…

Nelder Mead Method を python で実装

最近会社で Kaggle 本 Kaggleで勝つデータ分析の技術 の本読みをやっています。昨日は第二章でしきい値の最適化の文脈で Nelder Mead Method を使った最適化が記載されていました。ちょっと気になったので実装してみたという話です。 Nelder Mead Method と…

Kaggleで勝つデータ分析の技術: 今までの機械学習本と全く違う最強の実務本

この度光栄なことに著者の @Maxwell さんから「Kaggleで勝つデータ分析の技術」 を献本いただきました。 私事ですがこのような形で献本頂いたのは初めての経験だったのでとてもうれしくまた恐縮している次第です。 光栄なことに @Maxwell_110 さんからKaggle…

elasticsearch で cosine類似度検索する

全文検索エンジンで cosine 類似度検索できるらしいというのを bert × elasticsearch の記事で見かけてとてもたのしそうだったので、自分でも環境作るところからやってみました。 hironsan.hatenablog.com やっているのは以下の内容です docker/docker-compo…

連続変数で StratifiedKFold

pandas.qcut で int に変換すると良さげ from sklearn.model_selection import StratifiedKFold import pandas as pd def get_stratified_fold_split(X, y, n_folds=10, q=20): # Categorical.codes で各クラスに対応する int が取得できる y_cat = pd.qcut(…

RAdam: Adam の学習係数の分散を考えたOptimizerの論文紹介

表題の通り噂の最適化手法 RAdam の論文 On the Variance of the Adaptive Learning Rate and Beyond を読んだので, そのまとめです!! 概要 一言でいうと「今までヒューリスティックに行っていた Adam 学習開始時の LR 調整を自動化できるような枠組みをつく…

機械学習のための環境構築とその管理

機械学習プロジェクトでは python を始めとした言語 + それに付随したライブラリを使います。 僕も python 触りたての頃はローカルマシン上にひとつ python 環境を作り、必要なライブラリをインストールして使っていました。環境の分離ということはあまり意…

Kaggle Tokyo Meetup #6 の感想

はじめに この記事は nyker_goto 的な視点で kagge meetup の内容について思ったことなどをまとめた記事です。 内容の詳細に関してはえじさんが https://amalog.hateblo.jp/entry/kaggle-tokyo-meetup-6 にて素敵な記事(網羅性がすごすぎる)にとてもきれいに…

FFT を使った時系列データ解析

今回は音声データやセンサーといった波形データの解析によく使われるFFTを、時系列のデータにつかって傾向の分析をやってみます、という話です。 FFTとは FFT(高速フーリエ変換) はフーリエ変換 FT の高速版です。そのままですが。 めっちゃカジュアルに言え…

Adabound の final_lr と収束性について

みなさん optimizer は何を使っていますか? (僕は SGD + Momentum + Nesterov が好きです) adagrad/adadelta/adam などなど NN で用いられる optimizer は数多くありますが, 最近提案された optimizer に adabound というものがあります。 adabound はざっく…

画像の超解像度化: ESPCN の pytorch 実装 / 学習

画像の超解像度化シリーズ第二弾です。 第一弾 では NN を使ったモデルの中では、もっとも初期 2015年に提案された SRCNN を実装しました。今回はそれから一年後 2016年に提案された ESPCN を実装して学習させてみたよ、という話です。 ESPCN は Real-Time S…

画像の超解像度化をするモデル SRCNN を pytorch で実装してみた

画像の超解像度化というタスクがあります。 やることは低解像度(小さい画像)を高解像な画像に拡大するときにできるだけ綺麗に引き延ばす、というタスクです。 https://www.slideshare.net/HHiroto/deep-learning-106529202 ではDeep Learning の登場によって…

勾配ブースティングで大事なパラメータの気持ち

LightGBM や XGBoost などで使われている勾配ブースティングのパラメータについて、チューニングノウハウというよりもそのパラメータがどういう意味を持っているのか、に焦点をあててまとめて見ました。 各ライブラリのパラメータすべては以下から確認できま…

文章の埋め込みモデル: Sparse Composite Document Vectors を読んで実装してみた

自然言語処理である単語の意味情報を数値化したいという場合に単語を特定のベクトルに埋め込む(分散表現)手法として word 2 vec があります。 この word2vec と同じような発想で文章自体をベクトル化するという発想があり Doc2Vec やそのたもろもろも方法が…

Pandas で Index を dictionary で更新したい

pandas のデータフレームで以下のようなものが有るとします。 In [1]: import pandas as pd In [2]: import numpy as np In [3]: df_train = pd.DataFrame(data=np.random.uniform(size=(3, 2)), index=['one ...: ', 'two', 'three']) In [4]: df_train Out…

敵対的サンプリング検出のための基準としての相互情報量 - 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 を考えたモチベーション ニューラルネットワークがこの論文の主題です。 Rescaling 今、あるニューラルネットワークの $i,…

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 という機構が用いられているのはご案内のとおりです。 この Dropout 、見方を変えるとディープラーニングにおける重みのベイズ推定に相当しているのではないか、という内容が Uncertainty in Deep Learning…

機械学習のコード整理

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

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 のパラメータ最適…