画像生成AIはなぜ文字を上手く“描けない”のか
AIの技術的進化において、テキストによる画像生成はそのほかの分野に比べて視覚的に「わかりやすく凄い」というのも相まって、広く認知されるようになった。約6年前は鳥の姿形をようやく制御できるかできないか(※1)という具合だったのにもかかわらず、現在では鳥に限らず様々なコンテンツを、美しく高解像度に生成できるようになった。 【画像】『Adobe Firefly Image2 (Beta)』で生成した画像 プロンプトは「The word "ZOO"」 しかし、文字の完全な描写には未だ困難が伴っている。試しにAdobeが提供する画像生成AI『Firefly』にSign with the words "Real Sound" painted on it(訳:"Real Sound"という文字の描かれた看板)と入力して画像を生成してみよう。 こちらの期待に反して看板に描かれているのはすべて大文字であり、SOUNDの"N"が抜けてしまった。 この生成はなぜ失敗してしまったのか、そしてAIが文字を生成することはなぜ難しいのか。本記事では、その理由や生成AIが抱える課題について解説していきたい。なお、本記事の解説に関して ・著者は大学の学部生でAIと芸術について研究しているが、技術的な専門家ではない。 ・シンボルグラウンディング問題(※2)については直接的には取り扱わない。つまり、文字と意味の対応を学習することの困難さについての議論ではなく、テキストの命令から文字の「形状」を画像に生成するというタスクそのものの困難さについて議論する。 ・解決方法の検討は行わず、(データセットをとにかく増やすという方法以外で)解決手法を提示した研究紹介にとどまる。 ・以下の説明は全て2023年10月現在のことである ことを事前に承知していただきたい。 まず、テキストから画像を生成するようなAIが文字・文章を正しく描けない理由として、以下の4点が挙げられる。 文字は、点と線(曲線)をパズルのように組み合わせたものである。人間は、そのパズルのミスに非常に敏感であり、少しのミスも許されない。 AIに画像を生成させる時、命令が文章のみだと「文字を書く」という命令も文字によって成される。従って、パズルの仕方についての説明はされない。 文字が表す概念が、音(アルファベットなど)/音節(ひらがななど)/意味(漢字など)の3パターンに分けられており、後者になればなるほど文字の種類が指数関数的に増え、生成が難しくなる。 そもそも最近有名になった巨大なAIモデルのほとんどが、テキストを処理する際に文字を読んでないことが多い。 ここからは、それぞれの理由について細かく記していきたい。 1.文字には構造がある そもそも「AI(人工知能)」とはどういったものを指すのだろうか? 当然様々な定義づけがされているが、ここでは暫定的に「生物、特に人間の知能を人工物、特に計算機(コンピューター)によって模倣しようとする試み」としたい(※3)。つまり、AIには知能を模倣しているように見えることが求められているのだ。このとき重要なのは模倣しているように「見えている」ことであり、実際に知能を持っているかどうかというのは関係ない。 筆者がなぜこの定義付けから議論を始めたかというと、いまの超高精度な画像生成AIも、データセットから視覚的パターンの傾向を把握することはできるが、それがどのような理由でパターン化されているのかは学習していないことを示すためである。たとえば「リンゴ」がおおむね赤色であるということは、データセット内にあるリンゴが写っている画像を見ればわかることだが、知能を模倣するうえでは「なぜリンゴが赤色なのか」を知る必要はないのである。 私たちが文字を書くとき、アルファベットの"Z"がなぜその形状なのかということを理解する必要はない。しかし、"Z"という文字は、左上から右下に一本の線のストロークで書かれるということは学習している。また、"Z"という文字の右隣に"OO"という文字が続くと、それが動物園("ZOO")を意味していることを学習している。私たちは文字が、点と線(曲線)を組み合わせたものであることを理解しており、さらにその配置パターンが何を指し示すのかを知っているのだ。 筆者がテストした例では「"ZOO"という文字を描く」という命令をした結果、動物園のようなデザインと"ZIO"という文字が生成されている。「ZOO」という配置パターンは理解していないが、ZOOという単語が示す"動物園っぽさ"をフォントやデザインに反映してしまっている。 AIはパターンを学習しているが、文字を形づくるためのパズルの手法は学習していない。この問題は、画像生成AIが手の形状を上手く描写できないということに共通している。 AIが学習するデータセット内で、手は様々な写り方をしている。それらから手というイメージを学習すると、手には肌の質感、爪、指があることがわかる。しかし、データセットには、指が5本写っている場合もあれば、一部が隠れている場合もある。手のひらも手の甲もデータセットには存在するが、それらには同時に表裏が写っている訳ではない。したがって、指は「5本」だとか、手のひらと手の甲が裏表であるということはパターンの傾向としてしか学習しておらず、解剖学的な理解はそこにない。そのため、どうしても指があり得ないところに生まれたり、人と人の手がくっついてしまったりするというわけだ。 こうした構造的ミスは、記号の描写にとっては致命的である。"ほんだな"と"はんだな"では、"ほ"と"は"の一本の横線の違いしかないが、後者は決定的に間違っていると言える。人間は道を走る車が前方を向いているか、後方を向いているかという問題には気づきにくいが、"ほ"と"は"の違いには敏感である。ほかの画像生成タスクと比べて記号は構造が直接的に意味を左右するため間違いを誤魔化せないという点で、文字の生成は難しさを伴う。 2.文字は文字で表現される 次に挙げる問題点は、テキストから画像を生成するという条件下において、文字を表現する命令文もまた文字であるという点である。 これは、先ほどの手の例には見られない問題だ。たとえば手の形に関しては「握手」「握りこぶし」「チョキ」など、様々な形容詞がすでに与えられている。しかし、"C"という文字の形状を説明する形容詞は存在しない。"C"という文字の書き方、つまり構造の説明をするには"円の右上側に設定した任意の点から左方向に円周上に曲線を描き……"のような説明を与える必要がある。"C"という文字だけならこういった説明文を入力することは可能だが、これが"Real Sound"のような語の連続になると非現実的であることは自明だ。そして入力可能かどうこう以前に、データセットでそのような説明文によって文字・文章を表現している場合は少ないだろう。 先述した例のように、"ZOO"という文字の形状を生成させるためには、"ZOOという文字"と入力する必要がある。この時、ZOOが動物園のイメージそのものではなく、文字の形状自体を取り扱っているということを学習するのは非常に難しい。一方で、手の形状に関しては「握手をしている手」のように、その形状を別途説明することは至って自然であるために、データセットにもそうした文章が含まれている可能性は大いにある。 こうした問題は、逆に文字の形状を文章以外の方法で補足してあげることで解決する可能性がある。実際、2023年のMicrosoft Research Asiaの研究(Yang et al.)(※4)では、テキスト以外に画像によって文字の位置や形状を追加で指示してあげることで、高品質な文字の生成を行っている。 3.文字の種類 当然ながら、文字には種類がある。英語アルファベットはA-Zの26種類、ひらがなは濁点等含まずに46種類、漢字は一般的に使われるものでも5,000種類程度と言われている。漢字の種類が他を圧倒しているが、これは英語アルファベット、ひらがな、漢字がそれぞれ意味のレイヤーが異なることに起因している。 現代の日本語学においては、言語を表記する文字に関して以下の3つに分類される(数字や顔文字といった、音を表さない文字についてはここでは考えない)。 音素文字:子音や母音の単位であり、音を表す 音節文字:音節(子音+母音)の単位であり、音を表す 表語文字:語の単位であり、音を表す 表語文字はそれ自体で意味を持つために、さまざまな事柄を表現するため様々な文字が考案されてきた。一方、音素文字や音節文字は基本的に組み合わせて語を形成するため、必然的に音素の種類分しか必要なくなる。したがって、画像生成AIで文字を生成するということを考える場合、表語文字かそれ以外か(実質的には漢字かそれ以外か)でタスクの難易度はまったく異なる。 データセットに含まれる文字の画像に関しても、アルファベットの低頻度文字よりも漢字の低頻度文字のほうが含まれる可能性が下がることは自然に理解できることだ。そのため、「漢字を含むイメージの生成」は、現在の文字画像生成タスクにおいて集中的に取り組まれる分野となっている。 4.文章を文字で読まないAI 最後の理由は、少々技術的な話題となる。実は昨今話題になっている超高精度な画像生成AIや、ChatGPTのような言語生成モデルのほとんどは、文章を読むときの最小単位が「文字」ではない。 そもそも、AIが実装されているコンピューターは「計算機」であり、つまりあらゆる情報は数値化されなければ処理できない。文章も例にもれず数値化する必要があり、文章をAIに与える前に特定のルールに沿って数値列に直すことを「トークナイズ」という。 トークナイズするときの最小単位を単語に設定すると"I have a pen"という単語は"0: i, 1: have, 2: a, 3: pen"のように4つの数値で表現ができる。最小単位を文字に設定すると"0:i, 1:スペース, 2:h, 3:a, 4:v, 5:e, 1:スペース, 3:a,1:スペース, 6:p, 5:e, 7:n"のように7つの数値で表すことが可能だ。このトークナイズをどの粒度でやるかという設定は、データの効率的な処理をおこなううえで重要なパラメータである。 現在、この粒度は「サブワード」という単位が使われることが一般的だ。これは基本的に文字を最小単位として使用しつつ、頻度の高い文字の連なりはそれらをまとめて一つの単位とするという手法であり、たとえば"enlighten"の"en" "light"や、"slightly"の"ly" "light"のように、頻出する文字グループを一つの単位にまとめてしまうというものである。 2022年にGoogle Researchが行った研究によると、最小単位にサブワードを用いる「文字の見えない」モデルと、文字を用いる「文字の見えるモデル」では、スペリングをする能力と、それらを元に画像生成時に文字を"描く"能力に関して「文字の見えるモデル」が大幅に精度を上回ると報告されている(※5)。 ■結びに 本稿では画像生成AIが文字を描けない理由について、AIの学習に関する原理・テキストで命令を与えるという制約・文字の言語学的性質等を踏まえて考察した。 文字を描くというタスクに関しても、他のタスクと同様に急速に発展を遂げている。以上に挙げた研究のような手法以外でも、そもそもパラメータ数とデータセットをとにかく大きくしていけば解決する問題である可能性は否めない。冒頭の"REAL SOUD"のような、構造が破綻してしまった生成結果もいずれは過去の技術の問題点としてきっと近い未来に(鳥が上手く生成できなかったように)郷愁の対象となっていくのだろう。 ■脚注 1.https://github.com/hanzhanggit/StackGAN-v2 2.シンボルグラウンディング問題を含め、そもそも人工知能とは何かという問いに関してはこちらの資料がわかりやすい: http://ymatsuo.com/DL.pdf 3.徳井 直生. 創るためのAI 機械と創造性のはてしない物語 4.Yang Yukang; Gui Dongnan; Yuan Yuhui; Ding Haisong; Hu Han; Chen Kai. May 29, 2023. GlyphControl: Glyph Conditional Control for Visual Text Generation. arXiv. https://arxiv.org/abs/2305.18259 5.Liu Rosanne; Garrette Dan; Saharia Chitwan; Chan William; Roberts Adam; Narang Sharan; Blok Irina; Mical R J; Norouzi Mohammad; Constant Noah. Dec 20, 2022. Character-Aware Models Improve Visual Text Rendering. arXiv. https://arxiv.org/abs/2212.10562 ■参考文献 https://note.com/dentsulabtokyo/n/ne7c9d010e0fc#16361987-158d-4e45-bf6c-8e5782f919e9 https://www.newyorker.com/culture/rabbit-holes/the-uncanny-failures-of-ai-generated-hands https://theconversation.com/if-ai-image-generators-are-so-smart-why-do-they-struggle-to-write-and-count-208485 https://www.buzzfeednews.com/article/pranavdixit/ai-generated-art-hands-fingers-messed-up https://arxiv.org/abs/2303.17870
文=Asuka Ishii