「丸め誤差」を含む日記 RSS

はてなキーワード: 丸め誤差とは

2024-06-10

小数使わなければいいのに

なんか今頃になって小数丸め誤差の話が盛り上がってるんだけど

そもそもできる限り小数を使わないっていうのはプログラミングの基本でしょ

割と適当でいいものについては小数(float)を使うけど厳密なところは整数(integer)にしましょうって最初に習わないの?

例えば日本だとあんまり馴染みが無いけれど海外と金額はだいたいが小数で扱われてて

$5.3-$2.8 みたいな計算をするんだけど

このときバカ正直にfloatにしてると丸め誤差が出てしま

ところがそもそもドルじゃなくてセントにしてしまえば何も問題は起きない

システムで扱う単位セントにしておいて表示するときドルにすればいいだけ

他にも長さを入れるときメートルで入れると小数を使わないといけなくなるからミリメートルで入れる、とか

時間も秒単位だと誤差がでるからミリ秒とかマイクロ秒で入れる、とか

最小単位を決めて整数で扱うって基本じゃ無いの

精度が求められてないとかそもそも精度に意味が無い場合小数使えばよくて

まぁUnixtimeがfloatで入ってても問題無い場面はあるとは思うけどね

DecimalだとかBigDecimalだとか議論する前に本当に小数計算必要なのかよく考えて欲しい

2023-01-02

三流エンジニアがやりがちなミス

タイムゾーン考えずに時間を使う

暗黙的にJSTとして時間を使ったせいでUTCで作った場所で盛大にバグる

応急処置バグったところを+9とかやってしまうと、それ以降に逆に誰も気付かずに更に影響範囲が拡がったりする

海外展開しようとしたときバグに気付くがどうしようもなくなって途方にくれて海外だけは別アプリになったりする

UNIXTIMEを使えば楽なんだけれど、そうすると生データぱっと見で時間判別できないので困ることも多い

素直にUTCでISO8601が良い

文字コードUTF-8だと大丈夫だと思ってしま

とりあえずUTF-8にしとけば大丈夫、ってことで実装を進めた結果、Mac/Winでハマる

他にもBOMでハマったりして、むしろSJISの方が良かったんじゃ無いか、とか言い出す

DB統一的になっている場合はまだ後からどうにかできるが、変なところでキャッシュされてたりすると凄い困ることになる

MySQLなりPostgreSQLなりでUTF-8を正しく扱う方法はいろんな記事があるのでちゃんと読んでおけば問題無い

価格浮動小数にしてしま

「将来的にはグローバル展開が必要

とかよく分からないことを言い出して価格浮動小数にしてしま

かに米国なら$2.43みたいな感じで価格を使ったりするし、むしろ小数点以下が無い通貨の方が珍しいのだけれど

丸め誤差を考えないで作ってしまってバグが見つかりめちゃくちゃ揉める

応急処置として丸め機能とかが追加されて事なきを得るけれど

そもそも最小単位で扱って表示の時に小数化すれば良いだけ

他にある?

2022-12-15

画像生成AI、本当に元の画像から変わっている画像を出してくれてるのか

例えば人物イラストを生成する画像生成AIだと、

数学的な手法を使って実在しない人物イラストを生成しているといた旨の説明がされるが、

本当に違っていると証明したのを見たことがなく、本当か?という疑問がある。

(元のデータ量が膨大なので類似画像証明が困難なのは承知している)


本当に「実在しない人物」が生成されるのであれば、有名人名前を入れても再現されないはずだが、

エマ・ワトソントランプイーロン・マスクなどは大量に作られている。


例えばdiffusionモデルだと、元の画像全体に対してノイズを加えていったもの学習させている。

これだけ見ると、「学習画像をどれだけ再現できるか」、というのは学習しているが、

学習元と違う画像を生成する」というのは学習していない。


学習時の指標としてエラー率を下げるというのもあるが、こちらも「学習画像をどれだけ再現できるか」だろう。

学習元と違う画像を生成」しているが、人の目で見た時に全体としてバランスが取れているという指標ではない。


違う画像が出ることについて、想像では、

  1. 何段階かノイズをかけていくと、類似した画像になる画像同士が混ざる。
  2. U-net解像度ダウンサイジングした時に、類似した画像になる画像同士が混ざる。
  3. 演算精度の丸め誤差から、近い値になって混ざる

ではないだろうか。


だが、より詳細な画像を出そうとした場合パラメータ数や演算精度を上げていった場合

元の画像再現されてしまうのではないか


2022-11-30

anond:20221130082001

海外機械学習系の博士号まで取ったけど、(知ってて損することもないけど)大半の人間にはこんな詳細知識いらんよなって感じだわ

中身わかってなくてもpythonパッケージ類に投げれば全てが解決されるしそういう人も多い 今時丸め誤差とか気にせんでも動くことは多いし、それで用に足るならこだわるだけ時間無駄

大規模システムとかでそれやったらしばかれて仕方ないけどな

俺は手法でいっぱい論文書いてるけど、それを効率的実装できるかとか商品にまでもっていけるかってのは別の話で、そのあたりは別のプロとか実働部隊お仕事って割り切ってる

家建てる時も資材運ぶだけの単純労働の人なんかは必ず必要だし、そういう人たちに知識別に要らんのではって感じ

ただまぁ勉強しないと永遠に単純労働だし遅かれ早かれ機械に置き換えられちゃうので勉強くらいはしとけよ〜ってくらい

2022-05-17

国土交通省が開示した去年7月の運航記録では、風速、波の高さ、視界についてほぼ毎日、同じ値が書き込まれています

立憲民主党 城井崇衆院議員

自然ってこんなに同じ数字にならない。ちゃんと測っていれば」

そうかな?

弊社では正規分布に従ったランダムな値を自動入力してるけど

たまによく連続して3回くらい同じ値になることある

同じ時節の連続する日なら丸め誤差で同じ値になることは合理的に考えても起こりうるけど

民主党議員ってこんなにバカなの?

2021-07-18

anond:20210718161714

https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%89%E3%83%AF%E3%83%BC%E3%83%89%E3%83%BB%E3%83%AD%E3%83%BC%E3%83%AC%E3%83%B3%E3%83%84

Wikipedia引用すると、

計算結果の検証のため同一のデータを初期値として複数回シミュレーションを行うべきを、

ここまではよくわかる。それで物理学数学的なカオス理論を押す連中が間違っていると思うのが、

二度目の入力の際に手間を惜しみ、初期値の僅かな違いは最終的な計算結果に与える影響もまた小さいだろうと考えて、小数のある桁以降の入力を省いたところ、

ここ。ここが諸悪の根源だ。まず計算科学の連中が大学に入って最初に引っかかるミス大御所がひっかっている。たとえば、0.4 - 0.3 は計算科学では 0.1 じゃない。それは十進法から二進法に変換するという計算機の特性理解してない人がやるミスだ。嘘だと思ったら、0.4 - 0.3 == 0.1 と C なり Ruby なり Python なり Java なり Haskell なりでやってくれ。ちなみに JavaScript なら 0.4 - 0.3 === 0.1、Lisp族の Clojure は (== (- 0.4 0.3) 0.1)、PHPちょっと自信がないので省かせてもらう...。浮動演算ユニットがついているプロセッサIEEE 754 の類をサポートしているなら「偽」となるはずだ。ここでは「桁あふれ」「丸め誤差」なんかは説明しないが、計算機で小数を扱うのは注意が必要ってことだ。閑話休題、つまり計算機で数学物理学実数のように小数点を扱うなら 3.0 と 3.1と 3.14 は別物として扱う必要があって、カオス理論創始者であるローレンツは「有史に残る」ミスを犯した。

結果が大きく異なった。

これは金融界隈のエンジニアたちにとっては、コンピュータが現れてから悪夢のような形で襲っていて、ゴースト・イン・ザ・シェルの題材にすらなっている「既知の未知」という類のエラーだ。はっきりいうと、大御所にこんなことを言うことは憚れるが、エンジニアだと3年目以降だとしないミスMITエリートがやっているという、なんというか「そりゃ、そうなるだろ」的なミスをしでかした結果なんだよ。例えば、古典物理学だと有効数字ひとつ下の数値は切り上げて四捨五入するというのは教科書的には正しい。だがね、計算科学だと小数点の扱いは事故の元なんだよ。具体例を出すと「Ruby円周率を100回掛け合わせる、Ππ(パイパイ、n=100)みたいなことをする。

puts [3.0, 3.1, 3.14].map{|i| 100.times.reduce(i) {|j, k| j *= k + 1}}
# 2.7997864633183236e+158
# 2.893112678762268e+158
# 2.930443164939848e+158

もう一度、特に高校物理をやった人は考えてほしい。数値を切り捨てしないだけで、これだけの差が生じるのだ。そりゃ、ローレンツ大先生も驚くわな。現実世界では起きないような気がするのはなぜか?、と思うじゃん。そこで、わたしはこう思うわけですよ、

計算機は実数を正しく扱えない」

とね。だからこそ、

計算機を正しく扱わないことで生じる偏見差別

というもの科学する学問があって良いのじゃないかと。つまり

それこそが【計算科学】というもの

なのではないかと。


異論は認める

2019-08-03

anond:20190803124415

丸め誤差を気にする奴はそんなヘマしない。電卓でもおなじ。

2018-06-13

anond:20180613195801

3×6ってサイズ鉄板

鉄板の規格サイズフィートが元で比率は1:2なんだけど1mmは丸め誤差

つまんなくてごめんね

2017-12-05

センター試験改革

ここ数年のニュースで最も意味不明実施するメリットが何一つ見えない。

というか目的から理解できない。

「一点刻みの入試」の何が問題なのか。どうなったら問題でないというのか?

記述式だとか表現力だとか言ってるけれど、それでも点数を付ければ一点刻みになるだろう。

何を問題視しているのかいくら調べてもさっぱりわからない。

刻みを粗くして10点刻みの得点帯にでもしたいのだろうか?→境界の人が僅差で別の得点帯に行ってしまう。丸め誤差を重ねたら駄目だって、割り算習った小学生でもわかる。

それとももっと細かくしたいの?→今でも入試得点小数点以下まで見るでしょ。

一点刻みで何が悪いのか、ちゃんと人間にわか言葉説明しているサイト、どこかにいかしら?

利権がどうのという話なのかもしれないけれど、それにしたって建前の理屈ぐらいちゃんとしてほしい。

2009-03-24

http://anond.hatelabo.jp/20090324175638

それは丸め誤差の話になっちゃうからなあ。

このたとえでいうと、プランク定数自然界の機械イプシロン?

2009-03-06

http://anond.hatelabo.jp/20090306175333

母親「ほらみてごらんなさい、窓に水滴が模様を描いているわ」

娘「ほんとだー!なんであんな模様になるの?」

とあった場合

まともな母親「なんでだと思う?一緒に調べてみようか?」

空気の読めない父親「あれは雨雲や風の影響だよ」

通りすがり科学者「気象現象はカオス的だから、雨雲や風の状態を含めて考えたとしても軌跡を計算する(=わかる)のは至難の業だよ。正確に言うと無限に近い計算時間がかかると思う。あと桁落ちや丸め誤差が集積して酷いことになる気がするから正確な回答はできない」

って感じだと思うけど。。。

http://anond.hatelabo.jp/20090306162025

しかし、雨雲や風を含めて考えると、その軌跡をたどった理由がわかる。

そう、世の中に偶然なんてない。あるのは必然だけ。

これ。

決定論的ではあるけど気象現象はカオス的だから、雨雲や風の状態を含めて考えたとしても軌跡を計算する(=わかる)のは至難の業だよ。正確に言うと無限に近い計算時間がかかると思う。あと桁落ちや丸め誤差が集積して酷いことになる気がする。

仮にわかったとしても、だから「世の中に偶然なんてない」とか結びつけるのは余りにも飛躍しすぎだし。純粋文学だってなら勝手にすればいいと思うけどね。

 
ログイン ユーザー登録
ようこそ ゲスト さん