今、自分が趣味でやっていることは、プロンプトエンジニアリングになるらしい
Stable Diffusionで遊んでいます
3月末にダウンロードして以降、
- 自分のパソコンで動作させるにはどうすればいいのか。
- 動作したら、次は画像を生成させるにはどうすればいいのか。
- 画像が生成できるようになったら、ほしい画像を生成させるにはどうすればよいのか。
といった感じで、いろんな分野で試行錯誤する要素が多くあり、楽しんでいました。
このなかで、1の部分はアップデートの際に発生する度に楽しみ、3の部分は試行錯誤の幅が広く、現在進行形で遊んでいます。
当然、いろいろと調べながらやっているわけですが、そんな中でプロンプトエンジニアリングという言葉が出てきました。
なんだそれは?と調べてみたら、今、遊びでやっていることは、プロンプトエンジニアリングにあたるということらしいので、少し調べてみました。
プロンプトエンジニアリングとは
技術的な観点では、「AIに学習させるための概念の一つで、あるプロンプトについて、AIがどのように振舞うかを定義し、AIに訓練をさせる」、というもののようです。
個人的にはこのように解釈したのですが、違ってたらすみません。
参考:Prompt Engineering Guide 日本語版
AIを利用する側の観点では、「AIに対して目的の成果物を生成させるために与えるプロンプトの探求、追求、最適化などを行う」ことを指すようです。
今後、生成AIの普及が進むにしたがって、必須のスキルになると言及されている方がおられますが、これは、学習モデルの作成などをする側のことを指して言及されていると解釈しています。
ですが、利用する側にも必要になるというニュアンスで言及されている方もおられました。
普段何気なく使う道具でも、ざっくりとでも仕組みを理解しているかいないかで、使用する時の効率や結果に差が出るということだと思います。
生成AI利用者のプロンプトエンジニアリング
複数の情報から推測すると、生成AIに与えるプロンプトを考えることが、生成AI利用者のプロンプトエンジニアリングだと言えるようです。
大まかな作業の流れとしては以下になると思います。
- AIと学習モデルの特性把握
- 目的の生成物を得ることができるプロンプトの試行錯誤
- プロンプトの最適化
- 目的ごとのプロンプトの蓄積
こうやって並べてみると、どの段階でもプロンプトをどのように与えるのか、という試行錯誤が必要になります。
確かに、お試しでやっている段階では意識することはありませんでしたが、目的の生成物の内容が高度化するにしたがって、プロンプトについて考える時間が長くなりました。
あまりいい例ではありませんが、猫の画像を欲しいと思ったとき、単に猫と指示するのか、猫と猫の行動や場所などを併せて指示するかで、目的の画像が得られる精度は変わります。
生成AIは道具
生成AIは、命令を与えるとそれに見合った回答が得られます。
ただ、得られる回答はAIが学習した範囲に制限されます。
このため、得られた回答は人の手で精査、修正をする必要があります。
また、与える命令の妥当性についても検討し試行錯誤する必要があります。
この部分で必要になるのが、プロンプトエンジニアリングのスキルということになります。
なお、生成AIとひとくくりにしていますが、AIが生成する内容や生成AIの構成で、必要になるプロンプトエンジニアリングのスキルは異なります。
テキストを生成するAIは、具体的に生成してほしいもの(表現の形式や、文章、コードといった出力形式など)を指定する必要がありますが、画像や音楽を生成するAIであれば、生成する形式は決まっているので、その内容を指定します。
まとめ
プロンプトエンジニアリングについて、生成AIを利用する立場からゆるく考えてみました。
正直なところ、遊びでやってることがエンジニアリングですと言われても、ピンとこないと思います。
ですが、自分が使っている道具の情報を知っているか、知らないかで、事故を未然に防げたり、より良い結果を得るといった部分に差がでます。
何気なく使っているものについて、興味をもって調べてみると、何かいいことがあると思います。
Discussion