▼ 2014/06/13(金) なぜ自分のプログラム(ソースコード)を公開するのか
【精度保証】
今回は、自分のプログラム(ソースコード)をなぜ公開しようと決心したかについてお話します。
我々は、精度保証付き数値計算という分野について日夜研究を行っています。精度保証付き数値計算は、数値計算をすると同時にその誤差を数学的に厳密に評価出来るような新しい数値計算法です。数学の証明の一部に使える信頼性を持ち、実際いくつもの問題が精度保証付き数値計算を援用して解かれています。
ところで、我々の分野の研究発表なり論文で、ソースコードを公開しているものは非常に少ないです。このことがこの分野の普及の妨げになっていると考えられ、それはそれで大変に大きな問題ですが、今回は少し違う観点で考えてみます。
精度保証付き数値計算の発表なり論文では、「精度保証付き数値計算を用いて○○という問題を解き、△△の範囲内に解が存在することが厳密に保証された。」というふうな言い方がよくされます。正直に申し上げると、本当に自分のプログラムにミスが無いと言えるのか、完全な自信があるわけではありません。他人の成果を見て何か怪しいんじゃないのと思ったことも一度や二度ではありません。プログラムにバグが無いことを保証してくれる何かが無いと、厳密に保証されたとは言えないのではないか。
しかし、よく考えるとこれは数学の定理の証明も同じことで、数学者もミスはするし、定理の正しさは大勢の数学者の検証によって(場合によっては長い時間をかけて)正しいかどうかの評価が確定するのです。
精度保証付き数値計算での計算結果の厳密性を保証するのは、論文に書かれた理論と、それを実装したプログラムです。両者を検証して初めてその正しさが分かるのに、プログラムを公開していなかったらチェックのしようがありません。数学の定理の証明でその一部が黒塗りで塗りつぶされているようなものがあったとして、それを正しい証明と認められるでしょうか。
知り合いの研究者から、「理論も本当に大事なところは書かないことがある。ましてやソースコードなど出せない。大事なテクニックが盗まれてしまう」という話を聞いたことがあります。仮にも解の正しさを「証明した」と謳う精度保証付き数値計算で、こんなことがありえるのか、と思います。
以上のような考えのもとに、今後自分が何らかの発表をするときのソースコードは全て公開し、全世界の人々の審判の目に晒されることを覚悟しようと思います。この分野の全研究者がソースコードを公開するようになって欲しいのですが、まず自分から始めないと、と考えました。
ご意見、反論があれば是非お願いします。
また、今後査読が回ってきたとき、ソースコードの非公開を理由にrejectする、というような過激なことも考えています。これに関してもご意見をお願いします。
2014/06/13 石垣島から羽田に向かう機内にて
我々は、精度保証付き数値計算という分野について日夜研究を行っています。精度保証付き数値計算は、数値計算をすると同時にその誤差を数学的に厳密に評価出来るような新しい数値計算法です。数学の証明の一部に使える信頼性を持ち、実際いくつもの問題が精度保証付き数値計算を援用して解かれています。
ところで、我々の分野の研究発表なり論文で、ソースコードを公開しているものは非常に少ないです。このことがこの分野の普及の妨げになっていると考えられ、それはそれで大変に大きな問題ですが、今回は少し違う観点で考えてみます。
精度保証付き数値計算の発表なり論文では、「精度保証付き数値計算を用いて○○という問題を解き、△△の範囲内に解が存在することが厳密に保証された。」というふうな言い方がよくされます。正直に申し上げると、本当に自分のプログラムにミスが無いと言えるのか、完全な自信があるわけではありません。他人の成果を見て何か怪しいんじゃないのと思ったことも一度や二度ではありません。プログラムにバグが無いことを保証してくれる何かが無いと、厳密に保証されたとは言えないのではないか。
しかし、よく考えるとこれは数学の定理の証明も同じことで、数学者もミスはするし、定理の正しさは大勢の数学者の検証によって(場合によっては長い時間をかけて)正しいかどうかの評価が確定するのです。
精度保証付き数値計算での計算結果の厳密性を保証するのは、論文に書かれた理論と、それを実装したプログラムです。両者を検証して初めてその正しさが分かるのに、プログラムを公開していなかったらチェックのしようがありません。数学の定理の証明でその一部が黒塗りで塗りつぶされているようなものがあったとして、それを正しい証明と認められるでしょうか。
知り合いの研究者から、「理論も本当に大事なところは書かないことがある。ましてやソースコードなど出せない。大事なテクニックが盗まれてしまう」という話を聞いたことがあります。仮にも解の正しさを「証明した」と謳う精度保証付き数値計算で、こんなことがありえるのか、と思います。
以上のような考えのもとに、今後自分が何らかの発表をするときのソースコードは全て公開し、全世界の人々の審判の目に晒されることを覚悟しようと思います。この分野の全研究者がソースコードを公開するようになって欲しいのですが、まず自分から始めないと、と考えました。
ご意見、反論があれば是非お願いします。
また、今後査読が回ってきたとき、ソースコードの非公開を理由にrejectする、というような過激なことも考えています。これに関してもご意見をお願いします。
2014/06/13 石垣島から羽田に向かう機内にて
- TB-URL http://verifiedby.me/adiary/030/tb/
1: endo 2014年07月17日(木) 午後3時40分
素晴らしいご決断だと思います。反論は全くありません。精度保証付き数値計算だけでなく、全ての研究者が同じ価値観を共有することを願います。
2: kashi 2014年07月20日(日) 深夜0時00分
こんなところにコメントがあるとは。油断してました。情報系でも論文に書かれている通りに実装したのにちゃんと動かない、というような事例は多いと聞きます。それがミスなら仕方がないですが、捏造の入り込む余地があるのが怖いです。おぼちゃんのような事件を防ぐためにも、プログラムを公開する習慣が出来ればいいなあと思います。
3: ume 2016年01月04日(月) 午前7時17分
おっしゃる通りだと思います.私はロボットその数理モデルを扱っていますが,プログラムの詳細は載せず,チャンピオンデータしか載せないのは,世の中に自分が作った技術が普及してなんぼの工学者としておかしい!と思います.
ソースコードの公開の仕方の仕方についてお伺いしたいです.私としては,論文にソースコードを公開しているURLを貼り付けようと思っているのですが,kashiさんはどのように公開しておられるのでしょうか?
4: ume 2016年01月04日(月) 午前7時21分
すみません.このウェブページに公開されているのですね.公開のタイミングとしては,論文採択後でしょうか?採択前に載せていて不都合があったことがありますでしょうか?お伺いしたいです.
5: kashi 2016年01月06日(水) 午後0時16分
コメントありがとうございます。少なくとも投稿時に査読者が見られないと意味がないですが、その時点で全世界に公開するかどうかはケースバイケースでしょうね。自分はあまり気にせずどんどん公開しちゃってますが、今後問題が起きるかもしれません。