Minuteはじめに断っておくと知性や知能の「知」ではなくて、「知」という文字自体のことです。(即座にブラウザを閉じようとしたアナタ、最後まで読むとひょっとしたら興味がわくことが書いてあるかもしれません。)手元のパソコンにインストールされているだけでも実に沢山のフォントがあります。「知」という字だけとっても似ている字体もあればかなり見た目が違うものもあります。いくら見た目が違っていても「知」の字であることには変わりません。字をよーく見てみると、これはなかなか不思議なことです。次の字を見てください。左側の2文字は両方とも「知」です。右側の2文字はそれぞれ「知」と「釦」(ぼたん)です。左側はフォントが同じですが右側は異なります。字体を単なる白黒の画像だと思って見てみると、左側2文字は右側2文字よりも重なる部分が明らかに少なく、似ていない画像といえます。画像の類似度は何かというのは難しい問題で深入りできませんが、少なくとも人間は画像的に似ているかどうかだけで、同じ字か判断しているわけではなさそうです。コンピュータで表示できるフォントだけでなく手書き文字まで含めて考えると、なおさら画像的に似ているかどうかだけで判断するのは不可能な気がしてきます。一体、人間は何をもって字を認識しているのでしょうか?字を構成する線の傾きや曲率、それらの位置関係。様々なことが考えられますが、何かごく単純な要素が一つ、二つだけあるということはなさそうです。いった要素を一つ一つ丹念に拾い上げ、それらの関係をきちんと規定すれば、いつか「これを満たしたときその画像は『知』という文字である」というような「知」(という文字)の本質を見つけることができるのでしょうか。私は、そういった「本質」を見つけることは難しいのではないか、たとえ見つかったとしてもあまりにも複雑過ぎて、本質という言葉で通常想定されるものとは違うナニカなのではないか、という気がしています。私の頭の中を調べても「これが本質だ!」というようなモノは特に見つからないのではないかとも思っています。普通に暮らしている分にはこのことは特に問題になりません。実際のところ私は「知」という字の本質は(少なくとも自覚的には)まったく知りませんが、特に苦労なく「知」という字を認識できます。ところが、私はソフトウェアエンジニアなので「『知』という字を認識するプログラムを書いてくれ」と言われることがあるかもしれません。なると困ってしまいます。そもそも「『知』という字はどういうものなのか」のがわからないのに、それを認識するプログラムなんて書けるわけがありません。一般にあることをするプログラムを書くには、その「あること」が何なのか理解することから始めます。そこを曖昧なまま進めると一体何をやっているのか自分でわからなくなったり、頼まれたことと全然違うことをするプログラムを書いてしまったりします。実際にはプログラムを書いていくうちに何をやりたいのかハッキリしてくるということもよくありますが、その場合でも、最終的にはやりたいことが明確に理解できている状態にならないといけません。ないと、「実際の挙動が仕様」という闇プログラムができあがり、テストも何もできない状態になります。そんなときは機械学習を使えばいいのでは?と思う人がいるかもしれません。確かに機械学習は「それが何かは規定できないけれど、何がそれであるかは言える」ということを実行するプログラムを作るのに有効な(というか唯一の)開発手法です。実際「知」という文字の認識で言うと、「知」の様々な字体を集めてきて学習させれば「知」という文字を高精度に認識するプログラムができあがるかもしれません。機械学習で作られたプログラムはまさに「実際の挙動が仕様」という闇プログラムで評価はできてもテストはできません。言えるのは「多分できてます」ということまでです。出来上がった中身を覗き込んでも、そこから本質が自然と読み取れるということもまずありません。それで何が問題なのかという意見もあると思います。実は、私も本質を理解してテストできること自体にそれほどこだわりはありません。認識できるだけのシステムしか作れない手法というのは何か大事なものが欠けている気がしています。具体的に言うと、認識できるんだったらその逆、つまり生成もやってみせないとちゃんと問題が解けている感じがしません。GANのように認識と生成を同時に解くのは面白いのですが、認識と生成を別々の仕組みでやっている限りまだ何か欠けている感じがします。認識と生成、両方を一つの仕組みでできるようになったとき、私は安心して「本質」について悩むのをやめられる気がします。コメントをキャンセルコメントを入力してください。以下に詳細を記入するか、アイコンをクリックしてログインしてください。アカウントを使ってコメントしています。アカウントを使ってコメントしています。アカウントを使ってコメントしています。アカウントを使ってコメントしています。新しいコメントがついたらメールで通知。Googleでエンジニアリングマネージャをしています。以前はNTTの研究所にいました。Blog.投稿先:キャンセル。