ページの本文へ

Hitachi

メニュー

株式会社日立総合計画研究所

キーワード

「旬」なキーワードについての研究員解説

プロンプト・プログラミング

研究第三部 技術戦略グループ
氏名:朱丹嬌

1.コード記述によるプログラム作業が不要になるプロンプト・プログラミング

AI(人工知能)技術を利用したソフトウエア・プログラミングが普及しつつあります。中でも、プロンプト・プログラミングは、従来のようにプログラマーがコード1を記述してプログラムを作成するのではなく、ソフトウエアを利用するユーザが「このような作業をしてほしい」という要求指示(プロンプト)を示すだけで、プログラムが自動作成される開発手法として注目されます。
プログラム開発手法は、最近注目されているローコード、ノーコード開発をはじめとして、これまでさまざまな改善がされてきました。しかしながら、いずれの手法も、技術を持ったプログラムの作り手(プログラマー)がアルゴリズムを考案して、コードとして記述する必要がありました。一方、プロンプト・プログラミングでは、プログラムを使いたいユーザが、どのように使いたいかをAIに適切に伝えることで、アルゴリズムやコードを考えることなく、プログラム構築ができるようになります。
例えば、県庁所在地を表示するプログラムを作成したい場合の例を以下に示します。

都道府県名と県庁所在地の対を示すことで、AIは県庁所在地を要求していると理解します。最後の「兵庫県:」の指示に対して、AIは県庁所在地変換プログラムを自動構築し、「神戸市」と回答します。
AIが自動でプログラムを構築する手順は以下のように考えられます。①ユーザが提示するプロンプトを自然言語処理で解釈し、②プロンプト指示の作業手順に適している(とAIが判断した)プログラムを選択の上、③必要に応じて複数のプログラムを組み立て・修正を行い、④プログラムの実行検証を実施します。ここで、②でAIが選ぶプログラムは、オープンソースでネット上に公開されたプログラムや、プロンプトを提供する企業の自社内にあるプログラム、あるいはこれまでにAIが構築してきたプログラムになります。このようにして、ユーザは、プログラムに必要なアルゴリズムの検討やコードの記述をすることなく、プログラミングができるようになります。
このようなプロンプト・プログラミングは、ソフトウエア業界の開発の在り方に大きな影響を及ぼすだけでなく、ビジネスの現場や社会におけるソフトウエア活用を加速させると考えられます。

2.文章作成から応用展開するプロンプト・プログラミング

前章で説明したように、プロンプト・プログラミングによるプログラム作成自動化手順は、AIの自然言語処理、つまり、人の会話や記述で用いられる言葉を理解し、言葉と言葉の関連性を把握する技術が前提となります。AIがユーザの要求指示(プロンプト)の中から、入力に相当する部分、出力に相当する部分、入力と出力の関係性を解釈し、解釈に沿ったプログラムを選択し、必要に応じて複数プログラムを組み立てていくのですが、これらの工程が的確にできるようになったことで、プロンプト・プログラミングが実用レベルとなりました。
応用先としては、対話形式での数値計算から自然言語処理に関わる分野まで、拡大しています。以下、プロンプト・プログラミングの取り組みを紹介します。

(1)数値計算
プロンプト・プログラミングは、理屈上はどのようなプログラムでも自動構築できます。数値の計算も可能です。例えば、簡単な足し算のプログラムであれば、以下のようにプロンプトを提示することができます。この場合、AIはプロンプトを数値計算の指示ではなく、まずは文字として解釈します。その上で、文字のパターンを適切に導くプログラムとして、数値計算アルゴリズムを選択します。

上記の例の場合、AIは1+1と2、あるいは2+5と7という文字が組み合わせになるアルゴリズムを、足し算と解釈して、4+8について12という正しい結果を回答できます。

(2)粗い文章への補間・補充による表現力の高い文章への変換
文章を記述するプログラムでは、ユーザが数行程度の粗い文章をプロンプト提示すると、その文章を補完・補充し優れた文章を回答します。
米国の非営利団体Open AIは、文章生成言語モデルGPT-3(Generative Pre-Training 3)を開発しました。GPT-3は、ニュース記事のタイトルとサブタイトルを入力することで、疑似的にニュース記事を自動記述するプログラムを構築できます。プログラムが記述した疑似ニュース記事の文章表現力をテストするため、実際に記者が記述した本当のニュース記事と比較したところ、読者は、区別ができませんでした。

(3)自然な会話応答
会話応答の例をプロンプト提示すると、自然な会話ができるプログラムを作成できます。ユーザからの話しかけに対して、自然な回答を行い、ユーザの興味に沿って会話の方向性を導くことができます。
米国のFable Studio社は、Virtual Beingという仮想の人物を創出し、現実世界のユーザとの自然な会話ができるシステムを開発しました。映像上の主人公とユーザ(プレイヤ)が会話しながらストーリーを構築するVRゲームとして、新ジャンルの映像作品を作成しています。

3.プロンプト・プログラミングの課題

プロンプト・プログラミングは、ユーザの要求指示に対応しますが、人間の会話に必要な、交わされる言葉以外の社会通念、基礎知識を持たないため、AIの自然言語処理には限界があります。言葉の意味を誤解するなどの課題があり、ユーザが使いこなすのに工夫が必要です。

(1) 社会常識の理解不足
プロンプト・プログラミングでは、AIが語彙(ごい)、表現の言い回しなどを習得することができますが、長文記述では、同意単語の繰り返し、趣旨に一貫性のない文章を生成する可能性があります。また、人が社会生活の中で共通認識として持っている常識をAIが学んでいないため、誤った文章を生成することがあります。
例えば、ユーザが「私は、仕事にでかける前に、洗濯したTシャツをたたんでいたところ、スーツにほころびがあることに気が付いた。」といった、あいまいで一貫性のない文章を入力した場合、プロンプト・プログラミングに続きの文章を自動記述させると、「私はTシャツを来て仕事にでかけた」と記述回答してしまうことがあります。これは、AIが「スーツ」に対応して捕捉する文章として、「仕事にでかける」ことを予測したためであり、AIが仕事に適したドレスコードという社会常識を持たないことが原因として存在します。
同様に、人が日常的に(前提・背景として)理解している物理現象に関する常識をAIが持たないために発生する誤解があります。
例えば、「人がボールを上に向けて投げたらどうなるか」という質問に、AIが人の腕力の限界を理解していない場合、「ボールは宇宙に飛び出す」と、回答してしまう可能性があります。また、人であれば「意味が分からない」と判断するようなナンセンスな質問にも意味を解釈し、間違った回答をする懸念があります。例えば、「サステナビリティボンドは慣性の法則に従うか」という質問に、「従う」と単純回答してしまうこともあり得ます。

(2) 運用にかかる費用と時間 現状、プロンプト・プログラミングの運用に膨大なコストがかかります。具体的には、GPT-3の場合、45TBの事前学習文章データのためのインフラ整備コストや膨大なパラメータを使用した事前学習などの運用コストなどで最大約5億円の費用がかかり、仮にGPU(グラフィックス・プロセッシング・ユニット)1台での学習を仮定すると約355年の計算時間が必要になります。また学習に要する電力は1,287メガワット時(MWh)にも達し、約300世帯の1年間の消費量となります。

(3)ユーザにスキルが必要 どのような指示をプロンプトとして与えればよいか、ユーザ側の工夫、使いこなしが必要になる場合があります。「円周率を求める」プログラムを作成したい場合は、ユーザが、円周率計算に関する知識を持っていないと、指示が難しいでしょう。一例として、ヴィエトの公式2 を使った場合の指示の仕方は、以下のようなものになると考えられます。

このように、プロンプト・プログラミングは、ユーザによって使いこなしやすい応用が異なる、という特徴を持っています。
これらの課題からプロンプト・プログラミングの適用は、限られた分野から進むと想定されますが、より多くの課題に対応するための研究開発も進められています。

4.今後の展望

プロンプト・プログラミングの普及に向けた課題に対し、さまざまな研究開発が進められています。
現在、スタートアップやIT企業で、プロンプト・プログラミングを活用したアプリケーション開発が加速しています。例えば、企業の広告・宣伝を兼ねたホームページ作成の支援や、オンライン情報の真偽・偏向・有害無害を判断するプログラム開発がすでに進んでいます。
その一方で、ユーザ(企業や個人)には、プロンプト・プログラミングを活用したアプリケーションを利用する際、注意が求められます。例えば、プロンプト・プログラミングで作製したアプリケーションの生成情報にフェイクニュース (AIによる誤ったニュース)や人種・性差別につながるバイアス情報などが含まれる可能性があります。そのような情報を発信してしまうと、企業や個人に対して賠償を含めた責任を負うリスクが発生します。 Twitter社は「不適切な内容が含まれている可能性があるため表示できません」、Facebook社は「ポリシーに違反するコンテンツが投稿されたため、利用が一時的に停止されています」など、情報を取り扱う事業者は、一般的な情報発信において、警告を表示する対策を行ってきました。プロンプト・プログラミングの普及に従い、自社が発信、あるいはサービスで取り扱う情報管理の必要性がますます拡大するでしょう。また、日本の民間団体ファクトチェック・イニシアチブのような、第三者が社会に広がる情報・ニュースや言説の真偽を検証する活動も重要になってくると考えられます。
以上のように、プロンプト・プログラミングが定着するまでには、いくつかの課題はあるものの、モデルの改良や計算処理能力の向上、多様なAIモデルの普及などの技術面でのブレイクスルーによって、AIが人と同等の言語理解を行い、多様なソフトウエア・プログラム開発を推進する世界が広がることが期待されています。


1
コード:コンピュータで希望する処理を行うソフトウエア・プログラムを開発するために、ソフトウエアに関する知識・技術を持ったプログラマーが記述する文字列(テキスト)。プログラミング言語で記述される。
2
ヴィエトの公式:16世紀のフランスの数学者であるフランソワ・ヴィエトが、世界で初めて導出した円周率を求める公式。無限の数列を掛け合わせた無限乗積で表現される。

バックナンバー

2021年11月01日
2021年10月27日
2021年08月24日
2021年04月12日
2020年12月23日
2020年11月25日
2020年10月05日
2020年05月18日
2020年04月02日
2020年01月10日
2019年03月14日
2018年12月13日
2018年11月06日
2018年07月27日
2018年05月25日
2018年04月02日
2018年02月09日
2017年08月31日
2017年07月07日
2017年06月19日
2017年05月29日
2017年05月23日
2017年04月05日
2017年02月24日
2016年11月25日
2016年09月01日
2016年03月07日
2016年03月01日
2015年04月22日
2015年03月12日
2015年01月28日
2014年09月03日
2014年09月03日
2014年05月21日
2014年02月19日
2013年11月14日
2013年10月03日
2013年09月19日
2013年08月21日
2013年07月09日
2013年07月09日
2013年02月26日
2013年02月25日
2013年02月25日
2013年02月07日
2012年11月19日
2012年10月10日
2012年10月10日
2012年10月03日
2012年10月03日
2012年10月03日
2012年08月23日
2012年08月02日
2012年07月10日
2012年05月31日
2012年03月30日
2012年03月29日
2012年02月24日
2012年02月03日
2011年12月14日
2011年11月30日
2011年10月27日
2011年10月11日
2011年09月30日
2011年09月02日
2011年08月03日
2011年05月20日
2011年03月31日
2011年02月21日
2011年01月07日
2010年09月29日
2010年09月27日
2010年08月24日
2010年03月29日
2010年03月05日
2010年03月04日
2009年12月01日
2009年10月23日
2009年08月20日
2009年08月06日
2009年06月23日
2009年06月23日
2009年06月22日
2009年06月01日
2009年05月28日
2009年05月27日
2009年02月13日
2009年02月05日
2009年01月23日
2008年11月07日
2008年10月28日
2008年10月28日
2008年10月21日
2008年10月09日
2008年09月09日
2008年08月05日
2008年06月25日
2008年05月14日
2008年05月13日
2008年03月18日
2008年03月03日
2008年02月27日
2007年12月17日
2007年12月03日
2007年11月27日
2007年10月29日
2007年08月01日
2007年07月17日
2007年07月02日
2007年06月15日
2007年06月01日
2007年05月16日
2007年05月07日
2007年04月18日
2007年04月04日
2007年03月19日
2007年03月01日
2007年02月21日
2007年02月05日
2007年01月18日
2007年01月04日
2006年12月12日
2006年12月01日
2006年11月14日
2006年11月01日
2006年10月18日
2006年10月02日
2006年09月15日
2006年09月01日
2006年08月24日
2006年08月01日
2006年07月04日
2006年06月27日
2006年06月05日
2006年05月23日
2006年04月10日