ニューラルネットワークはどう学習するか

2003年頃

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

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

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

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

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

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

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

FormulaBP(K)FormulaBP(K)FormulaBP(K)FormulaBP(K)
C4H10272.7C5H12309.2C6H14341.9C7H16371.6
C8H18398.8C9H20423.9C10H22447.3C11H24469.1
C12H26489.4C13H28508.6C14H30526.7C15H32543.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]で始めてください。