AI_ML_DL’s diary

人工知能、機械学習、ディープラーニングの日記

中性子散乱とX線散乱の機械学習による解析

中性子散乱とX線散乱の機械学習による解析

 

PDF解析をDiffPy-CMI&ASEでやりはじめたが、すでに限界が見えている。

これは、トライアンドエラーの積み上げ方式、すなわち、力業で攻める方式である。

すでに、パラダイムシフトが起きている。

古いパラダイムは潔く捨てよう。

 

ということで、次の総説に学び、プログラムを作って使ってみることにする。

 

Machine learning on neutron and x-ray scattering and spectroscopies
Zhantao Chen, Nina Andrejevic, Nathan C. Drucker, et al.                                            Chem. Phys. Rev. 2, 031301 (2021)

 

f:id:AI_ML_DL:20220220002807p:plain

小角散乱と吸収スペクトルはシミュレーションスペクトルデータベースがあるので、それを教師データにすれば良さそうと書かれている。

回折スペクトルは、そう簡単ではない。回折スペクトルをとる目的によって欲しいデータベースは全く異なるという理由で。

それでは始めてみようと思って小角散乱から取り掛かかってみたが、良く用いられる球状近似や楕円近似から、多角形、棒状、膜状へと対象範囲を広げていくことが、比較的容易に行えることが特徴のようだが、現状、ニーズは少ないので後回しにしよう。

次は吸収スペクトルだ。XANESやEXAFSは経験を要する解析である。これなら役に立ちそうだと思って取り掛かってみた。やはり重要なのは教師データである。これが充実しているのでお薦めだということで、シミュレーションスペクトルの計算方法、近似手法の検討、測定データとシミュレーションデータとの比較などを見ているうちに、提示されている例は広い範囲をカバーしているが、実際に使うとなると、もっと精密な計算に基づくシミュレーションスペクトル、様々な原子構造モデルに対するシミュレーションスペクトルが無いと結局は使い物にならないことがわかってきた。膨大な教師データからニューラルネットワークが学ぶのは、隠れた特徴量ではなさそうだ。これなら、与えられた条件を満たすスペクトルを検索しているのと大差ないように感じてしまった。イメージ図は不足データを補完することを期待させるものだが、測定スペクトルとの乖離が気になるし、そもそもデータベースはK殻の吸収が前提で、L殻は含まれていないようなので、途中下車することにした。

他に無いのかと探してみたら、PDFのことが書かれている箇所があったので読んでみたが、原理的なことを形式的に説明しているだけである。原子構造モデルからPDFを計算したシミュレーションスペクトルのデータベースは、公開されていないようである。自分で作成しよう。

 

以上で、やるべきことが明確になった。とにかく、計算資源を活用して、精度の高いシミュレーションスペクトルを集めることから始める必要があるということだ。

機械学習を用いて、短時間で、大量の、高精度なシミュレーションスペクトルを作ることができるプログラムをつくることも、選択肢の1つである。

 

<要検討>

損失関数の弱点は、1つ1つのデータの重要性の違いを、評価できていないことにあるような気がする。

マルチドメインなんて、重要性の違いという言葉に意味が無いような気がするので、個別にベストな解を目指すようにすることになるのだろうな。

1つ1つのデータの重要性の違いを評価する必要があれば、そうすればよい。データごとに最適化するだけの事。つまり、目的に適合しないデータは省く。ノイズとして扱うか信号として扱うかの判断を1か0かではなく定量的に評価する必要があるのだが、結局は原理に行きつくはずなので本質を把握し最適な関係式を探して適用することができるかどうかにかかっており、最適な関係式を見つけることができなければそのレベルのものになるということだな。

 

日々、レベルが下がっていくように感じる。その原因が、知れば知るほどわからないことが増える。何がわかっていないかを知る機会が増えていることがその理由であればよいのかもしれないが、単に思考力が低下し続けているのだということであれば、それは、克服する方法を探して対策を講じなければいけない。実際にはどちらも含まれているのだろうと思うので、後者の対策は意識的にやっていく必要があるように思う。

 

 

f:id:AI_ML_DL:20220220000930p:plain

style=183 iteration=500