2022年 10月

「アルゴリズムとは何か?」 (私のように)昔プログラミングを経験した人間にはごく基本的な(そして初歩的な)質問に思える。しかし、最近AI(機械学習など)に関する記事のなかで「アルゴリズム」という言葉をみると妙な違和感を感じる。
記事の文脈からアルゴリズムが意味する概念を読み取ろうとすると、私が思っているものとは違うようなのだ。私がAIに関しては素人同然だからなのか?
具体例に入る前に、従来のプログラミング(主に手続き型言語とよばれるもの)で使われるアルゴリズムを検索すると、以下の説明がある。(あくまで一例である)
「数学や情報科学、あるいは関連する分野において、有限回の手続きによって問題を解決するための一定の手順。・・・・アルゴリズムはコンピュータが情報処理を行なう場合の基盤となる。コンピュータにアルゴリズムを指示するための操作の並びを記述したものがプログラムにほかならない」
この定義はしっくりとくる。
アルゴリズムであるプログラムを可視化したものの代表例がフローチャートである。手続き型言語のフローチャートはシンプルである。シーケンシャルな手順と、繰り返し、条件分岐を組み合わせたものだ。
(最近話題になる)小学校のプログラミング教育も、このシンプルなフローチャートを前提にしていると思われる。実際のところ、文部科学省が発行している「小学校プログラミング教育の手引」をみると、
「コンピュータは人が命令を与えることによって動作します。端的に言えば、この命令が「プログラム」であり、命令を与えることが「プログラミング」です」と記されている。 

さて、アルゴリズムという言葉(概念)に違和感を感じた具体例を以下に示す。これは新聞の記事(専門誌ではなく一般紙である)にあったものである。
「アルゴリズムとは、コンピュータが膨大なデータをもとに問題を解いたり、目標を達成したりするための「計算手順」のことである。人工知能(AI)などで使われており、様々なデータを入力し、目的に合わせた予測や結果などを出力する。巨大IT企業では例えば、通販大手アマゾンがサイト上で消費者が関心を持ちそうなお勧め商品を表示する際や、フェイスブックが投稿の表示順を決める際などに使われている」
この定義ではAI(機械学習など)が前提になっているように読める。グーグルの検索エンジンや、通販サイトがお勧め商品を表示するレコメンドエンジンにAIが使われているか否か、私は知らないが、問題は
「コンピュータの出力結果(上記の文章では目的に合わせた予測や結果)が事前に予測可能か否か」
という点にあると思う。
手続き型言語の場合、コンピュータの出力結果は、入力データで一意に決まる。だから、プログラムをコンピュータ上で実行しなくとも、その結果を入力データから予測することが可能となる。
プログラムやその集まりであるソフトウェアのテストは、コンピュータの出力結果が事前の予測と相違ないことを確認する作業である。
しかし、上記の定義に含まれる機械学習を考えると、(いくつかの書籍などを読むと)結果を事前に予測するのは難しいようなことが書かれている場合がある。
このようなことから、AI(機械学習など)を「ブラックボックス化している」と称しているのであろうし、「出力結果に偏向(差別)がある場合がある」とか、「AIの説明責任」という類の話が出てくるのだろう。
つまり、機械学習全体を考えると、「コンピュータの出力結果が事前に予測可能か否か」という点に関しては、「必ずしも予測可能ではない」となってしまう。
これはどこが間違っているのだろうか? 多分、アルゴリズムと呼ばれるものの範囲が違うのだろう。

先に紹介した新聞記事には、検索エンジンやレコメンドエンジンの話(グーグルの検索結果や、SNSの投稿の表示順など)と、AIの話が渾然一体となって書かれている(ように読める)。
これがもう一つの違和感の原因だと思う。レコメンドエンジンの一部にAIが組み込まれていると仮定して、どこまで「出力結果が事前に予測可能か」が判然としない。
この手の話でもう一つ厄介なのが、「ブラックボックス」という言葉(概念)の使い方である。
ブラックボックスという言葉の使われ方には、少なくとも2種類がある(と読み取れる)。ひとつは、レコメンドエンジンのアルゴリズムを「開示していない」という意味である。この場合、「出力結果は事前に予測可能」であるが、第3者にはアルゴリズムを開示しない、という意味である。
いまひとつは、「出力結果を事前に予測することが難しい」という意味でのブラックボックスである。
AI(機械学習など)の処理手続きがブラックボックス化している、という用例の場合は後者である。レコメンドエンジンのアルゴリズムがブラックボックスである、という用例の場合は前者だと思うが、後者をも含むのであればこれは「アルゴリズムを開示したとしても出力結果は必ずしも予測できない」という事態になる。
すなわち、説明責任も果たせないということになる。これはもうカオスだ。

アルゴリズムという用語をAI(主に機械学習)で使う場合に上記のような混乱を招くのは、(いくつかのWebサイトの解説を読むと)「アルゴリズムとモデルを区別していないから」なのかもしれない。
あるサイトの説明によれば、
「AIモデル(機械学習モデル)は、与えた教師データからアルゴリズムに基づいて作られるもの」
だそうである。
この説明が正しいのか否か、私には判断できないがイメージは分かる。ここでいう「機械学習モデル」とは、入力したデータに応じて出力データを返却する機構である。すなわち、従来の手続き型言語に当てはめると「処理手続き」の部分であり、手続き型言語でいうところのアルゴリズムの部分である。
これが、アルゴリズムという用語の用法を混乱させる原因だろう。
機械学習モデルは、(教師あり学習の場合)教師データを入力してモデルを訓練する(学習させる)。つまり、手続き型言語でいうところの処理手続きの部分は、作ったら終わりではなく、データを入力して訓練する必要があり、この訓練は本番稼働後も続くようだ。

それでは、AIにおけるアルゴリズム(モデルを作成するもの)とは何かというと、(これも幾つかのサイトを参照すると)ランダムフォレストとかロジスティック回帰、・・・などの用語が出ている。
結局のところ、アルゴリズムという用語の使い方が混乱を招いているのは、機械学習ではアルゴリズムとモデルを区別しており、これを区別しないで使うのが混乱のもと、だと言えそうだ。
表現を変えて言うと、従来の手続き型言語と機械学習ではパラダイムが異なっている、ということだろう。このパラダイムの違いを意識しないで記事を書くと読者は混乱する。

最近はAIの研究、開発が加速しているようで、例えば日経コンピューター(2022年9月29日号)にその概要といくつかの事例が掲載されている。本書には、モデル化について分かりやすい解説が出ている。
「機械学習によるデータのモデル化とは突き詰めて言うと、情報の意味を失わずに圧縮し、計算可能な状態に構造化することである」
このモデルであるが、例えば自然言語を扱う「言語モデル」は研究と改良が進むにつれ、巨大化して表現力も増しているという。
しかし、個人的には十分に納得できない表現もある。
「言語モデルは巨大化すること(および自己注意機構などのフィルターを用いること)で、文章の意味を正確に扱えるようになった」などの記述である。
もともと現在のAIは文章の意味を理解できない、と言われているから、上記の表現は本当に正しいのだろうか?

日経コンピューターの記事を読んで驚くのは、機械学習モデルのパラメータ(変数)の数である。記事には、
「オープンAIが2020年に発表した「GPT-3」は、機械学習モデルのパラメータがBERTの3億4000万パラメータから1750億パラメータへと巨大化することで・・・」
とある。
パラメータ(変数)がこれだけ膨大だと、「あるパラメータの値を変えると出力がどのように変化するのか」を予測することはほとんど不可能ではないか?(と素人である私は思ってしまう)。
実際、「巨大言語モデルに説明可能性を持たせる取り組みは始まってはいるものの、まだ初期段階」だそうだ。
手続き型言語に馴染んできた私から見ると、
「一体、モデルのデバッグやテストはどのようにして行うのだろうか?」
「モデルの出力結果が期待したものと異なる場合、何を、どのように修正するのだろうか?」
といった点に興味が行ってしまう。これもパラダイムが違うからそのように感じるのかもしれない。


Update

2022年10月
« 8月   12月 »
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Archive

Navigation