🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1116閲覧

機械学習の適用可否について、アドバイスを下さい。

jeanbiego

総合スコア3966

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2019/12/05 09:02

編集2019/12/06 00:06

現状

部品の外観写真データと、電気検査の結果(テキストデータ)があります。
外観からわかる構造の差異と、電気特性に相関性の在ることが期待される部品なのですが、構造が複雑なのでどの部位が特に効いているのか目視だけでは判定しづらい状況です。

やりたいこと

画像を機械学習にかけ、教師データとして電気測定の結果を用いて、どの箇所が特に電気特性に効いているか傾向をつかみたい。
なお、画像と電気測定結果のデータ点数は、40セットくらいしかありません。(今後増えていく予定ではあります)
ここでいう電気特性は周波数領域の反射・伝送特性等のことで、周波数別に値を持っている2次元データの集合です。ただ、それだと分析が面倒かもしれないので単回帰分析などにより代表値を出すことを考えています。

知りたいこと

機械学習は素人なので、上記手法がそもそも現実的なのかどうか、できるとしたらどのようなものを勉強すれば良いかご教示ください。
(pythonくらいしか触ったことがないので、できればpythonライブラリで教えていただけると助かります)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/12/05 21:35

電気検査の結果(テキストデータ)、これは例えば「ある製品の抵抗値」のような1つの値なのか、「ある製品の部位A、B、C...それぞれの○○の値」のような複数あるものなのか、もっと膨大な数のものなのか、可能な範囲で書くことはできますか?
jeanbiego

2019/12/06 00:05

ここでいう電気特性は周波数領域の反射・伝送特性等のことで、周波数別に値を持っている2次元データの集合です。ただ、それだと分析が面倒かもしれないので単回帰分析などにより代表値を出すことを考えています。(質問文にも追記します)
退会済みユーザー

退会済みユーザー

2019/12/06 10:19

何かしらのパーツの「外観写真」と、そのパーツを(複数の?)周波数別に解析した「二次元データのテキスト(=0~1のfloatで正規化したら写真ですね)」があり、二次元データのテキストから外観不良を推定したい、ということで理解しました。
guest

回答2

0

ベストアンサー

前提

単回帰分析などにより代表値を出す

どのようなデータが入力データか十分に想像できませんが、インプットデータはある一定の傾向のまとまりのある散布図的なものかと思います。

少なくとも、声紋分析に出てくる積層のカラーの図のようなものでも、マイクの周波数特性のようなものでもない、と思って回答します。例えば、ここのp.11であったならば、と勝手に想像します。

私がやるなら

私がもし取り組むのであれば、以下のステップでできるか試します。

  1. 従来の機械学習で特徴を抽出する
  2. 特徴をクラスタリングする
  3. 画像とマッチングする

具体的には

1. 従来の機械学習で特徴を抽出する
恐らく、インプットの2次元の値を深層学習にそのまま突っ込むのであれば、次元数は縦×横になりますので、仮に100×100であれば入力データだけで10000次元に膨れ上がります。

そのまま上記のステップ1+2+3を一緒にやってしまうと、複雑すぎてうまく特徴を捉えれなさそうな感じがします。
そう考えると、最終的にはこれらの数値と画像とマッチングさせないといけませんので、何とかして扱いやすくしたい、ステップ1の段階で次元数を減らしたい(単純化)したいと思うはずです。

ここで必要になるライブラリは、計算はscipynumpy、グラフや散布図の可視化はmatplotlibが役に立つと思います。

もし、入力データを回帰問題で捉えられるのであれば、傾きと切片が出ますし、母集団があるものであれば重心や標準偏差がステップ2の入力データにできそうですね。

2. 特徴をクラスタリングする
クラスタリングはscikit learnでやることになると思います。もし、この方法をとらなくても、通常の計算から異常を検出できるのであればそれでも良いと思います。クラスタリングする、というよりも数値上の異常を探すイメージかもしれません。目的は、ステップ3で異常品と正常品を仕分けるためです。

3. 画像とマッチングする
恐らく、解析結果と画像をいきなりマッチングさせるのは困難です。
画像は上記の入力データ以上に次元が多い(と想定される)ためです。
たとえば512px四方カラー画像であれば、(512*512)^3=1.8e+16(次元)になってしまうので、これらから適切な関係を見つけるのは骨が折れます。

そのため、少しでもとっつきやすくするために、まずはステップ2で見つかった異常が、画像の異常と関係があるか目で見て探します。見つかった異常の画像に異常という目印をつけます。そうすれば、ちょっと強引かもしれませんが、数値上の異常と画像の異常と関係が見えますね。少なくとも数値的にも見た目的にも異常だ、というものを先に見つけて目印をつけるイメージです。

これがある程度進んでくると、正常品の画像と正常品のクラスタリング結果が出そろってくると思います。ここから入力値に対して正常品かどの異常品か学習できそうな状況になってきそうです。どうやってやるのかは課題になりますし、寄与率も得られないかもしれませんが、信頼度のような指標が代わりに得られるはずです。

使うライブラリはTensorflowchainerTorchあたりになると思います。

投稿2019/12/07 00:11

編集2019/12/07 00:23
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jeanbiego

2019/12/07 14:36

fourteenlengthさん 抽象的な質問に対し、とても具体的なアプローチを書いていただきありがとうございます。 用語等まだ知らないものが多く消化しきっておりませんが、そちらは時間がかかるものの独力でできそうですので、ひとまずベストアンサーとして閉じておきます。 さしあたり、いただいた手順を参考に一歩ずつ進めていこうと思います。
guest

0

もう少し厳密に問題を定義しないとなんとも言いがたいです。

近年の画像処理関連の技術はかなり高度になってはいるので、人の目で画像を見てなんとなくわかるレベルなら原理的には成功するかと思います。人間にできないならたぶん無理ですけど。

かといって汎用的な機械学習モデルでのほほんとやってもたぶん厳しいので、アドホックな想定を色々置いた方が性能が出るということは考えられることです。寸法を測って物理モデルでやるのが一番良い、とか。

投稿2019/12/05 10:29

hayataka2049

総合スコア30935

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jeanbiego

2019/12/06 00:38 編集

hayataka2049さん、ありがとうございます。 教師データ?となる電気特性について追記しました。(「やりたいこと」の後半) >人の目で画像を見てなんとなくわかるレベル ここは、恐らく満たしています。人の目で見てわかる違いがいくつかあります(部品の組み合わせ位置ずれ、隙間など) ただ、そこが効いてるかは不明なのですが。 >アドホックな想定を色々置いた方が性能が出るということは考えられることです。寸法を測って物理モデルでやるのが一番良い、とか。 すみません、ここが不勉強で飲み込めませんで、以下2点を教えていただけませんでしょうか。 1. アドホックな想定:見る箇所などを限定・指定するイメージでしょうか。 2. 物理モデル:電磁気学等にもとづいて、画像の部位から予測される教師データの変化をあらかじめ定式化して与えるようなことでしょうか。 よろしくお願いします。
Q71

2019/12/06 01:45

> ただ、そこが効いてるかは不明なのですが。 「そこが効いている」を出すことが目的でしょうか。
jeanbiego

2019/12/06 02:18

Q71さん その通りです。どの部位の大小高低が効いているか、関係ないのかを調べたいと思っています。
退会済みユーザー

退会済みユーザー

2019/12/06 23:33 編集

> 機械学習は素人なので、上記手法がそもそも現実的なのかどうか、できるとしたらどのようなものを勉強すれば良いか > どの部位の大小高低が効いているか、関係ないのかを調べたい つまり、 ・周波数特性や伝送特性等が「周波数vs強度」のような解析結果かつ、緻密な折れ線グラフとしてテキストデータで手元にある ・上記データと対になる製品の外観写真も用意できて、製品のどこが怪しいかそれなりに手動で候補は上げられる ・上記データと画像を見比べて、データ中に「怪しいな」という部分を見つけられるが、それと同じことをPythonでやりたい ・そこで、 1. これらをできそうなライブラリ、解析手法が何かあれば知りたい。 2. 可能であれば寄与率や信頼度のような、何らかの関係や重みを得られる手法を知りたい。 ということですね?
hayataka2049

2019/12/06 23:55

2点についてですが、だいたいそれでいいと思います。 ノギスで寸法を測って電磁気シミュレーションにぶち込めば良いなら、それはそれでソリューションになります。精度はともかく画像からの寸法測定もできるので(最新の機械学習とかでなくても)、ものすごく頑張ってプログラムを書けば組み合わせられるでしょう。 (どれくらい上手くいくのかは知らないけど)
hayataka2049

2019/12/07 00:00

「なんとなくこの辺が効いてるかな」レベルのことがやりたいなら、それはそれで深層学習に突っ込めばできるのかもしれません。千サンプルくらいあれば。
Q71

2019/12/07 01:30

現在の機械学習について、私のイメージはこうです。 原因Aと結果Bに、確かな因果関係がある。しかし、Aには揺れがあり、人間で判断しにくいこともある。また、人は疲れたり、同じものを処理し続けると違うものに気がつきにくい。「AだからB」という判断を機械にさせることで、長時間にわたって大量に安定した判別ができる。 今回の問題は、「原因Aと結果Bに因果関係があるかどうかを、機械学習で判別したい」のように思います。私の理解では、ちょっと違うように思います。
jeanbiego

2019/12/07 14:40

hayataka2049さん 追加回答、ありがとうございました。 構造が複雑なため、どの寸法を測るべきかから悩んでおりました。しかし、おっしゃるような画像からの寸法出しで簡易的にあたりをつけるというのは有用そうですので、そちらも試してみようと思います。
jeanbiego

2019/12/07 14:43

Q71さん おっしゃる通り、いずこに因果関係があるかを判別しようと考えていました。 機械学習の使い方について、すでに人間ができることを効率化するために用いるのだという考えがありませんでしたので、その辺から再考してみます。 ありがとうございました。
Q71

2019/12/08 12:01

TensorFlow を使うなら、バージョンに注意してください。1と2でかなり違います。Chainerも、1,2-3,4-で大きく異なるところがあります。ググって出てきた情報が、どのバージョンを対象としているか、よく確認してください。
jeanbiego

2019/12/09 00:07

Q71さん 情報どうもありがとうございます。 よく注意して読むことにします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問