皆さん、おはようございます。ご参加いただきありがとうございます。SUMCOアプリケーションエンジニアリングチームのクリス・デニスです。SUMCOはシリコンウェーハ製造会社です。半導体プロセスの原料となるシリコンウェーハを製造しています。本日は、少量生産やビッグデータに対応し、様々な手法を用いて管理図のシフトを見つけるための実用的なリミックスについてお話します。まずは概念を簡単に説明した後、ライブデモで管理図の作成方法と、スクリプトを設定してプロセスエンジニアにとって使いやすいようにカスタマイズする方法を解説します。
今日の製造プロセスは非常に複雑です。物事は急速に変化し、工場では毎日多くの変更が行われています。数百種類の製品が数十種類のツールで稼働していることも珍しくありません。従来のSPCアプローチでは、パラメータツールと部品の組み合わせごとに1つのチャートが生成されます。しかし、これらのチャートはあっという間に数千にまで膨れ上がります。変更頻度が高いと、製品稼働中にチャートに追加されるデータポイントがわずかしかなく、チャートはさらに複雑になります。
これは、当社の工場の工程の一つから抽出した管理図の例です。部品交換が頻繁に行われているのに、各図には数件しか実行されていないことがわかります。理想的な状態の管理図の前提は、長期間にわたる一貫した実行がなく、工程の状態が常に変化しているため、すぐに崩れてしまいます。そのため、管理図作成における前提は崩れ、図では効果を発揮しなくなる可能性があります。当社の工程を見ると、複雑さを増す複数のパラメータが存在します。入力は出力に影響を与え、互いに相関しています。これらを個別に図表化すると、全体像を見失う可能性があります。システムは微妙に、目に見えない形でドリフトする可能性があり、従来のSPCではそれを捉えることができません。
これを変更できたらどうなるでしょうか?生のデータをグラフ化する代わりに、予想外のものをグラフ化します。各データポイントの予測値を設定するモデルを構築し、残差、つまり予測値と現実値、予測値と現実値の差をグラフ化します。そこに驚きが潜んでいるのです。
従来のSPC、あるいはモデル管理図と従来のSPC図の利点を簡単に比較してみましょう。従来の図は、安定したプロセス、シンプルなプロセス、一度に1つの製品を扱う場合に最適です。モデル駆動型図は多変量に対応しており、相関関係も考慮します。通常の変動は除外し、予期せぬ変動はフラグ付けします。まさに理想的です。私たちのプロセスで扱うような、複雑なデータにも最適です。
様々なモデルを選択できます。例えば、PCAモデルなどです。主成分分析は、センサーやスペクトルデータなどの自然構造を比較したい場合に適しています。偏最小二乗モデルは、品質特性を予測するための応答データがある場合に適しており、回帰モデルは単純な既知の関係性に適しています。重要なのは、入力するデータに適合するモデルを選択し、そのモデルを検証することです。それでは、JMPで何を構築し、どのように実行するのかを見ていきましょう。
最初のステップは、プロットする値を標準化することをお勧めします。特に短期管理図では、シグマが変動し、物事が一致しないことがありますよね?データを正規化するのは良い考えです。また、私の経験では、多変量管理図でも、1つのパラメータがシグナルを支配し、他のパラメータを圧倒しないようにすることで、標準化が役立ちます。これにより、すべてが対等になります。次に、モデルを適合させます。今回は、JMP Proは必要ありませんが、標準的なJMPで実行できるPCAモデルについて説明し、その例を示します。これは、モデル駆動型多変量管理図プラットフォームで使用されます。このモデルを実行すると、各データポイントの残差(T²統計量)がプロットされます。これらの残差を取得して保存します。これらの残差を使用して、短期管理図を作成し、その変化を観察し、予期しないイベントを見つけることができます。もちろん、最後のステップでは、管理図に限界値とアラームを設定します。
このチャートがなぜ本当に役立つのか、あるいは本当に役立つと思うのか、いくつかお話ししましょう。まず、これらの縦の点線はそれぞれ製品の変化を表しています。すべての製品が1つのチャートに表示されているので、何が起こっているのか、どこで大きな変動があるのか、あるいは制御不能な事象が発生しているのかを確認できます。モデル駆動型多変量管理図の優れた点は、これらの点を詳細に分析し、単変量法でどのパラメータが外れているかを確認できることです。共通点を探すことができます。そして、単変量管理図をさらに深く掘り下げることができます。残差を監視することの威力は、これから示す例では 10 種類の異なる製品にわたって 20 個のパラメータがこの 1 つのチャートに積み重ねられていることだと思います。これを切り離して、20 を 10 回掛け合わせた個別のチャートまで到達することができます。ツールごとに、チャートのより簡略化されたビューが得られます。
では、なぜこのアプローチを使うのでしょうか?これは、短期間でデータが生成される多品種少量生産の製品ラインに適しているようです。モデル駆動型なので、ノイズが少なく、何が重要かを把握するのに役立ちます。スクリプトを使えば簡単に拡張できます。ある種類のツールセットから別の種類のツールセットやシナリオに、この手法を簡単にコピーできます。そして、プロセスエンジニア、つまりこのデータを確認するユーザーにとって、JMPの視覚的なツールと動的なデータリンクは重要です。チャートをドリルダウンする機能により、迅速かつ透明性が高く、問題のトラブルシューティングやデータの本質的な部分への迅速なアクセスが可能になります。
それでは、実際の例を順に見ていきましょう。この例では、チャートを作成するためのスクリプトを作成し、スクリプトの手順を確認した後、スクリプトの手順にいくつか修正を加えて、チャートの見た目と操作性を向上させます。プロセスエンジニアにとってより使いやすく、より迅速かつ容易に作業を進められるようになります。
では、JMP にアクセスしてライブデモを見てみましょう。
このプレゼンテーションとウェブサイトには、データの例、スクリプトの例、そしてスクリプトの開発手順が含まれています。まずはデータテーブルから始めましょう。データテーブルがあります。このデータはすべて正規化され、クリーンアップされているので、そのまま使用できます。ツールへの入力となるプロセスパラメータは19~20種類あります。このデータはすでに準備済みなので、準備手順については説明しません。これは全く別のデータラングリングとセットアップ手順です。これから説明するのは、この分析をどのように行うかということです。この分析を手動で開始して実行する場合の基本的な流れは、次のようになります。まず、モデル駆動型多変量管理図のステップから始め、残差を取得し、そこから短期管理図を作成していきます。
これをスクリプト化したいのですが、スクリプト作成を楽にするために私が使っているコツの一つは、ワークフロービルダーを使うことです。私はスクリプト作成の専門家ではありませんが、ワークフロービルダーを使うのが好きです。これをオンにして、ウィンドウをこちらに持ってきます。今すぐ記録するように設定し、今は見る必要がないので最小化しておきます。
基本的なスクリプトの作成方法についてお話しましょう。まず、3つのステップのアウトラインをコピーします。新しいスクリプトウィンドウを開き、「アウトライン」を設定します。まずモデルを作成し、次に残差を計算し、短期管理図を作成します。これを行います。サンプルデータ分析品質プロセスモデル駆動型多変量管理図に戻りましょう。プラットフォームは非常に使いやすいです。すべての入力データを取得し、プロセスパラメータに入力します。「By」パラメータに入力して「OK」をクリックします。
ここにチャートがあります。生成されたチャートです。これは先ほどお話ししたチャートです。それぞれのパラメータを確認するためのリンクが下部にあります。では次に進みましょう。次のステップは残差を取得することです。残差を取得するには、各チャートに移動して列の値を保存します。9つか10のパーツをポイントしてクリックするのを見るのは少し退屈なので、お詫びします。歌ったり踊ったりしたいのですが、歌いません。あまり上手ではないので、妻としか踊っていません。残りのいくつかを見てみましょう。これで、データテーブルにパーツ別のT²の新しい列が作成され、データテーブルの各行に残差値が入力されました。これで、各ポイントの残差をプロットできるようになりました。
次のステップでは、品質プロセスメニューに戻ります。「管理図ビルダーを開く」をクリックします。複数の製品があるので、変更を加えます。それらを同じ管理図に配置します。短期管理図に配置します。まずは部品ごとに開始します。それを取得して切り替えます。そして、個々のポイントに入力をプロットする代わりに、残差をプロットします。これをY軸にドラッグします。これで、短期管理図ができました。部品ごとの変化を確認できます。管理されているものと管理されていないものがあります。これらが、すべての異なる部品について示されています。これは、私たちが最初からやろうとしていたこととほぼ同じです。これを閉じて、戻ってワークフロービルダーを取得し、記録を停止します。ワークフロービルダーでは、この管理図を作成するためのすべての手順を記録しました。
ここで、これらの手順を実行し、スクリプトに組み込みます。モデル残差の短期ステップがあります。これらは、ワークフロービルダー内で実行した手順とは異なるステップです。これらを取得し、ここからスクリプトをコピーして、ここに追加するだけで済みます。作成したスクリプトを簡単に見てみましょう。モデル駆動型マルチパラメータ管理図があります。部品固有の情報が多数あります。今回は汎用的なスクリプトにしたいので、この情報は削除します。これにより、別の部品グループに転送できるようになります。より具体的な情報を減らし、後で転送しやすくします。これで、コールラインができました。
次のステップでは、このモデル駆動型多変量管理図も呼び出しますが、最後にこれをオブジェクトとして保存し、T² プロットから値を保存したことがわかります。
これが残差を取得する方法です。入力ミスをする可能性があるので少しズルをしますが、ここでは残差を取得するためのループを設定する行を記述します。これはT²の「値を保存する」コマンドと同じです。唯一の違いは、ループ処理して調整するオブジェクトがあることです。多変量チャートを作成するときに、このオブジェクト名をここに入力します。
最後のステップは、ここに戻って短期管理図を作成することです。これをコピーして、こちらに戻します。短期管理図セクションに追加します。ここで少し整理しておきます。これらのコマンド文は必ずセミコロンで終了させてください。
この行はここでは継続しないので、カンマを削除します。これが私の基本的なスクリプトです。ワークフロービルダーからすべての情報を取得し、スクリプトに組み込みました。これで準備完了です。スクリプトを実行できます。ここには多変量チャートと短期管理図があります。これがまさに私がやりたかったことです。もし私がユーザーとしてこれを見て、「ほら、すぐに気に入らないのは、チャート間を移動して情報を取得しなければならないことだ。このチャートはドリルダウンして、様々な状況を確認できるので本当に良い」と思ったとします。この機能をこのチャートに直接追加したいのです。JMPを使えば、とても簡単にできます。ここにあるこのチャートのスクリプトをクリップボードに保存するだけです。そして、それをホバーレベルとして貼り付け、Graphletに貼り付けます。
これで、設定は完了です。とても簡単です。これをスクリプトに追加したいのですが、ワークフロービルダーをオンにするのを忘れていました。初めてこれをやった時は、本当に申し訳なく思いました。作業中に「ああ、そうだ」と思いました。ワークフロービルダーは私の場合は何もキャプチャしてくれなかったのですが、簡単な解決策があります。このチャートのスクリプトを開いて、スクリプトを保存し、スクリプトウィンドウに保存しましょう。それを呼び出して、私のスクリプトと何が違うのか見てみましょう。短期管理図のこの部分にあります。違いは、コントロールパネルの表示後に、レポートに送信してGraphletを作成し、Graphletを設定するための情報がすべて揃っていることです。これらをすべて取得して、ここに貼り付けます。
もう一度、この部品情報をすべて取得しました。先ほどと同じように、これらの行を削除します。間隔が適切であることを確認してください。これで、Graphletを使用してチャートを作成するスクリプトが完成したはずです。ここに戻りましょう。これはもう繰り返したくないので閉じます。これは表示する必要がないので閉じます。スクリプトを確認しましょう。スクリプトを実行して、目的の結果が得られたか確認してみましょう。ここを見てみましょう。ボンッ。取得できました。素晴らしい。Graphletを配置すると…もちろん、同じものが返されました。これをご覧ください。これは問題ありませんが、個人的には、クリックしたときに見ている部品のグラフだけが表示され、これらすべてをスクロールして1か所に表示する必要がないようにしたいと思います。
これから行う方法についてですが、改めてご説明しなくて申し訳ありませんが、時間の都合上、クリックフィルターを追加します。クリックフィルターを追加するには、Graphlet内のpictureステートメントに進み、別のコマンドを追加して、クリックに基づいてパーツを定義します。そして、チャートを再度作成し、ローカルデータフィルターを追加して、そのアイテムのチャートのみを表示します。これで、スクリプトを実行して、ここでポイントを選択できるようになります。この時点で、これをクリックすると、クリックするだけで管理図が生成されます。元のチャートと比べてみてみましょう。これはパート22です。見てみましょう。このチャートとこのチャートは同じに見えません。何かが起こっているのかもしれません。
こちらには、かなり管理が行き届いていないチャートが2つあります。こちらには1つしかありません。ご覧いただくとわかるように、このチャートの主成分の数は5つです。こちらは8つです。フィルターを追加した際に、多変量チャート内の各部分の主成分を異なるレベルに整理していた部分が失われてしまいました。これらのチャートを見てみると、すべて8つになっていることがわかります。以前はどれも8つではありませんでした。これは修正可能です。繰り返しますが、時間的な都合上、ここにスクリプトを追加します。これは強引なアプローチで、もっと良い方法があると思います。元のスクリプトでは、残差をテーブルに保存した後、手動で残差を取得します。具体的には、独立主成分値を実行するだけです。
得られた固有値に基づいて、その成分の値を取得します。このルーチンは基本的に、85%以上の主成分の数を使って動作します。このデータを取得して表にまとめます。そして、その表を使ってフィルタリングを行います。クリックフィルターでは、ここにもいくつかコマンドを追加する必要があります。まず、これを取得します。説明していきます。これは主成分表から、pに等しい部分の値を選択します。これが関心のある値です。次に、多変量管理図を作成する際に、成分数を追加します。これは、これまでは成分ごとに削除していたものです。これは、成分数を簡単に調整できるようにしたかったからです。これにより、部品の数がより柔軟になり、調整も容易になりました。
これで何にでも移行できるようになりました。すべて正しくコピーして貼り付けられたか確認してみましょう。ここはうまくいかないことが予想されるところですが、うまくいったかどうか確認してみましょう。ねえ、わからないのでこれを 2 回繰り返します。画面にいくつかのものが飛び出して表示される様子を示しました。最初にお見せしたいのは、この部品とコンポーネントのテーブルがあることです。部品 22 は、5 つのコンポーネントの前に見たものです。これを数回検証しましたが、すべて問題ありません。このテーブルができてよかったです。各部品にクリック フィルターが適用されます。この値を取得して、正しいチャートを確実に取得します。これが私のチャートです。これで、この短期実行管理図が再び作成されました。垂直の破線が消えるたびに、部品が変更されています。
見てみると、管理外のものがたくさんあるのと、そうでないものがいくつかあるのがわかります。このチャートが何を示しているのか見てみましょう。チャートを開いて、一つ選んで別の画面に表示してみましょう。このチャートをドリルダウンできます。単変量管理図では管理外になるものがいくつかあるのがわかります。赤で示されています。これらのバーの1つをクリックして、そのチャートをドリルダウンし、個々のチャートを見て、「よし、これで終わりだ。これが何を意味するのかはさておき」と判断できます。このチャートは開いたままにしておきますが、このチャートには3つの項目があります。これは何でしょう?クリックしてこのチャートを開き、ここにある管理外の3つのポイントを選択します。
これで、ポイントアンドクリックする代わりに、メニューから寄与プロットを見ることができますが、すべてを一度に表示できます。これらのチャートを個別にクリックする必要はありません。特に複数のものを見るときに、各サンプルのチャートが積み重なって表示されるので、とても便利ですよね?何か共通点があれば、何が起こっているのかすぐにわかります。こちらには何かあります。こちらにはありませんが、真ん中の4つはすべて異なっています。これは興味深いです。調べてみるべきことです。こちらを見たとき、同じ4つの入力が同じ信号を持っていましたが、こちらでは異なっていました。おそらく、何らかの体系的な問題が発生しているのでしょう。さらに、もちろん、このチャートをドリルダウンして個別に見ることもできますが、これらはすべて異なっていたので興味深いです。
全員にOCはありませんでしたが、OCの方向はそれぞれ異なっています。2つは高く、1つは低くなっています。これは興味深いですね。このチャートから1つ目を開いて、すぐに掘り下げて共通点を探し、何が起こっているのかを調査する必要がある箇所を見つけることができるツールです。
それは良いですね。この点についていくつか考察を述べたいと思います。これらのグラフを見ると、様々な問題が見つかりました。バルブの開閉が正しく行われていないという問題が見つかりました。プロセス設定にも問題があり、必要以上にガスを流している可能性があります。つまり、不要なお金を無駄にしているということです。そして、問題、いや、問題と言うべきではないのですが、入力を不安定な状態にまで引き上げているという問題が見つかりました。これは、他の場所では測定できない製品の不安定性を引き起こしている可能性があります。原因は不明です。
これは、入力を確認する状況に即しており、入力のパフォーマンスを確認し、入力の異常を探すことで、コストを節約し、潜在的な問題を回避するのに役立ちます。
これがデモです。もう1枚、皆さんと共有してお話ししたいスライドがあります。参考資料として、いくつか参考にさせていただきました。まず、昨年のDiscoveryで拝見し、JMPオンライン版でも改めて確認した、Mike Anderson氏の短期管理図に関するプレゼンテーションです。非常に参考になりました。Don Wheeler氏の著書『Short Run SPC』もぜひ読んでみてください。非常に役立つ内容で、非常に分かりやすく、革新的な管理、チャート作成、賢明で公平な運用など、素晴らしい内容が満載です。これもまた貴重なリソースの宝庫であり、Jumpアプリケーションの多くの内容と連携しています。ぜひお勧めします。また、JMPコミュニティで多変量解析のプレゼンテーションも見つけました。これも非常に役立ちました。最後に、このアイデアを追求するきっかけを与えてくださり、スクリプト作成の課題にも協力してくださったRocky Mountain JMPチームのJed Campbell氏に心から感謝申し上げます。お時間をいただきありがとうございました。残りの一日もどうぞお元気で。