yoshidabenjiro's blog

respect Yoshua Bengio.

これってもしかしたら老害かも

こんにちは。吉田弁二郎です。

大学での専攻は理論物理だったのですが、当時の友人と先日飲む機会があって、そこでの会話が印象的だったので残しておこうかと思います。

彼は素粒子論、私はふらふらしていたけど一応は非平衡統計理論が専門で、お互いに細かく見てきた分野は違っています。けれど、大学に入学して以来、新しく理論を学べばそのたびに世界観が更新される、そんな経験をしてきたという感触は共通して持っているのが面白かった。

例えば一般相対性理論においては、光が曲がって進むのはあくまでも時空が曲がっているからであって、光自体は時空に沿って「まっすぐ」進んでいるにすぎない。そして時空は物質の存在によって曲げられる(アインシュタイン方程式)。また量子力学において物質は波動関数という確率の波のようなもので記述され、所在は確定しない。誰もが常識として持っていた世界観は一部のスケールでのみ有効なのであって、一歩その外に出れば全く想像もしていなかった世界が広がっている。それを数学という言葉で理解し、ものの見方を広げていくことはなかなか刺激的だ。

……といった感じで盛り上がっていたのですが、しばらくして「こんな経験ができるのはやっぱ物理しかないよね」みたいな話がどこからともなく出てきて、その瞬間は特に何も考えず同意したものの、振り返ってみればこれこそ老害の第一歩だなと反省したわけです。

考えてみれば当たり前すぎるほど当たり前のことなんだけど、おそらくどんな学問、いや学問に限らずどんな行いであっても、何かを真摯に学び取る姿勢があれば必ず eye-opening な経験をするはず。確かに物理は自然法則をもっとも普遍的な形で理解しようとするため、少なくとも物質的な世界観についてドラスティックな変更を迫ることは事実だし、その方法論自体を他の分野に援用することも可能だということも理解しています(経済物理とか情報の物理という分野が存在する)。

とはいえ、例えば生物観や社会観、人間観が変わるような経験の仕方は、それこそビジネスとかも含めて無数にあることも間違いない。自分たちの経験が唯一無二にして最上のものだったね、とか思いこんでしまうのは、まるで「物理」という初期値からスタートして結局は損失関数の極小点にトラップされてしまったような、新たな学びを止め自身の世界観のみでものを語る老害そのものだな、と結構不自由な気持ちになったのでした。

年齢的にも若いとは言いづらくなってきたここ最近、知的態度を固くしない方向に努力していかないと、自覚してるよりも早く老いそうだなと感じてます。

Python で ¥ (円マーク)を直接指定して置換するには

こんにちは。吉田弁二郎です。

Python で文字列を扱うのにはちょっとした工夫がいることが多いです。私がこの前つまずいたのは、¥ (円マーク)をある文字列の中で置換するにはどうしたらよいか、ということでした。
例えば、

s = '¥hoge'

という文字列があった時、¥ を適当な文字列で置き換えたいのですが、これは安直に

s = s.replace('¥', 'foo')

とすると SyntaxError となってしまいます。replace 関数に入っている ¥ より後が ¥ 自身によってエスケープされた結果、関数の括弧が閉じていないと判定されてしまうからですね。
解消法は Python のバージョンによって異なり、

import six
if six.PY2:
    # python2
    s = s.decode('utf-8').replace (unichr(165), 'foo')
elif six.PY3:
    # python3
    s = s.replace(chr(165), 'foo')

とすれば目的が達成できると思います。chr/unichr および逆操作を表す ord については、こちらの公式ドキュメントにまとまっています。
2. 組み込み関数 — Python 2.7.x ドキュメント
2. 組み込み関数 — Python 3.5.2 ドキュメント

ちなみになぜこんな特殊な状況について書くことになったかというと、最近デジタル広告運用系の仕事に関わり、Google DoubleClick Bidding Manager がはき出すレポートの中に、なぜか直接 ¥ 記号が書き込まれているのを処理しなきゃいけなくなったからなんです。あれ、何でなんですかね。

ブログ開始

こんにちは。吉田弁二郎です。

このブログでは、機械学習関連の話、web技術の話、自分の身の回りの話などを書いていくつもりです。