2008-11-29 市内大衆浴場―アクティビストたちの暴走―
某日,市内某お風呂を調査してきました。ちょっと大変なことになってしまいました。アクティビストたちの暴走に巻き込まれてしまったのです。
延命治療を受けた廃墟
はじめに調査したお風呂の説明をします。そのお風呂は市内の僻地にあります。一説によると資産家の老夫婦が,道楽で経営しているお風呂なんだそうです。
お客さんはほとんどいません。私は21時から24時まで調査したのですが,その間に来たお客さんは(私を含めて)6人くらいだったと思います。どう考えても赤字経営なのです。
建物は1980年代前半のものらしい。1階が浴場で,2階以上が賃貸マンションという変わった造りでした。おそらく風呂とマンションの経営者が同じなのでしょう。
施設に潜入してみたのだが,延命治療を受けている廃墟のような雰囲気でした。繁盛していないせいか,まるで活気か感じられなかったのです。
真理子とヒロシ
私は体を軽く洗ってから,スチームサウナを調査することにしました。するとどうでしょう。すでに真理子とヒロシが乳繰り合っていました。
真理子は34歳くらい,ヒロシは41歳くらいだと思います(舘ひろし風の人だったので,ヒロシってことにしておきますね)。じつは真理子とは,駅前便所で過去に何度か話したことがあって言ってみれば「知り合い」でした。
さて,スチームサウナに入っていると湯気なのか汗なのか分かりませんが,顔が水まみれになってきます。私はたびたび手で顔の水気を拭っていました。そうやって,私が二人の動向に注視しなくなったときの出来事でした。お二人は突然,禁じられた行為を始めたのです。
私は「なに?なに?突然,始まっちゃったの?え?」と当惑しました。たしかに前兆はあったのです。真理子たちが乳繰り合っているときに,某個所をほぐしているように見えたのです。でも「まさかそんなはずがね。きちんと場所を弁えられる子よね?」と,真理子たちのことを信じていたのです。
アクティビストたちの暴走
私は事態の急展開に呆然としてしまいましたが,しばらくして正気を取り戻すことができました。「このままじゃいけないわ」と思いました。真理子たちは,某ゴム製品を使わずに交渉していたのです。
一旦,調査を切り上げロッカーへ走りました。「多い日でも安心セット」を取りに行ったのです。あの有様をどうして放っておけるというのでしょうか。いま真理子は,着床の危機に瀕しているかもしれないのです。「余計なお節介になるのかもしれないけれど,いま何もしなかったら一生後悔するかもしれないわ」と思ったのです。
ところがスチームサウナに戻ってみると,すでにばい菌の培養は終了してしまったらしく,二人は何食わぬ顔をしていました。ヒロシは用事が済んだからなのか,さっさと帰ってしまいました。
私はがっかりしました。真理子がこれほどまでの自虐行為に及ぶとは,想像していなかったのです。「二人ともアクティビストだったのかな」とも思いましたが,本人に尋ねるわけにはいきませんでした。伝聞ですが,アクティビスト同士が了解の上でそういうことをするのは珍しくないそうです。
とても後味の悪い調査になってしまいました。これからサウナを調査するときは,浴室まで安心セットを持参しなければならないのかもしれません。「富山の薬売り」みたいな話になってきましたね。気合が入りすぎているようで嫌なんですけれど,いまのご時世を考えるとやむを得ないのかもしれません。こうやって私は,だれも理解できない上級者になっていくのでしょうね(なぞ)。
2008-11-26 2008年NHK紅白歌合戦―この出場者の差し歯と整形に注目―
NHK紅白歌合戦の出場歌手が発表されたそうです。私は毎年,出場者の差し歯や整形を観察しています。
今日は,私が注目している出場者の見どころをご紹介します。この情報は,芸能人の差し歯や整形に興味があるけれど,どこがどうなっているのか分からないという人に最適です。何の役に立つのかは知りませんが(なぞ)。
白組
- EXILEのTAKAHIRO ― 丸坊主じゃない方のヴォーカルです。上顎1|1が差し歯だったはず。歯肉にも注目
- 水谷豊 ― 総差し歯。上顎の歯が取れそう
- Mr.Childrenの桜井和寿 ― 上顎1|1が差し歯だったはず。この人は口がぱっくり開くので,臼歯の治療跡にも注目
- 森進一 ― しわ取り注射による表情の消失。部分かつら
紅組
- 中島美嘉 ― いまごろ鼻に注入治療しているのでは。日頃からプチ整形の限界に挑戦している人なので,みんなで応援してあげましょう
- SPEED ― 仁絵ちゃんの肌。陥没して大変なことになっているらしい
- 倖田來未,浜崎あゆみ ― 今となっては定番のおふたり。たぶん差し歯に変化はないと思うが念のため
2008-11-15 [mixi出張所] デイサービス・マット
mixi日記に「デイサービス・マット」を公開しました。マイミクあるいは,マイミクのマイミクのみ閲覧できます。
<画像の説明>デイサービス・マットの資料画像です。私は積極的に高演出性おさかんメソッド(詳細ふめい)を研究しています。
2008-11-12 顔にメスを入れてきました―生理が遅れて困っています―
先週末,耳たぶのほくろを切除する手術を受けてきました。予告では11月中旬に手術すると言いましたが,11月上旬の間違いでした。すみません。
<画像の説明>手術後,当日の患部の様子です。血が滲んでいるのです。最初,患部だけを切り出した画像にしようと思っていたのですが,事後に顔だと分かる画像に差し替えました。接写しすぎると,如何わしい画像に見えてしまうことに気づいたのです。それから,まだ秋の美白をしていないので,この大きさで撮影すると被写体として厳しいものがあります。(例年だと,秋にはビタミン剤で肌を脱色するんだけれど,今年はまだやっていないの。モノには順番があるでしょ。)
さて,術後の経過は抜糸後にまとめてお話するつもりでいたのですが,小出しにすることにします。いろいろと困ったことが起きているのです。
お風呂に入れなくて困っています
患部の傷口は小さいのですが,(当たり前ですが)水に濡らしてはいけないそうです。当然,お風呂が面倒なことになっているのです。
洗面台で髪の毛と顔を洗ってから,お風呂場で体だけを洗うようにしています。どうもすっきりしません。しかも洗顔が不十分なせいか,久しぶりに顔に巨大な吹き出物までできてしまって,ほくろの跡地に構っている場合ではなくなってきました。
筋トレの真似ができなくて困っています
また当たり前の話なんですけれど,術後数日は激しい運動を控えなければなりません。5月からほぼ毎日,筋トレの真似をしてきましたが,いまはお休みしています。
運動するのを止めたせいか,体調が悪くて困っています。血流が滞っているんですよね。でも運動して血の巡りが良くなってしまうと,患部から出血するだろうし(まだ傷口は閉じていないのです),汗もかいてしまいます。
汗をかいてもおいそれとはお風呂に入れない,というわけでしばらく筋トレの真似は我慢するしかなさそうです。
生理が遅れています
最後は意味不明かもしれません。数えてみたら2週間弱,生理が止まっています。これは大変なことです。
手術当日に体調を崩していてはいけないと思って,しばらく活動を控えていたのです。術前は気軽に構えていたのですが,まさかこれほどの長期戦になろうとは,想定していませんでした。
どうやら,いまから「多い日」の到来に備える必要がありそうです。いまからメールしておきます(なぞすぎ)。
2008-11-11 ガチムチを見ると興奮する数式(きかい)
ガチムチを判定する関数を作ってみました。
Public Function gachimuchi(bmi As Double) As Double Dim h1, h2, o1 As Double bmi = bmi / 50 bmi = bmi - (21.25 / 50) bmi = bmi / 0.2 h1 = 1 / (1 + Exp(-(bmi * -7.26 + 5.61))) h2 = 1 / (1 + Exp(-(bmi * 8.82 - 2.2))) o1 = 1 / (1 + Exp(-(h1 * 5.31 + h2 * 4.96 - 9.26))) gachimuchi = o1 End Function
<画像の説明>作成したガチムチ関数のBMIスペクトルです。この関数は,ある体型のガチムチの度合いを百分率で返します。ガチムチを見ると興奮する数式(きかい)なのです。オカルトかもしれませんね。
さて,どうしてこんなくだらないものを作る気になったのか,少しお話します。近々,投入予定の「ガチムチ診断チャート」のための布石なのです。ガチムチ診断チャートの構想は2006年あたりからあるのですが,作業が難航していました。今まで,ガチムチの分布関数をどうやって作ればよいのか,思い浮かばなかったのです。
私は,「ニューラルネットワークを使えば,ガチムチ関数を作れるはずだ」ということにかなり前から気づいていました。実際に試してみたらできちゃったので,手順を少しお話します。
社会現象を定式化するには
「ガチムチ関数を作る」なんて言うと,バ○っぽく感じた人がいるかもしれません。言い方次第なのです。「社会現象を観測して,その現象を定式化する作業」と言い換えてみたらどうですか。途端に高級な感じがしてきたのではないでしょうか。
どうすれば社会現象を定式化できるのでしょうか。一般的な手順は以下のようになるでしょう。
- 社会現象を観測して記録する
- 記録した情報から特定の情報を抽出する
- 抽出した情報を集計する
- 集計した情報を正規化(加工)する
- 正規化した情報を定式化する
今回のガチムチ関数は,上記のひとつでも欠けていては実現できません。私はこれまで観測から正規化までは自力でできたのですが,その先の定式化ができませんでした。ところが,11月上旬にニューラルネットワークのお勉強をしたことで,定式化の一手法をついに習得しました。
ガチムチの素,教師信号を得る
今回,近似関数を得るためにニューラルネットワークを使いました。ニューラルネットワークを誤差逆伝搬法で学習させるには,教師信号が必要です。教師信号とは入力と出力のお手本です。「学習」というのは名前の通り学習であって,お手本どおりの信号を出すことを指します。
今回は,以下の手順で教師信号を用意しました。
- データベースからガチムチと呼ばれる身長と体重の一覧を抽出する
- 身長と体重をBMIにする
- BMIを階級に分けて,各階級の出現頻度を算出する
- 出現頻度を百分率にする
- 出現頻度が全体の5%未満の階級は切り捨てる(雑音の除去)
- BMIの中間値(Median)を算出する
- BMIの下限と上限を算出する
- BMIの下限と上限を0.0~1.0の範囲に修正する
教師信号は「下限」「中間」「上限」の3点だけにしました。最初は,実在する数値を片っ端から学習させれば良いと思っていたのですが,やってみたら「学習しない」「精度が低い」と悪いこと尽くめでした。
階層型ニューラルネットワークは,中間層ニューロンの数次第でどんな関数でも近似できるそうなのですが,学習が成功するかどうかは別問題のようです。
<画像の説明>学習により得たニューラルネットワーク。
BMIスペクトル
<画像の説明>ガチムチ以外にも,「スジ筋」「筋肉質」「デブ」の解析も済ませたので,ガチムチと合わせたBMIスペクトルをお見せしましょう。感心する人よりも,呆れた人の方が多い気がします。こんなことに労力を費やして,いったい何の役に立つのやら。いちばん心配しているのは私自身です(ふめい)。
今回,新たな発見がありました。BMI 24の近辺が,いちばんややこしい状態になっているのですね。BMI 24は筋肉質でもあり,ガチムチでもあり,デブでもあるのです(びっくりマーク)。
BMI 24は身長を171cmにした場合,体重は70kgになります。この数値は「身長から体重を引いて100くらい」というあの名文句に対応するのですよ。いちばん苦情の多い体型のような気がするのですが,どうなんでしょうね。定式化してもなお,ガチムチの謎は深まるばかりです。
»固定リンク »151.虹色業界人の国勢調査 »ガチムチの謎 »気ままに人工知能
2008-11-08 Excel/Visioでニューラルネットワーク
連休中に多層パーセプトロン型のニューラルネットワークの実験をしました。
「唐突に何言ってるの?ニューラルネットワークって何?」と思った人がいるかもしれません。ニューラルネットワークは,生物の脳の神経細胞を数理的なモデルにしたものだそうです。説明しているサイトは山ほどあるので,興味のある人は検索してみてください。
ニューラルネットワークは,学術的には人工知能のひとつだとされています。人工知能ってコトバは何やら怪しげで,別世界の高度な処理を指しているかのように思えるかもしれません。なんてことはありません。細部を見れば数値を足したり・引いたり,メモリをコピーしたり,処理を条件分岐しているだけです。現在のコンピュータで実現できるのですから,当然なのです。
私は今後,人工知能サービスを整備していくつもりでいます。人工知能と呼ばれているものには数種類ありますが,「ニューラルネットワーク」「制約充足問題」「遺伝的プログラミング」の3本柱をぜひ習得したいと思っています。得られた成果物は,アルゴリズム株取引の売買判定や,アルゴリズム・アフィリエイトの商品の最適化などに使います。
第一弾として,Microsoft Officeにニューラルネットワークを実装してみました。経緯と実験結果をお話します。
準備
じつは私,ニューラルネットワークと無縁だったわけではないのです。学生時代,お向かいの研究室のお題がニューラルネットワークだったのです。何度かそのゼミの研究発表を見ていたので,どんなものなのかはだいたい知っていました。でも当時は大した興味はなくて,「これって何に使うんだろうね」くらいにしか思っていませんでした。
時は流れて2008年,私は自力でニューラルネットワークを実装してみることにしました。今回,主に参考にした本は「臼井支朗」先生らによる「基礎と実践ニューラルネットワーク」です。この本もそうなのですが普通の専門書では,ニューラルネットワークを数式で説明しています。見慣れない用語もいっぱい出てきて,私の能力で理解できるのか心配になってしまいました。以下に,遭遇した専門用語を並べてみますね。
- ニューロンの値
- ニューロンの学習率
- エラー値
- モーメンタム因数
- 重み
- 重み変更係数
- バイアス重み
- バイアス値
最初の難関は「これらの要素が何に属するものなのか」を正確に理解することでした。ニューラルネットワークは,広義にはグラフ(度数分布表のことではなくて「頂点と辺の集合」のこと)です。要素は,「頂点」または「辺」のどれかに属するのです。数式の意味を紐解いて,グラフに当てはめていくことにしました。
つぎの難関は「何をどうやって作るのか,何ができれば良いのか,何をやらないのか」を決めることでした。この手のシステムは,目指すべき世界がはっきりしていないといけません。曖昧なままでは,できたものが役に立たなかったり構造が歪になったりしてしまうのです。要件を箇条書きにします。
- 抽象度を落さない
- 処理速度,メモリ効率は重視しない
- 学習方法には誤差逆伝搬法(バックプロパゲーション法,Error Back Propagation Method)を使う
- 扱うニューロンの数は100未満
- 学習中の過程,学習結果,ニューラルネットワークの特性をグラフィカルに表現・出力できるようにする
- ニューラルネットワークを数式に展開し,Excelで使える関数を出力する機能
Excel VBA/Visio VBAでニューラルネットワーク
ニューラルネットワークの数理的なモデルと,ソフトウェアの要件が分かったような気分になったところで,実装方法を詳しく検討することにしました。
巷には,C/C++言語で書かれたニューラルネットワークのサンプルプログラムが溢れています。これを活用しない手はありません。オライリージャパンの「ゲーム開発者のためのAI入門」と「集合知プログラミング」という本にニューラルネットワークのサンプルプログラムが載っていたので,VBAで実装する際はこれらのコードを参考にすることにしました。
つぎはデータ構造のお話です。たいていのニューラルネットワークのサンプルプログラムは,隣接行列表現(ようは2次元配列)で書かれているようです。私は隣接行列表現ではなくて,隣接リスト表現を採用することにしました。ニューロンとニューロン同士の関係をオブジェクトにして,モデルの抽象度をほどんと変えずに実装することにしました。しかし,データ構造を大胆に変えたがために,入手したサンプルプログラムはほとんど役に立たなくなってしまいました。
どうして,わざわざ遠回りしたのかというと「ニューロンに自律的な振る舞いをさせたい」という思惑があったのです。ニューロンを指して「あなたのいまの値は?」と尋ねれば,値が返ってくるようにしたかったのです。学習中にはニューロンオブジェクトが能動的に描画オブジェクトを書き換えて,ニューラルネットワークの様子をグラフィカルに構築するようにしたかったのです。
<画像の説明>ソフトウェアの静的構造です。UML風に描いてみましたが,UMLの細かい決まりを意識しているわけではありません。しかも,このままではVBAの言語仕様から逸脱しているのです。実際にはVBAに合わせながら実装しました。
静的構造が決まったところで,Excel VBAで実装してみることにしたのだが,大問題に気づきました。辺(Edge)を表現する描画オブジェクトに「コネクタ」を使っていたのだが,Excelのコネクタにはテキスト属性が存在しないのです。これでは辺の値を表示できません。いやはや調査不足でした。急遽,Visio VBAに載せ替えることにしました。
余談ですが,ExcelとVisioでは描画周りのフレームワークにほとんど共通点がないのですね。派生元の文化の違いを垣間見た気がしました。
XOR問題を解かせてみたら
ソフトウェアが仕上がったので,2入力のXOR(排他的論理和)をニューラルネットワークで解いてみることにしました。
<画像の説明>学習後のニューラルネットワークと,入出力の特性を図にしてみました(ニューラルネットワークはVisio上に半自動で描画されます)。
「普通,XORの入出力は2値なんだから,入出力が連続値(実数)なのはおかしい」と思った人がいるかもしれません。どんな形の関数なのか見たかったので,連続値を入力してみたのです。
「XOR演算できたからといって,何の意味があるの?ニューラルネットワークなんか使わなくても計算できるんじゃないの?」と思った人もいるかもしれません。XOR演算は,この業界の基本例題なのです。例題は例題であって,それ以上の意味はありません。
ついでにニューラルネットワークをVisual Basic相当の式に展開してExcel VBAの関数にしてみました(下のコード)。あまり見かけない形式かもしれません。
Public Function nnxor(i1 As Double, i2 As Double) As Double Dim h1, h2, o1 As Double h1 = 1 / (1 + Exp(-(i1 * 5.75629288124718 + i2 * 5.87868353255397 - 2.3117209662348))) h2 = 1 / (1 + Exp(-(i1 * 2.91199452973333 + i2 * 2.93085382671416 - 4.39555060504074))) o1 = 1 / (1 + Exp(-(h1 * -6.92972808917433 + h2 * 7.85290876041432 + 2.83947285639982))) nnxor = o1 End Function
最後に,気づいたことと残された課題を箇条書きにして終わりにします。
- ソフトウェアが正確に仕上がっているのか,十分に検証できていない
- 学習過程をグラフィカルに表現する必要はなかったようです。グラフが書き換わる様子をアニメーションで見られるのは面白いはずだと思っていたのだが,実際にやってみるとネットワークが成熟していくようには見えませんでした。期待外れ