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

狭い範囲では直線になりますが、炭素数が増えてくるとだんだん寝てきます。
直線で近似できる部分では、CH2がひとつ増えるに連れ、沸点は30.494℃増えると分かりやすいです。
これを、以下のC4からC15のn-アルカン化合物に適用してみましょう。
JAVAのアプレットはこちらから。
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]で始めてください。