黒木玄 Gen Kuroki
- いいね数 389,756/311,170
- フォロー 995 フォロワー 14,556 ツイート 293,980
- 現在地 (^-^)/
- Web https://genkuroki.github.io/documents/
- 自己紹介 私については https://twilog.org/genkuroki と https://genkuroki.github.io と https://github.com/genkuroki と https://github.com/genkuroki/public を見て下さい。
2018年01月17日(水)
Distributions.jl を使って確率分布をどのように定義をしたらよいかの解説をした方がいいのかな? フレームワークとして使える便利なパッケージであるためには抽象型の良いシステムを提供してくれていることが必須。
タグ:
posted at 00:05:58
ごまふあざらし(GomahuAzaras @MathSorcerer
#Julia言語 IsingModel Julia以外の言語でみんなも触ってみるといいでキュ.
タグ: Julia言語
posted at 00:11:35
#Julia言語 Distributions.jlが数学的には確率分布でないものも確率分布として受け入れてくれることを利用して、逆温度βの擬似確率分布を定義し、それを利用してMamba.jlパッケージで逆温度βのベイズ推定を私はやったことがあります。
nbviewer.jupyter.org/gist/genkuroki...
タグ: Julia言語
posted at 00:14:43
#Julia言語 現在のv0.6.2の型システムについては
qiita.com/antimon2/items...
に解説があります。この型システムがあってこそmultiple dispatchが有用になっているわけです。
本当は私はこういうことを話すような立場の人物ではなく、本当にどしろうとなんですけどね。
タグ: Julia言語
posted at 00:22:09
@shoji_arisawa 【1.そもそもf、r、dとは何なのか定義が書かれていない】
そう言われますか。
では改めて記しますが
「中学校以降のスタイルの 2πr になぞらえて書く場合と
小学校スタイルの (直径)×3.14 になぞらえて書く場合がある」
という話なのですが、これでご理解いただけますか? #掛算
タグ: 掛算
posted at 00:34:57
#Julia言語 以上は
gist.github.com/torao/d6b762eb...
がいかに理解していない人のポエムであるかを明らかにするための解説。
【計算科学方面のペラッとしたコード】と書いてあって「こりゃダメだ」と思った。Julia言語の科学技術計算用のパッケージの中身を全然見たことがないことは明らか。なめすぎ。
タグ: Julia言語
posted at 00:40:20
@shoji_arisawa 【πと書かなけれればいけません】
と言われても、私がふだん使っている物では無縁の話です。
また、「結果を何桁まで使うか」という設定も、遭遇した課題次第で 3.1416 などと、その都度、変えるだけの話です。
その中での話として、 #掛算 の順序は一方だけが正しいのですか?
タグ: 掛算
posted at 00:49:00
@MathSorcerer 私自身のプログラミング能力ではgccを使っても勝てませんでした。
nbviewer.jupyter.org/gist/genkuroki...
Mathtod.online で色々教えてもらってやっと勝つことができた。
Julia帝国軍は一国の力が強過ぎたので、gcc国側は連合軍を組むことになりました。そしてやっと勝利!
タグ:
posted at 00:56:20
@shoji_arisawa 【同じ円周という概念なら数式も統一しないと、ヒューマンエラーの原因にならます】
と言われますが、それでは
2×円周率×半径 と
直径×円周率 の
どちらか片方だけが正しいのですか? #掛算
タグ: 掛算
posted at 01:07:19
@shoji_arisawa 【そうです。そして、作っている仲間にだけ共有されていれば構いません】
そういう話でしたら、プログラムに入れる土台の情報源が、小学校レベルの物か・中学校以降の物か、で変わってしまうことになります。#掛算
タグ: 掛算
posted at 01:16:35
@shoji_arisawa 【いや、変わりませんよ。仲間内でちゃんと方針を決めておけばいいだけのことですので。】
それは、私は受け入れられない話ですね。
私の仕事場でそういう問題が生じたら、プログラムで表そうとしている課題の「タネ本」に従うまでのことですね。#掛算
タグ: 掛算
posted at 01:23:39
Juliaでは引数に関数が渡せるので、structで型を作って関数も突っ込んでおけばPythonのクラスっぽい使い方ができるな。まさかmoduleも渡せたりしないよな...そのうち確認してみよう。
タグ:
posted at 01:57:58
非公開
タグ:
posted at xx:xx:xx
@genkuroki ですよね。MetaPostは図も描けて計算も出来て精度も上がったけど図がメインだから微妙に辛いし遅いから。でも誰かやってればそれが一番楽なのだけど、、、
タグ:
posted at 07:13:57
#Julia言語 上の方で2D Isingのサンプルコードを公開。
多言語で実装する場合の重大な注意!
それは擬似乱数発生器の質と速さに気を配ることです。
Julia言語のデフォルトの乱数発生器はdSFMTです。
www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT...
質も速さもメルセンヌツイスターMT19937より上です。続く
タグ: Julia言語
posted at 08:21:27
#Julia言語 Xorshiftが速いことを知っている人は多いようですが(私も試しました、速いです)、Julia言語の乱数パッケージでは
Xshift64の使用はおすすめできない
となっていました。
github.com/sunoru/RandomN...
もしも使うならXorshift128以上ということになると思います。
タグ: Julia言語
posted at 08:33:27
@genkuroki C++でメルセンヌツイスタが使われるの、C++11から入った<random>でmtを指定した時なのでC++のデフォルトの乱数って言ってしまうと難しくないですか?標準関数入りしたのはめでたいのですが。
タグ:
posted at 09:06:11
#Julia言語 リンク先のように私の誤りでした。
私の頭は「最悪でもメルセンヌツイスターMT19937を使いたい脳」になってしまっています。さらにdSFMTの方がベター。
シビアなモンテカルロシミュレーションでは質と速さ両面で問題がない擬似乱数発生器を選ぶ必要があります。
twitter.com/yuk_ota/status...
タグ: Julia言語
posted at 09:16:41
以前、 #Julia言語 とgccでπのモンテカルロ計算で速度競争させたとき、最初私はgcc側でMT19937のソースをダウンロードして使ったのですが、それをdSFMTで置き換えたら3~4倍程度速くなりました。
nbviewer.jupyter.org/gist/genkuroki...
タグ: Julia言語
posted at 09:24:17
#Julia言語
twitter.com/tmnghryk/statu...
Xorshift法については
twitter.com/genkuroki/stat...
を参照。Xorshiftの64bit版はおすすめできないらしい。使うなら128bit版以上ということだと思う。Xorshiftは確かに速かったです。
タグ: Julia言語
posted at 09:29:30
#Julia言語 函数の型として
Function{DomainType, CodomainType}
のようなスタイルが(まだ)採用されていない理由をやっと見つけた。
github.com/JuliaLang/juli...
【The most obvious problem is what to do when f has more than one method.】
Julia言語はユニークで色々面白過ぎ。
タグ: Julia言語
posted at 09:47:12
繰り返しですが
「甲状腺癌の自然発生率は100万人あたり5人程度」という仮説を立てて、三県調査の規模に当てはめると、「ひとりも発見されない確率」が98%。
一方、「自然発生率は福島での発見率程度」という仮説を立てると、三県調査規模では「ひとり以上発見される確率」が60-90%程度
タグ:
posted at 10:55:46
「ひとり以上」と書きましたが、確率最大となるのは「ひとりかふたり」(このふたつのいずれかである確率は50%以上)なので、三県調査の結果と非常によく整合します
タグ:
posted at 10:59:58
ごまふあざらし(GomahuAzaras @MathSorcerer
@genkuroki 昨日のコードですがこちらの環境でもWindowsで動きませんでした.Windows10で動いたのを確認したものをノートブックとして更新しました.gist.github.com/terasakisatosh...
タグ:
posted at 12:28:48
非公開
タグ:
posted at xx:xx:xx
@MathSorcerer おお!めちゃくちゃ参考になります。
Numbaのparallel=True便利ですね。気軽に高速化できる。NumbaだとPythonのコードを改変しなくてよい点が良いと思います。
その代わり、Julia言語で書くときのように厳密に型を気にする必要が出て来る。続く
タグ:
posted at 15:00:23
@MathSorcerer (1) 1e10だと1.0×10^10で整数じゃなくなるし、i4 = Int32で10^10は表現できないので、その辺はどうなっているのでしょうか? 私は10**9に書き直して実行しました。
(2) parallel=Trueも落とした。
結果は
Julia → 8.0sec
Numba → 11.5sec
gist.github.com/genkuroki/b7ed...
タグ:
posted at 15:05:25
@MathSorcerer Numbaのparallel=Trueはいつでも使えてエラーが出ないみたいですが、2次元Isingはアルゴリズム的に並列化は非自明です。(単純な総和計算では自明に並列化可能。) たぶん、この場合は使っちゃいけないと思います。
しかし、Numbaはやっぱりいいですよね。
タグ:
posted at 15:10:10
@MathSorcerer 普段からPythonのコードを「整数と浮動小数点数を厳密に区別して扱う」のように書いておけばNumbaを入れるだけで100倍以上速くなったりする。
不思議なのは i4[:,:] (Int32配列)を i8[:,:] (Int64配列)にすると動かないことです。Numbaの型付け問題も結構難しい。
タグ:
posted at 15:12:36
ごまふあざらし(GomahuAzaras @MathSorcerer
@genkuroki 形式的にi8でできるようにpyising.py を更新しました。rand_ising2d の配列の型を.astype(np.int64) のように調節する必要があります。
gist.github.com/terasakisatosh...
タグ:
posted at 15:36:28
#Julia言語 では、函数f(x)のxの値の型が決まって初めてf(x)として何が実行されるか決まります。xの値の型が決まらないとf(x)の型は決まらない。このようなfをどのような型システムで扱うべきかという話がJulia言語界隈でされていたようです。
discourse.julialang.org/t/function-par...
タグ: Julia言語
posted at 15:53:50
JuliaでこれやろうとBase.:(==)(x::Int, y::Int) = trueにしたらREPLが死んだ。 twitter.com/hatebu/status/...
タグ:
posted at 15:55:25
ガウス波束を有限ポテンシャル障壁に打ち込むやつのシミュレーションをしました
青がポテンシャルの概形、橙が波動関数の絶対値の二乗
まずV(x)=0の場合 pic.twitter.com/Voitz0K6KM
タグ:
posted at 17:32:58
二分法を実装する機会があったのでせっかくだから Julia を使ってみた. forを書いても速いのは安心だ. gist.github.com/mashiroyuya/40...
#Julialang #bisection_method
タグ: bisection_method Julialang
posted at 18:07:44
ライセンスの話と言えば、Jupyter便利だから皆これでノート公開すると良い、って公演があったときにライセンスの事聞いたら認識怪しい感じだったのでアカデミアも他人事ではない
タグ:
posted at 18:14:55
ごまふあざらし(GomahuAzaras @MathSorcerer
すいません見逃してました。並列の部分忘れてください。。。。 twitter.com/genkuroki/stat...
タグ:
posted at 18:23:49
ごまふあざらし(GomahuAzaras @MathSorcerer
@genkuroki 私のWindowsPCでも概ね同様の結果が得られます。やっぱりJulia速い。
タグ:
posted at 18:26:06
ごまふあざらし(GomahuAzaras @MathSorcerer
CythonやNumba使えば Ising モデルのコードで#Julia言語 に速度で匹敵するかと思いきやことごとく打ちのめされてます。というのが1月のハイライト。
タグ:
posted at 18:48:17
「検診では子宮頸がん死亡は減らない」という主張もあれば、「20歳から定期併用検診を行えば、誰も子宮頸がんにはならない」という主張もある。どちらもHPVワクチン反対者の主張。対消滅しますように。どちらかが残るなら、検診を否定しないほうが残るのが望ましい。
タグ:
posted at 19:48:54
「検診で子宮頸がん死亡は減るけどゼロにはならない」というのが標準的な見解です。残念ながら、検診を受けていても子宮頸がんで亡くなる人はいます。ついでに言えば、こうした検診で防げない子宮頸がん死を何とかしようとして開発されたのが、HPVワクチンです。
タグ:
posted at 19:54:02
juliabox の tutorial みてたら、パフォーマンス計測のとこで @ とか $ の記号出てきて意味わからんかったけど、マクロ呼び出してるのだった。
タグ:
posted at 20:36:31
@Annihilated_Uni いろいろ良さがあるらしい(分かってない)
取りあえずギリシャ文字や日本語も変数名などにつかえるし行列ベクトルの演算もサクッと書けるので可読性がかなり高くなる
計算速度も速いので(Pythonよりもかなり速いらしい)シミュレーションには向いてると思う
タグ:
posted at 20:38:07
@Annihilated_Uni パッケージ(モジュール)の充実度はPythonに敵わなさそう
(とはいえPyCallでPythonのコード呼べるけど)
あと流行りのPythonとはググったときの情報の充実度がまるで違うという体感
タグ:
posted at 20:40:59
julia のマクロ、LISPみたいなことできるらしい。ASTで構文扱ったり。gensymでシンボルの重複対策しなくてもマクロの引数は自動的に重複回避でリネームされるみたい。esc()で囲むとマクロに記述したシンボルのままで展開。取扱注意。
タグ:
posted at 20:43:35
@Annihilated_Uni んー、スクリプト言語だからある程度仕方ないと思うけど
Juliaは just-in-time (JIT) コンパイラなるものでいい感じにしてるらしい
タグ:
posted at 20:48:28
ごまふあざらし(GomahuAzaras @MathSorcerer
#julia言語 NumbaでもJuliaのスピードに負けてしまう。悲しい。頑張れPython。
タグ: julia言語
posted at 21:25:32
晩酌しながら挑戦。Rubyだと最後のテストケースで時間オーバー。アルゴリズムはあっていると思うので、明日C言語で再挑戦したいと思います。| 極めよプログラミング道!【実力判定:Sランク】その2 codeiq.jp/q/3333 via @codeiq
タグ:
posted at 21:27:31
@maehrm 今日は #Ruby から #Python を越えて #JuliaLang へ♬ ではないのかと…
posted at 21:34:01
Numbaがんばって欲しいね。NumbaもLLVM使ってるならJuliaとの速度差は最適化の違いってことなんかな。 twitter.com/MathSorcerer/s...
タグ:
posted at 21:52:09
koji hasegawa @myfavoritescene
Serre-Grothendieck 読んでないけど、この中で出てくるG先生の東北ペーパーはセールが仙台に来た時こんなのがあるって淡中先生に見せたら、東北数学雑誌の編集委員でもあった先生がそれを勝手に預かって(奪い取ってw)まあ長いし載せてもらえばいいか。。ってなったらしいw>RT
タグ:
posted at 21:55:46
統計物理学懇談会の講演者リストを作っていて、今年は偶然にも渡辺さんがお二人ということに気づいた。しかも二人ともぼくの友人だ。
ただし、澄夫さんはぼくの同級生、悠樹さんはぼくの子供と同世代。お二人は文字通り親子ほど年齢が違うんだよね(親子とかじゃないよ)。
www.gakushuin.ac.jp/~881791/spm/20...
タグ:
posted at 22:09:13
非公開
タグ:
posted at xx:xx:xx
#Julia言語 Mumba.jlのMCMC用の確率分布を定義するときには@ everywhereしておかなければいけないという縛りがある。その理由はjuliaを -p auto をつけて起動しておくと、複数の鎖を並列処理で作ってくれるからだ。Mumba用の確率分布の定義の仕方の解説は
mambajl.readthedocs.io/en/latest/mcmc...
にある。
タグ: Julia言語
posted at 23:03:14
#Julia言語 Distributionsパッケージでの確率分布の定義の仕方は
juliastats.github.io/Distributions....
に書いてある。重要なポイントは次も読んでおくこと:
docs.julialang.org/en/stable/manu...
の表の Available for method extension の部分。
タグ: Julia言語
posted at 23:11:36
非公開
タグ:
posted at xx:xx:xx
四十何年か前の駒場ゼミ。駒場で本郷予備軍の先生が自分の趣味で教養学部1、2年生に数学科大学院レベルのゼミを開いていた。オレは1年で入ったが、そのときに東北ペーパー(長文仏語)をやらされた。そのときなぜ東北大なのか不思議に思ったけど、そういうことだったのか twitter.com/myfavoritescen...
タグ:
posted at 23:34:46
確かに友達がメルカリだ仮想通貨だ言ってる中「Juliaおもしろそー」「この論文すげー」とか言ってる自分がもうちょっとお金に興味持てればと思った twitter.com/eman1972/statu...
タグ:
posted at 23:40:53
@tsatie @genkuroki JuliaでなくMathematicaですが、昔こんなのを描きました。 pic.twitter.com/D81phsJMtN
タグ:
posted at 23:54:42
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx