安敦誌


つまらない話など
by antonin
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
検索
最新の記事
水分子と日本人は似ている
at 2016-06-04 01:49
ほげ
at 2015-06-05 03:46
フリーランチハンター
at 2015-04-17 01:48
アメリカのプロテスタント的な部分
at 2015-04-08 02:23
卯月惚け
at 2015-04-01 02:22
光は本当に量子なのか
at 2015-03-17 23:48
自分のアタマで考えざるを得な..
at 2015-03-06 03:57
折り合い
at 2015-03-01 00:19
C++とC#
at 2015-02-07 02:10
浮世離れ補正
at 2015-01-25 01:21
記事ランキング
タグ
(294)
(146)
(120)
(94)
(76)
(64)
(59)
(54)
(45)
(40)
(40)
(39)
(32)
(31)
(28)
(27)
(25)
(24)
(22)
(15)
最新のコメント
>>通りすがり ソ..
by Appleは超絶ブラック企業 at 01:30
>デスクトップ級スマート..
by 通りすがり at 03:27
7年前に書いた駄文が、今..
by antonin at 02:20
助かりました。古典文学の..
by サボり気味の学生さん at 19:45
Appleから金でも貰っ..
by デスクトップ級スマートフォン at 22:10
以前の記事

Don't think. Feel.

迷惑メールの仕分けをニューラルネットワークで実現できるだろうか、というようなことを昨日書いた。多分それを実装する時間と気力はないが、アイデアだけでも少し書き残しておこう。

昨日の話しで「おばあさん細胞」という言葉を使ったけれども、あれは3回くらい流行の波があったニューラルネットワーク理論の活性期に使われた単語だ。つまり、脳細胞ひとつ当たりの情報処理能力というのは比較的高く、自分のおばあさんを見たときにだけ、選択的に興奮するような細胞があるのではないかという仮説があった。これは本気の仮説というよりも、ニューラルネットワークの動作に対する、よくある誤解を強調するためのレトリックという面が強かった。

参考:「脳の世界:京都大学 霊長類研究所」より「おばあさん細胞(認識細胞)は存在するか?

脳の働きは、一般に「パターン処理」という原理から成立しているといわれている。パターンとは、単独で意味のある情報が集まったものというのではなく、多くの情報が集まったときの組み合わせに意味があるような情報を指す。一番わかりやすいのが、ビットマップ画像だろう。それぞれのドットがどんな色をしているかということに意味はなくて、それらを2次元に並べてみて初めて、それが風景だったり人物だったり文字だったりということが理解できる。これがパターンだ。

昔のデジタル時計は、7セグメント方式という表示を使っていた。これがパターンの考え方とおばあさん細胞の考え方の違いを理解するためには、単純で良い例になる。

参照:「7セグメントディスプレイ - Wikipedia

この7つの線の組み合わせを使って、0123456789と10種類の数字を表現できる。Wikipediaのページにあるように、AbCdEFも含めた16進数も、なんとか表現可能だ。7本のセグメント(線分)が、それぞれ独立にオンとオフの状態を取れるため、理論的には27=128種類の状態を表す事ができる。実際には人間の目で読み取れなくてはならないという制限があるので、意味を持たせることのできるパターンは、マイナスやイコールなどの記号を含めてもせいぜい30種類程度ということになる。

ところで、7セグメント方式で数字しか表示しないとすると、右列上のセグメントが消えるのは5と6のときだけである。だから、このセグメントは数字の5や6の認識のために特別な意味を持っているのではないか、と推論したくなる。しかし実際はそんなことはなくて、感覚的にも明らかな通り、7本全部のセグメントが、0から9までの全ての数字と等しく関連を持っている。右上のセグメントを破壊したからといって、数字の5と6だけが選択的に表現不能になるわけではない。どの数字もそれなりに影響を受ける。これがパターンというものだ。

脳には億単位になる個数の神経細胞があるといわれる。「脳にある細胞」という意味では100億を超えるらしいが、その多くはグリア細胞などの支援組織に属するものであって、実際に情報処理を担っている神経細胞の数は10億に満たない程度だという。これをもって、人間は脳細胞の数パーセントしか使っていないという説もあるようだが、脳細胞にも神経細胞以外の細胞がたくさんあるというだけであって、それを活かせば能力数十倍というのは単なる勘違いだ。

脳細胞はトランジスタと配線、グリア細胞はトランジスタの保護と絶縁を確保する樹脂のようなものだ。パソコンのうち、実際に計算をしている部分(シリコンチップ)は全重量の1%に満たないというのは本当だが、残りの部分を活用したからといって計算能力が上がるわけではない。もちろん使いようというものはあって、どのようなソフトウェアを走らせるかで同じパソコンの能力が全く変わるというのもまた現代人なら実感できるだろう。

脱線したが、脳細胞をモデル化したものであるニューラルネットワークも、パターン処理の原則によって情報を処理する。ひとつの神経細胞にはそれぞれ独立の結合度を持ったシナプスが千個単位でつながっており、ここから入ってくる刺激の合計値が一定量を超えると、その細胞は「発火」する。イオン濃度の差による濃淡電池になっている細胞内の電位は、細胞膜を挟んで平常時はマイナス側になっている。この神経細胞が入力による刺激で発火すると、きわめて短時間だけ細胞内の電位がプラス側に反転する。この変化は細胞膜を伝わって細胞表面を伝達していく。

細胞のどこかで生じた発火状態(活動電位)はその細胞の表面を焼き尽くし、出力用のシナプス全てを刺激する。その結果は、シナプス結合度に応じて次の細胞に影響する。原始的で体の小さい動物(ナメクジ)などは神経細胞がただ長く伸びて活動電位を伝えるだけらしいが、人間などの高等で体の大きな動物では、いったいどうやって進化したのか知らないが、ミエリン鞘というものが巻きついた「軸索」というものを持っていて、活動電位はこの鞘の隙間ごとにジャンプしながら駅伝式に伝達される。これによって信号の伝送速度は飛躍的に伸び、大きな体を素早くコントロールすることができるのだという。

また脱線したが、とにかくひとつの細胞は千個単位の入出力を持っていて、そこには短いパルスを通す通信チャネルが1本ずつ存在する。これはパルスを使っているのでディジタル信号のようでもあるが、実際にはパルス密度変調されたアナログ信号となっている。神経細胞は、このようなアナログ信号を千個単位で線形結合した値の関数とモデル化される。この信号を上流の「層」から下流の層へ一方的に流すと、パーセプトロンやバックプロパゲーションのようなパターン応答ができるようになり、これは運動を司る小脳の仕組みに近いらしい。

また、ある細胞の出力が別の細胞の出力になり、回りまわって戻ってくるような双方向型のネットワークになっているとき、一定のパターンをネットワークの一部に入力し続けると、神経ネットワークの信号が徐々に安定して別の部分に出力パターンが現れる。このパターン処理を連想記憶という。一個のシナプスや一個の細胞が代表して一個の情報を蓄えるのではなく、多くの細胞間の多くのシナプスが共同して、複数の情報を蓄えているのが神経細胞のネットワークの原則になっている。

もしもニューラルネットワークに迷惑メールの仕分けを学習させようとすれば、単純にメールのビットを全部突っ込むのは効率が悪い。人間がある程度経験をつぎ込んで、パターン認識に必要な情報を抽出してやる必要がある。人間の視覚であれば、長い年月をかけた進化によって、網膜で視神経数個の情報を取りまとめる処理や、その信号から直線の傾きや連続した動きを抽出できる神経回路が先天的に発生するようにできている。だから、この遺伝的な部分は設計者の仕事だ。そこで抽出されたパターンをどのように認識したり記憶したりするかが、ニューラルネットワークの仕事だ。

蝸牛による音声のスペクトル分析なども含めて、この遺伝的な作りこみの部分こそが、人間がなぜ自然には存在しないはずの「直線」や「三角形」といったアプリオリな抽象概念を持っているのか、という哲学的な疑問に対するひとつの答えになっているのだろうとは思うが、今はそういう議論は措いておく。

迷惑メールの文字列から、どのような情報を抽出してパターン化するのがいいだろうか。ニューラルネットワークを使うからには、なるべく先入観を入れないようにしたいが、無駄な情報は極力切り捨ててからネットワークに与えたい。複数の角度からメールを分類し、それぞれに対応したパターンを作り、それらを組み合わせてネットワークに与えるといいだろう。

まずは、ヘッダー分析。From, To, Receivedなどの各フィールドからハッシュ値を求めて、それぞれ数十ビットのパターンにまとめるといいだろう。これを項目名を表すパターンと対にして、ヘッダー分析セクションに投入する。本文や添付文書のMIME種別("text/plain"とか"text/html")などもあわせて与えてみるといいだろう。これだけでもかなり重要な情報が得られるだろう。

加えて、メールアドレスやドメインネームはアットマークやドットで区切って処理し、それぞれ独立に扱ってもいいだろう。"123.com"のように、やたらと数字比率の多いドメインなども区別しやすいように文字列の数字比率なども抽出するといいかもしれない。ReceivedとFromとReply-Toの差分情報なども有益かもしれない。これらに同じドメインが多いか異なったドメインが多いかという情報は、判断に使えるだろう。

また、日本語メールにおいては文字コードも重要になってくる。日本語が適切にエンコードされていないためにタイトルが文字化けしているようなメールを検出できるような情報を抽出する必要がある。これはそう難しくないだろう。

最後に、本文の解析が必要になる。これが一番難しい。おそらくは、ヘッダ解析でほとんど解決するのだろうが、ヘッダだけでは判断できないような「きわどい」メールに関しては本文の情報も参考になるだろう。ただし本文は情報量が多いわりに決定的証拠が少ないので、情報はかなり深く加工して、多くをそぎ落とす必要がある。

本文は、大雑把にパターン頻度を抽出する。文字列を8バイトくらいごとに区切ってハッシュで10ビット程度に圧縮する。次に2バイト移動してこれを繰り返す。これら全てのヒストグラムを作り、1つのクラスの相対度数を1個の実数で表すと全部で千個程度の情報になるから、これを本文分析セクションに送る。プロセッサ能力が私の予想以上にあって、もっと大きな入力を処理できるようであれば、ハッシュ値を16ビット程度にして6万階級程度の規模にしてもいいだろう。

これが思惑通り機能すれば、ニューラルネットは「あ、この文面見覚えがあるぜ」とか、「あ、これはちょっと良くない感じだな」という判断が出来るようになる。もちろん本当にシミュレータがそんなことを考えるのではなくて、「感じる」という過程に近いものを再現するはずだ。左側は右側よりニンジンの甘い味がするように加工した紙の上にナメクジを置く。するとナメクジは、「あ、こっちのほうがいいな」ということを、考えるのではなしに「感じる」だろう。これをもっと原始的にしたような感じだ。設計者の仕事は、パターンを生み出す「感覚器」を適切に作ってやることだ。

学生時代、SmallTalk-80をベースに書かれたオブジェクト指向の本を読んで感銘を受け、手持ちのCコンパイラで一生懸命オブジェクト指向っぽいコードを書いて、バックプロパゲーションのシミュレータを書いた。そのときは「G感性」の判定ルールの学習などをやったのだけれども、あまりの学習の遅さに業を煮やして浮動小数点演算用のコプロセッサを買った覚えがある。今ではFPUはオンチップになってGHz動作するようになったし、C++の統合開発環境も無料で手に入る。いい時代になったものだ。

この設計を実装に移す時間と集中力があるかというと、おそらくないだろう。でもまぁ、老後の楽しみにこういうことを今のうちに考えて書き残しておくのも悪くないだろう。1日が30000時間あったら明日にでも取り掛かってみたいが、現実には無理だ。
[PR]
by antonin | 2008-08-22 00:28 | Trackback(1) | Comments(0)
トラックバックURL : http://antonin.exblog.jp/tb/9341351
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。
Tracked from 雑学的ブログ at 2008-10-25 08:05
タイトル : 脳の働きを、
ラジオで紹介していました。脳の働きを活性化させるために、折り紙超迫力!恐竜のおりがみと塗り絵大人の塗り絵 世界の鳥編がいいとのことです。特に、難しい折り方や細かい塗り絵のほうがいいそうです。お年を召した方にも効果的、とのこと。私も最近脳が・・・。と思うことがあるのですが、やってみよっかな。「折り紙」で検索してみました。... more
<< 妄想メモ ワクワクが足りない >>


お気に入りブログ
外部リンク
外部リンク
ライフログ
ブログパーツ
Notesを使いこなす
ブログジャンル