オブジェクトの広場はオージス総研グループのエンジニアによる技術発表サイトです

量子技術

量子技術を使おう

第1回 量子アニーリングによる献立提案
オージス総研 技術部 データエンジニアリングセンター
橋本 誠、山口 雄也
2022年8月23日

今回から量子技術に関連した話題で連載を始めます。オージス総研では、2018年からカナダの量子コンピュータベンチャーであるD-Wave社と利用契約を交わし、量子アニーリングマシンを利用した最適化技術の習得と実応用のための検証を進めています。さらに、2021年から量子ソフトウェア研究拠点に参画し、ゲート方式の量子コンピュータに関する取り組みも始めています。そこで得られた知見や技術開発成果を紹介していこうと思います。
本連載では量子技術を実際に使うことを念頭に情報発信します。第1回はD-Wave社の量子アニーリングマシンを用いた献立提案を紹介します。オージス総研が運営するレシピサイト「ボブとアンジー」のデータを利用しており、量子がどんなレシピを選ぶのか興味を持った方はぜひご覧ください。

1. はじめに

本記事は連載の1本目ですが、量子技術に関する基礎的なことは飛ばしてあえて応用例から紹介します。

日本では政府が量子技術イノベーションと銘打って、各種技術・領域の戦略ロードマップを描き、量子未来社会ビジョンとして2030年までに国内の量子技術の利用者を1,000万人にし、量子技術による生産額を50兆円規模にするという目標を掲げています。一方で、量子技術と言われても何から手を付けて良いのか分からない方も多いのではないでしょうか。そこで、まずは量子技術の実応用例を見て、量子技術の現在地と今後の可能性を感じ取ってもらえればと考えています。

具体的には、弊社運営のレシピサイト「ボブとアンジー」のデータを用いた献立提案という内容です。量子技術としてはD-Wave社の量子アニーリングマシンを使っています。量子アニーリングと古典的な従来手法との比較も行っており、量子の優位性が現れることも確認しています。

また、今回から始まる連載では、量子エンジニアが増えることを願いつつ、自ら手を動かして試せるような知識や技術も公開していくつもりです。既に量子技術を活用されている方にとっても知見が得られれば幸いです。

2. ボブとアンジー®について

ボブとアンジーはオージス総研が開発、運営する老舗のレシピサイトです。管理栄養士さんが監修した質の高いレシピを提供しています。単にレシピが知りたいだけだと材料と作り方で十分ですが、ボブとアンジーではみなさまの豊かな食生活と健康を願って、様々な栄養価とそれに基づく管理栄養士コメントも公開しています。この記事をご覧になっている方はぜひ一度ホームページを訪れてみてください。

3. 背景

レシピサイトやレシピ本で多様なレシピが簡単に調べられる一方で、今日の献立は何にしようかと考えることに時間を使う人は多いのではないでしょうか。ご自身やご家族の健康維持や嗜好、手持ちの食材の活用を考えると毎日の献立はとても悩ましいと思います。たとえば1食分の献立として主菜、副菜、汁物を栄養バランスを考えながら選ぶとします。しかし、このような組み合わせは膨大で、調理前にレシピサイトやレシピ本を眺めながら考えるだけでも一苦労です。

また、総カロリーや塩分量、重点的に摂取すべき栄養素など細かな数値が気になる方もいると思います。妊娠中、病気療養中、筋力トレーニング中などその時の状態に応じて適切な栄養管理が大事なこともあります。近年ではテレワークの普及で自宅で調理する方も増え、食に関する意識も高まってきていると感じます。

個人の食に関する意識の変化が本当にあったのかを確認するために、ボブとアンジーのPV数の変化を見てみましょう。下図は2019年4月を 1 としたときの比率を表しています。

ボブとアンジーのPV変化率

新型コロナウイルスが流行し始めた2020年初頭から緊急事態宣言が発令されていた4月~5月に向けて急上昇しています。この頃は前年比でPV数が2.5倍になっており、自宅での調理に伴いレシピを調べる機会が増えたことが伺えます。そのあとは少し下がりますが、1.5倍程度の水準を維持しています。ピーク時にボブとアンジーの認知度が高まったことが一番の理由かもしれませんが、管理栄養士さんが監修していて栄養価の記載が充実しているレシピを載せていることから、個人の食に対する意識が高まったことの表れでもあると推察しています。

このような食に関する個人の意識の変化だけでなく、社会的にも食育が推進されています。農林水産省は2021年度からの5年間で、下記3つの重点事項を柱に第4次食育推進基本計画を定めています。

  • 生涯を通じた心身の健康を支える食育の推進
  • 持続可能な食を支える食育の推進
  • 「新たな日常」やデジタル化に対応した食育の推進

具体的な数値目標としては以下のようなことが挙げられています。

第4次食育推進基本計画の目標抜粋

出典:第4次食育推進基本計画の目標から抜粋

最初の2項目を見ると、主食・主菜・副菜を組み合わせた食事を取る割合の低さが課題になっています。一般的な感覚としてそのような食事が良いと分かっていても、実際に栄養バランスを考慮しながら献立を決めるのは難しいのではないでしょうか。国としても具体策を必要としていると思います。

そこで我々は、組み合わせ最適化技術を用いて「個人の特性に応じて必要なカロリーや栄養素を摂取できる献立を提案する」技術の検証を行いました。弊社のボブとアンジーのレシピデータを効果的に活用し、現実的な献立提案ができることを目指しています。

4. 献立提案の結果

前置きが長くなったので、先に献立提案の結果を紹介し、その後に定式化方法を説明します。

4.1. 条件設定

まず献立提案の条件を設定します。

  • 30代男性
  • 重点摂取したい栄養素:カロリー、たんぱく質、ビタミンC、鉄
  • 主食:白ごはん200g

年代と性別は厚労省が公開している「日本人の食事摂取基準」を参照するのに使っています。ここには栄養素ごとに推奨値が記載されており、それを献立提案の目標値と定めます(実際には目標値は自由に調整可能です)。

重点摂取栄養素は何個でも選択可能ですが、今回は結果をシンプルにするため代表的なものだけ選択しました。カロリーは栄養素ではないですが、同じように定式化できるので同列で記載しています。

最後の条件は、先に主食である白ごはん分の栄養素を目標値から引いておくために必要です。主食を食べない場合や主食も含めて献立提案する場合はこの条件は不要です。

4.2. 計算方法

今回入力に使うレシピはボブとアンジーのデータから一部抜粋して、計4,000弱あります。残念ながらD-Wave社が提供する今の量子アニーリングマシンではせいぜい100レシピが限度です。それ以上の組み合わせ最適化問題を量子計算だけで解くことはできません。

そこで、古典的なコンピュータでの処理を交えたハイブリッドソルバーを使うことにします。記事を執筆している2022年7月現在、D-Wave社は下記3種類のハイブリッドソルバーを提供しています。

  • BQM (Binary Quadratic Models)
  • CQM (Constrained Quadratic Models)
  • DQM (Discrete Quadratic Models)

DQMは変数が 0 か 1 だけでなく整数値が扱えるようになっていますが、実態として動くのは 0 か 1 の量子ビットであることには変わりなく、離散値問題の定式化をライブラリ側に任せることができるというのがメリットという認識です。今回は二値変数で定式化しているのでDQMは使いません。

BQMとCQMでは制約の取り扱いが異なりますが、制約なしの形で定式化すればBQMでもCQMでも解けます。ただし、扱える変数の最大数(最大結合数)が異なり、解きたい問題のサイズ(今回はレシピ数)は最大結合数以下でなければいけません。最大結合数は逐次更新されるので、D-Wave社の公式HPを参照ください。

ユーザーとしては、BQMとCQMで大きく違うと感じるのは出力仕様です。BQMは解を1つだけ返すのに対し、CQMは問題サイズ(レシピ数)に依存して複数個の解を返してくれます。検証時に試したところ4,000弱のレシピに対しては50個弱の解が得られました。

BQMとCQMのどちらを使うのが適切かは問題に依存します。最適解が1つだけ欲しい場合はBQMが良く、最適解がいくつかあってそこから人が選択できる方が良い場合はCQMが良いです。たとえば、生産計画ならBQM、シフトスケジューリングならCQMという使い分けが考えられます。今回の献立提案は複数見比べたいのでCQMと相性が良いですね。

4.3. 古典手法との比較

それでは、計算結果を見てみましょう。

古典的な手法であるシミュレーテッドアニーリング(SA)の結果と、量子アニーリング(QA)の結果を見比べます。SAの試行回数は50回で、QAはCQMを使います。それぞれ複数の最適解が得られますが、その中で最も厳密解に近い献立を代表して載せたのが以下になります(ここでは全組み合わせの中で最も良い解を「厳密解」と呼び、SAやQAで得られた解を「最適解」と呼んでいます)。

手法 主菜 副菜 汁物
SA えんどう豆のコロッケ 大豆とひじきの炒め煮 きのこのすまし汁
QA 里いものイガ揚げ じゃがいもの梅肉白和え ごまみそ汁

レシピ名だけだとよく分からないですね。料理画像と栄養素ごとに目標値との一致具合も見てみましょう。

SAとQAの結果

出典:料理画像はボブとアンジーから取得

どうでしょうか?

料理画像を見る限りSAもQAも似た感じですね。どちらの組み合わせも献立としては申し分なく、実際に食卓に並んでいても違和感はありません。どちらも美味しそうですし、料理に優劣をつける必要もないでしょう。

料理画像の下のグラフは栄養素の目標値を 1 とした時の摂取率です。両者を見比べると以下のような特徴があります。

  • SAは鉄以外は目標値に非常に近いが、鉄だけ2倍以上多い
  • QAはどの栄養素も目標値から大きな乖離がない

グラフ下の乖離度は後述の式(2)を得られた結果に対して計算したもので、上のグラフと同じように目標値が 1 となるように規格化してあります。完全に目標値に一致すれば乖離度は 0 なので、QAの方が厳密解に近いことを示しています。

4.4. 結果の解説

上記の結果はSAとQAの特徴をよく表しています。アルゴリズムを考えると分かりますが、SAは局所解に陥りやすいです。今回も鉄以外はほぼ目標値に一致している組み合わせがあったので、それを厳密解と思い込んで周りが見えなくなっています。QAはそういった解に捕らわれることがなく、どれも安定して目標値に近い解を好みます。

これをたとえ話で説明してみます。

SA君とQA君は新しいノートPCが欲しいと思い、大きさや重さ、RAM、ストレージ容量、値段などの希望を挙げてみました。SA君は家電量販店に行ってみると、予算より2倍高いけどそれ以外は希望通りの商品があったので迷わず買いました。一方、QA君はネット検索して、予算内でおよそ希望をかなえられる商品を見つけ、他にそれより良いものがないことを確認した上で買うことにしました。

およそこんなイメージです。

この例はあくまで問題を解く側の話で、実際は問題を解いた後にその結果を何らかのアクションに繋げると思います。この例の場合、SA君の選択は希望との乖離が金額面だけなので予算を上乗せできれば問題ありませんが、画面が2倍大きいとかRAMが半分しかないものが選択されていたら実用上困ることになります。つまり、問題を解くだけではなく解いた後のことまで考えて手法選択することが重要です。

4.5. 補足

前節の説明はあくまで解の傾向ですので絶対ではありません。SAの方も原理的には試行回数を増やせばいつかは厳密解が出ます。上記の結果ではSAの試行回数は50回でしたが、仮に1,000回に増やせばQAと同じかさらに厳密解に近い解が出る可能性があります。たとえ話で言うと、SA君が予算も含めて希望通りのものが見つかるまで諦めずにお店をたくさん回るイメージです。

一つ押さえておいてほしいのは、SAもQAもヒューリスティック(経験的)な手法のため、得られた解が厳密解であることを保証できません。サンプリング(試行)した際にQAの方が局所解に陥らず良い解が出やすいという性質はあります。そのほかQAがアナログな計算機であるが故の違いもあります。主な違いをまとめると以下のようになります。

手法 解の性質 処理時間 費用
SA 局所解に陥りやすい PCのスペック次第 無料
QA 安定して良解 計算時間は短いがデータの転送時間等が掛かる 高額

これら性能面の詳細については次回の記事で実際の実行結果を元に説明する予定です。

5. 献立提案の手法

ここからが我々の取り組みの本質です。実際に問題をどのように定式化したのかを説明します。

5.1. 問題の具体化

まず献立提案という問題をより具体的な言葉に置き換えましょう。

日本では主食としてお米を食べることが多いので、主食はお米で固定します。そのほか、お味噌汁など汁物を伴う献立も多いと思います。そこで、主菜・副菜・汁物の組み合わせを求める問題に挑戦しました1

この組み合わせ自体はただの制限事項で、一番の目的は栄養バランスを考慮することです。特に、個人ごとに必要としている栄養素を過不足なく摂取できることを目指します。

さらに、料理を作って食べるという現実的な観点から

  • 和洋中などのジャンルを合わせる
  • 特定の食材を使う
  • 調理時間の長いレシピを組み合わせない

など様々な調理条件を設定することも想定します。

次節では、ここで挙げた太字の内容を式で表していきます。

5.2. 定式化

今回の取り組みにおいて、D-Waveの量子アニーリングマシンを使うことがモチベーションとなっています。量子アニーリングマシンの詳細は次回の記事でまとめる予定なので、ここでは「できること」と「すること」を簡単に述べます。

今の量子アニーリングマシンは“制約なし二値の二次計画問題"のみ解くことができます2。数式で表すと以下の式を解くことができます。

QUBO

この式の xi, xj は量子ビットに対応していて、0 か 1 のいずれかを取る変数(以下、量子変数)です。Qij はQUBO(Quadratic Unconstrained Binary Optimization)行列と呼ばれるものです。

式の最初にある min は、最小値を取る時の量子変数の値を求めるという意味です。2通りの値を取る量子変数を N 個使う計算であれば解の候補は 2N 通りあり、その中から最小値を探すことになります。たとえば、N = 100 に対して解の候補は 2100(~ 1030)通りで、これを 1 GHz(1秒間に 109 回)の速度で総当たりすると 1021 秒、つまり、1013 年掛かります。これが量子アニーリングだと 20 マイクロ秒( = 20 × 10-6 秒)です。総処理時間としてはもっと掛かるのでここだけ切り出すと語弊がありますが、1回の計算自体はまさに一瞬です。

ところで、定式化する人間の立場からすると求めたい解が最小値になるようにQUBO行列を設計することが要請されます。量子アニーリングを利用する際は、ここに頭を使うことになります。

しかし、ある程度は経験則が有効なものの、ベストプラクティスと呼ばれるものがなく、実際にやってみないと分からないことが多いです。古典的なシミュレーテッドアニーリングでは解けても量子アニーリングだと解けないということもあります。そういった事情を理解するためにはアルゴリズムやハードウェアの物理的な特性を把握しておく必要がありますが、専門書や論文から学び取るにはハードルが高いと思います。

そこで、本連載記事では実例を元にそのあたりの感覚が分かるような説明をできればと考えています。多少の数式はありますが、それらの意味するところはできるだけ丁寧に解説していきます。

それでは、前節で具体化した問題設定をQUBO行列に落とし込んでいきましょう。

5.2.1. 栄養バランスを考慮する

まず、栄養バランスの考慮は以下の項で表します。

目的項

ここで、量子変数 xi はレシピ i を使う場合は 1、使わない場合は 0 としています。N はレシピ i で摂取できる栄養素 α の値を表し、tα がその栄養素 α の目標値です。つまり、括弧の部分は「使われるレシピで摂取できる栄養素 α が目標値に近ければ小さい」ということを意味しています。

括弧の外の λα は栄養素 α をどれだけ重視するのかを表す変数です。個人の特性や状態に応じて柔軟に設計できる部分ですが、今回は簡単のため、重点的に摂取したい栄養素に対しては λ = 1、そうでなければ λ = 0 とします3

この項は式(1)と違う形に見えるので補足しておきます。括弧を展開すると xi の二次の項だけでなく、xi の一次の項と定数項が出てきます。量子変数 xi は 0 か 1 なので、xi = xi2 という関係があり、二次の項に書き換えることができます。定数項は原点をずらすだけで、最小値を求める問題からは除外することできます。

5.2.2. 主菜・副菜・汁物の組み合わせを求める

次に、主菜・副菜・汁物といった献立区分が重複しないように以下の項を追加します。

制約項1

ここで、Cij はレシピ i とレシピ j の献立区分が同じであれば 1、異なっていれば 0 となる行列です。ただし、i = j の対角要素は 0 とします。

補足:罰金項を使わない理由

実はこういった制約に対しては、以下のような罰金項と呼ばれる項で書かれることが多いです。

罰金項

ここで、P はレシピ i の献立区分を表す行列で、β が献立区分に対応しています。括弧中の和は選ばれたレシピの中で同じ献立区分のものが何個入っているかを表していて、式全体では「主菜・副菜・汁物が1つずつ選ばれると 0、そうでなければより大きい」ことを表しています。

式(3)と式(4)が意味していることは微妙に異なります。仮に汁物のレシピが選択されなかった場合(汁物のレシピに対応する xi が全て 0 だった場合)、式(3)は 0 ですが、式(4)は 1 です。その結果、式(3)では主菜と副菜だけで汁物がないという献立も許されますが、式(4)では許されません。つまり、式(4)の方がより強い制約となっています。

となると、式(4)の方が適切と感じるかもしれませんが4、量子アニーリングを使う場合はそうとは限りません。量子アニーリングではハードウェアの物理的な制限のため、量子変数が全結合ではありません。全結合だと量子変数同士が条件を満たしているのか直接確認できるのに対し、全結合でない場合は伝言ゲームで確認するようなイメージです。人間でもそうですがアナログな伝達は途中で誤りが起こりやすいのです。

結果として量子アニーリングは罰金項のような強い制約を満たすことが難しく、条件を満たさない解を出してしまいます。そのため、罰金項で定式化される典型的な問題である巡回セールスマン問題は苦手です。量子アニーリングの実用例といえば巡回セールスマン問題、というくらいよく目にすると思うのですが、実際には10都市の規模ですらまともに解けません(解けますがたくさんの工夫が必要です)。このあたりの実例も次回の記事でまとめる予定です。

5.2.3. 様々な調理条件を設定する

最後に、実際に調理する際に気になる条件を考えます。たとえば、「和洋中などのジャンルを合わせる」ための項は以下のように表現できます5

制約項2

ここで、Gij はレシピ i とレシピ j が同じジャンルであれば 0、異なっていれば 1 となる行列です。前節の Cij と似ていますが、0 と 1 の値の与え方が逆になっていることに注意してください。また、i = j の対角要素は Cij と同様 0 とします。

同じ考え方で様々な条件を取り込むことができます。嬉しくない組み合わせの場合を+1するだけで良いので実装も簡単です。もし得られた解が条件を満たしていなかったら、+1ではなく+1.5するなどパラメータ調整が必要になりますが、今回の検証ではそういったパラメータ調整も不要でした。罰金項ほど強い制約が必要ないときはぜひ試してみてください。

6. 応用例

これまで1食分の献立提案について述べてきましたが、1週間分など複数の献立をまとめて提案することにも応用できます。結果にも現れていたように量子アニーリングは全体のバランスを取ることに適しているので、1回の食事の中で栄養素最適化をするだけでなく、特定の期間内でトータルの栄養バランスを整えることにも向いています。

たとえば、

  • 20代女性
  • 重点摂取したい栄養素:たんぱく質、食物繊維、ビタミンC、葉酸
  • 主食:白ごはん150g
  • 5食分

とした場合に提案される献立は以下のようになりました。

5食分の献立

出典:料理画像はボブとアンジーから取得(レシピ名の前の数字はレシピ番号)

1食分の献立と違って全体での栄養素最適化が行われているので、特定の栄養素だけ摂りすぎる、不足するということを回避できます。

また、提案された献立から使用する食材の一覧を出力することで、買い物が必要なものを洗い出すこともできます。事業化の方向性として宅配サービスと連携することも考えられます。その場合は、予算と材料費の最適化や売り手側のおすすめ食材を使う献立提案など今回扱わなかった要件も出てくることが想定されますが、本記事で紹介した定式化や従来手法で概ね対応できると考えています。

7. おわりに

現実的な献立を得るためには色々な試行錯誤がありましたが、本記事では分かりやすさを重視して省きました。また、本記事では紹介してませんが以下のような献立の提案も可能です。

  • 主菜、副菜×2、汁物という組み合わせの献立提案
  • 「さんま」など指定した食材を使う献立提案
  • 主菜をあらかじめ決めておき、それに合う副菜や汁物の提案

量子アニーリングマシンの利用可能性を少しでも感じてもらえれば幸いです。

なお、本記事の内容は次回のD-Wave Qubitsでも発表する予定です。直接ご覧になれない方も講演の数か月後にはD-Wave公式YouTubeチャンネルで公開されると思います。お楽しみに。

改訂履歴: D-Wave社に関する記載を一部修正しました。(2022.09)


  1. ボブとアンジーには主食レシピも多数掲載しており、主食も加えた献立提案もできます。今回は本記事での問題設定を分かりやすくするため主食をお米に限定しました。 

  2. 今の量子アニーリングマシンには汎用的な計算能力はありませんが、原理的には量子ゲート方式と等価なマシンに拡張可能です。技術的な困難を乗り越えてくれることに期待しましょう。 

  3. ボブとアンジーのレシピデータからはカロリーに加えて25種の栄養素の値を参照可能で、それらごとに重要度を連続値で割り当てることができます。 

  4. 今回の問題設定では汁物がなくても問題がないので、どちらがより適切か論ずるのは難しいところです。ここでは単に、組み合わせとして主菜・副菜・汁物が1つずつあることがより適切という意味で書いています。 

  5. あらかじめ和食が良いとか決まっていれば、レシピを特定ジャンルで絞り込むだけで十分です。ここでは定式化のコツを説明するためにあえて事前の絞り込みは考えていません。