製造業における機械学習のテーマ選定
過去の記事でもテーマ選定に関する内容については軽く触れているのですが、今回はより現実的に、基本的な機械学習の仕組みを理解した人の間での議論という観点でのテーマ選定について論じてみたいと思います。
https://data-scientist.hatenadiary.jp/entry/2018/08/08/231702
どんなテーマならイケるか?
人間が何かをやりたいと思えばそれ自体がAIのテーマになりうるので、勝算というとなかなか分類ができません。失敗しなければ成功なので、失敗のパターンを考えてみましょう。個人的には3パターンあると考えていて、「技術的要因」「データ収集が困難」「社内の政治的要因」があると思っています。
技術的要因
「技術的要因」の方は単純で、世の中にそもそも解決できるような技術が存在しないケースです。Googleで調べてもちっとも似たような事例が出てこなければ(かすりもしなければ)概ねこのパターンではないでしょうか。私の経験だと、図面をAIに書かせろと持ち込まれた事例がありますが、ここでは「機械学習の仕組みを理解している人の間での議論」なので今回は外しましょう。
データ収集が困難
製造業で異常検知の話題は多いですが、これが案外難しい。技術的に難しいというよりも、肝心の異常データがなかなか手に入らないという性質上、データそのものが存在しないことも少なくありません。未知の異常などは、正常状態との乖離を検出しなければならないため、どうしても精度は低くなりがちです。少しでも多くデータを得ようとすると時間がかかってしまうという点で、データ収集に時間がかかることが課題と言い換えることができます。
※未知は仕方ないと割り切り、既知の不良種別だけをラベリングする。製品の重要特性値を予測する問題に置き換える。等の工夫はできます。
データ収集に時間がかかるケースとしては下記のようなものがあります。
- 異常データが少ないため、出てくるまで長期的に待たなければならない。
- 冬は調子が良いけど夏は機嫌が悪い設備などがあったりして、実は季節性のあるデータだった。
- 改善が頻繁で、ラインが変更されると特性が微妙に変わり、再度データを収集するのに時間がかかる。
- 生産準備中で、次の試作が1ヶ月後
もう少し突っ込んで考えると、原理的に測定が困難なパラメータが予測精度に起因しているケースもありますね。マーケティング系で例えると、消費者の心理状態とかです。
製造業でのケースというとすぐには思いつきません。。。メーカーはすでに並々ならぬモノの測定能力を有しているはずなので、大抵の測りたいものはその気になれば測れてしまうような気がします。強度とかの必ず破壊が伴うようなデータでしょうか。目的が要因分析やモデル構築であれば、モデル構築用にサンプルを破壊検査したりしてデータ収集できそうですので、測定したいけど原理的に出来ないというのはなかなか思いつきません。
社内の政治的要因
「社内の政治的要因」は要するにリソース(お金)の問題です。センサを付ければデータを収集できるけれど、
- 測定に工数がかかる
- 測定器が高い
- タクトタイムが1sec→3secになる
- 工程変更に客先承認が必要
- 工程設計の担当箇所が複数部門間で複雑に絡み合っている
- そもそもそれに取り組むコストメリットが少ない
等々、出来なかないけど現実的に無理というパターンです。データが有ると思っていたのに構造化されたデータではなかった場合などは、構造化されたデータを取得するために、上記の問題が立ちふさがるケースもあります。
他には、社内の人材ではDeep Learningはできるけど強化学習はできないといったケースでしょうか。もっとも、この場合は世の中に技術は存在しているので外注するなり育成するなりできるはずなのでお金の問題に分類できます。
また、Deep Learning関連で言えば、画像をラベリングしたり、異常な領域を塗りつぶしたりするためにマンパワーが必要になってきます。これもDeep Learningのエンジニアが直接やる必要も無い作業なので、アルバイトなり外注なりで対応する場合はやっぱりリソースの問題になってきます。
例:ベタ塗り画像をリアルな風景画に変換。学習データ作成の苦労がしのばれます。
まとめると以下のようになります。
- 技術的要因
- 技術が存在しない
- データ収集が困難
- 異常検知系で、異常データが少ない
- 収集までに時間がかかる
- 原理的に測定が困難
- 社内の政治的要因
- ヒト/モノ/カネのどれかが足りない
相性の悪い生産条件を統計的に見つける(Python)
製品にもよりますが、相性の悪い生産条件というものもあったりします。いい例が思いつかないのですが、設備A1で生産したものを次の工程で設備B1に投入する場合は問題無いのに、設備B2に投入すると歩留まりが悪化するなどのケースでしょうか。
下記のプログラムは、こんな統計処理もあって良いんじゃないかと思ったので、思いつきで書いてみました。案外処理が難しかったので、備忘録的に残しておこうと思います。
少し結果が見にくいかもしれませんが、パラメータ同士の組み合わせが不良率にどう影響するかを集計しています。
import pandas as pd import itertools df = pd.DataFrame({ "説明変数1": ["A", "A", "A", "B", "B"], "説明変数2": ["C", "C", "D", "D", "C"], "説明変数3": ["E", "E", "F", "F", "E"], "生産数": [100, 200, 300, 100, 100], "不良数": [2, 1, 3, 1, 5], "不良率": [0.02, 0.005, 0.01, 0.01, 0.05] }) l = [] for grp in itertools.combinations(["説明変数1", "説明変数2", "説明変数3"], 2): tmp = df.groupby(grp).sum().loc[:, ['生産数', '不良数']] tmp.index = tmp.index.rename(['説明変数A', '説明変数B']) l.append(tmp) group = pd.concat(l).sort_index() group["不良率"] = group["不良数"] / group["生産数"] print(group) # 生産数 不良数 不良率 #説明変数A 説明変数B #A C 300 3 0.01 # D 300 3 0.01 # E 300 3 0.01 # F 300 3 0.01 #B C 100 5 0.05 # D 100 1 0.01 # E 100 5 0.05 # F 100 1 0.01 #C E 400 8 0.02 #D F 400 4 0.01
とにかく簡単に、製品不良の原因分析をしてみる(PythonのRandom Forestを使って)
不良の原因を突き止めるにあたっては、MT法やT法、新QC七つ道具やらなぜなぜ分析やらいろんなものがありますが、製造業に関して言えば機械学習的なアプローチで進めることはまだ少ないのではないでしょうか。今では機械学習を売りにしたソフトウェアも随分と沢山作られており、「不良の要因分析をしたい」というニーズがあることをどこからか嗅ぎつけて来ては、どこぞの企業が営業をかけてくるという事も少なくないと思います。
とはいえ、設計であれ製造であれ、予算を使ってそれらのソフトウェアを導入すること自体はやぶさかでないにせよ、困っているのは”今”な訳で、何ヶ月もかかるようなPoCをやりたい人はあまりいないと思います。また、担当者がソフトウェアにドンピシャな回答を求めることも稀で、手当たり次第に原因を突き止めようとするのではなく、あくまでアタリをつけるために使いたいという場合が多いように思います。担当者自身はそれなりにノウハウを持っているものなので、ソフトウェアに頼らずともなんだかんだで原因を探り当ててくることがほとんどです。
そんなわけで今回は、予測精度や見つけ出した原因の確からしさといったことは優先順位を落として、とにかく「簡単」に「それっぽい」結果が出てくる方法を紹介したいと思います。使用するのはPythonで、scikit-learnのランダムフォレストというアルゴリズムを用います。流行りではXGBoostやLightGBMといったより高い精度がでやすいライブラリもありますが、今回はインストールも最小になるようランダムフォレストを使っています。また、簡単をモットーに紹介するので、結果の吟味を十分に行わないと、誤った判断をしてしまう可能性がある点については予めご了承ください。
続きを読む生産計画をPython(PuLP)を使って最適化する
生産管理においては、MRP(資材所要量計画)という管理手法は古くからありますが、今でも製造業を中心に当たり前のように活用されています。MRPののちにERPとして製造から受注、出荷、財務、会計など企業内経営資源のほとんどを含むようになり、今では全体最適化の考え方が導入されている企業も多いでしょう。今回は企業内での全体最適というよりも、いち製造担当者が管理できるレベルの生産計画を最適化するための方法について書いてみたいと思います。
Excelでも最適化ソルバーというのもあるんですが、Excelは遅いうえに扱える変数や制約式の数が少ないので、PythonのPuLPというライブラリを使った方法について紹介します。
続きを読む製造業界のデータサイエンティストの実際
さてさて、第一回でどんなことを書こうかなと考えていたわけですが、今回は製造業界のデータサイエンティストという立ち位置で、Kaggleの課題でイメージするようなデータサイエンティストの仕事と製造業でのギャップみたいなものを論じてみようかと思います。
続きを読むブログはじめました
このブログでは、データサイエンティストから見た製造業でのデータ活用、というよりも、製造業から見たデータサイエンス的なデータ活用という視点で書いていこうかと思っています。統計分析や機械学習の手法自体は至るところに情報があふれているので、ここでは「メーカーで取り入れるにはどうしていけばいいいか」とか「こういうデータは機械学習よりも品質工学の方がいいんじゃないの?」などの課題や「お上がAI! AI!としか言わない」など政治的な話まで、製造業で現実的に活用していくためのあれこれを経験を交えながら紹介していきたいと考えています。
もちろん、製造業の方だけでなく、製造業向けのAIソリューションを展開したい方やデータサイエンティストを目指す方にも役に立つような内容になればいいなと思います。業界が違えば文化も違うわけで、メーカーの人間からすればAIベンチャーの人間は異国の人のように見えますし、逆もまたしかりでしょう。ゴリゴリのIT畑の人が「メーカーの人ってこんなこと考えてるんだなぁ」と相互理解を深められたら嬉しいかぎりです。
IT業界の方にとっては、品質工学やFMEA、ライン、寸法、QC、4M、などなど、あまり使わない単語が出てくるかもしれませんが、せめてこれくらいは知っててほしい。。。くらいの単語で収めたいと思っていますのでお付き合いいただければと思います。
それではこれから、よろしくお願いします。