生成AIの登場により、生産技術者が自らノーコードでのデータの学習と最適化を行うことが可能になっています。 本記事ではその実践手順を紹介しています。本記事を読むことで、ChatGPTを用いて非線形なプロセスデータから学習モデルを作成し、Excel上での最適化が可能になります。
第1回目の「ChatGPTとExcelソルバーを用いたプロセス最適化(第1回 ChatGPTを用いたデータの学習)」では、ChatGPTを用いた機械学習モデルの簡単な作成法について、第2回目の「ChatGPTとExcelソルバーを用いたプロセス最適化(第2回 ソルバーを用いた最適化)」では、学習済のモデルをExcelに取り込んでプロセスを最適化する方法を説明しました。
ここではRBF(Radial Basis Function)モデルを用いた学習について説明をしていきます。
【ChatGPTを用いたRBFモデルの学習】
RBF(Radial Basis Function)モデルは、ガウス関数のような中心からの距離によって値が定まる関数を複数配置し、それらを重ね合わせで全体の関数を近似する手法です。この方法を使うと、非線形かつ滑らかな曲面を表現することができます。また、説明変数が多い場合でも多項式関数のような項数の爆発が起きずに、Excelにも実装しやすいため、実務的に使いやすいモデルです。
それでは、ChatGPTを使ってRBFモデルへのデータの学習を進めていきましょう。やりかたは、第1回目の記事の多項式関数の場合とほとんど同じです。
①学習データの用意
データは第1回目の記事と同じものです。P1、P2、R1を含むCSVファイルをChatGPTにアップロードします。P1、P2が説明変数(プロセスパラメータ)、R1が目的変数(加工の結果)です。16組のデータがあります。 ※このデータは、ある程度非線形性が強いデータを私が適当に作成したものです。
②ChatGPT(Python連携)を用いたRBFモデルの学習
ChatGPTに以下のプロンプトを送信します。
####
アップロードしたCSVファイルは2種類の説明変数(P1, P2)と、1種類の目的変数(R1)のデータです。まずこのCSVの中身をよく見て、どこにどのデータが入っているかを確認してください。
つぎに、このデータに対してRBFモデルを適用して近似をします。データの正規化を行ってください。RBFモデルにはガウス基底関数を使用し、基底の個数は2、4、9個の3種類としてください。
それぞれのモデルを関数のVBAコードで出力してください。後で、それをExcelのセルから呼び出して使います。逆正規化を考慮したVBAコードにしてください。桁落ちを避けるために係数の精度は15桁にしてください。P1の値はD3のセル、P2の値はD4のセルに対応させてください。
過学習の度合いを確認したいので、基底の個数別に3Dグラフを生成してください。グラフには、作成した数式によるワイヤーフレームと、元のデータのプロット(赤の×印)を表示してください。
####
たったこれだけです。データの正規化※を行わないと近似精度が低下しましたので、このプロンプトではそれを入れています。基底の個数は学習させるデータの複雑さと説明変数の個数によって調整が必要になりますので、数条件振りました。
※データの正規化とは、いったんデータの分布する範囲を0から1の間に配置しなおすことです。
③学習の結果
ChatGPTから出力された3Dグラフが下記です。基底の数がk=2とk=4では近似精度が低く、k=9では良く近似できていることが分かります。したがって、基底の数は9を採用することにします。
今回は、Excelのセルに直接貼る関数を作成できないこともないのですが、非常に長い式になり扱いが煩雑です。そこで、プロンプトで指示を出した通りVBAを使って関数を記述することにしています。
ChatGPTから出力されたExcel関数のVBAコードがこれです。
これを、Excelの画面から「表示」>「マクロ」と進んでいき、VBAコードの作成画面に貼り付ければ関数が使えるようになります。このときExcelファイルはマクロを有効にしておく必要があります。拡張子が.xlsmになっているかを確認しておいてください。
ここまでできたら、セルに「=RBF_Model(D3,D4)」と入力してみてください。この関数を呼び出して使うことができるようになっています。このExcelのシートではD3のセルにプロセスパラメータP1が,D4のセルにプロセスパラメータのP2の値を入力することになっていますので、それら2つのセルを指定します。一般的なExcel関数と全く同じ使い方です。
以上の操作で、データの学習と、学習したモデルのExcel関数への落とし込みが完了しました。実際にやっていることは、ChatGPTにCSVファイルをアップロードして、上記のプロンプトを送信して、出てきたVBAコードをExcelに貼り付けるだけです。
【ガウス基底RBFモデルの概要】
ここでは、今回採用したRBFモデルについてもう少し詳しく見ていきます。今回の2変数(P1,P2)の場合のRBFモデルの式はこのようになっています。
ここで、各変数の意味は、
R1:出力(目的変数)
P1 , P2 :入力(説明変数)
w i :i番目の基底の重み
c1,i , c2,i :i番目の基底の中心位置(中心位置のP₁, P₂の値です)
σ:広がり(すべての基底に共通)
です。この式は9つの基底を足し算することを示していますので、足し算する前のそれぞれの基底の形を確認してみましょう。それが、この図です。
1から9の数字は基底の番号、その右下の座標は基底の中心の位置(P1, P2)です。色は、赤系が山側、青系が谷側を示しています。例えば基底1番は、中心位置が(200, 10)で、中心付近が盛り上がる山のような形状であることが分かります。基底2番と9番は基底の中心位置が凹んでおり盆地のようです。各基底が少しずつ助け合って、全体をうまく近似できるようにしている様子が分かります。
ところで、RBFモデルでは、各基底関数の形(中心と広がり)を決めた後、出力との関係は線形の重み付け問題として定式化され、最小二乗法で一発で学習が完了します。つまり、各基底の中心と広がりは学習の初期段階で決めておく必要があります。今回はそれもChatGPTに特に指示を出さなかった結果、KMeansクラスタリングというアルゴリズムで中心位置が決定され、中心間距離の平均が広がりσの値となる方法が採用されました。
【多項式関数モデルおよびニューラルネットワークモデルとの比較】
多項式関数では次数が上がると、項数が爆発的に増えてしまい、たとえば説明変数7つの5次の多項式でモデル化した場合には項数が792にも達し、Excelでの関数の記述がやりにくくなってしまいます。一方で、RBFモデルは基底の数をある程度コントロールできるのが利点です。
また、RBFモデルでは、多項式関数と同様に最小二乗法により学習が行われます。そのため、ニューラルネットワークのような繰り返し計算を必要としません。したがって、学習は高速で、収束不良といった問題も生じにくくなっています。
さらに、RBFモデルは式の形が明示的で構造的に意味づけができる安心感があります。コードの量も比較的少なくExcelにも優しいのがRBFモデルであると言えます。
【おわりに】
今回は、ChatGPTを用いてRBFモデルにデータを学習させる方法を説明しました。次回は、このモデルを用いてExcelのソルバーを使ったプロセス最適化の方法を説明します。特に、制約条件(たとえば設備荷重上限)を加える方法、多目的最適化(たとえばコストも最小化)を設定する方法を説明していきます。(K)
0コメント