黒木玄 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 を見て下さい。
2021年07月11日(日)
ルーペ使ってデジタル作画をするすがやみつる先生の近影がサイバーパンク物のメカニック店主みたいな風合いが出てて味わい深い pic.twitter.com/2MDhyqWZWo
タグ:
posted at 01:23:38
これはルーペではなく、エンハンラボという会社が出しているウェアラブル・ディスプレイなんです。グラスの中にパソコンの画面が見えているので、資料を見たり、指導する学生の作品を見たりしながら、手もとの作業もできる優れものなんです。詳しくは、こちらで。
beyondglasses.jp twitter.com/hell_z_syouji/...
タグ:
posted at 01:48:31
ルーペじゃなくてウェアラブルディスプレイで更にハイテクだった! すがやみつる先生ご本人にまで届いてしまった上にご指摘まで頂いて恐縮です。 道具もSNSも自分は思った以上に未来に来ていたのを痛感。無知でお恥ずかしい。
twitter.com/msugaya/status...
タグ:
posted at 02:05:38
I give you: cat graph!🐱
Fun #Twitch stream today working on #JuliaLang #DataScience and #OpenSource! Reviewed work by #Javis #gsoc student, Debabrata Mandal, on graph networks and data from @CDCgov!
Also, got a fantastic tea recipe from @aftonsteps that I am excited to try! pic.twitter.com/YTfY78RgY9
タグ: DataScience gsoc Javis JuliaLang OpenSource Twitch
posted at 03:17:19
Here is how we can use the Bernoulli distribution in #JuliaLang with the simple, but powerful, coin toss example we have probably encountered before: twitter.com/3210jr/status/... pic.twitter.com/lGp8RuMxPp
タグ: JuliaLang
posted at 03:18:01
Results of the plot should look something like this: pic.twitter.com/6pfF2QbknS
タグ:
posted at 03:19:32
I’m having too much fun with this: here’s some scattering of a wave packet off a lattice under Schrödinger evolution. (The lattice is not an accurate sim of atoms, it’s just disks of a high potential) pic.twitter.com/1QJajvYCSu
タグ:
posted at 03:49:30
Taking your robot for a walk. Cool blog and animation from @SimonDanisch
nextjournal.com/sdanisch/takin...
#JuliaLang
タグ: JuliaLang
posted at 05:35:57
Michael P.H. Stumpf @theosysbio
What are your experiences with #julialang as a biologist? What would you like to know or learn? Please tell us.
@Roesch_E is organising a birds of a feather session on Julia for Biologists at @JuliaConOrg : 10 Survey Questions
Please RT docs.google.com/forms/d/1D3cZS...
タグ: julialang
posted at 07:06:49
その子に教えるべきは、どれが横でどれが縦か、であって、掛け算の順序ではない。
直方体に関しては、私自身、縦と高さがよく分からない。鉛直方向って、縦?高さ? twitter.com/paladin1st/sta... pic.twitter.com/L91v8EMa9g
タグ:
posted at 07:40:47
Also one of my favorite features of #JuliaLang! Check out how nice the code is in github.com/mossr/Beautifu...! twitter.com/wilton_quinn/s...
タグ: JuliaLang
posted at 07:53:50
Mathematics, Physics.
This is Dr. Matthew Henderson's (@matthen2) animation modeling a lightning strike by finding the shortest path in a random maze, first by sending out a frontier through the maze, and tracing it back . pic.twitter.com/c2y8RqjXSB
タグ:
posted at 08:32:43
Alright, I'm late to the party, but I recently got access to GitHub Copilot and I'm just writing some #julialang code that's fairly repetitive (wrapping a C library) and for this purpose it's quite amazing.
タグ: julialang
posted at 08:36:24
It correctly generalized a pattern I was doing to other parts of the library that followed the same API pattern (but I hand't read yet) as well as to a part I'd already written, but didn't realize fit the same pattern.
タグ:
posted at 08:36:25
As for the copyright controversy, I mostly view written code as a net negative, other than for documentary purposes, so I welcome with open arms any programmer productivity tool that actually helps people, which this Copilot seems to clear easily from my limited experience.
タグ:
posted at 08:36:25
Re, the last tweet here's an example from today: It wrote the list of functions and the argument suggestion here is also entirely correct. Very cool! This would be very hard for. a static analysis to figure out, because you need to read both the C Code and understand context. pic.twitter.com/5pm0KP6At3
タグ:
posted at 08:40:06
Or to say it another way, I see programming as a collective struggle against the oppressions of complexity and chaos, so we might as well get the machines to help.
タグ:
posted at 08:40:54
消えたボタンは再作成して、下の修正で対応。
For Each s In graphSheet.Shapes
If Not s.Type = msoFormControl Then
s.Delete
End If
Next pic.twitter.com/4whPNr8G4U
タグ:
posted at 08:58:59
CORRECTION: as @msjgriffiths & @michaelaye have pointed out, pandas work the same in the JSON case.
So I've chosen a bad example to showcase Julia's composability.
Apologies. I did lack some forethought & pandas knowledge.
1/3
#julialang twitter.com/evalparse/stat... pic.twitter.com/Zqg20QZGEB
タグ: julialang
posted at 09:36:33
@msjgriffiths has shown a better example with JSON.
Additionally, I'd like to highlight that, for example, JDF, CSV, DataFrames work well together without knowing about each other. They just agreed to follow the Tables.jl interface.
2/3
タグ:
posted at 09:36:34
Otherwise, all 3 pkgs are separate and hence modular but work as a whole if you choose to use them in the same project.
3/3
タグ:
posted at 09:36:34
tsujimotter 日曜数学者 @tsujimotter
日曜化学シリーズ番外編として、良い感じに水素原子の電子雲の可視化を行う手法を紹介する記事を書きました!
日曜化学(2.5):メトロポリス・ヘイスティングス法を用いた電子雲の可視化(Python/matplot) - tsujimotterのノートブック
tsujimotter.hatenablog.com/entry/metropol...
タグ:
posted at 11:39:16
ここ数日自動微分技術の基本的なアイディアについて勉強したので、メモも兼ねて自分の言葉でまとめてみます。基本的には、僕が勝手に尊敬しているMike J Innesさん(github.com/MikeInnes)の"Differentiation for Hackers"(github.com/MikeInnes/diff...)と彼の論文(arxiv.org/abs/1810.07951)のまとめ 1/n
タグ:
posted at 12:45:39
"Differentiation for Hackers"はシンボリックな表現に対する直感的な微分器の実装から始めて、色々な自動化の方向性を紹介するっていう内容。微分自体はチェインルールさえ理解すれば実装は難しくなく、ホスト言語の元プログラムからいかにして微分可能な表現を得るかという点が自動化の核となる 2/n
タグ:
posted at 12:45:39
順方向に連鎖律を適用する場合、ホスト言語のプログラム実行の流れに沿って伝播できるので、operator overloadingさえ利用できれば実装が簡単で最適化もしやすい。一方で一入力に対してしか微分を伝播させられないため、MLなどの応用場面でよくある高次元入力に対しては効率が悪くなってしまう。 3/n
タグ:
posted at 12:45:39
ただクロージャにキャプチャされた変数の扱いが面倒(多分ここでも伝播を繰り返す必要がある?)。よく出てくるデュアル数は一見ただの実装上のテクニックに見えるけど、微分の定義との関係性は深淵で面白い。
逆方向に伝播させる場合計算量が出力次元に対して比例するためMLなどではこちらが一般的 4/n
タグ:
posted at 12:45:40
ただホスト言語のプログラム実行をそのまま使うことができないので、元プログラム中の計算を大幅に簡略化した表現を部分評価によって得てそれを微分するのが基本的な方針らしい。その表現は自動微分の文脈だと一般に"Wengert list"と呼ばれるが、ML界隈では"graph"と呼ぶらしい 5/n
タグ:
posted at 12:45:40
部分評価の仕方によって、静的に計算グラフを得る("Static Declaration")と動的にWengert listを構築する("Eager Evaluation")という大きく2つのアプローチに分かれる。それぞれの代表例としては、TensorFlowは前者で、PyTorchとかChainerは後者に属する。 6/n
タグ:
posted at 12:45:41
この2つの間のトレードオフは、効率的に動作させたい(static declaration) vs. 動的なcontrol flowなども含めてホスト言語の機能を自動で計算グラフに変換したい(eager evaluation)というもの。とはいえさっき挙げた代表的なライブラリだといずれもハイブリッドっぽくなっているらしく、 7/n
タグ:
posted at 12:45:41
最近だとTFもeager evaluationをサポートしてるらしい(towardsdatascience.com/pytorch-vs-ten...)。
とはいえ、これらのアプローチはいずれにせよ独自の表現から逆伝播を行うため、既存のコンパイラ資産のスムースな利用とか、ホスト言語の意味論から得られる情報を用いた最適化とかがやりにくいっていう欠点がある 8/n
タグ:
posted at 12:45:41
であれば、元プログラムを簡略化した表現ではなく、元プログラムを*そのまま*変換した表現に対して微分すれば、それらの欠点が解決できるじゃん、っていうのが"Don't Unroll Adjoint: Differentiating SSA-Form Programs"のアイディア。つまりSSA表現に対して微分を行えれば、素直に最適化ができる 9/n
タグ:
posted at 12:45:42
SSA表現を微分する上で考慮すべきものは、いかにしてcontrol flowを扱うか、autodiffの視点で言うといかにして複数回代入/参照される変数を扱うかという点。結論としては、スタックにiterationごとの変数の状態を記憶しておくという解決方法を提示している 10/n
タグ:
posted at 12:45:42
あとはプリミティブな要素に対して言語それぞれの意味論に沿って微分を定義してあげるだけで実装できる...
というアイディアの実装がgithub.com/FluxML/Zygote.jlであり、Zygote.jlは理論的にはJuliaの最適化の恩恵をそのまま利用することができる! 11/n
タグ:
posted at 12:45:43
ちなみに、JuliaのSSAではなく、LLVMのSSAを微分したらLLVMを利用しているいろんな言語で自動微分できるし最適化もしやすいよ、っていうのが僕の上司のValentin氏が書かれたEnzyme(arxiv.org/abs/2010.01709)のアイディア(理解が正しければ) 12/n
タグ:
posted at 12:45:43
Keno氏が今度のJuliaConで発表しようとしているDiffractorは、Juliaの型推論で得られる型情報をうまく利用しながら自動微分のコンストラクト(adjoint code)を作ることで、そうした問題を解決しようとしているもの(Zygote.jlが利用しているat-generated関数は型推論後の型情報を利用できない) 14/n
タグ:
posted at 12:45:44
...で前置きが長くなりましたがなぜ自動微分をちょっと勉強したかの背景を説明しますと、僕が最近取り組んでいるJulia compiler-pluginプロジェクト(hackmd.io/bVhb97Q4QTWeBQ...)は、そうした型推論後のコードに対する変換をしやすくするためのコンパイラインフラの整備を目標としているためなのです 15/n
タグ:
posted at 12:45:44
すでにDiffractorは動いてるので、今の状態でもKenoには十分使えるんだろうけど、まだみんなが簡単に使える状態ではないので、まずはあんまJuliaのコンパイルパイプラインのことをよくわかってない僕が勉強しながら簡単に使えるくらいの状態に整備しようとしています 16/n
タグ:
posted at 12:45:45
Its super easy going from research to code with #julialang !
An example, taking the function composition notation of the statement "g is equal to running h after f" we can write the following: pic.twitter.com/oezRXMVQr4
タグ: julialang
posted at 15:32:00
reading: kv - a C++ Library for Verified Numerical Computation
verifiedby.me/kv/
タグ:
posted at 15:35:49
@a_kawashiro JuliaレベルでJulia SSAを受け取ってJulia SSAを返す。んだけど、追加で、変形以外にも型推論自体に直接介入できるようにする(JETがやってることと同じ)。
自動微分でadjointをいちいち生成するのは手間がかかるので、推論に介入してスマートにadjointを挿入するっていうモチベがあるらしい。
タグ:
posted at 17:00:45
高次元入力&低次元出力の場合に順方向での効率が悪いことは、3個以上の行列のかけ算を考えれば分かり易いと思います。
添付画像は行列A,B,Cがそれぞれ10×1000,1000×1000,1000×10000の場合の(AB)CとA(BC)を計算しているのですが、後者(順方向微分に対応)は前者より10倍遅い。
github.com/genkuroki/publ... twitter.com/kdwkshh/status... pic.twitter.com/A2ReBNhuvv
タグ:
posted at 17:48:10
微分のchain ruleは線形写像の合成の1つの表現に過ぎず、線形写像の合成は行列で積で表現できるので、連鎖率の合成の計算は行列の積の話になります。
この辺は数学的に色々抽象化できるところで、ツイッター上で漏れている情報を見ると、Diffractorでは実際にそういう考え方もしているっぽい。 twitter.com/kdwkshh/status...
タグ:
posted at 17:54:56
コンパイラ技術のような離散数学的な世界に、微分のような幾何的な事柄をどのように効率的に組み込むか、という問題。
微分を含まない標準的な通常のコードの解釈を、微分の情報も含む非標準的な解釈に拡張する話。
組み込むと良い事柄にはおそらく微分にも沢山あって、今後の発展が楽しみ。
タグ:
posted at 18:05:23
メモ:3時間前に測った体温は37.0°C
熱が下がり切らない。
昨晩は怠くて微妙な苦しさを感じていたが、3時間前の時点で主観的にはかなり調子がよいので(例えば食欲が復活した)、熱が下がり切ったと期待しながら体温を測ったが、37.0°C.
メモ:上の段落を書きながら測った体温は37.0°Cで変化なし。
タグ:
posted at 19:19:30
【なぜなら「教科書にそう書いてあるから」!】は相当にひどいまとめ方。
正直、かなりあきれた。
「2を3回たす」は誤解を招く言い方で、現代の算数教科書にそんな言い方の説明が書いてあるの?
正確な引用に基かない批評はトンデモの温床。 twitter.com/ookubotact/sta...
タグ:
posted at 19:35:31
東京書籍の小2算数教科書より
【6×4の答えは,6+6+6+6の計算でもとめることができます。】
常識的に正しい説明。非常識なかけ算順序に関するローカルルールを導入していません。
教科書にこのように書いてあるという理由でかけ算順序でバツを付ける先生はおかしいです。
twitter.com/genkuroki/stat... pic.twitter.com/pQwUCpB5on
タグ:
posted at 19:44:48
数学的に正しい1つのスタイルややり方が教科書に書いてあったときに、それ以外のスタイルややり方を否定していると解釈するのはどうかしている。
教科書出版社が教師にかけ算順序でバツをつけてもらうためにはその指示を明瞭に出す必要がある。
しかし、教科書そのものにはそういう指示はないです。
タグ:
posted at 19:46:57
教科書出版社は文科省の教科書検定があるので、算数の教科書には非常識な指示を書くことは避けると予想されるし、実際に避けています。
その代わりに、教科書検定と無関係に、教科書のマニュアル本(教師用指導書、一般人購入不可)の側でより明瞭な指示を出しています。
タグ:
posted at 19:49:08
以上のような事情は約10年前からツイッター界では知られていました。
算数の教科書そのものよりもそのマニュアル本(一般人購入不可の教師用指導書)がひどい。
以上のような理由で、教科書検定に問題があるという結論ありきで、かけ算順序問題を扱うと確実にトンデモ化すると思います。
タグ:
posted at 19:51:18
違います。
8÷2(x+1)として計算してからxに3を代入したらどうなりますか?
8÷2(3+1)の式は
8÷2×(3+1)=16
8÷{2×(3+1)}=1
のどちらであるか判断できない、が正解です。 twitter.com/85fjkk3ma3d9x2...
タグ:
posted at 22:48:27
これ、確実に1と答えさせたかったら8÷{2(3+1)}って書かなきゃダメでしょ。問題の書き方が悪い。 twitter.com/85fjkK3ma3d9x2...
タグ:
posted at 23:07:04