pirika logo

ホームページ Pirikaで化学 ブログ 業務案内 お問い合わせ
Pirikaで化学トップ 情報化学+教育 HSP 化学全般
情報化学+教育トップ 情報化学 MAGICIAN MOOC プログラミング
MAGICIANとは、材料ゲノム(Materials Genome)、材料情報学(Materials Informatics)、情報化学(Chemo-Informatics)とネットワーク(Networks)を結びつけて(Associate)いかれる人材です。

情報化学+教育 > 情報化学 > 知識の獲得 > ニューラルネットワークはどう学習するか

2003年頃

物性推算の目的で使う場合には、私はほとんどの場合、3層型のニューラルネットワークを使います。
このニューラルネットワークの学習のメカニズムをn-アルカン化合物の沸点を例に説明します。
n-アルカン化合物は2つのCH3基といくつかのCH2基を持ちます。これをプロットすると、

狭い範囲では直線になりますが、炭素数が増えてくるとだんだん寝てきます。

直線で近似できる部分では、CH2がひとつ増えるに連れ、沸点は30.494℃増えると分かりやすいです。

これを、以下のC4からC15のn-アルカン化合物に適用してみましょう。

JAVAのアプレットはこちらから。

JavaScriptバージョンはこちらから

Formula BP(K) Formula BP(K) Formula BP(K) Formula BP(K)
C4H10 272.7 C5H12 309.2 C6H14 341.9 C7H16 371.6
C8H18 398.8 C9H20 423.9 C10H22 447.3 C11H24 469.1
C12H26 489.4 C13H28 508.6 C14H30 526.7 C15H32 543.8

このCH3の数とCH2の数を入力して、沸点を推算するニューラルネットワークを構築します。

画面はJAVA版のものですが、現在はJavaScript版です。少し表現が異なりますが、同じことです。

このニューラルネットワークは3層構造で、1層目は入力層、2層目は中間層、3層目は出力層と呼ばれています。

各層にはニューロン(神経細胞)と呼ばれる部分(図中の黒丸)があり、これは他のニューロンと結びついています。

生体系の神経システムではニューロン同士は神経軸索で結びつき、学習が進むとその軸索が太くなったり、細くなったりして学習結果を記憶します。

コンピュータで行うときには、Weight Matrixという荷重行列を使って、それを増減させて学習します。

学習をする前には この荷重行列には乱数が入っています。

まず、Stepボタンを押してみてください。
インプット・ニューロンのところに、CH3=2, CH2=3が現れます。

最初の荷重行列は乱数なのでめちゃくちゃな計算結果を返します。
この場合は実験値は309.2 ℃なので、計算結果が”低いよ”ということで、Lowボタンを押します。
(初期値が乱数なので大きな値を返すこともあります。そのときにはHighのボタンを押す。)

どちらのボタンを押したにせよ、押された値に対して、ニューラルネットワークは答えが少しだけよくなるように、結合荷重行列を変更します。

それが終わったら、またStepボタンを押します。

次は、CH2が11です。やはり計算値が小さいのでLowボタンを押します。

何回か手動でやってみてください。結合荷重行列が徐々に変化していくことがわかると思います。

それから、Autoボタンを押してみてください。

これを押すと500回自動的に学習を行います。
荷重行列を見ながら値が変わらなくなるまでAutoボタンを押してみてください。

最終的には下図のような結合荷重行列になりました。

そこまでできたら、次にはCheckボタンを押してみてください。
このボタンを押したときには学習は行いません。

ニューラルネットワークが学習し終わった計算結果を返してくれます。

そして、入力ニューロンの種類を増やしたり、中間層の数を最適化したりしながら、様々な物性を返してくれるニューラルネットワークを構築していきます。

沸点に関しては古いJAVAアプレットですがこのようになります。 HTML5を使ったバージョンはこちらから

この技術を使って熱物性を推算する式を構築したものが、Pirikaの熱物化学のページに載せてあります。

情報化学+教育 > 情報化学 > 知識の獲得 > ニューラルネットワークはどう学習するか


Copyright pirika.com since 1999-
Mail: yamahiroXpirika.com (Xを@に置き換えてください) メールの件名は[pirika]で始めてください。