Radium Software

Home - Archive - About - RSS

ふたつのみどり

2007-04-02

070402_0.jpg
Photo by Auntie P (from Flickr)

Ágnes Holba, B. Lukács. OnTetrachromacy.

「Y女史」は子供の頃から,人とは色の見え方が違うということに,なんとなく気づいていた。

彼女の生まれ育ったハンガリーでは,庭のフェンスを緑色に塗って,草木に溶け込ますのがお決まりだった。でも,彼女はこの風習を理解することができなかった。彼女にとって,「フェンスの緑色」と「草の緑色」は,まったく違う色に見えるのだから。

周りの人は言う――確かにちょっと違う色かもしれないけれど,遠く離れた所から見れば,溶け込んで見えなくなってしまうでしょ,と。でも彼女にしてみれば,「フェンス色」と「草色」はまったく違う色で,いくら離れたところから見ても,そのふたつは簡単に見分けることができた。むしろ,「フェンス色」は青色に溶け込むようなのだという。

そのうち彼女は,「フェンス色」はテレビで再現されないことに気づく。コンピューター上でも「フェンス色」を再現することはできなかった。カメラで写真を撮るときも,ヨーロッパ製のフィルムを使った場合は「草色」が出て,日本製のフィルムを使った場合は「フェンス色」が出てくることに気づいた。休日に掲げられるハンガリーの三色旗も,家によって「赤・白・草色」だったり「赤・白・フェンス色」だったりと,まるで違った国旗を掲げているように彼女の目には見えていた。

四色型色覚

人の目の網膜には,3種類の錐体細胞 (cone cell) が備わっている。一般的な三色型の色覚は,これらの神経細胞がそれぞれ「赤」「緑」「青」の三原色に反応することによって構成される。

これらの錐体細胞のうち,「赤」に反応する錐体細胞と,「緑」に反応する錐体細胞は,元は同じものだったという経緯もあって,遺伝上の変異を生じやすい。どちらかの遺伝子を失ってしまったり,あるいは,両方の中間的な特性を持つ「ハイブリッド型」の錐体細胞を生み出したりすることがある。

赤・緑の錐体細胞の遺伝子はX染色体上に位置するため,X染色体を1本しか持たない男性は,こうした遺伝上の影響を受けやすい。ハイブリッド型の錐体細胞を遺伝した場合,本来は赤と緑に反応するものだった錐体細胞は,赤と緑の中間あたりの色に反応する錐体細胞となって,色覚を偏らせてしまうことになる。

これが女性の場合は,少し状況が異なってくる。女性はX染色体を2本持つため,その片方がハイブリッド型を遺伝したとしても,もう片方が正常な赤・緑を遺伝すれば,本来の赤・緑の知覚が失われることはない。しかもこのような場合,「赤」「緑」「青」に加え「ハイブリッド」という4つめの錐体細胞を網膜の中に持つことになる。

4種類の錐体細胞から構成される色覚がどのようなものになるか――三色型色覚を持つ大多数の人間にとって,その世界の有りようは想像することすらできない。恐らくは,哺乳類以外の動物にみられるような四色型色覚 (tetrachromacy) に近いものが見えているんだろう。少なくとも「色を見分ける能力」においては,通常の三色型色覚よりも優れたものを持っていることが確かめられている。

例えば三色型色覚においては,波長 580 nm の黄色の光と,波長 630 nm の赤色の光を混ぜたものは,波長 600 nm のオレンジ色の光と同じ見え方をする。これは,混合光の場合も単色光の場合も,赤・緑錐体細胞の反応の強さに違いが無いためだ。これが,赤・緑の中間色に反応するハイブリッド型の錐体細胞を持つ場合,その細胞は混合光と単色光で大きく異なる反応を返す。そのため,これらの光は明らかに異なった色として知覚されることになる。

四色型色覚は,「色を見分ける能力」においては三色型色覚よりも優れていると言えるのだけれど,むしろ「優れ過ぎている」がゆえに不利益をこうむることもあるのかもしれない。上の例からも分かるように,彼女らには三色型色覚を前提とした加色法が成り立たない。これを前提としたテレビや写真の技術は,彼女らにとってみれば酷く再現性の悪いものとして見えていると考えられる。また,三色型色覚を前提とした色覚検査を通過することができない場合もあり,資格取得などの際に不用な扱いを受ける可能性も考えられる。

4つの色を見る彼女

上に述べたような理由から,四色型色覚はもっぱら女性にのみ発現する。三毛猫のオスが滅多にいないのと同じと言えば,ちょっとは分かりやすいかもしれない(そうでもないか……)。

はたして,このような四色型色覚を持つ女性は,どの程度の割合で存在するんだろう? なにぶん,これまで本格的な調査が行われたことのない領域であるために,その実態の正確なところはわかっていない。ただ,その発現のメカニズムから推察する限りでは,その割合は決して低くないと考えられる。全女性の 2% から 3% は,このような色覚を持っているのではないかとする指摘もある。いわゆる色弱を持つ男性の母親や娘に発現している可能性が非常に高いのだけれど,自覚していないケースも多いと考えられる。

ただし「Y女史」の例は,その中でもさらに珍しいケースで,青と緑の中間色に反応するハイブリッド型錐体細胞を遺伝していて,それが緑よりも短い波長の「フェンス色」の知覚を可能にしていると考えられる。このような青・緑のハイブリッド型の錐体細胞は,赤・緑のハイブリッド型と同じプロセスでは発現しえないもので,恐らくは突然変異がもたらしたものであると考えられている。

動きを描く

2007-04-06

070406_0.png
Image from George Herriman's "Krazy Kat" (1917)

マンガの技法のひとつに「動線」 (motion lines) と呼ばれるものがある。例えば上の "Krazy Kat" のひとコマでは,壁の向こうからゴミの山に向かって丸い額縁が投げ込まれる様子が描かれているのだけれど,ここで動線がその動きをなぞるように添えられている。

もしこの絵に動線が無かったらどうなるだろう? すると,この額縁は向こうから投げ込まれたものなのか,それとも最初からゴミの山の中に埋もれていたものなのか,どちらか分からなくなってしまうだろう。本来は動きのある場面を止まった絵で描こうとすると,どうしてもそういう「曖昧さ」が生まれてしまう。動線とは,止まった絵に対して動きの情報を与えることによって,そういった「曖昧さ」を無くすための工夫なんだといえる。

ところで,この「動線」って,いったい何を描いたものなんだろう? 動きによって生じるブレ (motion blur) を描いたものかもしれない。あるいは,脳の中で行われる動き知覚の処理が,動線のようなものを作り出しているのかもしれない。あるいは,そういった視覚系に生じる諸現象とはまったく関係の無い,いわゆる「漫符」と同じく記号的な役割を与えられたものに過ぎないのかもしれない。

心で描く「動き」

070406_1.png
Image from Kennedy's paper

トロント大学で心理学を研究する John Kennedy 教授は,全盲の画家 Eşref Armağan に対して,次のような注文を投げかけた――「動いている車輪」を描いてみてください,と。

Armağan は数分間考えたのちに,上のような絵を描いたという。左列の上から「静止した車輪」「安定した動きの車輪」「断続的な動きの車輪」,右列の上から「不安定な動きの車輪」「目にも留まらぬ速さの車輪」「停止する車輪」を表現しようとしている。

どうだろう, Armağan が心の目で描いた「動き」は,目の見える人たちにも伝わるものになっているかな? Kennedy らは 24 名の学生を被験者として,これらの絵が表現しようとしたものを選択肢の中から当てさせるという実験を行った。その結果,「断続的な動き」と「停止」については誤答が多かったものの,他は高い確率で表現上の意図を伝えることができているということが確認された。

Armağan が描いた絵をよく見てみると,そこに「動線」のようなものの存在を見つけることができる。氏をよく知る人によれば,氏はこれまでに「動いている車輪」を描いたことはないし,ここに見られるような表現手法を用いたこともないという。もし,その言を信じるとすれば,目の見えない――つまり視覚器を持たない人でも,「動き」を表現するために「動線」を用いるという発想に至ることができたということになるのかもしれない。

氏の絵には,一般的な「動き」の表現手法をいくつか見つけることができる。「動線」はそのひとつだし,回っている車輪のスポークを描かずに同心円状の線を描いたのも,マンガ的と言えるかもしれない。「停止する車輪」に添えられている波状の線もマンガ的な表現だし,「不安定な動き」を表現するのに車輪を縦に歪ませているのも興味深い。

ただ,それとは逆に,あまり一般的ではない表現も見つけることができる。例えば,「安定した動き」では地面の線を左半分しか描いていない。これには何らかの意図が感じられるものの,「動き」を表現する手法としては一般的でないと感じられる。また,動線を車輪の上端にしかつけていないのも興味深い。「目にも留まらぬ速さの車輪」に見られるような動線の描き方は,かなり一般性が高いと思うのだけれど……。

Kennedy らはこの論文において,実験の結果とその考察を記しているものの,特に何か新しい仮説などを提示しているわけではない。そもそも「全盲の画家」という非常に特殊なケースを扱っているだけに,一般性のある話題に広げることは難しいのかもしれない。でも,非常に特殊なケースであるがゆえに興味深いというのも確かなことだと思う。目の見えない人にも「動き」の表現を描くことができたということは,「動き」の知覚において視覚器の占める重要性というものは,人々が考えているほどには大きくないということを示唆しているとは考えられないかな?

参考資料

Kennedy, J. M. and Merkas, C. E. 2000. Depictions of motion devised by a blind person. Psychonomic Bulletin and Review, 7, 700-706.

Motluk, A. 2005. Senses special: The art of seeing without sight. The New Scientist.

Burr, D. C. and Ross, J. 2002. Direct Evidence That "Speedlines" Influence Motion Mechanisms. The Journal of Neuroscience, 22, 8661-8664.

Kim, H. and Francis, G. 1998. A Computational and perceptual account of motion lines. Perception, 27, 785-797.

Ignatz Archives: Krazy Kat.

Principle of explosion

2007-04-23

070423_0.jpg
Photo by macwagen (from Flickr)

古典論理学において,矛盾はあってはならないもの。矛盾がひとつでもあれば,そこからなんでも証明することができてしまうっていうんだからね。

論理学における矛盾 (contradiction) とは, p∧¬p ("p and not p") が真となるような p のことを指す。このような p さえあれば,そこからあらゆる命題を証明することができる。例としてここでは任意の命題 q を証明してみることにしよう。

まず,命題 p∨q ("p or q") について考えてみる。前提から p は真だから, p∨q も真。

ここで (a∨b)∧¬b├a ("a or b" かつ "not b" のとき a)という推論規則のことを思い出してみよう (disjunctive syllogism).

p∨q が真なのは先の通り。かつ前提より ¬p も真。よって,上の推論規則から q を推論することができる。

……ということで q が証明できてしまった。 q のことなんて何も知らないのに! このように,矛盾からはあらゆる命題を証明することができてしまう。これを "principle of explosion" と呼ぶ。直訳するなら「爆発の原則」かな……ちょっとかっこ悪いけど。

知識の中の矛盾

2007-04-24

070424_0.jpg
Photo by Taro416 (from Flickr)

矛盾はすべてを台無しにしてしまう――古典論理学に拠っていこうとする限り,無矛盾性 (consistency) は絶対に守らなければならない聖域としてあり続ける。古典論理学を体系の基盤に持つ数学の諸分野や計算機科学の領域においては,(それが確かめられたものであるかどうかはともかくとして)無矛盾性を求め続けなければならない。

でも,ちょっと考えて見てほしい。実世界のあらゆる問題領域において,矛盾を完全に排除することなんてできるかな?

例えば,次のような,ごく簡単な知識ベースがあるとする。

悲しいかな,この知識ベースはちょっとした矛盾を抱えている。決して間違っちゃいないんだけどね。でも,古典論理に基づいて推論を行う限り,その推論は破綻をきたすことになる。

「トゥイーティーは空を飛べないか?」と問えば yes と答えるだろうし,「トゥイーティーは空を飛べるか?」と問いかけてみても,やはり yes と答えてしまうだろう。この知識ベースは,そういう推論が可能な矛盾を含んでいる。

まあ,そこまではよいとして,次は「ペンギンは鳥ではないか?」と問いかけてみよう。恐らく yes と答えてしまうだろう。矛盾がそういう推論を可能にしてしまう。さらには,「日は西から昇るか?」と問いかけてみても,やはり yes と答えてしまうかもしれない。これはさすがに困ったことになってしまう。結局,矛盾は何でも推論を可能にしてしまうんだ。

もっとも,この例のように簡単な知識ベースであれば,修正によって矛盾を排除することができるかもしれない。でも,それがもっと膨大かつ複雑な系を成していたとしたら,同じことは言えるかな?

例えばオープンソースの知識ベース OpenCyc には,約4万7千種の概念と,30万個の宣言が登録されているという。恐らく,この知識ベースから矛盾を完全に取り除くことは,どうやってもできない。このような知識ベースを有効に扱うには,矛盾を許容することのできるような論理体系がなくてはならないと考えられる。

Paraconsistent Logic

2007-04-25

070425_0.png
Image from Villadsen's paper

Villadsen, J. 2002. Paraconsistent Knowledge Bases and Many-Valued Logic. Baltic DB & IS 2002, 2, 77-90.

古典論理においては矛盾からあらゆることが導かれる。ゆえに矛盾を排除しなくてはならない。でも,もし矛盾による "explosion" が発生しないような体系を組み上げることができたならば,そこでは矛盾を「許容」することができるかもしれない。このような論理体系のことを「パラコンシステント論理」 (paraconsistent logic) あるいは「矛盾許容論理」 (inconsistency-tolerant logic) と呼ぶ。

上の論文はデンマーク工科大学の Jørgen Villadsen 助教授によるもので,簡単かつ具体的な例を用いながら,非常に分かりやすいかたちで矛盾許容論理を解説しようとしている。数学の専門家でなくても読めるようなレベルに収まっているのが嬉しい(他の文献は難しくて読めたものじゃない……)。

「矛盾許容論理」という語は何か特定の体系を指しているわけではなくて,その目的を達成するには様々な方法が考えられる。 Villadsen はここで Belnap の四値論理を例として用い,これが矛盾による "explosion" を防ぐ性質を持つことを示している。四値論理において真偽の値は「真」と「偽」のふたつだけに留まらない――「真でも偽でもない」あるいは「真であり偽でもある」という「中間的な真偽値」が存在する。

矛盾許容論理をうまく用いれば,矛盾のある情報も扱うことができるようになるだろう。だたし,矛盾による "explosion" を防ぐために古典論理が持つ性質のいくつかを代償にしていることも忘れてはいけない。例えば,矛盾が存在しないことを前提とした背理法などは,一般に使うことができなくなる。また,「推論の弱さ」から応用の幅が狭められることも推察される。そういった代償があってもなお有効性の認められる分野にならば,応用の可能性は考えられるのかもしれない。

Yesno

2007-04-26

070426_0.jpg
Photo by bcostin (from Flickr)

ある体系において,矛盾は必ずしも排除しなければならないものではなく,それを許容することもできる。論理学の分野でそれをやったのが矛盾許容論理だったのだけれど,同じことをプログラミング言語の分野において行うことはできないかな?

パラコンシステントなプログラミング言語を作ろうという試みは既にいくつかなされている。例えば ParaLog と呼ばれる言語は,論理型言語として有名な Prolog に対して矛盾許容のコンセプトを足したものであるとされる(資料が手に入らないので詳細は不明)。

最近の試みとしては,ウェスタンオンタリオ大学は Mike Burrell による Yesno と呼ばれる言語が面白い。通常のプログラミング言語が無矛盾性 (consistency) を重視し完全性 (completeness) を放棄するという姿勢にあるのに対して, Yesno はその逆を目指す――つまり,矛盾を含むセマンティクスを採り入れることによって,完全性を備えたプログラミング言語を構築することができるのではないか,と。 Lambda the Ultimate の表現を借りるならば,まさに「ゲーデルのコインの裏側」に位置するプログラミング言語といえる。

プログラミング言語としての Yesno はオブジェクト指向の形をとっており,その構文は Smalltalk に酷似している。ただし,メッセージの送信を行う際に「送信した場合」と「送信しなかった場合」の二通りの処理を行うという,非常に特殊なセマンティクスを採用している。メッセージの送信をまったく行わなければ,すべての処理は即座に終わることが明らかだから,これにより完全性を保証することができる。ただし,「送信しなかった場合」の処理からは「正しくない結果」しか得ることができない。「送信した場合」の処理が無事に終われば,そこから「正しい結果」を改めて得ることができる。

Yesno を用いれば,任意のコードの停止性を判定するプログラムを記述することも難しくない。

Closure addInstanceMessage: "halts" withMethod: [|
    z := false.
    self do.
    z := true.
    return z.
].
return [: 5 * 5 * 5 ] halts.

この例では "5 * 5 * 5" の停止性を判定して返す。このように,与えられたコードが即座に停止するものであれば "{true}" が結果として返される。あるいは即座に停止するものでなければ "{true, false}" が返される。「停止するか,しないか,そのいずれかです」なんて答えじゃ,停止性問題を解いたとは言えないけれど,例えば人工知能などのように,厳密な正しさよりも適当な答を確実に返すことができるという性質の方が重要である場合などには,このような思想が役に立つのかもしれない。