Pirika logo
JAVA,HTML5と化学のサイト

Pirika トップ・ページ

Pirikaで化学
 物性化学
 高分子化学
 化学工学
 分子軌道
 情報化学

 その他の化学
 アカデミア
 MOOC講義資料
 プログラミング

ハンセン溶解度パラメータ(HSP):
 HSP基礎
 HSP応用
 ポリマー
 バイオ・化粧品
 環境
 物性推算
 分析
 化粧品の処方設計
 その他
 自分でやってみよう

雑記帳

Ad Space for you

 

Ad Space for you

 

 

 

Last Update

19-Nov-2018

情報化学:ニューラルネットワーク法を用いて機械学習する際に良くであう問題、 過学習と予測性の欠如

非常勤講師:山本博志 講義補助資料 (2003年頃の記事)

 

例えば、下の図のようなX−Y関係のデータポイントがあったとする。化学系の研究者が最も一般的に用いる解析方法は、(重)回帰計算であろう。これは最小二乗法とも呼ばれる技術である。

重回帰計算を簡単に説明すれば、下の図に示すように、緑色の直線、Y=aX+bを仮定して、この直線からの誤差の2乗が最低になるaとbの組を見つける計算だ。計算自体は非常に簡単で、Excelなどの表計算ソフトにもその機能が搭載されている。

多くの場合、化学の現象を扱うのはこの重回帰計算で十分である。

しかし、計算によっては非線形性を導入しなくてはならない場合がある。実は、上の図の青い点は下に示すようにSinカーブの一部であった。

これを正しく扱いたい場合には、非線形回帰計算を行う必要がある。そこで、先ほどの重回帰計算と同様に、

f(y)=A1* / [1+exp(-(B1*X1+B2*1))+
  A2* / [1+exp(-(B3*X1+B4*1))+
  A3* / [1+exp(-(B5*X1+B6*1))

という曲線を仮定して、誤差が最小になるA1-A3, B1-B6の組を見つければ良い。曲線としてどんな曲線を仮定するは各人の自由である。

例えば、

A1= -2.14 B1=-1.84 B2=0.30
A2= -1.01 B3=0.04   B4=0.31
A3=2.11   B5=-1.87  B6=1.57

だとすると、上図に示すように良好にSinカーブを再現する。

これを、数学的に表すと、

* Algorithm
* 1. Since sin(-x) = -sin(x), we need only to consider positive x.
* 2. if x < 2^-27 (hx<0x3e400000 0), return x with inexact if x!=0.
* 3. sin(x) is approximated by a polynomial of degree 13 on
* [0,pi/4]
*
* sin(x) ~ x + S1*x^3 + ... + S6*x^13
* where
* |sin(x)
* - (1+S1*x^2 +S2*x^4 +S3*x^6 +S4*x^8 +S5*x^10 +S6*x^12 )| <= 2^-58
* | x |
*
* 4. sin(x+y) = sin(x) + sin'(x')*y
* ~ sin(x) + (1-x*x/2)*y
* For better accuracy, let
* r = x^3 *(S2+x^2 *(S3+x^2 *(S4+x^2 *(S5+x^2 *S6))))
* then
* sin(x) = x^3 + (S1*x^2 + (x *(r-y/2)+y))
*/

と級数展開になり、化学系の自分にはお手上げになる。

この、

f(y)=A1* / [1+exp(-(B1*X1+B2*1))+
  A2* / [1+exp(-(B3*X1+B4*1))+
  A3* / [1+exp(-(B5*X1+B6*1))

を模式的に書くと、生体の神経細胞(ニューロン)がつながったような図になる。

式中の変数、A1-A3, B1-B6は模式図中でニューロンを同士の結合の強さとして表す事ができる。

また、f(y)=A1* / [1+exp(-(B1*X1+B2*1))という関数は、シグモイド関数と呼ばれ、αの値によって、ある閾値θで急に値が変わる関数になる。これは、生物の刺激ー応答曲線に似ているため、ニューラルネットワーク法と呼ばれている。

前振りが長くなったが、過学習である。コンピュータは人間と違い、飽きることを知らないので、命令すれば一晩中でも、1年でも学習を続ける。

すると、本来欲しい点はピンクの点であるのに、最終的には学習した点をなめらかにつなぐ緑の線を答えとして提案する。学習に使ったデータでは相関係数R=1.000、”おおー、ものすごく良くモデルを再現できる式が構築できた”と喜んで論文に投稿する。でも、上のグラフを見れば明らかなように、学習した近傍以外は非常に悪い答えを返すモデルである。これなら、重回帰のほうがまだまし、っていうレベルである。

このような、過学習は、学習のデータポイントが少ない、NNの中間ニューロン数が多すぎるときに起こりやすい。そこで、ピンクの点も含めて学習させてしまうことを考える。

このようにデータ数が増えてくれば大きくハズレる曲線は取りようがなくなる。

中間層のニューロン数は

f(y)=A1* / [1+exp(-(B1*X1+B2*1))+
  A2* / [1+exp(-(B3*X1+B4*1))+
  A3* / [1+exp(-(B5*X1+B6*1))

という式で、何個シグモイド関数を足し算して、この現象を表現しよううとしているかを表している。当然ニューロン数を増やせば複雑な現象にも追随できるが、その分、過学習という、やっかいも背負いこむ。

こうした、中間層のニューロン数の最適化とデータポイントの数、これが考慮されずにニューラルネットワークを組んでも、無駄である。それを評価するのに赤池情報量基準(AIC)というものも知られているが、難しすぎて自分には理解出来できていない。それに、化学の現象はそれ以前に多くの、誤差、あやふやさを含んでいる。古い資料であるがこちらを参考にしていただきたい。

次に予測性の欠如の問題である。

先程のSinカーブの学習で、Sinの頂点までしか学習しなかったとする。

そうした場合は、学習した内側については、中間ニューロンの数が適当であれば、青い点が示すように良好に予測することができる。これは、”内挿問題に対する予測性”は高いという言い方をする。

しかし、θが90を超えた先がどこに行くのかはNNは判らない。したがって1点でもよいから90度以上のデータを入れる必要がある。これは実は先程の過学習よりも、よっぽどたちが悪い。例えば、化合物の官能基を定義して沸点を推算するNNを構築しようとする。ある官能基、例えば水酸基を持つ化合物の沸点のデータが水酸基が1,2,3個もつ化合物の沸点データがあり、NNに取り込んだとしよう、その場合は分子中に水酸基を4つもつものは、”外挿” 問題になり、予測性は高くないだろうと見当がつく。ところが、カルボン酸を1-2個もつ化合物、アミノ基を1-2個持つ化合物をNNに組み込んでも、分子中に、カルボン酸とアミノ基を両方もつアミノ酸をNNに組み込んでいなければ、これはやはり外挿になってしまう。こうした”組み合わせ”外挿はどれだけあるのかは、一般的に言えないし、非常にむずかしい問題である。また、アミノ酸のように、ひとつの炭素にカルボキシル基とアミノ基が付いている場合、遠く離れて付いている場合でも物性値は大きく異なる。

従って、NNで物性推算式を構築した場合には、どのような母集団からNNを構築したのかが非常に重要な問題になる。これに関しては、別の章で扱おうと思う。

Pirikaで構築した化合物の熱物性推算のNNはこれらのことを考慮に入れたNNを作り、公開しているので、世界中からのアクセスがあり、長い間にわたって高く評価されているのだろう。

 

情報化学のトップへ戻る