現代の人工知能では、複数個の神経細胞(ニューロン)を階層的に接続したニューラルネットワークが用いられる。ニューラルネットワークは、入力層、一つまたは複数個の中間層、および出力層から構成される。モデル化された各ニューロンは、ユニットとも呼ばれる。
入力層は、入力される学習データをそのまま出力するユニット群を備える。中間層の各ユニットは、複数の入力データの各々に重みwを掛けて入力データの全体について総和をとったものと、しきい値(バイアスbとも呼ばれる)との和を全体的な入力データzとし、この入力データzをある活性化関数a(z)に入力して得られる出力値y=a(z)を出力データとする。出力層の各ユニットは、中間層の各ユニットと同じ計算式の計算を行い、ネットワークが算出した結果を提示する。
入力データと、中間層、出力層による出力データの値は、変数として扱われるが、各ユニットに固有の重みwとバイアスbとは、パラメータとして扱われる。一つのユニットにn個の入力があるとすれば、重みw=(w1,w2,...wn)もn個必要になる。すべての重みwおよびバイアスbは互いに独立であると考えるので、ニューラルネットワーク全体のパラメータの数は膨大なものとなる。
このニューラルネットワークを用いた学習とは、入力層のユニット群へ一組の学習データを入力して中間層と出力層による上記の計算式による計算を行わせ、出力層に計算結果を得るというプロセスを多数組の学習データについて繰り返し、教師あり学習では、投入した学習データ全体について計算結果と正解との差分が最小となるようにパラメータ群を決定することである。
結果データaと正解tとの誤差はa-tとなるので、この誤差を最小にする最小2乗法によれば、2乗誤差Cは、(1/2)(a-t)^2で与えられる。出力層が2つのユニットで構成されるとし、各々の結果出力a1,a2に対応する正解をt1,t2とすると、Cは次の式で表される。
C=(1/2){(a1-t1)^2+(a2-t2)^2}
このCは、変数a1,a2の関数であり、コスト関数、損失関数、目的関数などと呼ばれる。コスト関数Cは、入力されるk番目の学習データのコスト関数C[k]の総和と考えられる。N組の学習データがあるとすると、Cは
C=C[1]+C[2]+...+C[k]+...+C[N]
となる。ここで、
C[k]=(1/2){(a1[k]-t1[k])^2+(a2[k]-t2[k])^2}
である。a[k],t[k]は、k番目の学習データに関するa,tである。
コスト関数Cが出力結果の活性化関数a1(z)とa2(z)を含むということは、出力層の重みとバイアスのすべてばかりでなく、中間層の重みとバイアスのすべてを含むことを意味する。従って、Cはネットワークに存在する重みとバイアスのすべてを含むから、C=f(w,b)のように表現できる多変数関数である。ここで、wはすべての重みを要素とするベクトル、bはすべてのバイアスを要素とするベクトルである。活性化関数a(z)が非線形関数であるため、コスト関数Cは非線形関数となる。
こうなると、学習のポイントは、関数C=f(w,b)を最小にするようなパラメータ群(w,b)を求めることに帰着する。
ニューラルネットワークの学習とは、そのコスト関数を最適化することであると分かった。その技法は、線形計画法に似ている。しかし、線形計画法の目的関数が線形関数であるのに対して、ニューラルネットワークのコスト関数は非線形関数である。一般に非線形関数の最適化には、以下に述べるような問題点が生じる。
参考文献1は、このようなコスト関数Cの最小値を探すための技法について分かりやすく書かれている。さらに、訓練用の学習データを64組備え、Excelを用いて具体的なニューラルネットワークのコスト関数が最小になるようなパラメータ群(w,b)を計算する手法を提示している。
参考文献1の例題は、簡単なニューラルネットワークの事例であり、コスト関数Cの値が0になるようにつくってある。これは、関数C=f(w,b)の最小値であることは言うまでもない。
しかし、現実の多くのニューラルネットワークでは、コスト関数値が最小値だけではなく、より値の大きい極小値をもつようなケースが現れるという問題がある。
多変数関数の最小値を探すための方法として勾配降下法という技法が知られている。これは、コスト関数の値が減る方向にパラメータ群(w,b)を少しずつ変えていき、コスト(誤差)が最低になるところに到達することを目指すものである。しかし、コスト関数の極小点に停留すると、ここから脱出することが不可能になる。
参考文献1,2は、コスト関数あるいは損失関数がパラメータ群の値に依存しており、極小点や最小点をもつことを説明しているが、抽象的過ぎて、具体的にどのような条件の下で望ましくない極小点が発生するのか明らかでない。
そこで、この点を明解にするために、できるだけ少数の学習データを用いて、少なくとも一つの極小点と最小点が生じるようなサンプルを構築できないものかと考える。
参考文献1の例題は、コスト関数Cの最小値しかもたないのであるから、Cは2次関数的である。しかも例題の簡素なネットワーク構成でコスト関数が最小値0に達しているのであるから、学習データの数は充分であろう。そうすると、この例題の中間層のユニットの数を増やすか、中間層の層数を増やすことによって、この例題のコスト関数を3次関数的にし、1つの極小点と最小点をもつようにできないものかと考える。最小値0は保存されるものと期待する。
この試みは宿題とし、検討を続ける。
参考文献
1.涌井良幸など著「ディープラーニングがわかる数学入門」(技術評論社)
2.甘利俊一著「脳・心・人工知能」(ブルーバックス)
入力層は、入力される学習データをそのまま出力するユニット群を備える。中間層の各ユニットは、複数の入力データの各々に重みwを掛けて入力データの全体について総和をとったものと、しきい値(バイアスbとも呼ばれる)との和を全体的な入力データzとし、この入力データzをある活性化関数a(z)に入力して得られる出力値y=a(z)を出力データとする。出力層の各ユニットは、中間層の各ユニットと同じ計算式の計算を行い、ネットワークが算出した結果を提示する。
入力データと、中間層、出力層による出力データの値は、変数として扱われるが、各ユニットに固有の重みwとバイアスbとは、パラメータとして扱われる。一つのユニットにn個の入力があるとすれば、重みw=(w1,w2,...wn)もn個必要になる。すべての重みwおよびバイアスbは互いに独立であると考えるので、ニューラルネットワーク全体のパラメータの数は膨大なものとなる。
このニューラルネットワークを用いた学習とは、入力層のユニット群へ一組の学習データを入力して中間層と出力層による上記の計算式による計算を行わせ、出力層に計算結果を得るというプロセスを多数組の学習データについて繰り返し、教師あり学習では、投入した学習データ全体について計算結果と正解との差分が最小となるようにパラメータ群を決定することである。
結果データaと正解tとの誤差はa-tとなるので、この誤差を最小にする最小2乗法によれば、2乗誤差Cは、(1/2)(a-t)^2で与えられる。出力層が2つのユニットで構成されるとし、各々の結果出力a1,a2に対応する正解をt1,t2とすると、Cは次の式で表される。
C=(1/2){(a1-t1)^2+(a2-t2)^2}
このCは、変数a1,a2の関数であり、コスト関数、損失関数、目的関数などと呼ばれる。コスト関数Cは、入力されるk番目の学習データのコスト関数C[k]の総和と考えられる。N組の学習データがあるとすると、Cは
C=C[1]+C[2]+...+C[k]+...+C[N]
となる。ここで、
C[k]=(1/2){(a1[k]-t1[k])^2+(a2[k]-t2[k])^2}
である。a[k],t[k]は、k番目の学習データに関するa,tである。
コスト関数Cが出力結果の活性化関数a1(z)とa2(z)を含むということは、出力層の重みとバイアスのすべてばかりでなく、中間層の重みとバイアスのすべてを含むことを意味する。従って、Cはネットワークに存在する重みとバイアスのすべてを含むから、C=f(w,b)のように表現できる多変数関数である。ここで、wはすべての重みを要素とするベクトル、bはすべてのバイアスを要素とするベクトルである。活性化関数a(z)が非線形関数であるため、コスト関数Cは非線形関数となる。
こうなると、学習のポイントは、関数C=f(w,b)を最小にするようなパラメータ群(w,b)を求めることに帰着する。
ニューラルネットワークの学習とは、そのコスト関数を最適化することであると分かった。その技法は、線形計画法に似ている。しかし、線形計画法の目的関数が線形関数であるのに対して、ニューラルネットワークのコスト関数は非線形関数である。一般に非線形関数の最適化には、以下に述べるような問題点が生じる。
参考文献1は、このようなコスト関数Cの最小値を探すための技法について分かりやすく書かれている。さらに、訓練用の学習データを64組備え、Excelを用いて具体的なニューラルネットワークのコスト関数が最小になるようなパラメータ群(w,b)を計算する手法を提示している。
参考文献1の例題は、簡単なニューラルネットワークの事例であり、コスト関数Cの値が0になるようにつくってある。これは、関数C=f(w,b)の最小値であることは言うまでもない。
しかし、現実の多くのニューラルネットワークでは、コスト関数値が最小値だけではなく、より値の大きい極小値をもつようなケースが現れるという問題がある。
多変数関数の最小値を探すための方法として勾配降下法という技法が知られている。これは、コスト関数の値が減る方向にパラメータ群(w,b)を少しずつ変えていき、コスト(誤差)が最低になるところに到達することを目指すものである。しかし、コスト関数の極小点に停留すると、ここから脱出することが不可能になる。
参考文献1,2は、コスト関数あるいは損失関数がパラメータ群の値に依存しており、極小点や最小点をもつことを説明しているが、抽象的過ぎて、具体的にどのような条件の下で望ましくない極小点が発生するのか明らかでない。
そこで、この点を明解にするために、できるだけ少数の学習データを用いて、少なくとも一つの極小点と最小点が生じるようなサンプルを構築できないものかと考える。
参考文献1の例題は、コスト関数Cの最小値しかもたないのであるから、Cは2次関数的である。しかも例題の簡素なネットワーク構成でコスト関数が最小値0に達しているのであるから、学習データの数は充分であろう。そうすると、この例題の中間層のユニットの数を増やすか、中間層の層数を増やすことによって、この例題のコスト関数を3次関数的にし、1つの極小点と最小点をもつようにできないものかと考える。最小値0は保存されるものと期待する。
この試みは宿題とし、検討を続ける。
参考文献
1.涌井良幸など著「ディープラーニングがわかる数学入門」(技術評論社)
2.甘利俊一著「脳・心・人工知能」(ブルーバックス)