元バイオ系

元バイオウェット系がデータサイエンスやらを勉強していくブログ。 基本自分用のまとめ。

neovimでAnacondaの環境ごとにpython補完させる

環境:Ubuntu18.04 LTS Anaconda (Miniconda) のインストール neovim用環境の作成 conda create -n neovim python=3 pip install neovim neovimのインストール sudo add-apt-repository ppa:neovim-ppa/stable sudo apt-get update sudo apt-get install neo…

Julia tips #10: マクロを使って動的に構造体を定義する

Juliaでゼロから学ぶDeep Learningという記事を書きました。 hotoke-x.hatenablog.com 実はこちらの実装、ほぼ本家のPythonそっくりになるように書かれています。 というのも私がDeep Learning初心者なので、自己流で進めすぎるとどこが間違っているのかわか…

Juliaでゼロから作るDeep Learning

もともとPython使いの自分には、ゼロから作るDeep LearningをPythonでやっても面白くない! ということでJuliaでやってみた。 速度が犠牲にならないように多少は考慮したつもりだが、本家Python版の方が速いかも。 なんにも考えなくても速度がでるNumpy凄い.…

Julia 小技集

完全に自分用 便利な小技をメモしていく 随時更新。 現在の環境 Julia Version 1.1.0 Commit 80516ca202 (2019-01-21 21:24 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) CPU: AMD Ryzen 7 1700 Eight-Core Processor WORD_SIZE: 64 LIBM: libopenl…

【初心者】Deep Learning用語まとめ

「ゼロから作るDeep Learning」を読んでいる。 一気読みできればいいが、そういう訳ににもいかないので簡単な用語を忘れることがある。 そんな時に本を開くのは億劫なので、ここに簡単な用語をまとめておく。 ニューラルネットワークに入る前に... パーセプ…

Windows10+Anaconda+PyTorch

Chainerを使いたかったけどWindowsは公式サポートでない上に、CUDA、cuDNNのインストールがやたら面倒くさい...。 他のライブラリでもっと簡単に使えるものはないかと探していたら、PyTorchならAnaconda経由で環境が整うらしいのでメモ。 linuxでもmacOSでも…

テンソルを使いこなしたい3(行列の行列微分)

hotoke-x.hatenablog.com hotoke-x.hatenablog.com の続き。 本記事ではテンソルの微分演算についてまとめる。行列の行列微分がややこしかったので、縮約記法で計算すればスッキリできるのではと思ったのが事の発端。ようやくここまで来た。 準備 スカラーの…

テンソルを使いこなしたい2(レヴィ=チヴィタ記号)

hotoke-x.hatenablog.com の続き。一気に書くとまとまりがないので分けた。 本記事ではエディントンのイプシロン(レヴィ=チヴィタ記号)についてまとめる。これにより、ベクトル積、行列式、三重積などがスッキリ表現できる。 エディントンのイプシロン(レ…

テンソルを使いこなしたい1(アインシュタインの縮約記法)

「ゼロから作るディープラーニング1」で、Affineレイヤの逆誤差伝播のために行列積の行列微分がシレっとでてきた。一旦書き下して納得はしたものの、行列の順序を意識しながら連鎖律を操るのはシンドイ。そこで、Einsteinの縮約記法でテンソルを扱えたらス…

Anaconda経由でTensorFlow (GPU)+Keras環境を構築する

タイトルの通りです。 これまでだと、GPU版TensorFlowのためにCUDA環境を構築するのがとにかく面倒でした。 良い方法はないかとググっていたら、Anaconda経由ですべてが完結するメチャクチャ簡単な方法を見つけたので紹介します。 以下の記事です。 Windows1…

関数の最適化について勉強メモ

ざっくりと最適化についてまとめる(少し詳しい目次程度)。 手法間のつながりとか流れを確認する用なので、内容には踏み込まない。 証明や細かい解説は書籍を参照すること*1。 間違いがあればご指摘ください。 勾配法 最急降下法 今いる地点の勾配(1階微分…

2次形式の最大値と最小値

前回の記事で、固有値と固有ベクトルについて書いた。 hotoke-x.hatenablog.com この記事中にある正方行列の対角化を式変形すると、行列のスペクトル分解(固有値分解)が得られ、これを使って2次形式の標準形が得られる。 正方行列のスペクトル分解(固有値…

固有値と固有ベクトル

固有値と固有ベクトルについてメモ。 何をしているかはわかっているけど、何が起きているかがわかっていなかった。 「固有」ってなんだよと思っている 行列の掛け算で何が起きてるのかイメージがわかない そんな人たちは参考になるかも。 数弱なので間違いが…

【数理統計】Fisher情報量とクラメール・ラオ下限(CR下限)

Fisher情報量って何なのか理解したかっただけ。 Fisher情報量がわかれば、クラメール・ラオ下限(不偏推定量の分散の下限)がわかる。 備忘録として簡単にまとめておく。 前提として、不偏推定量についてだけ考えるものとする。 不偏推定量に関してはこちら …

Julia1.0でマクロを@docしまくった

タイトルの通りである。 「Juliaのマクロ、全然わからん」 と思ったので、とりあえず@の後にtabを打って出てくるマクロすべてについて@docしてみた。

【Julia】Julia-1.0.0のProjectを試す【仮想環境?】

Julia1.0.0が遂にリリースされました。 仮想環境っぽいものを作って環境の切り替えができるようなので、試してみます。 Projectの作成 Anaconda Pythonではconda createコマンドで仮想環境を作れました。 Julia1.0.0ではProjectと呼ぶようです。 Anacondaで…

文献検索、管理、メモを1つの画面で完結させる

文献管理ソフトの紹介です。 以前にPaperpileが凄いって紹介をしました。 hotoke-x.hatenablog.com 個人的には好きなんですが、wordとの相性が悪い... もっと良いのはないかと思ってたらReadcubeがありました。 数か月使ったので良い部分を簡単に紹介してい…

JuliaでPRML:ベイズ曲線フィッティング

やってみた。 コードは qiita.com をかなり参考にさせてもらっています。 計画行列が自力ではうまく使えないので若干コードに不安ありです。

JuliaでPRML:多項式曲線フィッティング

Juliaの勉強も兼ねてPRMLの多項式フィッティングを実装してみた。 誤差関数書いたけど、今回は解析的にパラメータが出てくるので結局使っていない。 GAとかMCMCとかでパラメータ推定して性能見てみるのもいいかも。 計画行列をうまく使えるようになりたい。

【数理統計】ラオーブラックウェル化(Rao-Blackwellization)

理解したいのはこっちでした。 本質的には同じ問題だけど。 ラオーブラックウェル化(Rao-Blackwellization)は、条件付き期待値を利用して期待値を計算する方法です。 サンプルが独立なら、ブラックウェルーラオの定理より直接期待値を計算するより精度が良…

【数理統計】ブラックウェルーラオ(Blackwell-Rao)の定理

はい。 私がちゃんと理解したかった定理です。 復習したら見た瞬間理解したのですが、一応メモっておきます。 初学者向けの説明がなかなかネットに落ちていなかった(気がする)ので。 初めに行っておくと、この定理は 「十分統計量で条件づけた不偏推定量の…

【数理統計】最尤推定量とバイアス

尤度 尤度については hotoke-x.hatenablog.com を参照。 例によって離散か連続かはあまり気にせず書きます。 尤度関数とは、母集団分布からの独立標本が得られたとき、確率関数から同時確率関数を母数の関数と見た $$L_n (\theta | x_1, \ldots, x_n) = \pro…

【数理統計】尤度関数と十分統計量

勉強したことを自分なりにまとめたものです。 間違い等があれば指摘していただけると嬉しいです。 私は「せいきぶんぷ~?」、「のんぱらめとりっく~?」という状態から 応用を目指す数理統計学(国友 直人) で勉強しました。初学者が手を出すには敷居が高…

Julia tips #9: CVODE (Sundials.jl) の数値積分が終わらない時の回避方法

追記 どうやら、せっかく設定したhminは内部でフラグチェックが行われないようです。 solve関数のmaxitersオプションで対応するしかないかもしれません。 また後程検証してみます。 以下は検証が十分ではありません。 ソルバ自体の動作に支障はありませんが…

Julia tips #8: パッケージの追加に失敗したとき

自宅PCにDifferentialEquations.jlを追加しようとしたら以下のようなエラーが... julia> Pkg.add("DifferentialEquations") ERROR: resolve is unable to satisfy package requirements. The problem was detected when trying to find a feasible version f…

Julia tips #7: Juliaでプロットのlegendを手動で変更したい

Juliaのプロットにて、legendの変更で躓いたので色んなバックエンドで簡単に試してみた。 Plotlyでのプロットが消えてしまいましたが、まぁいいでしょう。 legendをプロットの外へ移動したい場合はどうすればいいんだろうか... 解決しました。 これではだめ…

Jupyter notebookのフォントを変える(Windows 10)

Juliaで下付き文字を使うときにあまりにも見にくかったので、フォントを変えて多少なり誤魔化したいというのが事の発端。 幾らでも情報は転がっていますが、ぱっと調べた感じだとWindowsでいじっているのを見かけなかったので、念のためのメモ書きです。 以…

Windows 10でJulia専用のPython仮想環境を作る

Juliaでは、Pythonを呼び出して使うことができます。しかし、何も考えずに使おうとするとMinicondaのPython 2.7がインストールされてしまいます(2018/02/01現在)。 そこで、Anacondaで作ったJulia専用の仮想環境を作って、その中でJulia用のPythonパッケー…

Julia tips #6: Multiple-Try Metropolisを実装してみた

Multiple-Try Metropolis (MTM)って? メトロポリス・ヘイスティングスの多数決バージョンです。 今いる場所から次の候補を複数生成し、その値周辺が今いる場所より尤もらしければ候補の中の1つへ移動します。 細かい話を書く元気がないので、理論的な背景は…

Julia tips #5: MCMC法(Metropolis-Haisting法)を実装してみた

JuliaにてMCMC法(Metropolis-Haistings法)を実装してみました。 コードの利用・改変・再配布は自由にして構いませんが、何か起きても責任は取りません。 一部いらない変数や無駄実装が混じってます。動作に問題はありません。バイオ実験系なので許して...…