現代魔法を操る世界


by kagurayouyou
カレンダー
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
【人工知能・無脳】

自然言語の単語の出現確率などは正規分布に従うのだろうか?

という疑問が今日あった。
少し前まで全ての事象においての確率は、大局的に見れば正規分布に従うと思っていた。
n-gramの重みを正規分布で表そうかとずっと考えていたが、
どうやら多くの事象において違うと言う理論が多いため、
n-gramは正規分布に沿うか怪しい。
ちなみにあくまでも他者の考えを見てn-gramの重みを考えた場合であって、
私自身は正規分布に従わないと考えている。n-gramの出現度は。
と言うのも、正規分布が正負対象な分布であるので、当てはまる言葉が圧倒的に多い、
もしくは圧倒的に少ないと言うのがあると思う。
また、クセが存在するので必ずしも正規分布に従わないというのが私の持論です。
ではどうやって重みを点けるかと言うと、今のところ単純に出現回数における正規化かな
と思っています。
ただこれは最低3-gram以上かなと思っています。
と言うのも、自然言語は前置詞や助詞などが多く入ります。
すると「私は今日朝ごはんを食べました」とすると、
2-gramの場合、「私-は」「は-今日」「今日-朝」などと通常人間は記憶しないでしょう。
3-gramの場合、「私-は-今日」「は-今日-朝」「今日朝ごはん」などならば、
生成を目的として考えた場合、ありえそうです。
(トップダウン的な考え方なので独断です)
とお気づきの方もいると思いますが、これはありふれた(?)手法で、
マーガリン(人工無脳の名)にも使われているらしいです。
ただ、解析には良いのか論文では2-gramは必ず使用されていますね。
これは難しいところです。

解析である場合、2-gramを使用しても問題ないかと思います。
つまりは類似性を求めているわけです。
それならば下手に3-gramを使用しない方がよくなります。
しかし生成である場合、意味の通る文とした場合、できるだけ2-gramを使用しない方が、
良いのです。(生成後に解析して類似性を確かめ、
類似性があるならば意味のある文であるとする場合は違う)

生成の分野は解析の分野より発展は遅れている気はします。(流れから言えば当たり前)
良くてQ&Aの固有表現?
JapanKnowladgeさんの商用(と言っても研究状態)を使ってみましたけど、
やっぱり精度が微妙ですしね。解析精度の各箇所の精度を90パーセントずつに持ってきて、
生成で70パーセントに持ってこないと意味が無いです。
多分今40パーセントくらいだった気がします。
(それでも10回に4回ですごいかも知れないが結構限定的だし)
(あらゆる質問文には1パーセントにも満たないのでは?)
(つまり質問が複雑なのを多くする時)

翻訳ソフトの例で、人間が機械に合わせると言うのもいいですけれど、半々ですね。
陳腐になってしまいますから。
本当にそして欲しい答えは得られない気がする。

つまりは学習器をいくつか用意しておくのが良いのかもしれません。

あとSVMはlearnとか良く使われ学習とか呼ばれますが、
学習は単純にαを求めるために使われるので、本当に学習か?
と言う疑問。
αを入れて計算する部分が学習かもしれない。
いやいいのか?
ちょっと今は判断がつきません。
[PR]
# by kagurayouyou | 2006-10-17 22:58

ネットワークモード追加

【人工知能・無脳】
久しぶりにやる気が出てきた+暇が見つけられたので、
少しバージョンアップ(と言っても非公開だけど)
Linux上のC言語で(これ言いにくいね。なにか良い呼び名は無いだろうか?)
echoサーバを作成しました。ソケットディスクリプタだけど。
単純にWindowsのC#と通信ができれば良かったので。
でWindows上のC#にもネットワーク通信機能を持たせた。
やっぱりヘッドが気になる。
if文が増えますからね。
まあ、少しずつ改良していけばいいのでまずは、一通りの能力をつけさせないと。

サーバを作成することでのメリットはやっぱりLinuxは高速+パッケージの推奨ですよね。
WindowsでCYGWINとかしてもやっぱりネイティブじゃないせいか重いし。
そもそもThreadにしたら動くのか不明。
もちろんローカルモード、サーバクライアントモードと分けるつもり。
Latexでマニュアルや仕様書を書いているけど、かなりめんどくさい。清書用かな。
かと言ってもWordは逆にきれいに書きにくいんだよね。

SQLを迷っていたけれどPostgreSQLに決定。
安全性などを少し考慮した結果。
たぶんMySQLと完全に袂を分かつほどになるにはだいぶ先でしょうけど。
一番多くは辞書データベースになりそう。
しかし、アルクはメタサーチは禁止している。YahooはOKだったかな?ヴィジットあるし。
そこら辺はたぶん法的措置はないんじゃないかな?(←法整備されていないと言うこと)
でもそれでon the WEBが無くなったら不便だし、通常の英辞郎のみできるようにしよう。

久しぶりな日記風でした。

本業の方は理論がぎりぎりなんだけどね。
[PR]
# by kagurayouyou | 2006-10-15 23:04

十分条件の必要条件

【人工知能・無脳】
人工無脳はたいてい文字列を取り扱っています。
予測として、文字はなくならないでしょう。
(固有の言語はなくなるかもしれませんが)
で日本語が消える可能性としてありえるのでしょうか?
つまり言ってしまえば、日本語を対象とした人工知能・無脳は長年にわたって
行われていますが、数百年後に無くなるという可能性はあるかどうかです。
核実験が行われたそうですし。
まあ、結論はわからないので一応は大丈夫だろうという私の見方です。
で、今少しずつ、ほんの少しずつしているのが、文字を使用する条件です。
統計的にするのも間違いは無いのですが、やっぱりルールベースありきなのではないか、
と思うのです。生成の分野にも被りますが、解析の分野にも欠かせません。
それならすでにあるじゃん。
とか言われそうですが、私の行っていることはメタレベルでの解析に挑んでます。
例えば、

・句点「。」の使い方
---句点である必要条件
前後に節をもつ場合は、句点である。
---句点である十分条件
句点が続く場合。たとえば「。。。」などの場合、句点の意味を持つかもしれないし、
記号である場合がある。
---句点でない必要条件
記号が連なっており、絵文字データベースに照合して適合した場合、句点でない。
---句点でない十分条件
記号が連なっており、絵文字データベースに照合して適合しない場合、
句点でない場合がある。

などとあるなしの必要条件、十分条件の4パターンのルールベースを作成中です。
ただ句点である十分条件と句点でない十分条件は同じような気がするので、
3種になるかもしれません。

これは信頼度の高い人物からの忠告の場合、ルールを改変できるようにできます。
例えば、前後に節を持つ場合、句点で無い場合もある。
と言われれば、十分条件に下げることができるようにしたいです。
しかしそれをする場合、というよりこの条件はもちろんif文に他なりません。
忠告は現在のところ定型かプログラムを組む人しかできないでしょうから、
信頼度の高い人物というのも製作者に限られるでしょうけど。
[PR]
# by kagurayouyou | 2006-10-09 22:02

十部う条件の十分

【人工知能・無脳】
人工無脳はたいてい文字列を取り扱っています。
予測として、文字はなくならないでしょう。
(固有の言語はなくなるかもしれませんが)
で日本語が消える可能性としてありえるのでしょうか?
つまり言ってしまえば、日本語を対象とした人工知能・無脳は長年にわたって
行われていますが、数百年後に無くなるという可能性はあるかどうかです。
核実験が行われたそうですし。
まあ、結論はわからないので一応は大丈夫だろうという私の見方です。
で、今少しずつ、ほんの少しずつしているのが、文字を使用する条件です。
統計的にするのも間違いは無いのですが、やっぱりルールベースありきなのではないか、
と思うのです。生成の分野にも被りますが、解析の分野にも欠かせません。
それならすでにあるじゃん。
とか言われそうですが、私の行っていることはメタレベルでの解析に挑んでます。
例えば、

・句点「。」の使い方
---句点である必要条件
前後に節をもつ場合は、句点である。
---句点である十分条件
句点が続く場合。たとえば「。。。」などの場合、句点の意味を持つかもしれないし、
記号である場合がある。
---句点でない必要条件
記号が連なっており、絵文字データベースに照合して適合した場合、句点でない。
---句点でない十分条件
記号が連なっており、絵文字データベースに照合して適合しない場合、
句点でない場合がある。

などとあるなしの必要条件、十分条件の4パターンのルールベースを作成中です。
ただ句点である十分条件と句点でない十分条件は同じような気がするので、
3種になるかもしれません。

これは信頼度の高い人物からの忠告の場合、ルールを改変できるようにできます。
例えば、前後に節を持つ場合、句点で無い場合もある。
と言われれば、十分条件に下げることができるようにしたいです。
しかしそれをする場合、というよりこの条件はもちろんif文に他なりません。
忠告は現在のところ定型かプログラムを組む人しかできないでしょうから、
信頼度の高い人物というのも製作者に限られるでしょうけど。
[PR]
# by kagurayouyou | 2006-10-09 21:56
【本】

世界は悪魔で満ちている?〈2〉
相原 あきら / メディアワークス
ISBN : 4840235937
スコア選択: ※※※


私的感想。
たぶん、これ人気ないんじゃないかな~と思われるのに、どこか面白い作品です。
惰性で買っているわけでもなく、最初は南野さんの絵で買ったんだけど、
それよりもストーリーで2巻を買いました。
というよりカラーの南野さんの絵はいいのだけれど、なにかモノクロになると
バランス崩れているような気がします。
昔の同人誌のがすごくうまい気がしますので、できれば戻して欲しいです。
でストーリは相変わらずツンデレ風味なんですが、主人公へたれすぎ。
現実でもこんなものだと思うので違和感はなくても、面白くは無いですね。
やっぱり最後に「イシダに手を出すな」という感じで言ったのは、大切だから?
この微妙なシーンが私の琴線に触れているのかもしれません。
スクールランブルの播磨とエリ、ハヤテのごとくのハヤテとヒナギクなど
と同じような感じですね。
微妙に毎回ちょいえちぃシーンが書かれている(南野さんの絵で)のは結構良いのかも。

サトミをもう少し出していって欲しかったです。
最後は微妙な扱い。
この路線ならもう少し、大好き度を増しても良かった気がします。
[PR]
# by kagurayouyou | 2006-10-07 21:18 |
【プログラミング】
Intel C++ Compiler9.1非商用版をSUSE Linux10.0に入れてみたんだけど微妙。
まだプログラムをちゃんと設定した計算機で回したわけではないのでわからないが、
手元のPC(Pen3 866Mhz 512MB)で、Segmentation faultが起きる。
GCCではならないから不思議だ。
単純な∑のプログラムなのでそれほど変な風にはならないはずなのだが…。
どこかで配列を間違ったのかもしれない。
しかもGCCより遅い…

以下メモ。
キャッシュに乗らないほど大きなスパースネスで非ゼロが多い行列。
通常スパースネスと呼ばれるとき99%が0とかになる。
つまり50万要素くらいある場合、99%でも5000要素も計算しなければならない。
それが2000ベクトルくらいあると1千万になる。つまりは10Mだ。
これがint型なら4バイトなので40MBのCPUのキャッシュがあればいい。
一次ならせいぜい16Kバイトとかだし、二次ならせいぜい2MBくらいだろう。
つまりこれではCPUに乗らず、メモリに乗ることになる。
これは結構なロスだ。

で99パーセントといったが、実際言語処理ではngramで多くして30くらいだろう。
つまりは30*2000*4だと1.2MB。
問題は最近のマシンだとこの部分の高速化が必要かということにぶつかる。

あと、実際人はどれくらい我慢ができるのだろう。
マルチクラスをしても2000だと15分くらいで済む。
これを10分にしたところで嬉しいだろうか?
つまりは通常何もせずに待っていられると思える速度は3分くらいかもしれない。
なので10分と15分では、別なことをしている間に、とかなった場合50歩100歩にしか
見えない。また精度とかを見ると1パーセント上がるだけで20問くらいの正解率が増える。
これは嬉しいのではないのだろうか?

つまり言いたいのは絶対数として見たとき、どう感じるだろうか?
ということ。
ただ研究と言うのは積み重ねなのでいきなりは難しいのが当たり前なのかもしれない。

そこら辺私はまだ常識を知らないので、これは無駄なのか、有用なのかわからない。
[PR]
# by kagurayouyou | 2006-09-30 15:38 | プログラミング
【コンピュータ】
iTunes 7でビジュアライザが良くなったらしいけれど、
まだWMPには勝てていない。
というか根本的に違うので評価ができない。
WMP方式の特定の音階に反応(?)する奴の方がいい。
曲の速さとか、タイミングなどを特徴的に表せていてノレる。
iTunesのように全体的なスペクトルを表すのでは、
複雑に音を表現しすぎて、どの音がどのスペクトの範囲を
表しているのか視覚的にわかりにくい。
わかりやすく言うと、全ての音のスペクトルを円形で、
同レベル(同一周囲上)に描いた場合、変形するスペクトルは
ほぼ同じだと思える。
プラグインで何とかできるかもしれないが、
今のところ探しきれていない。
[PR]
# by kagurayouyou | 2006-09-20 18:47 | コンピュータ

精神の地図。自由な手。

【コンピュータ】
Exciteの半角英数字によるコメント・トラックバックの拒否機能は
結構いいんじゃないだろうか。
AAを張らない限り大丈夫だろう。
またAAだけ張られても困るし、「w」だけで済まされてもあまりうれしくないし。

本の名前の横にAAと書かれていて、何かな?
と思っていたらアマゾン・アソシエイトの略らしい。なるほど。嫌がる人もいるかもね。

少し前からUMLなどの関連にはまっていて、使っているのだけれども、
どうも私の頭を整理すると、複雑な図が欲しくなる。
クラス図になぜかシーケンス図を描きたくなったり。
なのでもっと自由度を高めようと、マインドマップを用いてみた。
FreeHandというフリーソフトがあって、これはかなり使える。
ただ問題はFreeHandも私には合わなかった。
綺麗にはまとめることができるけれども、整理しにくい。
手書きのほうが便利だ。例えば、
・画面が小さい。ディスプレイのせいもあるけれども、
私は一目で読みたい欲求というか癖がある。
通常、人はノートを見やすくするために文字をできるだけ離して書くとか
(一行開けて書く人もいるほど)、文字を大きく書くとかしている。
しかし私のノートは他人が見ると見難い。
なぜならびっしりと文字が書き連なっているからだ。
見たらうんざりするかもしれない。
よく漢字ばかりがあるとうんざりする、とかそんな感じ。
しかし私がこの方法を取るには理由があって、
いちいちページをめくらなくてもいい。
ページをめくると例えば数式が何行にも渡って書かれている場合、
どの変形がここにきているのかが分からなくなるときがある。
まあ記憶力が低いと言われればそれまでなのだが、
一目で見たほうが私にとっては断然速い。

で本題に戻るがパソコンでやるにはディスプレイが小さすぎて足りなかった。

もうひとつ問題がアイディアって一瞬でいくつか生まれていくので、手のほうが早い。
もっと詳しく言うと、
手で書いていって、実はアイディアをまとめるとそれはいらなかった。
という場合が結構ある。
それはパソコンで書いているよりも手で書いて、紙を捨てたほうが速い。

清書には合うかもしれないが、未だ手軽に書くという点では紙には勝らなかった。

私の能力不足があるかもしれないので、少しずつ慣らしていこうと思う。
[PR]
# by kagurayouyou | 2006-09-18 12:09 | コンピュータ
【プログラミング】
mixiに個人的な日記を載せているので、
なんだかこっちは本当にアカデミックな話題とかニッチな話題になってしまった。
で今日もまた一応プログラミングな話題。
参考になればどうぞ。

プログラムを開発して公開することによる社会的利益はどれくらいだろうか?
それはOSSでもバイナリでもいいのですが。
Linux,Unix世界では64-bitの関係などによってたくさんあるのでバイナリは難しいですね。
(現在私の環境では自分のPCは32bit、
計算用PCは64bitなのでいちいちFTPでソースを送って、コンパイルをしなければならない。
一手間かもしれませんが、一手間というのはたいてい大量に行う可能性が高く、
めんどくさいことが多い。)

もっと絞っていうのも現在よく使われるSVMのツールは
・SVM-Light
・libSVM
・TinySVM
ですね。

もちろん3つあるには理由があって、
最新技術という意味ではSVM-Lightが良いみたいです。
libSVMはスクリプトやインターフェースの使いやすさでは定評があります。
TinySVMは国産ということや、計算速度の速さ、P/Rの値を出してくれたりと使いやすいです。

でもちろんそれぞれを合わせられる箇所と言う部分もあるわけです。
しかしできないのはソースを2つ以上読まなければならないこと。
SVMを学んで、その意欲があり、公開できる人かな?
これは結構無駄というか。
単純に開発の部分に入るので研究者の人たちはあまりしない気がします。
それをするならもっと良い方法を考える時間に使うかと。
ならば趣味で行うレベルになってしまい誰がするのでしょう?

なので趣味ではなく自分の時間を削ってまで問題のプログラムを単に開発して、
公開することにどれくらいの利益があるのでしょう。

もう少し条件のようなものがあって、
それぞれの先駆者たちは自分たちのツールを開発しているので、
それを非公開にしている(非公開は当たり前ですね。利権関係もありますから)
これを使用しているので公開されているツールは必要ないことが多いと予測すると、
このような公開ツールを使うのは学生や趣味でしている人(まさに私)で
そのような人たちに使ってもらうのに公開することでその人たちに利益はあるのかと言うことですね。
学ぶ時間短縮ではなく、長い目で見て、ソースを勉強した方が良いなども含めると。
つまり下手に教えすぎると何も学べなくなる状態になるのと同じです。
そこら辺のジレンマ。
[PR]
# by kagurayouyou | 2006-09-09 09:23 | プログラミング
【人工知能・無脳】
Learning to Classify Text using Support Vector Machines
http://www.amazon.co.jp/exec/obidos/ASIN/079237679X
を読みたかったのですが
2万は出せない。しかも2002だし。
社会人になったら買いたいと思います。

UMLで設計図を書く真似事をして見ましたが、
これJAVA知らないと良くわからない気がする。
私にはわからない。

SHIORIのアーキテクチャはかなり参考になります。
ただ、どうも仕様書が良くわかりません。(どうみても私がわからないだけですが。)

DAEに期待。
SSPは完全に停止したのかな?

思うに我々はインターフェースが欲しいんじゃない。
自動的なAIが欲しいんだ。
と思うんですがどうでしょう?

ルールベースを学習する方法とかもいろいろありますが、、難しい。
統計学では限界があるのか?
が現在の私の悩みです。
現在私はSVMを主にしていますが、
どうもSVMはやってみたらうまくいく中の一つだと思います。
本来はANNが一番適しているはずと思っています。
なぜなら人間の脳を模しているから。
なのに精度が上がらないのは複雑すぎるから。だと思っています。
余計な計算まで入れなくても良いのに、入れてしまっている感じ。
しかも二極論はあまり好きじゃないんですよね。
「はい」か「いいえ」があるのなら「「はい」でも「いいえ」でもない」、
「「はい」ではない」、「「いいえ」ではない」、
これは高次元、ミクロかマクロかの視点と同じかと思います。
SVMがミクロ、ANNがマクロな視点かな?
超細分化されたマルチクラスのSVMはANNになりそう。

伺かと人工無脳が合体することはないのでしょうか?
面白いものになりそうなんですけれど。
本質的には同じだし。

今年の研究が終わったらSOMやりたいですね。
連想記憶というのが右脳の役割をしていると思う。
というか、データベースと連想記憶を繋ぎ合わせたものを作ってみたいんですよね。
つまり記憶と連想記憶と思考力でできそうな予感(何が?)
[PR]
# by kagurayouyou | 2006-09-06 22:50