MENU
158,978

スレッドNo.440

移り変わる「四捨五入の真実」と,丸めの明日.

こちらの「私の備忘録→数学その他→四捨五入の真実」を読んでいて,改めてJIS Z 8401を見返そうとGoogle検索すると…
JIS Z 8401: 2019 と,前回の改定が大分最近のことではありませんか(私が疎いだけ…?というのは置いておいて).

「JIS丸め」といえばこの規則Aの偶数丸めのこと.という印象がとても強く,これはもともと鉄鉱などの重量物の取引の際,丸めによる誤差の偏りが不公平をもたらさないように提案された方法,と聞いております.このJIS Z 8401の改訂履歴が気になり調べてみると,規則Bの方法,いわゆる「一般的な四捨五入」の待遇が年々良くなっていることに気が付きました.

JIS Z 8401: 1961では規則Bの方法は記載が無く(規則Bの不公平性に対して作られた,という経緯からは自然と考える).
JIS Z 8401: 1999では原則は規則Aとしたうえで,注釈として「規則B は,電子計算機による処理において広く用いられている。」と記載.
そしてJIS Z 8401:2019では「次のいずれかの規則を用いる。」ただし,推奨は規則Aで,規則Bは計算機による処理において用いられることがある.と記載されています.これでは,「JIS丸め」と言った時に「いや,規則BもJISに書いてあるし,規則AだけをJIS丸めと呼ぶのはちゃんちゃらおかしいじゃないか!」などと屁理屈をつけられるかもしれません.

この背景に思いを馳せると,技術の進歩によって計量に用いる装置の精度が十分高くなり,不公平だと目くじら立てるほどの誤差が生まれなくなったのだろうかと考えたり,計算機の普及によって,計算機の都合を優先した規則Bの方法が,社会全体で見れば計算効率の面などから利益となるようになったのだろうか.特に近年は,深層学習等の技術への注目によってさらに膨大な数の計算が行われるようになり,そこで起きる丸めの誤差問題というのは従来の「5の扱いに起因する誤差」ではなく,「量子化した際に,1つの変数に割り当てるビット数の不足による誤差」であり,丸めの方法としては規則Bで問題ないということだろうか.などと夢想していました.

そう遠くない未来,量子コンピューターが普及した際には,いわゆる「計算のコスト」が激減しますので,もしかすると丸めの誤差問題の大元が「量子化した際に,1つの変数に割り当てるビット数の不足による誤差」から「5の扱いに起因する誤差」へと逆転して戻る日が来るかもしれません.そうなれば,JIS Z 8401: 2061あたりでは,100年の時を越えて規則Aが再度「JIS丸め」の覇権を握る日が来るかもしれませんね.

いやはや,割と冗談ではなく,偶数丸めには四捨五入に見られないデメリットがあります.それは「偶数+0.5の出現率と,奇数+0.5の出現率が異なるデータの処理」において誤差が生じるというものです.今まで注目していた「個の数がとる値に起因する不公平」ではなく,「数の集団のもつ性質に起因する不公平」と言えるでしょう.これは深層学習のように,法則性をもつデータを大量に扱う時に対面しうる問題かもしれません.そうなれば対策として,規則A-2「四捨五入と五捨六入をランダムに切り替えて適用する」なんかが登場するでしょうか.ランダムって何だ…と考えると到底書ききれなくなってしまうので,この辺で終わろうと思います.丸めの明日はどっちでしょうか.

引用して返信編集・削除(未編集)

偶数丸めのデメリットについて改めて整理しながら補足すると…

今まで取り扱ってきた「真に取るべき値が決まっているのに,丸めによって発生した誤差によって真の値との誤差が生まれる,それが一方向に累積した結果として不公平を生じる」という問題点に対抗できるのが偶数丸めですね.一方で「真に取るべき値」が不明な(あるいはそれを計算するには計算コストの面で合理的ではない)計算をする場合,手元の結果に上ブレ下ブレどっちが起きているのか分からない(偶数+0.5と奇数+0.5の比率を事前に知る必要があり,丸めの方法だけでは対処できない誤差が生じうる)という問題が残りますね.

ここまで書いて,四捨五入と五捨六入を交互にすれば良いんじゃないかと思いましたが,それは各丸め操作の誤差の重みが毎回同じでないと不公平は解消されないな,とぬか喜びでした.(丸めるデータ列の奇数個目は大きく,偶数個目は小さく見積もられてしまうので)

引用して返信編集・削除(未編集)

このスレッドに返信

このスレッドへの返信は締め切られています。

ロケットBBS

Page Top