見出し画像

【日記】AIとは良き隣人でありいい感じの棒である

どうもこんにちは、くらげです。
なんだかよくわかりませんが、いつもよりまじめな記事を書きました。


おれたちは雰囲気で「AI」という言葉を使っている

突然ですが、「AI」という言葉の定義について説明しろって言われたらどうしますか?
「なんか、ほら、生成AIとかあるじゃん」「ChatGPTみたいなやつ…」ってお茶を濁したりしてませんか?

結論から言うと、ぶっちゃけ、明確な定義はありません。なぜなら専門家の中でも定義が割れているからです。参考文献に載せているお役所のドキュメントでさえ、いろんな人の定義をお見せしたうえで、ふんわり定義にとどめています。

「AI」というのは、それくらいあいまいな単語なのです。隣の人が自分と同じ意味で使っているとは限らないので気を付けましょう。

たとえば、「生成AI」にもざっくり2種類あります。テキスト(プロンプト)から画像を生成してくれるものと、画像から画像を生成してくれるものです。
今回は前者についてできる限りやわらかーく丸めて説明することを目的としています。
正確性よりは伝わりやすさ、わかりやすさを優先するので、専門家からみたら「おまえ適当言うな!」となる案件もあるかと思いますが、ご容赦ください。

なお、本稿では便宜上「AI」の定義について、「人間のタスクを代替できるコンピュータ/プログラム」と定義することにします。いやまあ、これでもかなりあいまいなんですけど許して!

計算機が絵師に至るまでのわりと長い道のり

そうは言っても、いきなり理屈を振り回しても多分わかんないので、順を追って説明しようと思います。

世界がディープラーニングに辿り着くまで

さて、最初のAI(わたし定義)が生まれたのは、1950年代までさかのぼります。みんな大好きニューラルネットワークの理論が生まれたのもこのころです。これで計算機にいろんなめんどくさいタスクを代替してもらえる!と、研究者はノリノリで理論をこね回しましたことでしょう。知らんけど。
ところが、あとでもう少し詳しく話しますが、ニューラルネットワークというものは、めちゃくちゃメモリを食います。現代、2020年代の個人所有PCでも人によったら悲鳴を上げるレベルです。そんなものがファミコン以下のスペックで動かせるわけもなく、一度ブームは下火となってしまいました。
余談ですが、遺伝的アルゴリズムもこのころに生まれました。あのえっちな絵をみんなで作るやつです(語弊)。

時代はもう少し進んで、1980年代。ようやくファミコンのスペックが見えてきました。
このころに生まれたのが、「機械学習」という概念です。
機械学習にもいろいろあるんですが、ものすごく雑に言うと、計算機は「与えられたデータを分類する」「与えられたデータから予測をする」ということができるようになりました。というか、そういうタスクをこなすのが機械学習と言えます。これらのタスクをこなすために、研究者たちはいろんな手法を考えましたが全部割愛します。
その中でも、「教師あり学習」というものが重要となります。これは、事前に正解付きデータを使って分類なり予測なりのモデルを生成し、未知のデータに対して処理を行うものです。あ、モデル、というのは「正解付きデータを使って学習した値の塊」です。正解データそのものではありません。ここ重要。
そうはいっても、まだまだスペックはファミコンに毛が生えたようなものです。正解付きデータを突っ込める量にも、モデルのサイズにも限界があるので、やっぱりまた研究は下火になりました。

さてさて、またまた進んで2010年代。マシンスペックの向上が目覚ましいころです。
あるとき、かしこい人は気がつきました。「これだけマシンスペックがあるんなら、ニューラルネットワークのパワープレイができるんじゃね?」と。

そろそろ、ニューラルネットワークについて説明します。
ニューラルネットワークのスタート地点は、「人間の脳と同じ仕組みを計算機にも持たせたら、人間と同等のタスクができるのではないか」という思想に基づいています。
わかりやすいので画像認識のタスクで説明します。人間の脳は、無数のニューロンというものが結びついていて、それらが活性化したりしなかったりすることで目の前にあるものがリンゴなのかバナナなのかそうじゃないのかを識別します。
ひとつひとつのニューロンは、決して高機能のものではありません。眼から入ってきた画像に対して、個別のニューロンはささやかな明暗の差や特定のエッジ(線の向き)などに反応して活性化します。その結果がまた別のニューロンに入り、さらにまた別のニューロンに入り…を繰り返して、脳は最終的に「汝はリンゴ!」という判断を下します。
もうお気づきかと思いますが、ファミコン以下のスペックで無茶を言うな!というのはそういうことです。人間のニューロンは1,000億個(Google調べ)あると言われているので、人間の脳を再現しようと思ったらそれはもう大変なことになるわけです。

話は逸れましたが、かしこい人はパワープレイを敢行しました。
もちろん、人間の脳を完全再現するわけではありません。ニューロンの連結もほどほどにしておきました。
するとどうでしょう。目覚ましい結果が出たのです。さっき全部割愛した手法とかどうでもよくなるくらい、分類や予測の精度が向上したのです。

ちなみにわたしはこのあたりで大学を出ちゃったので、ここからはかなり独学の話が含まれます。

最近、計算機くんが何を考えているのかわからないの

さてさて、かしこい人は考えました。「ニューロン、もっと連結すれば凄いことになるんじゃね?」と。とはいえ、かしこい人のお財布にも限界がありますから、できることには限りがあります。

そんなとき、かしこい人に声をかけてくる企業がありました。そう、Google先生です。
そして、かしこい人は計算機をいっぱい連結し、メモリをじゃぶじゃぶ使って、リンゴとバナナの画像もいっぱい用意して、ニューロンをいっぱい連結してみました。
これがディープラーニングです。つまり、ディープラーニングというのは「ニューラルネットワークの連結を長くしたもの」であり、「機械学習」の一部なのです。前振り長くてごめんね。

そして、成果は現れました。とんでもないことになりました。世はまさに大ディープラーニング時代の到来です。

ところが、ディープラーニングというか、ニューラルネットワークにはひとつの問題がありました。
それは、「結果に至るまでの過程が人間には理解できるかたちになっていない」ということです。汝はリンゴしたはいいけれど、どうしてそれをリンゴと判断するに至ったのか、がわからないのです。

この問題は、ニューラルネットワークである限りつきまといます。もちろん、そこをどうにかする研究もあるにはあるんですけどね。

さてさて、こうして、ディープラーニングは画像認識分野を目覚ましく発展させました。
画像認識の話ばかりしていますが、時系列データの予測や文章解析でも活躍しています。ただ、そっちはわたしの専門じゃないからあんまりわからないんだ。すまない。

計算機くん、ついに筆とをる

昔、といっても私が卒業した後の話だったんですけど、ノイズ画像を与えて計算機に「絵を描かせる」ツールが出たことがありました。そのツールはノイズの中から無理やり「それっぽい」パーツを見つけ出すことで絵っぽいものを描かせていました。壁のシミから人の顔を見出すのに似ています。

まあとにかく、2010年代後半にはそういったツールがあり、「ディープラーニングで計算機に絵を描かせる」といった研究が始まっていた、といえます。

今はもう生成AIの話に駆逐されて元記事が発掘できないのが悔やまれます。ほんとどこ行ったんだ。

そして、計算機は絵師になった

2022年、StableDiffusionが現れました。
その前から個人的にMidjouneyでちょこちょこ遊んではいましたが、これがまーすごいモデルだったのは別に語らんでもいいでしょう。

これまで、画像とテキストを紐づける研究は行われており、画像にキャプションを入れる、なんて研究も行われていました。これは結構成果が出ています。ところが、その逆となると急に大変なタスクになりました。何せこっちはニンニクマシマシアブラカタメとクソ長い呪文に対応する必要があるのです。

とりあえず、ここからはわたしなりにどうにかこうにか、「テキストから画像をつくるしくみ」について説明していきます。

キャプション芸はほどほどに

テキストと画像は、言わずもがな全く別のものです。リンゴの画像はただのピクセルの集合でしかありませんし、「リンゴ」というのはただの文字列です。人間的には「近い」と感じられますが、計算機には全然理解できません。計算機は算数しかできないからです。

それなら、計算機にとっても「近い」と感じられる状態に変換してしまえばいいのです。まあ言うのは簡単ですがやるのは大変です。
どうしてかって、計算機にとって「近い」とは、何なんだよ。という問題があるからです。
結論から言うと、計算機における「近さ」とは、値の近さです。厳密にはベクトルの近さと言えます。矢印の向きと長さです。

ここで、先ほどちょろっと言った「画像のキャプション」というものが役に立ちます。つまり、リンゴの画像の近くには、きっとリンゴという文字列があるのでは?という考え方です。もうちょっとわかりやすく言うとpixivのタグなんかどうでしょう。Aくんの絵にはおおむねAくんのタグと作品名がついています。これは使えそうです。腐向けとかタグ芸とかはいったん忘れてください。

さて、これを使って学習したモデルを使えば、テキストと画像の連携が取れそうな気がしてきました。

リンゴのリンゴ性とは何なのか

さて、計算機はもちろん無から画像を作ることはできません。画像を生成するためにはたくさん学習が必要です。もちろん、この画像たちにはキャプションがついています。リンゴにはきっと、「リンゴ」「赤い」「写真」などのキャプションが含まれていることでしょう。

じゃあ、呪文が「ショッキングピンクのリンゴ」だったらどうしたらいいでしょう。このままでは常識的な色のリンゴしかお出しすることができません。

こうなったら、リンゴの画像から「リンゴ」部分と「赤い」部分を計算機にわかる形で分離する必要があります。つまりベクトルです。

仕方がありません。学習のために持ってきた画像を一旦全部粉々に粉砕しましょう。
遠心分離器にかけるイメージです。あくまでイメージですが。
遠心分離器された世界では、「リンゴ」と「赤い」は独立しています。「ショッキングピンク」とか「バナナ」とかもその辺にあることでしょう。もちろん、ここも厳密にはベクトルの世界です。

さて、こうなればあとは呪文もベクトルにして、遠心分離された世界の一員として復元処理をされるだけです。この復元処理にニューラルネットワークが使われるわけですね。

こうしてめでたく、ショッキングピンクのリンゴの画像が生成されましたとさ。めでたしめでたし。

君、なんか絵柄違うよね?

さて、いろいろなモデルを使っていると、同じ呪文でも画風が違うことってありますよね。

当然ですが、ミキサーに入れる材料が違えば、違うジュースが出来上がります。このジュースがベクトルの世界です。
同じ「リンゴ」「赤い」であっても、元にした材料が違うので、当然数値=ベクトルが異なるのです。
写真しか学習してないモデルと絵画しか学習してないモデルがあったら、当然「ショッキングピンクのリンゴ」でも違う画像が出るのです。

理想の絵が出るまでガチャを回そう

そういえば、どうして絵柄がガチャになるのかを説明していませんでした。

簡単に言うとニューラルネットワークは確率で動いているからです。
ベクトル世界から復元する時に、どうしても確率の要素が入るのです。それを解説すると永遠に終わらないのでやりませんが。

おわりに

こんなところまで読んでいただきありがとうございます。
書いておいてなんだけど、正直正確性についてはあまり保証できません。

あくまで、「マジで何もわからない人が、昨今のAIについてふんわりとした理解をする」一助となればと思ってこの記事を作りました。

これ書いてるだけで午前中使っちゃった。何してるんだろ。

参考文献

https://www.soumu.go.jp/johotsusintokei/linkdata/h28_03_houkoku.pdf

この記事が気に入ったらサポートをしてみませんか?