Twitter APIの仕様変更のため、「いいね」の新規取得を終了いたしました

黒木玄 Gen Kuroki

@genkuroki

  • いいね数 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 を見て下さい。
並び順 : 新→古 | 古→新

2020年08月07日(金)

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語

pkg> add Plots
julia> using Plots

とすると、最初の1回目だけに生じる長時間のprecompileが実行される。そこは気にするべきではない。

2回目以降のusing Plotsにかかる時間が気になるならNightly buildのv1.6.0-DEVを試すと幸せになれるかも。

続く

twitter.com/KageAzusa/stat... twitter.com/kageazusa/stat...

タグ: Julia言語

posted at 10:05:49

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 重要なポイント:試行錯誤でコードを書いている最中に

julia foo.jl

で実行することをやめるべき。

foo.jlの中にusing Plotsと書いてあると、julia foo.jlを実行するたびにusing Plotsで待たされることになる。

私はそういう極めて不合理な行為をしていない。続く

タグ: Julia言語

posted at 10:10:08

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 最も素朴な解決法の1つ

julia> ]
pkg> add Revise
julia> using Revise
julia> includet("bar.jl")
julia> (((bar.jl中の函数の実行など))
bar.jlの内容を変更すると自動的にREPLに反映
julia> (((bar.jl中の函数の実行など))
bar.jlの内容を変更すると自動的にREPLに反映
julia> ……

タグ: Julia言語

posted at 10:13:46

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 REPL内でbar.jl内の函数bar(x)を実行する場合には(以下@の後の空白は除く)、

julia> @ time bar(1.23)

のようにすると、実行時間とメモリ割当が分かり、最適化の助けになります。

julia> @ code_warntype bar(1.23)

で型安定なコードを書けているかどうかを確認できます。

タグ: Julia言語

posted at 10:16:44

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 bar.jlの中にusing Plots.jlと書かれている場合に、using Plotsはincludet("bar.jl")を最初に実行したときにのみ実行されます。その後は待たされることがない。

タグ: Julia言語

posted at 10:19:56

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 bar.jlを書き始めたとき、using Plots; plot(sin)まで書いてすぐにincludet("bar.jl")を実行し、bar.jlの続きを書けば、その続きを書いているあいだに(v1.6.0-DEVなら数秒で)、using Plots; plot(sin)が終了しており、その後はすぐにプロットできます。

タグ: Julia言語

posted at 10:21:28

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 @ timeや@ code_warntypeなどの函数の改善に必須の情報を得るためには、REPL内での作業が必須。

あと、?でヘルプを読めることも極めて大きな利点です。

julia> ?
help?> @ code_warntype

(@ の直後の空白は削ること)

JuliaはREPLが非常に便利です。

タグ: Julia言語

posted at 10:24:59

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 別の解決法

IJulia.jlでJupyter notebookを使う。

Jupyter notebookは実行した結果の記録も同時に残したくてかつ小さな仕事をするのに向いた道具です。

最初のセルでusing Plots; plot(sin)を実行して、次のセルにコードを書き始めれば待ち時間は実質ゼロ。

github.com/JuliaLang/IJul...

タグ: Julia言語

posted at 10:29:42

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 最近ではVS CodeでJuliaを使うことが大流行中。

github.com/julia-vscode/j...

タグ: Julia言語

posted at 10:32:34

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 using Plots; plot(sin)などでの待ち時間の問題が仮になくても、@ timeや@ code_warntypeで状況を確認することは必須だと思うので、foo.jlを試行錯誤で書いているときに、julia foo.jlで実行することを繰り返すのは、ものすごく不合理な行為だと思います。

タグ: Julia言語

posted at 10:35:43

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 あと、

計算→結果をファイルに出力→別ソフトでプロット

のようにしているのをよく見ますが、試行錯誤の最中にメモリ中に計算結果が残っているのにファイルに出力するのは損です。

計算→ファイルを経由せずに直接プロット

の方が得。

タグ: Julia言語

posted at 10:45:18

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 試行錯誤の過程が終わってから、計算結果をファイルに保存しても遅くない。

タグ: Julia言語

posted at 10:47:01

黒木玄 Gen Kuroki @genkuroki

20年8月7日

再投稿

私は自分ちの子には

「問題中の数値を変えて簡単にした問題に挑戦してみよう」

とか

「問題を楽に解くためのコツは、解けと言われた問題だけではなく、解けと言われていない無数の問題を同時に解いてしまうことだ」

といつも言っています。さらに

「テストの点数はどうでもよい」(笑)

タグ:

posted at 11:04:33

黒木玄 Gen Kuroki @genkuroki

20年8月7日

あと、

「計算ミスをしてもよい」

とも言っている。

むしろ私の側がアホな計算ミスをしたら、子供に見せに行く。

大人だってできないこと(計算ミスをしないこと)を子供だけに要求しちゃいけない。

理解するための試行錯誤をできるようになってくれれば他のことはどうでもよいとさえ思っています。

タグ:

posted at 11:05:12

黒木玄 Gen Kuroki @genkuroki

20年8月7日

細かいミスに神経を使う余力があるなら、「問題を少し改変してより易しい問題に直してみる」というようなことに頭を使った方がよいです。

解けと言われた問題ではなく、改変して易しくなった問題を解いても意味が無さそうに思うかもしれませんが、そうではありません。むしろそこに極意がある。

タグ:

posted at 11:11:37

黒木玄 Gen Kuroki @genkuroki

20年8月7日

大学生に「問題の答えを見てもいいですか?」のような質問をされることがあるのですが、

「見てもいいですよ」

と即答する。ただし、

「でも、答えを見ても分かるとは限りませんよ。答えを見たらすぐに理解できるような簡単なことはやっていない」

と言ってしまふ。本当にやっていない。

タグ:

posted at 11:33:53

黒木玄 Gen Kuroki @genkuroki

20年8月7日

しかも、教科書の答えが間違っていることがよくある。

間違った答えが書いてある教科書を「これは非常によい本です」と紹介することもよくある。

人間だったら普通にやってしまう細かなミスが本質的であるような浅はかなことをやる気はまったくない。

タグ:

posted at 11:36:28

黒木玄 Gen Kuroki @genkuroki

20年8月7日

期末レポート提出の季節

絶対にやってはいけないことは、他人による仕事の結果を、まるで自分の力でやり遂げたことのように見せて、レポート内で利用すること。

これは研究者でもあるレポートの採点者を確実に激怒させる。これだけは絶対にやってはいけない。

タグ:

posted at 11:52:04

黒木玄 Gen Kuroki @genkuroki

20年8月7日

添削してみた。

❌地域住民→⭕️一部の地域住民

❌社会の求めで始まった→⭕️一部の人たちの求めで始まった

❌なんだかなあ→⭕️当然そうなるよなあ

一部の人たちの高校生に対する不当な要求を拒否することは高校の大事な社会的役割の1つだと思います。高校側が高校生を守るべき。 twitter.com/peoxaqp48w5ncu... pic.twitter.com/Id2iRFgAeX

タグ:

posted at 12:11:04

黒木玄 Gen Kuroki @genkuroki

20年8月7日

conversion_x氏曰く【大人の実務で見積書の類は「単価×個数=総額」と決まっている。】

さすがに大人の世界でそれを言ったら、「こいつ、本当は、見積書の類を書いたことがないんじゃないか」と馬鹿にされて終わり。

かけ算順序固定強制指導の擁護者の中にはこの手の社会常識がない人達がいる。 twitter.com/conversion_x/s... pic.twitter.com/zRLoMaB2W7

タグ:

posted at 12:41:24

黒木玄 Gen Kuroki @genkuroki

20年8月7日

賛成!

高校側は高校生の人権を守るために一部の地域住民の不当な要求を明瞭に拒否しないとダメ。

他人の人権について何も考えない一部の困りものの地域住民と一緒に高校側が高校生に不当な要求を押し付けることは、社会的に許されてよいことではない。

twitter.com/krwnkmtr/statu...

タグ:

posted at 12:46:50

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 Julia v1.4.2からそれ以後にかけて2D Isingのコードで速度劣化が起こっていることについて

github.com/JuliaLang/juli...

で指摘されている擬似乱数の問題と無関係なことを確認するために、函数の外で擬似乱数の配列を作ってやり直してみました(結果は添付画像)。

nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/bb2GCMLmxk

タグ: Julia言語

posted at 16:23:40

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 テストコードも整理して、全部で36行に縮めた。正方格子の2次元イジング模型のシミュレーションのシンプルなコードの例としても教育的だと思います。

nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/GVAk6VexlP

タグ: Julia言語

posted at 16:26:10

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 そのネタは、ちょっと面白かったです!

呼ばれる函数は同じ。次のリンク先の函数が最終的に呼ばれます。

github.com/JuliaLang/juli...

計算結果が変わるかどうかは実は @ simd の有無で変わります。続く

twitter.com/takuizum/statu... pic.twitter.com/yIWIertPZb

タグ: Julia言語

posted at 18:59:01

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 添付画像のように Vector{Flaot64} を Vector{Any} に変えると sum の結果が変わります。これはどうしてかという問題と1つ前のツイートのリンク先の問題は本質的に同じです。続く

nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/IW29OOzF3x

タグ: Julia言語

posted at 19:00:51

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 そこで添付画像のシンプルなコードを試してみましょう。

AはVector{Float64}で、BはAと中身が同じVector{Any}です。それらのmysumは等しい。

しかし、それらの計算速度は2桁も違います。Vector{Any}のmysumはものすごく遅い。Anyが悪さをしている。続く pic.twitter.com/yk4lJpnf5J

タグ: Julia言語

posted at 19:04:37

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 次に、1つ前の添付画像のシンプルなコードに @ simd を付け加えた総和函数を定義して実行してみましょう。

すると、総和がVector{Float64}のAの方だけ微小に変化します。simdが効いているからでしょう。

これが私の結論です。 pic.twitter.com/leS8x67pEs

タグ: Julia言語

posted at 19:07:44

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 以上の Any を Real にしても同じ。

普通は Vector{Float64} 型の配列を Vector{Real} や Vector{Any} 型に変換したりしません。

逆に、Vector{Real}型の配列の中身が全部Float64なら、Vector{Float64}型に変換した方がその後の計算が圧倒的に速くなります。

タグ: Julia言語

posted at 19:10:19

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 上の方の添付画像を見ればわかるように、最近の私は数日前のnightly buildのjuliaを使っています。

以前にそうしようとしたときには、nightly buildなせいで色々動かなくてあきらめたのですが、現在のv1.6.0-DEVはそうではないです。結構使えます。

特にusing Plotsが速いのがうれしい。

タグ: Julia言語

posted at 19:17:41

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 浮動小数点数の == だけではなく、< や > や ≤ や ≥ もバグの原因になりますよね。

実際に統計がらみの計算でやらかしたことがある。有限離散分布のP値の計算のコードがそれが原因でバグる。

twitter.com/bicycle1885/st...

タグ: Julia言語

posted at 19:20:09

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 例えば、有限離散分布distについて、観測データkのP値を

sum(pdf(dist, j) for j in support(dist) if pdf(dist, j) ≤ pdf(dist, k))

で計算するとバグります。理想化された状況では

pdf(dist, j) ≤ pdf(dist, k)

となっていても、浮動小数点数の計算でもそうなるとは限らない。

タグ: Julia言語

posted at 19:47:21

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#Julia言語 解決法

== の代わりに ≈ を使い、≤ の代わりに

⪅(x, y) = x < y || x ≈ y

を使う。これを知らないと統計がらみの計算における有限離散分布の取り扱いで失敗する。 pic.twitter.com/dk1XeSPG1S

タグ: Julia言語

posted at 19:53:34

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#統計 過去のデータにフィットできるから将来が予測できるというのは一般には誤り。

これは「尤度」=「モデルのデータへの適合度」を「もっともらしさ」だと決して思ってはいけない理由そのもの。尤度が高くても、そのモデルで将来をもっとらしく予測できるとは限らない。

twitter.com/kikumaco/statu...

タグ: 統計

posted at 20:07:30

黒木玄 Gen Kuroki @genkuroki

20年8月7日

#統計 「モデル内でデータと同じ数値が観測される確率(密度)」という「モデルのデータへの適合度の指標」にlikelihoodとう名前を付けた人はひどい失敗をやらかしてしまったものだと思います。

今さら、likelihoodという用語を別のより適切な用語に置き換えるのは無理。

タグ: 統計

posted at 20:11:42

黒木玄 Gen Kuroki @genkuroki

20年8月7日

学生時代に結構ありがちなのは

①教科書の練習問題が解けないので悔しいけど巻末の解答を見た。

②簡潔に解答が書いてあるが、ギャップが埋まらない。

③先生は「教科書もよく間違っている」と言っていた。

④このギャップが埋まらない解答は本当に正しいのだろうか?

⑤結局、解決せずに終わる。

タグ:

posted at 22:49:00

黒木玄 Gen Kuroki @genkuroki

20年8月7日

分からないときは本当に分からない。

答えを見た瞬間に分かる場合には「なんでこの程度のことを自分で思い付かなかったんだ!」となる。

ものすごく詳しい長い解答は読むのが大変。

他人の思考をフォローするより、ストーリーだけ確認して、詳細は全部自分でやった方が速いことが多い。

タグ:

posted at 22:57:48

@genkurokiホーム
スポンサーリンク
▲ページの先頭に戻る
ツイート  タグ  ユーザー

User

» More...

Tag

» More...

Recent

Archive

» More...

タグの編集

掛算 統計 超算数 Julia言語 数楽 JuliaLang 十分 と教 モルグリコ 掛け算

※タグはスペースで区切ってください

送信中

送信に失敗しました

タグを編集しました