検索
連載

至宝の人工知能 〜問題に寄り添い、最適解をそっと教えてくれるOver the AI ―― AIの向こう側に(17)(4/8 ページ)

先人たちにより開発され、磨かれてきた「至宝の最適化アルゴリズム」。本当はこれを軽々しく「AI」とは呼びたくな……い……という気持ちをぐっとこらえ、AI技術として解説します。「試験前の一夜漬け」「雪山遭難」「井戸堀り」の例を使って、説明していきます。繰り返しますが、最適化アルゴリズムを軽々しく「AI」という言葉で片付けたくはないんですよ、本当は。

Share
Tweet
LINE
Hatena

線形計画法の入門中の入門

 では、最初に、線形計画法の入門中の入門である「ナップザック問題」を簡単に説明します。

 私は、この問題を「泥棒盗品選択問題」として把握しています。簡単に言えば、持ち運べる容量(このケースでは20リットル)に上限があるという制約下において、合計の盗品金額を最大にする、という問題です。

 この問題だけでなく、さまざまな問題には、それぞれの問題に応じた最適化アルゴリズムがありますが、1つ覚えておいていただきたいことに、どの最適化アルゴリズムであっても、「最も良い解を見つける方法はない(だろう)」ということです。

 この「最も良い解」のことを「大域的最適解」といいますが、この「大域的最適解」を調べるには、全ての組合せを試してみる必要があります。しかし、その組合せの数が大きすぎて、コンピュータをもってしても計算が終了しないのです*)

*)例えば、「宇宙の終わりまで計算し続けても終了しない」という言い方で語られることが多いです。

 上記の図の例では、総当たりしてもたいした組み合わせ数ではありませんが、もし盗品候補が1000以上もあれば、「大域的最適解」は諦めなければなりません*)

*)組み合わせ数:1.07 x 10の301乗 / (Intelの「Core i7」で計算したら) 2.5 x 10の282乗年(ちなみに宇宙の年齢は、1.38 x 10の10乗年)

 最適化アルゴリズムは、組み合わせの総当たり戦をやめて、私たち人間の世界において「最適化」といっても問題のないレベルの解を、実用的な時間内(数秒から、長くても24時間以内)に導き出すものです ―― つまり「最適アルゴリズム」は「(大域的)最適アルゴリズム」ではないのです。

 ところで、ちょっと話は逸れますが、私、日本人の多くに数学が嫌われている理由って、こいつ(右図)だと思っているんですよ。

 なんですかね、この不快な呪文のような記述。エラソーで、タカビーな感じもしますよね。『フッ、お前らには、この数式の意味、分かんねーだろうな』って、バカにされているような気すらします。バリバリの現役のエンジニアである私がそう感じるのですから、理系でない人の不快さは、察して然るべきでしょう。

 しかし、私からも、皆さん―― 特に、日常的に、数式を使わず、プログラムとも縁のない方に ―― 文句があります。

 「上記のような呪文……でなく、数式をコンピュータに入力すれば、コンピュータが勝手に計算を始める ―― などと思っているんじゃないか」と感じることがあるからです。

 特に、「AI幻想(AIが人類を滅ぼす/AIが職を奪うなど)」を持っている人の多くは、上記のような勘違いをしていると、確信しています。


 ―― 冗談ではありません。


 私たち、コンピュータシステムに関わるエンジニアは、この呪文……ではなく数式を、完全に理解した上で、コンピュータが理解できる言語(プログラム言語)に書き換える作業をしなければならないのです。

 それに、数式には具体的な数値が入っていませんが、プログラムには実際の値を入れないと、ウンともスンとも言いませんので、現実世界の問題を「数値に変換」して、「その数値を手で入力」し、そして、「プログラムの間違いを修正」する作業を延々と続けなければならないのです。

 こんな馬鹿野郎な機械(コンピュータ)ごときに滅ぼされる人類なら、とっとと滅ぼされてしまえ ――

と呟きながら、毎日10時間近くもコーディングし続けているエンジニアがいます ―― 私です

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る