越境するコンピューター

越境するコンピューター

新しいコンピューターとの付き合い方 〜コンピューターと意思決定と人間〜

コンピューターは因数分解が苦手

コンピューターは因数分解が苦手です。正確に言うと、どんな高速なコンピューターでも「適当な時間内に桁数の多い数の因数分解を完了することが出来ません」
どうして?

(1)しらみ潰し
(2)倍々ゲーム

しらみ潰し
因数分解をやる効率的な方法は無くて一つ一つの候補を試していく、いわゆる「しらみ潰し的なやり方」をする必要があります。

倍々ゲーム
でも高速なコンピューターならしらみ潰しを高速にやってくれるのでは?と思いますが例えば
30桁の因数分解だと毎秒1兆回の演算をするコンピューターでも300億年かかってしまいます[1]
1桁増える毎に指数的にしらみ潰しの数が増えていく、こういう処理はさすがにコンピューターでも適切な時間内に処理を完了することが出来ないのです。

桁数の多い数の因数分解をするのには膨大な時間がかかりますが、いったん答えが分かればそれが正しいかどうかはすぐに計算出来ます。

コンピューターで使われている暗号化この性質を利用しています。

今話題になっている量子コンピューター因数分解を適切な時間で出来る可能性があります。
これが実現する頃にはコンピューターの暗号化方法も新しいものに変わっているでしょう。








猫を見分けるコンピューター

【コンピューターが100桁の掛け算してもニュースにならないが、幼稚園児が100桁の掛け算したらニュースになる。幼稚園児が猫と犬をを見分けてもニュースにならないが、猫と犬を見分けるコンピューターは結構すごい】

 

なんででしょうか?

 

「100桁の掛け算」はやり方を説明できますね。

「犬とと猫の見分け方」やり方説明しろと言われると困ってしまいますね。

 

コンピューターは「100桁の掛け算」のようにやり方を説明できるものを実行するのは得意です。そのやり方をプログラムにしてコンピューターに実行させればOKです。

一方「犬とと猫の見分け方」をコンピューターにやらせようとしてもやり方がうまく説明できないのででプログラムにすることが難しいです。ためしに犬と猫の見分けを文書で説明しようとして下さい。難しいですよね。

 

でも最近「コンピューターが猫を認識した」って話題になってました。これはどうやってるんでしょう?

すごく大雑把に言うと、猫を認識するやり方をプログラムにするのでなく、コンピューターに猫の写真をすっごい枚数見せて「猫か? 猫じゃないか?」 をコンピューターに学ばせているんです。

コンピューターに猫の写真を何枚も見せて1枚ごとに「正解」、「不正解」をコンピューターに教えてやるとコンピューターがその結果を元に学習して「この特徴なら前回正解だったものと近いから猫」ってかんじでだんだん賢くなっていくんです。

 

これが最近はやりの機械学習といわれてるものです。

 

学習させるためにたくさんの写真の一枚一枚を猫、猫じゃない、とラベル付けしておいてコンピューターに教えてあげる、これが『教師有り学習』といわれるもの。でもすーごくたくさんの写真に一枚一枚、猫、猫じゃない、とラベル付けしてたら大変ですよね。正解を教えずにコンピューターにパターンを認識させるのが『教師無し学習』といわれてるものです。

 

この場合も学習の方法は人間がプログラムとして作る必要があります。

 

最近コンピューターの適用範囲が拡大して、この例のような使い方をされるケースも増えてきています。こんな時代だから今一度コンピューターに出来ることを見直していきたいなと思ってます。

 

書きながら勉強しているので未熟な部分もあると思いますが何卒ご容赦を。

 

このサイトの掲載内容は私個人の見解であり、必ずしも私が所属する会社、組織、団体の立場、戦略、意見を代表するものではありません