Skype 保留中の怪

Skype でチャット中に人が抜けたタイミングで急に繋がらなくなってしまうことがあった。送信しようとしても保留中と出てしまい、受信も全くできない。

調べてみると、P2Pネットワークを再構築するのがあまりうまくないような雰囲気で、遅延となってよく現れるらしい。今回は、他のマシンからログインを試みることで刺激を与えて繋ぎ直すことができた。しかし、明示的に再構築を促すコマンドはないのだろうか。

WF 金メダルおめでとう!!

日本勢初の快挙ですね!東大あぎつね金メダル (3位) おめでとうございます!

来年以降もコンスタントに強力な選手を輩出できるように頑張っていきましょう。

とはいうものの、某会の尽力云々とはあまり関係ない方法で強くなったようなので、直接どうこう言えないのがなんとも言えないです。

まあ、とにかくおめでとう!

会話テキストデータを大量に突っ込めばそれだけで人工知能はできるか?

無理だと思っている。段階を追って説明しよう。なお、ここでいう人工知能とは会話ボットとか人工無脳とかそっち系のあれである。

本当に何も考えていないタイプ

マルコフ連鎖による生成

会話文からマルコフ連鎖を学習して、それを使って自動生成するタイプ。クエリ中の適当な単語を利用することもある。

性能が半端なく悪く、わざわざ説明するまでもなさそうでもある。一応言ってみると、やるとわかるが、文あるいは単語が長くなりがちである。これは、適正な長さに制限する機構が入っていないこともあるが、あなたの学んだ文法は直前数語で次の語が決まるようなものではなかったはずということも忘れないでほしい。あくまでこれはおもちゃなのだ。

ところで、マルコフ連鎖としての近似って可能なのかと思うかもしれないが、自分がやってみたところだと、おおよそ近似できるが、マッチする文字列の長さはマルコフ連鎖の確率から見積もられるものより長くなるなど、確率が低い部分の扱いに気をつけないといけないようである。

全文検索

会話文をデータベースに全て放り込んで、クエリ文を検索して対応する回答を引いてくるタイプ。学習量が半端なく必要である。対応できる文字列長に対して指数オーダーだし。そんな大量のクエリも回答も誰が作るというのか、工学的に無理である。テンプレートにするなり、もう少し賢くしなければならない。

なんか学習するタイプ

生テキストデータから完全に教師なし学習

生テキストデータをたくさん食べさせたら単語とか文法とか、さらにはもっとすごいところまでできてしまうのではないかと淡い期待を抱いているだけで実際には作っていない脳内妄想タイプ。

ちょっとまってほしい。外国語教育で全くの初学者に訳どころか挿絵も何もない生の文章だけ渡してそこから学べと言われたらどう思うだろうか。実際、単語あるいは文の分割くらいならできるようになる方法があるが、品詞を推定したり、構文解析したりするのは非常に難しい。時間をかけたってできないことはあるのである。

自然言語処理系のツールをたくさん持ってくる

生データではさすがに無理ゲーだったので、 MeCab とか CaboCha とか自然言語処理の解析器を持ってきたタイプ。

努力は認める。しかし、さっきと同じ論理で、上のレイヤーの学習をするには生テキストでは全然ダメで、やはりもうちょっと色々しなくて、目的に見合った形式で正解情報を手作業で与える必要がある。フィードバックをそれ以外の方法で得られれば、手作業で与える必要もなくなるのだろうが、どちらにしろ生テキストデータは使いものになるか怪しい。

会話テキストデータを利用できるようにするまでには、結局、それ以上に複雑なデータを手に入れる必要があって本末転倒になる。

結論

物書きさん、そんな甘い認識で自然言語処理を乗り越えられたりはしないんです。。

プログラムの意味

プログラムの操作的意味論だとプログラムの各種構造を数学の領域に移す関数を定義して、それを利用して数学的意味を決める。それは元のプログラムの構造と一貫性を持っているはずなので多分準同型写像になっていて、これを使って、最適化したプログラム同値性とかを測ることになる。

プログラムの意味する計算を厳密するという点では確かに必要なことではあるが、よく考えると、書きたい計算が数学の領域とかにあって、それをコーディングによって、実行可能な形に落とし込んだのがプログラムである。すると、この方向の準同型を考えることもできて、プログラムの意味付けを逆問題を解くことと考えることもできる。要するにプログラムの含意する計算を抽出する問題というのは、一意に解が定まるものではなくて、自然言語処理的なものにより文脈の情報を利用することになる。例を挙げると、

x + y

を Z で意味付けするか、 Z232 で意味付けするか、これは自明ではない。 *1

最適化ってプログラムの含意する計算を抽出する問題をどれだけうまく解けるかもかなり重要だと思う。ただ、これに都合よくしようと思うとできるだけ型を分けておく方がいいはずであるが、実際有効に活用するには依存型使ったり、不等式を上手に利用したりすることが必要で *2 一筋縄ではいかないものだなあ。

*1:たいていは前者にした方がいいが、ハッシュ関数とかは一部後者でないとまずいことになる

*2:不等式を制するものは距離空間を使う系の数学を制すると言っても過言ではないのでは

ダウンロード時間の推定

ダウンロード予想時間というのはもう少しまともに見積もれないものなのだろうか。瞬間速度だと某IEみたいにはっきりしろよとなるし、累積転送量を使うとバースト時に影響されてだんだん時間が伸びていくとかなってしまう。

きっと、何とかフィルタとか使うんだろうけど、計測のことは詳しくないのでどうするのがいいのかよくわからないんだよね。