失われた対数の技術を学ぶ!アナログツールの魅力と数学の楽しさとは
引用元:https://news.ycombinator.com/item?id=43356314
対数の本来の動機を考えると、学校で教えられるよりも納得できることが多いよね。ナピエが直面した大きな天文観測の乗算問題を簡単にするための関数形、f(ab)=f(a)+f(b)がどうして特定の関数群につながるのかを考えると、対数がどこにでも現れる理由がよくわかる。これに対し、対数を指数関数の逆として教えるスタイルはフラストレーションを感じることも。教える際には、その問題を解決するために著者が何を使っていたかを考えると、数学を学ぶのがもっと面白くなると思う。
Toeplitzは『Calculus: The Genetic Approach』を書いていて、数学の歴史的発展を通じて説明するアプローチが広く使われているみたい。フェリックス・クラインも言っているけど、学習者は小さなスケールで常に科学が大きなスケールで経験した発展を繰り返す必要があるよね。
このスタイルは高度なコンピュータ教育にも役立つと思う。アーキテクチャがどこからともなく出てくるようには思わない方が良い。機械式計算やユニットレコード機器から始めるのがすごく理にかなってる。そして、ユニットレコード機器は本当にクールだった。
すごいね。でも、最初の職場で細かいことに注意を払った人は多くなかった。私の周りでチャネルプログラミングに挑戦したのは2人だけだったよ。
数学を年表順に扱った本やコースがあればいいのにと思う。歴史の初めからの数学的トピックと、ピタゴラスの定理、ユークリッド幾何学、代数、微積分、集合論、数論の順に学んでいきたいな。でも、多分そういうのはすでにあるのかもしれないけど、あまり調べてない。
Lancelot Hogbenの『Mathematics for the Million』は、数学とその歴史を扱っていて、なぜそれが何世紀にもわたって発展したのかを解説してる面白い本だよ。まず数字、その後幾何学、算術、三角法、代数、対数、微積分の順に進むから、すごく興味深いと思う。
私も同じことを言おうと思ってた!何年も前に買ったけど、特定のアル・アインシュタインの引用が裏表紙にある数学の本って、そうそうないよね。モリス・クラインの『Mathematics for the Nonmathematician』も似たようなアプローチをとっていると思う。他にも、チャールズ・ペッツォールドの『Code』やジェームズ・グレイクの『The Information』もおすすめ。全体的ではないけど、重要な数学的洞察が時系列で扱われているから。
その気持ちはわかるけど、はっきりとした歴史的年代順ではないよね。例えば、古代エジプト人はピタゴラス以前に代数と微積分に取り組んでいた部分があるし、中国やインドは全然異なる年代を持っているから。
意味のある年代順を選ぶべきだね。西洋の考えがどのように積み重なってきたのかは見えるけど、古代エジプト人や中国のアイデアの発展はよくわからないから、学習者に説明するのは難しい。もしその単一の世界観が学習者の展望を歪めるのが気になるなら、その時代の他の文化からの似たようなアイデアについても説明できるし、興味深い考え方を促すチャンスになるよ。
これは昨日HNで議論されてて、かなりの好評を買ってたよ:>”これがどういうものか知っておくと、教えるときに役立つかも。”
ストレートラインの概念から始まって、最終的にストリング理論まで辿り着く本だよ。Roger PenroseのThe Road To Realityは、ほんとに素晴らしい本で、今でも挑戦され続けてる。
数学の記法について何も知らなくても大丈夫な本があれば良いスタートになると思う。3冊数学の本買ったけど、どれも最初の章でやめちゃったんだ。
ちょっと間接的だけど、これが君の探してるものに合うかもね。https://bogart.openmathbooks.org/ctgd/ctgd.html
そして、”Mathematical Notation: A Guide for Engineers and Scientists”って本も見つけたんだけど、君の問題に直接応えてるみたい。
問題は、すべての記法を明示的に学びたくないんだ。リアルな世界で使う関連トピックを徐々に学んでいきたい。
ちょっと確認させて。記法を全くスキップしたいのか、それとも理解を助けるものがもっと欲しいのかい?
最近、Mathematics for the Nonmathematicianって本を読んだよ。歴史的な発展が詳しく書かれていて、数学者たちのキャラクターも描かれてるから、理解が深まるね。
Devlinの本、”Mathematics: The Science of Patterns”も俺には似たような体験をもたらしてくれた。学校での教え方より遥かに良かったと思うよ。
これは中心に置くべきだと思う。”magnitude notation”を提案するよ。数学の初心者を避けるために、logarithmって言葉は使いたくないんだよね。基本的な概念が数学を簡単に、楽しくするんだから。
>私はこれを中心に据えるべきだと思う。だからこそ”magnitude notation”を提案するよ。logarithmって言葉は人を遠ざけるだけさ。結局、これが便利だと認識されるようになったら同じことになると思う。
これは^6のように書かれて、”mag 6”のように発音されるんだ。地震みたいに聞こえて、”logarithm”よりずっと簡単でかっこいいんだよね。
実際には「logarithm」って言う人は少なくて、「log」か自然対数は「lun」っていうのが多いよね。どっちも一音節で発音しやすいしさ。マグニチュードって概念は大事で、新しい意味を持たせると混乱しちゃうからね。 3.1mのlogは6.5。”10^6.5”は「mag 6.5」って言う。リヒタースケールでも「mag 6.5」って使われてるし、混乱があったとしても乗り越えたから、これでほぼ全てをカバーできるよ。 logarithmが難しそうなら、「log」って言えばいいと思うよ。これは悪くない考えだ! これについてよく考える。数学の教育は抽象的に考える賢い人たちを引き寄せるべきだと思うけど、他の人は問題を掘り下げないと理解できなかったりするよね。 数学教育は確かに数学者を育成するためには必要だけど、抽象的に考える人向けなんだよね。カリキュラムを作ってる人が実際の数学の応用にあまり熟練していないのも気になる。 ぶっちゃけ、幾何学に入る前に積分計算を知っていたら楽だったな。公式のパターンをつかめる気がしていたけど、全然理解できなかったんだ。球の体積の公式を覚えるのには積分の方が簡単だったよ。 数学は実際の問題を考慮して教えられることが稀で、むしろそれは工学の分野だよね! これが難しいところだよね。抽象と具体を異なるものとして扱うのはいつも苦労だった。両者の間で行き来することが大事なんだ。 同感だ!単位ってめっちゃ役立つ考え方だよね。最近、金融プロセスのモデルを単位で解決しようとして苦労したんだけど、”お金の色”を単位として考えたら、どの操作が妥当か考えるのが楽になった。 まったく同意。この子が数学の授業で、たとえば微分を意味不明な変換のセットとして覚え、物理の授業でやっとその有用性に気づくってのは悲しいよね。プログラミングの授業も1年目でAPIをずっと覚えて、2年目でそれが絵に使えるって気づくのと似た話。 やっぱりログは指数の逆ってのが分かりやすいよね。10^2かける10^3は10^5になるって直感的に理解できるし、ログ表使うと足し算がスムーズだし。文章はいらないよ。ログを取って2たす3は5になるから、元に戻すと10^5だよ。 インドでは11歳と12歳の時に計算機ナシでログを使って大きな掛け算や割り算を常にやってたよ。 ちなみに、掛け算を足し算に変える別の関数があるんだ。f(x)=x^2/2で、a*bはf(a+b)-(f(a)+f(b))になるよ。 x^2って掛け算じゃないの? これってexp(x+y)=exp(x)exp(y)っていう性質から直接導かれるんだよ。 そうだけど、その性質はナピエにはなかったし、教える側としてはまず指数の理解が必要だよね。大きな掛け算をどう簡単にするかから入るのがいいと思う。 教える観点からすると、最初は足し算を学んで、それを戻すために引き算;それから繰り返し足し算すなわち掛け算を学んで、それを戻すために割り算;最後は繰り返し掛け算で指数を学び、それを戻すためにログや平方根だね。 あれ、一つだけ他と違うの気づいた? つまり、指数を戻すためにはログと平方根の両方が必要ってこと?それは指数演算が非可換だからだね。 これどこで知ったの?その考え方をカバーしている本があるの? タイムリーだね!昨日スライドルールの使い方を覚えたばかりなんだ。選択肢が多すぎてちょっと戸惑ってる。スライドルールって、まるでアートみたいなものも多いよね。最近、アナログツールがデジタルインターフェースよりも意外といいことに気づいて、初稿を書くのにペンと紙を使って楽しんでる。HNには他にアナログツール好きな人いる? 数学のコースを受けてて、アナログツールに興味が出てきたよ。Hacker NewsでSoroban、日本の算盤に興味を持たされたんだ。今でも驚異的な計算速度を訓練するのに使われてるみたいだね。 同じような感じだね。実は日本の算盤を2つ持っていて、基礎は知ってる。トップパフォーマーは魔法みたいで、すごく速く計算できるよ。 結構使った?欲しいとは思うけど、使わないでデスクに放置しそうで心配。アーサー・ベンジャミンの「Secrets of Mental Math」を持っていて、そのスキルを練習したいんだけど、Sorobanを学ぶことで頭の中の計算が混乱しないか心配だな。 スライドルールを何本か持っていて、毎日使ってる。特にキッチンでは、比例をスケールするのにベストなツールだよ。セットすれば、必要な比例を一瞬で読み取れるから、本当に驚いてる。キッチンの標準装備にならないのが不思議。 Soroban、日本の算盤。数字の表現は一つだけで、計算は簡単にできるよ。 eBayに出てるよ。さっきの検索で二つ見つけた: 確かに、ペンや鉛筆、(ドット)紙を使っている。違う脳の使い方になるんだよね。 ログ変換がデータを正規分布にする理由についての面白い洞察。自然の法則はほとんど掛け算だから、i.i.dなランダム変数を掛け合わせると、中央極限定理のおかげで対数正規分布になる。影響を与える要素の掛け算がデータになると考えると、結果的に対数正規分布になる。 中央極限定理は独立同士の同分布でなくても成り立つよ。独立してて分散があればいいし、少し高次の条件も弱いものでOK。だから、変数同士はかなり違ってても大丈夫なんだ。 データはログ-ログスケールでプロットすると直線的になるんだよ。 エンジニアの楽しみは、二重対数図で直線を見つけることだよ。 私の説明は、x軸がないところがポイントなんだよね。 確かに、データをログ取ると「より正しく見える」ことが多いけど、理論的に正当化されてない場合もあるから、それが間違った結論を招くこともあるよ。 Matt Parkerが、我々は自然にそう考えるからだって言ってたな。子供や数学に触れてない人は3って言うって。それを示すためにビーズやコインを使って説明してたけど、ちょっとわからなかった。でも、ログスケールのグラフは要注意だよ。 面白い対数の事実を紹介するよ。もしXが0から1の間で一様分布するランダム変数ならば、–ln(X)/λがレートλの指数分布になるんだ。この関係は重み付きランダムサンプリングをしたり、シミュレーションのイベント時刻を生成する時に役立つよ。 この一般的な話は逆変換サンプリングって呼ばれてて、任意のランダム変数Xに対する累積分布関数Fを使うんだ。このF(X)は標準一様分布を持つよ。だから、逆のcdfを使うとF^-1(Y)=Xという風にXが得られるんだ。普通のランダム数生成にはこれが一般的だよ。 指数分布の場合はもっと進められるよ。ポアソン過程の理論を利用して、並列アルゴリズムを使ってサンプリングできるし、それを使ったSQLの例がこれだよ:SELECT * FROM Population WHERE weight > 0 ORDER BY -LN(1.0 - RANDOM()) / weight LIMIT 100。ここでは指数分布のランダム変数がORDER BY句に表示されてるんだ。 すっかり忘れてた。10年以上前に書くって言ったのに、待たせちゃってごめん。自分のために書くのが主だから、時間とモチベが必要なんだ。最近までGで働いてたから時間がなかったし、内部コミュニティで満足しちゃってた。でも今は半引退だから、もっと頻繁に書くように頑張るよ。責任感を持たせてくれてありがとう! 逆変換サンプリングは正規化フローの特別なケースで、学習は不要だから。 これ理解するためにはどれくらい数学を勉強しなきゃいけないの? ほとんどの確率の教科書には、よく使われる分布間の関係についてちょっと触れてるよ。すぐに全体を見たいなら、John D. Cookの図が便利だよ。 あんまり役に立たないかもだけど、逆に言うと数学が全くいらないとも言えるかも!これが驚くべき事実として提示されているけど、実際にはこれが指数分布の正しい定義とも言える。x = -log(rand())/lambdaを何回もやれば、それは「何か」から来るよね?その「何か」を指数分布と呼ぼう。数学が必要なのは指数分布の密度関数を見つけることだよ。理論的には、微積分101と確率101があれば大丈夫。 質問してくれてありがとう!でもちょっと違う質問かも。数学的概念の「依存関係グラフ」を維持してくれる人が長年いたらなと思ってた。Khan Academyがそんなことを試みてたことがあったけど、ずっと前に取り下げられたみたい。数学は、研究の最前線から離れてる限り、実現できるかもしれない分野だと思うんだ。理解できないことを指摘すれば、すでに知っている概念にさかのぼれるような感じで学べるはずだよ。 趣味でそんなウェブサイトを作ろうと思ってたんだ。ただ数学だけじゃなくて、電気インピーダンスの理解や、エアコンの修理、パンを確実に焼くためのスキル・概念のグラフを作りたかった。情報元としては、トピックの進行や前提条件を記載したコースシラバスが使えるかも。どの概念が先に来るべきかを決める権威ではなく、教育的アプローチの違いを表せるシステムを考えてたんだ。ドメイン名探しが難しかったけど、「Tree of knowledge」dot TLDは取られてた。 それは、ある意味、https://mathworld.wolfram.com/の目的に近いね。少なくとも、Wikipediaよりはずっと良いよ。 もし見落としてなければ、これは直接確認できると思うから、特に「理解」はいらないよ。確率分布は確率密度関数(PDF)で特徴づけられるってだけ知ってれば十分。Y=-ln(X)/lambdaなら、P(Y<a)=P(-ln(X)/lambda<a)=P(X>exp(-lambda a))=1-exp(-lambda a)になる。もしZがレートパラメータlambdaを持つ指数分布なら、P(Z<a)=P(lambda exp(-lambda t)<a)=0からaまでの積分で直接計算できて、結果は1-exp(-lambda a)。同じPDFだから、同じ分布なんだ。 初歩から始めるなら、西洋の教育システム全体だと、確率、対数、冪乗に到達するまでにかなりの時間がかかると思う。2+2=4だけ知ってたら、理解するには数年は遠いと思うけど、ln(exp(y))=yや、P(x>0.5)=0.5を知ってたら、追加の理解は不要だよね。GPのコメントはこの2つの極端の中間あたりだと思うけど、世の中の人々は対数や冪乗の関係や、[0, 1)の一様分布に関する知識が一般的に不足してると思う。 中学校でログと対数表を習ったのは、たぶん11歳くらいの時だね。ナピエの骨についても少しやった気がするし、ログ表もまだどこかにあると思う。使い方を思い出すのに30分もあれば十分。 彼の本をちらっと見たけど、結構難しそうだね。中学校では簡単な算数と分数のあとにログを習ったけど、ルールを覚えれば簡単だった。使い方を忘れちゃったけど、再び覚えるのは一週間くらいの練習でいけると思う。 Khan Academyを使えば、1ヶ月から3ヶ月で理解できると思う。 どこから始めるかによるけど、高校の数学からなら、数時間か数日で大丈夫だと思うよ。 単に-log(x)を0から1の間でプロットすれば、log(x)が均一な線を指数的減衰に変えるのがわかるよ。これはMLのlog likelihood loss関数の起源でもあるんだ。 色々な解決法があるけど、もし自分がこういうのを導出する必要があったら、計算学に目を向けるだろうね。 微分学と確率論の入門を勉強すれば、この内容を学ぶ準備が整うよ。高校卒業後、約2年後だね。 彼らの言ってることを理解するためには、何を理解するかにもよるけど、統計学の授業があれば十分。 なんとなく意味はわかるけど、具体的にどう使うか全然わからん。たとえば重み付きのランダムサンプルを取ったり、イベントの時間を生成するのには役立たない。なので、外国語に聞こえないから理解してるってわけじゃない。 ChatGPTに18歳向けに説明してもらえば、すごく理解しやすくなるよ。 CDF/PDFを書かずに理解する一つの方法:Xが指数分布でcが定数の場合、X + cもXと同じ分布になる。要するに、両方の変数は同じ「尾」を持っているってこと。これは指数分布特有の性質だよ(メモリーレスって呼ばれることもある)。同様に、Uが[0, 1]で一様分布の時、cUの分布も小さい方を条件にした場合、Uと同じになる。でも、cUが近く0でUと同じ分布なら、-ln(cU)は無限大近くで-ln(U)と同じ分布になる。だから、-ln(cU)は-cn- -ln(U)に等しいから、定数を加えても-ln(U)の尾は変わらないから、指数分布を持つってことだ。 LMAX Disruptorを使い始めたんだけど、キューサイズは常に2の冪乗にしないといけない。だから、計算が面倒だったからこんなのを書いた:もっとコメントを表示(1)
もっとコメントを表示(2)
https://www.ebay.com/itm/205220626817
https://www.ebay.com/itm/156686655356
オリジナルの価格よりちょっと高いみたいだね。1960年には4フィートは15ドル、7フィートが25ドルだったそう。24本以上スライドルールを頼むと学校には無料だったらしいよ。もっとコメントを表示(3)
var actualSize = Double.valueOf(Math.pow(2, Math.ceil(Math.log(approxSize) / Math.log(2)))).intValue();
ちょっと冗長だけど、基本的なログのルールを使っただけ。高校で習ったけど、同僚はこの数学がすごく難しいものだと思ってたみたいだ。