Fujimoto Seiji

2018-08-25 (土) 連続だが微分不可能な関数

よく出される例は|x|のような「左微分係数と右微分係数が等しくない」というケースだけど、 少し前に「あまりにも収束が遅いので微分ができない!」というケースがあることを知った。 このケースの例は 3√x という立方根関数で、これはx=0で連続だが、 あまりにも原点に近づく速度がトロいので、微分をとろうとしても係数が発散してしまう。 実際に f(x) = 3√x の導関数を求めてみるとこうなる:

同じ理由で、n√x (n>1) は原点において微分できないことが分かる。 これを別の視点から考えると、n√x は xn の逆関数だから、 xn の(原点における)微分係数は0である以上、 対応する逆関数の微分係数は無限大に発散する...と捉えることもできる。

2018-08-07 (火) 編集距離の計算ライブラリ

レーベンシュタイン距離を計算するための polylevenというライブラリを作った。

基本的な発想は単純で、レーベンシュタイン距離を計算するアルゴリズムには、 いくつか異なる系統のものが存在していた。 それぞれのアルゴリズムにはパフォーマンスの特性があって、 たとえば「対象の文字が長いとこれこれアルゴリズムが効率的」というように、 得意とする領域がそれぞれ違っていた。 であれば、「それぞれのアルゴリズムを一つの関数に統合して、 入力された値に応じて適用するアルゴリズムを動的に変えるようにすれば、 あらゆるケースで速いライブラリができるのでは?」と思いついた。 それで試しに実装してみたら ... 実際に速いライブラリができた。

例えば、適当な大きさの英単語辞書に対して編集距離が近いものを全探索する というケースで、主なライブラリのベンチマークをとると、 次のような結果が得られる。グラフのタテ軸は一秒あたりの処理件数で、 値が大きいほど性能が良い。このベンチマークに基づくなら、 polylevenはもっとも速い既存のライブラリよりも15%以上効率的なことになる。

ただ、このベンチマークは性能の一側面でしかないことに注意。 例えば、このグラフの左側の一見"遅い"ライブラリ群は、 実は、入力文字列が長い時に他のライブラリよりも効率的であったりする (計算のたびにセットアップコストがかかる作りになっているので、 英単語のような短い入力を大量に処理するのには向いていない)。 こういう様々な側面を加味した、フェアなベンチマークを作るのは難しい。

2018-08-04 (日) 正弦関数の極限を簡単に計算するには

... 非常に小さい数 x については sin(x) = x とみなして式を整理すればよい。

はじめて聞くと無茶苦茶に思えるが、 実際に数式の中のsin(x)をxに単純に置き換えていくだけで、 多くの場合、正しい極限値が計算できる。 しかも、この方法だと、一見解析が難しそうな複雑な式にも応用が効くので、 非常に使い勝手がよい。例えば、この考え方を使うと、 sin(2x)/xの極限の計算はこれ以上ないぐらい簡単になる。

なぜこれでうまく計算できるのかという理由は非常に単純で、 ごく小さな x については関数 f(x) = x が正弦関数の非常によい近似になるため。 この近似の正当性は sin(x) / x が極限 x→0 において 1 になる、 という定理によって保証されているが、実際にグラフを描いてみても、 原点の近傍で二つの関数がほとんど一致していることが分かる。

2018-07-29 (日) 物語の役割について

フィクションとは心が疲れた時の逃避だ、と言っている人がいた。 俺はそれは違うと思う。私たちがフィクション、つまり物語を読む理由は、 それが現実を解釈する異なるストーリーを与えてくれるからだ。 この世界は、私たちの目に見えているものとは全然違っているのかもしれない、 すぐれた物語はその可能性を説得力のある形で示してみせる。 日常生活を送っている中では、いま目に映っていることだけが、 物事の唯一のあり方のように思えてくるのだけど、 それが思い込みに過ぎないことは、過去の経験を振り返ってみれば誰にだって明らかだと思う。

そう考えているうちに、昔のことを思い出した。俺が高校生の時の話だ。 それは年に数回ある学校見学の日で、 入学を検討している保護者たちに実際の授業の様子を見せてまわる日だった。 教頭に引き連れられた保護者たちが、授業中の教室の横の廊下を物珍しそうにぞろぞろと歩き回っていた。 その時、友達(渡辺という名前だった)とこういう短いやりとりをしたことを覚えている。

「なんかこれ、あれみたいじゃない?」と通り過ぎる親たちを横目に、渡辺は話しかけてきた。
「...動物園?」と俺は正直に思っているところを答えた。
すると渡辺はニヤッと笑って、こう言った。
「いや、水族館だよ」

私たちは檻の中の動物だったのか、それとも色とりどりの魚の群れを眺めていたのか? これは純粋に私たちが選び取る視点によって決まる。 同じことが、他の多くの物事についても言える。 私たちは抱いている信念に応じて物事を扱うので、 視点の移り変わりや力点の変化は人生のあり様をときに劇的に変える。 とりわけ、私たちの人生は「私たちは一体何者なのか?」という疑問を軸に構造化される。 古代の人たちがホメロスに大喜びで耳を傾け、 現代のアメリカ人が大真面目にアインランドを読むのは、 それが一時の楽しい気晴らしになるからではない。 その物語が、彼らが何者であり、何をなすべきかを規定しているからだ。