随筆:「頑張っているのかな」

by ご近所のきよきよ


 

 若葉の目標の機能の動作を確認できました。6ヶ月掛かりました。目標の機能とは、細線化をして、線分の太さと評価して、領域分布を見て、線分分布を見て、交差を判定していく・・・というものでした。最後の機能が動いて、振り返るとまだまだやらねばならにことが沢山あるのに気がつきました。気がつくだけ前進したと言うことでしょうか、なんかちんたらやっている感じです。アイデアの熟成を待つという言い訳は良いでしょうが、なんか力が衰えてきているとも感じるのです。前は徹夜徹夜で、今回のコーディング量ですと、1ヶ月でやっていたかなとも思うわけです。

 想定していた現象が間違っていたというのもありました。特異点の間にパスができると思っていたのが、特異点領域が重なって来るのですね。ちょっとしたコードの間違いがあって、この特異点領域の重なりに気がついたのでした。それと、Javaがリカーシブルコールが苦手ということにも気がつきました。ちょっとリカーシブルコードを実行させると、メモリ不足になるのです。その後雑誌や本で(「Clojure」)Javaでリカーシブルコードを書いてはいけないとありました。最適化してないのだそうです。それで、プログラムを大修正したものです。リカーシブルコールが使えないというのはきつい制約です。ま、仕方がないことですが。

 あとは、画像の2値化を試行錯誤で行い図形認識していくという機能と、巨大画像を永続化し、部分的に画像認識していくという技術を開発していきたく思います。何だかなと思います。それをしながら知識ベース(特に学習機能)を充実させていく作業に掛かりたく思います。今年はやりたいこと、やり遂げたいことが多数です。のんびり構えて入れないわけで、必死にならねばいけないわけで、馬鹿力出して行きたく思います。

 こんな風に若葉に集中しないのは、技術的な枠組みというものを先ず作ってから、解決すべき問題を実現していくという手法が重要と悟ったからです。自然言語処理では試行錯誤で未夢・香澄を作って行ったのですが、なんかこうやりくりパッチの感じのプログラムになってしまいました。やはり、プログラム構造はこう、並行処理はこう、共通データ管理、曖昧性処理はこうという風に、大局的なプログラム機構(フレームワーク)を先ず打ち立てて、具体的な問題はそこに埋め込んでいくという技法が本筋かなと思うようになったのです。だから、若葉を作りながら、知識ベースを機構としてコーディングしていくことにしたのです。

 なんだかな、とにかく一人ではやるべきことが多くて、歯がゆい限りです。必死になってなんとしても形を作っていかねばと思うことしきりです。頑張る。春の決意でした。


 さて、試行錯誤ですが、これをどう実現していくか。これも大きな枠組みの中で作っていくことになりそうです。それは自然言語処理でも画像認識処理でも認識を実現する基本機構になるわけです。この機構は、連想と仮定の下での解析結果を評価して行く過程です。何度も何度も、机上プログラミングをしてきてそんな結論に達しています。すなわち、

(1)特徴群から連想で認識を仮定すうる。その連想は入れ子構造とか配置関係とか部分全体というふうに無数の意味記号群で表現されるのです。

(2)特徴群の選択を変えたり、こう解釈したら・・・という仮定のもとで、解析をしていく。そうして、また解析結果を得るわけです。

(3)弛緩法で、最終的な認識結果を得る。


 これを具体的に記述しますと、

(1)連想

・曲線とか線分の固まりが、広い領域を成すと、山の懐とか、海とかを連想します。

・帯があると、川とか木々とか道路とかを連想します。

・点の分布は魚とか草とか動物とかを連想します。

(2)評価

・海の中に帯は変だから、山の懐かなと推定します。とすると、点は動物かなと推定します。

(3)仮定の下での解析

・帯が川として、そうらしいかを詳細に解析します。

・点が動物らしいかを、動物という仮定のデータの基で詳細に解析します。

(4)総合評価

・仮定がもっともらしい(確信度が高い)もののセットを選択し、矛盾がないかを一貫性評価で行い、最終結果を認識とする。


 連想とか、意味解析には表層表現とか深層表現とか超深層表現とかレベルを持って意味を捉えていく必要があります。それは、英語翻訳を考えていると見えてくる事実です。

(例文)Hong Kong can teach Chinese to kick their smoking habit.(Asahi Weekly)

を日本語らしく表現するとしたらどうなるでしょう。英文をそのまま理解するのはたやすいですが、これを翻訳するのは難しい。特に機械翻訳を実現しようとする途方に暮れます。自立的に学習して機械翻訳するシステムをどう作っていくべきでしょうか。

 結論を言いますと、運動(物理的イメージ)で捉えるしかない・・・です。日本語の表層表現はてにおはですが、それを深層表現すれば、格、意味記号、属性、係り受け表現になります。日本語の世界ではこれで十分なのですが、英語とか他の言語への翻訳を考慮すると、さらに運動イメージのレベルまで意味を深く捉えねばならないのです。


 こうして、知識ベースは関連する知識群が無数にできます。関連する知識はクラスターとして、連想よりも強い絆で結びつけておくべきです。それには、知識に識別子をつけて、同じ識別子のものはクラスターとして相互変換できるようにすべきと言うことです。


 自然言語処理とか画像認識とかメディア処理とは別に、共通するこうした機能を実現するのは、メディア処理の下、知識ベースの上に設けておきたい物です。それで、Cobaltという知識ベース応用サブプロジェクトを設けました。これから、この部分を追求していこうと思っています。無論、若葉も作りながらです。



 

おわり